]> git.proxmox.com Git - ceph.git/commitdiff
import 15.2.5
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 23 Sep 2020 08:01:11 +0000 (10:01 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 5 Oct 2020 09:00:38 +0000 (11:00 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
614 files changed:
ceph/.github/CODEOWNERS
ceph/CMakeLists.txt
ceph/PendingReleaseNotes
ceph/alpine/APKBUILD
ceph/ceph.spec
ceph/ceph.spec.in
ceph/changelog.upstream
ceph/doc/ceph-volume/drive-group.rst [new file with mode: 0644]
ceph/doc/ceph-volume/index.rst
ceph/doc/cephadm/adoption.rst
ceph/doc/cephadm/concepts.rst [new file with mode: 0644]
ceph/doc/cephadm/drivegroups.rst
ceph/doc/cephadm/index.rst
ceph/doc/cephadm/install.rst
ceph/doc/cephadm/operations.rst
ceph/doc/cephadm/troubleshooting.rst
ceph/doc/cephfs/fs-nfs-exports.rst [new file with mode: 0644]
ceph/doc/cephfs/fs-volumes.rst
ceph/doc/cephfs/index.rst
ceph/doc/cephfs/multimds.rst
ceph/doc/dev/cephadm.rst
ceph/doc/dev/developer_guide/running-tests-locally.rst
ceph/doc/dev/msgr2.rst
ceph/doc/man/8/ceph-bluestore-tool.rst
ceph/doc/man/8/cephadm.rst
ceph/doc/man/8/rbd.rst
ceph/doc/mgr/crash.rst
ceph/doc/mgr/index.rst
ceph/doc/mgr/orchestrator.rst
ceph/doc/mgr/osd_support.rst [deleted file]
ceph/doc/mgr/prometheus.rst
ceph/doc/rados/configuration/osd-config-ref.rst
ceph/doc/rados/operations/health-checks.rst
ceph/doc/radosgw/index.rst
ceph/doc/radosgw/opa.rst
ceph/doc/radosgw/rgw-cache.rst [new file with mode: 0644]
ceph/doc/rbd/iscsi-target-cli.rst
ceph/doc/rbd/rbd-persistent-cache.rst
ceph/examples/rgw-cache/nginx-default.conf [new file with mode: 0644]
ceph/examples/rgw-cache/nginx-lua-file.lua [new file with mode: 0644]
ceph/examples/rgw-cache/nginx-noprefetch.conf [new file with mode: 0644]
ceph/examples/rgw-cache/nginx-slicing.conf [new file with mode: 0644]
ceph/examples/rgw-cache/nginx.conf [new file with mode: 0644]
ceph/monitoring/grafana/dashboards/hosts-overview.json
ceph/monitoring/grafana/dashboards/osds-overview.json
ceph/monitoring/grafana/dashboards/rbd-overview.json
ceph/monitoring/prometheus/alerts/ceph_default_alerts.yml
ceph/qa/standalone/ceph-helpers.sh
ceph/qa/standalone/mon/mon-last-epoch-clean.sh
ceph/qa/standalone/osd/bad-inc-map.sh [new file with mode: 0755]
ceph/qa/standalone/osd/osd-backfill-stats.sh
ceph/qa/standalone/osd/osd-rep-recov-eio.sh
ceph/qa/standalone/scrub/osd-scrub-test.sh
ceph/qa/standalone/special/ceph_objectstore_tool.py
ceph/qa/suites/krbd/fsx/conf.yaml
ceph/qa/suites/multimds/basic/tasks/cephfs_test_exports.yaml
ceph/qa/suites/rados/cephadm/workunits/task/test_orch_cli.yaml [new file with mode: 0644]
ceph/qa/suites/rados/mgr/tasks/module_selftest.yaml
ceph/qa/suites/rados/singleton/all/random-eio.yaml
ceph/qa/suites/rados/thrash/crc-failures/bad_map_crc_failure.yaml [new file with mode: 0644]
ceph/qa/suites/rados/thrash/crc-failures/default.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/% [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/+ [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/openstack.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/start.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml [new file with mode: 0644]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/.qa [new symlink]
ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/ubuntu_18.04.yaml [new symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/.qa [deleted symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/% [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/.qa [deleted symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/+ [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/.qa [deleted symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/openstack.yaml [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/start.yaml [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/.qa [deleted symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa [deleted symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa [deleted symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml [deleted file]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/.qa [deleted symlink]
ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/ubuntu_18.04.yaml [deleted symlink]
ceph/qa/suites/upgrade/octopus-p2p/octopus-p2p-stress-split/6-final-workload/rbd-python.yaml
ceph/qa/tasks/ceph_manager.py
ceph/qa/tasks/cephadm.py
ceph/qa/tasks/cephadm_cases/__init__.py [new file with mode: 0644]
ceph/qa/tasks/cephadm_cases/test_cli.py [new file with mode: 0644]
ceph/qa/tasks/cephfs/cephfs_test_case.py
ceph/qa/tasks/cephfs/filesystem.py
ceph/qa/tasks/cephfs/mount.py
ceph/qa/tasks/cephfs/test_client_recovery.py
ceph/qa/tasks/cephfs/test_exports.py
ceph/qa/tasks/cephfs/test_journal_repair.py
ceph/qa/tasks/cephfs/test_nfs.py [new file with mode: 0644]
ceph/qa/tasks/cephfs/test_sessionmap.py
ceph/qa/tasks/cephfs/test_snapshots.py
ceph/qa/tasks/cephfs/test_strays.py
ceph/qa/tasks/cephfs/test_volumes.py
ceph/qa/tasks/mgr/dashboard/helper.py
ceph/qa/tasks/mgr/dashboard/test_auth.py
ceph/qa/tasks/mgr/dashboard/test_cephfs.py
ceph/qa/tasks/mgr/dashboard/test_cluster_configuration.py
ceph/qa/tasks/mgr/dashboard/test_crush_rule.py
ceph/qa/tasks/mgr/dashboard/test_erasure_code_profile.py
ceph/qa/tasks/mgr/dashboard/test_ganesha.py
ceph/qa/tasks/mgr/dashboard/test_health.py
ceph/qa/tasks/mgr/dashboard/test_host.py
ceph/qa/tasks/mgr/dashboard/test_logs.py
ceph/qa/tasks/mgr/dashboard/test_mgr_module.py
ceph/qa/tasks/mgr/dashboard/test_monitor.py
ceph/qa/tasks/mgr/dashboard/test_orchestrator.py
ceph/qa/tasks/mgr/dashboard/test_osd.py
ceph/qa/tasks/mgr/dashboard/test_perf_counters.py
ceph/qa/tasks/mgr/dashboard/test_pool.py
ceph/qa/tasks/mgr/dashboard/test_rbd.py
ceph/qa/tasks/mgr/dashboard/test_rbd_mirroring.py
ceph/qa/tasks/mgr/dashboard/test_requests.py
ceph/qa/tasks/mgr/dashboard/test_rgw.py
ceph/qa/tasks/mgr/dashboard/test_role.py
ceph/qa/tasks/mgr/dashboard/test_settings.py
ceph/qa/tasks/mgr/dashboard/test_summary.py
ceph/qa/tasks/mgr/dashboard/test_user.py
ceph/qa/tasks/mgr/test_orchestrator_cli.py
ceph/qa/tasks/ragweed.py
ceph/qa/tasks/vstart_runner.py
ceph/qa/workunits/rgw/test_rgw_orphan_list.sh
ceph/selinux/ceph.te
ceph/src/.git_version
ceph/src/ceph-volume/ceph_volume/api/lvm.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/activate.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/batch.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/prepare.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/strategies/bluestore.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/strategies/filestore.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/zap.py
ceph/src/ceph-volume/ceph_volume/devices/raw/common.py
ceph/src/ceph-volume/ceph_volume/devices/raw/list.py
ceph/src/ceph-volume/ceph_volume/devices/raw/prepare.py
ceph/src/ceph-volume/ceph_volume/devices/simple/scan.py
ceph/src/ceph-volume/ceph_volume/drive_group/__init__.py [new file with mode: 0644]
ceph/src/ceph-volume/ceph_volume/drive_group/main.py [new file with mode: 0644]
ceph/src/ceph-volume/ceph_volume/exceptions.py
ceph/src/ceph-volume/ceph_volume/inventory/main.py
ceph/src/ceph-volume/ceph_volume/main.py
ceph/src/ceph-volume/ceph_volume/tests/api/test_lvm.py
ceph/src/ceph-volume/ceph_volume/tests/conftest.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/test_bluestore.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/test_filestore.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_activate.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_batch.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_listing.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_prepare.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_zap.py
ceph/src/ceph-volume/ceph_volume/tests/devices/raw/__init__.py [new file with mode: 0644]
ceph/src/ceph-volume/ceph_volume/tests/devices/raw/test_prepare.py [new file with mode: 0644]
ceph/src/ceph-volume/ceph_volume/tests/functional/batch/tox.ini
ceph/src/ceph-volume/ceph_volume/tests/functional/group_vars/bluestore_lvm
ceph/src/ceph-volume/ceph_volume/tests/functional/group_vars/bluestore_lvm_dmcrypt
ceph/src/ceph-volume/ceph_volume/tests/functional/group_vars/filestore_lvm
ceph/src/ceph-volume/ceph_volume/tests/functional/group_vars/filestore_lvm_dmcrypt
ceph/src/ceph-volume/ceph_volume/tests/functional/lvm/playbooks/test_bluestore.yml
ceph/src/ceph-volume/ceph_volume/tests/functional/lvm/playbooks/test_filestore.yml
ceph/src/ceph-volume/ceph_volume/tests/functional/lvm/tox.ini
ceph/src/ceph-volume/ceph_volume/tests/util/test_device.py
ceph/src/ceph-volume/ceph_volume/util/__init__.py
ceph/src/ceph-volume/ceph_volume/util/device.py
ceph/src/ceph-volume/setup.py
ceph/src/ceph-volume/shell_tox.ini
ceph/src/ceph-volume/tox.ini
ceph/src/ceph-volume/tox_install_command.sh [new file with mode: 0755]
ceph/src/ceph.in
ceph/src/ceph_osd.cc
ceph/src/cephadm/cephadm
ceph/src/cephadm/mypy.ini [deleted file]
ceph/src/cephadm/requirements.txt [new file with mode: 0644]
ceph/src/cephadm/tests/test_cephadm.py
ceph/src/cephadm/tox.ini
ceph/src/client/Client.cc [changed mode: 0644->0755]
ceph/src/client/Client.h
ceph/src/client/Fh.cc
ceph/src/client/Fh.h
ceph/src/client/Inode.h
ceph/src/client/MetaSession.h
ceph/src/cls/rgw/cls_rgw.cc
ceph/src/cls/rgw/cls_rgw_client.cc
ceph/src/cls/rgw/cls_rgw_client.h
ceph/src/cls/rgw/cls_rgw_ops.h
ceph/src/cls/rgw/cls_rgw_types.cc
ceph/src/cls/rgw/cls_rgw_types.h
ceph/src/cls/rgw_gc/cls_rgw_gc.cc
ceph/src/cls/user/cls_user.cc
ceph/src/cls/user/cls_user_ops.h
ceph/src/common/Preforker.h
ceph/src/common/legacy_config_opts.h
ceph/src/common/options.cc
ceph/src/crimson/CMakeLists.txt
ceph/src/crimson/net/ProtocolV2.cc
ceph/src/crimson/net/ProtocolV2.h
ceph/src/crush/CrushWrapper.h
ceph/src/include/msgr.h
ceph/src/include/rados/librados.h
ceph/src/include/rbd/librbd.h
ceph/src/include/rbd/librbd.hpp
ceph/src/librbd/CMakeLists.txt
ceph/src/librbd/ConfigWatcher.cc [new file with mode: 0644]
ceph/src/librbd/ConfigWatcher.h [new file with mode: 0644]
ceph/src/librbd/ImageCtx.cc
ceph/src/librbd/ImageCtx.h
ceph/src/librbd/ImageWatcher.cc
ceph/src/librbd/ImageWatcher.h
ceph/src/librbd/ObjectMap.cc
ceph/src/librbd/ObjectMap.h
ceph/src/librbd/api/Config.cc
ceph/src/librbd/api/PoolMetadata.cc
ceph/src/librbd/image/CloseRequest.cc
ceph/src/librbd/image/OpenRequest.cc
ceph/src/librbd/io/AioCompletion.cc
ceph/src/librbd/io/AioCompletion.h
ceph/src/librbd/io/FlushTracker.cc [new file with mode: 0644]
ceph/src/librbd/io/FlushTracker.h [new file with mode: 0644]
ceph/src/librbd/io/ImageRequestWQ.cc
ceph/src/librbd/io/ImageRequestWQ.h
ceph/src/librbd/io/SimpleSchedulerObjectDispatch.cc
ceph/src/librbd/io/SimpleSchedulerObjectDispatch.h
ceph/src/librbd/librbd.cc
ceph/src/log/Entry.h
ceph/src/log/Log.cc
ceph/src/log/Log.h
ceph/src/mds/CDir.cc
ceph/src/mds/CInode.cc
ceph/src/mds/CInode.h
ceph/src/mds/MDBalancer.cc
ceph/src/mds/MDBalancer.h
ceph/src/mds/MDCache.cc
ceph/src/mds/MDCache.h
ceph/src/mds/MDSDaemon.cc
ceph/src/mds/MDSRank.cc
ceph/src/mds/MDSRank.h
ceph/src/mds/Migrator.cc
ceph/src/mds/Server.cc
ceph/src/mds/events/EMetaBlob.h
ceph/src/mds/journal.cc
ceph/src/mds/mdstypes.h
ceph/src/mgr/ActivePyModules.cc
ceph/src/mgr/ActivePyModules.h
ceph/src/mgr/DaemonServer.cc
ceph/src/mgr/PyModuleRegistry.cc
ceph/src/mgr/StandbyPyModules.cc
ceph/src/mon/MDSMonitor.cc
ceph/src/mon/MgrMonitor.cc
ceph/src/mon/MonClient.cc
ceph/src/mon/OSDMonitor.cc
ceph/src/mon/OSDMonitor.h
ceph/src/mon/PGMap.cc
ceph/src/msg/CMakeLists.txt
ceph/src/msg/Messenger.h
ceph/src/msg/async/AsyncMessenger.cc
ceph/src/msg/async/AsyncMessenger.h
ceph/src/msg/async/ProtocolV2.cc
ceph/src/msg/async/ProtocolV2.h
ceph/src/msg/async/crypto_onwire.cc
ceph/src/msg/async/crypto_onwire.h
ceph/src/msg/async/frames_v2.cc [new file with mode: 0644]
ceph/src/msg/async/frames_v2.h
ceph/src/os/bluestore/BlockDevice.cc
ceph/src/os/bluestore/BlueFS.cc
ceph/src/os/bluestore/BlueFS.h
ceph/src/os/bluestore/BlueRocksEnv.cc
ceph/src/os/bluestore/BlueStore.cc
ceph/src/os/bluestore/BlueStore.h
ceph/src/os/bluestore/bluestore_tool.cc
ceph/src/osd/OSD.cc
ceph/src/osd/OSDCap.cc
ceph/src/osd/PG.cc
ceph/src/osd/PG.h
ceph/src/osd/PeeringState.cc
ceph/src/osd/PrimaryLogPG.cc
ceph/src/pybind/ceph_volume_client.py
ceph/src/pybind/mgr/balancer/module.py
ceph/src/pybind/mgr/cephadm/HACKING.rst
ceph/src/pybind/mgr/cephadm/Vagrantfile
ceph/src/pybind/mgr/cephadm/inventory.py
ceph/src/pybind/mgr/cephadm/migrations.py [new file with mode: 0644]
ceph/src/pybind/mgr/cephadm/module.py
ceph/src/pybind/mgr/cephadm/remotes.py
ceph/src/pybind/mgr/cephadm/schedule.py
ceph/src/pybind/mgr/cephadm/services/cephadmservice.py
ceph/src/pybind/mgr/cephadm/services/iscsi.py
ceph/src/pybind/mgr/cephadm/services/monitoring.py
ceph/src/pybind/mgr/cephadm/services/nfs.py
ceph/src/pybind/mgr/cephadm/services/osd.py
ceph/src/pybind/mgr/cephadm/templates/services/alertmanager/alertmanager.yml.j2
ceph/src/pybind/mgr/cephadm/templates/services/nfs/ganesha.conf.j2
ceph/src/pybind/mgr/cephadm/tests/fixtures.py
ceph/src/pybind/mgr/cephadm/tests/test_cephadm.py
ceph/src/pybind/mgr/cephadm/tests/test_migration.py [new file with mode: 0644]
ceph/src/pybind/mgr/cephadm/tests/test_osd_removal.py [new file with mode: 0644]
ceph/src/pybind/mgr/cephadm/tests/test_scheduling.py
ceph/src/pybind/mgr/cephadm/tests/test_services.py
ceph/src/pybind/mgr/cephadm/tests/test_spec.py
ceph/src/pybind/mgr/cephadm/tests/test_upgrade.py [new file with mode: 0644]
ceph/src/pybind/mgr/cephadm/tests/test_utils.py [new file with mode: 0644]
ceph/src/pybind/mgr/cephadm/upgrade.py
ceph/src/pybind/mgr/cephadm/utils.py
ceph/src/pybind/mgr/cephadm/vagrant.config.example.json [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/HACKING.rst
ceph/src/pybind/mgr/dashboard/__init__.py
ceph/src/pybind/mgr/dashboard/controllers/cephfs.py
ceph/src/pybind/mgr/dashboard/controllers/crush_rule.py
ceph/src/pybind/mgr/dashboard/controllers/docs.py
ceph/src/pybind/mgr/dashboard/controllers/erasure_code_profile.py
ceph/src/pybind/mgr/dashboard/controllers/host.py
ceph/src/pybind/mgr/dashboard/controllers/iscsi.py
ceph/src/pybind/mgr/dashboard/controllers/mgr_modules.py
ceph/src/pybind/mgr/dashboard/controllers/nfsganesha.py
ceph/src/pybind/mgr/dashboard/controllers/orchestrator.py
ceph/src/pybind/mgr/dashboard/controllers/osd.py
ceph/src/pybind/mgr/dashboard/controllers/pool.py
ceph/src/pybind/mgr/dashboard/controllers/rgw.py
ceph/src/pybind/mgr/dashboard/controllers/settings.py
ceph/src/pybind/mgr/dashboard/controllers/summary.py
ceph/src/pybind/mgr/dashboard/frontend/cypress/integration/rgw/users.po.ts
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/1.4a38b529302ffa3f0c24.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/2.5b0a7ba1cfec198ba8ed.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/5.d6b08e1c042ba6fccdd6.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.1818f80c2e905e85a90f.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.c0ad55977c0a220b3203.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.8c5c2bbb556260a5cc3e.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.904941689cb18cba0036.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.94051a156c6d11b38ada.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.988fe96f3a1b2f8c64cd.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/9.d895914fbc785284c5be.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/common.855fba17cfb445002363.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/index.html
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.a10546ecbf9c49d65e18.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.cb10cd7f4a550e7a33c5.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.513b02b42d061373f212.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.e36c0f03dbcdd3187a99.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.0907482258dfadeab004.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.992511a1840a2561365a.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.4f0058c288677d311127.css [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.58a2c96c3b87bd02e7a7.css [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/package-lock.json
ceph/src/pybind/mgr/dashboard/frontend/package.json
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/bootstrap-create-modal/bootstrap-create-modal.component.html [changed mode: 0644->0755]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/bootstrap-create-modal/bootstrap-create-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/bootstrap-import-modal/bootstrap-import-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/daemon-list/daemon-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/image-list/image-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/overview/overview.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/overview/overview.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-list/pool-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-details/rbd-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-model.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/inventory/inventory-devices/inventory-devices.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/inventory/inventory.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-details/osd-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-details/osd-details.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-form/osd-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list/osd-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list/osd-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/monitoring-list/monitoring-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/monitoring-list/monitoring-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-details/service-details.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/services.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/telemetry/telemetry.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/telemetry/telemetry.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/telemetry/telemetry.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/info-card/info-card-popover.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-501/nfs-501.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-501/nfs-501.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-list/nfs-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/crush-rule-form-modal/crush-rule-form-modal.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form-modal.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-stat.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-501/rgw-501.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-501/rgw-501.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/shared/device-list/device-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/login-password-form/login-password-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/role-form/role-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-form/user-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-form/user-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-list/user-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-list/user-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-password-form/user-password-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/about/about.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/dashboard-help/dashboard-help.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/dashboard-help/dashboard-help.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/navigation/notifications/notifications.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/host.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/host.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/osd.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/osd.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd-mirroring.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd-mirroring.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/settings.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/classes/crush.node.selection.class.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/classes/crush.node.selection.class.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/components.module.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.html [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.scss [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.spec.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/form-modal/form-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/notifications-sidebar/notifications-sidebar.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/orchestrator-doc-panel/orchestrator-doc-panel.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/orchestrator-doc-panel/orchestrator-doc-panel.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/pwd-expiration-notification/pwd-expiration-notification.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/select/select.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.html [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.scss [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.spec.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/usage-bar/usage-bar.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/usage-bar/usage-bar.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table-actions/table-actions.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/directives/copy2clipboard-button.directive.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-form-modal-field-config.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-table-action.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/crush-rule.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/finished-task.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/mirroring-summary.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/pool-form-info.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/summary.model.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/auth-guard.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/auth-guard.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/doc.service.spec.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/doc.service.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-list.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-manager.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-manager.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/telemetry-notification.service.spec.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/telemetry-notification.service.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/styles/defaults.scss
ceph/src/pybind/mgr/dashboard/frontend/src/testing/unit-test-helper.ts
ceph/src/pybind/mgr/dashboard/frontend/src/unit-test-configuration.ts.sample [deleted file]
ceph/src/pybind/mgr/dashboard/module.py
ceph/src/pybind/mgr/dashboard/run-backend-api-tests.sh
ceph/src/pybind/mgr/dashboard/run-frontend-unittests.sh
ceph/src/pybind/mgr/dashboard/services/ceph_service.py
ceph/src/pybind/mgr/dashboard/services/orchestrator.py
ceph/src/pybind/mgr/dashboard/services/rbd.py
ceph/src/pybind/mgr/dashboard/tests/test_ceph_service.py
ceph/src/pybind/mgr/dashboard/tests/test_docs.py
ceph/src/pybind/mgr/dashboard/tests/test_host.py
ceph/src/pybind/mgr/dashboard/tests/test_iscsi.py
ceph/src/pybind/mgr/diskprediction_local/module.py
ceph/src/pybind/mgr/k8sevents/module.py
ceph/src/pybind/mgr/mgr_module.py
ceph/src/pybind/mgr/mgr_util.py
ceph/src/pybind/mgr/orchestrator/__init__.py
ceph/src/pybind/mgr/orchestrator/_interface.py
ceph/src/pybind/mgr/orchestrator/module.py
ceph/src/pybind/mgr/orchestrator/tests/__init__.py [new file with mode: 0644]
ceph/src/pybind/mgr/orchestrator/tests/test_orchestrator.py [new file with mode: 0644]
ceph/src/pybind/mgr/osd_support/module.py
ceph/src/pybind/mgr/pg_autoscaler/module.py
ceph/src/pybind/mgr/progress/module.py
ceph/src/pybind/mgr/prometheus/module.py
ceph/src/pybind/mgr/rook/module.py
ceph/src/pybind/mgr/selftest/module.py
ceph/src/pybind/mgr/status/module.py
ceph/src/pybind/mgr/test_orchestrator/dummy_data.json
ceph/src/pybind/mgr/test_orchestrator/module.py
ceph/src/pybind/mgr/tests/__init__.py
ceph/src/pybind/mgr/tests/test_orchestrator.py [deleted file]
ceph/src/pybind/mgr/tox.ini
ceph/src/pybind/mgr/volumes/fs/nfs.py [new file with mode: 0644]
ceph/src/pybind/mgr/volumes/fs/operations/group.py
ceph/src/pybind/mgr/volumes/fs/operations/pin_util.py [new file with mode: 0644]
ceph/src/pybind/mgr/volumes/fs/operations/template.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_base.py
ceph/src/pybind/mgr/volumes/fs/operations/versions/subvolume_v1.py
ceph/src/pybind/mgr/volumes/fs/operations/volume.py
ceph/src/pybind/mgr/volumes/fs/volume.py
ceph/src/pybind/mgr/volumes/module.py
ceph/src/pybind/rbd/rbd.pyx
ceph/src/python-common/ceph/deployment/cephadm_orchestrator.py [deleted file]
ceph/src/python-common/ceph/deployment/drive_group.py
ceph/src/python-common/ceph/deployment/drive_selection/selector.py
ceph/src/python-common/ceph/deployment/hostspec.py [new file with mode: 0644]
ceph/src/python-common/ceph/deployment/service_spec.py
ceph/src/python-common/ceph/deployment/translate.py
ceph/src/python-common/ceph/tests/test_disk_selector.py
ceph/src/python-common/ceph/tests/test_drive_group.py
ceph/src/python-common/ceph/tests/test_service_spec.py
ceph/src/python-common/ceph/tests/utils.py
ceph/src/python-common/setup.py
ceph/src/rgw/librgw.cc
ceph/src/rgw/rgw-orphan-list
ceph/src/rgw/rgw_admin.cc
ceph/src/rgw/rgw_asio_frontend.cc
ceph/src/rgw/rgw_auth.cc
ceph/src/rgw/rgw_auth.h
ceph/src/rgw/rgw_auth_filters.h
ceph/src/rgw/rgw_bucket.cc
ceph/src/rgw/rgw_cache.cc
ceph/src/rgw/rgw_common.cc
ceph/src/rgw/rgw_cr_tools.cc
ceph/src/rgw/rgw_http_client.cc
ceph/src/rgw/rgw_iam_policy.cc
ceph/src/rgw/rgw_lc.cc
ceph/src/rgw/rgw_lc.h
ceph/src/rgw/rgw_main.cc
ceph/src/rgw/rgw_op.cc
ceph/src/rgw/rgw_op.h
ceph/src/rgw/rgw_opa.cc
ceph/src/rgw/rgw_orphan.cc
ceph/src/rgw/rgw_perf_counters.cc
ceph/src/rgw/rgw_perf_counters.h
ceph/src/rgw/rgw_putobj_processor.cc
ceph/src/rgw/rgw_rados.cc
ceph/src/rgw/rgw_rados.h
ceph/src/rgw/rgw_rest_role.cc
ceph/src/rgw/rgw_rest_s3.cc
ceph/src/rgw/rgw_rest_s3.h
ceph/src/rgw/rgw_rest_user.cc
ceph/src/rgw/rgw_sal.h
ceph/src/rgw/rgw_sync.cc
ceph/src/rgw/rgw_tools.cc
ceph/src/rgw/rgw_tools.h
ceph/src/rgw/rgw_user.cc
ceph/src/rgw/services/svc_rados.cc
ceph/src/rgw/services/svc_rados.h
ceph/src/rgw/services/svc_sys_obj_cache.cc
ceph/src/rgw/services/svc_user_rados.cc
ceph/src/stop.sh
ceph/src/test/common/test_lockdep.cc
ceph/src/test/libcephfs/test.cc
ceph/src/test/librados_test_stub/TestRadosClient.cc
ceph/src/test/librbd/CMakeLists.txt
ceph/src/test/librbd/fsx.cc
ceph/src/test/librbd/io/test_mock_SimpleSchedulerObjectDispatch.cc
ceph/src/test/librbd/mock/MockImageCtx.h
ceph/src/test/librbd/mock/MockImageState.h
ceph/src/test/librbd/test_librbd.cc
ceph/src/test/librbd/test_mock_ConfigWatcher.cc [new file with mode: 0644]
ceph/src/test/msgr/CMakeLists.txt
ceph/src/test/msgr/test_frames_v2.cc [new file with mode: 0644]
ceph/src/test/msgr/test_msgr.cc
ceph/src/test/objectstore/store_test.cc
ceph/src/test/objectstore/test_bluefs.cc
ceph/src/test/pybind/test_rbd.py
ceph/src/test/rbd_mirror/image_replayer/snapshot/test_mock_Replayer.cc
ceph/src/test/rgw/test_rgw_iam_policy.cc
ceph/src/tools/ceph_objectstore_tool.cc
ceph/src/tools/immutable_object_cache/CacheController.cc
ceph/src/tools/immutable_object_cache/CacheController.h
ceph/src/tools/immutable_object_cache/CacheServer.cc
ceph/src/tools/immutable_object_cache/ObjectCacheStore.cc
ceph/src/tools/immutable_object_cache/main.cc
ceph/src/tools/rados/PoolDump.cc
ceph/src/tools/rados/RadosImport.cc
ceph/src/tools/rbd/action/Import.cc
ceph/src/tools/rbd/action/Kernel.cc
ceph/src/vstart.sh

index 86e37fa11c26b91de39c8e26f3bcff0ea19a3de5..8eecd7ef5594312e2b36d8955fa4fb8215605df5 100644 (file)
@@ -7,6 +7,15 @@
 /monitoring/prometheus                          @ceph/dashboard
 /doc/mgr/dashboard.rst                          @ceph/dashboard
 
+# Dashboard API team
+/src/pybind/mgr/dashboard/controllers                  @ceph/api
+/src/pybind/mgr/dashboard/frontend/src/app/shared/api  @ceph/api
+/src/pybind/mgr/dashboard/run-backend-api-tests.sh     @ceph/api
+/qa/suites/rados/dashboard                             @ceph/api
+/qa/tasks/mgr/test_dashboard.py                        @ceph/api
+/qa/tasks/mgr/dashboard                                @ceph/api
+/qa/tasks/mgr/test_module_selftest.py                  @ceph/api
+
 # For Orchestrator related PRs
 /src/cephadm                                    @ceph/orchestrators
 /src/pybind/mgr/orchestrator                    @ceph/orchestrators
index bddd18497378d4bcba7f2574e97190f4c7bd2bb2..6d769090dd747a9a021d4c62f287f89410d92066 100644 (file)
@@ -667,4 +667,4 @@ add_custom_target(tags DEPENDS ctags)
 
 find_package(CppCheck)
 find_package(IWYU)
-set(VERSION 15.2.4)
+set(VERSION 15.2.5)
index 547a3fe88a591e4bf8a3001c87c761a01adfdbb6..1c7ef204060b9520748a301f198f34f00dbd30a0 100644 (file)
@@ -1,53 +1,15 @@
->=15.2.4
+>=15.2.5
 --------
 
-* Cephadm: There were a lot of small usability improvements and bug fixes:
+* CephFS: Automatic static subtree partitioning policies may now be configured
+  using the new distributed and random ephemeral pinning extended attributes on
+  directories. See the documentation for more information:
+  https://docs.ceph.com/docs/master/cephfs/multimds/
 
-  * Grafana when deployed by Cephadm now binds to all network interfaces.
-  * ``cephadm check-host`` now prints all detected problems at once.
-  * Cephadm now calls ``ceph dashboard set-grafana-api-ssl-verify false``
-    when generating an SSL certificate for Grafana.
-  * The Alertmanager is now correctly pointed to the Ceph Dashboard
-  * ``cephadm adopt`` now supports adopting an Alertmanager
-  * ``ceph orch ps`` now supports filtering by service name
-  * ``ceph orch host ls`` now marks hosts as offline, if they are not
-    accessible.
+* Monitors now have a config option ``mon_osd_warn_num_repaired``, 10 by default.
+  If any OSD has repaired more than this many I/O errors in stored data a
+ ``OSD_TOO_MANY_REPAIRS`` health warning is generated.
 
-* Cephadm can now deploy NFS Ganesha services. For example, to deploy NFS with
-  a service id of mynfs, that will use the RADOS pool nfs-ganesha and namespace
-  nfs-ns::
-
-    ceph orch apply nfs mynfs nfs-ganesha nfs-ns
-
-* Cephadm: ``ceph orch ls --export`` now returns all service specifications in
-  yaml representation that is consumable by ``ceph orch apply``. In addition,
-  the commands ``orch ps`` and ``orch ls`` now support ``--format yaml`` and
-  ``--format json-pretty``.
-
-* Cephadm: ``ceph orch apply osd`` supports a ``--preview`` flag that prints a preview of
-  the OSD specification before deploying OSDs. This makes it possible to
-  verify that the specification is correct, before applying it.
-
-* RGW: The ``radosgw-admin`` sub-commands dealing with orphans --
-  ``radosgw-admin orphans find``, ``radosgw-admin orphans find``,
-  ``radosgw-admin orphans find`` -- have been deprecated. They have
-  not been actively maintained and they store intermediate results on
-  the cluster, which could fill a nearly-full cluster.  They have been
-  replaced by a tool, currently considered experimental,
-  ``rgw-orphan-list``.
-
-* RBD: The name of the rbd pool object that is used to store
-  rbd trash purge schedule is changed from "rbd_trash_trash_purge_schedule"
-  to "rbd_trash_purge_schedule". Users that have already started using
-  ``rbd trash purge schedule`` functionality and have per pool or namespace
-  schedules configured should copy "rbd_trash_trash_purge_schedule"
-  object to "rbd_trash_purge_schedule" before the upgrade and remove
-  "rbd_trash_purge_schedule" using the following commands in every RBD
-  pool and namespace where a trash purge schedule was previously
-  configured::
-
-    rados -p <pool-name> [-N namespace] cp rbd_trash_trash_purge_schedule rbd_trash_purge_schedule
-    rados -p <pool-name> [-N namespace] rm rbd_trash_trash_purge_schedule
-
-  or use any other convenient way to restore the schedule after the
-  upgrade.
+* Now when noscrub and/or nodeep-scrub flags are set globally or per pool,
+  scheduled scrubs of the type disabled will be aborted. All user initiated
+  scrubs are NOT interrupted.
index e62d15946ee99e12695624484371e61f62449726..a15bd142f6e6f129bb49bb6240d842a3a8e6a216 100644 (file)
@@ -1,7 +1,7 @@
 # Contributor: John Coyle <dx9err@gmail.com>
 # Maintainer: John Coyle <dx9err@gmail.com>
 pkgname=ceph
-pkgver=15.2.4
+pkgver=15.2.5
 pkgrel=0
 pkgdesc="Ceph is a distributed object store and file system"
 pkgusers="ceph"
@@ -63,7 +63,7 @@ makedepends="
        xmlstarlet
        yasm
 "
-source="ceph-15.2.4.tar.bz2"
+source="ceph-15.2.5.tar.bz2"
 subpackages="
        $pkgname-base
        $pkgname-common
@@ -116,7 +116,7 @@ _sysconfdir=/etc
 _udevrulesdir=/etc/udev/rules.d
 _python_sitelib=/usr/lib/python2.7/site-packages
 
-builddir=$srcdir/ceph-15.2.4
+builddir=$srcdir/ceph-15.2.5
 
 build() {
        export CEPH_BUILD_VIRTUALENV=$builddir
index 74a5f95bebb55e24c44d2405d0211f85574ac435..0e12976d09a999c21099370b8716cf318d1a3442 100644 (file)
@@ -98,7 +98,7 @@
 # main package definition
 #################################################################################
 Name:          ceph
-Version:       15.2.4
+Version:       15.2.5
 Release:       0%{?dist}
 %if 0%{?fedora} || 0%{?rhel}
 Epoch:         2
@@ -114,7 +114,7 @@ License:    LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-
 Group:         System/Filesystems
 %endif
 URL:           http://ceph.com/
-Source0:       %{?_remote_tarball_prefix}ceph-15.2.4.tar.bz2
+Source0:       %{?_remote_tarball_prefix}ceph-15.2.5.tar.bz2
 %if 0%{?suse_version}
 # _insert_obs_source_lines_here
 ExclusiveArch:  x86_64 aarch64 ppc64le s390x
@@ -750,6 +750,7 @@ Requires:   ceph-base = %{_epoch_prefix}%{version}-%{release}
 Requires:      lvm2
 Requires:      sudo
 Requires:      libstoragemgmt
+Requires:      python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
 %description osd
 ceph-osd is the object storage daemon for the Ceph distributed file
 system.  It is responsible for storing objects on a local file system
@@ -991,6 +992,12 @@ descriptions, and submitting the command to the appropriate daemon.
 
 %package -n python%{python3_pkgversion}-ceph-common
 Summary:       Python 3 utility libraries for Ceph
+%if 0%{?fedora} || 0%{?rhel} >= 8
+Requires:       python%{python3_pkgversion}-pyyaml
+%endif
+%if 0%{?suse_version}
+Requires:       python%{python3_pkgversion}-PyYAML
+%endif
 %if 0%{?suse_version}
 Group:         Development/Libraries/Python
 %endif
@@ -1119,7 +1126,7 @@ This package provides Ceph’s default alerts for Prometheus.
 # common
 #################################################################################
 %prep
-%autosetup -p1 -n ceph-15.2.4
+%autosetup -p1 -n ceph-15.2.5
 
 %build
 # LTO can be enabled as soon as the following GCC bug is fixed:
index 244c45170f1e54d5132f72ec1398093ea5d30c92..04122c99726685f98dcfee4a686f2f20a59f6e6a 100644 (file)
@@ -750,6 +750,7 @@ Requires:   ceph-base = %{_epoch_prefix}%{version}-%{release}
 Requires:      lvm2
 Requires:      sudo
 Requires:      libstoragemgmt
+Requires:      python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
 %description osd
 ceph-osd is the object storage daemon for the Ceph distributed file
 system.  It is responsible for storing objects on a local file system
@@ -991,6 +992,12 @@ descriptions, and submitting the command to the appropriate daemon.
 
 %package -n python%{python3_pkgversion}-ceph-common
 Summary:       Python 3 utility libraries for Ceph
+%if 0%{?fedora} || 0%{?rhel} >= 8
+Requires:       python%{python3_pkgversion}-pyyaml
+%endif
+%if 0%{?suse_version}
+Requires:       python%{python3_pkgversion}-PyYAML
+%endif
 %if 0%{?suse_version}
 Group:         Development/Libraries/Python
 %endif
index 10af931873a2817e172606bd5a64a98676ad99bc..242e05bf4876b5efa061a1e297049ab9d0a28eea 100644 (file)
@@ -1,7 +1,13 @@
-ceph (15.2.4-1bionic) bionic; urgency=medium
+ceph (15.2.5-1bionic) bionic; urgency=medium
 
 
- -- Jenkins Build Slave User <jenkins-build@braggi13.front.sepia.ceph.com>  Tue, 30 Jun 2020 16:42:44 +0000
+ -- Jenkins Build Slave User <jenkins-build@braggi13.front.sepia.ceph.com>  Tue, 15 Sep 2020 19:09:15 +0000
+
+ceph (15.2.5-1) stable; urgency=medium
+
+  * New upstream release
+
+ -- Ceph Release Team <ceph-maintainers@ceph.com>  Tue, 15 Sep 2020 18:57:01 +0000
 
 ceph (15.2.4-1) stable; urgency=medium
 
diff --git a/ceph/doc/ceph-volume/drive-group.rst b/ceph/doc/ceph-volume/drive-group.rst
new file mode 100644 (file)
index 0000000..4b2b8ed
--- /dev/null
@@ -0,0 +1,12 @@
+.. _ceph-volume-drive-group:
+
+``drive-group``
+===============
+The drive-group subcommand allows for passing :ref:'drivegroups' specifications
+straight to ceph-volume as json. ceph-volume will then attempt to deploy this
+drive groups via the batch subcommand.
+
+The specification can be passed via a file, string argument or on stdin.
+See the subcommand help for further details::
+
+    # ceph-volume drive-group --help
index 36ce9cc8910ee7f279a19cf46f7ca9005c6bfb29..a9c18abb7228c7f9bc9029626e378601f74bbab0 100644 (file)
@@ -65,6 +65,7 @@ and ``ceph-disk`` is fully disabled. Encryption is fully supported.
    intro
    systemd
    inventory
+   drive-group
    lvm/index
    lvm/activate
    lvm/batch
index 9444d56704f03ceab999669b7133dee72cc906dd..701c3d75f5593c5e191175e0f41fe932cb2e8c7f 100644 (file)
@@ -81,6 +81,12 @@ Adoption process
 
      # ssh-copy-id -f -i ceph.pub root@<host>
 
+   .. note::
+     It is also possible to import an existing ssh key. See
+     :ref:`ssh errors <cephadm-ssh-errors>` in the troubleshooting
+     document for instructions describing how to import existing
+     ssh keys.
+
 #. Tell cephadm which hosts to manage::
 
      # ceph orch host add <hostname> [ip-address]
@@ -105,9 +111,9 @@ Adoption process
 
 #. Redeploy MDS daemons by telling cephadm how many daemons to run for
    each file system.  You can list file systems by name with ``ceph fs
-   ls``.  For each file system::
+   ls``.  Run the following command on the master nodes::
 
-     # ceph orch apply mds <fs-name> <num-daemons>
+     # ceph orch apply mds <fs-name> [--placement=<placement>]
 
    For example, in a cluster with a single file system called `foo`::
 
@@ -127,7 +133,7 @@ Adoption process
 #. Redeploy RGW daemons.  Cephadm manages RGW daemons by zone.  For each
    zone, deploy new RGW daemons with cephadm::
 
-     # ceph orch apply rgw <realm> <zone> <placement> [--port <port>] [--ssl]
+     # ceph orch apply rgw <realm> <zone> [--subcluster=<subcluster>] [--port=<port>] [--ssl] [--placement=<placement>]
 
    where *<placement>* can be a simple daemon count, or a list of
    specific hosts (see :ref:`orchestrator-cli-placement-spec`).
diff --git a/ceph/doc/cephadm/concepts.rst b/ceph/doc/cephadm/concepts.rst
new file mode 100644 (file)
index 0000000..8b17437
--- /dev/null
@@ -0,0 +1,120 @@
+Cephadm Concepts
+================
+
+.. _cephadm-fqdn:
+
+Fully qualified domain names vs bare host names
+-----------------------------------------------
+
+cephadm has very minimal requirements when it comes to resolving host
+names etc. When cephadm initiates an ssh connection to a remote host,
+the host name  can be resolved in four different ways:
+
+-  a custom ssh config resolving the name to an IP
+-  via an externally maintained ``/etc/hosts``
+-  via explicitly providing an IP address to cephadm: ``ceph orch host add <hostname> <IP>``
+-  automatic name resolution via DNS.
+
+Ceph itself uses the command ``hostname`` to determine the name of the
+current host.
+
+.. note::
+
+  cephadm demands that the name of the host given via ``ceph orch host add`` 
+  equals the output of ``hostname`` on remote hosts.
+
+Otherwise cephadm can't be sure, the host names returned by
+``ceph * metadata`` match the hosts known to cephadm. This might result
+in a :ref:`cephadm-stray-host` warning.
+
+When configuring new hosts, there are two **valid** ways to set the 
+``hostname`` of a host:
+
+1. Using the bare host name. In this case:
+
+-  ``hostname`` returns the bare host name.
+-  ``hostname -f`` returns the FQDN.
+
+2. Using the fully qualified domain name as the host name. In this case:
+
+-  ``hostname`` returns the FQDN
+-  ``hostname -s`` return the bare host name
+
+Note that ``man hostname`` recommends ``hostname`` to return the bare
+host name:
+
+    The FQDN (Fully Qualified Domain Name) of the system is the
+    name that the resolver(3) returns for the host name, such as,
+    ursula.example.com. It is usually the hostname followed by the DNS
+    domain name (the part after the first dot). You can check the FQDN
+    using ``hostname --fqdn`` or the domain name using ``dnsdomainname``.
+
+    ::
+
+          You cannot change the FQDN with hostname or dnsdomainname.
+
+          The recommended method of setting the FQDN is to make the hostname
+          be an alias for the fully qualified name using /etc/hosts, DNS, or
+          NIS. For example, if the hostname was "ursula", one might have
+          a line in /etc/hosts which reads
+
+                 127.0.1.1    ursula.example.com ursula
+
+Which means, ``man hostname`` recommends ``hostname`` to return the bare
+host name. This in turn means that Ceph will return the bare host names
+when executing ``ceph * metadata``. This in turn means cephadm also
+requires the bare host name when adding a host to the cluster: 
+``ceph orch host add <bare-name>``.
+
+..
+  TODO: This chapter needs to provide way for users to configure
+  Grafana in the dashboard, as this is right no very hard to do.
+  
+Cephadm Scheduler
+-----------------
+
+Cephadm uses a declarative state to define the layout of the cluster. This
+state consists of a list of service specifications containing placement
+specifications (See :ref:`orchestrator-cli-service-spec` ). 
+
+Cephadm constantly compares list of actually running daemons in the cluster
+with the desired service specifications and will either add or remove new 
+daemons.
+
+First, cephadm will select a list of candidate hosts. It first looks for 
+explicit host names and will select those. In case there are no explicit hosts 
+defined, cephadm looks for a label specification. If there is no label defined 
+in the specification, cephadm will select hosts based on a host pattern. If 
+there is no pattern defined, cepham will finally select all known hosts as
+candidates.
+
+Then, cephadm will consider existing daemons of this services and will try to
+avoid moving any daemons.
+
+Cephadm supports the deployment of a specific amount of services. Let's 
+consider a service specification like so:
+
+.. code-block:: yaml
+
+    service_type: mds
+    service_name: myfs
+    placement:
+      count: 3
+      label: myfs
+
+This instructs cephadm to deploy three daemons on hosts labeled with
+``myfs`` across the cluster.
+
+Then, in case there are less than three daemons deployed on the candidate 
+hosts, cephadm will then then randomly choose hosts for deploying new daemons.
+
+In case there are more than three daemons deployed, cephadm will remove 
+existing daemons.
+
+Finally, cephadm will remove daemons on hosts that are outside of the list of 
+candidate hosts.
+
+However, there is a special cases that cephadm needs to consider.
+
+In case the are fewer hosts selected by the placement specification than 
+demanded by ``count``, cephadm will only deploy on selected hosts.
\ No newline at end of file
index ae9b9205fc85416b75cb94a96712b23c3a36a32a..f1dd523e2220473a61d64296a5ea58eaccbefc9c 100644 (file)
@@ -40,10 +40,27 @@ This will go out on all the matching hosts and deploy these OSDs.
 
 Since we want to have more complex setups, there are more filters than just the 'all' filter.
 
+Also, there is a `--dry-run` flag that can be passed to the `apply osd` command, which gives you a synopsis
+of the proposed layout.
+
+Example::
+
+  [monitor 1] # ceph orch apply osd -i /path/to/osd_spec.yml --dry-run
+
+
 
 Filters
 =======
 
+.. note::
+   Filters are applied using a `AND` gate by default. This essentially means that a drive needs to fulfill all filter
+   criteria in order to get selected.
+   If you wish to change this behavior you can adjust this behavior by setting
+
+    `filter_logic: OR`  # valid arguments are `AND`, `OR`
+
+   in the OSD Specification.
+
 You can assign disks to certain groups by their attributes using filters.
 
 The attributes are based off of ceph-volume's disk query. You can retrieve the information
index 4ffcab80abd832bb9e0923aea5e3875776fd0884..3156721df8f439df8f554b739cd82498dc158c24 100644 (file)
@@ -37,3 +37,4 @@ versions of Ceph.
     Client Setup <client-setup>
     DriveGroups <drivegroups>
     troubleshooting
+    concepts
\ No newline at end of file
index 4459a70925c63fc073d0a48109cbd0645d073351..e486231c6df5aff7b39d66be1fefc502e533dd18 100644 (file)
@@ -105,6 +105,19 @@ or run ``cephadm bootstrap -h`` to see all available options:
   cluster by putting them in a standard ini-style configuration file
   and using the ``--config *<config-file>*`` option.
 
+* You can choose the ssh user cephadm will use to connect to hosts by
+  using the ``--ssh-user *<user>*`` option. The ssh key will be added
+  to ``/home/*<user>*/.ssh/authorized_keys``. This user will require
+  passwordless sudo access.
+
+* If you are using a container on an authenticated registry that requires
+  login you may add the three arguments ``--registry-url <url of registry>``,
+  ``--registry-username <username of account on registry>``,
+  ``--registry-password <password of account on registry>`` OR
+  ``--registry-json <json file with login info>``. Cephadm will attempt
+  to login to this registry so it may pull your container and then store
+  the login info in its config database so other hosts added to the cluster
+  may also make use of the authenticated registry.
 
 Enable Ceph CLI
 ===============
@@ -125,9 +138,9 @@ command.  There are several ways to do this:
 
     # cephadm shell
 
-* It may be helpful to create an alias::
+* To execute ``ceph`` commands, you can also run commands like so::
 
-    # alias ceph='cephadm shell -- ceph'
+    # cephadm shell -- ceph -s
 
 * You can install the ``ceph-common`` package, which contains all of the
   ceph commands, including ``ceph``, ``rbd``, ``mount.ceph`` (for mounting
@@ -257,6 +270,49 @@ hosts to the cluster. No further steps are necessary.
     # ceph orch daemon add mon newhost1:10.1.2.123
     # ceph orch daemon add mon newhost2:10.1.2.0/24
 
+  .. note::
+     The **apply** command can be confusing. For this reason, we recommend using
+     YAML specifications. 
+
+     Each 'ceph orch apply mon' command supersedes the one before it. 
+     This means that you must use the proper comma-separated list-based 
+     syntax when you want to apply monitors to more than one host. 
+     If you do not use the proper syntax, you will clobber your work 
+     as you go.
+
+     For example::
+        
+          # ceph orch apply mon host1
+          # ceph orch apply mon host2
+          # ceph orch apply mon host3
+
+     This results in only one host having a monitor applied to it: host 3.
+
+     (The first command creates a monitor on host1. Then the second command
+     clobbers the monitor on host1 and creates a monitor on host2. Then the
+     third command clobbers the monitor on host2 and creates a monitor on 
+     host3. In this scenario, at this point, there is a monitor ONLY on
+     host3.)
+
+     To make certain that a monitor is applied to each of these three hosts,
+     run a command like this::
+       
+          # ceph orch apply mon "host1,host2,host3"
+
+     Instead of using the "ceph orch apply mon" commands, run a command like
+     this::
+
+          # ceph orch apply -i file.yaml
+
+     Here is a sample **file.yaml** file::
+
+          service_type: mon
+          placement:
+            hosts:
+             - host1
+             - host2
+             - host3
+
 
 Deploy OSDs
 ===========
@@ -326,29 +382,26 @@ that configuration isn't already in place (usually in the
 daemons will start up with default settings (e.g., binding to port
 80).
 
-If a realm has not been created yet, first create a realm::
+To deploy a set of radosgw daemons for a particular realm and zone::
 
-  # radosgw-admin realm create --rgw-realm=<realm-name> --default
+  # ceph orch apply rgw *<realm-name>* *<zone-name>* --placement="*<num-daemons>* [*<host1>* ...]"
 
-Next create a new zonegroup::
+For example, to deploy 2 rgw daemons serving the *myorg* realm and the *us-east-1*
+zone on *myhost1* and *myhost2*::
 
-  # radosgw-admin zonegroup create --rgw-zonegroup=<zonegroup-name>  --master --default
+  # ceph orch apply rgw myorg us-east-1 --placement="2 myhost1 myhost2"
 
-Next create a zone::
+Cephadm will wait for a healthy cluster and automatically create the supplied realm and zone if they do not exist before deploying the rgw daemon(s)
 
-  # radosgw-admin zone create --rgw-zonegroup=<zonegroup-name> --rgw-zone=<zone-name> --master --default
+Alternatively, the realm, zonegroup, and zone can be manually created using ``radosgw-admin`` commands::
 
-To deploy a set of radosgw daemons for a particular realm and zone::
+  # radosgw-admin realm create --rgw-realm=<realm-name> --default
 
-  # ceph orch apply rgw *<realm-name>* *<zone-name>* --placement="*<num-daemons>* [*<host1>* ...]"
+  # radosgw-admin zonegroup create --rgw-zonegroup=<zonegroup-name>  --master --default
 
-For example, to deploy 2 rgw daemons serving the *myorg* realm and the *us-east-1*
-zone on *myhost1* and *myhost2*::
+  # radosgw-admin zone create --rgw-zonegroup=<zonegroup-name> --rgw-zone=<zone-name> --master --default
 
-  # radosgw-admin realm create --rgw-realm=myorg --default
-  # radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
-  # radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=us-east-1 --master --default
-  # ceph orch apply rgw myorg us-east-1 --placement="2 myhost1 myhost2"
+  # radosgw-admin period update --rgw-realm=<realm-name> --commit
 
 See :ref:`orchestrator-cli-placement-spec` for details of the placement specification.
 
@@ -367,8 +420,11 @@ RADOS pool *nfs-ganesha* and namespace *nfs-ns*,::
 
   # ceph orch apply nfs foo nfs-ganesha nfs-ns
 
+.. note::
+   Create the *nfs-ganesha* pool first if it doesn't exist.
+
 See :ref:`orchestrator-cli-placement-spec` for details of the placement specification.
 
 Deploying custom containers
 ===========================
-It is also possible to choose different containers than the default containers to deploy Ceph. See :ref:`containers` for information about your options in this regard. 
+It is also possible to choose different containers than the default containers to deploy Ceph. See :ref:`containers` for information about your options in this regard.
index 7768b1ff4a6a3ab9c612982e0a3a64916f934242..198286a3a3046c70b3d95be1e5c982cf731fbbaf 100644 (file)
@@ -141,6 +141,21 @@ You will then need to restart the mgr daemon to reload the configuration with::
 
   ceph mgr fail
 
+Configuring a different SSH user
+----------------------------------
+
+Cephadm must be able to log into all the Ceph cluster nodes as an user
+that has enough privileges to download container images, start containers
+and execute commands without prompting for a password. If you do not want
+to use the "root" user (default option in cephadm), you must provide
+cephadm the name of the user that is going to be used to perform all the
+cephadm operations. Use the command::
+
+  ceph cephadm set-user <user>
+
+Prior to running this the cluster ssh key needs to be added to this users
+authorized_keys file and non-root users must have passwordless sudo access.
+
 
 Customizing the SSH configuration
 ---------------------------------
@@ -193,6 +208,8 @@ Resume cephadm work with::
 
   ceph orch resume
 
+.. _cephadm-stray-host:
+
 CEPHADM_STRAY_HOST
 ------------------
 
@@ -216,6 +233,9 @@ You can also disable this warning entirely with::
 
   ceph config set mgr mgr/cephadm/warn_on_stray_hosts false
 
+See :ref:`cephadm-fqdn` for more information about host names and
+domain names.
+
 CEPHADM_STRAY_DAEMON
 --------------------
 
index 29e36958e09c705d712019f97a26766a4ea5d28d..a439b3d7d3f05ed30b388b71d165b0e1531d9b63 100644 (file)
@@ -103,6 +103,7 @@ Cephadm writes small wrappers that run a containers. Refer to
 ``/var/lib/ceph/<cluster-fsid>/<service-name>/unit.run`` for the
 container execution command.
 
+.. _cephadm-ssh-errors:
 
 ssh errors
 ----------
@@ -138,7 +139,6 @@ Things users can do:
     
      [root@mon1 ~]# ssh -F config -i key root@mon1
 
-4. There is a limitation right now: the ssh user is always `root`.
 
 
 
diff --git a/ceph/doc/cephfs/fs-nfs-exports.rst b/ceph/doc/cephfs/fs-nfs-exports.rst
new file mode 100644 (file)
index 0000000..9740404
--- /dev/null
@@ -0,0 +1,155 @@
+=======================
+CephFS Exports over NFS
+=======================
+
+CephFS namespaces can be exported over NFS protocol using the
+`NFS-Ganesha NFS server <https://github.com/nfs-ganesha/nfs-ganesha/wiki>`_.
+
+Requirements
+============
+
+-  Latest Ceph file system with mgr enabled
+-  'nfs-ganesha', 'nfs-ganesha-ceph', 'nfs-ganesha-rados-grace' and
+   'nfs-ganesha-rados-urls' packages (version 3.3 and above)
+
+Create NFS Ganesha Cluster
+==========================
+
+.. code:: bash
+
+    $ ceph nfs cluster create <type=cephfs> <clusterid> [<placement>]
+
+This creates a common recovery pool for all Ganesha daemons, new user based on
+cluster_id and common ganesha config rados object.
+
+Here type is export type and placement specifies the size of cluster and hosts.
+For more details on placement specification refer the `orchestrator doc
+<https://docs.ceph.com/docs/master/mgr/orchestrator/#placement-specification>`_.
+Currently only CephFS export type is supported.
+
+Update NFS Ganesha Cluster
+==========================
+
+.. code:: bash
+
+    $ ceph nfs cluster update <clusterid> <placement>
+
+This updates the deployed cluster according to the placement value.
+
+Delete NFS Ganesha Cluster
+==========================
+
+.. code:: bash
+
+    $ ceph nfs cluster delete <clusterid>
+
+This deletes the deployed cluster.
+
+List NFS Ganesha Cluster
+========================
+
+.. code:: bash
+
+    $ ceph nfs cluster ls
+
+This lists deployed clusters.
+
+Show NFS Ganesha Cluster Information
+====================================
+
+.. code:: bash
+
+    $ ceph nfs cluster info [<clusterid>]
+
+This displays ip and port of deployed cluster.
+
+Set Customized Ganesha Configuration
+====================================
+
+.. code:: bash
+
+    $ ceph nfs cluster config set <clusterid> -i <config_file>
+
+With this the nfs cluster will use the specified config and it will have
+precedence over default config blocks.
+
+Reset Ganesha Configuration
+===========================
+
+.. code:: bash
+
+    $ ceph nfs cluster config reset <clusterid>
+
+This removes the user defined configuration.
+
+Create CephFS Export
+====================
+
+.. code:: bash
+
+    $ ceph nfs export create cephfs <fsname> <clusterid> <binding> [--readonly] [--path=/path/in/cephfs]
+
+It creates export rados objects containing the export block. Here binding is
+the pseudo root name and type is export type.
+
+Delete CephFS Export
+====================
+
+.. code:: bash
+
+    $ ceph nfs export delete <clusterid> <binding>
+
+It deletes an export in cluster based on pseudo root name (binding).
+
+List CephFS Export
+==================
+
+.. code:: bash
+
+    $ ceph nfs export ls <clusterid> [--detailed]
+
+It lists export for a cluster. With detailed option enabled it shows entire
+export block.
+
+Get CephFS Export
+=================
+
+.. code:: bash
+
+    $ ceph nfs export get <clusterid> <binding>
+
+It displays export block for a cluster based on pseudo root name (binding).
+
+Configuring NFS-Ganesha to export CephFS with vstart
+====================================================
+
+1) Using cephadm
+
+    .. code:: bash
+
+        $ MDS=1 MON=1 OSD=3 NFS=1 ../src/vstart.sh -n -d --cephadm
+
+    It can deploy only single ganesha daemon with vstart on default ganesha port.
+
+2) Using test orchestrator
+
+    .. code:: bash
+
+       $ MDS=1 MON=1 OSD=3 NFS=1 ../src/vstart.sh -n -d
+
+    It can deploy multiple ganesha daemons on random port. But this requires
+    ganesha packages to be installed.
+
+NFS: It is the number of NFS-Ganesha clusters to be created.
+
+Mount
+=====
+
+After the exports are successfully created and Ganesha daemons are no longer in
+grace period. The exports can be mounted by
+
+.. code:: bash
+
+    $ mount -t nfs -o port=<ganesha-port> <ganesha-host-name>:<ganesha-pseudo-path> <mount-point>
+
+.. note:: Only NFS v4.0+ is supported.
index f77bd6c885f7ad7c478250e35486afb881cd438d..4efe26d8b642222373a7c39ec61f44be9e5f7d45 100644 (file)
@@ -174,6 +174,13 @@ The output format is json and contains fields as follows.
 * path: absolute path of a subvolume
 * type: subvolume type indicating whether it's clone or subvolume
 * pool_namespace: RADOS namespace of the subvolume
+* features: features supported by the subvolume
+
+The subvolume "features" are based on the internal version of the subvolume and is a list containing
+a subset of the following features,
+
+* "snapshot-clone": supports cloning using a subvolumes snapshot as the source
+* "snapshot-autoprotect": supports automatically protecting snapshots, that are active clone sources, from deletion
 
 List subvolumes using::
 
@@ -204,7 +211,6 @@ The output format is json and contains fields as follows.
 * created_at: time of creation of snapshot in the format "YYYY-MM-DD HH:MM:SS:ffffff"
 * data_pool: data pool the snapshot belongs to
 * has_pending_clones: "yes" if snapshot clone is in progress otherwise "no"
-* protected: "yes" if snapshot is protected otherwise "no"
 * size: snapshot size in bytes
 
 Cloning Snapshots
@@ -214,10 +220,20 @@ Subvolumes can be created by cloning subvolume snapshots. Cloning is an asynchro
 data from a snapshot to a subvolume. Due to this bulk copy nature, cloning is currently inefficient for very huge
 data sets.
 
-Before starting a clone operation, the snapshot should be protected. Protecting a snapshot ensures that the snapshot
-cannot be deleted when a clone operation is in progress. Snapshots can be protected using::
+.. note:: Removing a snapshot (source subvolume) would fail if there are pending or in progress clone operations.
+
+Protecting snapshots prior to cloning was a pre-requisite in the Nautilus release, and the commands to protect/unprotect
+snapshots were introduced for this purpose. This pre-requisite, and hence the commands to protect/unprotect, is being
+deprecated in mainline CephFS, and may be removed from a future release.
+
+The commands being deprecated are::
 
   $ ceph fs subvolume snapshot protect <vol_name> <subvol_name> <snap_name> [--group_name <subvol_group_name>]
+  $ ceph fs subvolume snapshot unprotect <vol_name> <subvol_name> <snap_name> [--group_name <subvol_group_name>]
+
+.. note:: Using the above commands would not result in an error, but they serve no useful function.
+
+.. note:: Use subvolume info command to fetch subvolume metadata regarding supported "features" to help decide if protect/unprotect of snapshots is required, based on the "snapshot-autoprotect" feature availability.
 
 To initiate a clone operation use::
 
@@ -243,12 +259,11 @@ A clone can be in one of the following states:
 
 #. `pending`     : Clone operation has not started
 #. `in-progress` : Clone operation is in progress
-#. `complete`    : Clone operation has sucessfully finished
+#. `complete`    : Clone operation has successfully finished
 #. `failed`      : Clone operation has failed
 
 Sample output from an `in-progress` clone operation::
 
-  $ ceph fs subvolume snapshot protect cephfs subvol1 snap1
   $ ceph fs subvolume snapshot clone cephfs subvol1 snap1 clone1
   $ ceph fs clone status cephfs clone1
   {
@@ -266,7 +281,7 @@ Sample output from an `in-progress` clone operation::
 
 .. note:: Cloned subvolumes are accessible only after the clone operation has successfully completed.
 
-For a successsful clone operation, `clone status` would look like so::
+For a successful clone operation, `clone status` would look like so::
 
   $ ceph fs clone status cephfs clone1
   {
@@ -282,14 +297,6 @@ To delete a partial clone use::
 
   $ ceph fs subvolume rm <vol_name> <clone_name> [--group_name <group_name>] --force
 
-When no clone operations are in progress or scheduled, the snaphot can be unprotected. To unprotect a snapshot use::
-
-  $ ceph fs subvolume snapshot unprotect <vol_name> <subvol_name> <snap_name> [--group_name <subvol_group_name>]
-
-Note that unprotecting a snapshot would fail if there are pending or in progress clone operations. Also note that,
-only unprotected snapshots can be removed. This guarantees that a snapshot cannot be deleted when clones are pending
-(or in progress).
-
 .. note:: Cloning only synchronizes directories, regular files and symbolic links. Also, inode timestamps (access and
           modification times) are synchronized upto seconds granularity.
 
@@ -299,7 +306,6 @@ An `in-progress` or a `pending` clone operation can be canceled. To cancel a clo
 
 On successful cancelation, the cloned subvolume is moved to `canceled` state::
 
-  $ ceph fs subvolume snapshot protect cephfs subvol1 snap1
   $ ceph fs subvolume snapshot clone cephfs subvol1 snap1 clone1
   $ ceph fs clone cancel cephfs clone1
   $ ceph fs clone status cephfs clone1
index 4031e10320315497cfaa044791601c539365b421..58839a3f18d40c97231e64f10b649a5dbac66b51 100644 (file)
@@ -83,6 +83,7 @@ Administration
     MDS Configuration Settings <mds-config-ref>
     Manual: ceph-mds <../../man/8/ceph-mds>
     Export over NFS <nfs>
+    Export over NFS with volume nfs interface <fs-nfs-exports>
     Application best practices <app-best-practices>
     FS volume and subvolumes <fs-volumes>
     CephFS Quotas <quota>
index fd49e612f0d0004f0cf22870d8619e97faa79cc9..c2367e891431f3fce80e5f6d9d06cb85f46464f8 100644 (file)
@@ -135,3 +135,102 @@ directory's export pin. For example:
     setfattr -n ceph.dir.pin -v 0 a/b
     # a/b is now pinned to rank 0 and a/ and the rest of its children are still pinned to rank 1
 
+
+Setting subtree partitioning policies
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+It is also possible to setup **automatic** static partitioning of subtrees via
+a set of **policies**. In CephFS, this automatic static partitioning is
+referred to as **ephemeral pinning**. Any directory (inode) which is
+ephemerally pinned will be automatically assigned to a particular rank
+according to a consistent hash of its inode number. The set of all
+ephemerally pinned directories should be uniformly distributed across all
+ranks.
+
+Ephemerally pinned directories are so named because the pin may not persist
+once the directory inode is dropped from cache. However, an MDS failover does
+not affect the ephemeral nature of the pinned directory. The MDS records what
+subtrees are ephemerally pinned in its journal so MDS failovers do not drop
+this information.
+
+A directory is either ephemerally pinned or not. Which rank it is pinned to is
+derived from its inode number and a consistent hash. This means that
+ephemerally pinned directories are somewhat evenly spread across the MDS
+cluster. The **consistent hash** also minimizes redistribution when the MDS
+cluster grows or shrinks. So, growing an MDS cluster may automatically increase
+your metadata throughput with no other administrative intervention.
+
+Presently, there are two types of ephemeral pinning:
+
+**Distributed Ephemeral Pins**: This policy indicates that **all** of a
+directory's immediate children should be ephemerally pinned. The canonical
+example would be the ``/home`` directory: we want every user's home directory
+to be spread across the entire MDS cluster. This can be set via:
+
+::
+
+    setfattr -n ceph.dir.pin.distributed -v 1 /cephfs/home
+
+
+**Random Ephemeral Pins**: This policy indicates any descendent sub-directory
+may be ephemerally pinned. This is set through the extended attribute
+``ceph.dir.pin.random`` with the value set to the percentage of directories
+that should be pinned. For example:
+
+::
+
+    setfattr -n ceph.dir.pin.random -v 0.5 /cephfs/tmp
+
+Would cause any directory loaded into cache or created under ``/tmp`` to be
+ephemerally pinned 50 percent of the time.
+
+It is recomended to only set this to small values, like ``.001`` or ``0.1%``.
+Having too many subtrees may degrade performance. For this reason, the config
+``mds_export_ephemeral_random_max`` enforces a cap on the maximum of this
+percentage (default: ``.01``). The MDS returns ``EINVAL`` when attempting to
+set a value beyond this config.
+
+Both random and distributed ephemeral pin policies are off by default in
+Octopus. The features may be enabled via the
+``mds_export_ephemeral_random`` and ``mds_export_ephemeral_distributed``
+configuration options.
+
+Ephemeral pins may override parent export pins and vice versa. What determines
+which policy is followed is the rule of the closest parent: if a closer parent
+directory has a conflicting policy, use that one instead. For example:
+
+::
+
+    mkdir -p foo/bar1/baz foo/bar2
+    setfattr -n ceph.dir.pin -v 0 foo
+    setfattr -n ceph.dir.pin.distributed -v 1 foo/bar1
+
+The ``foo/bar1/baz`` directory will be ephemerally pinned because the
+``foo/bar1`` policy overrides the export pin on ``foo``. The ``foo/bar2``
+directory will obey the pin on ``foo`` normally.
+
+For the reverse situation:
+
+::
+
+    mkdir -p home/{patrick,john}
+    setfattr -n ceph.dir.pin.distributed -v 1 home
+    setfattr -n ceph.dir.pin -v 2 home/patrick
+
+The ``home/patrick`` directory and its children will be pinned to rank 2
+because its export pin overrides the policy on ``home``.
+
+If a directory has an export pin and an ephemeral pin policy, the export pin
+applies to the directory itself and the policy to its children. So:
+
+::
+
+    mkdir -p home/{patrick,john}
+    setfattr -n ceph.dir.pin -v 0 home
+    setfattr -n ceph.dir.pin.distributed -v 1 home
+
+The home directory inode (and all of its directory fragments) will always be
+located on rank 0. All children including ``home/patrick`` and ``home/john``
+will be ephemerally pinned according to the distributed policy. This may only
+matter for some obscure performance advantages. All the same, it's mentioned
+here so the override policy is clear.
index 1784de422968b69c02c0cfef0baf2b8b7f9ab234..4cd811f781220b8dba3b0eac4b1361c215ae7fbc 100644 (file)
@@ -25,11 +25,12 @@ cephadm/cephadm script into memory.)
    MON=1 MGR=1 OSD=0 MDS=0 ../src/vstart.sh -d -n -x --cephadm
 
 - ``~/.ssh/id_dsa[.pub]`` is used as the cluster key.  It is assumed that
-  this key is authorized to ssh to root@`hostname`.
-- No service spec is defined for mon or mgr, which means that cephadm
-  does not try to manage them.
+  this key is authorized to ssh with no passphrase to root@`hostname`.
+- cephadm does not try to manage any daemons started by vstart.sh (any
+  nonzero number in the environment variables).  No service spec is defined
+  for mon or mgr.
 - You'll see health warnings from cephadm about stray daemons--that's because
-  the vstart-launched mon and mgr aren't controlled by cephadm.
+  the vstart-launched daemons aren't controlled by cephadm.
 - The default image is ``quay.io/ceph-ci/ceph:master``, but you can change
   this by passing ``-o container_image=...`` or ``ceph config set global container_image ...``.
 
@@ -89,14 +90,15 @@ When you're done, you can tear down the cluster with::
 Note regarding network calls from CLI handlers
 ==============================================
 
-Executing any cephadm CLI commands like ``ceph orch ls`` will block
-the mon command handler thread within the MGR, thus preventing any
-concurrent CLI calls. Note that pressing ``^C`` will not resolve this
-situation, as *only* the client will be aborted, but not exceution
-itself. This means, cephadm will be completely unresonsive, until the
-execution of the CLI handler is fully completed. Note that even
-``ceph orch ps`` will not respond, while another handler is executed.
-
-This means, we should only do very few calls to remote hosts synchronously. 
-As a guideline, cephadm should do at most ``O(1)`` network calls in CLI handlers. 
+Executing any cephadm CLI commands like ``ceph orch ls`` will block the
+mon command handler thread within the MGR, thus preventing any concurrent
+CLI calls. Note that pressing ``^C`` will not resolve this situation,
+as *only* the client will be aborted, but not execution of the command
+within the orchestrator manager module itself. This means, cephadm will
+be completely unresponsive until the execution of the CLI handler is
+fully completed. Note that even ``ceph orch ps`` will not respond while
+another handler is executing.
+
+This means we should do very few synchronous calls to remote hosts.
+As a guideline, cephadm should do at most ``O(1)`` network calls in CLI handlers.
 Everything else should be done asynchronously in other threads, like ``serve()``.
index f80a6f52b339c62f166051a48ebee471bf241a53..49eff3ecec1555e1d22d19eb6809ef948b0157c7 100644 (file)
@@ -36,6 +36,8 @@ This means the cluster is running.
 Step 3 - run s3-tests
 ^^^^^^^^^^^^^^^^^^^^^
 
+.. highlight:: console
+
 To run the s3tests suite do the following::
 
    $ ../qa/workunits/rgw/run-s3tests.sh
@@ -50,17 +52,12 @@ Running your first test
 The Python tests in Ceph repository can be executed on your local machine
 using `vstart_runner.py`_. To do that, you'd need `teuthology`_ installed::
 
-    $ git clone https://github.com/ceph/teuthology
-    $ cd teuthology/
-    $ virtualenv -p python2.7 ./venv
+    $ virtualenv --python=python3 venv
     $ source venv/bin/activate
-    $ pip install --upgrade pip
-    $ pip install -r requirements.txt
-    $ python setup.py develop
+    $ pip install 'setuptools >= 12'
+    $ pip install git+https://github.com/ceph/teuthology#egg=teuthology[test]
     $ deactivate
 
-.. note:: The pip command above is pip2, not pip3; run ``pip --version``.
-
 The above steps installs teuthology in a virtual environment. Before running
 a test locally, build Ceph successfully from the source (refer
 :doc:`/install/build-ceph`) and do::
@@ -73,24 +70,20 @@ To run a specific test, say `test_reconnect_timeout`_ from
 `TestClientRecovery`_ in ``qa/tasks/cephfs/test_client_recovery``, you can
 do::
 
-    $ python2 ../qa/tasks/vstart_runner.py tasks.cephfs.test_client_recovery.TestClientRecovery.test_reconnect_timeout
+    $ python ../qa/tasks/vstart_runner.py tasks.cephfs.test_client_recovery.TestClientRecovery.test_reconnect_timeout
 
 The above command runs vstart_runner.py and passes the test to be executed as
 an argument to vstart_runner.py. In a similar way, you can also run the group
 of tests in the following manner::
 
     $ # run all tests in class TestClientRecovery
-    $ python2 ../qa/tasks/vstart_runner.py tasks.cephfs.test_client_recovery.TestClientRecovery
+    $ python ../qa/tasks/vstart_runner.py tasks.cephfs.test_client_recovery.TestClientRecovery
     $ # run  all tests in test_client_recovery.py
-    $ python2 ../qa/tasks/vstart_runner.py tasks.cephfs.test_client_recovery
+    $ python ../qa/tasks/vstart_runner.py tasks.cephfs.test_client_recovery
 
 Based on the argument passed, vstart_runner.py collects tests and executes as
 it would execute a single test.
 
-.. note:: vstart_runner.py as well as most tests in ``qa/`` are only
-          compatible with ``python2``. Therefore, use ``python2`` to run the
-          tests locally.
-
 vstart_runner.py can take the following options -
 
 --clear-old-log             deletes old log file before running the test
index a5a48401803ef40825549ddf9dc8a21a12c02836..0eed9e67fa26bea1541c8ed45b2de0c909d3e6c1 100644 (file)
@@ -1,7 +1,7 @@
 .. _msgr2-protocol:
 
-msgr2 protocol
-==============
+msgr2 protocol (msgr2.0 and msgr2.1)
+====================================
 
 This is a revision of the legacy Ceph on-wire protocol that was
 implemented by the SimpleMessenger.  It addresses performance and
@@ -20,7 +20,7 @@ This protocol revision has several goals relative to the original protocol:
   (e.g., padding) that keep computation and memory copies out of the
   fast path where possible.
 * *Signing*.  We will allow for traffic to be signed (but not
-  necessarily encrypted).  This may not be implemented in the initial version.
+  necessarily encrypted).  This is not implemented.
 
 Definitions
 -----------
@@ -56,10 +56,19 @@ Banner
 
 Both the client and server, upon connecting, send a banner::
 
-  "ceph %x %x\n", protocol_features_suppored, protocol_features_required
+  "ceph v2\n"
+  __le16 banner payload length
+  banner payload
 
-The protocol features are a new, distinct namespace.  Initially no
-features are defined or required, so this will be "ceph 0 0\n".
+A banner payload has the form::
+
+  __le64 peer_supported_features
+  __le64 peer_required_features
+
+This is a new, distinct feature bit namespace (CEPH_MSGR2_*).
+Currently, only CEPH_MSGR2_FEATURE_REVISION_1 is defined. It is
+supported but not required, so that msgr2.0 and msgr2.1 peers
+can talk to each other.
 
 If the remote party advertises required features we don't support, we
 can disconnect.
@@ -79,27 +88,150 @@ can disconnect.
 Frame format
 ------------
 
-All further data sent or received is contained by a frame.  Each frame has
-the form::
+After the banners are exchanged, all further communication happens
+in frames.  The exact format of the frame depends on the connection
+mode (msgr2.0-crc, msgr2.0-secure, msgr2.1-crc or msgr2.1-secure).
+All connections start in crc mode (either msgr2.0-crc or msgr2.1-crc,
+depending on peer_supported_features from the banner).
+
+Each frame has a 32-byte preamble::
+
+  __u8 tag
+  __u8 number of segments
+  {
+    __le32 segment length
+    __le16 segment alignment
+  } * 4
+  reserved (2 bytes)
+  __le32 preamble crc
+
+An empty frame has one empty segment.  A non-empty frame can have
+between one and four segments, all segments except the last may be
+empty.
+
+If there are less than four segments, unused (trailing) segment
+length and segment alignment fields are zeroed.
+
+The reserved bytes are zeroed.
+
+The preamble checksum is CRC32-C.  It covers everything up to
+itself (28 bytes) and is calculated and verified irrespective of
+the connection mode (i.e. even if the frame is encrypted).
+
+### msgr2.0-crc mode
+
+A msgr2.0-crc frame has the form::
+
+  preamble (32 bytes)
+  {
+    segment payload
+  } * number of segments
+  epilogue (17 bytes)
+
+where epilogue is::
+
+  __u8 late_flags
+  {
+    __le32 segment crc
+  } * 4
+
+late_flags is used for frame abortion.  After transmitting the
+preamble and the first segment, the sender can fill the remaining
+segments with zeros and set a flag to indicate that the receiver must
+drop the frame.  This allows the sender to avoid extra buffering
+when a frame that is being put on the wire is revoked (i.e. yanked
+out of the messenger): payload buffers can be unpinned and handed
+back to the user immediately, without making a copy or blocking
+until the whole frame is transmitted.  Currently this is used only
+by the kernel client, see ceph_msg_revoke().
+
+The segment checksum is CRC32-C.  For "used" empty segments, it is
+set to (__le32)-1.  For unused (trailing) segments, it is zeroed.
+
+The crcs are calculated just to protect against bit errors.
+No authenticity guarantees are provided, unlike in msgr1 which
+attempted to provide some authenticity guarantee by optionally
+signing segment lengths and crcs with the session key.
+
+Issues:
+
+1. As part of introducing a structure for a generic frame with
+   variable number of segments suitable for both control and
+   message frames, msgr2.0 moved the crc of the first segment of
+   the message frame (ceph_msg_header2) into the epilogue.
+
+   As a result, ceph_msg_header2 can no longer be safely
+   interpreted before the whole frame is read off the wire.
+   This is a regression from msgr1, because in order to scatter
+   the payload directly into user-provided buffers and thus avoid
+   extra buffering and copying when receiving message frames,
+   ceph_msg_header2 must be available in advance -- it stores
+   the transaction id which the user buffers are keyed on.
+   The implementation has to choose between forgoing this
+   optimization or acting on an unverified segment.
+
+2. late_flags is not covered by any crc.  Since it stores the
+   abort flag, a single bit flip can result in a completed frame
+   being dropped (causing the sender to hang waiting for a reply)
+   or, worse, in an aborted frame with garbage segment payloads
+   being dispatched.
+
+   This was the case with msgr1 and got carried over to msgr2.0.
+
+### msgr2.1-crc mode
+
+Differences from msgr2.0-crc:
+
+1. The crc of the first segment is stored at the end of the
+   first segment, not in the epilogue.  The epilogue stores up to
+   three crcs, not up to four.
+
+   If the first segment is empty, (__le32)-1 crc is not generated.
+
+2. The epilogue is generated only if the frame has more than one
+   segment (i.e. at least one of second to fourth segments is not
+   empty).  Rationale: If the frame has only one segment, it cannot
+   be aborted and there are no crcs to store in the epilogue.
 
-  frame_len (le32)
-  tag (TAG_* le32)
-  frame_header_checksum (le32)
-  payload
-  [payload padding -- only present after stream auth phase]
-  [signature -- only present after stream auth phase]
+3. Unchecksummed late_flags is replaced with late_status which
+   builds in bit error detection by using a 4-bit nibble per flag
+   and two code words that are Hamming Distance = 4 apart (and not
+   all zeros or ones).  This comes at the expense of having only
+   one reserved flag, of course.
 
+Some example frames:
 
-* The frame_header_checksum is over just the frame_len and tag values (8 bytes).
+* A 0+0+0+0 frame (empty, no epilogue)::
 
-* frame_len includes everything after the frame_len le32 up to the end of the
-  frame (all payloads, signatures, and padding).
+    preamble (32 bytes)
 
-* The payload format and length is determined by the tag.
+* A 20+0+0+0 frame (no epilogue)::
 
-* The signature portion is only present if the authentication phase
-  has completed (TAG_AUTH_DONE has been sent) and signatures are
-  enabled.
+    preamble (32 bytes)
+    segment1 payload (20 bytes)
+    __le32 segment1 crc
+
+* A 0+70+0+0 frame::
+
+    preamble (32 bytes)
+    segment2 payload (70 bytes)
+    epilogue (13 bytes)
+
+* A 20+70+0+350 frame::
+
+    preamble (32 bytes)
+    segment1 payload (20 bytes)
+    __le32 segment1 crc
+    segment2 payload (70 bytes)
+    segment4 payload (350 bytes)
+    epilogue (13 bytes)
+
+where epilogue is::
+
+  __u8 late_status
+  {
+    __le32 segment crc
+  } * 3
 
 Hello
 -----
@@ -198,47 +330,197 @@ authentication method as the first attempt:
 Post-auth frame format
 ----------------------
 
-The frame format is fixed (see above), but can take three different
-forms, depending on the AUTH_DONE flags:
+Depending on the negotiated connection mode from TAG_AUTH_DONE, the
+connection either stays in crc mode or switches to the corresponding
+secure mode (msgr2.0-secure or msgr2.1-secure).
+
+### msgr2.0-secure mode
+
+A msgr2.0-secure frame has the form::
+
+  {
+    preamble (32 bytes)
+    {
+      segment payload
+      zero padding (out to 16 bytes)
+    } * number of segments
+    epilogue (16 bytes)
+  } ^ AES-128-GCM cipher
+  auth tag (16 bytes)
+
+where epilogue is::
+
+    __u8 late_flags
+    zero padding (15 bytes)
+
+late_flags has the same meaning as in msgr2.0-crc mode.
+
+Each segment and the epilogue are zero padded out to 16 bytes.
+Technically, GCM doesn't require any padding because Counter mode
+(the C in GCM) essentially turns a block cipher into a stream cipher.
+But, if the overall input length is not a multiple of 16 bytes, some
+implicit zero padding would occur internally because GHASH function
+used by GCM for generating auth tags only works on 16-byte blocks.
+
+Issues:
+
+1. The sender encrypts the whole frame using a single nonce
+   and generating a single auth tag.  Because segment lengths are
+   stored in the preamble, the receiver has no choice but to decrypt
+   and interpret the preamble without verifying the auth tag -- it
+   can't even tell how much to read off the wire to get the auth tag
+   otherwise!  This creates a decryption oracle, which, in conjunction
+   with Counter mode malleability, could lead to recovery of sensitive
+   information.
+
+   This issue extends to the first segment of the message frame as
+   well.  As in msgr2.0-crc mode, ceph_msg_header2 cannot be safely
+   interpreted before the whole frame is read off the wire.
+
+2. Deterministic nonce construction with a 4-byte counter field
+   followed by an 8-byte fixed field is used.  The initial values are
+   taken from the connection secret -- a random byte string generated
+   during the authentication phase.  Because the counter field is
+   only four bytes long, it can wrap and then repeat in under a day,
+   leading to GCM nonce reuse and therefore a potential complete
+   loss of both authenticity and confidentiality for the connection.
+   This was addressed by disconnecting before the counter repeats
+   (CVE-2020-1759).
+
+### msgr2.1-secure mode
+
+Differences from msgr2.0-secure:
+
+1. The preamble, the first segment and the rest of the frame are
+   encrypted separately, using separate nonces and generating
+   separate auth tags.  This gets rid of unverified plaintext use
+   and keeps msgr2.1-secure mode close to msgr2.1-crc mode, allowing
+   the implementation to receive message frames in a similar fashion
+   (little to no buffering, same scatter/gather logic, etc).
+
+   In order to reduce the number of en/decryption operations per
+   frame, the preamble is grown by a fixed size inline buffer (48
+   bytes) that the first segment is inlined into, either fully or
+   partially.  The preamble auth tag covers both the preamble and the
+   inline buffer, so if the first segment is small enough to be fully
+   inlined, it becomes available after a single decryption operation.
+
+2. As in msgr2.1-crc mode, the epilogue is generated only if the
+   frame has more than one segment.  The rationale is even stronger,
+   as it would require an extra en/decryption operation.
+
+3. For consistency with msgr2.1-crc mode, late_flags is replaced
+   with late_status (the built-in bit error detection isn't really
+   needed in secure mode).
+
+4. In accordance with `NIST Recommendation for GCM`_, deterministic
+   nonce construction with a 4-byte fixed field followed by an 8-byte
+   counter field is used.  An 8-byte counter field should never repeat
+   but the nonce reuse protection put in place for msgr2.0-secure mode
+   is still there.
+
+   The initial values are the same as in msgr2.0-secure mode.
+
+   .. _`NIST Recommendation for GCM`: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
+
+As in msgr2.0-secure mode, each segment is zero padded out to
+16 bytes.  If the first segment is fully inlined, its padding goes
+to the inline buffer.  Otherwise, the padding is on the remainder.
+The corollary to this is that the inline buffer is consumed in
+16-byte chunks.
+
+The unused portion of the inline buffer is zeroed.
+
+Some example frames:
+
+* A 0+0+0+0 frame (empty, nothing to inline, no epilogue)::
+
+    {
+      preamble (32 bytes)
+      zero padding (48 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
+
+* A 20+0+0+0 frame (first segment fully inlined, no epilogue)::
+
+    {
+      preamble (32 bytes)
+      segment1 payload (20 bytes)
+      zero padding (28 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
 
-* If neither FLAG_SIGNED or FLAG_ENCRYPTED is specified, things are simple::
+* A 0+70+0+0 frame (nothing to inline)::
 
-    frame_len
-    tag
-    payload
-    payload_padding (out to auth block_size)
+    {
+      preamble (32 bytes)
+      zero padding (48 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
+    {
+      segment2 payload (70 bytes)
+      zero padding (10 bytes)
+      epilogue (16 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
 
-  - The padding is some number of bytes < the auth block_size that
-    brings the total length of the payload + payload_padding to a
-    multiple of block_size.  It does not include the frame_len or tag.  Padding
-    content can be zeros or (better) random bytes.
+* A 20+70+0+350 frame (first segment fully inlined)::
 
-* If FLAG_SIGNED has been specified::
+    {
+      preamble (32 bytes)
+      segment1 payload (20 bytes)
+      zero padding (28 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
+    {
+      segment2 payload (70 bytes)
+      zero padding (10 bytes)
+      segment4 payload (350 bytes)
+      zero padding (2 bytes)
+      epilogue (16 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
 
-    frame_len
-    tag
-    payload
-    payload_padding (out to auth block_size)
-    signature (sig_size bytes)
+* A 105+0+0+0 frame (first segment partially inlined, no epilogue)::
 
-  Here the padding just makes life easier for the signature.  It can be
-  random data to add additional confounder.  Note also that the
-  signature input must include some state from the session key and the
-  previous message.
+    {
+      preamble (32 bytes)
+      segment1 payload (48 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
+    {
+      segment1 payload remainder (57 bytes)
+      zero padding (7 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
 
-* If FLAG_ENCRYPTED has been specified::
+* A 105+70+0+350 frame (first segment partially inlined)::
 
-    frame_len
-    tag
     {
-      payload
-      payload_padding (out to auth block_size)
-    } ^ stream cipher
+      preamble (32 bytes)
+      segment1 payload (48 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
+    {
+      segment1 payload remainder (57 bytes)
+      zero padding (7 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
+    {
+      segment2 payload (70 bytes)
+      zero padding (10 bytes)
+      segment4 payload (350 bytes)
+      zero padding (2 bytes)
+      epilogue (16 bytes)
+    } ^ AES-128-GCM cipher
+    auth tag (16 bytes)
+
+where epilogue is::
 
-  Note that the padding ensures that the total frame is a multiple of
-  the auth method's block_size so that the message can be sent out over
-  the wire without waiting for the next frame in the stream.
+    __u8 late_status
+    zero padding (15 bytes)
 
+late_status has the same meaning as in msgr2.1-crc mode.
 
 Message flow handshake
 ----------------------
index 2bc951ebd13c95459d61985c226f36d7311bb1fa..af56cd759653315888665158fc18fafa5c62f57b 100644 (file)
@@ -158,6 +158,21 @@ BlueStore OSD with the *prime-osd-dir* command::
 
   ceph-bluestore-tool prime-osd-dir --dev *main device* --path /var/lib/ceph/osd/ceph-*id*
 
+BlueFS log rescue
+=====================
+
+Some versions of BlueStore were susceptible to BlueFS log growing extremaly large -
+beyond the point of making booting OSD impossible. This state is indicated by
+booting that takes very long and fails in _replay function.
+
+This can be fixed by::
+  ceph-bluestore-tool fsck --path *osd path* --bluefs_replay_recovery=true
+
+It is advised to first check if rescue process would be successfull::
+  ceph-bluestore-tool fsck --path *osd path* \
+  --bluefs_replay_recovery=true --bluefs_replay_recovery_disable_compact=true
+
+If above fsck is successfull fix procedure can be applied.
 
 Availability
 ============
index bd5fa86989e267a0d668acc683de1b45f38b54e5..72bbf22edab0015a299e9eb6d2a441291513fb13 100644 (file)
@@ -37,7 +37,7 @@ Synopsis
 | **cephadm** **run** [-h] --name NAME --fsid FSID
 
 | **cephadm** **shell** [-h] [--fsid FSID] [--name NAME] [--config CONFIG]
-                        [--keyring KEYRING] [--env ENV]
+                        [--keyring KEYRING] [--mount MOUNT] [--env ENV]
                         [--] [command [command ...]]
 
 | **cephadm** **enter** [-h] [--fsid FSID] --name NAME [command [command ...]]
@@ -60,24 +60,30 @@ Synopsis
 |                           [--skip-ssh]
 |                           [--initial-dashboard-user INITIAL_DASHBOARD_USER]
 |                           [--initial-dashboard-password INITIAL_DASHBOARD_PASSWORD]
+|                           [--ssl-dashboard-port SSL_DASHBOARD_PORT]
 |                           [--dashboard-key DASHBOARD_KEY]
 |                           [--dashboard-crt DASHBOARD_CRT]
 |                           [--ssh-config SSH_CONFIG]
 |                           [--ssh-private-key SSH_PRIVATE_KEY]
-|                           [--ssh-public-key SSH_PUBLIC_KEY] [--skip-mon-network]
+|                           [--ssh-public-key SSH_PUBLIC_KEY]
+|                           [--ssh-user SSH_USER] [--skip-mon-network]
 |                           [--skip-dashboard] [--dashboard-password-noupdate]
 |                           [--no-minimize-config] [--skip-ping-check]
 |                           [--skip-pull] [--skip-firewalld] [--allow-overwrite]
 |                           [--allow-fqdn-hostname] [--skip-prepare-host]
 |                           [--orphan-initial-daemons] [--skip-monitoring-stack]
 |                           [--apply-spec APPLY_SPEC]
+|                           [--registry-url REGISTRY_URL]
+|                           [--registry-username REGISTRY_USERNAME]
+|                           [--registry-password REGISTRY_PASSWORD]
+|                           [--registry-json REGISTRY_JSON]
 
 
 
 | **cephadm** **deploy** [-h] --name NAME --fsid FSID [--config CONFIG]
 |                        [--config-json CONFIG_JSON] [--keyring KEYRING]
 |                        [--key KEY] [--osd-fsid OSD_FSID] [--skip-firewalld]
-|                        [--reconfig] [--allow-ptrace]
+|                        [--tcp-ports TCP_PORTS] [--reconfig] [--allow-ptrace]
 
 | **cephadm** **check-host** [-h] [--expect-hostname EXPECT_HOSTNAME]
 
@@ -92,6 +98,10 @@ Synopsis
 
 | **cephadm** **install** [-h] [packages [packages ...]]
 
+| **cephadm** **registry-login** [-h] [--registry-url REGISTRY_URL]
+|                                [--registry-username REGISTRY_USERNAME]
+|                                [--registry-password REGISTRY_PASSWORD]
+|                                [--registry-json REGISTRY_JSON] [--fsid FSID]
 
 
 
@@ -201,11 +211,13 @@ Arguments:
 * [--skip-ssh                     skip setup of ssh key on local host
 * [--initial-dashboard-user INITIAL_DASHBOARD_USER] Initial user for the dashboard
 * [--initial-dashboard-password INITIAL_DASHBOARD_PASSWORD] Initial password for the initial dashboard user
+* [--ssl-dashboard-port SSL_DASHBOARD_PORT] Port number used to connect with dashboard using SSL
 * [--dashboard-key DASHBOARD_KEY] Dashboard key
 * [--dashboard-crt DASHBOARD_CRT] Dashboard certificate
 * [--ssh-config SSH_CONFIG] SSH config
 * [--ssh-private-key SSH_PRIVATE_KEY] SSH private key
 * [--ssh-public-key SSH_PUBLIC_KEY] SSH public key
+* [--ssh-user SSH_USER]           set user for SSHing to cluster hosts, passwordless sudo will be needed for non-root users'
 * [--skip-mon-network]            set mon public_network based on bootstrap mon ip
 * [--skip-dashboard]              do not enable the Ceph Dashboard
 * [--dashboard-password-noupdate] stop forced dashboard password change
@@ -219,6 +231,10 @@ Arguments:
 * [--orphan-initial-daemons]      Do not create initial mon, mgr, and crash service specs
 * [--skip-monitoring-stack]       Do not automatically provision monitoring stack] (prometheus, grafana, alertmanager, node-exporter)
 * [--apply-spec APPLY_SPEC]       Apply cluster spec after bootstrap (copy ssh key, add hosts and apply services)
+* [--registry-url REGISTRY_URL]   url of custom registry to login to. e.g. docker.io, quay.io
+* [--registry-username REGISTRY_USERNAME] username of account to login to on custom registry
+* [--registry-password REGISTRY_PASSWORD] password of account to login to on custom registry
+* [--registry-json REGISTRY_JSON] JSON file containing registry login info (see registry-login command documentation)
 
 ceph-volume
 -----------
@@ -265,6 +281,7 @@ Arguments:
 * [--key KEY]                 key for new daemon
 * [--osd-fsid OSD_FSID]       OSD uuid, if creating an OSD container
 * [--skip-firewalld]          Do not configure firewalld
+* [--tcp-ports                List of tcp ports to open in the host firewall
 * [--reconfig]                Reconfigure a previously deployed daemon
 * [--allow-ptrace]            Allow SYS_PTRACE on daemon container
 
@@ -358,6 +375,34 @@ Pull the ceph image::
 
     cephadm pull
 
+registry-login
+--------------
+
+Give cephadm login information for an authenticated registry (url, username and password).
+Cephadm will attempt to log the calling host into that registry::
+
+      cephadm registry-login --registry-url [REGISTRY_URL] --registry-username [USERNAME]
+                             --registry-password [PASSWORD]
+
+Can also use a JSON file containing the login info formatted as::
+
+      {
+       "url":"REGISTRY_URL",
+       "username":"REGISTRY_USERNAME",
+       "password":"REGISTRY_PASSWORD"
+      }
+
+and turn it in with command::
+
+      cephadm registry-login --registry-json [JSON FILE]
+
+Arguments:
+
+* [--registry-url REGISTRY_URL]   url of registry to login to. e.g. docker.io, quay.io
+* [--registry-username REGISTRY_USERNAME] username of account to login to on registry
+* [--registry-password REGISTRY_PASSWORD] password of account to login to on registry
+* [--registry-json REGISTRY_JSON] JSON file containing login info for custom registry
+* [--fsid FSID]                   cluster FSID
 
 rm-daemon
 ---------
@@ -420,6 +465,7 @@ Arguments:
 * [--name NAME, -n NAME]          daemon name (type.id)
 * [--config CONFIG, -c CONFIG]    ceph.conf to pass through to the container
 * [--keyring KEYRING, -k KEYRING] ceph.keyring to pass through to the container
+* [--mount MOUNT, -m MOUNT]       mount a file or directory under /mnt in the container
 * [--env ENV, -e ENV]             set environment variable
 
 
index b5a373584a213ddfb9ba24e6eeccb74bbef67135..52a684fcdfe7a613a850661eb0be77d78cf5235f 100644 (file)
@@ -792,6 +792,57 @@ Per mapping (block device) `rbd device map` options:
   solid-state drives).  For filestore with filestore_punch_hole = false, the
   recommended setting is image object size (typically 4M).
 
+* crush_location=x - Specify the location of the client in terms of CRUSH
+  hierarchy (since 5.8).  This is a set of key-value pairs separated from
+  each other by '|', with keys separated from values by ':'.  Note that '|'
+  may need to be quoted or escaped to avoid it being interpreted as a pipe
+  by the shell.  The key is the bucket type name (e.g. rack, datacenter or
+  region with default bucket types) and the value is the bucket name.  For
+  example, to indicate that the client is local to rack "myrack", data center
+  "mydc" and region "myregion"::
+
+    crush_location=rack:myrack|datacenter:mydc|region:myregion
+
+  Each key-value pair stands on its own: "myrack" doesn't need to reside in
+  "mydc", which in turn doesn't need to reside in "myregion".  The location
+  is not a path to the root of the hierarchy but rather a set of nodes that
+  are matched independently, owning to the fact that bucket names are unique
+  within a CRUSH map.  "Multipath" locations are supported, so it is possible
+  to indicate locality for multiple parallel hierarchies::
+
+    crush_location=rack:myrack1|rack:myrack2|datacenter:mydc
+
+* read_from_replica=no - Disable replica reads, always pick the primary OSD
+  (since 5.8, default).
+
+* read_from_replica=balance - When issued a read on a replicated pool, pick
+  a random OSD for serving it (since 5.8).
+
+  This mode is safe for general use only since Octopus (i.e. after "ceph osd
+  require-osd-release octopus").  Otherwise it should be limited to read-only
+  workloads such as images mapped read-only everywhere or snapshots.
+
+* read_from_replica=localize - When issued a read on a replicated pool, pick
+  the most local OSD for serving it (since 5.8).  The locality metric is
+  calculated against the location of the client given with crush_location;
+  a match with the lowest-valued bucket type wins.  For example, with default
+  bucket types, an OSD in a matching rack is closer than an OSD in a matching
+  data center, which in turn is closer than an OSD in a matching region.
+
+  This mode is safe for general use only since Octopus (i.e. after "ceph osd
+  require-osd-release octopus").  Otherwise it should be limited to read-only
+  workloads such as images mapped read-only everywhere or snapshots.
+
+* compression_hint=none - Don't set compression hints (since 5.8, default).
+
+* compression_hint=compressible - Hint to the underlying OSD object store
+  backend that the data is compressible, enabling compression in passive mode
+  (since 5.8).
+
+* compression_hint=incompressible - Hint to the underlying OSD object store
+  backend that the data is incompressible, disabling compression in aggressive
+  mode (since 5.8).
+
 `rbd device unmap` options:
 
 * force - Force the unmapping of a block device that is open (since 4.9).  The
index 76e0ce94a80fe89a9d0e8be3105ac140cb41b290..e12a8c6f83e9aa1d5bdc37b84486fe35bb38d7c5 100644 (file)
@@ -29,7 +29,7 @@ and will read from stdin.
 
 ::
 
-  ceph rm <crashid>
+  ceph crash rm <crashid>
 
 Remove a specific crash dump.
 
index f6c85cec79ce8efcbc64737e87ca21cdd407334f..d59a13692332bbef4b4a2cd4481952e8af0e9246 100644 (file)
@@ -40,7 +40,6 @@ sensible.
     Telegraf module <telegraf>
     Telemetry module <telemetry>
     Iostat module <iostat>
-    OSD Support module <osd_support>
     Crash module <crash>
     Insights module <insights>
     Orchestrator module <orchestrator>
index 6d3fc235f24cf15aad34b3458994cd2a22cb8d03..5da26429f5c605cda5b2e244290c4ae8410e0ff0 100644 (file)
@@ -59,8 +59,6 @@ Status
 Show current orchestrator mode and high-level status (whether the module able
 to talk to it)
 
-Also show any in-progress actions.
-
 Host Management
 ===============
 
@@ -73,6 +71,8 @@ Add and remove hosts::
     ceph orch host add <hostname> [<addr>] [<labels>...]
     ceph orch host rm <hostname>
 
+For cephadm, see also :ref:`cephadm-fqdn`.
+
 Host Specification
 ------------------
 
@@ -142,57 +142,69 @@ Example command::
 
      ceph orch device zap my_hostname /dev/sdx
 
+.. note::
+    Cephadm orchestrator will automatically deploy drives that match the DriveGroup in your OSDSpec if the unmanaged flag is unset.
+    For example, if you use the ``all-available-devices`` option when creating OSD's, when you ``zap`` a device the cephadm orchestrator will automatically create a new OSD in the device .
+    To disable this behavior, see :ref:`orchestrator-cli-create-osds`.
+
+.. _orchestrator-cli-create-osds:
 
 Create OSDs
 -----------
 
-Create OSDs on a group of devices on a single host::
+Create OSDs on a set of devices on a single host::
 
     ceph orch daemon add osd <host>:device1,device2
 
-or::
-
-    ceph orch apply osd -i <json_file/yaml_file>
-
-
-or::
-
-    ceph orch apply osd --all-available-devices
+Another way of doing it is using ``apply`` interface::
 
+    ceph orch apply osd -i <json_file/yaml_file> [--dry-run]
 
+Where the ``json_file/yaml_file`` is a DriveGroup specification.
 For a more in-depth guide to DriveGroups please refer to :ref:`drivegroups`
 
-Example::
-
-    # ceph orch daemon add osd node1:/dev/vdd
-    Created osd(s) 6 on host 'node1'
-
-
-If the 'apply' method is used. You will be presented with a preview of what will happen.
+Along with ``apply`` interface if ``dry-run`` option is used, it will present a
+preview of what will happen.
 
 Example::
 
-    # ceph orch apply osd --all-available-devices
+    # ceph orch apply osd --all-available-devices --dry-run
     NAME                  HOST  DATA     DB WAL
     all-available-devices node1 /dev/vdb -  -
     all-available-devices node2 /dev/vdc -  -
     all-available-devices node3 /dev/vdd -  -
 
-
 .. note::
-    Output form Cephadm orchestrator
+    Example output from cephadm orchestrator
+
+When the parameter ``all-available-devices`` or a DriveGroup specification is used, a cephadm service is created.
+This service guarantees that all available devices or devices included in the DriveGroup will be used for OSD's.
+Take into account the implications of this behavior, which is automatic and enabled by default.
+
+For example:
+
+After using::
+
+    ceph orch apply osd --all-available-devices
+
+* If you add new disks to the cluster they will automatically be used to create new OSD's.
+* A new OSD will be created automatically if you remove an OSD and clean the LVM physical volume.
+
+If you want to avoid this behavior (disable automatic creation of OSD in available devices), use the ``unmanaged`` parameter::
+
+    ceph orch apply osd --all-available-devices --unmanaged=true
 
 Remove an OSD
--------------------
+-------------
 ::
 
-    ceph orch osd rm <svc_id>... [--replace] [--force]
+    ceph orch osd rm <svc_id(s)> [--replace] [--force]
 
-Removes one or more OSDs from the cluster.
+Evacuates PGs from an OSD and removes it from the cluster.
 
 Example::
 
-    # ceph orch osd rm 4
+    # ceph orch osd rm 0
     Scheduled OSD(s) for removal
 
 
@@ -201,20 +213,40 @@ OSDs that are not safe-to-destroy will be rejected.
 You can query the state of the operation with::
 
     # ceph orch osd rm status
-    NAME  HOST  PGS STARTED_AT
-    osd.7 node1 55 2020-04-22 19:28:38.785761
-    osd.5 node3 3 2020-04-22 19:28:34.201685
-    osd.3 node2 0 2020-04-22 19:28:34.201695
+    OSD_ID  HOST         STATE                    PG_COUNT  REPLACE  FORCE  STARTED_AT
+    2       cephadm-dev  done, waiting for purge  0         True     False  2020-07-17 13:01:43.147684
+    3       cephadm-dev  draining                 17        False    True   2020-07-17 13:01:45.162158
+    4       cephadm-dev  started                  42        False    True   2020-07-17 13:01:45.162158
 
 
 When no PGs are left on the osd, it will be decommissioned and removed from the cluster.
 
+.. note::
+    After removing an OSD, if you wipe the LVM physical volume in the device used by the removed OSD, a new OSD will be created.
+    Read information about the ``unmanaged`` parameter in :ref:`orchestrator-cli-create-osds`.
+
+Stopping OSD Removal
+--------------------
+
+You can stop the operation with
+
+::
+
+    ceph orch osd rm stop <svc_id(s)>
+
+Example::
+
+    # ceph orch osd rm stop 4
+    Stopped OSD(s) removal
+
+This will reset the initial state of the OSD and remove it from the queue.
+
 
 Replace an OSD
 -------------------
 ::
 
-    orch osd rm <svc_id>... --replace [--force]
+    orch osd rm <svc_id(s)> --replace [--force]
 
 Example::
 
@@ -232,25 +264,18 @@ The previously set the 'destroyed' flag is used to determined osd ids that will
 If you use OSDSpecs for osd deployment, your newly added disks will be assigned with the osd ids of their replaced
 counterpart, granted the new disk still match the OSDSpecs.
 
-For assistance in this process you can use the 'preview' feature:
-
-Example::
-
-
-    ceph orch apply osd --service-name <name_of_osd_spec> --preview
-    NAME                  HOST  DATA     DB WAL
-    <name_of_osd_spec>    node1 /dev/vdb -  -
+For assistance in this process you can use the '--dry-run' feature:
 
 Tip: The name of your OSDSpec can be retrieved from **ceph orch ls**
 
 Alternatively, you can use your OSDSpec file::
 
-    ceph orch apply osd -i <osd_spec_file> --preview
+    ceph orch apply osd -i <osd_spec_file> --dry-run
     NAME                  HOST  DATA     DB WAL
     <name_of_osd_spec>    node1 /dev/vdb -  -
 
 
-If this matches your anticipated behavior, just omit the --preview flag to execute the deployment.
+If this matches your anticipated behavior, just omit the --dry-run flag to execute the deployment.
 
 
 ..
@@ -289,13 +314,13 @@ error if it doesn't know how to do this transition.
 
 Update the number of monitor hosts::
 
-    ceph orch apply mon <num> [host, host:network...]
+    ceph orch apply mon <num> [host, host:network...] [--dry-run]
 
 Each host can optionally specify a network for the monitor to listen on.
 
 Update the number of manager hosts::
 
-    ceph orch apply mgr <num> [host...]
+    ceph orch apply mgr <num> [host...] [--dry-run]
 
 ..
     .. note::
@@ -323,7 +348,7 @@ services of a particular type via optional --type parameter
 Discover the status of a particular service or daemons::
 
     ceph orch ls --service_type type --service_name <name> [--refresh]
-    
+
 Export the service specs known to the orchestrator as yaml in format
 that is compatible to ``ceph orch apply -i``::
 
@@ -336,7 +361,7 @@ Daemon Status
 Print a list of all daemons known to the orchestrator::
 
     ceph orch ps [--hostname host] [--daemon_type type] [--service_name name] [--daemon_id id] [--format f] [--refresh]
-    
+
 Query the status of a particular service instance (mon, osd, mds, rgw).  For OSDs
 the id is the numeric OSD ID, for MDS services it is the file system name::
 
@@ -344,18 +369,18 @@ the id is the numeric OSD ID, for MDS services it is the file system name::
 
 
 .. _orchestrator-cli-cephfs:
-    
+
 Depoying CephFS
 ===============
 
 In order to set up a :term:`CephFS`, execute::
 
     ceph fs volume create <fs_name> <placement spec>
-    
-Where ``name`` is the name of the CephFS, ``placement`` is a 
+
+Where ``name`` is the name of the CephFS, ``placement`` is a
 :ref:`orchestrator-cli-placement-spec`.
-    
-This command will create the required Ceph pools, create the new 
+
+This command will create the required Ceph pools, create the new
 CephFS, and deploy mds servers.
 
 Stateless services (MDS/RGW/NFS/rbd-mirror/iSCSI)
@@ -369,49 +394,45 @@ The ``name`` parameter is an identifier of the group of instances:
 * a CephFS file system for a group of MDS daemons,
 * a zone name for a group of RGWs
 
-Sizing: the ``size`` parameter gives the number of daemons in the cluster
-(e.g. the number of MDS daemons for a particular CephFS file system).
-
 Creating/growing/shrinking/removing services::
 
-    ceph orch {mds,rgw} update <name> <size> [host…]
-    ceph orch {mds,rgw} add <name>
-    ceph orch nfs update <name> <size> [host…]
-    ceph orch nfs add <name> <pool> [--namespace=<namespace>]
-    ceph orch {mds,rgw,nfs} rm <name>
+    ceph orch apply mds <fs_name> [--placement=<placement>] [--dry-run]
+    ceph orch apply rgw <realm> <zone> [--subcluster=<subcluster>] [--port=<port>] [--ssl] [--placement=<placement>] [--dry-run]
+    ceph orch apply nfs <name> <pool> [--namespace=<namespace>] [--placement=<placement>] [--dry-run]
+    ceph orch rm <service_name> [--force]
 
-e.g., ``ceph orch mds update myfs 3 host1 host2 host3``
+Where ``placement`` is a :ref:`orchestrator-cli-placement-spec`.
 
-Start/stop/reload::
+e.g., ``ceph orch apply mds myfs --placement="3 host1 host2 host3"``
 
-    ceph orch service {stop,start,reload} <type> <name>
+Service Commands::
+
+    ceph orch <start|stop|restart|redeploy|reconfig> <service_name>
 
-    ceph orch daemon {start,stop,reload} <type> <daemon-id>
-    
 .. _orchestrator-cli-service-spec:
-    
+
 Service Specification
 =====================
 
-As *Service Specification* is a data structure often represented as YAML 
+As *Service Specification* is a data structure often represented as YAML
 to specify the deployment of services. For example:
 
 .. code-block:: yaml
 
     service_type: rgw
     service_id: realm.zone
-    placement: 
-      hosts: 
+    placement:
+      hosts:
         - host1
         - host2
         - host3
     spec: ...
     unmanaged: false
-        
+
 Where the properties of a service specification are the following:
 
 * ``service_type`` is the type of the service. Needs to be either a Ceph
-   service (``mon``, ``crash``, ``mds``, ``mgr``, ``osd`` or 
+   service (``mon``, ``crash``, ``mds``, ``mgr``, ``osd`` or
    ``rbd-mirror``), a gateway (``nfs`` or ``rgw``), or part of the
    monitoring stack (``alertmanager``, ``grafana``, ``node-exporter`` or
    ``prometheus``).
@@ -435,8 +456,8 @@ an optional namespace:
 
     service_type: nfs
     service_id: mynfs
-    placement: 
-      hosts: 
+    placement:
+      hosts:
         - host1
         - host2
     spec:
@@ -462,6 +483,7 @@ Many service specifications can then be applied at once using
       host_pattern: "mgr*"
     ---
     service_type: osd
+    service_id: default_drive_group
     placement:
       host_pattern: "osd*"
     data_devices:
@@ -469,12 +491,12 @@ Many service specifications can then be applied at once using
     EOF
 
 .. _orchestrator-cli-placement-spec:
-    
+
 Placement Specification
 =======================
 
 In order to allow the orchestrator to deploy a *service*, it needs to
-know how many and where it should deploy *daemons*. The orchestrator 
+know how many and where it should deploy *daemons*. The orchestrator
 defines a placement specification that can either be passed as a command line argument.
 
 Explicit placements
@@ -483,22 +505,22 @@ Explicit placements
 Daemons can be explictly placed on hosts by simply specifying them::
 
     orch apply prometheus "host1 host2 host3"
-    
+
 Or in yaml:
 
 .. code-block:: yaml
-  
+
     service_type: prometheus
     placement:
-      hosts: 
+      hosts:
         - host1
         - host2
         - host3
-     
+
 MONs and other services may require some enhanced network specifications::
 
   orch daemon add mon myhost:[v2:1.2.3.4:3000,v1:1.2.3.4:6789]=name
-  
+
 Where ``[v2:1.2.3.4:3000,v1:1.2.3.4:6789]`` is the network address of the monitor
 and ``=name`` specifies the name of the new monitor.
 
@@ -545,18 +567,18 @@ Or in yaml:
     placement:
       host_pattern: "*"
 
-    
+
 Setting a limit
 ---------------
 
 By specifying ``count``, only that number of daemons will be created::
 
     orch apply prometheus 3
-    
+
 To deploy *daemons* on a subset of hosts, also specify the count::
 
     orch apply prometheus "2 host1 host2 host3"
-    
+
 If the count is bigger than the amount of hosts, cephadm still deploys two daemons::
 
     orch apply prometheus "3 host1 host2"
@@ -568,7 +590,7 @@ Or in yaml:
     service_type: prometheus
     placement:
       count: 3
-      
+
 Or with hosts:
 
 .. code-block:: yaml
@@ -576,10 +598,30 @@ Or with hosts:
     service_type: prometheus
     placement:
       count: 2
-      hosts: 
+      hosts:
         - host1
         - host2
-        - host3 
+        - host3
+
+Updating Service Specifications
+===============================
+
+The Ceph Orchestrator maintains a declarative state of each
+service in a ``ServiceSpec``. For certain operations, like updating
+the RGW HTTP port, we need to update the existing
+specification.
+
+1. List the current ``ServiceSpec``::
+
+    ceph orch ls --service_name=<service-name> --export > myservice.yaml
+
+2. Update the yaml file::
+
+    vi myservice.yaml
+
+3. Apply the new ``ServiceSpec``::
+
+    ceph orch apply -i myservice.yaml [--dry-run]
 
 Configuring the Orchestrator CLI
 ================================
diff --git a/ceph/doc/mgr/osd_support.rst b/ceph/doc/mgr/osd_support.rst
deleted file mode 100644 (file)
index fb1037c..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-OSD Support Module
-==================
-The OSD Support module holds osd specific functionality that
-is needed by different components like the orchestrators.
-
-In current scope:
-
-* osd draining
-
-Enabling
---------
-When an orchestrator is used this should be enabled as a dependency.
-(*currently only valid for the cephadm orchestrator*)
-
-The *osd_support* module is manually enabled with::
-
-  ceph mgr module enable osd_support
-
-Commands
---------
-
-Draining
-########
-
-This mode is for draining OSDs gracefully. `Draining` in this context means gracefully emptying out OSDs by setting their
-weight to zero. An OSD is considered to be drained when no PGs are left.
-
-::
-
-  ceph osd drain $osd_id
-
-Takes a $osd_id and schedules it for draining. Since that process can take
-quite some time, the operation will be executed in the background. To query the status
-of the operation you can use:
-
-::
-
-  ceph osd drain status
-
-This gives you the status of all running operations in this format::
-
-  [{'osd_id': 0, 'pgs': 1234}, ..]
-
-If you wish to stop an OSD from being drained::
-
-  ceph osd drain stop [$osd_id]
-
-Stops all **scheduled** osd drain operations (not the operations that have been started already)
-if no $osd_ids are given. If $osd_ids are present it only operates on them.
-To stop and reset the weight of already started operations we need to save the initial weight
-(see 'Ideas for improvement')
-
-
-Ideas for improvement
-----------------------
-- add health checks set_health_checks
-- use objects to represent OSDs
-  - allows timestamps, trending information etc
-- save osd drain state (at least the osd_ids in the mon store)
-  - resume after a mgr crash
-  - save the initial weight of a osd i.e. (set to initial weight on abort)
index 8dbc44f5292ac858bcdd293cacadba26a55cf172..87296be391471de29032959bfabe51b88c9abdbb 100644 (file)
@@ -25,11 +25,65 @@ The *prometheus* module is enabled with::
 Configuration
 -------------
 
-By default the module will accept HTTP requests on port ``9283`` on all
-IPv4 and IPv6 addresses on the host.  The port and listen address are both
+.. note::
+
+    The Prometheus manager module needs to be restarted for configuration changes to be applied.
+
+By default the module will accept HTTP requests on port ``9283`` on all IPv4
+and IPv6 addresses on the host.  The port and listen address are both
 configurable with ``ceph config-key set``, with keys
-``mgr/prometheus/server_addr`` and ``mgr/prometheus/server_port``.
-This port is registered with Prometheus's `registry <https://github.com/prometheus/prometheus/wiki/Default-port-allocations>`_.
+``mgr/prometheus/server_addr`` and ``mgr/prometheus/server_port``.  This port
+is registered with Prometheus's `registry
+<https://github.com/prometheus/prometheus/wiki/Default-port-allocations>`_.
+
+::
+
+    ceph config set mgr mgr/prometheus/server_addr 0.0.0.0
+    ceph config set mgr mgr/prometheus/server_port 9283
+
+.. warning::
+
+    The ``scrape_interval`` of this module should always be set to match
+    Prometheus' scrape interval to work properly and not cause any issues.
+    
+The Prometheus manager module is, by default, configured with a scrape interval
+of 15 seconds.  The scrape interval in the module is used for caching purposes
+and to determine when a cache is stale.
+
+It is not recommended to use a scrape interval below 10 seconds.  It is
+recommended to use 15 seconds as scrape interval, though, in some cases it
+might be useful to increase the scrape interval.
+
+To set a different scrape interval in the Prometheus module, set
+``scrape_interval`` to the desired value::
+
+    ceph config set mgr mgr/prometheus/scrape_interval 20
+
+On large clusters (>1000 OSDs), the time to fetch the metrics may become
+significant.  Without the cache, the Prometheus manager module could,
+especially in conjunction with multiple Prometheus instances, overload the
+manager and lead to unresponsive or crashing Ceph manager instances.  Hence,
+the cache is enabled by default and cannot be disabled.  This means that there
+is a possibility that the cache becomes stale.  The cache is considered stale
+when the time to fetch the metrics from Ceph exceeds the configured
+``scrape_interval``.
+
+If that is the case, **a warning will be logged** and the module will either
+
+* respond with a 503 HTTP status code (service unavailable) or,
+* it will return the content of the cache, even though it might be stale.
+
+This behavior can be configured. By default, it will return a 503 HTTP status
+code (service unavailable). You can set other options using the ``ceph config
+set`` commands.
+
+To tell the module to respond with possibly stale data, set it to ``return``::
+
+    ceph config set mgr mgr/prometheus/stale_cache_strategy return
+
+To tell the module to respond with "service unavailable", set it to ``fail``::
+
+    ceph config set mgr mgr/prometheus/stale_cache_strategy fail
 
 .. _prometheus-rbd-io-statistics:
 
@@ -62,7 +116,7 @@ Statistic names and labels
 ==========================
 
 The names of the stats are exactly as Ceph names them, with
-illegal characters ``.``, ``-`` and ``::`` translated to ``_``, 
+illegal characters ``.``, ``-`` and ``::`` translated to ``_``,
 and ``ceph_`` prefixed to all names.
 
 
@@ -75,7 +129,7 @@ rocksdb stats.
 
 
 The *cluster* statistics (i.e. those global to the Ceph cluster)
-have labels appropriate to what they report on.  For example, 
+have labels appropriate to what they report on.  For example,
 metrics relating to pools have a ``pool_id`` label.
 
 
@@ -109,7 +163,7 @@ Correlating drive statistics with node_exporter
 The prometheus output from Ceph is designed to be used in conjunction
 with the generic host monitoring from the Prometheus node_exporter.
 
-To enable correlation of Ceph OSD statistics with node_exporter's 
+To enable correlation of Ceph OSD statistics with node_exporter's
 drive statistics, special series are output like this:
 
 ::
index 8a33ca4520fc996404e7110f508f9a3129068417..344599fe7aa976c5237562a5319326152830d23e 100644 (file)
@@ -258,7 +258,7 @@ scrubbing operations.
               Already running scrubs will be continued. This might be useful to reduce
               load on busy clusters.
 :Type: Boolean
-:Default: ``true``
+:Default: ``false``
 
 
 ``osd scrub thread timeout``
index bd71a2ee937f8c8918d8842ed7183868866d84d6..4b3d5a7a2f58e0289a819a2f360ec0f1549015d8 100644 (file)
@@ -688,6 +688,16 @@ paired with *PG_DAMAGED* (see above).
 
 See :doc:`pg-repair` for more information.
 
+OSD_TOO_MANY_REPAIRS
+____________________
+
+When a read error occurs and another replica is available it is used to repair
+the error immediately, so that the client can get the object data.  Scrub
+handles errors for data at rest.  In order to identify possible failing disks
+that aren't seeing scrub errors, a count of read repairs is maintained.  If
+it exceeds a config value threshold *mon_osd_warn_num_repaired* default 10,
+this health warning is generated.
+
 LARGE_OMAP_OBJECTS
 __________________
 
index 819986926c6d251e536afc6d8b3531abf6c969e8..158ae41a9e3f6f79c62cfafd5f266eb9232dfada 100644 (file)
@@ -47,6 +47,7 @@ you may write data with one API and retrieve it with the other.
    Config Reference <config-ref>
    Admin Guide <admin>
    S3 API <s3>
+   Data caching and CDN <rgw-cache.rst>
    Swift API <swift>
    Admin Ops API <adminops>
    Python binding <api>
index ef26a74ad8fcb81c9350f26215d861ad6abc4aad..f1b76b5ef78b2b3906b714f7d47fcb3e61ff0707 100644 (file)
@@ -46,6 +46,7 @@ Example request::
    {
        "input": {
            "method": "GET",
+           "subuser": "subuser",
            "user_info": {
                "user_id": "john",
                "display_name": "John"  
diff --git a/ceph/doc/radosgw/rgw-cache.rst b/ceph/doc/radosgw/rgw-cache.rst
new file mode 100644 (file)
index 0000000..d28a738
--- /dev/null
@@ -0,0 +1,127 @@
+========================== 
+RGW Data caching and CDN
+==========================
+
+.. versionadded:: Octopus
+
+.. contents::
+
+This feature adds to RGW the ability to securely cache objects and offload the workload from the cluster, using Nginx.
+After an object is accessed the first time it will be stored in the Nginx directory.
+When data is already cached, it need not be fetched from RGW. A permission check will be made against RGW to ensure the requesting user has access.
+This feature is based on some Nginx modules, ngx_http_auth_request_module, https://github.com/kaltura/nginx-aws-auth-module, Openresty for lua capabilities.     
+Currently this feature only works for GET requests and it will cache only AWSv4 requests (only s3 requests).
+The feature introduces 2 new APIs: Auth and Cache.
+
+New APIs
+-------------------------
+
+There are 2 new apis for this feature:
+
+Auth API - The cache uses this to validate that an user can access the cached data
+
+Cache API - Adds the ability to override securely Range header, that way Nginx can use it is own smart cache on top of S3:
+https://www.nginx.com/blog/smart-efficient-byte-range-caching-nginx/
+Using this API gives the ability to read ahead objects when clients asking a specific range from the object. 
+On subsequent accesses to the cached object, Nginx will satisfy requests for already-cached ranges from cache. Uncached ranges will be read from RGW (and cached).
+
+Auth API
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                
+This API Validates a specific authenticated access being made to the cache, using RGW's knowledge of the client credentials and stored access policy. 
+Returns success if the encapsulated request would be granted.
+
+Cache API
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This API is meant to allow changing signed Range headers using a privileged user, cache user.
+
+Creating cache user
+
+::
+
+$ radosgw-admin user create --uid=<uid for cache user> --display-name="cache user" --caps="amz-cache=read"
+
+This user can send to the RGW the Cache API header ``X-Amz-Cache``, this header contains the headers from the original request(before changing the Range header).
+It means that ``X-Amz-Cache`` built from several headers.
+The headers that are building the ``X-Amz-Cache`` header are separated by char with ascii code 177 and the header name and value are separated by char ascii code 178.
+The RGW will check that the cache user is an authorized user and if it is a cache user, 
+if yes it will use the ``X-Amz-Cache`` to revalidate that the user have permissions, using the headers from the X-Amz-Cache.
+During this flow the RGW will override the Range header.
+
+
+Using Nginx with RGW
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Download the source of Openresty:
+
+::
+
+$ wget https://openresty.org/download/openresty-1.15.8.3.tar.gz
+
+git clone the aws auth nginx module:
+
+::
+
+$ git clone https://github.com/kaltura/nginx-aws-auth-module
+
+untar the openresty package:
+
+::
+
+$ tar xvzf openresty-1.15.8.3.tar.gz
+$ cd openresty-1.15.8.3
+
+Compile openresty, Make sure that you have pcre lib and openssl lib:
+
+::
+
+$ sudo yum install pcre-devel openssl-devel gcc curl zlib-devel nginx
+$ ./configure --add-module=<the nginx-aws-auth-module dir> --with-http_auth_request_module --with-http_slice_module --conf-path=/etc/nginx/nginx.conf
+$ gmake -j $(nproc)
+$ sudo gmake install
+$ sudo ln -sf /usr/local/openresty/bin/openresty /usr/bin/nginx
+
+Put in-place your nginx configuration files and edit them according to your environment:
+
+All nginx conf files are under: https://github.com/ceph/ceph/tree/master/examples/rgw-cache 
+
+nginx.conf should go to /etc/nginx/nginx.conf  
+
+nginx-lua-file.lua should go to /etc/nginx/nginx-lua-file.lua
+
+nginx-default.conf should go to /etc/nginx/conf.d/nginx-default.conf  
+
+The parameters that are most likely to require adjustment according to the environment are located in the file nginx-default.conf   
+
+Modify the example values of *proxy_cache_path* and *max_size* at:
+
+`proxy_cache_path /data/cache levels=2:2:2 keys_zone=mycache:999m max_size=20G inactive=1d use_temp_path=off;` 
+
+And modify the example *server* values to point to the RGWs URIs: 
+
+`server rgw1:8000 max_fails=2 fail_timeout=5s;`
+
+`server rgw2:8000 max_fails=2 fail_timeout=5s;`
+
+`server rgw3:8000 max_fails=2 fail_timeout=5s;` 
+   
+It is important to substitute the access key and secret key located in the nginx.conf with those belong to the user with the amz-cache caps 
+
+It is possible to use nginx slicing which is a better method for streaming purposes.
+
+For using slice you should use nginx-slicing.conf and not nginx-default.conf
+
+Further information about nginx slicing:
+
+https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/#byte-range-caching
+
+
+If you do not want to use the prefetch caching, It is possible to replace nginx-default.conf with nginx-noprefetch.conf
+Using noprefetch means that if the client is sending range request of 0-4095 and then 0-4096 Nginx will cache those requests separately, So it will need to fetch those requests twice.
+
+
+Run nginx(openresty):
+::
+
+$ sudo systemctl restart nginx
index 2448a54148faee26bbac94bd59432f995f43b50b..7e9c56b3e359716967056a31bebe50a0946573ad 100644 (file)
@@ -149,9 +149,14 @@ For rpm based instructions execute the following commands:
    ::
 
        # systemctl daemon-reload
+       
+       # systemctl enable rbd-target-gw
+       # systemctl start rbd-target-gw
+
        # systemctl enable rbd-target-api
        # systemctl start rbd-target-api
 
+
 **Configuring:**
 
 gwcli will create and configure the iSCSI target and RBD images and copy the
index f7f1043264385fbb365dd56574a21e8699238c39..582ec8daeb8c59eea46d62e47031dcaac796b28e 100644 (file)
@@ -71,6 +71,10 @@ not enough capacity it will delete some cold cache files.
 
 Here are some important cache options correspond to the following settings:
 
+- ``immutable_object_cache_sock`` The path to the domain socket used for
+  communication between librbd clients and the ceph-immutable-object-cache
+  daemon.
+
 - ``immutable_object_cache_path`` The immutable object cache data directory.
 
 - ``immutable_object_cache_max_size`` The max size for immutable cache.
diff --git a/ceph/examples/rgw-cache/nginx-default.conf b/ceph/examples/rgw-cache/nginx-default.conf
new file mode 100644 (file)
index 0000000..37dbb80
--- /dev/null
@@ -0,0 +1,91 @@
+#config cache size and path to the cache directory, you should make sure that the user that is running nginx have permissions to access the cache directory
+#max_size means that Nginx will not cache more than 20G, It should be tuned to a larger number if the /data/cache is bigger
+proxy_cache_path /data/cache levels=2:2:2 keys_zone=mycache:999m max_size=20G inactive=1d use_temp_path=off;
+upstream rgws {
+    # List of all rgws (ips or resolvable names)
+    server rgw1:8000 max_fails=2 fail_timeout=5s;
+    server rgw2:8000 max_fails=2 fail_timeout=5s;
+    server rgw3:8000 max_fails=2 fail_timeout=5s;
+}
+server {
+    listen       80;
+    server_name  cacher;
+    location /authentication {
+       internal;
+        limit_except GET { deny  all; }
+        proxy_pass http://rgws$request_uri;
+           proxy_pass_request_body off;
+        proxy_set_header Host $host;
+        # setting x-rgw-auth allow the RGW the ability to only authorize the request without fetching the obj data 
+        proxy_set_header x-rgw-auth "yes";
+           proxy_set_header Authorization $http_authorization;
+           proxy_http_version 1.1;
+           proxy_method $request_method;
+        # Do not convert HEAD requests into GET requests
+           proxy_cache_convert_head off;
+           error_page 404 = @outage;
+           proxy_intercept_errors on;
+        if ($request_uri = "/"){
+            return 200;
+        }
+        # URI included with question mark is not being cached
+        if ($request_uri ~* (\?)){
+               return 200;
+        }
+    }
+    location @outage{
+      return 403;
+    }
+    location / {
+        limit_except GET { deny  all; }
+        auth_request /authentication;
+        proxy_pass http://rgws;
+        set $authvar '';
+        # if $do_not_cache is not empty the request would not be cached, this is relevant for list op for example
+        set $do_not_cache '';
+        # the IP or name of the RGWs
+        rewrite_by_lua_file /etc/nginx/nginx-lua-file.lua;
+        #proxy_set_header Authorization $http_authorization;
+        # my cache configured at the top of the file
+        proxy_cache mycache;
+        proxy_cache_lock_timeout 0s;
+        proxy_cache_lock_age 1000s;
+        proxy_http_version 1.1;
+        set $date $aws_auth_date;
+        # Getting 403 if this header not set
+        proxy_set_header Host $host;
+        # Cache all 200 OK's for 1 day
+        proxy_cache_valid 200 206 1d;
+        # Use stale cache file in all errors from upstream if we can
+        proxy_cache_use_stale updating;
+        proxy_cache_background_update on;
+        # Try to check if etag have changed, if yes, do not re-fetch from rgw the object
+        proxy_cache_revalidate on;
+        # Lock the cache so that only one request can populate it at a time
+        proxy_cache_lock on;
+        # prevent convertion of head requests to get requests
+        proxy_cache_convert_head off;
+        # Listing all buckets should not be cached 
+        if ($request_uri = "/"){
+               set $do_not_cache "no";
+               set $date $http_x_amz_date;
+        }
+        # URI including question mark are not supported to prevent bucket listing cache
+        if ($request_uri ~* (\?)){
+            set $do_not_cache "no";
+               set $date $http_x_amz_date;
+        }
+        # Only aws4 requests are being cached - As the aws auth module supporting only aws v2
+        if ($http_authorization !~* "aws4_request") {
+            set $date $http_x_amz_date;
+        }
+        # Use the original x-amz-date if the aws auth module didn't create one 
+        proxy_set_header x-amz-date $date;
+        proxy_set_header X-Amz-Cache $authvar;
+        proxy_no_cache $do_not_cache;
+        proxy_set_header Authorization $awsauth;
+        # This is on which content the nginx to use for hashing the cache keys 
+        proxy_cache_key "$request_uri$request_method$request_body";
+        client_max_body_size 20G;
+    }
+}
diff --git a/ceph/examples/rgw-cache/nginx-lua-file.lua b/ceph/examples/rgw-cache/nginx-lua-file.lua
new file mode 100644 (file)
index 0000000..d776cb7
--- /dev/null
@@ -0,0 +1,26 @@
+local check = ngx.req.get_headers()["AUTHORIZATION"]
+local uri =  ngx.var.request_uri
+local ngx_re = require "ngx.re"
+local hdrs = ngx.req.get_headers()
+--Take all signedheaders names, this for creating the X-Amz-Cache which is necessary to override range header to be able to readahead an object
+local res, err = ngx_re.split(check,"SignedHeaders=")
+local res2, err2 = ngx_re.split(res[2],",")
+local res3, err3 = ngx_re.split(res2[1],";")
+local t = {}
+local concathdrs = string.char(0x00)
+for i = 1, #res3, 1 do
+    if hdrs[res3[i]] ~= nil then
+--0xB1 is the separator between header name and value 
+        t[i] = res3[i] .. string.char(0xB1) ..  hdrs[res3[i]]
+--0xB2 is the separator between headers
+        concathdrs = concathdrs .. string.char(0xB2) .. t[i]
+    end
+end
+-- check if the authorization header is not empty
+if check ~= nil then
+    local xamzcache = concathdrs:sub(2)
+    xamzcache = xamzcache .. string.char(0xB2) .. "Authorization" .. string.char(0xB1) .. check
+        if xamzcache:find("aws4_request") ~= nil and uri ~= "/" and uri:find("?") == nil then
+            ngx.var.authvar = xamzcache
+        end
+end
diff --git a/ceph/examples/rgw-cache/nginx-noprefetch.conf b/ceph/examples/rgw-cache/nginx-noprefetch.conf
new file mode 100644 (file)
index 0000000..30661d3
--- /dev/null
@@ -0,0 +1,81 @@
+#config cache size and path to the cache directory, you should make sure that the user that is running nginx have permissions to access the cache directory
+#max_size means that Nginx will not cache more than 20G, It should be tuned to a larger number if the /data/cache is bigger
+proxy_cache_path /data/cache levels=2:2:2 keys_zone=mycache:999m max_size=20G inactive=1d use_temp_path=off;
+upstream rgws {
+    # List of all rgws (ips or resolvable names)
+    server rgw1:8000 max_fails=2 fail_timeout=5s;
+    server rgw2:8000 max_fails=2 fail_timeout=5s;
+    server rgw3:8000 max_fails=2 fail_timeout=5s;
+}
+server {
+    listen       80;
+    server_name  cacher;
+    location /authentication {
+       internal;
+        limit_except GET { deny  all; }
+        proxy_pass http://rgws$request_uri;
+           proxy_pass_request_body off;
+        proxy_set_header Host $host;
+        # setting x-rgw-auth allow the RGW the ability to only authorize the request without fetching the obj data 
+        proxy_set_header x-rgw-auth "yes";
+           proxy_set_header Authorization $http_authorization;
+           proxy_http_version 1.1;
+           proxy_method $request_method;
+        # Do not convert HEAD requests into GET requests
+           proxy_cache_convert_head off;
+           error_page 404 = @outage;
+           proxy_intercept_errors on;
+        if ($request_uri = "/"){
+            return 200;
+        }
+        # URI included with question mark is not being cached
+        if ($request_uri ~* (\?)){
+               return 200;
+        }
+    }
+    location @outage{
+      return 403;
+    }
+    location / {
+        limit_except GET { deny  all; }
+        auth_request /authentication;
+        proxy_pass http://rgws;
+        # if $do_not_cache is not empty the request would not be cached, this is relevant for list op for example
+        set $do_not_cache '';
+        # the IP or name of the RGWs
+        #proxy_set_header Authorization $http_authorization;
+        # my cache configured at the top of the file
+        proxy_cache mycache;
+        proxy_cache_lock_timeout 0s;
+        proxy_cache_lock_age 1000s;
+        proxy_http_version 1.1;
+        # Getting 403 if this header not set
+        proxy_set_header Host $host;
+        # Cache all 200 OK's for 1 day
+        proxy_cache_valid 200 206 1d;
+        # Use stale cache file in all errors from upstream if we can
+        proxy_cache_use_stale updating;
+        proxy_cache_background_update on;
+        # Try to check if etag have changed, if yes, do not re-fetch from rgw the object
+        proxy_cache_revalidate on;
+        # Lock the cache so that only one request can populate it at a time
+        proxy_cache_lock on;
+        # prevent convertion of head requests to get requests
+        proxy_cache_convert_head off;
+        # Listing all buckets should not be cached 
+        if ($request_uri = "/"){
+               set $do_not_cache "no";
+        }
+        # URI including question mark are not supported to prevent bucket listing cache
+        if ($request_uri ~* (\?)){
+            set $do_not_cache "no";
+        }
+        # Use the original x-amz-date if the aws auth module didn't create one 
+        proxy_no_cache $do_not_cache;
+        proxy_set_header Authorization $http_authorization;
+        proxy_set_header Range $http_range;
+        # This is on which content the nginx to use for hashing the cache keys 
+        proxy_cache_key "$request_uri$request_method$request_body$http_range";
+        client_max_body_size 20G;
+    }
+}
diff --git a/ceph/examples/rgw-cache/nginx-slicing.conf b/ceph/examples/rgw-cache/nginx-slicing.conf
new file mode 100644 (file)
index 0000000..1d6606d
--- /dev/null
@@ -0,0 +1,93 @@
+#config cache size and path to the cache directory, you should make sure that the user that is running nginx have permissions to access the cache directory
+#max_size means that Nginx will not cache more than 20G, It should be tuned to a larger number if the /data/cache is bigger
+proxy_cache_path /data/cache levels=2:2:2 keys_zone=mycache:999m max_size=20G inactive=1d use_temp_path=off;
+upstream rgws {
+    # List of all rgws (ips or resolvable names)
+    server rgw1:8000 max_fails=2 fail_timeout=5s;
+    server rgw2:8000 max_fails=2 fail_timeout=5s;
+    server rgw3:8000 max_fails=2 fail_timeout=5s;
+}
+server {
+    listen       80;
+    server_name  cacher;
+    location /authentication {
+       internal;
+        limit_except GET { deny  all; }
+        proxy_pass http://rgws$request_uri;
+           proxy_pass_request_body off;
+        proxy_set_header Host $host;
+        # setting x-rgw-auth allow the RGW the ability to only authorize the request without fetching the obj data 
+        proxy_set_header x-rgw-auth "yes";
+           proxy_set_header Authorization $http_authorization;
+           proxy_http_version 1.1;
+           proxy_method $request_method;
+        # Do not convert HEAD requests into GET requests
+           proxy_cache_convert_head off;
+           error_page 404 = @outage;
+           proxy_intercept_errors on;
+        if ($request_uri = "/"){
+            return 200;
+        }
+        # URI included with question mark is not being cached
+        if ($request_uri ~* (\?)){
+               return 200;
+        }
+    }
+    location @outage{
+      return 403;
+    }
+    location / {
+        slice 1m;
+        limit_except GET { deny  all; }
+        auth_request /authentication;
+        proxy_set_header Range $slice_range;
+        proxy_pass http://rgws;
+        set $authvar '';
+        # if $do_not_cache is not empty the request would not be cached, this is relevant for list op for example
+        set $do_not_cache '';
+        # the IP or name of the RGWs
+        rewrite_by_lua_file /etc/nginx/nginx-lua-file.lua;
+        #proxy_set_header Authorization $http_authorization;
+        # my cache configured at the top of the file
+        proxy_cache mycache;
+        proxy_cache_lock_timeout 0s;
+        proxy_cache_lock_age 1000s;
+        proxy_http_version 1.1;
+        set $date $aws_auth_date;
+        # Getting 403 if this header not set
+        proxy_set_header Host $host;
+        # Cache all 200 OK's for 1 day
+        proxy_cache_valid 200 206 1d;
+        # Use stale cache file in all errors from upstream if we can
+        proxy_cache_use_stale updating;
+        proxy_cache_background_update on;
+        # Try to check if etag have changed, if yes, do not re-fetch from rgw the object
+        proxy_cache_revalidate on;
+        # Lock the cache so that only one request can populate it at a time
+        proxy_cache_lock on;
+        # prevent convertion of head requests to get requests
+        proxy_cache_convert_head off;
+        # Listing all buckets should not be cached 
+        if ($request_uri = "/"){
+               set $do_not_cache "no";
+               set $date $http_x_amz_date;
+        }
+        # URI including question mark are not supported to prevent bucket listing cache
+        if ($request_uri ~* (\?)){
+            set $do_not_cache "no";
+               set $date $http_x_amz_date;
+        }
+        # Only aws4 requests are being cached - As the aws auth module supporting only aws v2
+        if ($http_authorization !~* "aws4_request") {
+            set $date $http_x_amz_date;
+        }
+        # Use the original x-amz-date if the aws auth module didn't create one 
+        proxy_set_header x-amz-date $date;
+        proxy_set_header X-Amz-Cache $authvar;
+        proxy_no_cache $do_not_cache;
+        proxy_set_header Authorization $awsauth;
+        # This is on which content the nginx to use for hashing the cache keys 
+        proxy_cache_key "$request_uri$request_method$request_body$slice_range";
+        client_max_body_size 20G;
+    }
+}
diff --git a/ceph/examples/rgw-cache/nginx.conf b/ceph/examples/rgw-cache/nginx.conf
new file mode 100644 (file)
index 0000000..f000597
--- /dev/null
@@ -0,0 +1,40 @@
+
+user  nginx;
+#Process per core
+worker_processes  auto;
+pid        /var/run/nginx.pid;
+events {
+#Number of connections per worker
+    worker_connections  1024;
+}
+
+
+http {
+    types_hash_max_size 4096;
+       lua_package_path '/usr/local/openresty/lualib/?.lua;;'; 
+       aws_auth $aws_token {
+    # access key and secret key of the cache 
+    # Please substitute with the access key and secret key of the amz-cache cap user
+        access_key cache;
+        secret_key cache;
+        service s3;
+        region us-east-1;
+    }
+    # This map is used to choose the original authorization header if the aws_auth module refuse to create one
+    map $aws_token $awsauth {
+        default $http_authorization;
+        ~. $aws_token;  # Regular expression to match any value
+    }
+    include       /etc/nginx/mime.types;
+    default_type  application/octet-stream;
+    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
+                      '$status $body_bytes_sent "$http_referer" '
+                      '"$http_user_agent" "$http_x_forwarded_for"';
+    error_log /var/log/nginx/error.log;
+    access_log  /var/log/nginx/access.log  main;
+
+    sendfile        on;
+    tcp_nodelay     on;
+    keepalive_timeout  65;
+    include /etc/nginx/conf.d/*.conf;
+}
index d9f1fb29dbb90aff1647b35ab7ba26ae5ecc8362..804aa51cc9df3defb9a3fe967f38e832ab9f32de 100644 (file)
       "steppedLine": false,
       "targets": [
         {
-          "expr": "topk(10,( 1 - (\n    avg by(instance) \n      (irate(node_cpu_seconds_total{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]) or\n       irate(node_cpu{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]))\n    )\n  )\n)",
+          "expr": "topk(10,100 * ( 1 - (\n    avg by(instance) \n      (irate(node_cpu_seconds_total{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]) or\n       irate(node_cpu{mode='idle',instance=~\"($osd_hosts|$mon_hosts|$mds_hosts|$rgw_hosts).*\"}[1m]))\n    )\n  )\n)",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}}",
index 869fdc2fa5ebbdd69dd43b9eab7e7e8589a08628..4b91df9ebce544456901a5f210e637d27db4adc9 100644 (file)
       "strokeWidth": 1,
       "targets": [
         {
-          "expr": "count by(device_class) (ceph_osd_metadata)",
+          "expr": "count by (device_class) (ceph_osd_metadata)",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device_class}}",
index f3df003ec49ec62f696df7f0585eec2432a7716c..eb15fbcb8ef4a5ed6fa876b606c345c7f5d2b4f1 100644 (file)
       ],
       "targets": [
         {
-          "expr": "topk(10, (sort((irate(ceph_rbd_write_ops[30s]) + on(image, pool, namespace) irate(ceph_rbd_read_ops[30s])))))",
+          "expr": "topk(10, (sort((irate(ceph_rbd_write_ops[30s]) + on (image, pool, namespace) irate(ceph_rbd_read_ops[30s])))))",
           "format": "table",
           "instant": true,
           "intervalFactor": 1,
index acafdd6d8d96b473b5b2018e8e157562eb76eb81..51d19bfca963e9c94e413ff82977b9b67cc8e716 100644 (file)
@@ -232,7 +232,7 @@ groups:
           (
             predict_linear(ceph_pool_stored[2d], 3600 * 24 * 5) >=
             ceph_pool_max_avail
-          ) * on(pool_id) group_right(name) ceph_pool_metadata
+          ) * on(pool_id) group_left(name) ceph_pool_metadata
         labels:
           severity: warning
           type: ceph_default
index 19fede19480293d2dadcf9e04d80b4d25be071ad..20336d06fdb28f5492d65dc4e43d9b19ea5f269a 100755 (executable)
@@ -2069,6 +2069,10 @@ function flush_pg_stats()
     seqs=''
     for osd in $ids; do
            seq=`ceph tell osd.$osd flush_pg_stats`
+           if test -z "$seq"
+           then
+               continue
+           fi
            seqs="$seqs $osd-$seq"
     done
 
index e38663c6ac769d2ad6dbcb1f89ed1411c7a6423b..667c6a702b881627cb3479559fe9bd9055236ac8 100755 (executable)
@@ -181,8 +181,8 @@ function TEST_mon_last_clean_epoch() {
 
   sleep 5
 
-  ceph tell osd.* injectargs '--osd-beacon-report-interval 10' || exit 1
-  ceph tell mon.* injectargs \
+  ceph tell 'osd.*' injectargs '--osd-beacon-report-interval 10' || exit 1
+  ceph tell 'mon.*' injectargs \
     '--mon-min-osdmap-epochs 2 --paxos-service-trim-min 1' || exit 1
 
   create_pool foo 32
diff --git a/ceph/qa/standalone/osd/bad-inc-map.sh b/ceph/qa/standalone/osd/bad-inc-map.sh
new file mode 100755 (executable)
index 0000000..cc3cf27
--- /dev/null
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
+
+mon_port=$(get_unused_port)
+
+function run() {
+    local dir=$1
+    shift
+
+    export CEPH_MON="127.0.0.1:$mon_port"
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+    set -e
+
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        setup $dir || return 1
+       $func $dir || return 1
+        teardown $dir || return 1
+    done
+}
+
+function TEST_bad_inc_map() {
+    local dir=$1
+
+    run_mon $dir a
+    run_mgr $dir x
+    run_osd $dir 0
+    run_osd $dir 1
+    run_osd $dir 2
+
+    ceph config set osd.2 osd_inject_bad_map_crc_probability 1
+
+    # osd map churn
+    create_pool foo 8
+    ceph osd pool set foo min_size 1
+    ceph osd pool set foo min_size 2
+
+    sleep 5
+
+    # make sure all the OSDs are still up
+    TIMEOUT=10 wait_for_osd up 0
+    TIMEOUT=10 wait_for_osd up 1
+    TIMEOUT=10 wait_for_osd up 2
+
+    # check for the signature in the log
+    grep "injecting map crc failure" $dir/osd.2.log || return 1
+    grep "bailing because last" $dir/osd.2.log || return 1
+
+    echo success
+
+    delete_pool foo
+    kill_daemons $dir || return 1
+}
+
+main bad-inc-map "$@"
+
+# Local Variables:
+# compile-command: "make -j4 && ../qa/run-standalone.sh bad-inc-map.sh"
+# End:
index db8f4da668e6e02831e06037c9ff1e99f6c34df9..87c6218fe0165b1b4aaacf037f25e878876ca904 100755 (executable)
@@ -152,8 +152,10 @@ function TEST_backfill_sizeup() {
        rados -p $poolname put obj$i /dev/null
     done
 
+    ceph osd set nobackfill
     ceph osd pool set $poolname size 3
-    sleep 15
+    sleep 2
+    ceph osd unset nobackfill
 
     wait_for_clean || return 1
 
@@ -202,9 +204,11 @@ function TEST_backfill_sizeup_out() {
     # Remember primary during the backfill
     local primary=$(get_primary $poolname obj1)
 
+    ceph osd set nobackfill
     ceph osd out osd.$primary
     ceph osd pool set $poolname size 3
-    sleep 15
+    sleep 2
+    ceph osd unset nobackfill
 
     wait_for_clean || return 1
 
@@ -249,8 +253,10 @@ function TEST_backfill_out() {
     # Remember primary during the backfill
     local primary=$(get_primary $poolname obj1)
 
+    ceph osd set nobackfill
     ceph osd out osd.$(get_not_primary $poolname obj1)
-    sleep 15
+    sleep 2
+    ceph osd unset nobackfill
 
     wait_for_clean || return 1
 
@@ -296,10 +302,12 @@ function TEST_backfill_down_out() {
     local primary=$(get_primary $poolname obj1)
     local otherosd=$(get_not_primary $poolname obj1)
 
+    ceph osd set nobackfill
     kill $(cat $dir/osd.${otherosd}.pid)
     ceph osd down osd.${otherosd}
     ceph osd out osd.${otherosd}
-    sleep 15
+    sleep 2
+    ceph osd unset nobackfill
 
     wait_for_clean || return 1
 
index 8dce41a98bbfd1906e277c75b1471b714de4a99d..613bfc316f7ca2c23e66ee6ba210b1559676f99a 100755 (executable)
@@ -19,6 +19,8 @@
 
 source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
 
+warnings=10
+
 function run() {
     local dir=$1
     shift
@@ -32,7 +34,8 @@ function run() {
     local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
     for func in $funcs ; do
         setup $dir || return 1
-        run_mon $dir a || return 1
+       # set warning amount in case default changes
+        run_mon $dir a --mon_osd_warn_num_repaired=$warnings || return 1
        run_mgr $dir x || return 1
        ceph osd pool create foo 8 || return 1
 
@@ -171,6 +174,86 @@ function TEST_rados_get_with_eio() {
     delete_pool $poolname
 }
 
+function TEST_rados_repair_warning() {
+    local dir=$1
+    local OBJS=$(expr $warnings + 1)
+
+    setup_osds 4 || return 1
+
+    local poolname=pool-rep
+    create_pool $poolname 1 1 || return 1
+    wait_for_clean || return 1
+
+    local poolname=pool-rep
+    local obj-base=obj-warn-
+    local inject=eio
+
+   for i in $(seq 1 $OBJS)
+    do
+      rados_put $dir $poolname ${objbase}-$i || return 1
+      inject_$inject rep data $poolname ${objbase}-$i $dir 0 || return 1
+      rados_get $dir $poolname ${objbase}-$i || return 1
+    done
+    local pgid=$(get_pg $poolname ${objbase}-1)
+
+    local object_osds=($(get_osds $poolname ${objbase}-1))
+    local primary=${object_osds[0]}
+    local bad_peer=${object_osds[1]}
+
+    COUNT=$(ceph pg $pgid query | jq '.info.stats.stat_sum.num_objects_repaired')
+    test "$COUNT" = "$OBJS" || return 1
+    flush_pg_stats
+    COUNT=$(ceph pg dump --format=json-pretty | jq ".pg_map.osd_stats_sum.num_shards_repaired")
+    test "$COUNT" = "$OBJS" || return 1
+
+    ceph health | grep -q "Too many repaired reads on 1 OSDs" || return 1
+    ceph health detail | grep -q "osd.$primary had $OBJS reads repaired" || return 1
+
+    ceph health mute OSD_TOO_MANY_REPAIRS
+    set -o pipefail
+    # Should mute this
+    ceph health | $(! grep -q "Too many repaired reads on 1 OSDs") || return 1
+    set +o pipefail
+
+    for i in $(seq 1 $OBJS)
+     do
+       inject_$inject rep data $poolname ${objbase}-$i $dir 0 || return 1
+       inject_$inject rep data $poolname ${objbase}-$i $dir 1 || return 1
+       # Force primary to pull from the bad peer, so we can repair it too!
+       set_config osd $primary osd_debug_feed_pullee $bad_peer || return 1
+       rados_get $dir $poolname ${objbase}-$i || return 1
+    done
+
+    COUNT=$(ceph pg $pgid query | jq '.info.stats.stat_sum.num_objects_repaired')
+    test "$COUNT" = "$(expr $OBJS \* 2)" || return 1
+    flush_pg_stats
+    COUNT=$(ceph pg dump --format=json-pretty | jq ".pg_map.osd_stats_sum.num_shards_repaired")
+    test "$COUNT" = "$(expr $OBJS \* 3)" || return 1
+
+    # Give mon a chance to notice additional OSD and unmute
+    # The default tick time is 5 seconds
+    CHECKTIME=10
+    LOOPS=0
+    while(true)
+    do
+      sleep 1
+      if ceph health | grep -q "Too many repaired reads on 2 OSDs"
+      then
+             break
+      fi
+      LOOPS=$(expr $LOOPS + 1)
+      if test "$LOOPS" = "$CHECKTIME"
+      then
+             echo "Too many repaired reads not seen after $CHECKTIME seconds"
+             return 1
+      fi
+    done
+    ceph health detail | grep -q "osd.$primary had $(expr $OBJS \* 2) reads repaired" || return 1
+    ceph health detail | grep -q "osd.$bad_peer had $OBJS reads repaired" || return 1
+
+    delete_pool $poolname
+}
+
 # Test backfill with unfound object
 function TEST_rep_backfill_unfound() {
     local dir=$1
index 39c95ff293ffc5f135adcf77b094aa9530b9634f..89534938063e0899595724c2be282f1c82eb5036 100755 (executable)
@@ -230,6 +230,120 @@ function TEST_scrub_extented_sleep() {
     teardown $dir || return 1
 }
 
+function _scrub_abort() {
+    local dir=$1
+    local poolname=test
+    local OSDS=3
+    local objects=1000
+    local type=$2
+
+    TESTDATA="testdata.$$"
+    if test $type = "scrub";
+    then
+      stopscrub="noscrub"
+      check="noscrub"
+    else
+      stopscrub="nodeep-scrub"
+      check="nodeep_scrub"
+    fi
+
+
+    setup $dir || return 1
+    run_mon $dir a --osd_pool_default_size=3 || return 1
+    run_mgr $dir x || return 1
+    for osd in $(seq 0 $(expr $OSDS - 1))
+    do
+      run_osd $dir $osd --osd_pool_default_pg_autoscale_mode=off \
+             --osd_deep_scrub_randomize_ratio=0.0 \
+             --osd_scrub_sleep=5.0 \
+             --osd_scrub_interval_randomize_ratio=0  || return 1
+    done
+
+    # Create a pool with a single pg
+    create_pool $poolname 1 1
+    wait_for_clean || return 1
+    poolid=$(ceph osd dump | grep "^pool.*[']${poolname}[']" | awk '{ print $2 }')
+
+    dd if=/dev/urandom of=$TESTDATA bs=1032 count=1
+    for i in `seq 1 $objects`
+    do
+        rados -p $poolname put obj${i} $TESTDATA
+    done
+    rm -f $TESTDATA
+
+    local primary=$(get_primary $poolname obj1)
+    local pgid="${poolid}.0"
+
+    ceph tell $pgid $type || return 1
+    # deep-scrub won't start without scrub noticing
+    if [ "$type" = "deep_scrub" ];
+    then
+      ceph tell $pgid scrub || return 1
+    fi
+
+    # Wait for scrubbing to start
+    set -o pipefail
+    found="no"
+    for i in $(seq 0 200)
+    do
+      flush_pg_stats
+      if ceph pg dump pgs | grep  ^$pgid| grep -q "scrubbing"
+      then
+        found="yes"
+        #ceph pg dump pgs
+        break
+      fi
+    done
+    set +o pipefail
+
+    if test $found = "no";
+    then
+      echo "Scrubbing never started"
+      return 1
+    fi
+
+    ceph osd set $stopscrub
+
+    # Wait for scrubbing to end
+    set -o pipefail
+    for i in $(seq 0 200)
+    do
+      flush_pg_stats
+      if ceph pg dump pgs | grep ^$pgid | grep -q "scrubbing"
+      then
+        continue
+      fi
+      #ceph pg dump pgs
+      break
+    done
+    set +o pipefail
+
+    sleep 5
+
+    if ! grep "$check set, aborting" $dir/osd.${primary}.log
+    then
+      echo "Abort not seen in log"
+      return 1
+    fi
+
+    local last_scrub=$(get_last_scrub_stamp $pgid)
+    ceph osd unset noscrub
+    TIMEOUT=$(($objects / 2))
+    wait_for_scrub $pgid "$last_scrub" || return 1
+
+    teardown $dir || return 1
+}
+
+function TEST_scrub_abort() {
+    local dir=$1
+    _scrub_abort $dir scrub
+}
+
+function TEST_deep_scrub_abort() {
+    local dir=$1
+    _scrub_abort $dir deep_scrub
+}
+
 main osd-scrub-test "$@"
 
 # Local Variables:
index 2790bc19b69486411643c7ca4153cad70ae030bd..527f2a7e12b0800334087b6be7470de9c38c0604 100755 (executable)
@@ -1035,7 +1035,7 @@ def main(argv):
 
     # Specify a bad --op command
     cmd = (CFSD_PREFIX + "--op oops").format(osd=ONEOSD)
-    ERRORS += test_failure(cmd, "Must provide --op (info, log, remove, mkfs, fsck, repair, export, export-remove, import, list, fix-lost, list-pgs, dump-journal, dump-super, meta-list, get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, dump-export, trim-pg-log)")
+    ERRORS += test_failure(cmd, "Must provide --op (info, log, remove, mkfs, fsck, repair, export, export-remove, import, list, fix-lost, list-pgs, dump-journal, dump-super, meta-list, get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, dump-export, trim-pg-log, statfs)")
 
     # Provide just the object param not a command
     cmd = (CFSD_PREFIX + "object").format(osd=ONEOSD)
index 30da870b25df9a46897574a336aff82c55ee2c37..d4863aa51be08daef85503b504d602c805171591 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms die on skipped message: false
+      client:
+        rbd default map options: read_from_replica=balance
index 46334fe16d09eae9201c467b77e75fe8ff74af51..6eb6c987c36d08efc732509290b0343e7d9a3618 100644 (file)
@@ -1,3 +1,7 @@
+overrides:
+  ceph:
+    log-whitelist:
+      - Replacing daemon mds
 tasks:
 - cephfs_test_runner:
     fail_on_skip: false
diff --git a/ceph/qa/suites/rados/cephadm/workunits/task/test_orch_cli.yaml b/ceph/qa/suites/rados/cephadm/workunits/task/test_orch_cli.yaml
new file mode 100644 (file)
index 0000000..b628721
--- /dev/null
@@ -0,0 +1,18 @@
+roles:
+- - host.a
+  - osd.0
+  - osd.1
+  - osd.2
+  - mon.a
+  - mgr.a
+  - client.0
+tasks:
+- install:
+- cephadm:
+- cephadm.shell:
+    host.a:
+      - ceph orch apply mds a
+- cephfs_test_runner:
+    modules:
+      - tasks.cephfs.test_nfs
+      - tasks.cephadm_cases.test_cli
index 9fa956b7e8c2ed4cd9f94a9d7de27ba53f443db4..11053d6a24095072706311dab17b5ffac3b4a067 100644 (file)
@@ -19,6 +19,7 @@ tasks:
         - \(MGR_ZABBIX_
         - foo bar
         - Failed to open Telegraf
+        - evicting unresponsive client
   - cephfs_test_runner:
       modules:
         - tasks.mgr.test_module_selftest
index fd120680515981ada53e3a4f0b4d8589dd0daa28..1d5adae75877114ddcf1c9c6d0f1a59bbf6727a2 100644 (file)
@@ -24,6 +24,7 @@ tasks:
     - overall HEALTH_
     - \(POOL_APP_NOT_ENABLED\)
     - \(PG_DEGRADED\)
+    - \(OSD_TOO_MANY_REPAIRS\)
 - full_sequential:
   - exec:
       client.0:
diff --git a/ceph/qa/suites/rados/thrash/crc-failures/bad_map_crc_failure.yaml b/ceph/qa/suites/rados/thrash/crc-failures/bad_map_crc_failure.yaml
new file mode 100644 (file)
index 0000000..1e04fb3
--- /dev/null
@@ -0,0 +1,7 @@
+overrides:
+  ceph:
+    conf:
+      osd:
+        osd inject bad map crc probability: 0.1
+    log-whitelist:
+      - failed to encode map
diff --git a/ceph/qa/suites/rados/thrash/crc-failures/default.yaml b/ceph/qa/suites/rados/thrash/crc-failures/default.yaml
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/.qa
new file mode 120000 (symlink)
index 0000000..a23f7e0
--- /dev/null
@@ -0,0 +1 @@
+../../.qa
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/% b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/%
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/+ b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/openstack.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/openstack.yaml
new file mode 100644 (file)
index 0000000..b0f3b9b
--- /dev/null
@@ -0,0 +1,4 @@
+openstack:
+  - volumes: # attached to each instance
+      count: 4
+      size: 30 # GB
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/start.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/start.yaml
new file mode 100644 (file)
index 0000000..c631b0e
--- /dev/null
@@ -0,0 +1,21 @@
+meta:
+- desc: |
+   Insatll and run ceph on one node,
+   with a separate client 1.
+   Upgrade client 1 to octopus
+   Run tests against old cluster
+roles:
+- - mon.a
+  - mon.b
+  - mon.c
+  - osd.0
+  - osd.1
+  - osd.2
+  - client.0
+  - mgr.x
+- - client.1
+overrides:
+  ceph:
+    #log-whitelist:
+      #- failed to encode map
+    fs: xfs
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml
new file mode 100644 (file)
index 0000000..e875802
--- /dev/null
@@ -0,0 +1,11 @@
+tasks:
+- install:
+    branch: octopus
+    exclude_packages: ['ceph-mgr','libcephfs2','libcephfs-devel','libcephfs-dev','python34-cephfs','python34-rados']
+- print: "**** done install octopus"
+- install.upgrade:
+   exclude_packages: ['ceph-test', 'ceph-test-dbg','libcephfs1', 'python-ceph']
+   client.1:
+- print: "**** done install.upgrade to -x on client.0"
+- ceph:
+- print: "**** done ceph task"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml
new file mode 100644 (file)
index 0000000..dff6623
--- /dev/null
@@ -0,0 +1,6 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default features: 61
+
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml
new file mode 100644 (file)
index 0000000..5613d01
--- /dev/null
@@ -0,0 +1,6 @@
+overrides:
+  ceph:
+    conf:
+      client:
+        rbd default features: 1
+
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml
new file mode 100644 (file)
index 0000000..10b8653
--- /dev/null
@@ -0,0 +1,36 @@
+tasks:
+- parallel:
+  - workunit:
+      branch: octopus
+      clients:
+        client.0:
+          - rbd/notify_master.sh
+      env:
+        RBD_FEATURES: "61"
+  - workunit:
+      #The line below to change to 'pacific'
+      branch: master
+      clients:
+        client.1:
+          - rbd/notify_slave.sh
+      env:
+        RBD_FEATURES: "61"
+- print: "**** done rbd: old librbd -> new librbd"
+- parallel:
+  - workunit:
+      #The line below to change to 'pacific'
+      branch: master
+      clients:
+        client.0:
+          - rbd/notify_slave.sh
+      env:
+        RBD_FEATURES: "61"
+  - workunit:
+      #The line below to change to 'pacific'
+      branch: master
+      clients:
+        client.1:
+          - rbd/notify_master.sh
+      env:
+        RBD_FEATURES: "61"
+- print: "**** done rbd: new librbd -> old librbd"
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/.qa b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/.qa
new file mode 120000 (symlink)
index 0000000..a602a03
--- /dev/null
@@ -0,0 +1 @@
+../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/ubuntu_18.04.yaml b/ceph/qa/suites/upgrade-clients/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/ubuntu_18.04.yaml
new file mode 120000 (symlink)
index 0000000..886e87f
--- /dev/null
@@ -0,0 +1 @@
+../../../../../../distros/all/ubuntu_18.04.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/.qa b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/% b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/%
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/.qa b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/+ b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/+
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/.qa b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/openstack.yaml b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/openstack.yaml
deleted file mode 100644 (file)
index b0f3b9b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-openstack:
-  - volumes: # attached to each instance
-      count: 4
-      size: 30 # GB
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/start.yaml b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/0-cluster/start.yaml
deleted file mode 100644 (file)
index c631b0e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-meta:
-- desc: |
-   Insatll and run ceph on one node,
-   with a separate client 1.
-   Upgrade client 1 to octopus
-   Run tests against old cluster
-roles:
-- - mon.a
-  - mon.b
-  - mon.c
-  - osd.0
-  - osd.1
-  - osd.2
-  - client.0
-  - mgr.x
-- - client.1
-overrides:
-  ceph:
-    #log-whitelist:
-      #- failed to encode map
-    fs: xfs
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/.qa b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/1-install/nautilus-client-x.yaml
deleted file mode 100644 (file)
index e875802..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-tasks:
-- install:
-    branch: octopus
-    exclude_packages: ['ceph-mgr','libcephfs2','libcephfs-devel','libcephfs-dev','python34-cephfs','python34-rados']
-- print: "**** done install octopus"
-- install.upgrade:
-   exclude_packages: ['ceph-test', 'ceph-test-dbg','libcephfs1', 'python-ceph']
-   client.1:
-- print: "**** done install.upgrade to -x on client.0"
-- ceph:
-- print: "**** done ceph task"
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/defaults.yaml
deleted file mode 100644 (file)
index dff6623..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default features: 61
-
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/2-features/layering.yaml
deleted file mode 100644 (file)
index 5613d01..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      client:
-        rbd default features: 1
-
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/3-workload/rbd_notification_tests.yaml
deleted file mode 100644 (file)
index 10b8653..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-tasks:
-- parallel:
-  - workunit:
-      branch: octopus
-      clients:
-        client.0:
-          - rbd/notify_master.sh
-      env:
-        RBD_FEATURES: "61"
-  - workunit:
-      #The line below to change to 'pacific'
-      branch: master
-      clients:
-        client.1:
-          - rbd/notify_slave.sh
-      env:
-        RBD_FEATURES: "61"
-- print: "**** done rbd: old librbd -> new librbd"
-- parallel:
-  - workunit:
-      #The line below to change to 'pacific'
-      branch: master
-      clients:
-        client.0:
-          - rbd/notify_slave.sh
-      env:
-        RBD_FEATURES: "61"
-  - workunit:
-      #The line below to change to 'pacific'
-      branch: master
-      clients:
-        client.1:
-          - rbd/notify_master.sh
-      env:
-        RBD_FEATURES: "61"
-- print: "**** done rbd: new librbd -> old librbd"
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/.qa b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/.qa
deleted file mode 120000 (symlink)
index a602a03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../.qa/
\ No newline at end of file
diff --git a/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/ubuntu_18.04.yaml b/ceph/qa/suites/upgrade/client-upgrade-octopus-pacific/octopus-client-x/rbd/supported/ubuntu_18.04.yaml
deleted file mode 120000 (symlink)
index 886e87f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../distros/all/ubuntu_18.04.yaml
\ No newline at end of file
index b03f5fab7435fc799f2172dc1a0a976811cc3230..8f9b961ca03ae74d81adfcaaaaafb143f59c22ab 100644 (file)
@@ -3,7 +3,7 @@ meta:
    librbd python api tests
 tasks:
 - workunit:
-    tag: v15.2.1
+    tag: v15.2.4
     clients:
       client.0:
         - rbd/test_librbd_python.sh
index c058735aa8a27d9aee0b0a5869e62ee0f37f1e30..2516043217b7d63cdb0085c239e10257f652c571 100644 (file)
@@ -2467,6 +2467,36 @@ class CephManager:
         pgs = self.get_pg_stats()
         return self._get_num_active_down(pgs) == len(pgs)
 
+    def dump_pgs_not_active_clean(self):
+        """
+        Dumps all pgs that are not active+clean
+        """
+        pgs = self.get_pg_stats()
+        for pg in pgs:
+           if pg['state'] != 'active+clean':
+             self.log('PG %s is not active+clean' % pg['pgid'])
+             self.log(pg)
+
+    def dump_pgs_not_active_down(self):
+        """
+        Dumps all pgs that are not active or down
+        """
+        pgs = self.get_pg_stats()
+        for pg in pgs:
+           if 'active' not in pg['state'] and 'down' not in pg['state']:
+             self.log('PG %s is not active or down' % pg['pgid'])
+             self.log(pg)
+
+    def dump_pgs_not_active(self):
+        """
+        Dumps all pgs that are not active
+        """
+        pgs = self.get_pg_stats()
+        for pg in pgs:
+           if 'active' not in pg['state']:
+             self.log('PG %s is not active' % pg['pgid'])
+             self.log(pg)
+
     def wait_for_clean(self, timeout=1200):
         """
         Returns true when all pgs are clean.
@@ -2482,11 +2512,10 @@ class CephManager:
                 else:
                     self.log("no progress seen, keeping timeout for now")
                     if time.time() - start >= timeout:
-                        self.log('dumping pgs')
-                        out = self.raw_cluster_cmd('pg', 'dump')
-                        self.log(out)
+                        self.log('dumping pgs not clean')
+                        self.dump_pgs_not_active_clean()
                         assert time.time() - start < timeout, \
-                            'failed to become clean before timeout expired'
+                            'wait_for_clean: failed before timeout expired'
             cur_active_clean = self.get_num_active_clean()
             if cur_active_clean != num_active_clean:
                 start = time.time()
@@ -2568,11 +2597,10 @@ class CephManager:
                     if now - start >= timeout:
                         if self.is_recovered():
                             break
-                        self.log('dumping pgs')
-                        out = self.raw_cluster_cmd('pg', 'dump')
-                        self.log(out)
+                        self.log('dumping pgs not recovered yet')
+                        self.dump_pgs_not_active_clean()
                         assert now - start < timeout, \
-                            'failed to recover before timeout expired'
+                            'wait_for_recovery: failed before timeout expired'
             cur_active_recovered = self.get_num_active_recovered()
             if cur_active_recovered != num_active_recovered:
                 start = time.time()
@@ -2590,11 +2618,10 @@ class CephManager:
         while not self.is_active():
             if timeout is not None:
                 if time.time() - start >= timeout:
-                    self.log('dumping pgs')
-                    out = self.raw_cluster_cmd('pg', 'dump')
-                    self.log(out)
+                    self.log('dumping pgs not active')
+                    self.dump_pgs_not_active()
                     assert time.time() - start < timeout, \
-                        'failed to recover before timeout expired'
+                        'wait_for_active: failed before timeout expired'
             cur_active = self.get_num_active()
             if cur_active != num_active:
                 start = time.time()
@@ -2613,11 +2640,10 @@ class CephManager:
         while not self.is_active_or_down():
             if timeout is not None:
                 if time.time() - start >= timeout:
-                    self.log('dumping pgs')
-                    out = self.raw_cluster_cmd('pg', 'dump')
-                    self.log(out)
+                    self.log('dumping pgs not active or down')
+                    self.dump_pgs_not_active_down()
                     assert time.time() - start < timeout, \
-                        'failed to recover before timeout expired'
+                        'wait_for_active_or_down: failed before timeout expired'
             cur_active_down = self.get_num_active_down()
             if cur_active_down != num_active_down:
                 start = time.time()
@@ -2667,11 +2693,10 @@ class CephManager:
         while not self.is_active():
             if timeout is not None:
                 if time.time() - start >= timeout:
-                    self.log('dumping pgs')
-                    out = self.raw_cluster_cmd('pg', 'dump')
-                    self.log(out)
+                    self.log('dumping pgs not active')
+                    self.dump_pgs_not_active()
                     assert time.time() - start < timeout, \
-                        'failed to become active before timeout expired'
+                        'wait_till_active: failed before timeout expired'
             time.sleep(3)
         self.log("active!")
 
index a5065ba3ee1fcb231d23fe990d8f474240d2ab7a..42b6f3e9834e6804d78ada42db1c7fabc0669583 100644 (file)
@@ -1150,20 +1150,25 @@ def task(ctx, config):
     container_registry_mirror = mirrors.get('docker.io',
                                             container_registry_mirror)
 
-    if not container_image_name:
-        raise Exception("Configuration error occurred. "
-                        "The 'image' value is undefined for 'cephadm' task. "
-                        "Please provide corresponding options in the task's "
-                        "config, task 'overrides', or teuthology 'defaults' "
-                        "section.")
 
     if not hasattr(ctx.ceph[cluster_name], 'image'):
         ctx.ceph[cluster_name].image = config.get('image')
     ref = None
     if not ctx.ceph[cluster_name].image:
+        if not container_image_name:
+            raise Exception("Configuration error occurred. "
+                            "The 'image' value is undefined for 'cephadm' task. "
+                            "Please provide corresponding options in the task's "
+                            "config, task 'overrides', or teuthology 'defaults' "
+                            "section.")
         sha1 = config.get('sha1')
+        flavor = config.get('flavor', 'default')
+
         if sha1:
-            ctx.ceph[cluster_name].image = container_image_name + ':' + sha1
+            if flavor == "crimson":
+                ctx.ceph[cluster_name].image = container_image_name + ':' + sha1 + '-' + flavor
+            else:
+                ctx.ceph[cluster_name].image = container_image_name + ':' + sha1
             ref = sha1
         else:
             # hmm, fall back to branch?
diff --git a/ceph/qa/tasks/cephadm_cases/__init__.py b/ceph/qa/tasks/cephadm_cases/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/tasks/cephadm_cases/test_cli.py b/ceph/qa/tasks/cephadm_cases/test_cli.py
new file mode 100644 (file)
index 0000000..f6a7521
--- /dev/null
@@ -0,0 +1,52 @@
+import logging
+
+from tasks.mgr.mgr_test_case import MgrTestCase
+
+log = logging.getLogger(__name__)
+
+
+class TestCephadmCLI(MgrTestCase):
+    def _cmd(self, *args):
+        return self.mgr_cluster.mon_manager.raw_cluster_cmd(*args)
+
+    def _orch_cmd(self, *args):
+        return self._cmd("orch", *args)
+
+    def setUp(self):
+        super(TestCephadmCLI, self).setUp()
+
+    def test_yaml(self):
+        """
+        to prevent oddities like
+
+        >>> import yaml
+        ... from collections import OrderedDict
+        ... assert yaml.dump(OrderedDict()) == '!!python/object/apply:collections.OrderedDict\\n- []\\n'
+        """
+        out = self._orch_cmd('device', 'ls', '--format', 'yaml')
+        self.assertNotIn('!!python', out)
+
+        out = self._orch_cmd('host', 'ls', '--format', 'yaml')
+        self.assertNotIn('!!python', out)
+
+        out = self._orch_cmd('ls', '--format', 'yaml')
+        self.assertNotIn('!!python', out)
+
+        out = self._orch_cmd('ps', '--format', 'yaml')
+        self.assertNotIn('!!python', out)
+
+        out = self._orch_cmd('status', '--format', 'yaml')
+        self.assertNotIn('!!python', out)
+
+    def test_pause(self):
+        self._orch_cmd('pause')
+        self.wait_for_health('CEPHADM_PAUSED', 30)
+        self._orch_cmd('resume')
+        self.wait_for_health_clear(30)
+
+    def test_daemon_restart(self):
+        self._orch_cmd('daemon', 'stop', 'osd.0')
+        self.wait_for_health('OSD_DOWN', 30)
+        self._orch_cmd('daemon', 'start', 'osd.0')
+        self.wait_for_health_clear(30)
+        self._orch_cmd('daemon', 'restart', 'osd.0')
index e69941dfd849d7370464ccd7e0b2a1ecf3591c5e..063a6508c61eba0e4c613b9e73cb78aebcb3bf44 100644 (file)
@@ -1,4 +1,3 @@
-import time
 import json
 import logging
 from tasks.ceph_test_case import CephTestCase
@@ -7,6 +6,7 @@ import re
 
 from tasks.cephfs.fuse_mount import FuseMount
 
+from teuthology import contextutil
 from teuthology.orchestra import run
 from teuthology.orchestra.run import CommandFailedError
 from teuthology.contextutil import safe_while
@@ -265,6 +265,10 @@ class CephFSTestCase(CephTestCase):
         if core_dir:  # Non-default core_pattern with a directory in it
             # We have seen a core_pattern that looks like it's from teuthology's coredump
             # task, so proceed to clear out the core file
+            if core_dir[0] == '|':
+                log.info("Piped core dumps to program {0}, skip cleaning".format(core_dir[1:]))
+                return;
+
             log.info("Clearing core from directory: {0}".format(core_dir))
 
             # Verify that we see the expected single coredump
@@ -287,22 +291,50 @@ class CephFSTestCase(CephTestCase):
         else:
             log.info("No core_pattern directory set, nothing to clear (internal.coredump not enabled?)")
 
-    def _wait_subtrees(self, status, rank, test):
-        timeout = 30
-        pause = 2
+    def _get_subtrees(self, status=None, rank=None, path=None):
+        if path is None:
+            path = "/"
+        try:
+            with contextutil.safe_while(sleep=1, tries=3) as proceed:
+                while proceed():
+                    try:
+                        if rank == "all":
+                            subtrees = []
+                            for r in self.fs.get_ranks(status=status):
+                                s = self.fs.rank_asok(["get", "subtrees"], status=status, rank=r['rank'])
+                                s = filter(lambda s: s['auth_first'] == r['rank'] and s['auth_second'] == -2, s)
+                                subtrees += s
+                        else:
+                            subtrees = self.fs.rank_asok(["get", "subtrees"], status=status, rank=rank)
+                        subtrees = filter(lambda s: s['dir']['path'].startswith(path), subtrees)
+                        return list(subtrees)
+                    except CommandFailedError as e:
+                        # Sometimes we get transient errors
+                        if e.exitstatus == 22:
+                            pass
+                        else:
+                            raise
+        except contextutil.MaxWhileTries as e:
+            raise RuntimeError(f"could not get subtree state from rank {rank}") from e
+
+    def _wait_subtrees(self, test, status=None, rank=None, timeout=30, sleep=2, action=None, path=None):
         test = sorted(test)
-        for i in range(timeout // pause):
-            subtrees = self.fs.mds_asok(["get", "subtrees"], mds_id=status.get_rank(self.fs.id, rank)['name'])
-            subtrees = filter(lambda s: s['dir']['path'].startswith('/'), subtrees)
-            filtered = sorted([(s['dir']['path'], s['auth_first']) for s in subtrees])
-            log.info("%s =?= %s", filtered, test)
-            if filtered == test:
-                # Confirm export_pin in output is correct:
-                for s in subtrees:
-                    self.assertTrue(s['export_pin'] == s['auth_first'])
-                return subtrees
-            time.sleep(pause)
-        raise RuntimeError("rank {0} failed to reach desired subtree state".format(rank))
+        try:
+            with contextutil.safe_while(sleep=sleep, tries=timeout//sleep) as proceed:
+                while proceed():
+                    subtrees = self._get_subtrees(status=status, rank=rank, path=path)
+                    filtered = sorted([(s['dir']['path'], s['auth_first']) for s in subtrees])
+                    log.info("%s =?= %s", filtered, test)
+                    if filtered == test:
+                        # Confirm export_pin in output is correct:
+                        for s in subtrees:
+                            if s['export_pin'] >= 0:
+                                self.assertTrue(s['export_pin'] == s['auth_first'])
+                        return subtrees
+                    if action is not None:
+                        action()
+        except contextutil.MaxWhileTries as e:
+            raise RuntimeError("rank {0} failed to reach desired subtree state".format(rank)) from e
 
     def _wait_until_scrub_complete(self, path="/", recursive=True):
         out_json = self.fs.rank_tell(["scrub", "start", path] + ["recursive"] if recursive else [])
@@ -312,3 +344,26 @@ class CephFSTestCase(CephTestCase):
                 if out_json['status'] == "no active scrubs running":
                     break;
 
+    def _wait_distributed_subtrees(self, count, status=None, rank=None, path=None):
+        try:
+            with contextutil.safe_while(sleep=5, tries=20) as proceed:
+                while proceed():
+                    subtrees = self._get_subtrees(status=status, rank=rank, path=path)
+                    subtrees = list(filter(lambda s: s['distributed_ephemeral_pin'] == True, subtrees))
+                    log.info(f"len={len(subtrees)} {subtrees}")
+                    if len(subtrees) >= count:
+                        return subtrees
+        except contextutil.MaxWhileTries as e:
+            raise RuntimeError("rank {0} failed to reach desired subtree state".format(rank)) from e
+
+    def _wait_random_subtrees(self, count, status=None, rank=None, path=None):
+        try:
+            with contextutil.safe_while(sleep=5, tries=20) as proceed:
+                while proceed():
+                    subtrees = self._get_subtrees(status=status, rank=rank, path=path)
+                    subtrees = list(filter(lambda s: s['random_ephemeral_pin'] == True, subtrees))
+                    log.info(f"len={len(subtrees)} {subtrees}")
+                    if len(subtrees) >= count:
+                        return subtrees
+        except contextutil.MaxWhileTries as e:
+            raise RuntimeError("rank {0} failed to reach desired subtree state".format(rank)) from e
index 2210fa970237b33a461b3792d16d8ba7c118556d..0a9066fb60dfd15e7b877082ec21ead54b26753a 100644 (file)
@@ -223,12 +223,16 @@ class CephCluster(object):
     def json_asok(self, command, service_type, service_id, timeout=None):
         if timeout is None:
             timeout = 15*60
+        command.insert(0, '--format=json')
         proc = self.mon_manager.admin_socket(service_type, service_id, command, timeout=timeout)
-        response_data = proc.stdout.getvalue()
-        log.info("_json_asok output: {0}".format(response_data))
-        if response_data.strip():
-            return json.loads(response_data)
+        response_data = proc.stdout.getvalue().strip()
+        if len(response_data) > 0:
+            j = json.loads(response_data)
+            pretty = json.dumps(j, sort_keys=True, indent=2)
+            log.debug(f"_json_asok output\n{pretty}")
+            return j
         else:
+            log.debug("_json_asok output empty")
             return None
 
 
@@ -840,9 +844,11 @@ class Filesystem(MDSCluster):
 
         return result
 
-    def get_rank(self, rank=0, status=None):
+    def get_rank(self, rank=None, status=None):
         if status is None:
             status = self.getinfo()
+        if rank is None:
+            rank = 0
         return status.get_rank(self.id, rank)
 
     def rank_restart(self, rank=0, status=None):
@@ -1012,6 +1018,22 @@ class Filesystem(MDSCluster):
         info = self.get_rank(rank=rank, status=status)
         return json.loads(self.mon_manager.raw_cluster_cmd("tell", 'mds.{0}'.format(info['name']), *command))
 
+    def ranks_tell(self, command, status=None):
+        if status is None:
+            status = self.status()
+        out = []
+        for r in status.get_ranks(self.id):
+            result = self.rank_tell(command, rank=r['rank'], status=status)
+            out.append((r['rank'], result))
+        return sorted(out)
+
+    def ranks_perf(self, f, status=None):
+        perf = self.ranks_tell(["perf", "dump"], status=status)
+        out = []
+        for rank, perf in perf:
+            out.append((rank, f(perf)))
+        return out
+
     def read_cache(self, path, depth=None):
         cmd = ["dump", "tree", path]
         if depth is not None:
index 7d04535c8240c9b6ff69b7977d4702fc15f3dc0d..48f065051745d6863610e87769fb132a9678c164 100644 (file)
@@ -8,7 +8,7 @@ from six import StringIO
 from textwrap import dedent
 import os
 from teuthology.orchestra import run
-from teuthology.orchestra.run import CommandFailedError, ConnectionLostError
+from teuthology.orchestra.run import CommandFailedError, ConnectionLostError, Raw
 from tasks.cephfs.filesystem import Filesystem
 
 log = logging.getLogger(__name__)
@@ -197,6 +197,9 @@ class CephFSMount(object):
         p.wait()
         return six.ensure_str(p.stdout.getvalue().strip())
 
+    def run_shell_payload(self, payload, **kwargs):
+        return self.run_shell(["bash", "-c", Raw(f"'{payload}'")], **kwargs)
+
     def run_shell(self, args, wait=True, stdin=None, check_status=True,
                   omit_sudo=True):
         if isinstance(args, str):
index 9f8aa5decf957387bbac87985ca1f929437f702a..12ee909a6bc1ef6bbcfe0eeba24c7c750b72c4be 100644 (file)
@@ -636,7 +636,7 @@ class TestClientRecovery(CephFSTestCase):
         self.mount_a.umount_wait()
 
         if isinstance(self.mount_a, FuseMount):
-            self.skipTest("Not implemented in FUSE client yet")
+            self.mount_a.mount(mount_options=['--client_reconnect_stale=1', '--fuse_disable_pagecache=1'])
         else:
             try:
                 self.mount_a.mount(mount_options=['recover_session=clean'])
index abaf92e6bdae138fa3b5b1183392e6bd0140d466..3cced538de093a28b78fd5495597417364dde1cd 100644 (file)
@@ -1,7 +1,9 @@
 import logging
+import random
 import time
 from tasks.cephfs.fuse_mount import FuseMount
 from tasks.cephfs.cephfs_test_case import CephFSTestCase
+from teuthology.orchestra.run import CommandFailedError
 
 log = logging.getLogger(__name__)
 
@@ -9,123 +11,126 @@ class TestExports(CephFSTestCase):
     MDSS_REQUIRED = 2
     CLIENTS_REQUIRED = 2
 
-    def test_export_pin(self):
+    def test_session_race(self):
+        """
+        Test session creation race.
+
+        See: https://tracker.ceph.com/issues/24072#change-113056
+        """
+
         self.fs.set_max_mds(2)
-        self.fs.wait_for_daemons()
+        status = self.fs.wait_for_daemons()
 
-        status = self.fs.status()
+        rank1 = self.fs.get_rank(rank=1, status=status)
 
-        self.mount_a.run_shell(["mkdir", "-p", "1/2/3"])
-        self._wait_subtrees(status, 0, [])
+        # Create a directory that is pre-exported to rank 1
+        self.mount_a.run_shell(["mkdir", "-p", "a/aa"])
+        self.mount_a.setfattr("a", "ceph.dir.pin", "1")
+        self._wait_subtrees([('/a', 1)], status=status, rank=1)
 
-        # NOP
-        self.mount_a.setfattr("1", "ceph.dir.pin", "-1")
-        self._wait_subtrees(status, 0, [])
+        # Now set the mds config to allow the race
+        self.fs.rank_asok(["config", "set", "mds_inject_migrator_session_race", "true"], rank=1)
 
-        # NOP (rank < -1)
-        self.mount_a.setfattr("1", "ceph.dir.pin", "-2341")
-        self._wait_subtrees(status, 0, [])
+        # Now create another directory and try to export it
+        self.mount_b.run_shell(["mkdir", "-p", "b/bb"])
+        self.mount_b.setfattr("b", "ceph.dir.pin", "1")
 
-        # pin /1 to rank 1
-        self.mount_a.setfattr("1", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 1, [('/1', 1)])
+        time.sleep(5)
 
-        # Check export_targets is set properly
-        status = self.fs.status()
-        log.info(status)
-        r0 = status.get_rank(self.fs.id, 0)
-        self.assertTrue(sorted(r0['export_targets']) == [1])
+        # Now turn off the race so that it doesn't wait again
+        self.fs.rank_asok(["config", "set", "mds_inject_migrator_session_race", "false"], rank=1)
 
-        # redundant pin /1/2 to rank 1
-        self.mount_a.setfattr("1/2", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 1, [('/1', 1), ('/1/2', 1)])
+        # Now try to create a session with rank 1 by accessing a dir known to
+        # be there, if buggy, this should cause the rank 1 to crash:
+        self.mount_b.run_shell(["ls", "a"])
 
-        # change pin /1/2 to rank 0
-        self.mount_a.setfattr("1/2", "ceph.dir.pin", "0")
-        self._wait_subtrees(status, 1, [('/1', 1), ('/1/2', 0)])
-        self._wait_subtrees(status, 0, [('/1', 1), ('/1/2', 0)])
+        # Check if rank1 changed (standby tookover?)
+        new_rank1 = self.fs.get_rank(rank=1)
+        self.assertEqual(rank1['gid'], new_rank1['gid'])
 
-        # change pin /1/2/3 to (presently) non-existent rank 2
-        self.mount_a.setfattr("1/2/3", "ceph.dir.pin", "2")
-        self._wait_subtrees(status, 0, [('/1', 1), ('/1/2', 0)])
-        self._wait_subtrees(status, 1, [('/1', 1), ('/1/2', 0)])
+class TestExportPin(CephFSTestCase):
+    MDSS_REQUIRED = 3
+    CLIENTS_REQUIRED = 1
 
-        # change pin /1/2 back to rank 1
-        self.mount_a.setfattr("1/2", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 1, [('/1', 1), ('/1/2', 1)])
+    def setUp(self):
+        CephFSTestCase.setUp(self)
 
-        # add another directory pinned to 1
-        self.mount_a.run_shell(["mkdir", "-p", "1/4/5"])
-        self.mount_a.setfattr("1/4/5", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 1, [('/1', 1), ('/1/2', 1), ('/1/4/5', 1)])
+        self.fs.set_max_mds(3)
+        self.status = self.fs.wait_for_daemons()
 
-        # change pin /1 to 0
-        self.mount_a.setfattr("1", "ceph.dir.pin", "0")
-        self._wait_subtrees(status, 0, [('/1', 0), ('/1/2', 1), ('/1/4/5', 1)])
+        self.mount_a.run_shell_payload("mkdir -p 1/2/3/4")
 
-        # change pin /1/2 to default (-1); does the subtree root properly respect it's parent pin?
-        self.mount_a.setfattr("1/2", "ceph.dir.pin", "-1")
-        self._wait_subtrees(status, 0, [('/1', 0), ('/1/4/5', 1)])
-
-        if len(list(status.get_standbys())):
-            self.fs.set_max_mds(3)
-            self.fs.wait_for_state('up:active', rank=2)
-            self._wait_subtrees(status, 0, [('/1', 0), ('/1/4/5', 1), ('/1/2/3', 2)])
-
-            # Check export_targets is set properly
-            status = self.fs.status()
-            log.info(status)
-            r0 = status.get_rank(self.fs.id, 0)
-            self.assertTrue(sorted(r0['export_targets']) == [1,2])
-            r1 = status.get_rank(self.fs.id, 1)
-            self.assertTrue(sorted(r1['export_targets']) == [0])
-            r2 = status.get_rank(self.fs.id, 2)
-            self.assertTrue(sorted(r2['export_targets']) == [])
-
-        # Test rename
-        self.mount_a.run_shell(["mkdir", "-p", "a/b", "aa/bb"])
-        self.mount_a.setfattr("a", "ceph.dir.pin", "1")
-        self.mount_a.setfattr("aa/bb", "ceph.dir.pin", "0")
-        if (len(self.fs.get_active_names()) > 2):
-            self._wait_subtrees(status, 0, [('/1', 0), ('/1/4/5', 1), ('/1/2/3', 2), ('/a', 1), ('/aa/bb', 0)])
-        else:
-            self._wait_subtrees(status, 0, [('/1', 0), ('/1/4/5', 1), ('/a', 1), ('/aa/bb', 0)])
-        self.mount_a.run_shell(["mv", "aa", "a/b/"])
-        if (len(self.fs.get_active_names()) > 2):
-            self._wait_subtrees(status, 0, [('/1', 0), ('/1/4/5', 1), ('/1/2/3', 2), ('/a', 1), ('/a/b/aa/bb', 0)])
-        else:
-            self._wait_subtrees(status, 0, [('/1', 0), ('/1/4/5', 1), ('/a', 1), ('/a/b/aa/bb', 0)])
+    def test_noop(self):
+        self.mount_a.setfattr("1", "ceph.dir.pin", "-1")
+        time.sleep(30) # for something to not happen
+        self._wait_subtrees([], status=self.status)
 
-    def test_export_pin_getfattr(self):
-        self.fs.set_max_mds(2)
-        self.fs.wait_for_daemons()
+    def test_negative(self):
+        self.mount_a.setfattr("1", "ceph.dir.pin", "-2341")
+        time.sleep(30) # for something to not happen
+        self._wait_subtrees([], status=self.status)
 
-        status = self.fs.status()
+    def test_empty_pin(self):
+        self.mount_a.setfattr("1/2/3/4", "ceph.dir.pin", "1")
+        time.sleep(30) # for something to not happen
+        self._wait_subtrees([], status=self.status)
 
-        self.mount_a.run_shell(["mkdir", "-p", "1/2/3"])
-        self._wait_subtrees(status, 0, [])
+    def test_trivial(self):
+        self.mount_a.setfattr("1", "ceph.dir.pin", "1")
+        self._wait_subtrees([('/1', 1)], status=self.status, rank=1)
 
-        # pin /1 to rank 0
+    def test_export_targets(self):
         self.mount_a.setfattr("1", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 1, [('/1', 1)])
+        self._wait_subtrees([('/1', 1)], status=self.status, rank=1)
+        self.status = self.fs.status()
+        r0 = self.status.get_rank(self.fs.id, 0)
+        self.assertTrue(sorted(r0['export_targets']) == [1])
 
-        # pin /1/2 to rank 1
+    def test_redundant(self):
+        # redundant pin /1/2 to rank 1
+        self.mount_a.setfattr("1", "ceph.dir.pin", "1")
+        self._wait_subtrees([('/1', 1)], status=self.status, rank=1)
         self.mount_a.setfattr("1/2", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 1, [('/1', 1), ('/1/2', 1)])
+        self._wait_subtrees([('/1', 1), ('/1/2', 1)], status=self.status, rank=1)
 
-        # change pin /1/2 to rank 0
+    def test_reassignment(self):
+        self.mount_a.setfattr("1/2", "ceph.dir.pin", "1")
+        self._wait_subtrees([('/1/2', 1)], status=self.status, rank=1)
         self.mount_a.setfattr("1/2", "ceph.dir.pin", "0")
-        self._wait_subtrees(status, 1, [('/1', 1), ('/1/2', 0)])
-        self._wait_subtrees(status, 0, [('/1', 1), ('/1/2', 0)])
+        self._wait_subtrees([('/1/2', 0)], status=self.status, rank=0)
 
-         # change pin /1/2/3 to (presently) non-existent rank 2
+    def test_phantom_rank(self):
+        self.mount_a.setfattr("1", "ceph.dir.pin", "0")
+        self.mount_a.setfattr("1/2", "ceph.dir.pin", "10")
+        time.sleep(30) # wait for nothing weird to happen
+        self._wait_subtrees([('/1', 0)], status=self.status)
+
+    def test_nested(self):
+        self.mount_a.setfattr("1", "ceph.dir.pin", "1")
+        self.mount_a.setfattr("1/2", "ceph.dir.pin", "0")
         self.mount_a.setfattr("1/2/3", "ceph.dir.pin", "2")
-        self._wait_subtrees(status, 0, [('/1', 1), ('/1/2', 0)])
+        self._wait_subtrees([('/1', 1), ('/1/2', 0), ('/1/2/3', 2)], status=self.status, rank=2)
+
+    def test_nested_unset(self):
+        self.mount_a.setfattr("1", "ceph.dir.pin", "1")
+        self.mount_a.setfattr("1/2", "ceph.dir.pin", "2")
+        self._wait_subtrees([('/1', 1), ('/1/2', 2)], status=self.status, rank=1)
+        self.mount_a.setfattr("1/2", "ceph.dir.pin", "-1")
+        self._wait_subtrees([('/1', 1)], status=self.status, rank=1)
+
+    def test_rename(self):
+        self.mount_a.setfattr("1", "ceph.dir.pin", "1")
+        self.mount_a.run_shell_payload("mkdir -p 9/8/7")
+        self.mount_a.setfattr("9/8", "ceph.dir.pin", "0")
+        self._wait_subtrees([('/1', 1), ("/9/8", 0)], status=self.status, rank=0)
+        self.mount_a.run_shell_payload("mv 9/8 1/2")
+        self._wait_subtrees([('/1', 1), ("/1/2/8", 0)], status=self.status, rank=0)
 
-        if len(list(status.get_standbys())):
-            self.fs.set_max_mds(3)
-            self.fs.wait_for_state('up:active', rank=2)
-            self._wait_subtrees(status, 0, [('/1', 1), ('/1/2', 0), ('/1/2/3', 2)])
+    def test_getfattr(self):
+        # pin /1 to rank 0
+        self.mount_a.setfattr("1", "ceph.dir.pin", "1")
+        self.mount_a.setfattr("1/2", "ceph.dir.pin", "0")
+        self._wait_subtrees([('/1', 1), ('/1/2', 0)], status=self.status, rank=1)
 
         if not isinstance(self.mount_a, FuseMount):
             p = self.mount_a.client_remote.sh('uname -r', wait=True)
@@ -135,42 +140,373 @@ class TestExports(CephFSTestCase):
                 self.skipTest("Kernel does not support getting the extended attribute ceph.dir.pin")
         self.assertEqual(self.mount_a.getfattr("1", "ceph.dir.pin"), '1')
         self.assertEqual(self.mount_a.getfattr("1/2", "ceph.dir.pin"), '0')
-        if (len(self.fs.get_active_names()) > 2):
-            self.assertEqual(self.mount_a.getfattr("1/2/3", "ceph.dir.pin"), '2')
 
-    def test_session_race(self):
+    def test_export_pin_cache_drop(self):
+        """
+        That the export pin does not prevent empty (nothing in cache) subtree merging.
         """
-        Test session creation race.
 
-        See: https://tracker.ceph.com/issues/24072#change-113056
+        self.mount_a.setfattr("1", "ceph.dir.pin", "0")
+        self.mount_a.setfattr("1/2", "ceph.dir.pin", "1")
+        self._wait_subtrees([('/1', 0), ('/1/2', 1)], status=self.status)
+        self.mount_a.umount_wait() # release all caps
+        def _drop():
+            self.fs.ranks_tell(["cache", "drop"], status=self.status)
+        # drop cache multiple times to clear replica pins
+        self._wait_subtrees([], status=self.status, action=_drop)
+
+class TestEphemeralPins(CephFSTestCase):
+    MDSS_REQUIRED = 3
+    CLIENTS_REQUIRED = 1
+
+    def setUp(self):
+        CephFSTestCase.setUp(self)
+
+        self.config_set('mds', 'mds_export_ephemeral_random', True)
+        self.config_set('mds', 'mds_export_ephemeral_distributed', True)
+        self.config_set('mds', 'mds_export_ephemeral_random_max', 1.0)
+
+        self.mount_a.run_shell_payload("""
+set -e
+
+# Use up a random number of inode numbers so the ephemeral pinning is not the same every test.
+mkdir .inode_number_thrash
+count=$((RANDOM % 1024))
+for ((i = 0; i < count; i++)); do touch .inode_number_thrash/$i; done
+rm -rf .inode_number_thrash
+""")
+
+        self.fs.set_max_mds(3)
+        self.status = self.fs.wait_for_daemons()
+
+    def _setup_tree(self, path="tree", export=-1, distributed=False, random=0.0, count=100, wait=True):
+        return self.mount_a.run_shell_payload(f"""
+set -e
+mkdir -p {path}
+{f"setfattr -n ceph.dir.pin -v {export} {path}" if export >= 0 else ""}
+{f"setfattr -n ceph.dir.pin.distributed -v 1 {path}" if distributed else ""}
+{f"setfattr -n ceph.dir.pin.random -v {random} {path}" if random > 0.0 else ""}
+for ((i = 0; i < {count}; i++)); do
+    mkdir -p "{path}/$i"
+    echo file > "{path}/$i/file"
+done
+""", wait=wait)
+
+    def test_ephemeral_pin_dist_override(self):
+        """
+        That an ephemeral distributed pin overrides a normal export pin.
         """
 
-        self.fs.set_max_mds(2)
-        status = self.fs.wait_for_daemons()
+        self._setup_tree(distributed=True)
+        subtrees = self._wait_distributed_subtrees(100, status=self.status, rank="all")
+        for s in subtrees:
+            path = s['dir']['path']
+            if path == '/tree':
+                self.assertEqual(s['export_pin'], 0)
+                self.assertEqual(s['auth_first'], 0)
+            elif path.startswith('/tree/'):
+                self.assertEqual(s['export_pin'], -1)
+                self.assertTrue(s['distributed_ephemeral_pin'])
+
+    def test_ephemeral_pin_dist_override_pin(self):
+        """
+        That an export pin overrides an ephemerally pinned directory.
+        """
 
-        rank1 = self.fs.get_rank(rank=1, status=status)
+        self._setup_tree(distributed=True, export=0)
+        subtrees = self._wait_distributed_subtrees(100, status=self.status, rank="all", path="/tree/")
+        which = None
+        for s in subtrees:
+            if s['auth_first'] == 1:
+                path = s['dir']['path']
+                self.mount_a.setfattr(path[1:], "ceph.dir.pin", "0")
+                which = path
+                break
+        self.assertIsNotNone(which)
+        time.sleep(15)
+        subtrees = self._get_subtrees(status=self.status, rank=0)
+        for s in subtrees:
+            path = s['dir']['path']
+            if path == which:
+                self.assertEqual(s['auth_first'], 0)
+                self.assertFalse(s['distributed_ephemeral_pin'])
+                return
+        # it has been merged into /tree
+
+    def test_ephemeral_pin_dist_off(self):
+        """
+        That turning off ephemeral distributed pin merges subtrees.
+        """
 
-        # Create a directory that is pre-exported to rank 1
-        self.mount_a.run_shell(["mkdir", "-p", "a/aa"])
-        self.mount_a.setfattr("a", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 1, [('/a', 1)])
+        self._setup_tree(distributed=True, export=0)
+        self._wait_distributed_subtrees(100, status=self.status, rank="all")
+        self.mount_a.setfattr("tree", "ceph.dir.pin.distributed", "0")
+        self._wait_subtrees([('/tree', 0)], status=self.status)
 
-        # Now set the mds config to allow the race
-        self.fs.rank_asok(["config", "set", "mds_inject_migrator_session_race", "true"], rank=1)
+    def test_ephemeral_pin_dist_conf_off(self):
+        """
+        That turning off ephemeral distributed pin config prevents distribution.
+        """
 
-        # Now create another directory and try to export it
-        self.mount_b.run_shell(["mkdir", "-p", "b/bb"])
-        self.mount_b.setfattr("b", "ceph.dir.pin", "1")
+        self._setup_tree(export=0)
+        self.config_set('mds', 'mds_export_ephemeral_distributed', False)
+        self.mount_a.setfattr("tree", "ceph.dir.pin.distributed", "1")
+        time.sleep(30)
+        self._wait_subtrees([('/tree', 0)], status=self.status)
 
-        time.sleep(5)
+    def test_ephemeral_pin_dist_conf_off_merge(self):
+        """
+        That turning off ephemeral distributed pin config merges subtrees.
+        """
 
-        # Now turn off the race so that it doesn't wait again
-        self.fs.rank_asok(["config", "set", "mds_inject_migrator_session_race", "false"], rank=1)
+        self._setup_tree(distributed=True, export=0)
+        self._wait_distributed_subtrees(100, status=self.status)
+        self.config_set('mds', 'mds_export_ephemeral_distributed', False)
+        self._wait_subtrees([('/tree', 0)], timeout=60, status=self.status)
 
-        # Now try to create a session with rank 1 by accessing a dir known to
-        # be there, if buggy, this should cause the rank 1 to crash:
-        self.mount_b.run_shell(["ls", "a"])
+    def test_ephemeral_pin_dist_override_before(self):
+        """
+        That a conventional export pin overrides the distributed policy _before_ distributed policy is set.
+        """
 
-        # Check if rank1 changed (standby tookover?)
-        new_rank1 = self.fs.get_rank(rank=1)
-        self.assertEqual(rank1['gid'], new_rank1['gid'])
+        count = 10
+        self._setup_tree(count=count)
+        test = []
+        for i in range(count):
+            path = f"tree/{i}"
+            self.mount_a.setfattr(path, "ceph.dir.pin", "1")
+            test.append(("/"+path, 1))
+        self.mount_a.setfattr("tree", "ceph.dir.pin.distributed", "1")
+        time.sleep(10) # for something to not happen...
+        self._wait_subtrees(test, timeout=60, status=self.status, rank="all", path="/tree/")
+
+    def test_ephemeral_pin_dist_override_after(self):
+        """
+        That a conventional export pin overrides the distributed policy _after_ distributed policy is set.
+        """
+
+        self._setup_tree(count=10, distributed=True)
+        subtrees = self._wait_distributed_subtrees(10, status=self.status, rank="all")
+        victim = None
+        test = []
+        for s in subtrees:
+            path = s['dir']['path']
+            auth = s['auth_first']
+            if auth in (0, 2) and victim is None:
+                victim = path
+                self.mount_a.setfattr(victim[1:], "ceph.dir.pin", "1")
+                test.append((victim, 1))
+            else:
+                test.append((path, auth))
+        self.assertIsNotNone(victim)
+        self._wait_subtrees(test, status=self.status, rank="all", path="/tree/")
+
+    def test_ephemeral_pin_dist_failover(self):
+        """
+        That MDS failover does not cause unnecessary migrations.
+        """
+
+        # pin /tree so it does not export during failover
+        self._setup_tree(distributed=True, export=0)
+        self._wait_distributed_subtrees(100, status=self.status, rank="all")
+        #test = [(s['dir']['path'], s['auth_first']) for s in subtrees]
+        before = self.fs.ranks_perf(lambda p: p['mds']['exported'])
+        log.info(f"export stats: {before}")
+        self.fs.rank_fail(rank=1)
+        self.status = self.fs.wait_for_daemons()
+        time.sleep(10) # waiting for something to not happen
+        after = self.fs.ranks_perf(lambda p: p['mds']['exported'])
+        log.info(f"export stats: {after}")
+        self.assertEqual(before, after)
+
+    def test_ephemeral_pin_distribution(self):
+        """
+        That ephemerally pinned subtrees are somewhat evenly distributed.
+        """
+
+        self.fs.set_max_mds(3)
+        self.status = self.fs.wait_for_daemons()
+
+        count = 1000
+        self._setup_tree(count=count, distributed=True)
+        subtrees = self._wait_distributed_subtrees(count, status=self.status, rank="all")
+        nsubtrees = len(subtrees)
+
+        # Check if distribution is uniform
+        rank0 = list(filter(lambda x: x['auth_first'] == 0, subtrees))
+        rank1 = list(filter(lambda x: x['auth_first'] == 1, subtrees))
+        rank2 = list(filter(lambda x: x['auth_first'] == 2, subtrees))
+        self.assertGreaterEqual(len(rank0)/nsubtrees, 0.2)
+        self.assertGreaterEqual(len(rank1)/nsubtrees, 0.2)
+        self.assertGreaterEqual(len(rank2)/nsubtrees, 0.2)
+
+    def test_ephemeral_random(self):
+        """
+        That 100% randomness causes all children to be pinned.
+        """
+        self._setup_tree(random=1.0)
+        self._wait_random_subtrees(100, status=self.status, rank="all")
+
+    def test_ephemeral_random_max(self):
+        """
+        That the config mds_export_ephemeral_random_max is not exceeded.
+        """
+
+        r = 0.5
+        count = 1000
+        self._setup_tree(count=count, random=r)
+        subtrees = self._wait_random_subtrees(int(r*count*.75), status=self.status, rank="all")
+        self.config_set('mds', 'mds_export_ephemeral_random_max', 0.01)
+        self._setup_tree(path="tree/new", count=count)
+        time.sleep(30) # for something not to happen...
+        subtrees = self._get_subtrees(status=self.status, rank="all", path="tree/new/")
+        self.assertLessEqual(len(subtrees), int(.01*count*1.25))
+
+    def test_ephemeral_random_max_config(self):
+        """
+        That the config mds_export_ephemeral_random_max config rejects new OOB policies.
+        """
+
+        self.config_set('mds', 'mds_export_ephemeral_random_max', 0.01)
+        try:
+            p = self._setup_tree(count=1, random=0.02, wait=False)
+            p.wait()
+        except CommandFailedError as e:
+            log.info(f"{e}")
+            self.assertIn("Invalid", p.stderr.getvalue())
+        else:
+            raise RuntimeError("mds_export_ephemeral_random_max ignored!")
+
+    def test_ephemeral_random_dist(self):
+        """
+        That ephemeral random and distributed can coexist with each other.
+        """
+
+        self._setup_tree(random=1.0, distributed=True, export=0)
+        self._wait_distributed_subtrees(100, status=self.status)
+        self._wait_random_subtrees(100, status=self.status)
+
+    def test_ephemeral_random_pin_override_before(self):
+        """
+        That a conventional export pin overrides the random policy before creating new directories.
+        """
+
+        self._setup_tree(count=0, random=1.0)
+        self._setup_tree(path="tree/pin", count=10, export=1)
+        self._wait_subtrees([("/tree/pin", 1)], status=self.status, rank=1, path="/tree/pin")
+
+    def test_ephemeral_random_pin_override_after(self):
+        """
+        That a conventional export pin overrides the random policy after creating new directories.
+        """
+
+        count = 10
+        self._setup_tree(count=0, random=1.0)
+        self._setup_tree(path="tree/pin", count=count)
+        self._wait_random_subtrees(count+1, status=self.status, rank="all")
+        self.mount_a.setfattr("tree/pin", "ceph.dir.pin", "1")
+        self._wait_subtrees([("/tree/pin", 1)], status=self.status, rank=1, path="/tree/pin")
+
+    def test_ephemeral_randomness(self):
+        """
+        That the randomness is reasonable.
+        """
+
+        r = random.uniform(0.25, 0.75) # ratios don't work for small r!
+        count = 1000
+        self._setup_tree(count=count, random=r)
+        subtrees = self._wait_random_subtrees(int(r*count*.50), status=self.status, rank="all")
+        time.sleep(30) # for max to not be exceeded
+        subtrees = self._wait_random_subtrees(int(r*count*.50), status=self.status, rank="all")
+        self.assertLessEqual(len(subtrees), int(r*count*1.50))
+
+    def test_ephemeral_random_cache_drop(self):
+        """
+        That the random ephemeral pin does not prevent empty (nothing in cache) subtree merging.
+        """
+
+        count = 100
+        self._setup_tree(count=count, random=1.0)
+        self._wait_random_subtrees(count, status=self.status, rank="all")
+        self.mount_a.umount_wait() # release all caps
+        def _drop():
+            self.fs.ranks_tell(["cache", "drop"], status=self.status)
+        self._wait_subtrees([], status=self.status, action=_drop)
+
+    def test_ephemeral_random_failover(self):
+        """
+        That the random ephemeral pins stay pinned across MDS failover.
+        """
+
+        count = 100
+        r = 0.5
+        self._setup_tree(count=count, random=r, export=0)
+        # wait for all random subtrees to be created, not a specific count
+        time.sleep(30)
+        subtrees = self._wait_random_subtrees(1, status=self.status, rank=1)
+        test = [(s['dir']['path'], s['auth_first']) for s in subtrees]
+        before = self.fs.ranks_perf(lambda p: p['mds']['exported'])
+        log.info(f"export stats: {before}")
+        self.fs.rank_fail(rank=1)
+        self.status = self.fs.wait_for_daemons()
+        time.sleep(30) # waiting for something to not happen
+        self._wait_subtrees(test, status=self.status, rank=1)
+        after = self.fs.ranks_perf(lambda p: p['mds']['exported'])
+        log.info(f"export stats: {after}")
+        self.assertEqual(before, after)
+
+    def test_ephemeral_pin_grow_mds(self):
+        """
+        That consistent hashing works to reduce the number of migrations.
+        """
+
+        self.fs.set_max_mds(2)
+        self.status = self.fs.wait_for_daemons()
+
+        self._setup_tree(distributed=True)
+        subtrees_old = self._wait_distributed_subtrees(100, status=self.status, rank="all")
+
+        self.fs.set_max_mds(3)
+        self.status = self.fs.wait_for_daemons()
+        
+        # Sleeping for a while to allow the ephemeral pin migrations to complete
+        time.sleep(30)
+        
+        subtrees_new = self._wait_distributed_subtrees(100, status=self.status, rank="all")
+        count = 0
+        for old_subtree in subtrees_old:
+            for new_subtree in subtrees_new:
+                if (old_subtree['dir']['path'] == new_subtree['dir']['path']) and (old_subtree['auth_first'] != new_subtree['auth_first']):
+                    count = count + 1
+                    break
+
+        log.info("{0} migrations have occured due to the cluster resizing".format(count))
+        # ~50% of subtrees from the two rank will migrate to another rank
+        self.assertLessEqual((count/len(subtrees_old)), (0.5)*1.25) # with 25% overbudget
+
+    def test_ephemeral_pin_shrink_mds(self):
+        """
+        That consistent hashing works to reduce the number of migrations.
+        """
+
+        self.fs.set_max_mds(3)
+        self.status = self.fs.wait_for_daemons()
+
+        self._setup_tree(distributed=True)
+        subtrees_old = self._wait_distributed_subtrees(100, status=self.status, rank="all")
+
+        self.fs.set_max_mds(2)
+        self.status = self.fs.wait_for_daemons()
+        time.sleep(30)
+
+        subtrees_new = self._wait_distributed_subtrees(100, status=self.status, rank="all")
+        count = 0
+        for old_subtree in subtrees_old:
+            for new_subtree in subtrees_new:
+                if (old_subtree['dir']['path'] == new_subtree['dir']['path']) and (old_subtree['auth_first'] != new_subtree['auth_first']):
+                    count = count + 1
+                    break
+
+        log.info("{0} migrations have occured due to the cluster resizing".format(count))
+        # rebalancing from 3 -> 2 may cause half of rank 0/1 to move and all of rank 2
+        self.assertLessEqual((count/len(subtrees_old)), (1.0/3.0/2.0 + 1.0/3.0/2.0 + 1.0/3.0)*1.25) # aka .66 with 25% overbudget
index 61037b96d7320d3f4d48d67e2cfbf10bfdb8c324..b810e1a28eff814a4399cdc9085067f90c08c232 100644 (file)
@@ -159,11 +159,8 @@ class TestJournalRepair(CephFSTestCase):
 
         # Set max_mds to 2
         self.fs.set_max_mds(2)
-
-        # See that we have two active MDSs
-        self.wait_until_equal(lambda: len(self.fs.get_active_names()), 2, 30,
-                              reject_fn=lambda v: v > 2 or v < 1)
-        active_mds_names = self.fs.get_active_names()
+        status = self.fs.wait_for_daemons()
+        active_mds_names = self.fs.get_active_names(status=status)
 
         # Switch off any unneeded MDS daemons
         for unneeded_mds in set(self.mds_cluster.mds_ids) - set(active_mds_names):
@@ -171,27 +168,13 @@ class TestJournalRepair(CephFSTestCase):
             self.mds_cluster.mds_fail(unneeded_mds)
 
         # Create a dir on each rank
-        self.mount_a.run_shell(["mkdir", "alpha"])
-        self.mount_a.run_shell(["mkdir", "bravo"])
+        self.mount_a.run_shell_payload("mkdir {alpha,bravo} && touch {alpha,bravo}/file")
         self.mount_a.setfattr("alpha/", "ceph.dir.pin", "0")
         self.mount_a.setfattr("bravo/", "ceph.dir.pin", "1")
 
-        def subtrees_assigned():
-            got_subtrees = self.fs.mds_asok(["get", "subtrees"], mds_id=active_mds_names[0])
-
-            for s in got_subtrees:
-                if s['dir']['path'] == '/bravo':
-                    if s['auth_first'] == 1:
-                        return True
-                    else:
-                        # Should not happen
-                        raise RuntimeError("/bravo is subtree but not rank 1!")
-
-            return False
-
         # Ensure the pinning has taken effect and the /bravo dir is now
         # migrated to rank 1.
-        self.wait_until_true(subtrees_assigned, 30)
+        self._wait_subtrees([('/bravo', 1), ('/alpha', 0)], rank=0, status=status)
 
         # Do some IO (this should be split across ranks according to
         # the rank-pinned dirs)
diff --git a/ceph/qa/tasks/cephfs/test_nfs.py b/ceph/qa/tasks/cephfs/test_nfs.py
new file mode 100644 (file)
index 0000000..12d13ab
--- /dev/null
@@ -0,0 +1,495 @@
+import errno
+import json
+import time
+import logging
+from io import BytesIO
+
+from tasks.mgr.mgr_test_case import MgrTestCase
+from teuthology.exceptions import CommandFailedError
+
+log = logging.getLogger(__name__)
+
+
+# TODO Add test for cluster update when ganesha can be deployed on multiple ports.
+class TestNFS(MgrTestCase):
+    def _cmd(self, *args, stdin=''):
+        if stdin:
+            return self.mgr_cluster.mon_manager.raw_cluster_cmd(*args, stdin=stdin)
+        return self.mgr_cluster.mon_manager.raw_cluster_cmd(*args)
+
+    def _nfs_cmd(self, *args):
+        return self._cmd("nfs", *args)
+
+    def _orch_cmd(self, *args):
+        return self._cmd("orch", *args)
+
+    def _sys_cmd(self, cmd):
+        cmd[0:0] = ['sudo']
+        ret = self.ctx.cluster.run(args=cmd, check_status=False, stdout=BytesIO(), stderr=BytesIO())
+        stdout = ret[0].stdout
+        if stdout:
+            return stdout.getvalue()
+
+    def setUp(self):
+        super(TestNFS, self).setUp()
+        self.cluster_id = "test"
+        self.export_type = "cephfs"
+        self.pseudo_path = "/cephfs"
+        self.path = "/"
+        self.fs_name = "nfs-cephfs"
+        self.expected_name = "nfs.ganesha-test"
+        self.sample_export = {
+         "export_id": 1,
+         "path": self.path,
+         "cluster_id": self.cluster_id,
+         "pseudo": self.pseudo_path,
+         "access_type": "RW",
+         "squash": "no_root_squash",
+         "security_label": True,
+         "protocols": [
+           4
+         ],
+         "transports": [
+           "TCP"
+         ],
+         "fsal": {
+           "name": "CEPH",
+           "user_id": "test1",
+           "fs_name": self.fs_name,
+           "sec_label_xattr": ''
+         },
+         "clients": []
+        }
+
+    def _check_port_status(self):
+        log.info("NETSTAT")
+        self._sys_cmd(['netstat', '-tnlp'])
+
+    def _check_nfs_server_status(self):
+        res = self._sys_cmd(['systemctl', 'status', 'nfs-server'])
+        if isinstance(res, bytes) and b'Active: active' in res:
+            self._disable_nfs()
+
+    def _disable_nfs(self):
+        log.info("Disabling NFS")
+        self._sys_cmd(['systemctl', 'disable', 'nfs-server', '--now'])
+
+    def _check_nfs_status(self):
+        return self._orch_cmd('ps', '--daemon_type=nfs')
+
+    def _check_auth_ls(self, export_id=1, check_in=False):
+        '''
+        Tests export user id creation or deletion.
+        :param export_id: Denotes export number
+        :param check_in: Check specified export id
+        '''
+        output = self._cmd('auth', 'ls')
+        if check_in:
+            self.assertIn(f'client.{self.cluster_id}{export_id}', output)
+        else:
+            self.assertNotIn(f'client-{self.cluster_id}', output)
+
+    def _test_idempotency(self, cmd_func, cmd_args):
+        '''
+        Test idempotency of commands. It first runs the TestNFS test method
+        for a command and then checks the result of command run again. TestNFS
+        test method has required checks to verify that command works.
+        :param cmd_func: TestNFS method
+        :param cmd_args: nfs command arguments to be run
+        '''
+        cmd_func()
+        ret = self.mgr_cluster.mon_manager.raw_cluster_cmd_result(*cmd_args)
+        if ret != 0:
+            self.fail("Idempotency test failed")
+
+    def _test_create_cluster(self):
+        '''
+        Test single nfs cluster deployment.
+        '''
+        # Disable any running nfs ganesha daemon
+        self._check_nfs_server_status()
+        self._nfs_cmd('cluster', 'create', self.export_type, self.cluster_id)
+        # Wait for few seconds as ganesha daemon take few seconds to be deployed
+        time.sleep(8)
+        orch_output = self._check_nfs_status()
+        expected_status = 'running'
+        # Check for expected status and daemon name (nfs.ganesha-<cluster_id>)
+        if self.expected_name not in orch_output or expected_status not in orch_output:
+            self.fail("NFS Ganesha cluster could not be deployed")
+
+    def _test_delete_cluster(self):
+        '''
+        Test deletion of a single nfs cluster.
+        '''
+        self._nfs_cmd('cluster', 'delete', self.cluster_id)
+        expected_output = "No daemons reported\n"
+        # Wait for few seconds as ganesha daemon takes few seconds to be deleted
+        wait_time = 10
+        while wait_time <= 60:
+            time.sleep(wait_time)
+            orch_output = self._check_nfs_status()
+            if expected_output == orch_output:
+                return
+            wait_time += 10
+        self.fail("NFS Ganesha cluster could not be deleted")
+
+    def _test_list_cluster(self, empty=False):
+        '''
+        Test listing of deployed nfs clusters. If nfs cluster is deployed then
+        it checks for expected cluster id. Otherwise checks nothing is listed.
+        :param empty: If true it denotes no cluster is deployed.
+        '''
+        if empty:
+            cluster_id = ''
+        else:
+            cluster_id = self.cluster_id
+        nfs_output = self._nfs_cmd('cluster', 'ls')
+        self.assertEqual(cluster_id, nfs_output.strip())
+
+    def _create_export(self, export_id, create_fs=False, extra_cmd=None):
+        '''
+        Test creation of a single export.
+        :param export_id: Denotes export number
+        :param create_fs: If false filesytem exists. Otherwise create it.
+        :param extra_cmd: List of extra arguments for creating export.
+        '''
+        if create_fs:
+            self._cmd('fs', 'volume', 'create', self.fs_name)
+        export_cmd = ['nfs', 'export', 'create', 'cephfs', self.fs_name, self.cluster_id]
+        if isinstance(extra_cmd, list):
+            export_cmd.extend(extra_cmd)
+        else:
+            export_cmd.append(self.pseudo_path)
+        # Runs the nfs export create command
+        self._cmd(*export_cmd)
+        # Check if user id for export is created
+        self._check_auth_ls(export_id, check_in=True)
+        res = self._sys_cmd(['rados', '-p', 'nfs-ganesha', '-N', self.cluster_id, 'get',
+                             f'export-{export_id}', '-'])
+        # Check if export object is created
+        if res == b'':
+            self.fail("Export cannot be created")
+
+    def _create_default_export(self):
+        '''
+        Deploy a single nfs cluster and create export with default options.
+        '''
+        self._test_create_cluster()
+        self._create_export(export_id='1', create_fs=True)
+
+    def _delete_export(self):
+        '''
+        Delete an export.
+        '''
+        self._nfs_cmd('export', 'delete', self.cluster_id, self.pseudo_path)
+        self._check_auth_ls()
+
+    def _test_list_export(self):
+        '''
+        Test listing of created exports.
+        '''
+        nfs_output = json.loads(self._nfs_cmd('export', 'ls', self.cluster_id))
+        self.assertIn(self.pseudo_path, nfs_output)
+
+    def _test_list_detailed(self, sub_vol_path):
+        '''
+        Test listing of created exports with detailed option.
+        :param sub_vol_path: Denotes path of subvolume
+        '''
+        nfs_output = json.loads(self._nfs_cmd('export', 'ls', self.cluster_id, '--detailed'))
+        # Export-1 with default values (access type = rw and path = '\')
+        self.assertDictEqual(self.sample_export, nfs_output[0])
+        # Export-2 with r only
+        self.sample_export['export_id'] = 2
+        self.sample_export['pseudo'] = self.pseudo_path + '1'
+        self.sample_export['access_type'] = 'RO'
+        self.sample_export['fsal']['user_id'] = self.cluster_id + '2'
+        self.assertDictEqual(self.sample_export, nfs_output[1])
+        # Export-3 for subvolume with r only
+        self.sample_export['export_id'] = 3
+        self.sample_export['path'] = sub_vol_path
+        self.sample_export['pseudo'] = self.pseudo_path + '2'
+        self.sample_export['fsal']['user_id'] = self.cluster_id + '3'
+        self.assertDictEqual(self.sample_export, nfs_output[2])
+        # Export-4 for subvolume
+        self.sample_export['export_id'] = 4
+        self.sample_export['pseudo'] = self.pseudo_path + '3'
+        self.sample_export['access_type'] = 'RW'
+        self.sample_export['fsal']['user_id'] = self.cluster_id + '4'
+        self.assertDictEqual(self.sample_export, nfs_output[3])
+
+    def _test_get_export(self):
+        '''
+        Test fetching of created export.
+        '''
+        nfs_output = json.loads(self._nfs_cmd('export', 'get', self.cluster_id, self.pseudo_path))
+        self.assertDictEqual(self.sample_export, nfs_output)
+
+    def _check_export_obj_deleted(self, conf_obj=False):
+        '''
+        Test if export or config object are deleted successfully.
+        :param conf_obj: It denotes config object needs to be checked
+        '''
+        rados_obj_ls = self._sys_cmd(['rados', '-p', 'nfs-ganesha', '-N', self.cluster_id, 'ls'])
+
+        if b'export-' in rados_obj_ls or (conf_obj and b'conf-nfs' in rados_obj_ls):
+            self.fail("Delete export failed")
+
+    def test_create_and_delete_cluster(self):
+        '''
+        Test successful creation and deletion of the nfs cluster.
+        '''
+        self._test_create_cluster()
+        self._test_list_cluster()
+        self._test_delete_cluster()
+        # List clusters again to ensure no cluster is shown
+        self._test_list_cluster(empty=True)
+
+    def test_create_delete_cluster_idempotency(self):
+        '''
+        Test idempotency of cluster create and delete commands.
+        '''
+        self._test_idempotency(self._test_create_cluster, ['nfs', 'cluster', 'create', self.export_type,
+                                                           self.cluster_id])
+        self._test_idempotency(self._test_delete_cluster, ['nfs', 'cluster', 'delete', self.cluster_id])
+
+    def test_create_cluster_with_invalid_cluster_id(self):
+        '''
+        Test nfs cluster deployment failure with invalid cluster id.
+        '''
+        try:
+            invalid_cluster_id = '/cluster_test'  # Only [A-Za-z0-9-_.] chars are valid
+            self._nfs_cmd('cluster', 'create', self.export_type, invalid_cluster_id)
+            self.fail(f"Cluster successfully created with invalid cluster id {invalid_cluster_id}")
+        except CommandFailedError as e:
+            # Command should fail for test to pass
+            if e.exitstatus != errno.EINVAL:
+                raise
+
+    def test_create_cluster_with_invalid_export_type(self):
+        '''
+        Test nfs cluster deployment failure with invalid export type.
+        '''
+        try:
+            invalid_export_type = 'rgw'  # Only cephfs is valid
+            self._nfs_cmd('cluster', 'create', invalid_export_type, self.cluster_id)
+            self.fail(f"Cluster successfully created with invalid export type {invalid_export_type}")
+        except CommandFailedError as e:
+            # Command should fail for test to pass
+            if e.exitstatus != errno.EINVAL:
+                raise
+
+    def test_create_and_delete_export(self):
+        '''
+        Test successful creation and deletion of the cephfs export.
+        '''
+        self._create_default_export()
+        self._test_get_export()
+        self._delete_export()
+        # Check if rados export object is deleted
+        self._check_export_obj_deleted()
+        self._test_delete_cluster()
+
+    def test_create_delete_export_idempotency(self):
+        '''
+        Test idempotency of export create and delete commands.
+        '''
+        self._test_idempotency(self._create_default_export, ['nfs', 'export', 'create', 'cephfs',
+                                                             self.fs_name, self.cluster_id,
+                                                             self.pseudo_path])
+        self._test_idempotency(self._delete_export, ['nfs', 'export', 'delete', self.cluster_id,
+                                                     self.pseudo_path])
+        self._test_delete_cluster()
+
+    def test_create_multiple_exports(self):
+        '''
+        Test creating multiple exports with different access type and path.
+        '''
+        # Export-1 with default values (access type = rw and path = '\')
+        self._create_default_export()
+        # Export-2 with r only
+        self._create_export(export_id='2', extra_cmd=[self.pseudo_path+'1', '--readonly'])
+        # Export-3 for subvolume with r only
+        self._cmd('fs', 'subvolume', 'create', self.fs_name, 'sub_vol')
+        fs_path = self._cmd('fs', 'subvolume', 'getpath', self.fs_name, 'sub_vol').strip()
+        self._create_export(export_id='3', extra_cmd=[self.pseudo_path+'2', '--readonly', fs_path])
+        # Export-4 for subvolume
+        self._create_export(export_id='4', extra_cmd=[self.pseudo_path+'3', fs_path])
+        # Check if exports gets listed
+        self._test_list_detailed(fs_path)
+        self._test_delete_cluster()
+        # Check if rados ganesha conf object is deleted
+        self._check_export_obj_deleted(conf_obj=True)
+        self._check_auth_ls()
+
+    def test_exports_on_mgr_restart(self):
+        '''
+        Test export availability on restarting mgr.
+        '''
+        self._create_default_export()
+        # unload and load module will restart the mgr
+        self._unload_module("cephadm")
+        self._load_module("cephadm")
+        self._orch_cmd("set", "backend", "cephadm")
+        # Checks if created export is listed
+        self._test_list_export()
+        self._delete_export()
+        self._test_delete_cluster()
+
+    def test_export_create_with_non_existing_fsname(self):
+        '''
+        Test creating export with non-existing filesystem.
+        '''
+        try:
+            fs_name = 'nfs-test'
+            self._test_create_cluster()
+            self._nfs_cmd('export', 'create', 'cephfs', fs_name, self.cluster_id, self.pseudo_path)
+            self.fail(f"Export created with non-existing filesystem {fs_name}")
+        except CommandFailedError as e:
+            # Command should fail for test to pass
+            if e.exitstatus != errno.ENOENT:
+                raise
+        finally:
+            self._test_delete_cluster()
+
+    def test_export_create_with_non_existing_clusterid(self):
+        '''
+        Test creating cephfs export with non-existing nfs cluster.
+        '''
+        try:
+            cluster_id = 'invalidtest'
+            self._nfs_cmd('export', 'create', 'cephfs', self.fs_name, cluster_id, self.pseudo_path)
+            self.fail(f"Export created with non-existing cluster id {cluster_id}")
+        except CommandFailedError as e:
+            # Command should fail for test to pass
+            if e.exitstatus != errno.ENOENT:
+                raise
+
+    def test_export_create_with_relative_pseudo_path_and_root_directory(self):
+        '''
+        Test creating cephfs export with relative or '/' pseudo path.
+        '''
+        def check_pseudo_path(pseudo_path):
+            try:
+                self._nfs_cmd('export', 'create', 'cephfs', self.fs_name, self.cluster_id,
+                              pseudo_path)
+                self.fail(f"Export created for {pseudo_path}")
+            except CommandFailedError as e:
+                # Command should fail for test to pass
+                if e.exitstatus != errno.EINVAL:
+                    raise
+
+        self._test_create_cluster()
+        self._cmd('fs', 'volume', 'create', self.fs_name)
+        check_pseudo_path('invalidpath')
+        check_pseudo_path('/')
+        check_pseudo_path('//')
+        self._test_delete_cluster()
+
+    def test_cluster_info(self):
+        '''
+        Test cluster info outputs correct ip and hostname
+        '''
+        self._test_create_cluster()
+        info_output = json.loads(self._nfs_cmd('cluster', 'info', self.cluster_id))
+        host_details = {self.cluster_id: [{
+            "hostname": self._sys_cmd(['hostname']).decode("utf-8").strip(),
+            "ip": list(set(self._sys_cmd(['hostname', '-I']).decode("utf-8").split())),
+            "port": 2049
+            }]}
+        self.assertDictEqual(info_output, host_details)
+        self._test_delete_cluster()
+
+    def test_cluster_set_reset_user_config(self):
+        '''
+        Test cluster is created using user config and reverts back to default
+        config on reset.
+        '''
+        self._test_create_cluster()
+        time.sleep(30)
+
+        pool = 'nfs-ganesha'
+        user_id = 'test'
+        fs_name = 'user_test_fs'
+        self._cmd('fs', 'volume', 'create', fs_name)
+        time.sleep(20)
+        key = self._cmd('auth', 'get-or-create-key', f'client.{user_id}', 'mon',
+            'allow r', 'osd',
+            f'allow rw pool={pool} namespace={self.cluster_id}, allow rw tag cephfs data={fs_name}',
+            'mds', f'allow rw path={self.path}').strip()
+        config = f""" LOG {{
+        Default_log_level = FULL_DEBUG;
+        }}
+
+        EXPORT {{
+               Export_Id = 100;
+               Transports = TCP;
+               Path = /;
+               Pseudo = /ceph/;
+               Protocols = 4;
+               Access_Type = RW;
+               Attr_Expiration_Time = 0;
+               Squash = None;
+               FSAL {{
+                     Name = CEPH;
+                      Filesystem = {fs_name};
+                      User_Id = {user_id};
+                      Secret_Access_Key = '{key}';
+               }}
+        }}"""
+        #{'test': [{'hostname': 'smithi068', 'ip': ['172.21.15.68'], 'port': 2049}]}
+        info_output = json.loads(self._nfs_cmd('cluster', 'info', self.cluster_id))['test'][0]
+        mnt_cmd = ['sudo', 'mount', '-t', 'nfs', '-o', f'port={info_output["port"]}', f'{info_output["ip"][0]}:/ceph', '/mnt']
+        MNT_FAILED = 32
+        self.ctx.cluster.run(args=['sudo', 'ceph', 'nfs', 'cluster', 'config',
+            'set', self.cluster_id, '-i', '-'], stdin=config)
+        time.sleep(30)
+        log.info(self._sys_cmd(['rados', '-p', 'nfs-ganesha', '-N', self.cluster_id, 'ls']))
+        res = self._sys_cmd(['rados', '-p', pool, '-N', self.cluster_id, 'get',
+                             f'userconf-nfs.ganesha-{user_id}', '-'])
+        self.assertEqual(config, res.decode('utf-8'))
+        self.ctx.cluster.run(args=mnt_cmd)
+        self.ctx.cluster.run(args=['sudo', 'touch', '/mnt/test'])
+        out_mnt = self._sys_cmd(['sudo', 'ls', '/mnt'])
+        self.assertEqual(out_mnt,  b'test\n')
+        self.ctx.cluster.run(args=['sudo', 'umount', '/mnt'])
+        self._nfs_cmd('cluster', 'config', 'reset', self.cluster_id)
+        rados_obj_ls = self._sys_cmd(['rados', '-p', 'nfs-ganesha', '-N', self.cluster_id, 'ls'])
+        if b'conf-nfs' not in rados_obj_ls and b'userconf-nfs' in rados_obj_ls:
+            self.fail("User config not deleted")
+        time.sleep(30)
+        try:
+            self.ctx.cluster.run(args=mnt_cmd)
+        except CommandFailedError as e:
+            if e.exitstatus != MNT_FAILED:
+                raise
+        self._cmd('fs', 'volume', 'rm', fs_name, '--yes-i-really-mean-it')
+        self._test_delete_cluster()
+        time.sleep(30)
+
+    def test_cluster_set_user_config_with_non_existing_clusterid(self):
+        '''
+        Test setting user config for non-existing nfs cluster.
+        '''
+        try:
+            cluster_id = 'invalidtest'
+            self.ctx.cluster.run(args=['sudo', 'ceph', 'nfs', 'cluster',
+                'config', 'set', self.cluster_id, '-i', '-'], stdin='testing')
+            self.fail(f"User config set for non-existing cluster {cluster_id}")
+        except CommandFailedError as e:
+            # Command should fail for test to pass
+            if e.exitstatus != errno.ENOENT:
+                raise
+
+    def test_cluster_reset_user_config_with_non_existing_clusterid(self):
+        '''
+        Test resetting user config for non-existing nfs cluster.
+        '''
+        try:
+            cluster_id = 'invalidtest'
+            self._nfs_cmd('cluster', 'config', 'reset', cluster_id)
+            self.fail(f"User config reset for non-existing cluster {cluster_id}")
+        except CommandFailedError as e:
+            # Command should fail for test to pass
+            if e.exitstatus != errno.ENOENT:
+                raise
index bdcde71d095eb571b8760abce07d75aa80378fb6..87e789770b50aeb2ff2f8b718f8b323f73760c5b 100644 (file)
@@ -196,13 +196,12 @@ class TestSessionMap(CephFSTestCase):
             self.skipTest("Requires FUSE client to use is_blacklisted()")
 
         self.fs.set_max_mds(2)
-        self.fs.wait_for_daemons()
-        status = self.fs.status()
+        status = self.fs.wait_for_daemons()
 
-        self.mount_a.run_shell(["mkdir", "d0", "d1"])
+        self.mount_a.run_shell_payload("mkdir {d0,d1} && touch {d0,d1}/file")
         self.mount_a.setfattr("d0", "ceph.dir.pin", "0")
         self.mount_a.setfattr("d1", "ceph.dir.pin", "1")
-        self._wait_subtrees(status, 0, [('/d0', 0), ('/d1', 1)])
+        self._wait_subtrees([('/d0', 0), ('/d1', 1)], status=status)
 
         self.mount_a.run_shell(["touch", "d0/f0"])
         self.mount_a.run_shell(["touch", "d1/f0"])
index 0a35d99d4d636bee81e39cc7bcb0f243416cd547..40a09f3a8db2b3538165430a8d5e996d4d33e5c1 100644 (file)
@@ -55,7 +55,7 @@ class TestSnapshots(CephFSTestCase):
         # setup subtrees
         self.mount_a.run_shell(["mkdir", "-p", "d1/dir"])
         self.mount_a.setfattr("d1", "ceph.dir.pin", "1")
-        self.wait_until_true(lambda: self._check_subtree(1, '/d1', status=status), timeout=30)
+        self._wait_subtrees([("/d1", 1)], rank=1, path="/d1")
 
         last_created = self._get_last_created_snap(rank=0,status=status)
 
@@ -231,9 +231,7 @@ class TestSnapshots(CephFSTestCase):
         self.mount_a.setfattr("d0", "ceph.dir.pin", "0")
         self.mount_a.setfattr("d0/d1", "ceph.dir.pin", "1")
         self.mount_a.setfattr("d0/d2", "ceph.dir.pin", "2")
-        self.wait_until_true(lambda: self._check_subtree(2, '/d0/d2', status=status), timeout=30)
-        self.wait_until_true(lambda: self._check_subtree(1, '/d0/d1', status=status), timeout=5)
-        self.wait_until_true(lambda: self._check_subtree(0, '/d0', status=status), timeout=5)
+        self._wait_subtrees([("/d0", 0), ("/d0/d1", 1), ("/d0/d2", 2)], rank="all", status=status, path="/d0")
 
         def _check_snapclient_cache(snaps_dump, cache_dump=None, rank=0):
             if cache_dump is None:
@@ -354,11 +352,10 @@ class TestSnapshots(CephFSTestCase):
         self.fs.set_max_mds(2)
         status = self.fs.wait_for_daemons()
 
-        self.mount_a.run_shell(["mkdir", "-p", "d0/d1"])
+        self.mount_a.run_shell(["mkdir", "-p", "d0/d1/empty"])
         self.mount_a.setfattr("d0", "ceph.dir.pin", "0")
         self.mount_a.setfattr("d0/d1", "ceph.dir.pin", "1")
-        self.wait_until_true(lambda: self._check_subtree(1, '/d0/d1', status=status), timeout=30)
-        self.wait_until_true(lambda: self._check_subtree(0, '/d0', status=status), timeout=5)
+        self._wait_subtrees([("/d0", 0), ("/d0/d1", 1)], rank="all", status=status, path="/d0")
 
         self.mount_a.write_test_pattern("d0/d1/file_a", 8 * 1024 * 1024)
         self.mount_a.run_shell(["mkdir", "d0/.snap/s1"])
@@ -376,11 +373,10 @@ class TestSnapshots(CephFSTestCase):
         self.fs.set_max_mds(2)
         status = self.fs.wait_for_daemons()
 
-        self.mount_a.run_shell(["mkdir", "d0", "d1"])
+        self.mount_a.run_shell_payload("mkdir -p {d0,d1}/empty")
         self.mount_a.setfattr("d0", "ceph.dir.pin", "0")
         self.mount_a.setfattr("d1", "ceph.dir.pin", "1")
-        self.wait_until_true(lambda: self._check_subtree(1, '/d1', status=status), timeout=30)
-        self.wait_until_true(lambda: self._check_subtree(0, '/d0', status=status), timeout=5)
+        self._wait_subtrees([("/d0", 0), ("/d1", 1)], rank=0, status=status)
 
         self.mount_a.run_shell(["mkdir", "d0/d3"])
         self.mount_a.run_shell(["mkdir", "d0/.snap/s1"])
@@ -404,12 +400,11 @@ class TestSnapshots(CephFSTestCase):
         self.fs.set_max_mds(2)
         status = self.fs.wait_for_daemons()
 
-        self.mount_a.run_shell(["mkdir", "d0", "d1"])
+        self.mount_a.run_shell_payload("mkdir -p {d0,d1}/empty")
 
         self.mount_a.setfattr("d0", "ceph.dir.pin", "0")
         self.mount_a.setfattr("d1", "ceph.dir.pin", "1")
-        self.wait_until_true(lambda: self._check_subtree(1, '/d1', status=status), timeout=30)
-        self.wait_until_true(lambda: self._check_subtree(0, '/d0', status=status), timeout=5)
+        self._wait_subtrees([("/d0", 0), ("/d1", 1)], rank=0, status=status)
 
         self.mount_a.run_python(dedent("""
             import os
index a5058441e7cadbd92cdc65443c8d53d6eb5ed137..4dd70d3ee05d8643bd6bba615b31639bfb9636a9 100644 (file)
@@ -517,34 +517,16 @@ class TestStrays(CephFSTestCase):
 
         return rank_0_id, rank_1_id
 
-    def _force_migrate(self, to_id, path, watch_ino):
+    def _force_migrate(self, path, rank=1):
         """
         :param to_id: MDS id to move it to
         :param path: Filesystem path (string) to move
         :param watch_ino: Inode number to look for at destination to confirm move
         :return: None
         """
-        self.mount_a.run_shell(["setfattr", "-n", "ceph.dir.pin", "-v", "1", path])
-
-        # Poll the MDS cache dump to watch for the export completing
-        migrated = False
-        migrate_timeout = 60
-        migrate_elapsed = 0
-        while not migrated:
-            data = self.fs.mds_asok(["dump", "cache"], to_id)
-            for inode_data in data:
-                if inode_data['ino'] == watch_ino:
-                    log.debug("Found ino in cache: {0}".format(json.dumps(inode_data, indent=2)))
-                    if inode_data['is_auth'] is True:
-                        migrated = True
-                    break
-
-            if not migrated:
-                if migrate_elapsed > migrate_timeout:
-                    raise RuntimeError("Migration hasn't happened after {0}s!".format(migrate_elapsed))
-                else:
-                    migrate_elapsed += 1
-                    time.sleep(1)
+        self.mount_a.run_shell(["setfattr", "-n", "ceph.dir.pin", "-v", str(rank), path])
+        rpath = "/"+path
+        self._wait_subtrees([(rpath, rank)], rank=rank, path=rpath)
 
     def _is_stopped(self, rank):
         mds_map = self.fs.get_mds_map()
@@ -565,8 +547,7 @@ class TestStrays(CephFSTestCase):
 
         self.mount_a.create_n_files("delete_me/file", file_count)
 
-        self._force_migrate(rank_1_id, "delete_me",
-                            self.mount_a.path_to_ino("delete_me/file_0"))
+        self._force_migrate("delete_me")
 
         self.mount_a.run_shell(["rm", "-rf", Raw("delete_me/*")])
         self.mount_a.umount_wait()
@@ -610,26 +591,21 @@ class TestStrays(CephFSTestCase):
 
         # Create a non-purgeable stray in a ~mds1 stray directory
         # by doing a hard link and deleting the original file
-        self.mount_a.run_shell(["mkdir", "dir_1", "dir_2"])
-        self.mount_a.run_shell(["touch", "dir_1/original"])
-        self.mount_a.run_shell(["ln", "dir_1/original", "dir_2/linkto"])
+        self.mount_a.run_shell_payload("""
+mkdir dir_1 dir_2
+touch dir_1/original
+ln dir_1/original dir_2/linkto
+""")
 
-        self._force_migrate(rank_1_id, "dir_1",
-                            self.mount_a.path_to_ino("dir_1/original"))
+        self._force_migrate("dir_1")
+        self._force_migrate("dir_2", rank=0)
 
         # empty mds cache. otherwise mds reintegrates stray when unlink finishes
         self.mount_a.umount_wait()
-        self.fs.mds_asok(['flush', 'journal'], rank_0_id)
         self.fs.mds_asok(['flush', 'journal'], rank_1_id)
-        self.fs.mds_fail_restart()
-        self.fs.wait_for_daemons()
-
-        active_mds_names = self.fs.get_active_names()
-        rank_0_id = active_mds_names[0]
-        rank_1_id = active_mds_names[1]
+        self.fs.mds_asok(['cache', 'drop'], rank_1_id)
 
         self.mount_a.mount_wait()
-
         self.mount_a.run_shell(["rm", "-f", "dir_1/original"])
         self.mount_a.umount_wait()
 
@@ -955,8 +931,7 @@ class TestStrays(CephFSTestCase):
 
         self.mount_a.create_n_files("delete_me/file", file_count)
 
-        self._force_migrate(rank_1_id, "delete_me",
-                            self.mount_a.path_to_ino("delete_me/file_0"))
+        self._force_migrate("delete_me")
 
         begin = datetime.datetime.now()
         self.mount_a.run_shell(["rm", "-rf", Raw("delete_me/*")])
@@ -969,4 +944,3 @@ class TestStrays(CephFSTestCase):
 
         duration = (end - begin).total_seconds()
         self.assertLess(duration, (file_count * tick_period) * 0.25)
-
index 11c23605ae8c99ad6875214ae76f841030bac9f0..88fbe04cd278fe69d71a31d41aa829d44e1a77db 100644 (file)
@@ -21,6 +21,7 @@ class TestVolumes(CephFSTestCase):
 
     # for filling subvolume with data
     CLIENTS_REQUIRED = 1
+    MDSS_REQUIRED = 2
 
     # io defaults
     DEFAULT_FILE_SIZE = 1 # MB
@@ -29,6 +30,9 @@ class TestVolumes(CephFSTestCase):
     def _fs_cmd(self, *args):
         return self.mgr_cluster.mon_manager.raw_cluster_cmd("fs", *args)
 
+    def _raw_cmd(self, *args):
+        return self.mgr_cluster.mon_manager.raw_cluster_cmd(*args)
+
     def __check_clone_state(self, state, clone, clone_group=None, timo=120):
         check = 0
         args = ["clone", "status", self.volname, clone]
@@ -105,28 +109,33 @@ class TestVolumes(CephFSTestCase):
         self._verify_clone_attrs(subvolume, clone, source_group=source_group, clone_group=clone_group)
 
     def _generate_random_volume_name(self, count=1):
-        r = random.sample(range(10000), count)
-        volumes = ["{0}_{1}".format(TestVolumes.TEST_VOLUME_PREFIX, c) for c in r]
+        n = self.volume_start
+        volumes = [f"{TestVolumes.TEST_VOLUME_PREFIX}_{i:016}" for i in range(n, n+count)]
+        self.volume_start += count
         return volumes[0] if count == 1 else volumes
 
     def _generate_random_subvolume_name(self, count=1):
-        r = random.sample(range(10000), count)
-        subvolumes = ["{0}_{1}".format(TestVolumes.TEST_SUBVOLUME_PREFIX, c) for c in r]
+        n = self.subvolume_start
+        subvolumes = [f"{TestVolumes.TEST_SUBVOLUME_PREFIX}_{i:016}" for i in range(n, n+count)]
+        self.subvolume_start += count
         return subvolumes[0] if count == 1 else subvolumes
 
     def _generate_random_group_name(self, count=1):
-        r = random.sample(range(100), count)
-        groups = ["{0}_{1}".format(TestVolumes.TEST_GROUP_PREFIX, c) for c in r]
+        n = self.group_start
+        groups = [f"{TestVolumes.TEST_GROUP_PREFIX}_{i:016}" for i in range(n, n+count)]
+        self.group_start += count
         return groups[0] if count == 1 else groups
 
     def _generate_random_snapshot_name(self, count=1):
-        r = random.sample(range(100), count)
-        snaps = ["{0}_{1}".format(TestVolumes.TEST_SNAPSHOT_PREFIX, c) for c in r]
+        n = self.snapshot_start
+        snaps = [f"{TestVolumes.TEST_SNAPSHOT_PREFIX}_{i:016}" for i in range(n, n+count)]
+        self.snapshot_start += count
         return snaps[0] if count == 1 else snaps
 
     def _generate_random_clone_name(self, count=1):
-        r = random.sample(range(1000), count)
-        clones = ["{0}_{1}".format(TestVolumes.TEST_CLONE_PREFIX, c) for c in r]
+        n = self.clone_start
+        clones = [f"{TestVolumes.TEST_CLONE_PREFIX}_{i:016}" for i in range(n, n+count)]
+        self.clone_start += count
         return clones[0] if count == 1 else clones
 
     def _enable_multi_fs(self):
@@ -225,6 +234,12 @@ class TestVolumes(CephFSTestCase):
         self.vol_created = False
         self._enable_multi_fs()
         self._create_or_reuse_test_volume()
+        self.config_set('mon', 'mon_allow_pool_delete', True)
+        self.volume_start = random.randint(1, (1<<20))
+        self.subvolume_start = random.randint(1, (1<<20))
+        self.group_start = random.randint(1, (1<<20))
+        self.snapshot_start = random.randint(1, (1<<20))
+        self.clone_start = random.randint(1, (1<<20))
 
     def tearDown(self):
         if self.vol_created:
@@ -310,6 +325,54 @@ class TestVolumes(CephFSTestCase):
         else:
             raise RuntimeError("expected the 'fs volume rm' command to fail.")
 
+    def test_volume_rm_arbitrary_pool_removal(self):
+        """
+        That the arbitrary pool added to the volume out of band is removed
+        successfully on volume removal.
+        """
+        new_pool = "new_pool"
+        # add arbitrary data pool
+        self.fs.add_data_pool(new_pool)
+        vol_status = json.loads(self._fs_cmd("status", self.volname, "--format=json-pretty"))
+        self._fs_cmd("volume", "rm", self.volname, "--yes-i-really-mean-it")
+
+        #check if fs is gone
+        volumes = json.loads(self._fs_cmd("volume", "ls", "--format=json-pretty"))
+        volnames = [volume['name'] for volume in volumes]
+        self.assertNotIn(self.volname, volnames)
+
+        #check if osd pools are gone
+        pools = json.loads(self._raw_cmd("osd", "pool", "ls", "--format=json-pretty"))
+        for pool in vol_status["pools"]:
+            self.assertNotIn(pool["name"], pools)
+
+    def test_volume_rm_when_mon_delete_pool_false(self):
+        """
+        That the volume can only be removed when mon_allowd_pool_delete is set
+        to true and verify that the pools are removed after volume deletion.
+        """
+        self.config_set('mon', 'mon_allow_pool_delete', False)
+        try:
+            self._fs_cmd("volume", "rm", self.volname, "--yes-i-really-mean-it")
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EPERM,
+                             "expected the 'fs volume rm' command to fail with EPERM, "
+                             "but it failed with {0}".format(ce.exitstatus))
+        vol_status = json.loads(self._fs_cmd("status", self.volname, "--format=json-pretty"))
+        self.config_set('mon', 'mon_allow_pool_delete', True)
+        self._fs_cmd("volume", "rm", self.volname, "--yes-i-really-mean-it")
+
+        #check if fs is gone
+        volumes = json.loads(self._fs_cmd("volume", "ls", "--format=json-pretty"))
+        volnames = [volume['name'] for volume in volumes]
+        self.assertNotIn(self.volname, volnames,
+                         "volume {0} exists after removal".format(self.volname))
+        #check if pools are gone
+        pools = json.loads(self._raw_cmd("osd", "pool", "ls", "--format=json-pretty"))
+        for pool in vol_status["pools"]:
+            self.assertNotIn(pool["name"], pools,
+                             "pool {0} exists after volume removal".format(pool["name"]))
+
     ### basic subvolume operations
 
     def test_subvolume_create_and_rm(self):
@@ -592,6 +655,44 @@ class TestVolumes(CephFSTestCase):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
+    def test_subvolume_pin_export(self):
+        self.fs.set_max_mds(2)
+        status = self.fs.wait_for_daemons()
+
+        subvolume = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+        self._fs_cmd("subvolume", "pin", self.volname, subvolume, "export", "1")
+        path = self._fs_cmd("subvolume", "getpath", self.volname, subvolume)
+        path = os.path.dirname(path) # get subvolume path
+
+        self._get_subtrees(status=status, rank=1)
+        self._wait_subtrees([(path, 1)], status=status)
+
+    def test_subvolumegroup_pin_distributed(self):
+        self.fs.set_max_mds(2)
+        status = self.fs.wait_for_daemons()
+        self.config_set('mds', 'mds_export_ephemeral_distributed', True)
+
+        group = "pinme"
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        self._fs_cmd("subvolumegroup", "pin", self.volname, group, "distributed", "True")
+        # (no effect on distribution) pin the group directory to 0 so rank 0 has all subtree bounds visible
+        self._fs_cmd("subvolumegroup", "pin", self.volname, group, "export", "0")
+        subvolumes = self._generate_random_subvolume_name(10)
+        for subvolume in subvolumes:
+            self._fs_cmd("subvolume", "create", self.volname, subvolume, "--group_name", group)
+        self._wait_distributed_subtrees(10, status=status)
+
+    def test_subvolume_pin_random(self):
+        self.fs.set_max_mds(2)
+        self.fs.wait_for_daemons()
+        self.config_set('mds', 'mds_export_ephemeral_random', True)
+
+        subvolume = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+        self._fs_cmd("subvolume", "pin", self.volname, subvolume, "random", ".01")
+        # no verification
+
     def test_subvolume_create_isolated_namespace(self):
         """
         Create subvolume in separate rados namespace
@@ -792,7 +893,7 @@ class TestVolumes(CephFSTestCase):
 
         subvol_md = ["atime", "bytes_pcent", "bytes_quota", "bytes_used", "created_at", "ctime",
                      "data_pool", "gid", "mode", "mon_addrs", "mtime", "path", "pool_namespace",
-                     "type", "uid"]
+                     "type", "uid", "features"]
 
         # create subvolume
         subvolume = self._generate_random_subvolume_name()
@@ -800,37 +901,34 @@ class TestVolumes(CephFSTestCase):
 
         # get subvolume metadata
         subvol_info = json.loads(self._get_subvolume_info(self.volname, subvolume))
-        if len(subvol_info) == 0:
-            raise RuntimeError("Expected the 'fs subvolume info' command to list metadata of subvolume")
+        self.assertNotEqual(len(subvol_info), 0, "expected the 'fs subvolume info' command to list metadata of subvolume")
         for md in subvol_md:
-            if md not in subvol_info.keys():
-                raise RuntimeError("%s not present in the metadata of subvolume" % md)
+            self.assertIn(md, subvol_info.keys(), "'{0}' key not present in metadata of subvolume".format(md))
 
-        if subvol_info["bytes_pcent"] != "undefined":
-            raise RuntimeError("bytes_pcent should be set to undefined if quota is not set")
+        self.assertEqual(subvol_info["bytes_pcent"], "undefined", "bytes_pcent should be set to undefined if quota is not set")
+        self.assertEqual(subvol_info["bytes_quota"], "infinite", "bytes_quota should be set to infinite if quota is not set")
+        self.assertEqual(subvol_info["pool_namespace"], "", "expected pool namespace to be empty")
 
-        if subvol_info["bytes_quota"] != "infinite":
-            raise RuntimeError("bytes_quota should be set to infinite if quota is not set")
-        self.assertEqual(subvol_info["pool_namespace"], "")
+        self.assertEqual(len(subvol_info["features"]), 2,
+                         msg="expected 2 features, found '{0}' ({1})".format(len(subvol_info["features"]), subvol_info["features"]))
+        for feature in ['snapshot-clone', 'snapshot-autoprotect']:
+            self.assertIn(feature, subvol_info["features"], msg="expected feature '{0}' in subvolume".format(feature))
 
         nsize = self.DEFAULT_FILE_SIZE*1024*1024
-        try:
-            self._fs_cmd("subvolume", "resize", self.volname, subvolume, str(nsize))
-        except CommandFailedError:
-            raise RuntimeError("expected the 'fs subvolume resize' command to succeed")
+        self._fs_cmd("subvolume", "resize", self.volname, subvolume, str(nsize))
 
         # get subvolume metadata after quota set
         subvol_info = json.loads(self._get_subvolume_info(self.volname, subvolume))
-        if len(subvol_info) == 0:
-            raise RuntimeError("Expected the 'fs subvolume info' command to list metadata of subvolume")
-        if subvol_info["bytes_pcent"] == "undefined":
-            raise RuntimeError("bytes_pcent should not be set to undefined if quota is set")
+        self.assertNotEqual(len(subvol_info), 0, "expected the 'fs subvolume info' command to list metadata of subvolume")
 
-        if subvol_info["bytes_quota"] == "infinite":
-            raise RuntimeError("bytes_quota should not be set to infinite if quota is set")
+        self.assertNotEqual(subvol_info["bytes_pcent"], "undefined", "bytes_pcent should not be set to undefined if quota is not set")
+        self.assertNotEqual(subvol_info["bytes_quota"], "infinite", "bytes_quota should not be set to infinite if quota is not set")
+        self.assertEqual(subvol_info["type"], "subvolume", "type should be set to subvolume")
 
-        if subvol_info["type"] != "subvolume":
-            raise RuntimeError("type should be set to subvolume")
+        self.assertEqual(len(subvol_info["features"]), 2,
+                         msg="expected 2 features, found '{0}' ({1})".format(len(subvol_info["features"]), subvol_info["features"]))
+        for feature in ['snapshot-clone', 'snapshot-autoprotect']:
+            self.assertIn(feature, subvol_info["features"], msg="expected feature '{0}' in subvolume".format(feature))
 
         # remove subvolumes
         self._fs_cmd("subvolume", "rm", self.volname, subvolume)
@@ -858,18 +956,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -912,8 +1004,7 @@ class TestVolumes(CephFSTestCase):
         self._fs_cmd("subvolumegroup", "rm", self.volname, group)
 
     def test_subvolume_group_create_with_desired_data_pool_layout(self):
-        group1 = self._generate_random_group_name()
-        group2 = self._generate_random_group_name()
+        group1, group2 = self._generate_random_group_name(2)
 
         # create group
         self._fs_cmd("subvolumegroup", "create", self.volname, group1)
@@ -974,8 +1065,7 @@ class TestVolumes(CephFSTestCase):
             raise RuntimeError("expected the 'fs subvolumegroup getpath' command to fail")
 
     def test_subvolume_create_with_desired_data_pool_layout_in_group(self):
-        subvol1 = self._generate_random_subvolume_name()
-        subvol2 = self._generate_random_subvolume_name()
+        subvol1, subvol2 = self._generate_random_subvolume_name(2)
         group = self._generate_random_group_name()
 
         # create group. this also helps set default pool layout for subvolumes
@@ -1006,8 +1096,7 @@ class TestVolumes(CephFSTestCase):
         self._fs_cmd("subvolumegroup", "rm", self.volname, group)
 
     def test_subvolume_group_create_with_desired_mode(self):
-        group1 = self._generate_random_group_name()
-        group2 = self._generate_random_group_name()
+        group1, group2 = self._generate_random_group_name(2)
         # default mode
         expected_mode1 = "755"
         # desired mode
@@ -1055,9 +1144,8 @@ class TestVolumes(CephFSTestCase):
         self._fs_cmd("subvolumegroup", "rm", self.volname, subvolgroupname)
 
     def test_subvolume_create_with_desired_mode_in_group(self):
-        subvol1 = self._generate_random_subvolume_name()
-        subvol2 = self._generate_random_subvolume_name()
-        subvol3 = self._generate_random_subvolume_name()
+        subvol1, subvol2, subvol3 = self._generate_random_subvolume_name(3)
+
         group = self._generate_random_group_name()
         # default mode
         expected_mode1 = "755"
@@ -1198,7 +1286,7 @@ class TestVolumes(CephFSTestCase):
         tests the 'fs subvolume snapshot info' command
         """
 
-        snap_metadata = ["created_at", "data_pool", "has_pending_clones", "protected", "size"]
+        snap_metadata = ["created_at", "data_pool", "has_pending_clones", "size"]
 
         subvolume = self._generate_random_subvolume_name()
         snapshot = self._generate_random_snapshot_name()
@@ -1212,20 +1300,13 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         snap_info = json.loads(self._get_subvolume_snapshot_info(self.volname, subvolume, snapshot))
         self.assertNotEqual(len(snap_info), 0)
         for md in snap_metadata:
             if md not in snap_info:
                 raise RuntimeError("%s not present in the metadata of subvolume snapshot" % md)
-        self.assertEqual(snap_info["protected"], "yes")
         self.assertEqual(snap_info["has_pending_clones"], "no")
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -1571,21 +1652,20 @@ class TestVolumes(CephFSTestCase):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
-    def test_subvolume_snapshot_protect_unprotect(self):
+    def test_subvolume_snapshot_protect_unprotect_sanity(self):
+        """
+        Snapshot protect/unprotect commands are deprecated. This test exists to ensure that
+        invoking the command does not cause errors, till they are removed from a subsequent release.
+        """
         subvolume = self._generate_random_subvolume_name()
         snapshot = self._generate_random_snapshot_name()
+        clone = self._generate_random_clone_name()
 
         # create subvolume
         self._fs_cmd("subvolume", "create", self.volname, subvolume)
 
-        # protect a nonexistent snapshot
-        try:
-            self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-        except CommandFailedError as ce:
-            if ce.exitstatus != errno.ENOENT:
-                raise RuntimeError("invalid error code when protecting a non-existing snapshot")
-        else:
-            raise RuntimeError("expected protection of non existent snapshot to fail")
+        # do some IO
+        self._do_subvolume_io(subvolume, number_of_files=64)
 
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
@@ -1593,23 +1673,11 @@ class TestVolumes(CephFSTestCase):
         # now, protect snapshot
         self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
 
-        # protecting snapshot again, should return EEXIST
-        try:
-            self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-        except CommandFailedError as ce:
-            if ce.exitstatus != errno.EEXIST:
-                raise RuntimeError("invalid error code when protecting a protected snapshot")
-        else:
-            raise RuntimeError("expected protection of already protected snapshot to fail")
+        # schedule a clone
+        self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
-        # remove snapshot should fail since the snapshot is protected
-        try:
-            self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
-        except CommandFailedError as ce:
-            if ce.exitstatus != errno.EINVAL:
-                raise RuntimeError("invalid error code when removing a protected snapshot")
-        else:
-            raise RuntimeError("expected removal of protected snapshot to fail")
+        # check clone status
+        self._wait_for_clone_to_complete(clone)
 
         # now, unprotect snapshot
         self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
@@ -1617,37 +1685,12 @@ class TestVolumes(CephFSTestCase):
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
-        # remove subvolume
-        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
-
-        # verify trash dir is clean
-        self._wait_for_trash_empty()
-
-    def test_subvolume_snapshot_clone_unprotected_snapshot(self):
-        subvolume = self._generate_random_subvolume_name()
-        snapshot = self._generate_random_snapshot_name()
-        clone = self._generate_random_clone_name()
-
-        # create subvolume
-        self._fs_cmd("subvolume", "create", self.volname, subvolume)
-
-        # snapshot subvolume
-        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
-
-        # clone a non protected snapshot
-        try:
-            self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
-        except CommandFailedError as ce:
-            if ce.exitstatus != errno.EINVAL:
-                raise RuntimeError("invalid error code when cloning a non protected snapshot")
-        else:
-            raise RuntimeError("expected cloning of unprotected snapshot to fail")
-
-        # remove snapshot
-        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+        # verify clone
+        self._verify_clone(subvolume, clone)
 
         # remove subvolumes
         self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+        self._fs_cmd("subvolume", "rm", self.volname, clone)
 
         # verify trash dir is clean
         self._wait_for_trash_empty()
@@ -1666,27 +1709,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
-        # unprotecting when a clone is in progress should fail
-        try:
-            self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-        except CommandFailedError as ce:
-            if ce.exitstatus != errno.EEXIST:
-                raise RuntimeError("invalid error code when unprotecting snapshot during clone")
-        else:
-            raise RuntimeError("expected unprotecting a snapshot to fail since it has pending clones")
-
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -1718,18 +1746,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone, "--pool_layout", new_pool)
 
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -1765,18 +1787,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -1804,18 +1820,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone1)
 
         # check clone status
         self._wait_for_clone_to_complete(clone1)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -1829,18 +1839,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot clone -- use same snap name
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, clone1, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, clone1, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, clone1, snapshot, clone2)
 
         # check clone status
         self._wait_for_clone_to_complete(clone2)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, clone1, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, clone1, snapshot)
 
@@ -1870,9 +1874,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # create group
         self._fs_cmd("subvolumegroup", "create", self.volname, group)
 
@@ -1882,9 +1883,6 @@ class TestVolumes(CephFSTestCase):
         # check clone status
         self._wait_for_clone_to_complete(clone, clone_group=group)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -1919,18 +1917,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot, group)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot, group)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone, '--group_name', group)
 
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot, group)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot, group)
 
@@ -1966,9 +1958,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot, s_group)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot, s_group)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone,
                      '--group_name', s_group, '--target_group_name', c_group)
@@ -1976,9 +1965,6 @@ class TestVolumes(CephFSTestCase):
         # check clone status
         self._wait_for_clone_to_complete(clone, clone_group=c_group)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot, s_group)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot, s_group)
 
@@ -2011,23 +1997,25 @@ class TestVolumes(CephFSTestCase):
         self.mount_a.run_shell(['mkdir', '-p', createpath])
 
         # do some IO
-        self._do_subvolume_io(subvolume, number_of_files=32)
+        self._do_subvolume_io(subvolume, number_of_files=64)
 
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
+        # snapshot should not be deletable now
+        try:
+            self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EAGAIN, msg="invalid error code when removing source snapshot of a clone")
+        else:
+            self.fail("expected removing source snapshot of a clone to fail")
+
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -2055,9 +2043,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -2066,7 +2051,7 @@ class TestVolumes(CephFSTestCase):
             self._get_subvolume_path(self.volname, clone)
         except CommandFailedError as ce:
             if ce.exitstatus != errno.EAGAIN:
-                raise RuntimeError("invalid error code when cloning a non protected snapshot")
+                raise RuntimeError("invalid error code when fetching path of an pending clone")
         else:
             raise RuntimeError("expected fetching path of an pending clone to fail")
 
@@ -2077,8 +2062,50 @@ class TestVolumes(CephFSTestCase):
         subvolpath = self._get_subvolume_path(self.volname, clone)
         self.assertNotEqual(subvolpath, None)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
+        # remove snapshot
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+
+        # verify clone
+        self._verify_clone(subvolume, clone)
+
+        # remove subvolumes
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+        self._fs_cmd("subvolume", "rm", self.volname, clone)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
+    def test_subvolume_clone_in_progress_snapshot_rm(self):
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone = self._generate_random_clone_name()
+
+        # create subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+
+        # do some IO
+        self._do_subvolume_io(subvolume, number_of_files=64)
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # schedule a clone
+        self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
+
+        # snapshot should not be deletable now
+        try:
+            self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+        except CommandFailedError as ce:
+            self.assertEqual(ce.exitstatus, errno.EAGAIN, msg="invalid error code when removing source snapshot of a clone")
+        else:
+            self.fail("expected removing source snapshot of a clone to fail")
+
+        # check clone status
+        self._wait_for_clone_to_complete(clone)
+
+        # clone should be accessible now
+        subvolpath = self._get_subvolume_path(self.volname, clone)
+        self.assertNotEqual(subvolpath, None)
 
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
@@ -2107,9 +2134,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -2128,9 +2152,6 @@ class TestVolumes(CephFSTestCase):
         subvolpath = self._get_subvolume_path(self.volname, clone)
         self.assertNotEqual(subvolpath, None)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -2179,9 +2200,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume1, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume1, snapshot)
-
         # schedule a clone with target as subvolume2
         try:
             self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume1, snapshot, subvolume2)
@@ -2205,9 +2223,6 @@ class TestVolumes(CephFSTestCase):
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume1, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume1, snapshot)
 
@@ -2240,9 +2255,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # add data pool
         new_pool = "new_pool"
         self.fs.add_data_pool(new_pool)
@@ -2268,9 +2280,6 @@ class TestVolumes(CephFSTestCase):
         # check clone status
         self._wait_for_clone_to_fail(clone2)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -2305,18 +2314,12 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
         # check clone status
         self._wait_for_clone_to_complete(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -2344,9 +2347,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule a clone
         self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
 
@@ -2356,9 +2356,6 @@ class TestVolumes(CephFSTestCase):
         # verify canceled state
         self._check_clone_canceled(clone)
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
@@ -2398,9 +2395,6 @@ class TestVolumes(CephFSTestCase):
         # snapshot subvolume
         self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
 
-        # now, protect snapshot
-        self._fs_cmd("subvolume", "snapshot", "protect", self.volname, subvolume, snapshot)
-
         # schedule clones
         for clone in clones:
             self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
@@ -2426,9 +2420,6 @@ class TestVolumes(CephFSTestCase):
                 if ce.exitstatus != errno.EINVAL:
                     raise RuntimeError("invalid error code when cancelling on-going clone")
 
-        # now, unprotect snapshot
-        self._fs_cmd("subvolume", "snapshot", "unprotect", self.volname, subvolume, snapshot)
-
         # remove snapshot
         self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
 
index 1acca15373bd4f3c9cb2bde09cf7dfc575f00c1a..1a7a6951c97bec73f3d3aee28ea26589b79a0efb 100644 (file)
@@ -18,6 +18,12 @@ log = logging.getLogger(__name__)
 
 
 class DashboardTestCase(MgrTestCase):
+    # Display full error diffs
+    maxDiff = None
+
+    # Increased x3 (20 -> 60)
+    TIMEOUT_HEALTH_CLEAR = 60
+
     MGRS_REQUIRED = 2
     MDSS_REQUIRED = 1
     REQUIRE_FILESYSTEM = True
@@ -183,7 +189,7 @@ class DashboardTestCase(MgrTestCase):
         super(DashboardTestCase, self).setUp()
         if not self._loggedin and self.AUTO_AUTHENTICATE:
             self.login('admin', 'admin')
-        self.wait_for_health_clear(20)
+        self.wait_for_health_clear(self.TIMEOUT_HEALTH_CLEAR)
 
     @classmethod
     def tearDownClass(cls):
@@ -467,6 +473,7 @@ JList = namedtuple('JList', ['elem_typ'])
 
 JTuple = namedtuple('JList', ['elem_typs'])
 
+JUnion = namedtuple('JUnion', ['elem_typs'])
 
 class JObj(namedtuple('JObj', ['sub_elems', 'allow_unknown', 'none', 'unknown_schema'])):
     def __new__(cls, sub_elems, allow_unknown=False, none=False, unknown_schema=None):
@@ -496,6 +503,10 @@ def _validate_json(val, schema, path=[]):
     ... ds = JObj({'a': int, 'b': str, 'c': JList(int)})
     ... _validate_json(d, ds)
     True
+    >>> _validate_json({'num': 1}, JObj({'num': JUnion([int,float])}))
+    True
+    >>> _validate_json({'num': 'a'}, JObj({'num': JUnion([int,float])}))
+    False
     """
     if isinstance(schema, JAny):
         if not schema.none and val is None:
@@ -514,6 +525,14 @@ def _validate_json(val, schema, path=[]):
     if isinstance(schema, JTuple):
         return all(_validate_json(val[i], typ, path + [i])
                    for i, typ in enumerate(schema.elem_typs))
+    if isinstance(schema, JUnion):
+        for typ in schema.elem_typs:
+            try:
+                if _validate_json(val, typ, path):
+                    return True
+            except _ValError:
+                pass
+        return False
     if isinstance(schema, JObj):
         if val is None and schema.none:
             return True
index 468fe379641ced23f59e731ff1ed4736fca7cca0..e76708a9c43beed7f7123f5355db7c7745ff9afe 100644 (file)
@@ -6,7 +6,7 @@ import time
 
 import jwt
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JLeaf
+from .helper import DashboardTestCase, JObj, JLeaf
 
 
 class AuthTest(DashboardTestCase):
index 291d4d85c93c9ec7559460b5e4c16c9256f9e8d6..5ee39457aa10815ac3238b5532c5fb7e3603003b 100644 (file)
@@ -4,7 +4,7 @@ from __future__ import absolute_import
 import six
 from contextlib import contextmanager
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JList, JLeaf
+from .helper import DashboardTestCase, JObj, JList, JLeaf
 
 
 class CephfsTest(DashboardTestCase):
@@ -100,6 +100,16 @@ class CephfsTest(DashboardTestCase):
         self._delete("/api/cephfs/{}/client/1234".format(fs_id))
         self.assertStatus(404)
 
+    def test_cephfs_evict_invalid_client_id(self):
+        fs_id = self.get_fs_id()
+        self._delete("/api/cephfs/{}/client/xyz".format(fs_id))
+        self.assertStatus(400)
+        self.assertJsonBody({
+            "component": 'cephfs',
+            "code": "invalid_cephfs_client_id",
+            "detail": "Invalid cephfs client ID xyz"
+        })
+
     def test_cephfs_get(self):
         fs_id = self.get_fs_id()
         data = self._get("/api/cephfs/{}/".format(fs_id))
@@ -135,6 +145,15 @@ class CephfsTest(DashboardTestCase):
         self.assertToHave(cephfs, 'id')
         self.assertToHave(cephfs, 'mdsmap')
 
+    def test_cephfs_get_quotas(self):
+        fs_id = self.get_fs_id()
+        data = self._get("/api/cephfs/{}/get_quotas?path=/".format(fs_id))
+        self.assertStatus(200)
+        self.assertSchema(data, JObj({
+            'max_bytes': int,
+            'max_files': int
+        }))
+
     def test_cephfs_tabs(self):
         fs_id = self.get_fs_id()
         data = self._get("/ui-api/cephfs/{}/tabs".format(fs_id))
index 9f134cd876aecfd0d2bd584d5bfcbd0d6f4b74d2..61d18000a45a4078a389d9213d4c59ccdb7f5c96 100644 (file)
@@ -2,7 +2,7 @@ from __future__ import absolute_import
 
 import time
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase
 
 
 class ClusterConfigurationTest(DashboardTestCase):
index 33949925bb04f55b1529f563c4de5a22dce36bce..a0bca63ff4a038be1cadff5fcd52c54745e6b2ba 100644 (file)
@@ -4,7 +4,7 @@ from __future__ import absolute_import
 
 import six
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JList
+from .helper import DashboardTestCase, JObj, JList
 
 
 class CrushRuleTest(DashboardTestCase):
index c6c829577b3a3a1ebb44f74334654c62b2bc6d4a..12e061777fc28170e2a946058257ec6282e0f05c 100644 (file)
@@ -4,7 +4,7 @@ from __future__ import absolute_import
 
 import six
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JList
+from .helper import DashboardTestCase, JObj, JList
 
 
 class ECPTest(DashboardTestCase):
index 0311daddaa605d3140a301bb30d40edb13bf81ea..c99e3651ff1442185681b6d2ee378a3bdd7e3a6e 100644 (file)
@@ -4,7 +4,7 @@
 from __future__ import absolute_import
 
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase, JList, JObj
 
 
 class GaneshaTest(DashboardTestCase):
@@ -166,3 +166,38 @@ class GaneshaTest(DashboardTestCase):
         self.assertIn('available', data)
         self.assertIn('message', data)
         self.assertTrue(data['available'])
+
+    def test_ganesha_fsals(self):
+        data = self._get('/ui-api/nfs-ganesha/fsals')
+        self.assertStatus(200)
+        self.assertIn('CEPH', data)
+
+    def test_ganesha_filesystems(self):
+        data = self._get('/ui-api/nfs-ganesha/cephfs/filesystems')
+        self.assertStatus(200)
+        self.assertSchema(data, JList(JObj({
+            'id': int,
+            'name': str
+        })))
+
+    def test_ganesha_lsdir(self):
+        self._get('/ui-api/nfs-ganesha/lsdir')
+        self.assertStatus(500)
+
+    def test_ganesha_buckets(self):
+        data = self._get('/ui-api/nfs-ganesha/rgw/buckets')
+        self.assertStatus(200)
+        schema = JList(str)
+        self.assertSchema(data, schema)
+
+    def test_ganesha_clusters(self):
+        data = self._get('/ui-api/nfs-ganesha/clusters')
+        self.assertStatus(200)
+        schema = JList(str)
+        self.assertSchema(data, schema)
+
+    def test_ganesha_cephx_clients(self):
+        data = self._get('/ui-api/nfs-ganesha/cephx/clients')
+        self.assertStatus(200)
+        schema = JList(str)
+        self.assertSchema(data, schema)
index e7bfb4fabf001f1c65b81520aa152013f0854cb5..e4091874425c437e21cbf6ed67fb49ef83e4012a 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JAny, JLeaf, JList, JObj
+from .helper import DashboardTestCase, JAny, JLeaf, JList, JObj
 
 
 class HealthTest(DashboardTestCase):
@@ -169,7 +169,8 @@ class HealthTest(DashboardTestCase):
                         'wr_bytes': int,
                         'compress_bytes_used': int,
                         'compress_under_bytes': int,
-                        'stored_raw': int
+                        'stored_raw': int,
+                        'avail_raw': int
                     }),
                     'name': str,
                     'id': int
index 407207133e3bac02230be87e2639e20d7780bc0d..da8f8849b108430fa9c848a5393aa6d074b0255d 100644 (file)
@@ -2,8 +2,8 @@
 from __future__ import absolute_import
 import json
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JList, JObj
-from tasks.mgr.dashboard.test_orchestrator import test_data
+from .helper import DashboardTestCase, JList, JObj
+from .test_orchestrator import test_data
 
 
 class HostControllerTest(DashboardTestCase):
@@ -90,6 +90,25 @@ class HostControllerTest(DashboardTestCase):
             }))
         })))
 
+    def test_host_daemons(self):
+        hosts = self._get('{}'.format(self.URL_HOST))
+        hosts = [host['hostname'] for host in hosts if host['hostname'] != '']
+        assert hosts[0]
+        data = self._get('{}/daemons'.format('{}/{}'.format(self.URL_HOST, hosts[0])))
+        self.assertStatus(200)
+        self.assertSchema(data, JList(JObj({
+            'hostname': str,
+            'daemon_id': str,
+            'daemon_type': str
+        })))
+
+    def test_host_smart(self):
+        hosts = self._get('{}'.format(self.URL_HOST))
+        hosts = [host['hostname'] for host in hosts if host['hostname'] != '']
+        assert hosts[0]
+        self._get('{}/smart'.format('{}/{}'.format(self.URL_HOST, hosts[0])))
+        self.assertStatus(200)
+
 
 class HostControllerNoOrchestratorTest(DashboardTestCase):
     def test_host_create(self):
index 5108161adade100da6adb10d1832731f3b911f0d..17d5d830c99666dd2a628b26d72b23c06820ad9b 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JList, JObj
+from .helper import DashboardTestCase, JList, JObj
 
 
 class LogsTest(DashboardTestCase):
index ec6dbb47f862ca8da114c7d2a27c8d580edb8419..266ab2d343f5a10c849309cd3e86d3de80cc53dc 100644 (file)
@@ -4,7 +4,7 @@ from __future__ import absolute_import
 import logging
 import requests
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JAny, JObj, JList, JLeaf
+from .helper import DashboardTestCase, JAny, JObj, JList, JLeaf
 
 logger = logging.getLogger(__name__)
 
@@ -31,6 +31,22 @@ class MgrModuleTestCase(DashboardTestCase):
 
 
 class MgrModuleTest(MgrModuleTestCase):
+
+    __options_schema = JObj({
+        'name': str,
+        'type': str,
+        'level': str,
+        'flags': int,
+        'default_value': JAny(none=True),
+        'min': JAny(none=False),
+        'max': JAny(none=False),
+        'enum_allowed': JList(str),
+        'desc': str,
+        'long_desc': str,
+        'tags': JList(str),
+        'see_also': JList(str)
+    })
+
     def test_list_disabled_module(self):
         self._ceph_cmd(['mgr', 'module', 'disable', 'iostat'])
         self.wait_until_rest_api_accessible()
@@ -51,7 +67,7 @@ class MgrModuleTest(MgrModuleTestCase):
                             'type': str,
                             'level': str,
                             'flags': int,
-                            'default_value': JAny(none=False),
+                            'default_value': JAny(none=True),
                             'min': JAny(none=False),
                             'max': JAny(none=False),
                             'enum_allowed': JList(str),
@@ -85,7 +101,7 @@ class MgrModuleTest(MgrModuleTestCase):
                             'type': str,
                             'level': str,
                             'flags': int,
-                            'default_value': JAny(none=False),
+                            'default_value': JAny(none=True),
                             'min': JAny(none=False),
                             'max': JAny(none=False),
                             'enum_allowed': JList(str),
@@ -99,8 +115,6 @@ class MgrModuleTest(MgrModuleTestCase):
         self.assertIsNotNone(module_info)
         self.assertTrue(module_info['enabled'])
 
-
-class MgrModuleTelemetryTest(MgrModuleTestCase):
     def test_get(self):
         data = self._get('/api/mgr/module/telemetry')
         self.assertStatus(200)
@@ -124,37 +138,58 @@ class MgrModuleTelemetryTest(MgrModuleTestCase):
                     'url': str
                 }))
 
+    def test_module_options(self):
+        data = self._get('/api/mgr/module/telemetry/options')
+        self.assertStatus(200)
+        schema = JObj({
+            'channel_basic': self.__options_schema,
+            'channel_crash': self.__options_schema,
+            'channel_device': self.__options_schema,
+            'channel_ident': self.__options_schema,
+            'contact': self.__options_schema,
+            'description': self.__options_schema,
+            'device_url': self.__options_schema,
+            'enabled': self.__options_schema,
+            'interval': self.__options_schema,
+            'last_opt_revision': self.__options_schema,
+            'leaderboard': self.__options_schema,
+            'log_level': self.__options_schema,
+            'log_to_cluster': self.__options_schema,
+            'log_to_cluster_level': self.__options_schema,
+            'log_to_file': self.__options_schema,
+            'organization': self.__options_schema,
+            'proxy': self.__options_schema,
+            'url': self.__options_schema
+        })
+        self.assertSchema(data, schema)
+
+    def test_module_enable(self):
+        self._post('/api/mgr/module/telemetry/enable')
+        self.assertStatus(200)
+
+    def test_disable(self):
+        self._post('/api/mgr/module/iostat/disable')
+        self.assertStatus(200)
+
     def test_put(self):
-        self.set_config_key('config/mgr/mgr/telemetry/contact', '')
-        self.set_config_key('config/mgr/mgr/telemetry/description', '')
-        self.set_config_key('config/mgr/mgr/telemetry/enabled', 'True')
-        self.set_config_key('config/mgr/mgr/telemetry/interval', '72')
-        self.set_config_key('config/mgr/mgr/telemetry/leaderboard', 'False')
-        self.set_config_key('config/mgr/mgr/telemetry/organization', '')
-        self.set_config_key('config/mgr/mgr/telemetry/proxy', '')
-        self.set_config_key('config/mgr/mgr/telemetry/url', '')
+        self.set_config_key('config/mgr/mgr/iostat/log_level', 'critical')
+        self.set_config_key('config/mgr/mgr/iostat/log_to_cluster', 'False')
+        self.set_config_key('config/mgr/mgr/iostat/log_to_cluster_level', 'info')
+        self.set_config_key('config/mgr/mgr/iostat/log_to_file', 'True')
         self._put(
-            '/api/mgr/module/telemetry',
+            '/api/mgr/module/iostat',
             data={
                 'config': {
-                    'contact': 'tux@suse.com',
-                    'description': 'test',
-                    'enabled': False,
-                    'interval': 4711,
-                    'leaderboard': True,
-                    'organization': 'SUSE Linux',
-                    'proxy': 'foo',
-                    'url': 'https://foo.bar/report'
+                    'log_level': 'debug',
+                    'log_to_cluster': True,
+                    'log_to_cluster_level': 'warning',
+                    'log_to_file': False
                 }
             })
         self.assertStatus(200)
-        data = self._get('/api/mgr/module/telemetry')
+        data = self._get('/api/mgr/module/iostat')
         self.assertStatus(200)
-        self.assertEqual(data['contact'], 'tux@suse.com')
-        self.assertEqual(data['description'], 'test')
-        self.assertFalse(data['enabled'])
-        self.assertEqual(data['interval'], 4711)
-        self.assertTrue(data['leaderboard'])
-        self.assertEqual(data['organization'], 'SUSE Linux')
-        self.assertEqual(data['proxy'], 'foo')
-        self.assertEqual(data['url'], 'https://foo.bar/report')
+        self.assertEqual(data['log_level'], 'debug')
+        self.assertTrue(data['log_to_cluster'])
+        self.assertEqual(data['log_to_cluster_level'], 'warning')
+        self.assertFalse(data['log_to_file'])
index 1558cdc82aff0a9360d9a443f01c3a91b358b42c..0cf7e25a282a6b6e4229eb34ea6095627eedac6c 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase
 
 
 class MonitorTest(DashboardTestCase):
index 4f248a1c3c6b9b37c52affdf92654403fb0208b7..9f4204379ac9afd9518a34134f4f9410683efc6d 100644 (file)
@@ -2,7 +2,7 @@
 from __future__ import absolute_import
 import json
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase
 
 
 test_data = {
index 4f2028d2297ef473744541fbfb737a351d40ef30..0bd3f93f32495b37b1688fe887b47455c11ef021 100644 (file)
@@ -4,7 +4,7 @@ from __future__ import absolute_import
 
 import json
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JAny, JList, JLeaf, JTuple
+from .helper import DashboardTestCase, JObj, JAny, JList, JLeaf, JTuple
 
 
 class OsdTest(DashboardTestCase):
@@ -61,6 +61,19 @@ class OsdTest(DashboardTestCase):
         self._post('/api/osd/0/scrub?deep=True')
         self.assertStatus(200)
 
+    def test_safe_to_delete(self):
+        data = self._get('/api/osd/safe_to_delete?svc_ids=0')
+        self.assertStatus(200)
+        self.assertSchema(data, JObj({
+             'is_safe_to_delete': JAny(none=True),
+             'message': str
+             }))
+        self.assertTrue(data['is_safe_to_delete'])
+
+    def test_osd_smart(self):
+        self._get('/api/osd/0/smart')
+        self.assertStatus(200)
+
     def test_mark_out_and_in(self):
         self._post('/api/osd/0/mark_out')
         self.assertStatus(200)
@@ -98,6 +111,18 @@ class OsdTest(DashboardTestCase):
             'tracking_id': 'bare-5'
         })
         self.assertStatus(201)
+
+        # invalid method
+        self._task_post('/api/osd', {
+            'method': 'xyz',
+            'data': {
+                'uuid': 'f860ca2e-757d-48ce-b74a-87052cad563f',
+                'svc_id': 5
+            },
+            'tracking_id': 'bare-5'
+        })
+        self.assertStatus(400)
+
         # Lost
         self._post('/api/osd/5/mark_lost')
         self.assertStatus(200)
index 99133a77cc725dbb3fd5093da31b77657b7b8cfc..c01368bce8db15556db9680751b98e3a507e5b76 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj
+from .helper import DashboardTestCase, JObj
 
 
 class PerfCountersControllerTest(DashboardTestCase):
index bf40ac2062638d36bd695483064a1a585bde698d..a3aac763135fd9be6c7ead1ef4d880784a1edd87 100644 (file)
@@ -6,7 +6,7 @@ import six
 import time
 from contextlib import contextmanager
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JAny, JList, JObj
+from .helper import DashboardTestCase, JAny, JList, JObj, JUnion
 
 log = logging.getLogger(__name__)
 
@@ -23,14 +23,16 @@ class PoolTest(DashboardTestCase):
     }, allow_unknown=True)
 
     pool_list_stat_schema = JObj(sub_elems={
-        'latest': int,
+        'latest': JUnion([int,float]),
         'rate': float,
         'rates': JList(JAny(none=False)),
     })
 
     pool_list_stats_schema = JObj(sub_elems={
+        'avail_raw': pool_list_stat_schema,
         'bytes_used': pool_list_stat_schema,
         'max_avail': pool_list_stat_schema,
+        'percent_used': pool_list_stat_schema,
         'rd_bytes': pool_list_stat_schema,
         'wr_bytes': pool_list_stat_schema,
         'rd': pool_list_stat_schema,
@@ -82,7 +84,7 @@ class PoolTest(DashboardTestCase):
         self._task_delete('/api/pool/' + name)
         self.assertStatus(204)
 
-    def _validate_pool_properties(self, data, pool):
+    def _validate_pool_properties(self, data, pool, timeout=DashboardTestCase.TIMEOUT_HEALTH_CLEAR):
         for prop, value in data.items():
             if prop == 'pool_type':
                 self.assertEqual(pool['type'], value)
@@ -110,13 +112,15 @@ class PoolTest(DashboardTestCase):
                 #   1.  The default value cannot be given to this method, which becomes relevant
                 #       when resetting a value, because it's not always zero.
                 #   2.  The expected `source` cannot be given to this method, and it cannot
-                #       relibably be determined (see 1)
+                #       reliably be determined (see 1)
                 pass
             else:
                 self.assertEqual(pool[prop], value, '{}: {} != {}'.format(prop, pool[prop], value))
 
-        health = self._get('/api/health/minimal')['health']
-        self.assertEqual(health['status'], 'HEALTH_OK', msg='health={}'.format(health))
+        self.wait_until_equal(self._get_health_status, 'HEALTH_OK', timeout)
+
+    def _get_health_status(self):
+        return self._get('/api/health/minimal')['health']['status']
 
     def _get_pool(self, pool_name):
         pool = self._get("/api/pool/" + pool_name)
@@ -133,8 +137,8 @@ class PoolTest(DashboardTestCase):
         """
         pgp_prop = 'pg_placement_num'
         t = 0
-        while (int(value) != pool[pgp_prop] or self._get('/api/health/minimal')['health']['status']
-               != 'HEALTH_OK') and t < 180:
+        while (int(value) != pool[pgp_prop] or self._get_health_status() != 'HEALTH_OK') \
+                and t < 180:
             time.sleep(2)
             t += 2
             pool = self._get_pool(pool['pool_name'])
@@ -158,6 +162,16 @@ class PoolTest(DashboardTestCase):
         self._delete('/api/pool/ddd')
         self.assertStatus(403)
 
+    def test_pool_configuration(self):
+        pool_name = 'device_health_metrics'
+        data = self._get('/api/pool/{}/configuration'.format(pool_name))
+        self.assertStatus(200)
+        self.assertSchema(data, JList(JObj({
+             'name': str,
+             'value': str,
+             'source': int
+             })))
+
     def test_pool_list(self):
         data = self._get("/api/pool")
         self.assertStatus(200)
@@ -313,23 +327,23 @@ class PoolTest(DashboardTestCase):
         with self.__yield_pool(pool_name):
             props = {'application_metadata': ['rbd', 'sth']}
             self._task_put('/api/pool/{}'.format(pool_name), props)
-            time.sleep(5)
-            self._validate_pool_properties(props, self._get_pool(pool_name))
+            self._validate_pool_properties(props, self._get_pool(pool_name),
+                                           self.TIMEOUT_HEALTH_CLEAR * 2)
 
             properties = {'application_metadata': ['rgw']}
             self._task_put('/api/pool/' + pool_name, properties)
-            time.sleep(5)
-            self._validate_pool_properties(properties, self._get_pool(pool_name))
+            self._validate_pool_properties(properties, self._get_pool(pool_name),
+                                           self.TIMEOUT_HEALTH_CLEAR * 2)
 
             properties = {'application_metadata': ['rbd', 'sth']}
             self._task_put('/api/pool/' + pool_name, properties)
-            time.sleep(5)
-            self._validate_pool_properties(properties, self._get_pool(pool_name))
+            self._validate_pool_properties(properties, self._get_pool(pool_name),
+                                           self.TIMEOUT_HEALTH_CLEAR * 2)
 
             properties = {'application_metadata': ['rgw']}
             self._task_put('/api/pool/' + pool_name, properties)
-            time.sleep(5)
-            self._validate_pool_properties(properties, self._get_pool(pool_name))
+            self._validate_pool_properties(properties, self._get_pool(pool_name),
+                                           self.TIMEOUT_HEALTH_CLEAR * 2)
 
     def test_pool_update_configuration(self):
         pool_name = 'pool_update_configuration'
@@ -415,4 +429,5 @@ class PoolTest(DashboardTestCase):
             'erasure_code_profiles': JList(JObj({}, allow_unknown=True)),
             'used_rules': JObj({}, allow_unknown=True),
             'used_profiles': JObj({}, allow_unknown=True),
+            'nodes': JList(JObj({}, allow_unknown=True)),
         }))
index 1c89651b425e2fc07b29a2462c77e9f0afac8746..48119383bf3c04ebbf4863f8c705f3e2a91898a6 100644 (file)
@@ -5,7 +5,7 @@ from __future__ import absolute_import
 
 import time
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JLeaf, JList
+from .helper import DashboardTestCase, JObj, JLeaf, JList
 
 
 class RbdTest(DashboardTestCase):
@@ -173,14 +173,13 @@ class RbdTest(DashboardTestCase):
         cls._ceph_cmd(['osd', 'pool', 'delete', 'rbd_data', 'rbd_data',
                        '--yes-i-really-really-mean-it'])
 
-    @classmethod
-    def create_image_in_trash(cls, pool, name, delay=0):
-        cls.create_image(pool, None, name, 10240)
-        img = cls._get('/api/block/image/{}%2F{}'.format(pool, name))
+    def create_image_in_trash(self, pool, name, delay=0):
+        self.create_image(pool, None, name, 10240)
+        img = self._get('/api/block/image/{}%2F{}'.format(pool, name))
 
-        cls._task_post("/api/block/image/{}%2F{}/move_trash".format(pool, name),
+        self._task_post("/api/block/image/{}%2F{}/move_trash".format(pool, name),
                        {'delay': delay})
-
+        self.assertStatus([200, 201])
         return img['id']
 
     @classmethod
@@ -236,6 +235,8 @@ class RbdTest(DashboardTestCase):
             'block_name_prefix': JLeaf(str),
             'name': JLeaf(str),
             'id': JLeaf(str),
+            'unique_id': JLeaf(str),
+            'image_format': JLeaf(int),
             'pool_name': JLeaf(str),
             'namespace': JLeaf(str, none=True),
             'features': JLeaf(int),
@@ -774,7 +775,6 @@ class RbdTest(DashboardTestCase):
 
     def test_move_image_to_trash(self):
         id = self.create_image_in_trash('rbd', 'test_rbd')
-        self.assertStatus(200)
 
         self.get_image('rbd', None, 'test_rbd')
         self.assertStatus(404)
index f8268f3525bf658af026495f73061b2d03405935..39e5f895f11085271b22a7d1f1dcf9db007ef8b9 100644 (file)
@@ -3,7 +3,7 @@
 
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase
 
 
 class RbdMirroringTest(DashboardTestCase):
index 22376c0a29b56fec22541873e89ce8c86d986dc7..0d9f8d9ba83697042c63c18f4b0c1bbc30bd8b0f 100644 (file)
@@ -2,7 +2,7 @@
 
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase
 
 
 class RequestsTest(DashboardTestCase):
index 3e5b735991328fa9589d0b2db8c277fd4e10ba4f..1e707c33d458225e08182e97638c71cb69df5eff 100644 (file)
@@ -10,7 +10,7 @@ from cryptography.hazmat.primitives.twofactor.totp import TOTP
 from cryptography.hazmat.primitives.hashes import SHA1
 from six.moves.urllib import parse
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JList, JLeaf
+from .helper import DashboardTestCase, JObj, JList, JLeaf
 
 logger = logging.getLogger(__name__)
 
@@ -510,6 +510,11 @@ class RgwUserTest(RgwTestCase):
         self.assertGreaterEqual(len(data), 1)
         self.assertIn('admin', data)
 
+    def test_get_emails(self):
+        data = self._get('/api/rgw/user/get_emails')
+        self.assertStatus(200)
+        self.assertSchema(data, JList(str))
+
     def test_create_get_update_delete(self):
         # Create a new user.
         self._post('/api/rgw/user', params={
index d678fa195f55eeb5393f12aa5d2f6ffb2ac43234..dbfaea9e4f2d4308ae3326ad1082193611d158e2 100644 (file)
@@ -2,7 +2,7 @@
 
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase
 
 
 class RoleTest(DashboardTestCase):
index 4c6ebeacaaebb1a7644b87fe05ab0a18729d24ce..2d890484a3e04f09326a926ee18c995376709bc2 100644 (file)
@@ -2,7 +2,7 @@
 
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JList, JObj, JAny
+from .helper import DashboardTestCase, JList, JObj, JAny
 
 
 class SettingsTest(DashboardTestCase):
index 808107a3119e841dcbad9d6df04ae22809805521..a31f8914673664e6f8f682ca4a74bfa6f7ddcbdb 100644 (file)
@@ -1,6 +1,6 @@
 from __future__ import absolute_import
 
-from tasks.mgr.dashboard.helper import DashboardTestCase
+from .helper import DashboardTestCase
 
 
 class SummaryTest(DashboardTestCase):
index f3606ed851870ed6a180632944250007458b5abc..ea7beee6d7a50239aa72b9235f21a3258049cc70 100644 (file)
@@ -6,7 +6,7 @@ import time
 
 from datetime import datetime, timedelta
 
-from tasks.mgr.dashboard.helper import DashboardTestCase, JObj, JLeaf
+from .helper import DashboardTestCase, JObj, JLeaf
 
 
 class UserTest(DashboardTestCase):
index db922632374ea0c3267b9b3cf09bdc34d7ed55ab..ed0c52feae683e459eb12f46c88d69b37abd4153 100644 (file)
@@ -163,8 +163,10 @@ data_devices:
         self._orch_cmd("apply", "nfs", "service_name", "2")
 
     def test_error(self):
-        ret = self._orch_cmd_result("host", "add", "raise_no_support")
-        self.assertEqual(ret, errno.ENOENT)
+        ret = self._orch_cmd_result("host", "add", "raise_validation_error")
+        self.assertEqual(ret, errno.EINVAL)
+        ret = self._orch_cmd_result("host", "add", "raise_error")
+        self.assertEqual(ret, errno.EINVAL)
         ret = self._orch_cmd_result("host", "add", "raise_bug")
         self.assertEqual(ret, errno.EINVAL)
         ret = self._orch_cmd_result("host", "add", "raise_not_implemented")
index 052992a498b0c2c5aaf1276dfd4ab63d13a93f7d..107dc3d689e24b336c9cf6ba0778da502a225deb 100644 (file)
@@ -18,6 +18,33 @@ from teuthology.orchestra import run
 
 log = logging.getLogger(__name__)
 
+
+def get_ragweed_branches(config, client_conf):
+    """
+    figure out the ragweed branch according to the per-client settings
+
+    use force-branch is specified, and fall back to the ones deduced using ceph
+    branch under testing
+    """
+    force_branch = client_conf.get('force-branch', None)
+    if force_branch:
+        return [force_branch]
+    else:
+        S3_BRANCHES = ['master', 'nautilus', 'mimic',
+                       'luminous', 'kraken', 'jewel']
+        ceph_branch = config.get('branch')
+        suite_branch = config.get('suite_branch', ceph_branch)
+        if suite_branch in S3_BRANCHES:
+            branch = client_conf.get('branch', 'ceph-' + suite_branch)
+        else:
+            branch = client_conf.get('branch', suite_branch)
+        default_branch = client_conf.get('default-branch', None)
+        if default_branch:
+            return [branch, default_branch]
+        else:
+            return [branch]
+
+
 @contextlib.contextmanager
 def download(ctx, config):
     """
@@ -30,46 +57,21 @@ def download(ctx, config):
     assert isinstance(config, dict)
     log.info('Downloading ragweed...')
     testdir = teuthology.get_testdir(ctx)
-    s3_branches = [ 'master', 'nautilus', 'mimic', 'luminous', 'kraken', 'jewel' ]
     for (client, cconf) in config.items():
-        default_branch = ''
-        branch = cconf.get('force-branch', None)
-        if not branch:
-            default_branch = cconf.get('default-branch', None)
-            ceph_branch = ctx.config.get('branch')
-            suite_branch = ctx.config.get('suite_branch', ceph_branch)
-            ragweed_repo = ctx.config.get('ragweed_repo', teuth_config.ceph_git_base_url + 'ragweed.git')
-            if suite_branch in s3_branches:
-                branch = cconf.get('branch', 'ceph-' + suite_branch)
-            else:
-                branch = cconf.get('branch', suite_branch)
-        if not branch:
-            raise ValueError(
-                "Could not determine what branch to use for ragweed!")
-        else:
+        ragweed_repo = ctx.config.get('ragweed_repo',
+                                      teuth_config.ceph_git_base_url + 'ragweed.git')
+        for branch in get_ragweed_branches(ctx.config, cconf):
             log.info("Using branch '%s' for ragweed", branch)
-        sha1 = cconf.get('sha1')
-        try:
-            ctx.cluster.only(client).run(
-                args=[
-                    'git', 'clone',
-                    '-b', branch,
-                    ragweed_repo,
-                    '{tdir}/ragweed'.format(tdir=testdir),
-                    ],
-                )
-        except Exception as e:
-            if not default_branch:
-                raise e
-            ctx.cluster.only(client).run(
-                args=[
-                    'git', 'clone',
-                    '-b', default_branch,
-                    ragweed_repo,
-                    '{tdir}/ragweed'.format(tdir=testdir),
-                    ],
-                )
+            try:
+                ctx.cluster.only(client).sh(
+                    script=f'git clone -b {branch} {ragweed_repo} {testdir}/ragweed')
+                break
+            except Exception as e:
+                exc = e
+        else:
+            raise exc
 
+        sha1 = cconf.get('sha1')
         if sha1 is not None:
             ctx.cluster.only(client).run(
                 args=[
index a248db9e4797acc888ad57fde50c19f698023d70..a7f976d8ea5e2c15d52a91675b7736daf39ff4f0 100644 (file)
@@ -30,8 +30,8 @@ Alternative usage:
 
 """
 
-from six import StringIO
 from io import BytesIO
+from io import StringIO
 from collections import defaultdict
 import getpass
 import signal
@@ -152,8 +152,8 @@ else:
 
 
 def rm_nonascii_chars(var):
-    var = var.replace('\xe2\x80\x98', '\'')
-    var = var.replace('\xe2\x80\x99', '\'')
+    var = var.replace(b'\xe2\x80\x98', b'\'')
+    var = var.replace(b'\xe2\x80\x99', b'\'')
     return var
 
 class LocalRemoteProcess(object):
@@ -177,8 +177,14 @@ class LocalRemoteProcess(object):
 
         out, err = self.subproc.communicate()
         out, err = rm_nonascii_chars(out), rm_nonascii_chars(err)
-        self.stdout.write(out)
-        self.stderr.write(err)
+        if isinstance(self.stdout, StringIO):
+            self.stdout.write(out.decode(errors='ignore'))
+        else:
+            self.stdout.write(out)
+        if isinstance(self.stderr, StringIO):
+            self.stderr.write(err.decode(errors='ignore'))
+        else:
+            self.stderr.write(err)
 
         self.exitstatus = self.returncode = self.subproc.returncode
 
@@ -379,12 +385,12 @@ class LocalRemote(object):
                                        env=env)
 
         if stdin:
-            if not isinstance(stdin, six.string_types):
+            if not isinstance(stdin, str):
                 raise RuntimeError("Can't handle non-string stdins on a vstart cluster")
 
             # Hack: writing to stdin is not deadlock-safe, but it "always" works
             # as long as the input buffer is "small"
-            subproc.stdin.write(stdin)
+            subproc.stdin.write(stdin.encode())
 
         proc = LocalRemoteProcess(
             args, subproc, check_status,
@@ -396,7 +402,8 @@ class LocalRemote(object):
 
         return proc
 
-    # XXX: for compatibility keep this method same teuthology.orchestra.remote.sh
+    # XXX: for compatibility keep this method same as teuthology.orchestra.remote.sh
+    # BytesIO is being used just to keep things identical
     def sh(self, script, **kwargs):
         """
         Shortcut for run method.
@@ -405,13 +412,18 @@ class LocalRemote(object):
             my_name = remote.sh('whoami')
             remote_date = remote.sh('date')
         """
+        from io import BytesIO
+
         if 'stdout' not in kwargs:
-            kwargs['stdout'] = StringIO()
+            kwargs['stdout'] = BytesIO()
         if 'args' not in kwargs:
             kwargs['args'] = script
         proc = self.run(**kwargs)
-        return proc.stdout.getvalue()
-
+        out = proc.stdout.getvalue()
+        if isinstance(out, bytes):
+            return out.decode()
+        else:
+            return out
 
 class LocalDaemon(object):
     def __init__(self, daemon_type, daemon_id):
@@ -1288,6 +1300,7 @@ def exec_test():
     global opt_log_ps_output
     opt_log_ps_output = False
     use_kernel_client = False
+    opt_verbose = True
 
     args = sys.argv[1:]
     flags = [a for a in args if a.startswith("-")]
@@ -1309,6 +1322,8 @@ def exec_test():
             clear_old_log()
         elif f == "--kclient":
             use_kernel_client = True
+        elif '--no-verbose' == f:
+            opt_verbose = False
         else:
             log.error("Unknown option '{0}'".format(f))
             sys.exit(-1)
@@ -1330,7 +1345,8 @@ def exec_test():
 
     # Tolerate no MDSs or clients running at start
     ps_txt = six.ensure_str(remote.run(
-        args=["ps", "-u"+str(os.getuid())]
+        args=["ps", "-u"+str(os.getuid())],
+        stdout=StringIO()
     ).stdout.getvalue().strip())
     lines = ps_txt.split("\n")[1:]
     for line in lines:
@@ -1350,11 +1366,17 @@ def exec_test():
         vstart_env["OSD"] = "4"
         vstart_env["MGR"] = max(max_required_mgr, 1).__str__()
 
-        args = [os.path.join(SRC_PREFIX, "vstart.sh"), "-n", "-d",
-                    "--nolockdep"]
+        args = [
+            os.path.join(SRC_PREFIX, "vstart.sh"),
+            "-n",
+            "--nolockdep",
+        ]
         if require_memstore:
             args.append("--memstore")
 
+        if opt_verbose:
+            args.append("-d")
+
         # usually, i get vstart.sh running completely in less than 100
         # seconds.
         remote.run(args=args, env=vstart_env, timeout=(3 * 60))
@@ -1390,7 +1412,7 @@ def exec_test():
                                  "mds", "allow",
                                  "mon", "allow r"])
 
-            open("./keyring", "a").write(p.stdout.getvalue())
+            open("./keyring", "ab").write(p.stdout.getvalue())
 
         if use_kernel_client:
             mount = LocalKernelMount(ctx, test_dir, client_id)
index 67750cd0dc1cec61d5c9aa8d51b0c09022a5b08b..da96ccd32cbd8c367e548268c88ccfbcc343897b 100755 (executable)
@@ -17,6 +17,13 @@ awscli_dir=${HOME}/awscli_temp
 export PATH=${PATH}:${awscli_dir}
 
 rgw_host=$(hostname --fqdn)
+if echo "$rgw_host" | grep -q '\.' ; then
+    :
+else
+    host_domain=".front.sepia.ceph.com"
+    echo "WARNING: rgw hostname -- $rgw_host -- does not appear to be fully qualified; PUNTING and appending $host_domain"
+    rgw_host="${rgw_host}${host_domain}"
+fi
 rgw_port=80
 
 echo "Fully Qualified Domain Name: $rgw_host"
index 81b4d00675309dea06ef4e049f1806c602cd88d3..77d35d9714b60cca17b18cc8fe868bbea397716d 100644 (file)
@@ -13,11 +13,14 @@ require {
        type urandom_device_t;
        type setfiles_t;
        type nvme_device_t;
+       type targetd_etc_rw_t;
+       type amqp_port_t;
+       type soundd_port_t;
        class sock_file unlink;
        class tcp_socket name_connect_t;
        class lnk_file { create getattr read unlink };
        class dir { add_name create getattr open read remove_name rmdir search write };
-       class file { create getattr open read rename unlink write };
+       class file { create getattr open read rename unlink write ioctl };
        class blk_file { getattr ioctl open read write };
        class capability2 block_suspend;
        class process2 { nnp_transition nosuid_transition };
@@ -87,6 +90,8 @@ corenet_tcp_sendrecv_cyphesis_port(ceph_t)
 
 allow ceph_t commplex_main_port_t:tcp_socket name_connect;
 allow ceph_t http_cache_port_t:tcp_socket name_connect;
+allow ceph_t amqp_port_t:tcp_socket name_connect;
+allow ceph_t soundd_port_t:tcp_socket name_connect;
 
 corecmd_exec_bin(ceph_t)
 corecmd_exec_shell(ceph_t)
@@ -137,7 +142,7 @@ allow ceph_t sysfs_t:file { read getattr open };
 allow ceph_t sysfs_t:lnk_file { read getattr };
 
 allow ceph_t configfs_t:dir { add_name create getattr open read remove_name rmdir search write };
-allow ceph_t configfs_t:file { getattr open read write };
+allow ceph_t configfs_t:file { getattr open read write ioctl };
 allow ceph_t configfs_t:lnk_file { create getattr read unlink };
 
 
@@ -150,6 +155,8 @@ allow ceph_t var_run_t:file { read write create open getattr };
 allow ceph_t init_var_run_t:file getattr;
 allow init_t ceph_t:process2 { nnp_transition nosuid_transition };
 
+allow ceph_t targetd_etc_rw_t:dir { getattr search };
+
 fsadm_manage_pid(ceph_t)
 
 #============= setfiles_t ==============
index ed80787961fe15f9c47b63d164e7675c8d85b8eb..cd1d01c5113dc8dfa663aa66ac1bf5455997cc98 100644 (file)
@@ -1,2 +1,2 @@
-7447c15c6ff58d7fce91843b705a268a1917325c
-15.2.4
+2c93eff00150f0cc5f106a559557a58d3d7b6f1f
+15.2.5
index b8ea78bead23f579367941bb2a8b832894b4d8c9..0e6f42dac1db976f6cba860a14989d29696243f7 100644 (file)
@@ -9,14 +9,66 @@ import uuid
 from itertools import repeat
 from math import floor
 from ceph_volume import process, util
-from ceph_volume.exceptions import (
-    MultipleLVsError, MultipleVGsError,
-    MultiplePVsError, SizeAllocationError
-)
+from ceph_volume.exceptions import SizeAllocationError
 
 logger = logging.getLogger(__name__)
 
 
+def convert_filters_to_str(filters):
+    """
+    Convert filter args from dictionary to following format -
+        filters={filter_name=filter_val,...}
+    """
+    if not filters:
+        return filters
+
+    filter_arg = ''
+    for k, v in filters.items():
+        filter_arg += k + '=' + v + ','
+    # get rid of extra comma at the end
+    filter_arg = filter_arg[:len(filter_arg) - 1]
+
+    return filter_arg
+
+
+def convert_tags_to_str(tags):
+    """
+    Convert tags from dictionary to following format -
+        tags={tag_name=tag_val,...}
+    """
+    if not tags:
+        return tags
+
+    tag_arg = 'tags={'
+    for k, v in tags.items():
+        tag_arg += k + '=' + v + ','
+    # get rid of extra comma at the end
+    tag_arg = tag_arg[:len(tag_arg) - 1] + '}'
+
+    return tag_arg
+
+
+def make_filters_lvmcmd_ready(filters, tags):
+    """
+    Convert filters (including tags) from dictionary to following format -
+        filter_name=filter_val...,tags={tag_name=tag_val,...}
+
+    The command will look as follows =
+        lvs -S filter_name=filter_val...,tags={tag_name=tag_val,...}
+    """
+    filters = convert_filters_to_str(filters)
+    tags = convert_tags_to_str(tags)
+
+    if filters and tags:
+        return filters + ',' + tags
+    if filters and not tags:
+        return filters
+    if not filters and tags:
+        return tags
+    else:
+        return ''
+
+
 def _output_parser(output, fields):
     """
     Newer versions of LVM allow ``--reportformat=json``, but older versions,
@@ -289,29 +341,6 @@ def is_ceph_device(lv):
 
 PV_FIELDS = 'pv_name,pv_tags,pv_uuid,vg_name,lv_uuid'
 
-def get_api_pvs():
-    """
-    Return the list of physical volumes configured for lvm and available in the
-    system using flags to include common metadata associated with them like the uuid
-
-    This will only return physical volumes set up to work with LVM.
-
-    Command and delimited output should look like::
-
-        $ pvs --noheadings --readonly --separator=';' -o pv_name,pv_tags,pv_uuid
-          /dev/sda1;;
-          /dev/sdv;;07A4F654-4162-4600-8EB3-88D1E42F368D
-
-    """
-    stdout, stderr, returncode = process.call(
-        ['pvs', '--no-heading', '--readonly', '--separator=";"', '-o',
-         PV_FIELDS],
-        verbose_on_failure=False
-    )
-
-    return _output_parser(stdout, PV_FIELDS)
-
-
 class PVolume(object):
     """
     Represents a Physical Volume from LVM, with some top-level attributes like
@@ -347,7 +376,8 @@ class PVolume(object):
             self.set_tag(k, v)
         # after setting all the tags, refresh them for the current object, use the
         # pv_* identifiers to filter because those shouldn't change
-        pv_object = get_pv(pv_name=self.pv_name, pv_uuid=self.pv_uuid)
+        pv_object = self.get_first_pv(filter={'pv_name': self.pv_name,
+                                              'pv_uuid': self.pv_uuid})
         self.tags = pv_object.tags
 
     def set_tag(self, key, value):
@@ -375,100 +405,6 @@ class PVolume(object):
         )
 
 
-class PVolumes(list):
-    """
-    A list of all known (physical) volumes for the current system, with the ability
-    to filter them via keyword arguments.
-    """
-
-    def __init__(self, populate=True):
-        if populate:
-            self._populate()
-
-    def _populate(self):
-        # get all the pvs in the current system
-        for pv_item in get_api_pvs():
-            self.append(PVolume(**pv_item))
-
-    def _purge(self):
-        """
-        Deplete all the items in the list, used internally only so that we can
-        dynamically allocate the items when filtering without the concern of
-        messing up the contents
-        """
-        self[:] = []
-
-    def _filter(self, pv_name=None, pv_uuid=None, pv_tags=None):
-        """
-        The actual method that filters using a new list. Useful so that other
-        methods that do not want to alter the contents of the list (e.g.
-        ``self.find``) can operate safely.
-        """
-        filtered = [i for i in self]
-        if pv_name:
-            filtered = [i for i in filtered if i.pv_name == pv_name]
-
-        if pv_uuid:
-            filtered = [i for i in filtered if i.pv_uuid == pv_uuid]
-
-        # at this point, `filtered` has either all the physical volumes in self
-        # or is an actual filtered list if any filters were applied
-        if pv_tags:
-            tag_filtered = []
-            for pvolume in filtered:
-                matches = all(pvolume.tags.get(k) == str(v) for k, v in pv_tags.items())
-                if matches:
-                    tag_filtered.append(pvolume)
-            # return the tag_filtered pvolumes here, the `filtered` list is no
-            # longer usable
-            return tag_filtered
-
-        return filtered
-
-    def filter(self, pv_name=None, pv_uuid=None, pv_tags=None):
-        """
-        Filter out volumes on top level attributes like ``pv_name`` or by
-        ``pv_tags`` where a dict is required. For example, to find a physical
-        volume that has an OSD ID of 0, the filter would look like::
-
-            pv_tags={'ceph.osd_id': '0'}
-
-        """
-        if not any([pv_name, pv_uuid, pv_tags]):
-            raise TypeError('.filter() requires pv_name, pv_uuid, or pv_tags'
-                            '(none given)')
-
-        filtered_pvs = PVolumes(populate=False)
-        filtered_pvs.extend(self._filter(pv_name, pv_uuid, pv_tags))
-        return filtered_pvs
-
-    def get(self, pv_name=None, pv_uuid=None, pv_tags=None):
-        """
-        This is a bit expensive, since it will try to filter out all the
-        matching items in the list, filter them out applying anything that was
-        added and return the matching item.
-
-        This method does *not* alter the list, and it will raise an error if
-        multiple pvs are matched
-
-        It is useful to use ``tags`` when trying to find a specific logical volume,
-        but it can also lead to multiple pvs being found, since a lot of metadata
-        is shared between pvs of a distinct OSD.
-        """
-        if not any([pv_name, pv_uuid, pv_tags]):
-            return None
-        pvs = self._filter(
-            pv_name=pv_name,
-            pv_uuid=pv_uuid,
-            pv_tags=pv_tags
-        )
-        if not pvs:
-            return None
-        if len(pvs) > 1 and pv_tags:
-            raise MultiplePVsError(pv_name)
-        return pvs[0]
-
-
 def create_pv(device):
     """
     Create a physical volume from a device, useful when devices need to be later mapped
@@ -510,18 +446,40 @@ def remove_pv(pv_name):
     )
 
 
-def get_pv(pv_name=None, pv_uuid=None, pv_tags=None, pvs=None):
+def get_pvs(fields=PV_FIELDS, filters='', tags=None):
     """
-    Return a matching pv (physical volume) for the current system, requiring
-    ``pv_name``, ``pv_uuid``, or ``pv_tags``. Raises an error if more than one
-    pv is found.
+    Return a list of PVs that are available on the system and match the
+    filters and tags passed. Argument filters takes a dictionary containing
+    arguments required by -S option of LVM. Passing a list of LVM tags can be
+    quite tricky to pass as a dictionary within dictionary, therefore pass
+    dictionary of tags via tags argument and tricky part will be taken care of
+    by the helper methods.
+
+    :param fields: string containing list of fields to be displayed by the
+                   pvs command
+    :param sep: string containing separator to be used between two fields
+    :param filters: dictionary containing LVM filters
+    :param tags: dictionary containng LVM tags
+    :returns: list of class PVolume object representing pvs on the system
     """
-    if not any([pv_name, pv_uuid, pv_tags]):
-        return None
-    if pvs is None or len(pvs) == 0:
-        pvs = PVolumes()
+    filters = make_filters_lvmcmd_ready(filters, tags)
+    args = ['pvs', '--no-heading', '--readonly', '--separator=";"', '-S',
+            filters, '-o', fields]
+
+    stdout, stderr, returncode = process.call(args, verbose_on_failure=False)
+    pvs_report = _output_parser(stdout, fields)
+    return [PVolume(**pv_report) for pv_report in pvs_report]
+
 
-    return pvs.get(pv_name=pv_name, pv_uuid=pv_uuid, pv_tags=pv_tags)
+def get_first_pv(fields=PV_FIELDS, filters=None, tags=None):
+    """
+    Wrapper of get_pv meant to be a convenience method to avoid the phrase::
+        pvs = get_pvs()
+        if len(pvs) >= 1:
+            pv = pvs[0]
+    """
+    pvs = get_pvs(fields=fields, filters=filters, tags=tags)
+    return pvs[0] if len(pvs) > 0 else []
 
 
 ################################
@@ -534,27 +492,6 @@ VG_FIELDS = 'vg_name,pv_count,lv_count,vg_attr,vg_extent_count,vg_free_count,vg_
 VG_CMD_OPTIONS = ['--noheadings', '--readonly', '--units=b', '--nosuffix', '--separator=";"']
 
 
-def get_api_vgs():
-    """
-    Return the list of group volumes available in the system using flags to
-    include common metadata associated with them
-
-    Command and sample delimited output should look like::
-
-        $ vgs --noheadings --units=b --readonly --separator=';' \
-          -o vg_name,pv_count,lv_count,vg_attr,vg_free_count,vg_extent_size
-          ubuntubox-vg;1;2;wz--n-;12;
-
-    To normalize sizing, the units are forced in 'g' which is equivalent to
-    gigabytes, which uses multiples of 1024 (as opposed to 1000)
-    """
-    stdout, stderr, returncode = process.call(
-        ['vgs'] + VG_CMD_OPTIONS + ['-o', VG_FIELDS],
-        verbose_on_failure=False
-    )
-    return _output_parser(stdout, VG_FIELDS)
-
-
 class VolumeGroup(object):
     """
     Represents an LVM group, with some top-level attributes like ``vg_name``
@@ -655,98 +592,6 @@ class VolumeGroup(object):
         return int(int(self.vg_free_count) / slots)
 
 
-class VolumeGroups(list):
-    """
-    A list of all known volume groups for the current system, with the ability
-    to filter them via keyword arguments.
-    """
-
-    def __init__(self, populate=True):
-        if populate:
-            self._populate()
-
-    def _populate(self):
-        # get all the vgs in the current system
-        for vg_item in get_api_vgs():
-            self.append(VolumeGroup(**vg_item))
-
-    def _purge(self):
-        """
-        Deplete all the items in the list, used internally only so that we can
-        dynamically allocate the items when filtering without the concern of
-        messing up the contents
-        """
-        self[:] = []
-
-    def _filter(self, vg_name=None, vg_tags=None):
-        """
-        The actual method that filters using a new list. Useful so that other
-        methods that do not want to alter the contents of the list (e.g.
-        ``self.find``) can operate safely.
-
-        .. note:: ``vg_tags`` is not yet implemented
-        """
-        filtered = [i for i in self]
-        if vg_name:
-            filtered = [i for i in filtered if i.vg_name == vg_name]
-
-        # at this point, `filtered` has either all the volumes in self or is an
-        # actual filtered list if any filters were applied
-        if vg_tags:
-            tag_filtered = []
-            for volume in filtered:
-                matches = all(volume.tags.get(k) == str(v) for k, v in vg_tags.items())
-                if matches:
-                    tag_filtered.append(volume)
-            return tag_filtered
-
-        return filtered
-
-    def filter(self, vg_name=None, vg_tags=None):
-        """
-        Filter out groups on top level attributes like ``vg_name`` or by
-        ``vg_tags`` where a dict is required. For example, to find a Ceph group
-        with dmcache as the type, the filter would look like::
-
-            vg_tags={'ceph.type': 'dmcache'}
-
-        .. warning:: These tags are not documented because they are currently
-                     unused, but are here to maintain API consistency
-        """
-        if not any([vg_name, vg_tags]):
-            raise TypeError('.filter() requires vg_name or vg_tags (none given)')
-
-        filtered_vgs = VolumeGroups(populate=False)
-        filtered_vgs.extend(self._filter(vg_name, vg_tags))
-        return filtered_vgs
-
-    def get(self, vg_name=None, vg_tags=None):
-        """
-        This is a bit expensive, since it will try to filter out all the
-        matching items in the list, filter them out applying anything that was
-        added and return the matching item.
-
-        This method does *not* alter the list, and it will raise an error if
-        multiple VGs are matched
-
-        It is useful to use ``tags`` when trying to find a specific volume group,
-        but it can also lead to multiple vgs being found (although unlikely)
-        """
-        if not any([vg_name, vg_tags]):
-            return None
-        vgs = self._filter(
-            vg_name=vg_name,
-            vg_tags=vg_tags
-        )
-        if not vgs:
-            return None
-        if len(vgs) > 1:
-            # this is probably never going to happen, but it is here to keep
-            # the API code consistent
-            raise MultipleVGsError(vg_name)
-        return vgs[0]
-
-
 def create_vg(devices, name=None, name_prefix=None):
     """
     Create a Volume Group. Command looks like::
@@ -776,8 +621,7 @@ def create_vg(devices, name=None, name_prefix=None):
         name] + devices
     )
 
-    vg = get_vg(vg_name=name)
-    return vg
+    return get_first_vg(filters={'vg_name': name})
 
 
 def extend_vg(vg, devices):
@@ -801,8 +645,7 @@ def extend_vg(vg, devices):
         vg.name] + devices
     )
 
-    vg = get_vg(vg_name=vg.name)
-    return vg
+    return get_first_vg(filters={'vg_name': vg.name})
 
 
 def reduce_vg(vg, devices):
@@ -824,8 +667,7 @@ def reduce_vg(vg, devices):
         vg.name] + devices
     )
 
-    vg = get_vg(vg_name=vg.name)
-    return vg
+    return get_first_vg(filter={'vg_name': vg.name})
 
 
 def remove_vg(vg_name):
@@ -847,20 +689,39 @@ def remove_vg(vg_name):
     )
 
 
-def get_vg(vg_name=None, vg_tags=None, vgs=None):
+def get_vgs(fields=VG_FIELDS, filters='', tags=None):
     """
-    Return a matching vg for the current system, requires ``vg_name`` or
-    ``tags``. Raises an error if more than one vg is found.
+    Return a list of VGs that are available on the system and match the
+    filters and tags passed. Argument filters takes a dictionary containing
+    arguments required by -S option of LVM. Passing a list of LVM tags can be
+    quite tricky to pass as a dictionary within dictionary, therefore pass
+    dictionary of tags via tags argument and tricky part will be taken care of
+    by the helper methods.
 
-    It is useful to use ``tags`` when trying to find a specific volume group,
-    but it can also lead to multiple vgs being found.
+    :param fields: string containing list of fields to be displayed by the
+                   vgs command
+    :param sep: string containing separator to be used between two fields
+    :param filters: dictionary containing LVM filters
+    :param tags: dictionary containng LVM tags
+    :returns: list of class VolumeGroup object representing vgs on the system
     """
-    if not any([vg_name, vg_tags]):
-        return None
-    if vgs is None or len(vgs) == 0:
-        vgs = VolumeGroups()
+    filters = make_filters_lvmcmd_ready(filters, tags)
+    args = ['vgs'] + VG_CMD_OPTIONS + ['-S', filters, '-o', fields]
 
-    return vgs.get(vg_name=vg_name, vg_tags=vg_tags)
+    stdout, stderr, returncode = process.call(args, verbose_on_failure=False)
+    vgs_report =_output_parser(stdout, fields)
+    return [VolumeGroup(**vg_report) for vg_report in vgs_report]
+
+
+def get_first_vg(fields=VG_FIELDS, filters=None, tags=None):
+    """
+    Wrapper of get_vg meant to be a convenience method to avoid the phrase::
+        vgs = get_vgs()
+        if len(vgs) >= 1:
+            vg = vgs[0]
+    """
+    vgs = get_vgs(fields=fields, filters=filters, tags=tags)
+    return vgs[0] if len(vgs) > 0 else []
 
 
 def get_device_vgs(device, name_prefix=''):
@@ -881,24 +742,6 @@ def get_device_vgs(device, name_prefix=''):
 LV_FIELDS = 'lv_tags,lv_path,lv_name,vg_name,lv_uuid,lv_size'
 LV_CMD_OPTIONS =  ['--noheadings', '--readonly', '--separator=";"', '-a']
 
-def get_api_lvs():
-    """
-    Return the list of logical volumes available in the system using flags to include common
-    metadata associated with them
-
-    Command and delimited output should look like::
-
-        $ lvs --noheadings --readonly --separator=';' -a -o lv_tags,lv_path,lv_name,vg_name
-          ;/dev/ubuntubox-vg/root;root;ubuntubox-vg
-          ;/dev/ubuntubox-vg/swap_1;swap_1;ubuntubox-vg
-
-    """
-    stdout, stderr, returncode = process.call(
-        ['lvs'] + LV_CMD_OPTIONS +  ['-o', LV_FIELDS],
-        verbose_on_failure=False
-    )
-    return _output_parser(stdout, LV_FIELDS)
-
 
 class Volume(object):
     """
@@ -1025,113 +868,6 @@ class Volume(object):
         process.call(['lvchange', '-an', self.lv_path])
 
 
-class Volumes(list):
-    """
-    A list of all known (logical) volumes for the current system, with the ability
-    to filter them via keyword arguments.
-    """
-
-    def __init__(self):
-        self._populate()
-
-    def _populate(self):
-        # get all the lvs in the current system
-        for lv_item in get_api_lvs():
-            self.append(Volume(**lv_item))
-
-    def _purge(self):
-        """
-        Delete all the items in the list, used internally only so that we can
-        dynamically allocate the items when filtering without the concern of
-        messing up the contents
-        """
-        self[:] = []
-
-    def _filter(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
-        """
-        The actual method that filters using a new list. Useful so that other
-        methods that do not want to alter the contents of the list (e.g.
-        ``self.find``) can operate safely.
-        """
-        filtered = [i for i in self]
-        if lv_name:
-            filtered = [i for i in filtered if i.lv_name == lv_name]
-
-        if vg_name:
-            filtered = [i for i in filtered if i.vg_name == vg_name]
-
-        if lv_uuid:
-            filtered = [i for i in filtered if i.lv_uuid == lv_uuid]
-
-        if lv_path:
-            filtered = [i for i in filtered if i.lv_path == lv_path]
-
-        # at this point, `filtered` has either all the volumes in self or is an
-        # actual filtered list if any filters were applied
-        if lv_tags:
-            tag_filtered = []
-            for volume in filtered:
-                # all the tags we got need to match on the volume
-                matches = all(volume.tags.get(k) == str(v) for k, v in lv_tags.items())
-                if matches:
-                    tag_filtered.append(volume)
-            return tag_filtered
-
-        return filtered
-
-    def filter(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
-        """
-        Filter out volumes on top level attributes like ``lv_name`` or by
-        ``lv_tags`` where a dict is required. For example, to find a volume
-        that has an OSD ID of 0, the filter would look like::
-
-            lv_tags={'ceph.osd_id': '0'}
-
-        """
-        if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
-            raise TypeError('.filter() requires lv_name, vg_name, lv_path, lv_uuid, or tags (none given)')
-        # first find the filtered volumes with the values in self
-        filtered_volumes = self._filter(
-            lv_name=lv_name,
-            vg_name=vg_name,
-            lv_path=lv_path,
-            lv_uuid=lv_uuid,
-            lv_tags=lv_tags
-        )
-        # then purge everything
-        self._purge()
-        # and add the filtered items
-        self.extend(filtered_volumes)
-
-    def get(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
-        """
-        This is a bit expensive, since it will try to filter out all the
-        matching items in the list, filter them out applying anything that was
-        added and return the matching item.
-
-        This method does *not* alter the list, and it will raise an error if
-        multiple LVs are matched
-
-        It is useful to use ``tags`` when trying to find a specific logical volume,
-        but it can also lead to multiple lvs being found, since a lot of metadata
-        is shared between lvs of a distinct OSD.
-        """
-        if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
-            return None
-        lvs = self._filter(
-            lv_name=lv_name,
-            vg_name=vg_name,
-            lv_path=lv_path,
-            lv_uuid=lv_uuid,
-            lv_tags=lv_tags
-        )
-        if not lvs:
-            return None
-        if len(lvs) > 1:
-            raise MultipleLVsError(lv_name, lv_path)
-        return lvs[0]
-
-
 def create_lv(name_prefix,
               uuid,
               vg=None,
@@ -1204,7 +940,7 @@ def create_lv(name_prefix,
         ]
     process.run(command)
 
-    lv = get_lv(lv_name=name, vg_name=vg.vg_name)
+    lv = get_first_lv(filters={'lv_name': name, 'vg_name': vg.vg_name})
 
     if tags is None:
         tags = {
@@ -1233,104 +969,6 @@ def create_lv(name_prefix,
     return lv
 
 
-def remove_lv(lv):
-    """
-    Removes a logical volume given it's absolute path.
-
-    Will return True if the lv is successfully removed or
-    raises a RuntimeError if the removal fails.
-
-    :param lv: A ``Volume`` object or the path for an LV
-    """
-    if isinstance(lv, Volume):
-        path = lv.lv_path
-    else:
-        path = lv
-
-    stdout, stderr, returncode = process.call(
-        [
-            'lvremove',
-            '-v',  # verbose
-            '-f',  # force it
-            path
-        ],
-        show_command=True,
-        terminal_verbose=True,
-    )
-    if returncode != 0:
-        raise RuntimeError("Unable to remove %s" % path)
-    return True
-
-
-def is_lv(dev, lvs=None):
-    """
-    Boolean to detect if a device is an LV or not.
-    """
-    splitname = dmsetup_splitname(dev)
-    # Allowing to optionally pass `lvs` can help reduce repetitive checks for
-    # multiple devices at once.
-    if lvs is None or len(lvs) == 0:
-        lvs = Volumes()
-
-    if splitname.get('LV_NAME'):
-        lvs.filter(lv_name=splitname['LV_NAME'], vg_name=splitname['VG_NAME'])
-        return len(lvs) > 0
-    return False
-
-def get_lv_by_name(name):
-    stdout, stderr, returncode = process.call(
-        ['lvs', '--noheadings', '-o', LV_FIELDS, '-S',
-         'lv_name={}'.format(name)],
-        verbose_on_failure=False
-    )
-    lvs = _output_parser(stdout, LV_FIELDS)
-    return [Volume(**lv) for lv in lvs]
-
-def get_lvs_by_tag(lv_tag):
-    stdout, stderr, returncode = process.call(
-        ['lvs', '--noheadings', '--separator=";"', '-a', '-o', LV_FIELDS, '-S',
-         'lv_tags={{{}}}'.format(lv_tag)],
-        verbose_on_failure=False
-    )
-    lvs = _output_parser(stdout, LV_FIELDS)
-    return [Volume(**lv) for lv in lvs]
-
-def get_lv(lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None, lvs=None):
-    """
-    Return a matching lv for the current system, requiring ``lv_name``,
-    ``vg_name``, ``lv_path`` or ``tags``. Raises an error if more than one lv
-    is found.
-
-    It is useful to use ``tags`` when trying to find a specific logical volume,
-    but it can also lead to multiple lvs being found, since a lot of metadata
-    is shared between lvs of a distinct OSD.
-    """
-    if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
-        return None
-    if lvs is None:
-        lvs = Volumes()
-    return lvs.get(
-        lv_name=lv_name, vg_name=vg_name, lv_path=lv_path, lv_uuid=lv_uuid,
-        lv_tags=lv_tags
-    )
-
-
-def get_lv_from_argument(argument):
-    """
-    Helper proxy function that consumes a possible logical volume passed in from the CLI
-    in the form of `vg/lv`, but with some validation so that an argument that is a full
-    path to a device can be ignored
-    """
-    if argument.startswith('/'):
-        lv = get_lv(lv_path=argument)
-        return lv
-    try:
-        vg_name, lv_name = argument.split('/')
-    except (ValueError, AttributeError):
-        return None
-    return get_lv(lv_name=lv_name, vg_name=vg_name)
-
-
 def create_lvs(volume_group, parts=None, size=None, name_prefix='ceph-lv'):
     """
     Create multiple Logical Volumes from a Volume Group by calculating the
@@ -1374,141 +1012,34 @@ def create_lvs(volume_group, parts=None, size=None, name_prefix='ceph-lv'):
     return lvs
 
 
-def get_device_lvs(device, name_prefix=''):
-    stdout, stderr, returncode = process.call(
-        ['pvs'] + LV_CMD_OPTIONS + ['-o', LV_FIELDS, device],
-        verbose_on_failure=False
-    )
-    lvs = _output_parser(stdout, LV_FIELDS)
-    return [Volume(**lv) for lv in lvs if lv['lv_name'] and
-            lv['lv_name'].startswith(name_prefix)]
-
-
-#############################################################
-#
-# New methods to get PVs, LVs, and VGs.
-# Later, these can be easily merged with get_api_* methods
-#
-###########################################################
-
-def convert_filters_to_str(filters):
-    """
-    Convert filter args from dictionary to following format -
-        filters={filter_name=filter_val,...}
-    """
-    if not filters:
-        return filters
-
-    filter_arg = ''
-    for k, v in filters.items():
-        filter_arg += k + '=' + v + ','
-    # get rid of extra comma at the end
-    filter_arg = filter_arg[:len(filter_arg) - 1]
-
-    return filter_arg
-
-def convert_tags_to_str(tags):
-    """
-    Convert tags from dictionary to following format -
-        tags={tag_name=tag_val,...}
+def remove_lv(lv):
     """
-    if not tags:
-        return tags
-
-    tag_arg = 'tags={'
-    for k, v in tags.items():
-        tag_arg += k + '=' + v + ','
-    # get rid of extra comma at the end
-    tag_arg = tag_arg[:len(tag_arg) - 1] + '}'
-
-    return tag_arg
+    Removes a logical volume given it's absolute path.
 
-def make_filters_lvmcmd_ready(filters, tags):
-    """
-    Convert filters (including tags) from dictionary to following format -
-        filter_name=filter_val...,tags={tag_name=tag_val,...}
+    Will return True if the lv is successfully removed or
+    raises a RuntimeError if the removal fails.
 
-    The command will look as follows =
-        lvs -S filter_name=filter_val...,tags={tag_name=tag_val,...}
+    :param lv: A ``Volume`` object or the path for an LV
     """
-    filters = convert_filters_to_str(filters)
-    tags = convert_tags_to_str(tags)
-
-    if filters and tags:
-        return filters + ',' + tags
-    if filters and not tags:
-        return filters
-    if not filters and tags:
-        return tags
+    if isinstance(lv, Volume):
+        path = lv.lv_path
     else:
-        return ''
-
-def get_pvs(fields=PV_FIELDS, filters='', tags=None):
-    """
-    Return a list of PVs that are available on the system and match the
-    filters and tags passed. Argument filters takes a dictionary containing
-    arguments required by -S option of LVM. Passing a list of LVM tags can be
-    quite tricky to pass as a dictionary within dictionary, therefore pass
-    dictionary of tags via tags argument and tricky part will be taken care of
-    by the helper methods.
-
-    :param fields: string containing list of fields to be displayed by the
-                   pvs command
-    :param sep: string containing separator to be used between two fields
-    :param filters: dictionary containing LVM filters
-    :param tags: dictionary containng LVM tags
-    :returns: list of class PVolume object representing pvs on the system
-    """
-    filters = make_filters_lvmcmd_ready(filters, tags)
-    args = ['pvs', '--no-heading', '--readonly', '--separator=";"', '-S',
-            filters, '-o', fields]
-
-    stdout, stderr, returncode = process.call(args, verbose_on_failure=False)
-    pvs_report = _output_parser(stdout, fields)
-    return [PVolume(**pv_report) for pv_report in pvs_report]
-
-def get_first_pv(fields=PV_FIELDS, filters=None, tags=None):
-    """
-    Wrapper of get_pv meant to be a convenience method to avoid the phrase::
-        pvs = get_pvs()
-        if len(pvs) >= 1:
-            pv = pvs[0]
-    """
-    pvs = get_pvs(fields=fields, filters=filters, tags=tags)
-    return pvs[0] if len(pvs) > 0 else []
-
-def get_vgs(fields=VG_FIELDS, filters='', tags=None):
-    """
-    Return a list of VGs that are available on the system and match the
-    filters and tags passed. Argument filters takes a dictionary containing
-    arguments required by -S option of LVM. Passing a list of LVM tags can be
-    quite tricky to pass as a dictionary within dictionary, therefore pass
-    dictionary of tags via tags argument and tricky part will be taken care of
-    by the helper methods.
-
-    :param fields: string containing list of fields to be displayed by the
-                   vgs command
-    :param sep: string containing separator to be used between two fields
-    :param filters: dictionary containing LVM filters
-    :param tags: dictionary containng LVM tags
-    :returns: list of class VolumeGroup object representing vgs on the system
-    """
-    filters = make_filters_lvmcmd_ready(filters, tags)
-    args = ['vgs'] + VG_CMD_OPTIONS + ['-S', filters, '-o', fields]
+        path = lv
 
-    stdout, stderr, returncode = process.call(args, verbose_on_failure=False)
-    vgs_report =_output_parser(stdout, fields)
-    return [VolumeGroup(**vg_report) for vg_report in vgs_report]
+    stdout, stderr, returncode = process.call(
+        [
+            'lvremove',
+            '-v',  # verbose
+            '-f',  # force it
+            path
+        ],
+        show_command=True,
+        terminal_verbose=True,
+    )
+    if returncode != 0:
+        raise RuntimeError("Unable to remove %s" % path)
+    return True
 
-def get_first_vg(fields=VG_FIELDS, filters=None, tags=None):
-    """
-    Wrapper of get_vg meant to be a convenience method to avoid the phrase::
-        vgs = get_vgs()
-        if len(vgs) >= 1:
-            vg = vgs[0]
-    """
-    vgs = get_vgs(fields=fields, filters=filters, tags=tags)
-    return vgs[0] if len(vgs) > 0 else []
 
 def get_lvs(fields=LV_FIELDS, filters='', tags=None):
     """
@@ -1533,6 +1064,7 @@ def get_lvs(fields=LV_FIELDS, filters='', tags=None):
     lvs_report = _output_parser(stdout, fields)
     return [Volume(**lv_report) for lv_report in lvs_report]
 
+
 def get_first_lv(fields=LV_FIELDS, filters=None, tags=None):
     """
     Wrapper of get_lv meant to be a convenience method to avoid the phrase::
@@ -1542,3 +1074,33 @@ def get_first_lv(fields=LV_FIELDS, filters=None, tags=None):
     """
     lvs = get_lvs(fields=fields, filters=filters, tags=tags)
     return lvs[0] if len(lvs) > 0 else []
+
+
+def get_lv_by_name(name):
+    stdout, stderr, returncode = process.call(
+        ['lvs', '--noheadings', '-o', LV_FIELDS, '-S',
+         'lv_name={}'.format(name)],
+        verbose_on_failure=False
+    )
+    lvs = _output_parser(stdout, LV_FIELDS)
+    return [Volume(**lv) for lv in lvs]
+
+
+def get_lvs_by_tag(lv_tag):
+    stdout, stderr, returncode = process.call(
+        ['lvs', '--noheadings', '--separator=";"', '-a', '-o', LV_FIELDS, '-S',
+         'lv_tags={{{}}}'.format(lv_tag)],
+        verbose_on_failure=False
+    )
+    lvs = _output_parser(stdout, LV_FIELDS)
+    return [Volume(**lv) for lv in lvs]
+
+
+def get_device_lvs(device, name_prefix=''):
+    stdout, stderr, returncode = process.call(
+        ['pvs'] + LV_CMD_OPTIONS + ['-o', LV_FIELDS, device],
+        verbose_on_failure=False
+    )
+    lvs = _output_parser(stdout, LV_FIELDS)
+    return [Volume(**lv) for lv in lvs if lv['lv_name'] and
+            lv['lv_name'].startswith(name_prefix)]
index 61d2275339670e02f8be2592ab2ecba5f90ffc65..e4ac074a4f4147e935528b94df250f68cdf823fe 100644 (file)
@@ -15,30 +15,40 @@ from .listing import direct_report
 logger = logging.getLogger(__name__)
 
 
-def activate_filestore(lvs, no_systemd=False):
+def activate_filestore(osd_lvs, no_systemd=False):
     # find the osd
-    osd_lv = lvs.get(lv_tags={'ceph.type': 'data'})
-    if not osd_lv:
+    for osd_lv in osd_lvs:
+        if osd_lv.tags.get('ceph.type') == 'data':
+            data_lv = osd_lv
+            break
+    else:
         raise RuntimeError('Unable to find a data LV for filestore activation')
-    is_encrypted = osd_lv.tags.get('ceph.encrypted', '0') == '1'
-    is_vdo = osd_lv.tags.get('ceph.vdo', '0')
 
-    osd_id = osd_lv.tags['ceph.osd_id']
-    configuration.load_ceph_conf_path(osd_lv.tags['ceph.cluster_name'])
+    is_encrypted = data_lv.tags.get('ceph.encrypted', '0') == '1'
+    is_vdo = data_lv.tags.get('ceph.vdo', '0')
+
+    osd_id = data_lv.tags['ceph.osd_id']
+    configuration.load_ceph_conf_path(data_lv.tags['ceph.cluster_name'])
     configuration.load()
     # it may have a volume with a journal
-    osd_journal_lv = lvs.get(lv_tags={'ceph.type': 'journal'})
+    for osd_lv in osd_lvs:
+        if osd_lv.tags.get('ceph.type') == 'journal':
+            osd_journal_lv = osd_lv
+            break
+    else:
+        osd_journal_lv = None
+
     # TODO: add sensible error reporting if this is ever the case
     # blow up with a KeyError if this doesn't exist
-    osd_fsid = osd_lv.tags['ceph.osd_fsid']
+    osd_fsid = data_lv.tags['ceph.osd_fsid']
     if not osd_journal_lv:
         # must be a disk partition, by querying blkid by the uuid we are ensuring that the
         # device path is always correct
-        journal_uuid = osd_lv.tags['ceph.journal_uuid']
+        journal_uuid = data_lv.tags['ceph.journal_uuid']
         osd_journal = disk.get_device_from_partuuid(journal_uuid)
     else:
         journal_uuid = osd_journal_lv.lv_uuid
-        osd_journal = osd_lv.tags['ceph.journal_device']
+        osd_journal = data_lv.tags['ceph.journal_device']
 
     if not osd_journal:
         raise RuntimeError('unable to detect an lv or device journal for OSD %s' % osd_id)
@@ -46,17 +56,17 @@ def activate_filestore(lvs, no_systemd=False):
     # this is done here, so that previous checks that ensure path availability
     # and correctness can still be enforced, and report if any issues are found
     if is_encrypted:
-        lockbox_secret = osd_lv.tags['ceph.cephx_lockbox_secret']
+        lockbox_secret = data_lv.tags['ceph.cephx_lockbox_secret']
         # this keyring writing is idempotent
         encryption_utils.write_lockbox_keyring(osd_id, osd_fsid, lockbox_secret)
         dmcrypt_secret = encryption_utils.get_dmcrypt_key(osd_id, osd_fsid)
-        encryption_utils.luks_open(dmcrypt_secret, osd_lv.lv_path, osd_lv.lv_uuid)
+        encryption_utils.luks_open(dmcrypt_secret, data_lv.lv_path, data_lv.lv_uuid)
         encryption_utils.luks_open(dmcrypt_secret, osd_journal, journal_uuid)
 
         osd_journal = '/dev/mapper/%s' % journal_uuid
-        source = '/dev/mapper/%s' % osd_lv.lv_uuid
+        source = '/dev/mapper/%s' % data_lv.lv_uuid
     else:
-        source = osd_lv.lv_path
+        source = data_lv.lv_path
 
     # mount the osd
     destination = '/var/lib/ceph/osd/%s-%s' % (conf.cluster, osd_id)
@@ -86,24 +96,33 @@ def activate_filestore(lvs, no_systemd=False):
     terminal.success("ceph-volume lvm activate successful for osd ID: %s" % osd_id)
 
 
-def get_osd_device_path(osd_lv, lvs, device_type, dmcrypt_secret=None):
+def get_osd_device_path(osd_lvs, device_type, dmcrypt_secret=None):
     """
-    ``device_type`` can be one of ``db``, ``wal`` or ``block`` so that
-    we can query ``lvs`` (a ``Volumes`` object) and fallback to querying the uuid
-    if that is not present.
+    ``device_type`` can be one of ``db``, ``wal`` or ``block`` so that we can
+     query LVs on system and fallback to querying the uuid if that is not
+     present.
 
-    Return a path if possible, failing to do that a ``None``, since some of these devices
-    are optional
+    Return a path if possible, failing to do that a ``None``, since some of
+    these devices are optional.
     """
-    osd_lv = lvs.get(lv_tags={'ceph.type': 'block'})
-    is_encrypted = osd_lv.tags.get('ceph.encrypted', '0') == '1'
-    logger.debug('Found block device (%s) with encryption: %s', osd_lv.name, is_encrypted)
-    uuid_tag = 'ceph.%s_uuid' % device_type
-    device_uuid = osd_lv.tags.get(uuid_tag)
-    if not device_uuid:
-        return None
-
-    device_lv = lvs.get(lv_tags={'ceph.type': device_type})
+    osd_block_lv = None
+    for lv in osd_lvs:
+        if lv.tags.get('ceph.type') == 'block':
+            osd_block_lv = lv
+            break
+    if osd_block_lv:
+        is_encrypted = osd_block_lv.tags.get('ceph.encrypted', '0') == '1'
+        logger.debug('Found block device (%s) with encryption: %s', osd_block_lv.name, is_encrypted)
+        uuid_tag = 'ceph.%s_uuid' % device_type
+        device_uuid = osd_block_lv.tags.get(uuid_tag)
+        if not device_uuid:
+            return None
+
+    device_lv = None
+    for lv in osd_lvs:
+        if lv.tags.get('ceph.type') == device_type:
+            device_lv = lv
+            break
     if device_lv:
         if is_encrypted:
             encryption_utils.luks_open(dmcrypt_secret, device_lv.lv_path, device_uuid)
@@ -121,16 +140,19 @@ def get_osd_device_path(osd_lv, lvs, device_type, dmcrypt_secret=None):
     raise RuntimeError('could not find %s with uuid %s' % (device_type, device_uuid))
 
 
-def activate_bluestore(lvs, no_systemd=False):
-    # find the osd
-    osd_lv = lvs.get(lv_tags={'ceph.type': 'block'})
-    if not osd_lv:
+def activate_bluestore(osd_lvs, no_systemd=False):
+    for lv in osd_lvs:
+        if lv.tags.get('ceph.type') == 'block':
+            osd_block_lv = lv
+            break
+    else:
         raise RuntimeError('could not find a bluestore OSD to activate')
-    is_encrypted = osd_lv.tags.get('ceph.encrypted', '0') == '1'
+
+    is_encrypted = osd_block_lv.tags.get('ceph.encrypted', '0') == '1'
     dmcrypt_secret = None
-    osd_id = osd_lv.tags['ceph.osd_id']
-    conf.cluster = osd_lv.tags['ceph.cluster_name']
-    osd_fsid = osd_lv.tags['ceph.osd_fsid']
+    osd_id = osd_block_lv.tags['ceph.osd_id']
+    conf.cluster = osd_block_lv.tags['ceph.cluster_name']
+    osd_fsid = osd_block_lv.tags['ceph.osd_fsid']
 
     # mount on tmpfs the osd directory
     osd_path = '/var/lib/ceph/osd/%s-%s' % (conf.cluster, osd_id)
@@ -145,16 +167,16 @@ def activate_bluestore(lvs, no_systemd=False):
             os.unlink(os.path.join(osd_path, link_name))
     # encryption is handled here, before priming the OSD dir
     if is_encrypted:
-        osd_lv_path = '/dev/mapper/%s' % osd_lv.lv_uuid
-        lockbox_secret = osd_lv.tags['ceph.cephx_lockbox_secret']
+        osd_lv_path = '/dev/mapper/%s' % osd_block_lv.lv_uuid
+        lockbox_secret = osd_block_lv.tags['ceph.cephx_lockbox_secret']
         encryption_utils.write_lockbox_keyring(osd_id, osd_fsid, lockbox_secret)
         dmcrypt_secret = encryption_utils.get_dmcrypt_key(osd_id, osd_fsid)
-        encryption_utils.luks_open(dmcrypt_secret, osd_lv.lv_path, osd_lv.lv_uuid)
+        encryption_utils.luks_open(dmcrypt_secret, osd_block_lv.lv_path, osd_block_lv.lv_uuid)
     else:
-        osd_lv_path = osd_lv.lv_path
+        osd_lv_path = osd_block_lv.lv_path
 
-    db_device_path = get_osd_device_path(osd_lv, lvs, 'db', dmcrypt_secret=dmcrypt_secret)
-    wal_device_path = get_osd_device_path(osd_lv, lvs, 'wal', dmcrypt_secret=dmcrypt_secret)
+    db_device_path = get_osd_device_path(osd_lvs, 'db', dmcrypt_secret=dmcrypt_secret)
+    wal_device_path = get_osd_device_path(osd_lvs, 'wal', dmcrypt_secret=dmcrypt_secret)
 
     # Once symlinks are removed, the osd dir can be 'primed again. chown first,
     # regardless of what currently exists so that ``prime-osd-dir`` can succeed
@@ -235,36 +257,43 @@ class Activate(object):
     def activate(self, args, osd_id=None, osd_fsid=None):
         """
         :param args: The parsed arguments coming from the CLI
-        :param osd_id: When activating all, this gets populated with an existing OSD ID
-        :param osd_fsid: When activating all, this gets populated with an existing OSD FSID
+        :param osd_id: When activating all, this gets populated with an
+                       existing OSD ID
+        :param osd_fsid: When activating all, this gets populated with an
+                         existing OSD FSID
         """
-        osd_id = osd_id if osd_id is not None else args.osd_id
-        osd_fsid = osd_fsid if osd_fsid is not None else args.osd_fsid
+        osd_id = osd_id if osd_id else args.osd_id
+        osd_fsid = osd_fsid if osd_fsid else args.osd_fsid
 
-        lvs = api.Volumes()
-        # filter them down for the OSD ID and FSID we need to activate
         if osd_id and osd_fsid:
-            lvs.filter(lv_tags={'ceph.osd_id': osd_id, 'ceph.osd_fsid': osd_fsid})
-        elif osd_fsid and not osd_id:
-            lvs.filter(lv_tags={'ceph.osd_fsid': osd_fsid})
+            tags = {'ceph.osd_id': osd_id, 'ceph.osd_fsid': osd_fsid}
+        elif not osd_id and osd_fsid:
+            tags = {'ceph.osd_fsid': osd_fsid}
+        lvs = api.get_lvs(tags=tags)
         if not lvs:
-            raise RuntimeError('could not find osd.%s with osd_fsid %s' % (osd_id, osd_fsid))
+            raise RuntimeError('could not find osd.%s with osd_fsid %s' %
+                               (osd_id, osd_fsid))
+
         # This argument is only available when passed in directly or via
         # systemd, not when ``create`` is being used
         if getattr(args, 'auto_detect_objectstore', False):
             logger.info('auto detecting objectstore')
-            # may get multiple lvs, so can't do lvs.get() calls here
+            # may get multiple lvs, so can't do get_the_lvs() calls here
             for lv in lvs:
                 has_journal = lv.tags.get('ceph.journal_uuid')
                 if has_journal:
-                    logger.info('found a journal associated with the OSD, assuming filestore')
-                    return activate_filestore(lvs, no_systemd=args.no_systemd)
-            logger.info('unable to find a journal associated with the OSD, assuming bluestore')
-            return activate_bluestore(lvs, no_systemd=args.no_systemd)
+                    logger.info('found a journal associated with the OSD, '
+                                'assuming filestore')
+                    return activate_filestore(lvs, args.no_systemd)
+
+            logger.info('unable to find a journal associated with the OSD, '
+                        'assuming bluestore')
+
+            return activate_bluestore(lvs, args.no_systemd)
         if args.bluestore:
-            activate_bluestore(lvs, no_systemd=args.no_systemd)
+            activate_bluestore(lvs, args.no_systemd)
         elif args.filestore:
-            activate_filestore(lvs, no_systemd=args.no_systemd)
+            activate_filestore(lvs, args.no_systemd)
 
     def main(self):
         sub_command_help = dedent("""
index b7a4b35b2fd20bae25dcabb6e9c2de91622465c3..a83c8680bf33674db900f44c17e68168ece11703 100644 (file)
@@ -1,5 +1,6 @@
 import argparse
 import logging
+import json
 from textwrap import dedent
 from ceph_volume import terminal, decorators
 from ceph_volume.util import disk, prompt_bool
@@ -376,6 +377,11 @@ class Batch(object):
                 # filtered
                 if self.args.yes and dev_list and self.usable and devs != usable:
                     err = '{} devices were filtered in non-interactive mode, bailing out'
+                    if self.args.format == "json" and self.args.report:
+                        # if a json report is requested, report unchanged so idempotency checks
+                        # in ceph-ansible will work
+                        print(json.dumps({"changed": False, "osds": [], "vgs": []}))
+                        raise SystemExit(0)
                     raise RuntimeError(err.format(len(devs) - len(usable)))
 
 
index 4db8532806a999f59bc617e432d1981e6773efc4..26ea2bf2198ea1fa258ec997f23dbb22ab6fdd74 100644 (file)
@@ -135,21 +135,6 @@ class Prepare(object):
             raise RuntimeError('unable to use device')
         return uuid
 
-    def get_lv(self, argument):
-        """
-        Perform some parsing of the command-line value so that the process
-        can determine correctly if it got a device path or an lv.
-
-        :param argument: The command-line value that will need to be split to
-                         retrieve the actual lv
-        """
-        #TODO is this efficient?
-        try:
-            vg_name, lv_name = argument.split('/')
-        except (ValueError, AttributeError):
-            return None
-        return api.get_lv(lv_name=lv_name, vg_name=vg_name)
-
     def setup_device(self, device_type, device_name, tags, size):
         """
         Check if ``device`` is an lv, if so, set the tags, making sure to
@@ -163,7 +148,14 @@ class Prepare(object):
             return '', '', tags
         tags['ceph.type'] = device_type
         tags['ceph.vdo'] = api.is_vdo(device_name)
-        lv = self.get_lv(device_name)
+
+        try:
+            vg_name, lv_name = device_name.split('/')
+            lv = api.get_first_lv(filters={'lv_name': lv_name,
+                                           'vg_name': vg_name})
+        except ValueError:
+            lv = None
+
         if lv:
             uuid = lv.lv_uuid
             path = lv.lv_path
@@ -239,7 +231,15 @@ class Prepare(object):
         """
         if args is not None:
             self.args = args
-        if api.is_ceph_device(self.get_lv(self.args.data)):
+
+        try:
+            vgname, lvname = self.args.data.split('/')
+            lv = api.get_first_lv(filters={'lv_name': lvname,
+                                           'vg_name': vgname})
+        except ValueError:
+            lv = None
+
+        if api.is_ceph_device(lv):
             logger.info("device {} is already used".format(self.args.data))
             raise RuntimeError("skipping {}, it is already prepared".format(self.args.data))
         try:
@@ -298,7 +298,13 @@ class Prepare(object):
             if not self.args.journal:
                 raise RuntimeError('--journal is required when using --filestore')
 
-            data_lv = self.get_lv(self.args.data)
+            try:
+                vg_name, lv_name = self.args.data.split('/')
+                data_lv = api.get_first_lv(filters={'lv_name': lv_name,
+                                                    'vg_name': vg_name})
+            except ValueError:
+                data_lv = None
+
             if not data_lv:
                 data_lv = self.prepare_data_device('data', osd_fsid)
 
@@ -323,7 +329,13 @@ class Prepare(object):
                 osd_fsid,
             )
         elif self.args.bluestore:
-            block_lv = self.get_lv(self.args.data)
+            try:
+                vg_name, lv_name = self.args.data.split('/')
+                block_lv = api.get_first_lv(filters={'lv_name': lv_name,
+                                                 'vg_name': vg_name})
+            except ValueError:
+                block_lv = None
+
             if not block_lv:
                 block_lv = self.prepare_data_device('block', osd_fsid)
 
index aa5f1a94fb62a3e88a52364e3bfda3420e63f8b2..cdaabbeecaa5fed5aee8a80e18c0ebebf4429c65 100644 (file)
@@ -130,7 +130,6 @@ class MixedType(MixedStrategy):
         super(MixedType, self).__init__(args, data_devs, db_devs, wal_devs)
         self.block_db_size = self.get_block_db_size()
         self.block_wal_size = self.get_block_wal_size()
-        self.system_vgs = lvm.VolumeGroups()
         self.common_vg = None
         self.common_wal_vg = None
         self.dbs_needed = len(self.data_devs) * self.osds_per_device
index 0c9ff31fb9aacb6b25f261573dbd60725981858f..bc10473eee9d9e7ecc06e3a0fe8ad00d04a5c56a 100644 (file)
@@ -184,7 +184,6 @@ class MixedType(MixedStrategy):
         self.blank_journal_devs = []
         self.journals_needed = len(self.data_devs) * self.osds_per_device
         self.journal_size = get_journal_size(args)
-        self.system_vgs = lvm.VolumeGroups()
         self.validate_compute()
 
     @classmethod
index ec579a1452cf9f18a9eb48dcce590a58ec66eb8d..63624e55f5bd228b912bc5eaf09fa39944ea115f 100644 (file)
@@ -7,7 +7,7 @@ from textwrap import dedent
 
 from ceph_volume import decorators, terminal, process
 from ceph_volume.api import lvm as api
-from ceph_volume.util import system, encryption, disk, arg_validators, str_to_int
+from ceph_volume.util import system, encryption, disk, arg_validators, str_to_int, merge_dict
 from ceph_volume.util.device import Device
 from ceph_volume.systemd import systemctl
 
@@ -81,17 +81,17 @@ def find_associated_devices(osd_id=None, osd_fsid=None):
         lv_tags['ceph.osd_id'] = osd_id
     if osd_fsid:
         lv_tags['ceph.osd_fsid'] = osd_fsid
-    lvs = api.Volumes()
-    lvs.filter(lv_tags=lv_tags)
-    if not lvs:
-        raise RuntimeError('Unable to find any LV for zapping OSD: %s' % osd_id or osd_fsid)
 
-    devices_to_zap = ensure_associated_lvs(lvs)
+    lvs = api.get_lvs(tags=lv_tags)
+    if not lvs:
+        raise RuntimeError('Unable to find any LV for zapping OSD: '
+                           '%s' % osd_id or osd_fsid)
 
+    devices_to_zap = ensure_associated_lvs(lvs, lv_tags)
     return [Device(path) for path in set(devices_to_zap) if path]
 
 
-def ensure_associated_lvs(lvs):
+def ensure_associated_lvs(lvs, lv_tags={}):
     """
     Go through each LV and ensure if backing devices (journal, wal, block)
     are LVs or partitions, so that they can be accurately reported.
@@ -100,14 +100,12 @@ def ensure_associated_lvs(lvs):
     # receive a filtering for osd.1, and have multiple failed deployments
     # leaving many journals with osd.1 - usually, only a single LV will be
     # returned
-    journal_lvs = lvs._filter(lv_tags={'ceph.type': 'journal'})
-    db_lvs = lvs._filter(lv_tags={'ceph.type': 'db'})
-    wal_lvs = lvs._filter(lv_tags={'ceph.type': 'wal'})
-    backing_devices = [
-        (journal_lvs, 'journal'),
-        (db_lvs, 'db'),
-        (wal_lvs, 'wal')
-    ]
+
+    journal_lvs = api.get_lvs(tags=merge_dict(lv_tags, {'ceph.type': 'journal'}))
+    db_lvs = api.get_lvs(tags=merge_dict(lv_tags, {'ceph.type': 'db'}))
+    wal_lvs = api.get_lvs(tags=merge_dict(lv_tags, {'ceph.type': 'wal'}))
+    backing_devices = [(journal_lvs, 'journal'), (db_lvs, 'db'),
+                       (wal_lvs, 'wal')]
 
     verified_devices = []
 
@@ -168,21 +166,27 @@ class Zap(object):
         Device examples: vg-name/lv-name, /dev/vg-name/lv-name
         Requirements: Must be a logical volume (LV)
         """
-        lv = api.get_lv(lv_name=device.lv_name, vg_name=device.vg_name)
+        lv = api.get_first_lv(filters={'lv_name': device.lv_name, 'vg_name':
+                                       device.vg_name})
         self.unmount_lv(lv)
 
         wipefs(device.abspath)
         zap_data(device.abspath)
 
         if self.args.destroy:
-            lvs = api.Volumes()
-            lvs.filter(vg_name=device.vg_name)
-            if len(lvs) <= 1:
-                mlogger.info('Only 1 LV left in VG, will proceed to destroy volume group %s', device.vg_name)
+            lvs = api.get_lvs(filters={'vg_name': device.vg_name})
+            if lvs == []:
+                mlogger.info('No LVs left, exiting', device.vg_name)
+                return
+            elif len(lvs) <= 1:
+                mlogger.info('Only 1 LV left in VG, will proceed to destroy '
+                             'volume group %s', device.vg_name)
                 api.remove_vg(device.vg_name)
             else:
-                mlogger.info('More than 1 LV left in VG, will proceed to destroy LV only')
-                mlogger.info('Removing LV because --destroy was given: %s', device.abspath)
+                mlogger.info('More than 1 LV left in VG, will proceed to '
+                             'destroy LV only')
+                mlogger.info('Removing LV because --destroy was given: %s',
+                             device.abspath)
                 api.remove_lv(device.abspath)
         elif lv:
             # just remove all lvm metadata, leaving the LV around
index d34a2941d1684cc70ec1e5ab9ebf5dc4588a30ad..08cfd02890cb0c7b588fb5f9d3a4d55f897d8415 100644 (file)
@@ -26,10 +26,6 @@ def create_parser(prog, description):
         dest='crush_device_class',
         help='Crush device class to assign this OSD to',
     )
-    parser.add_argument(
-        '--cluster-fsid',
-        help='Specify the cluster fsid, useful when no ceph.conf is available',
-    )
     parser.add_argument(
         '--no-tmpfs',
         action='store_true',
@@ -45,4 +41,9 @@ def create_parser(prog, description):
         dest='block_wal',
         help='Path to bluestore block.wal block device'
     )
+    parser.add_argument(
+        '--dmcrypt',
+        action='store_true',
+        help='Enable device encryption via dm-crypt',
+    )
     return parser
index b04f55cd8da0abbe7c006e556feab1055a32b23b..bb15bf199012bb52dff50262247c78c31906ca02 100644 (file)
@@ -30,8 +30,34 @@ class List(object):
         if not devs:
             logger.debug('Listing block devices via lsblk...')
             devs = []
+            # adding '--inverse' allows us to get the mapper devices list in that command output.
+            # not listing root devices containing partitions shouldn't have side effect since we are
+            # in `ceph-volume raw` context.
+            #
+            #   example:
+            #   running `lsblk --paths --nodeps --output=NAME --noheadings` doesn't allow to get the mapper list
+            #   because the output is like following :
+            #
+            #   $ lsblk --paths --nodeps --output=NAME --noheadings
+            #   /dev/sda
+            #   /dev/sdb
+            #   /dev/sdc
+            #   /dev/sdd
+            #
+            #   the dmcrypt mappers are hidden because of the `--nodeps` given they are displayed as a dependency.
+            #
+            #   $ lsblk --paths --output=NAME --noheadings
+            #   /dev/sda
+            #   |-/dev/mapper/ceph-3b52c90d-6548-407d-bde1-efd31809702f-sda-block-dmcrypt
+            #   `-/dev/mapper/ceph-3b52c90d-6548-407d-bde1-efd31809702f-sda-db-dmcrypt
+            #   /dev/sdb
+            #   /dev/sdc
+            #   /dev/sdd
+            #
+            #   adding `--inverse` is a trick to get around this issue, the counterpart is that we can't list root devices if they contain
+            #   at least one partition but this shouldn't be an issue in `ceph-volume raw` context given we only deal with raw devices.
             out, err, ret = process.call([
-                'lsblk', '--paths', '--nodeps', '--output=NAME', '--noheadings'
+                'lsblk', '--paths', '--nodeps', '--output=NAME', '--noheadings', '--inverse'
             ])
             assert not ret
             devs = out
index cb5c59ce40f5315946a9b1d0d2e3686793a7ec07..3c96eedacf34a6d6f30d7ce09eceeb595016092f 100644 (file)
@@ -1,15 +1,39 @@
 from __future__ import print_function
 import json
 import logging
+import os
 from textwrap import dedent
 from ceph_volume.util import prepare as prepare_utils
+from ceph_volume.util import encryption as encryption_utils
+from ceph_volume.util import disk
 from ceph_volume.util import system
-from ceph_volume import conf, decorators, terminal
+from ceph_volume import decorators, terminal
 from ceph_volume.devices.lvm.common import rollback_osd
 from .common import create_parser
 
 logger = logging.getLogger(__name__)
 
+def prepare_dmcrypt(key, device, device_type, fsid):
+    """
+    Helper for devices that are encrypted. The operations needed for
+    block, db, wal, or data/journal devices are all the same
+    """
+    if not device:
+        return ''
+    kname = disk.lsblk(device)['KNAME']
+    mapping = 'ceph-{}-{}-{}-dmcrypt'.format(fsid, kname, device_type)
+    # format data device
+    encryption_utils.luks_format(
+        key,
+        device
+    )
+    encryption_utils.luks_open(
+        key,
+        device,
+        mapping
+    )
+
+    return '/dev/mapper/{}'.format(mapping)
 
 def prepare_bluestore(block, wal, db, secrets, osd_id, fsid, tmpfs):
     """
@@ -22,6 +46,12 @@ def prepare_bluestore(block, wal, db, secrets, osd_id, fsid, tmpfs):
     """
     cephx_secret = secrets.get('cephx_secret', prepare_utils.create_key())
 
+    if secrets.get('dmcrypt_key'):
+        key = secrets['dmcrypt_key']
+        block = prepare_dmcrypt(key, block, 'block', fsid)
+        wal = prepare_dmcrypt(key, wal, 'wal', fsid)
+        db = prepare_dmcrypt(key, db, 'db', fsid)
+
     # create the directory
     prepare_utils.create_osd_path(osd_id, tmpfs=tmpfs)
     # symlink the block
@@ -64,21 +94,20 @@ class Prepare(object):
             logger.info('will rollback OSD ID creation')
             rollback_osd(self.args, self.osd_id)
             raise
-        terminal.success("ceph-volume raw prepare successful for: %s" % self.args.data)
-
-    def get_cluster_fsid(self):
-        """
-        Allows using --cluster-fsid as an argument, but can fallback to reading
-        from ceph.conf if that is unset (the default behavior).
-        """
-        if self.args.cluster_fsid:
-            return self.args.cluster_fsid
+        dmcrypt_log = 'dmcrypt' if args.dmcrypt else 'clear'
+        terminal.success("ceph-volume raw {} prepare successful for: {}".format(dmcrypt_log, self.args.data))
 
-        return conf.ceph.get('global', 'fsid')
 
     @decorators.needs_root
     def prepare(self):
         secrets = {'cephx_secret': prepare_utils.create_key()}
+        encrypted = 1 if self.args.dmcrypt else 0
+        cephx_lockbox_secret = '' if not encrypted else prepare_utils.create_key()
+
+        if encrypted:
+            secrets['dmcrypt_key'] = os.getenv('CEPH_VOLUME_DMCRYPT_SECRET')
+            secrets['cephx_lockbox_secret'] = cephx_lockbox_secret # dummy value to make `ceph osd new` not complaining
+
         osd_fsid = system.generate_uuid()
         crush_device_class = self.args.crush_device_class
         if crush_device_class:
@@ -94,6 +123,7 @@ class Prepare(object):
         # reuse a given ID if it exists, otherwise create a new ID
         self.osd_id = prepare_utils.create_id(
             osd_fsid, json.dumps(secrets))
+
         prepare_bluestore(
             self.args.data,
             wal,
@@ -112,8 +142,6 @@ class Prepare(object):
         Once the OSD is ready, an ad-hoc systemd unit will be enabled so that
         it can later get activated and the OSD daemon can get started.
 
-        Encryption is not supported.
-
             ceph-volume raw prepare --bluestore --data {device}
 
         DB and WAL devices are supported.
@@ -132,5 +160,10 @@ class Prepare(object):
         if not self.args.bluestore:
             terminal.error('must specify --bluestore (currently the only supported backend)')
             raise SystemExit(1)
+        if self.args.dmcrypt and not os.getenv('CEPH_VOLUME_DMCRYPT_SECRET'):
+            terminal.error('encryption was requested (--dmcrypt) but environment variable ' \
+                           'CEPH_VOLUME_DMCRYPT_SECRET is not set, you must set ' \
+                           'this variable to provide a dmcrypt secret.')
+            raise SystemExit(1)
 
         self.safe_prepare(self.args)
index 1e3deae4ce1ec8c14d566109c6ef9079cc35bc57..0f83b37ef440ee489376740674c55172ab1dfb23 100644 (file)
@@ -80,7 +80,7 @@ class Scan(object):
             device = os.readlink(path)
         else:
             device = path
-        lvm_device = lvm.get_lv_from_argument(device)
+        lvm_device = lvm.get_first_lv(filters={'lv_path': device})
         if lvm_device:
             device_uuid = lvm_device.lv_uuid
         else:
diff --git a/ceph/src/ceph-volume/ceph_volume/drive_group/__init__.py b/ceph/src/ceph-volume/ceph_volume/drive_group/__init__.py
new file mode 100644 (file)
index 0000000..14a0fd7
--- /dev/null
@@ -0,0 +1 @@
+from .main import Deploy # noqa
diff --git a/ceph/src/ceph-volume/ceph_volume/drive_group/main.py b/ceph/src/ceph-volume/ceph_volume/drive_group/main.py
new file mode 100644 (file)
index 0000000..684e89f
--- /dev/null
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+
+import argparse
+import json
+import logging
+import sys
+
+from ceph.deployment.drive_group import DriveGroupSpec
+from ceph.deployment.drive_selection.selector import DriveSelection
+from ceph.deployment.translate import to_ceph_volume
+from ceph.deployment.inventory import Device
+from ceph_volume.inventory import Inventory
+from ceph_volume.devices.lvm.batch import Batch
+
+logger = logging.getLogger(__name__)
+
+class Deploy(object):
+
+    help = '''
+    Deploy OSDs according to a drive groups specification.
+
+    The DriveGroup specification must be passed in json.
+    It can either be (preference in this order)
+      - in a file, path passed as a positional argument
+      - read from stdin, pass "-" as a positional argument
+      - a json string passed via the --spec argument
+
+    Either the path postional argument or --spec must be specifed.
+    '''
+
+    def __init__(self, argv):
+        logger.error(f'argv: {argv}')
+        self.argv = argv
+
+    def main(self):
+        parser = argparse.ArgumentParser(
+            prog='ceph-volume drive-group',
+            formatter_class=argparse.RawDescriptionHelpFormatter,
+            description=self.help,
+        )
+        parser.add_argument(
+            'path',
+            nargs='?',
+            default=None,
+            help=('Path to file containing drive group spec or "-" to read from stdin'),
+        )
+        parser.add_argument(
+            '--spec',
+            default='',
+            nargs='?',
+            help=('drive-group json string')
+        )
+        parser.add_argument(
+            '--dry-run',
+            default=False,
+            action='store_true',
+            help=('dry run, only print the batch command that would be run'),
+        )
+        self.args = parser.parse_args(self.argv)
+        if self.args.path:
+            if self.args.path == "-":
+                commands = self.from_json(sys.stdin)
+            else:
+                with open(self.args.path, 'r') as f:
+                    commands = self.from_json(f)
+        elif self.args.spec:
+            dg = json.loads(self.args.spec)
+            commands = self.get_dg_spec(dg)
+        else:
+            # either --spec or path arg must be specified
+            parser.print_help(sys.stderr)
+            sys.exit(0)
+        cmd = commands.run()
+        if not cmd:
+            logger.error('DriveGroup didn\'t produce any commands')
+            return
+        if self.args.dry_run:
+            logger.info('Returning ceph-volume command (--dry-run was passed): {}'.format(cmd))
+            print(cmd)
+        else:
+            logger.info('Running ceph-volume command: {}'.format(cmd))
+            batch_args = cmd.split(' ')[2:]
+            b = Batch(batch_args)
+            b.main()
+
+    def from_json(self, file_):
+        dg = {}
+        dg = json.load(file_)
+        return self.get_dg_spec(dg)
+
+    def get_dg_spec(self, dg):
+        dg_spec = DriveGroupSpec._from_json_impl(dg)
+        dg_spec.validate()
+        i = Inventory([])
+        i.main()
+        inventory = i.get_report()
+        devices = [Device.from_json(i) for i in inventory]
+        selection = DriveSelection(dg_spec, devices)
+        return to_ceph_volume(selection)
index f40b7b11d37a9811a94ea2bc64cb9a8a0a717429..5c6429483f8a9f09d10adbc772620ab89316142b 100644 (file)
@@ -50,37 +50,6 @@ class SuperUserError(Exception):
         return 'This command needs to be executed with sudo or as root'
 
 
-class MultiplePVsError(Exception):
-
-    def __init__(self, pv_name):
-        self.pv_name = pv_name
-
-    def __str__(self):
-        msg = "Got more than 1 result looking for physical volume: %s" % self.pv_name
-        return msg
-
-
-class MultipleLVsError(Exception):
-
-    def __init__(self, lv_name, lv_path):
-        self.lv_name = lv_name
-        self.lv_path = lv_path
-
-    def __str__(self):
-        msg = "Got more than 1 result looking for %s with path: %s" % (self.lv_name, self.lv_path)
-        return msg
-
-
-class MultipleVGsError(Exception):
-
-    def __init__(self, vg_name):
-        self.vg_name = vg_name
-
-    def __str__(self):
-        msg = "Got more than 1 result looking for volume group: %s" % self.vg_name
-        return msg
-
-
 class SizeAllocationError(Exception):
 
     def __init__(self, requested, available):
index 1d821b602be18329330a800174e90ab1738074f7..470be274f52ebb2d30048ecfaecaa78230ca97df 100644 (file)
@@ -37,6 +37,12 @@ class Inventory(object):
         else:
             self.format_report(Devices())
 
+    def get_report(self):
+        if self.args.path:
+            return Device(self.args.path).json_report()
+        else:
+            return Devices().json_report()
+
     def format_report(self, inventory):
         if self.args.format == 'json':
             print(json.dumps(inventory.json_report()))
index 8c5801c5db59e394d8795d6a70421bc692b14f50..461395ae5e3342d88afaafe1826cbce4734f0767 100644 (file)
@@ -6,7 +6,7 @@ import sys
 import logging
 
 from ceph_volume.decorators import catches
-from ceph_volume import log, devices, configuration, conf, exceptions, terminal, inventory
+from ceph_volume import log, devices, configuration, conf, exceptions, terminal, inventory, drive_group
 
 
 class Volume(object):
@@ -29,6 +29,7 @@ Ceph Conf: {ceph_path}
             'simple': devices.simple.Simple,
             'raw': devices.raw.Raw,
             'inventory': inventory.Inventory,
+            'drive-group': drive_group.Deploy,
         }
         self.plugin_help = "No plugins found/loaded"
         if argv is None:
index d75920bd687824844a64b7aaf3e16436305dd2b5..fe2fe8b577c633ccc325f82e2c334a79e57ba2f3 100644 (file)
@@ -31,188 +31,6 @@ class TestParseTags(object):
         assert result['ceph.fsid'] == '0000'
 
 
-class TestGetAPIVgs(object):
-
-    def test_report_is_emtpy(self, monkeypatch):
-        monkeypatch.setattr(api.process, 'call', lambda x,**kw: ('\n\n', '', 0))
-        assert api.get_api_vgs() == []
-
-    def test_report_has_stuff(self, monkeypatch):
-        report = ['  VolGroup00']
-        monkeypatch.setattr(api.process, 'call', lambda x, **kw: (report, '', 0))
-        assert api.get_api_vgs() == [{'vg_name': 'VolGroup00'}]
-
-    def test_report_has_stuff_with_empty_attrs(self, monkeypatch):
-        report = ['  VolGroup00 ;;;;;;4194304']
-        monkeypatch.setattr(api.process, 'call', lambda x, **kw: (report, '', 0))
-        result = api.get_api_vgs()[0]
-        assert len(result.keys()) == 7
-        assert result['vg_name'] == 'VolGroup00'
-        assert result['vg_extent_size'] == '4194304'
-
-    def test_report_has_multiple_items(self, monkeypatch):
-        report = ['   VolGroup00;;;;;;;', '    ceph_vg;;;;;;;']
-        monkeypatch.setattr(api.process, 'call', lambda x, **kw: (report, '', 0))
-        result = api.get_api_vgs()
-        assert result[0]['vg_name'] == 'VolGroup00'
-        assert result[1]['vg_name'] == 'ceph_vg'
-
-
-class TestGetAPILvs(object):
-
-    def test_report_is_emtpy(self, monkeypatch):
-        monkeypatch.setattr(api.process, 'call', lambda x, **kw: ('', '', 0))
-        assert api.get_api_lvs() == []
-
-    def test_report_has_stuff(self, monkeypatch):
-        report = ['  ;/path;VolGroup00;root']
-        monkeypatch.setattr(api.process, 'call', lambda x, **kw: (report, '', 0))
-        result = api.get_api_lvs()
-        assert result[0]['lv_name'] == 'VolGroup00'
-
-    def test_report_has_multiple_items(self, monkeypatch):
-        report = ['  ;/path;VolName;root', ';/dev/path;ceph_lv;ceph_vg']
-        monkeypatch.setattr(api.process, 'call', lambda x, **kw: (report, '', 0))
-        result = api.get_api_lvs()
-        assert result[0]['lv_name'] == 'VolName'
-        assert result[1]['lv_name'] == 'ceph_lv'
-
-
-@pytest.fixture
-def volumes(monkeypatch):
-    monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
-    volumes = api.Volumes()
-    volumes._purge()
-    # also patch api.Volumes so that when it is called, it will use the newly
-    # created fixture, with whatever the test method wants to append to it
-    monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-    return volumes
-
-
-@pytest.fixture
-def volume_groups(monkeypatch):
-    monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
-    vgs = api.VolumeGroups()
-    vgs._purge()
-    return vgs
-
-
-class TestGetLV(object):
-
-    def test_nothing_is_passed_in(self):
-        # so we return a None
-        assert api.get_lv() is None
-
-    def test_single_lv_is_matched(self, volumes, monkeypatch):
-        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.type=data")
-        volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        assert api.get_lv(lv_name='foo') == FooVolume
-
-    def test_single_lv_is_matched_by_uuid(self, volumes, monkeypatch):
-        FooVolume = api.Volume(
-            lv_name='foo', lv_path='/dev/vg/foo',
-            lv_uuid='1111', lv_tags="ceph.type=data")
-        volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        assert api.get_lv(lv_uuid='1111') == FooVolume
-
-
-class TestGetPV(object):
-
-    def test_nothing_is_passed_in(self):
-        # so we return a None
-        assert api.get_pv() is None
-
-    def test_single_pv_is_not_matched(self, pvolumes, monkeypatch):
-        FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", pv_tags={}, vg_name="vg")
-        pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
-        assert api.get_pv(pv_uuid='foo') is None
-
-    def test_single_pv_is_matched(self, pvolumes, monkeypatch):
-        FooPVolume = api.PVolume(vg_name="vg", pv_name='/dev/sda', pv_uuid="0000", pv_tags={})
-        pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
-        assert api.get_pv(pv_uuid='0000') == FooPVolume
-
-    def test_multiple_pvs_is_matched_by_uuid(self, pvolumes, monkeypatch):
-        FooPVolume = api.PVolume(vg_name="vg", pv_name='/dev/sda', pv_uuid="0000", pv_tags={}, lv_uuid="0000000")
-        BarPVolume = api.PVolume(vg_name="vg", pv_name='/dev/sda', pv_uuid="0000", pv_tags={})
-        pvolumes.append(FooPVolume)
-        pvolumes.append(BarPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
-        assert api.get_pv(pv_uuid='0000') == FooPVolume
-
-    def test_multiple_pvs_is_matched_by_name(self, pvolumes, monkeypatch):
-        FooPVolume = api.PVolume(vg_name="vg", pv_name='/dev/sda', pv_uuid="0000", pv_tags={}, lv_uuid="0000000")
-        BarPVolume = api.PVolume(vg_name="vg", pv_name='/dev/sda', pv_uuid="0000", pv_tags={})
-        pvolumes.append(FooPVolume)
-        pvolumes.append(BarPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
-        assert api.get_pv(pv_name='/dev/sda') == FooPVolume
-
-    def test_multiple_pvs_is_matched_by_tags(self, pvolumes, monkeypatch):
-        FooPVolume = api.PVolume(vg_name="vg1", pv_name='/dev/sdc', pv_uuid="1000", pv_tags="ceph.foo=bar", lv_uuid="0000000")
-        BarPVolume = api.PVolume(vg_name="vg", pv_name='/dev/sda', pv_uuid="0000", pv_tags="ceph.foo=bar")
-        pvolumes.append(FooPVolume)
-        pvolumes.append(BarPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
-        with pytest.raises(exceptions.MultiplePVsError):
-            api.get_pv(pv_tags={"ceph.foo": "bar"})
-
-    def test_single_pv_is_matched_by_uuid(self, pvolumes, monkeypatch):
-        FooPVolume = api.PVolume(
-            pv_name='/dev/vg/foo',
-            pv_uuid='1111', pv_tags="ceph.type=data", vg_name="vg")
-        pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
-        assert api.get_pv(pv_uuid='1111') == FooPVolume
-
-    def test_vg_name_is_set(self, pvolumes, monkeypatch):
-        FooPVolume = api.PVolume(
-            pv_name='/dev/vg/foo',
-            pv_uuid='1111', pv_tags="ceph.type=data", vg_name="vg")
-        pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
-        pv = api.get_pv(pv_name="/dev/vg/foo")
-        assert pv.vg_name == "vg"
-
-
-class TestPVolumes(object):
-
-    def test_filter_by_tag_does_not_match_one(self, pvolumes, monkeypatch):
-        pv_tags = "ceph.type=journal,ceph.osd_id=1,ceph.fsid=000-aaa"
-        FooPVolume = api.PVolume(
-            pv_name='/dev/vg/foo',
-            pv_uuid='1111', pv_tags=pv_tags, vg_name='vg')
-        pvolumes.append(FooPVolume)
-        assert pvolumes.filter(pv_tags={'ceph.type': 'journal',
-                               'ceph.osd_id': '2'}) == []
-
-    def test_filter_by_tags_matches(self, pvolumes, monkeypatch):
-        pv_tags = "ceph.type=journal,ceph.osd_id=1"
-        FooPVolume = api.PVolume(
-            pv_name='/dev/vg/foo',
-            pv_uuid='1111', pv_tags=pv_tags, vg_name="vg")
-        pvolumes.append(FooPVolume)
-        assert pvolumes.filter(pv_tags={'ceph.type': 'journal',
-                               'ceph.osd_id': '1'}) == [FooPVolume]
-
-
-class TestGetVG(object):
-
-    def test_nothing_is_passed_in(self):
-        # so we return a None
-        assert api.get_vg() is None
-
-    def test_single_vg_is_matched(self, volume_groups, monkeypatch):
-        FooVG = api.VolumeGroup(vg_name='foo')
-        volume_groups.append(FooVG)
-        monkeypatch.setattr(api, 'VolumeGroups', lambda: volume_groups)
-        assert api.get_vg(vg_name='foo') == FooVG
-
-
 class TestVolume(object):
 
     def test_is_ceph_device(self):
@@ -223,8 +41,8 @@ class TestVolume(object):
     @pytest.mark.parametrize('dev',[
         '/dev/sdb',
         api.VolumeGroup(vg_name='foo'),
-        api.Volume(lv_name='vg/no_osd', lv_tags=''),
-        api.Volume(lv_name='vg/no_osd', lv_tags='ceph.osd_id=null'),
+        api.Volume(lv_name='vg/no_osd', lv_tags='', lv_path='lv/path'),
+        api.Volume(lv_name='vg/no_osd', lv_tags='ceph.osd_id=null', lv_path='lv/path'),
         None,
     ])
     def test_is_not_ceph_device(self, dev):
@@ -235,103 +53,6 @@ class TestVolume(object):
             api.Volume(lv_name='', lv_tags='')
 
 
-class TestVolumes(object):
-
-    def test_volume_get_has_no_volumes(self, volumes):
-        assert volumes.get() is None
-
-    def test_volume_get_filtered_has_no_volumes(self, volumes):
-        assert volumes.get(lv_name='ceph') is None
-
-    def test_volume_has_multiple_matches(self, volumes):
-        volume1 = volume2 = api.Volume(lv_name='foo', lv_path='/dev/vg/lv', lv_tags='')
-        volumes.append(volume1)
-        volumes.append(volume2)
-        with pytest.raises(exceptions.MultipleLVsError):
-            volumes.get(lv_name='foo')
-
-    def test_as_dict_infers_type_from_tags(self, volumes):
-        lv_tags = "ceph.type=data,ceph.fsid=000-aaa"
-        osd = api.Volume(lv_name='volume1', lv_path='/dev/vg/lv', lv_tags=lv_tags)
-        volumes.append(osd)
-        result = volumes.get(lv_tags={'ceph.type': 'data'}).as_dict()
-        assert result['type'] == 'data'
-
-    def test_as_dict_populates_path_from_lv_api(self, volumes):
-        lv_tags = "ceph.type=data,ceph.fsid=000-aaa"
-        osd = api.Volume(lv_name='volume1', lv_path='/dev/vg/lv', lv_tags=lv_tags)
-        volumes.append(osd)
-        result = volumes.get(lv_tags={'ceph.type': 'data'}).as_dict()
-        assert result['path'] == '/dev/vg/lv'
-
-    def test_find_the_correct_one(self, volumes):
-        volume1 = api.Volume(lv_name='volume1', lv_path='/dev/vg/lv', lv_tags='')
-        volume2 = api.Volume(lv_name='volume2', lv_path='/dev/vg/lv', lv_tags='')
-        volumes.append(volume1)
-        volumes.append(volume2)
-        assert volumes.get(lv_name='volume1') == volume1
-
-    def test_filter_by_tag(self, volumes):
-        lv_tags = "ceph.type=data,ceph.fsid=000-aaa"
-        osd = api.Volume(lv_name='volume1', lv_path='/dev/vg/lv', lv_tags=lv_tags)
-        journal = api.Volume(lv_name='volume2', lv_path='/dev/vg/lv', lv_tags='ceph.type=journal')
-        volumes.append(osd)
-        volumes.append(journal)
-        volumes.filter(lv_tags={'ceph.type': 'data'})
-        assert len(volumes) == 1
-        assert volumes[0].lv_name == 'volume1'
-
-    def test_filter_by_tag_does_not_match_one(self, volumes):
-        lv_tags = "ceph.type=data,ceph.fsid=000-aaa"
-        osd = api.Volume(lv_name='volume1', lv_path='/dev/vg/lv', lv_tags=lv_tags)
-        journal = api.Volume(lv_name='volume2', lv_path='/dev/vg/lv', lv_tags='ceph.osd_id=1,ceph.type=journal')
-        volumes.append(osd)
-        volumes.append(journal)
-        # note the different osd_id!
-        volumes.filter(lv_tags={'ceph.type': 'data', 'ceph.osd_id': '2'})
-        assert volumes == []
-
-    def test_filter_by_vg_name(self, volumes):
-        lv_tags = "ceph.type=data,ceph.fsid=000-aaa"
-        osd = api.Volume(lv_name='volume1', vg_name='ceph_vg', lv_tags=lv_tags)
-        journal = api.Volume(lv_name='volume2', vg_name='system_vg', lv_tags='ceph.type=journal')
-        volumes.append(osd)
-        volumes.append(journal)
-        volumes.filter(vg_name='ceph_vg')
-        assert len(volumes) == 1
-        assert volumes[0].lv_name == 'volume1'
-
-    def test_filter_by_lv_path(self, volumes):
-        osd = api.Volume(lv_name='volume1', lv_path='/dev/volume1', lv_tags='')
-        journal = api.Volume(lv_name='volume2', lv_path='/dev/volume2', lv_tags='')
-        volumes.append(osd)
-        volumes.append(journal)
-        volumes.filter(lv_path='/dev/volume1')
-        assert len(volumes) == 1
-        assert volumes[0].lv_name == 'volume1'
-
-    def test_filter_by_lv_uuid(self, volumes):
-        osd = api.Volume(lv_name='volume1', lv_path='/dev/volume1', lv_uuid='1111', lv_tags='')
-        journal = api.Volume(lv_name='volume2', lv_path='/dev/volume2', lv_uuid='', lv_tags='')
-        volumes.append(osd)
-        volumes.append(journal)
-        volumes.filter(lv_uuid='1111')
-        assert len(volumes) == 1
-        assert volumes[0].lv_name == 'volume1'
-
-    def test_filter_by_lv_uuid_nothing_found(self, volumes):
-        osd = api.Volume(lv_name='volume1', lv_path='/dev/volume1', lv_uuid='1111', lv_tags='')
-        journal = api.Volume(lv_name='volume2', lv_path='/dev/volume2', lv_uuid='', lv_tags='')
-        volumes.append(osd)
-        volumes.append(journal)
-        volumes.filter(lv_uuid='22222')
-        assert volumes == []
-
-    def test_filter_requires_params(self, volumes):
-        with pytest.raises(TypeError):
-            volumes.filter()
-
-
 class TestVolumeGroup(object):
 
     def test_volume_group_no_empty_name(self):
@@ -339,60 +60,6 @@ class TestVolumeGroup(object):
             api.VolumeGroup(vg_name='')
 
 
-class TestVolumeGroups(object):
-
-    def test_volume_get_has_no_volume_groups(self, volume_groups):
-        assert volume_groups.get() is None
-
-    def test_volume_get_filtered_has_no_volumes(self, volume_groups):
-        assert volume_groups.get(vg_name='ceph') is None
-
-    def test_volume_has_multiple_matches(self, volume_groups):
-        volume1 = volume2 = api.VolumeGroup(vg_name='foo', lv_path='/dev/vg/lv', lv_tags='')
-        volume_groups.append(volume1)
-        volume_groups.append(volume2)
-        with pytest.raises(exceptions.MultipleVGsError):
-            volume_groups.get(vg_name='foo')
-
-    def test_find_the_correct_one(self, volume_groups):
-        volume1 = api.VolumeGroup(vg_name='volume1', lv_tags='')
-        volume2 = api.VolumeGroup(vg_name='volume2', lv_tags='')
-        volume_groups.append(volume1)
-        volume_groups.append(volume2)
-        assert volume_groups.get(vg_name='volume1') == volume1
-
-    def test_filter_by_tag(self, volume_groups):
-        vg_tags = "ceph.group=dmcache"
-        osd = api.VolumeGroup(vg_name='volume1', vg_tags=vg_tags)
-        journal = api.VolumeGroup(vg_name='volume2', vg_tags='ceph.group=plain')
-        volume_groups.append(osd)
-        volume_groups.append(journal)
-        volume_groups = volume_groups.filter(vg_tags={'ceph.group': 'dmcache'})
-        assert len(volume_groups) == 1
-        assert volume_groups[0].vg_name == 'volume1'
-
-    def test_filter_by_tag_does_not_match_one(self, volume_groups):
-        vg_tags = "ceph.group=dmcache,ceph.disk_type=ssd"
-        osd = api.VolumeGroup(vg_name='volume1', vg_path='/dev/vg/lv', vg_tags=vg_tags)
-        volume_groups.append(osd)
-        volume_groups = volume_groups.filter(vg_tags={'ceph.group': 'data', 'ceph.disk_type': 'ssd'})
-        assert volume_groups == []
-
-    def test_filter_by_vg_name(self, volume_groups):
-        vg_tags = "ceph.type=data,ceph.fsid=000-aaa"
-        osd = api.VolumeGroup(vg_name='ceph_vg', vg_tags=vg_tags)
-        journal = api.VolumeGroup(vg_name='volume2', vg_tags='ceph.type=journal')
-        volume_groups.append(osd)
-        volume_groups.append(journal)
-        volume_groups = volume_groups.filter(vg_name='ceph_vg')
-        assert len(volume_groups) == 1
-        assert volume_groups[0].vg_name == 'ceph_vg'
-
-    def test_filter_requires_params(self, volume_groups):
-        with pytest.raises(TypeError):
-            volume_groups = volume_groups.filter()
-
-
 class TestVolumeGroupFree(object):
 
     def test_integer_gets_produced(self):
@@ -491,31 +158,6 @@ class TestVolumeGroupSizing(object):
             self.vg.sizing(size=2048)
 
 
-class TestGetLVFromArgument(object):
-
-    def setup(self):
-        self.foo_volume = api.Volume(
-            lv_name='foo', lv_path='/path/to/lv',
-            vg_name='foo_group', lv_tags=''
-        )
-
-    def test_non_absolute_path_is_not_valid(self, volumes):
-        volumes.append(self.foo_volume)
-        assert api.get_lv_from_argument('foo') is None
-
-    def test_too_many_slashes_is_invalid(self, volumes):
-        volumes.append(self.foo_volume)
-        assert api.get_lv_from_argument('path/to/lv') is None
-
-    def test_absolute_path_is_not_lv(self, volumes):
-        volumes.append(self.foo_volume)
-        assert api.get_lv_from_argument('/path') is None
-
-    def test_absolute_path_is_lv(self, volumes):
-        volumes.append(self.foo_volume)
-        assert api.get_lv_from_argument('/path/to/lv') == self.foo_volume
-
-
 class TestRemoveLV(object):
 
     def test_removes_lv(self, monkeypatch):
@@ -548,18 +190,18 @@ class TestCreateLV(object):
 
     @patch('ceph_volume.api.lvm.process.run')
     @patch('ceph_volume.api.lvm.process.call')
-    @patch('ceph_volume.api.lvm.get_lv')
-    def test_uses_size(self, m_get_lv, m_call, m_run, monkeypatch):
-        m_get_lv.return_value = self.foo_volume
+    @patch('ceph_volume.api.lvm.get_first_lv')
+    def test_uses_size(self, m_get_first_lv, m_call, m_run, monkeypatch):
+        m_get_first_lv.return_value = self.foo_volume
         api.create_lv('foo', 0, vg=self.foo_group, size=5368709120, tags={'ceph.type': 'data'})
         expected = ['lvcreate', '--yes', '-l', '1280', '-n', 'foo-0', 'foo_group']
         m_run.assert_called_with(expected)
 
     @patch('ceph_volume.api.lvm.process.run')
     @patch('ceph_volume.api.lvm.process.call')
-    @patch('ceph_volume.api.lvm.get_lv')
-    def test_uses_extents(self, m_get_lv, m_call, m_run, monkeypatch):
-        m_get_lv.return_value = self.foo_volume
+    @patch('ceph_volume.api.lvm.get_first_lv')
+    def test_uses_extents(self, m_get_first_lv, m_call, m_run, monkeypatch):
+        m_get_first_lv.return_value = self.foo_volume
         api.create_lv('foo', 0, vg=self.foo_group, extents='50', tags={'ceph.type': 'data'})
         expected = ['lvcreate', '--yes', '-l', '50', '-n', 'foo-0', 'foo_group']
         m_run.assert_called_with(expected)
@@ -569,18 +211,18 @@ class TestCreateLV(object):
                               (3, 33),])
     @patch('ceph_volume.api.lvm.process.run')
     @patch('ceph_volume.api.lvm.process.call')
-    @patch('ceph_volume.api.lvm.get_lv')
-    def test_uses_slots(self, m_get_lv, m_call, m_run, monkeypatch, test_input, expected):
-        m_get_lv.return_value = self.foo_volume
+    @patch('ceph_volume.api.lvm.get_first_lv')
+    def test_uses_slots(self, m_get_first_lv, m_call, m_run, monkeypatch, test_input, expected):
+        m_get_first_lv.return_value = self.foo_volume
         api.create_lv('foo', 0, vg=self.foo_group, slots=test_input, tags={'ceph.type': 'data'})
         expected = ['lvcreate', '--yes', '-l', str(expected), '-n', 'foo-0', 'foo_group']
         m_run.assert_called_with(expected)
 
     @patch('ceph_volume.api.lvm.process.run')
     @patch('ceph_volume.api.lvm.process.call')
-    @patch('ceph_volume.api.lvm.get_lv')
-    def test_uses_all(self, m_get_lv, m_call, m_run, monkeypatch):
-        m_get_lv.return_value = self.foo_volume
+    @patch('ceph_volume.api.lvm.get_first_lv')
+    def test_uses_all(self, m_get_first_lv, m_call, m_run, monkeypatch):
+        m_get_first_lv.return_value = self.foo_volume
         api.create_lv('foo', 0, vg=self.foo_group, tags={'ceph.type': 'data'})
         expected = ['lvcreate', '--yes', '-l', '100%FREE', '-n', 'foo-0', 'foo_group']
         m_run.assert_called_with(expected)
@@ -588,9 +230,9 @@ class TestCreateLV(object):
     @patch('ceph_volume.api.lvm.process.run')
     @patch('ceph_volume.api.lvm.process.call')
     @patch('ceph_volume.api.lvm.Volume.set_tags')
-    @patch('ceph_volume.api.lvm.get_lv')
-    def test_calls_to_set_tags_default(self, m_get_lv, m_set_tags, m_call, m_run, monkeypatch):
-        m_get_lv.return_value = self.foo_volume
+    @patch('ceph_volume.api.lvm.get_first_lv')
+    def test_calls_to_set_tags_default(self, m_get_first_lv, m_set_tags, m_call, m_run, monkeypatch):
+        m_get_first_lv.return_value = self.foo_volume
         api.create_lv('foo', 0, vg=self.foo_group)
         tags = {
             "ceph.osd_id": "null",
@@ -603,9 +245,9 @@ class TestCreateLV(object):
     @patch('ceph_volume.api.lvm.process.run')
     @patch('ceph_volume.api.lvm.process.call')
     @patch('ceph_volume.api.lvm.Volume.set_tags')
-    @patch('ceph_volume.api.lvm.get_lv')
-    def test_calls_to_set_tags_arg(self, m_get_lv, m_set_tags, m_call, m_run, monkeypatch):
-        m_get_lv.return_value = self.foo_volume
+    @patch('ceph_volume.api.lvm.get_first_lv')
+    def test_calls_to_set_tags_arg(self, m_get_first_lv, m_set_tags, m_call, m_run, monkeypatch):
+        m_get_first_lv.return_value = self.foo_volume
         api.create_lv('foo', 0, vg=self.foo_group, tags={'ceph.type': 'data'})
         tags = {
             "ceph.type": "data",
@@ -617,10 +259,10 @@ class TestCreateLV(object):
     @patch('ceph_volume.api.lvm.process.call')
     @patch('ceph_volume.api.lvm.get_device_vgs')
     @patch('ceph_volume.api.lvm.create_vg')
-    @patch('ceph_volume.api.lvm.get_lv')
-    def test_create_vg(self, m_get_lv, m_create_vg, m_get_device_vgs, m_call,
+    @patch('ceph_volume.api.lvm.get_first_lv')
+    def test_create_vg(self, m_get_first_lv, m_create_vg, m_get_device_vgs, m_call,
                        m_run, monkeypatch):
-        m_get_lv.return_value = self.foo_volume
+        m_get_first_lv.return_value = self.foo_volume
         m_get_device_vgs.return_value = []
         api.create_lv('foo', 0, device='dev/foo', size='5G', tags={'ceph.type': 'data'})
         m_create_vg.assert_called_with('dev/foo', name_prefix='ceph')
@@ -711,19 +353,19 @@ class TestExtendVG(object):
         self.foo_volume = api.VolumeGroup(vg_name='foo', lv_tags='')
 
     def test_uses_single_device_in_list(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.extend_vg(self.foo_volume, ['/dev/sda'])
         expected = ['vgextend', '--force', '--yes', 'foo', '/dev/sda']
         assert fake_run.calls[0]['args'][0] == expected
 
     def test_uses_single_device(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.extend_vg(self.foo_volume, '/dev/sda')
         expected = ['vgextend', '--force', '--yes', 'foo', '/dev/sda']
         assert fake_run.calls[0]['args'][0] == expected
 
     def test_uses_multiple_devices(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.extend_vg(self.foo_volume, ['/dev/sda', '/dev/sdb'])
         expected = ['vgextend', '--force', '--yes', 'foo', '/dev/sda', '/dev/sdb']
         assert fake_run.calls[0]['args'][0] == expected
@@ -735,19 +377,19 @@ class TestReduceVG(object):
         self.foo_volume = api.VolumeGroup(vg_name='foo', lv_tags='')
 
     def test_uses_single_device_in_list(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.reduce_vg(self.foo_volume, ['/dev/sda'])
         expected = ['vgreduce', '--force', '--yes', 'foo', '/dev/sda']
         assert fake_run.calls[0]['args'][0] == expected
 
     def test_uses_single_device(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.reduce_vg(self.foo_volume, '/dev/sda')
         expected = ['vgreduce', '--force', '--yes', 'foo', '/dev/sda']
         assert fake_run.calls[0]['args'][0] == expected
 
     def test_uses_multiple_devices(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.reduce_vg(self.foo_volume, ['/dev/sda', '/dev/sdb'])
         expected = ['vgreduce', '--force', '--yes', 'foo', '/dev/sda', '/dev/sdb']
         assert fake_run.calls[0]['args'][0] == expected
@@ -759,28 +401,28 @@ class TestCreateVG(object):
         self.foo_volume = api.VolumeGroup(vg_name='foo', lv_tags='')
 
     def test_no_name(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.create_vg('/dev/sda')
         result = fake_run.calls[0]['args'][0]
         assert '/dev/sda' in result
         assert result[-2].startswith('ceph-')
 
     def test_devices_list(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.create_vg(['/dev/sda', '/dev/sdb'], name='ceph')
         result = fake_run.calls[0]['args'][0]
         expected = ['vgcreate', '--force', '--yes', 'ceph', '/dev/sda', '/dev/sdb']
         assert result == expected
 
     def test_name_prefix(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.create_vg('/dev/sda', name_prefix='master')
         result = fake_run.calls[0]['args'][0]
         assert '/dev/sda' in result
         assert result[-2].startswith('master-')
 
     def test_specific_name(self, monkeypatch, fake_run):
-        monkeypatch.setattr(api, 'get_vg', lambda **kw: True)
+        monkeypatch.setattr(api, 'get_first_vg', lambda **kw: True)
         api.create_vg('/dev/sda', name='master')
         result = fake_run.calls[0]['args'][0]
         assert '/dev/sda' in result
@@ -947,30 +589,6 @@ class TestSplitNameParser(object):
         assert '/dev/mapper' not in result['VG_NAME']
 
 
-class TestIsLV(object):
-
-    def test_is_not_an_lv(self, monkeypatch):
-        monkeypatch.setattr(api.process, 'call', lambda x, **kw: ('', '', 0))
-        monkeypatch.setattr(api, 'dmsetup_splitname', lambda x, **kw: {})
-        assert api.is_lv('/dev/sda1', lvs=[]) is False
-
-    def test_lvs_not_found(self, monkeypatch, volumes):
-        CephVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.type=data")
-        volumes.append(CephVolume)
-        splitname = {'LV_NAME': 'data', 'VG_NAME': 'ceph'}
-        monkeypatch.setattr(api, 'dmsetup_splitname', lambda x, **kw: splitname)
-        assert api.is_lv('/dev/sda1', lvs=volumes) is False
-
-    def test_is_lv(self, monkeypatch, volumes):
-        CephVolume = api.Volume(
-            vg_name='ceph', lv_name='data',
-            lv_path='/dev/vg/foo', lv_tags="ceph.type=data"
-        )
-        volumes.append(CephVolume)
-        splitname = {'LV_NAME': 'data', 'VG_NAME': 'ceph'}
-        monkeypatch.setattr(api, 'dmsetup_splitname', lambda x, **kw: splitname)
-        assert api.is_lv('/dev/sda1', lvs=volumes) is True
-
 class TestGetDeviceVgs(object):
 
     @patch('ceph_volume.process.call')
@@ -990,3 +608,239 @@ class TestGetDeviceLvs(object):
         pcall.return_value = ('', '', '')
         vgs = api.get_device_lvs('/dev/foo')
         assert vgs == []
+
+
+# NOTE: api.convert_filters_to_str() and api.convert_tags_to_str() should get
+# tested automatically while testing api.make_filters_lvmcmd_ready()
+class TestMakeFiltersLVMCMDReady(object):
+
+    def test_with_no_filters_and_no_tags(self):
+        retval = api.make_filters_lvmcmd_ready(None, None)
+
+        assert isinstance(retval, str)
+        assert retval == ''
+
+    def test_with_filters_and_no_tags(self):
+        filters = {'lv_name': 'lv1', 'lv_path': '/dev/sda'}
+
+        retval = api.make_filters_lvmcmd_ready(filters, None)
+
+        assert isinstance(retval, str)
+        for k, v in filters.items():
+            assert k in retval
+            assert v in retval
+
+    def test_with_no_filters_and_with_tags(self):
+        tags = {'ceph.type': 'data', 'ceph.osd_id': '0'}
+
+        retval = api.make_filters_lvmcmd_ready(None, tags)
+
+        assert isinstance(retval, str)
+        assert 'tags' in retval
+        for k, v in tags.items():
+            assert k in retval
+            assert v in retval
+            assert retval.find('tags') < retval.find(k) < retval.find(v)
+
+    def test_with_filters_and_tags(self):
+        filters = {'lv_name': 'lv1', 'lv_path': '/dev/sda'}
+        tags = {'ceph.type': 'data', 'ceph.osd_id': '0'}
+
+        retval = api.make_filters_lvmcmd_ready(filters, tags)
+
+        assert isinstance(retval, str)
+        for f, t in zip(filters.items(), tags.items()):
+            assert f[0] in retval
+            assert f[1] in retval
+            assert t[0] in retval
+            assert t[1] in retval
+            assert retval.find(f[0]) < retval.find(f[1]) < \
+                    retval.find('tags') < retval.find(t[0]) < retval.find(t[1])
+
+
+class TestGetPVs(object):
+
+    def test_get_pvs(self, monkeypatch):
+        pv1 = api.PVolume(pv_name='/dev/sda', pv_uuid='0000', pv_tags={},
+                          vg_name='vg1')
+        pv2 = api.PVolume(pv_name='/dev/sdb', pv_uuid='0001', pv_tags={},
+                          vg_name='vg2')
+        pvs = [pv1, pv2]
+        stdout = ['{};{};{};{};;'.format(pv1.pv_name, pv1.pv_tags, pv1.pv_uuid, pv1.vg_name),
+                  '{};{};{};{};;'.format(pv2.pv_name, pv2.pv_tags, pv2.pv_uuid, pv2.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        pvs_ = api.get_pvs()
+        assert len(pvs_) == len(pvs)
+        for pv, pv_ in zip(pvs, pvs_):
+            assert pv_.pv_name == pv.pv_name
+
+    def test_get_pvs_single_pv(self, monkeypatch):
+        pv1 = api.PVolume(pv_name='/dev/sda', pv_uuid='0000', pv_tags={},
+                          vg_name='vg1')
+        pvs = [pv1]
+        stdout = ['{};;;;;;'.format(pv1.pv_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        pvs_ = api.get_pvs()
+        assert len(pvs_) == 1
+        assert pvs_[0].pv_name == pvs[0].pv_name
+
+    def test_get_pvs_empty(self, monkeypatch):
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: ('', '', 0))
+        assert api.get_pvs() == []
+
+
+class TestGetVGs(object):
+
+    def test_get_vgs(self, monkeypatch):
+        vg1 = api.VolumeGroup(vg_name='vg1')
+        vg2 = api.VolumeGroup(vg_name='vg2')
+        vgs = [vg1, vg2]
+        stdout = ['{};;;;;;'.format(vg1.vg_name),
+                  '{};;;;;;'.format(vg2.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        vgs_ = api.get_vgs()
+        assert len(vgs_) == len(vgs)
+        for vg, vg_ in zip(vgs, vgs_):
+            assert vg_.vg_name == vg.vg_name
+
+    def test_get_vgs_single_vg(self, monkeypatch):
+        vg1 = api.VolumeGroup(vg_name='vg'); vgs = [vg1]
+        stdout = ['{};;;;;;'.format(vg1.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        vgs_ = api.get_vgs()
+        assert len(vgs_) == 1
+        assert vgs_[0].vg_name == vgs[0].vg_name
+
+    def test_get_vgs_empty(self, monkeypatch):
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: ('', '', 0))
+        assert api.get_vgs() == []
+
+
+class TestGetLVs(object):
+
+    def test_get_lvs(self, monkeypatch):
+        lv1 = api.Volume(lv_tags='ceph.type=data', lv_path='/dev/vg1/lv1',
+                         lv_name='lv1', vg_name='vg1')
+        lv2 = api.Volume(lv_tags='ceph.type=data', lv_path='/dev/vg2/lv2',
+                         lv_name='lv2', vg_name='vg2')
+        lvs = [lv1, lv2]
+        stdout = ['{};{};{};{}'.format(lv1.lv_tags, lv1.lv_path, lv1.lv_name,
+                                       lv1.vg_name),
+                  '{};{};{};{}'.format(lv2.lv_tags, lv2.lv_path, lv2.lv_name,
+                                       lv2.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        lvs_ = api.get_lvs()
+        assert len(lvs_) == len(lvs)
+        for lv, lv_ in zip(lvs, lvs_):
+            assert lv.__dict__ == lv_.__dict__
+
+    def test_get_lvs_single_lv(self, monkeypatch):
+        stdout = ['ceph.type=data;/dev/vg/lv;lv;vg']
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+        lvs = []
+        lvs.append((api.Volume(lv_tags='ceph.type=data',
+                           lv_path='/dev/vg/lv',
+                           lv_name='lv', vg_name='vg')))
+
+        lvs_ = api.get_lvs()
+        assert len(lvs_) == len(lvs)
+        assert lvs[0].__dict__ == lvs_[0].__dict__
+
+    def test_get_lvs_empty(self, monkeypatch):
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: ('', '', 0))
+        assert api.get_lvs() == []
+
+
+class TestGetFirstPV(object):
+
+    def test_get_first_pv(self, monkeypatch):
+        pv1 = api.PVolume(pv_name='/dev/sda', pv_uuid='0000', pv_tags={},
+                          vg_name='vg1')
+        pv2 = api.PVolume(pv_name='/dev/sdb', pv_uuid='0001', pv_tags={},
+                          vg_name='vg2')
+        stdout = ['{};{};{};{};;'.format(pv1.pv_name, pv1.pv_tags, pv1.pv_uuid, pv1.vg_name),
+                  '{};{};{};{};;'.format(pv2.pv_name, pv2.pv_tags, pv2.pv_uuid, pv2.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        pv_ = api.get_first_pv()
+        assert isinstance(pv_, api.PVolume)
+        assert pv_.pv_name == pv1.pv_name
+
+    def test_get_first_pv_single_pv(self, monkeypatch):
+        pv = api.PVolume(pv_name='/dev/sda', pv_uuid='0000', pv_tags={},
+                         vg_name='vg1')
+        stdout = ['{};;;;;;'.format(pv.pv_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        pv_ = api.get_first_pv()
+        assert isinstance(pv_, api.PVolume)
+        assert pv_.pv_name == pv.pv_name
+
+    def test_get_first_pv_empty(self, monkeypatch):
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: ('', '', 0))
+        assert api.get_first_pv() == []
+
+
+class TestGetFirstVG(object):
+
+    def test_get_first_vg(self, monkeypatch):
+        vg1 = api.VolumeGroup(vg_name='vg1')
+        vg2 = api.VolumeGroup(vg_name='vg2')
+        stdout = ['{};;;;;;'.format(vg1.vg_name), '{};;;;;;'.format(vg2.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        vg_ = api.get_first_vg()
+        assert isinstance(vg_, api.VolumeGroup)
+        assert vg_.vg_name == vg1.vg_name
+
+    def test_get_first_vg_single_vg(self, monkeypatch):
+        vg = api.VolumeGroup(vg_name='vg')
+        stdout = ['{};;;;;;'.format(vg.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        vg_ = api.get_first_vg()
+        assert isinstance(vg_, api.VolumeGroup)
+        assert vg_.vg_name == vg.vg_name
+
+    def test_get_first_vg_empty(self, monkeypatch):
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: ('', '', 0))
+        vg_ = api.get_first_vg()
+        assert vg_ == []
+
+
+class TestGetFirstLV(object):
+
+    def test_get_first_lv(self, monkeypatch):
+        lv1 = api.Volume(lv_tags='ceph.type=data', lv_path='/dev/vg1/lv1',
+                         lv_name='lv1', vg_name='vg1')
+        lv2 = api.Volume(lv_tags='ceph.type=data', lv_path='/dev/vg2/lv2',
+                         lv_name='lv2', vg_name='vg2')
+        stdout = ['{};{};{};{}'.format(lv1.lv_tags, lv1.lv_path, lv1.lv_name,
+                                       lv1.vg_name),
+                  '{};{};{};{}'.format(lv2.lv_tags, lv2.lv_path, lv2.lv_name,
+                                       lv2.vg_name)]
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+
+        lv_ = api.get_first_lv()
+        assert isinstance(lv_, api.Volume)
+        assert lv_.lv_name == lv1.lv_name
+
+    def test_get_first_lv_single_lv(self, monkeypatch):
+        stdout = ['ceph.type=data;/dev/vg/lv;lv;vg']
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: (stdout, '', 0))
+        lv = api.Volume(lv_tags='ceph.type=data',
+                           lv_path='/dev/vg/lv',
+                           lv_name='lv', vg_name='vg')
+
+        lv_ = api.get_first_lv()
+        assert isinstance(lv_, api.Volume)
+        assert lv_.lv_name == lv.lv_name
+
+    def test_get_first_lv_empty(self, monkeypatch):
+        monkeypatch.setattr(api.process, 'call', lambda x,**kw: ('', '', 0))
+        assert api.get_lvs() == []
index 74985e253a1a67642a977a63d0344a73094dfe8d..195082e7c121fb90875a3a03e1bf18058242574d 100644 (file)
@@ -3,7 +3,6 @@ import pytest
 from mock.mock import patch, PropertyMock
 from ceph_volume.util import disk
 from ceph_volume.util.constants import ceph_disk_guids
-from ceph_volume.api import lvm as lvm_api
 from ceph_volume import conf, configuration
 
 
@@ -139,49 +138,6 @@ def conf_ceph_stub(monkeypatch, tmpfile):
     return apply
 
 
-@pytest.fixture
-def volumes(monkeypatch):
-    monkeypatch.setattr('ceph_volume.process.call', lambda x, **kw: ('', '', 0))
-    volumes = lvm_api.Volumes()
-    volumes._purge()
-    return volumes
-
-
-@pytest.fixture
-def volume_groups(monkeypatch):
-    monkeypatch.setattr('ceph_volume.process.call', lambda x, **kw: ('', '', 0))
-    vgs = lvm_api.VolumeGroups()
-    vgs._purge()
-    return vgs
-
-def volume_groups_empty(monkeypatch):
-    monkeypatch.setattr('ceph_volume.process.call', lambda x, **kw: ('', '', 0))
-    vgs = lvm_api.VolumeGroups(populate=False)
-    return vgs
-
-@pytest.fixture
-def stub_vgs(monkeypatch, volume_groups):
-    def apply(vgs):
-        monkeypatch.setattr(lvm_api, 'get_api_vgs', lambda: vgs)
-    return apply
-
-
-# TODO: allow init-ing pvolumes to list we want
-@pytest.fixture
-def pvolumes(monkeypatch):
-    monkeypatch.setattr('ceph_volume.process.call', lambda x, **kw: ('', '', 0))
-    pvolumes = lvm_api.PVolumes()
-    pvolumes._purge()
-    return pvolumes
-
-@pytest.fixture
-def pvolumes_empty(monkeypatch):
-    monkeypatch.setattr('ceph_volume.process.call', lambda x, **kw: ('', '', 0))
-    pvolumes = lvm_api.PVolumes(populate=False)
-    return pvolumes
-
-
-
 @pytest.fixture
 def is_root(monkeypatch):
     """
@@ -215,15 +171,6 @@ def disable_kernel_queries(monkeypatch):
     monkeypatch.setattr("ceph_volume.util.disk.udevadm_property", lambda *a, **kw: {})
 
 
-@pytest.fixture
-def disable_lvm_queries(monkeypatch):
-    '''
-    This speeds up calls to Device and Disk
-    '''
-    monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: None)
-    monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv", lambda vg_name, lv_uuid: None)
-
-
 @pytest.fixture(params=[
     '', 'ceph data', 'ceph journal', 'ceph block',
     'ceph block.wal', 'ceph block.db', 'ceph lockbox'])
@@ -290,12 +237,10 @@ def device_info(monkeypatch, patch_bluestore_label):
         monkeypatch.setattr("ceph_volume.sys_info.devices", {})
         monkeypatch.setattr("ceph_volume.util.device.disk.get_devices", lambda: devices)
         if not devices:
-            monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: lv)
+            monkeypatch.setattr("ceph_volume.util.device.lvm.get_first_lv", lambda filters: lv)
         else:
-            monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: None)
             monkeypatch.setattr("ceph_volume.util.device.lvm.get_device_lvs",
                                 lambda path: [lv])
-        monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv", lambda vg_name, lv_uuid: lv)
         monkeypatch.setattr("ceph_volume.util.device.disk.lsblk", lambda path: lsblk)
         monkeypatch.setattr("ceph_volume.util.device.disk.blkid", lambda path: blkid)
         monkeypatch.setattr("ceph_volume.util.disk.udevadm_property", lambda *a, **kw: udevadm)
index d64a7a56877a138d2cf74530ce48e99d89e70abc..ba54ea54dd48165a42ec4cedb144af4216ba5295 100644 (file)
@@ -61,7 +61,6 @@ class TestMixedType(object):
                        block_db_size=None, block_wal_size=None,
                        osd_ids=[])
         monkeypatch.setattr(lvm, 'VolumeGroup', lambda x, **kw: [])
-        monkeypatch.setattr(lvm, 'VolumeGroups', lambda: [])
         bluestore.MixedType(args, [], [db_dev], [])
 
 
@@ -69,7 +68,7 @@ class TestMixedTypeConfiguredSize(object):
     # uses a block.db size that has been configured via ceph.conf, instead of
     # defaulting to 'as large as possible'
 
-    def test_hdd_device_is_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_hdd_device_is_large_enough(self, fakedevice, factory, conf_ceph):
         # 3GB block.db in ceph.conf
         conf_ceph(get_safe=lambda *a: 3147483640)
         args = factory(filtered_devices=[], osds_per_device=1,
@@ -87,7 +86,7 @@ class TestMixedTypeConfiguredSize(object):
         assert osd['block.db']['path'] == 'vg: vg/lv'
         assert osd['block.db']['percentage'] == 100
 
-    def test_ssd_device_is_not_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_ssd_device_is_not_large_enough(self, fakedevice, factory, conf_ceph):
         # 7GB block.db in ceph.conf
         conf_ceph(get_safe=lambda *a: 7747483640)
         args = factory(filtered_devices=[], osds_per_device=1,
@@ -102,7 +101,7 @@ class TestMixedTypeConfiguredSize(object):
         expected = 'Not enough space in fast devices (5.66 GB) to create 1 x 7.22 GB block.db LV'
         assert expected in str(error.value)
 
-    def test_multi_hdd_device_is_not_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_multi_hdd_device_is_not_large_enough(self, fakedevice, factory, conf_ceph):
         # 3GB block.db in ceph.conf
         conf_ceph(get_safe=lambda *a: 3147483640)
         args = factory(filtered_devices=[], osds_per_device=2,
@@ -120,7 +119,7 @@ class TestMixedTypeConfiguredSize(object):
 
 class TestMixedTypeLargeAsPossible(object):
 
-    def test_hdd_device_is_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_hdd_device_is_large_enough(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: None)
         args = factory(filtered_devices=[], osds_per_device=1,
                        block_db_size=None, block_wal_size=None,
@@ -138,7 +137,7 @@ class TestMixedTypeLargeAsPossible(object):
         # as large as possible
         assert osd['block.db']['percentage'] == 100
 
-    def test_multi_hdd_device_is_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_multi_hdd_device_is_large_enough(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: None)
         args = factory(filtered_devices=[], osds_per_device=2,
                        block_db_size=None, block_wal_size=None,
@@ -156,7 +155,7 @@ class TestMixedTypeLargeAsPossible(object):
         # as large as possible
         assert osd['block.db']['percentage'] == 50
 
-    def test_multi_hdd_device_is_not_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_multi_hdd_device_is_not_large_enough(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: None)
         args = factory(filtered_devices=[], osds_per_device=2,
                        block_db_size=None, block_wal_size=None,
@@ -173,7 +172,7 @@ class TestMixedTypeLargeAsPossible(object):
 
 class TestMixedTypeWithExplicitDevices(object):
 
-    def test_multi_hdd_device_is_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_multi_hdd_device_is_large_enough(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: None)
         args = factory(filtered_devices=[], osds_per_device=2,
                        block_db_size=None, block_wal_size=None,
@@ -190,7 +189,7 @@ class TestMixedTypeWithExplicitDevices(object):
         # as large as possible
         assert osd['block.wal']['percentage'] == 50
 
-    def test_wal_device_is_not_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_wal_device_is_not_large_enough(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: None)
         args = factory(filtered_devices=[], osds_per_device=2,
                        block_db_size=None, block_wal_size=None,
index 5bfc07086b4c3f264701fcc4fb9b376943283d27..4fd94f5b7dee07e619a827d06c52e44610e79a9c 100644 (file)
@@ -118,7 +118,7 @@ class TestSingleType(object):
 
 class TestMixedType(object):
 
-    def test_minimum_size_is_not_met(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_minimum_size_is_not_met(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: '120')
         args = factory(filtered_devices=[], osds_per_device=1,
                        journal_size=None, osd_ids=[])
@@ -131,7 +131,7 @@ class TestMixedType(object):
         msg = "journal sizes must be larger than 2GB, detected: 120.00 MB"
         assert msg in str(error.value)
 
-    def test_ssd_device_is_not_large_enough(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_ssd_device_is_not_large_enough(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: '7120')
         args = factory(filtered_devices=[], osds_per_device=1,
                        journal_size=None, osd_ids=[])
@@ -144,7 +144,7 @@ class TestMixedType(object):
         msg = "Not enough space in fast devices (5.66 GB) to create 1 x 6.95 GB journal LV"
         assert msg in str(error.value)
 
-    def test_hdd_device_is_lvm_member_fails(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_hdd_device_is_lvm_member_fails(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: '5120')
         args = factory(filtered_devices=[], osds_per_device=1,
                        journal_size=None, osd_ids=[])
@@ -159,7 +159,6 @@ class TestMixedType(object):
     @patch('ceph_volume.devices.lvm.strategies.strategies.MixedStrategy.get_common_vg')
     def test_ssd_is_lvm_member_doesnt_fail(self,
                                            patched_get_common_vg,
-                                           volumes,
                                            fakedevice,
                                            factory,
                                            conf_ceph):
@@ -178,13 +177,15 @@ class TestMixedType(object):
         args = factory(filtered_devices=[], osds_per_device=1,
                        journal_size=None, osd_ids=[])
         devices = [ssd, hdd]
-        result = filestore.MixedType.with_auto_devices(args, devices).computed['osds'][0]
+
+        result = filestore.MixedType.with_auto_devices(args, devices).\
+            computed['osds'][0]
         assert result['journal']['path'] == 'vg: fast'
         assert result['journal']['percentage'] == 71
         assert result['journal']['human_readable_size'] == '5.00 GB'
 
     @patch('ceph_volume.api.lvm.get_device_vgs')
-    def test_no_common_vg(self, patched_get_device_vgs, volumes, fakedevice, factory, conf_ceph):
+    def test_no_common_vg(self, patched_get_device_vgs, fakedevice, factory, conf_ceph):
         patched_get_device_vgs.side_effect = lambda x: [lvm.VolumeGroup(vg_name='{}'.format(x[-1]), vg_tags='')]
         ssd1 = fakedevice(
             used_by_ceph=False, is_lvm_member=True, rotational=False, sys_api=dict(size=6073740000)
@@ -195,14 +196,15 @@ class TestMixedType(object):
         hdd = fakedevice(used_by_ceph=False, is_lvm_member=False, rotational=True, sys_api=dict(size=6073740000))
 
         conf_ceph(get_safe=lambda *a: '5120')
-        args = factory(filtered_devices=[], osds_per_device=1,
-                       journal_size=None, osd_ids=[])
+        args = factory(filtered_devices=[], osds_per_device=1, osd_ids=[],
+                       journal_size=None)
         devices = [ssd1, ssd2, hdd]
+
         with pytest.raises(RuntimeError) as error:
             filestore.MixedType.with_auto_devices(args, devices)
             assert 'Could not find a common VG between devices' in str(error.value)
 
-    def test_ssd_device_fails_multiple_osds(self, stub_vgs, fakedevice, factory, conf_ceph):
+    def test_ssd_device_fails_multiple_osds(self, fakedevice, factory, conf_ceph):
         conf_ceph(get_safe=lambda *a: '15120')
         args = factory(filtered_devices=[], osds_per_device=2,
                        journal_size=None, osd_ids=[])
index cfa7de8e8c415bd2569ad10952276465ae367a48..33e0ed32b619a51a00839b57f9c175c6a2a305d0 100644 (file)
@@ -1,4 +1,5 @@
 import pytest
+from copy import deepcopy
 from ceph_volume.devices.lvm import activate
 from ceph_volume.api import lvm as api
 from ceph_volume.tests.conftest import Capture
@@ -22,34 +23,42 @@ class TestActivate(object):
     # test the negative side effect with an actual functional run, so we must
     # setup a perfect scenario for this test to check it can really work
     # with/without osd_id
-    def test_no_osd_id_matches_fsid(self, is_root, volumes, monkeypatch, capture):
-        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=1234")
+    def test_no_osd_id_matches_fsid(self, is_root, monkeypatch, capture):
+        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
+                               lv_tags="ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: volumes)
         monkeypatch.setattr(activate, 'activate_filestore', capture)
         args = Args(osd_id=None, osd_fsid='1234', filestore=True)
         activate.Activate([]).activate(args)
         assert capture.calls[0]['args'][0] == [FooVolume]
 
-    def test_no_osd_id_matches_fsid_bluestore(self, is_root, volumes, monkeypatch, capture):
-        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=1234")
+    def test_no_osd_id_matches_fsid_bluestore(self, is_root, monkeypatch, capture):
+        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
+                               lv_tags="ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: volumes)
         monkeypatch.setattr(activate, 'activate_bluestore', capture)
         args = Args(osd_id=None, osd_fsid='1234', bluestore=True)
         activate.Activate([]).activate(args)
         assert capture.calls[0]['args'][0] == [FooVolume]
 
-    def test_no_osd_id_no_matching_fsid(self, is_root, volumes, monkeypatch, capture):
-        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=11234")
+    def test_no_osd_id_no_matching_fsid(self, is_root, monkeypatch, capture):
+        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
+                               lv_tags="ceph.osd_fsid=1111")
+        volumes = []
         volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: [])
+        monkeypatch.setattr(api, 'get_first_lv', lambda **kwargs: [])
         monkeypatch.setattr(activate, 'activate_filestore', capture)
-        args = Args(osd_id=None, osd_fsid='1234')
+
+        args = Args(osd_id=None, osd_fsid='2222')
         with pytest.raises(RuntimeError):
             activate.Activate([]).activate(args)
 
-    def test_filestore_no_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_no_systemd(self, is_root, monkeypatch, capture):
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
         fake_enable = Capture()
         fake_start_osd = Capture()
@@ -70,16 +79,21 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
         args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, filestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_filestore_no_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_no_systemd_autodetect(self, is_root, monkeypatch, capture):
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
         fake_enable = Capture()
         fake_start_osd = Capture()
@@ -100,16 +114,22 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, filestore=True, auto_detect_objectstore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True,
+                    filestore=True, auto_detect_objectstore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_filestore_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_systemd_autodetect(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
@@ -130,16 +150,22 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, filestore=True, auto_detect_objectstore=False)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    filestore=True, auto_detect_objectstore=False)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []
 
-    def test_filestore_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_systemd(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
@@ -160,16 +186,22 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, filestore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    filestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []
 
-    def test_bluestore_no_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_no_systemd(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
@@ -180,15 +212,18 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
         args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, bluestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_bluestore_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_systemd(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
@@ -199,15 +234,19 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, bluestore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    bluestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []
 
-    def test_bluestore_no_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_no_systemd_autodetect(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
@@ -218,29 +257,39 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.block_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.block_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, bluestore=True, auto_detect_objectstore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True,
+                    bluestore=True, auto_detect_objectstore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_bluestore_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_systemd_autodetect(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
-        monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
-        monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
+        monkeypatch.setattr('ceph_volume.util.system.path_is_mounted',
+                            lambda *a, **kw: True)
+        monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw:
+                            True)
         monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
         monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
         monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, bluestore=True, auto_detect_objectstore=False)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    bluestore=True, auto_detect_objectstore=False)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []
index 1c3c25f67e310299852dbaa85bbc0abda6619eeb..06a37c4906c25b3d7bf578727d02eda77565257b 100644 (file)
@@ -1,4 +1,5 @@
 import pytest
+import json
 from ceph_volume.devices.lvm import batch
 
 
@@ -133,7 +134,7 @@ class TestFilterDevices(object):
             abspath="/dev/sda",
             rotational=True,
             is_lvm_member=False,
-            available=True
+            available=True,
         )
         ssd1 = factory(
             used_by_ceph=True,
@@ -143,9 +144,34 @@ class TestFilterDevices(object):
             available=False
         )
         args = factory(devices=[hdd1], db_devices=[ssd1], filtered_devices={},
-                      yes=True)
+                      yes=True, format="", report=False)
         b = batch.Batch([])
         b.args = args
         with pytest.raises(RuntimeError) as ex:
             b._filter_devices()
             assert '1 devices were filtered in non-interactive mode, bailing out' in str(ex.value)
+
+    def test_no_auto_prints_json_on_unavailable_device_and_report(self, factory, capsys):
+        hdd1 = factory(
+            used_by_ceph=False,
+            abspath="/dev/sda",
+            rotational=True,
+            is_lvm_member=False,
+            available=True,
+        )
+        ssd1 = factory(
+            used_by_ceph=True,
+            abspath="/dev/nvme0n1",
+            rotational=False,
+            is_lvm_member=True,
+            available=False
+        )
+        captured = capsys.readouterr()
+        args = factory(devices=[hdd1], db_devices=[ssd1], filtered_devices={},
+                      yes=True, format="json", report=True)
+        b = batch.Batch([])
+        b.args = args
+        with pytest.raises(SystemExit):
+            b._filter_devices()
+            result = json.loads(captured.out)
+            assert not result["changed"]
index e41cbba7262513ea616099c7253394be3215c10a..cf4b68c7143783cf990b9a01b3434f4019e01a1e 100644 (file)
@@ -62,36 +62,35 @@ class TestPrettyReport(object):
 
 class TestList(object):
 
-    def test_empty_full_json_zero_exit_status(self, is_root, volumes,
-                                              factory, capsys):
+    def test_empty_full_json_zero_exit_status(self, is_root,factory,capsys):
         args = factory(format='json', device=None)
         lvm.listing.List([]).list(args)
         stdout, stderr = capsys.readouterr()
         assert stdout == '{}\n'
 
-    def test_empty_device_json_zero_exit_status(self, is_root, volumes,
-                                                factory, capsys):
+    def test_empty_device_json_zero_exit_status(self, is_root,factory,capsys):
         args = factory(format='json', device='/dev/sda1')
         lvm.listing.List([]).list(args)
         stdout, stderr = capsys.readouterr()
         assert stdout == '{}\n'
 
-    def test_empty_full_zero_exit_status(self, is_root, volumes, factory):
+    def test_empty_full_zero_exit_status(self, is_root, factory):
         args = factory(format='pretty', device=None)
         with pytest.raises(SystemExit):
             lvm.listing.List([]).list(args)
 
-    def test_empty_device_zero_exit_status(self, is_root, volumes, factory):
+    def test_empty_device_zero_exit_status(self, is_root, factory):
         args = factory(format='pretty', device='/dev/sda1')
         with pytest.raises(SystemExit):
             lvm.listing.List([]).list(args)
 
 class TestFullReport(object):
 
-    def test_no_ceph_lvs(self, volumes, monkeypatch):
+    def test_no_ceph_lvs(self, monkeypatch):
         # ceph lvs are detected by looking into its tags
         osd = api.Volume(lv_name='volume1', lv_path='/dev/VolGroup/lv',
                          lv_tags={})
+        volumes = []
         volumes.append(osd)
         monkeypatch.setattr(lvm.listing.api, 'get_lvs', lambda **kwargs:
                             volumes)
@@ -99,23 +98,22 @@ class TestFullReport(object):
         result = lvm.listing.List([]).full_report()
         assert result == {}
 
-    def test_ceph_data_lv_reported(self, pvolumes, volumes, monkeypatch):
+    def test_ceph_data_lv_reported(self, monkeypatch):
         tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
         pv = api.PVolume(pv_name='/dev/sda1', pv_tags={}, pv_uuid="0000",
                          vg_name='VolGroup', lv_uuid="aaaa")
         osd = api.Volume(lv_name='volume1', lv_uuid='y', lv_tags=tags,
                          lv_path='/dev/VolGroup/lv', vg_name='VolGroup')
-        pvolumes.append(pv)
+        volumes = []
         volumes.append(osd)
-        monkeypatch.setattr(lvm.listing.api, 'get_pvs', lambda **kwargs:
-                            pvolumes)
+        monkeypatch.setattr(lvm.listing.api, 'get_first_pv', lambda **kwargs: pv)
         monkeypatch.setattr(lvm.listing.api, 'get_lvs', lambda **kwargs:
                             volumes)
 
         result = lvm.listing.List([]).full_report()
         assert result['0'][0]['name'] == 'volume1'
 
-    def test_ceph_journal_lv_reported(self, pvolumes, volumes, monkeypatch):
+    def test_ceph_journal_lv_reported(self, monkeypatch):
         tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
         journal_tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=journal'
         pv = api.PVolume(pv_name='/dev/sda1', pv_tags={}, pv_uuid="0000",
@@ -125,11 +123,10 @@ class TestFullReport(object):
         journal = api.Volume(
             lv_name='journal', lv_uuid='x', lv_tags=journal_tags,
             lv_path='/dev/VolGroup/journal', vg_name='VolGroup')
-        pvolumes.append(pv)
+        volumes = []
         volumes.append(osd)
         volumes.append(journal)
-        monkeypatch.setattr(lvm.listing.api, 'get_pvs', lambda **kwargs:
-                            pvolumes)
+        monkeypatch.setattr(lvm.listing.api,'get_first_pv',lambda **kwargs:pv)
         monkeypatch.setattr(lvm.listing.api, 'get_lvs', lambda **kwargs:
                             volumes)
 
@@ -137,13 +134,14 @@ class TestFullReport(object):
         assert result['0'][0]['name'] == 'volume1'
         assert result['0'][1]['name'] == 'journal'
 
-    def test_ceph_wal_lv_reported(self, volumes, monkeypatch):
+    def test_ceph_wal_lv_reported(self, monkeypatch):
         tags = 'ceph.osd_id=0,ceph.wal_uuid=x,ceph.type=data'
         wal_tags = 'ceph.osd_id=0,ceph.wal_uuid=x,ceph.type=wal'
         osd = api.Volume(lv_name='volume1', lv_uuid='y', lv_tags=tags,
                          lv_path='/dev/VolGroup/lv', vg_name='VolGroup')
         wal = api.Volume(lv_name='wal', lv_uuid='x', lv_tags=wal_tags,
                          lv_path='/dev/VolGroup/wal', vg_name='VolGroup')
+        volumes = []
         volumes.append(osd)
         volumes.append(wal)
         monkeypatch.setattr(lvm.listing.api, 'get_lvs', lambda **kwargs:
@@ -170,7 +168,7 @@ class TestFullReport(object):
 
 class TestSingleReport(object):
 
-    def test_not_a_ceph_lv(self, volumes, monkeypatch):
+    def test_not_a_ceph_lv(self, monkeypatch):
         # ceph lvs are detected by looking into its tags
         lv = api.Volume(lv_name='lv', lv_tags={}, lv_path='/dev/VolGroup/lv',
                         vg_name='VolGroup')
@@ -180,14 +178,13 @@ class TestSingleReport(object):
         result = lvm.listing.List([]).single_report('VolGroup/lv')
         assert result == {}
 
-    def test_report_a_ceph_lv(self, pvolumes, volumes, monkeypatch):
+    def test_report_a_ceph_lv(self, monkeypatch):
         # ceph lvs are detected by looking into its tags
         tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
         lv = api.Volume(lv_name='lv', vg_name='VolGroup', lv_uuid='aaaa',
                         lv_path='/dev/VolGroup/lv', lv_tags=tags)
+        volumes = []
         volumes.append(lv)
-        monkeypatch.setattr(lvm.listing.api, 'get_pvs', lambda **kwargs:
-                            pvolumes)
         monkeypatch.setattr(lvm.listing.api, 'get_lvs', lambda **kwargs:
                             volumes)
 
@@ -211,17 +208,23 @@ class TestSingleReport(object):
         assert result['0'][0]['type'] == 'journal'
         assert result['0'][0]['path'] == '/dev/sda1'
 
-    def test_report_a_ceph_lv_with_devices(self, volumes, pvolumes, monkeypatch):
+    def test_report_a_ceph_lv_with_devices(self, monkeypatch):
+        pvolumes = []
+
         tags = 'ceph.osd_id=0,ceph.type=data'
         pv1 = api.PVolume(vg_name="VolGroup", pv_name='/dev/sda1',
                           pv_uuid='', pv_tags={}, lv_uuid="aaaa")
         pv2 = api.PVolume(vg_name="VolGroup", pv_name='/dev/sdb1',
                           pv_uuid='', pv_tags={}, lv_uuid="aaaa")
-        lv = api.Volume(lv_name='lv', vg_name='VolGroup',lv_uuid='aaaa',
-                        lv_path='/dev/VolGroup/lv', lv_tags=tags)
         pvolumes.append(pv1)
         pvolumes.append(pv2)
+
+
+        volumes = []
+        lv = api.Volume(lv_name='lv', vg_name='VolGroup',lv_uuid='aaaa',
+                        lv_path='/dev/VolGroup/lv', lv_tags=tags)
         volumes.append(lv)
+
         monkeypatch.setattr(lvm.listing.api, 'get_pvs', lambda **kwargs:
                             pvolumes)
         monkeypatch.setattr(lvm.listing.api, 'get_lvs', lambda **kwargs:
@@ -239,11 +242,11 @@ class TestSingleReport(object):
         assert result['0'][0]['path'] == '/dev/VolGroup/lv'
         assert result['0'][0]['devices'] == ['/dev/sda1', '/dev/sdb1']
 
-    def test_report_a_ceph_lv_with_no_matching_devices(self, volumes,
-                                                       monkeypatch):
+    def test_report_a_ceph_lv_with_no_matching_devices(self, monkeypatch):
         tags = 'ceph.osd_id=0,ceph.type=data'
         lv = api.Volume(lv_name='lv', vg_name='VolGroup', lv_uuid='aaaa',
                         lv_path='/dev/VolGroup/lv', lv_tags=tags)
+        volumes = []
         volumes.append(lv)
         monkeypatch.setattr(lvm.listing.api, 'get_lvs', lambda **kwargs:
                             volumes)
index f16b2ffffce63a2085bc96097fd86407762b5839..dd902866884ba2785e12b2acea194191f06eda07 100644 (file)
@@ -115,21 +115,6 @@ class TestPrepare(object):
             expected = 'skipping {}, it is already prepared'.format('/dev/sdfoo')
             assert expected in str(error.value)
 
-class TestGetJournalLV(object):
-
-    @pytest.mark.parametrize('arg', ['', '///', None, '/dev/sda1'])
-    def test_no_journal_on_invalid_path(self, monkeypatch, arg):
-        monkeypatch.setattr(lvm.prepare.api, 'get_lv', lambda **kw: False)
-        prepare = lvm.prepare.Prepare([])
-        assert prepare.get_lv(arg) is None
-
-    def test_no_journal_lv_found(self, monkeypatch):
-        # patch it with 0 so we know we are getting to get_lv
-        monkeypatch.setattr(lvm.prepare.api, 'get_lv', lambda **kw: 0)
-        prepare = lvm.prepare.Prepare([])
-        assert prepare.get_lv('vg/lv') == 0
-
-
 class TestActivate(object):
 
     def test_main_spits_help_with_no_arguments(self, capsys):
index 20ca56b54b325aab3808b8330d6f6c0fd36a4c93..1fa22e5b681552b43d1981492aa324374891107e 100644 (file)
 import os
 import pytest
+from copy import deepcopy
+from mock.mock import patch, call
+from ceph_volume import process
 from ceph_volume.api import lvm as api
 from ceph_volume.devices.lvm import zap
 
 
 class TestFindAssociatedDevices(object):
 
-    def test_no_lvs_found_that_match_id(self, volumes, monkeypatch, device_info):
-        monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
+    def test_no_lvs_found_that_match_id(self, monkeypatch, device_info):
         tags = 'ceph.osd_id=9,ceph.journal_uuid=x,ceph.type=data'
-        osd = api.Volume(
-            lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', vg_name='vg', lv_tags=tags)
+        osd = api.Volume(lv_name='volume1', lv_uuid='y', vg_name='vg',
+                         lv_tags=tags, lv_path='/dev/VolGroup/lv')
+        volumes = []
         volumes.append(osd)
+        monkeypatch.setattr(zap.api, 'get_lvs', lambda **kwargs: {})
+
         with pytest.raises(RuntimeError):
             zap.find_associated_devices(osd_id=10)
 
-    def test_no_lvs_found_that_match_fsid(self, volumes, monkeypatch, device_info):
-        monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
-        tags = 'ceph.osd_id=9,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
-        osd = api.Volume(
-            lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', vg_name='vg', lv_tags=tags)
+    def test_no_lvs_found_that_match_fsid(self, monkeypatch, device_info):
+        tags = 'ceph.osd_id=9,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,'+\
+               'ceph.type=data'
+        osd = api.Volume(lv_name='volume1', lv_uuid='y', lv_tags=tags,
+                         vg_name='vg', lv_path='/dev/VolGroup/lv')
+        volumes = []
         volumes.append(osd)
+        monkeypatch.setattr(zap.api, 'get_lvs', lambda **kwargs: {})
+
         with pytest.raises(RuntimeError):
             zap.find_associated_devices(osd_fsid='aaaa-lkjh')
 
-    def test_no_lvs_found_that_match_id_fsid(self, volumes, monkeypatch, device_info):
-        monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
-        tags = 'ceph.osd_id=9,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
-        osd = api.Volume(
-            lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', vg_name='vg', lv_tags=tags)
+    def test_no_lvs_found_that_match_id_fsid(self, monkeypatch, device_info):
+        tags = 'ceph.osd_id=9,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,'+\
+               'ceph.type=data'
+        osd = api.Volume(lv_name='volume1', lv_uuid='y', vg_name='vg',
+                         lv_tags=tags, lv_path='/dev/VolGroup/lv')
+        volumes = []
         volumes.append(osd)
+        monkeypatch.setattr(zap.api, 'get_lvs', lambda **kwargs: {})
+
         with pytest.raises(RuntimeError):
             zap.find_associated_devices(osd_id='9', osd_fsid='aaaa-lkjh')
 
-    def test_no_ceph_lvs_found(self, volumes, monkeypatch):
-        monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
-        osd = api.Volume(
-            lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', lv_tags='')
+    def test_no_ceph_lvs_found(self, monkeypatch):
+        osd = api.Volume(lv_name='volume1', lv_uuid='y', lv_tags='',
+                         lv_path='/dev/VolGroup/lv')
+        volumes = []
         volumes.append(osd)
+        monkeypatch.setattr(zap.api, 'get_lvs', lambda **kwargs: {})
+
         with pytest.raises(RuntimeError):
             zap.find_associated_devices(osd_id=100)
 
-    def test_lv_is_matched_id(self, volumes, monkeypatch):
-        monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
+    def test_lv_is_matched_id(self, monkeypatch):
         tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
-        osd = api.Volume(
-            lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
+        osd = api.Volume(lv_name='volume1', lv_uuid='y', vg_name='',
+                         lv_path='/dev/VolGroup/lv', lv_tags=tags)
+        volumes = []
         volumes.append(osd)
+        monkeypatch.setattr(zap.api, 'get_lvs', lambda **kw: volumes)
+        monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
+
         result = zap.find_associated_devices(osd_id='0')
         assert result[0].abspath == '/dev/VolGroup/lv'
 
-    def test_lv_is_matched_fsid(self, volumes, monkeypatch):
-        monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
-        tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
-        osd = api.Volume(
-            lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
+    def test_lv_is_matched_fsid(self, monkeypatch):
+        tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,' +\
+               'ceph.type=data'
+        osd = api.Volume(lv_name='volume1', lv_uuid='y', vg_name='',
+                         lv_path='/dev/VolGroup/lv', lv_tags=tags)
+        volumes = []
         volumes.append(osd)
+        monkeypatch.setattr(zap.api, 'get_lvs', lambda **kw: deepcopy(volumes))
+        monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
+
         result = zap.find_associated_devices(osd_fsid='asdf-lkjh')
         assert result[0].abspath == '/dev/VolGroup/lv'
 
-    def test_lv_is_matched_id_fsid(self, volumes, monkeypatch):
-        monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
-        tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
-        osd = api.Volume(
-            lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
+    def test_lv_is_matched_id_fsid(self, monkeypatch):
+        tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,' +\
+               'ceph.type=data'
+        osd = api.Volume(lv_name='volume1', lv_uuid='y', vg_name='',
+                         lv_path='/dev/VolGroup/lv', lv_tags=tags)
+        volumes = []
         volumes.append(osd)
+        monkeypatch.setattr(zap.api, 'get_lvs', lambda **kw: volumes)
+        monkeypatch.setattr(process, 'call', lambda x, **kw: ('', '', 0))
+
         result = zap.find_associated_devices(osd_id='0', osd_fsid='asdf-lkjh')
         assert result[0].abspath == '/dev/VolGroup/lv'
 
 
 class TestEnsureAssociatedLVs(object):
 
-    def test_nothing_is_found(self, volumes):
+    def test_nothing_is_found(self):
+        volumes = []
         result = zap.ensure_associated_lvs(volumes)
         assert result == []
 
-    def test_data_is_found(self, volumes):
+    def test_data_is_found(self):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
         osd = api.Volume(
             lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/data', lv_tags=tags)
+        volumes = []
         volumes.append(osd)
         result = zap.ensure_associated_lvs(volumes)
         assert result == ['/dev/VolGroup/data']
 
-    def test_block_is_found(self, volumes):
+    def test_block_is_found(self):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=block'
         osd = api.Volume(
             lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/block', lv_tags=tags)
+        volumes = []
         volumes.append(osd)
         result = zap.ensure_associated_lvs(volumes)
         assert result == ['/dev/VolGroup/block']
@@ -107,26 +134,29 @@ class TestEnsureAssociatedLVs(object):
         out, err = capsys.readouterr()
         assert "Zapping successful for OSD: 1" in err
 
-    def test_block_and_partition_are_found(self, volumes, monkeypatch):
+    def test_block_and_partition_are_found(self, monkeypatch):
         monkeypatch.setattr(zap.disk, 'get_device_from_partuuid', lambda x: '/dev/sdb1')
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=block'
         osd = api.Volume(
             lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/block', lv_tags=tags)
+        volumes = []
         volumes.append(osd)
         result = zap.ensure_associated_lvs(volumes)
         assert '/dev/sdb1' in result
         assert '/dev/VolGroup/block' in result
 
-    def test_journal_is_found(self, volumes):
+    def test_journal_is_found(self):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=journal'
         osd = api.Volume(
             lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
+        volumes = []
         volumes.append(osd)
         result = zap.ensure_associated_lvs(volumes)
         assert result == ['/dev/VolGroup/lv']
 
-    def test_multiple_journals_are_found(self, volumes):
+    def test_multiple_journals_are_found(self):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=journal'
+        volumes = []
         for i in range(3):
             osd = api.Volume(
                 lv_name='volume%s' % i, lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv%s' % i, lv_tags=tags)
@@ -136,8 +166,9 @@ class TestEnsureAssociatedLVs(object):
         assert '/dev/VolGroup/lv1' in result
         assert '/dev/VolGroup/lv2' in result
 
-    def test_multiple_dbs_are_found(self, volumes):
+    def test_multiple_dbs_are_found(self):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=db'
+        volumes = []
         for i in range(3):
             osd = api.Volume(
                 lv_name='volume%s' % i, lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv%s' % i, lv_tags=tags)
@@ -147,8 +178,9 @@ class TestEnsureAssociatedLVs(object):
         assert '/dev/VolGroup/lv1' in result
         assert '/dev/VolGroup/lv2' in result
 
-    def test_multiple_wals_are_found(self, volumes):
+    def test_multiple_wals_are_found(self):
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.wal_uuid=x,ceph.type=wal'
+        volumes = []
         for i in range(3):
             osd = api.Volume(
                 lv_name='volume%s' % i, lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv%s' % i, lv_tags=tags)
@@ -158,7 +190,8 @@ class TestEnsureAssociatedLVs(object):
         assert '/dev/VolGroup/lv1' in result
         assert '/dev/VolGroup/lv2' in result
 
-    def test_multiple_backing_devs_are_found(self, volumes):
+    def test_multiple_backing_devs_are_found(self):
+        volumes = []
         for _type in ['journal', 'db', 'wal']:
             tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.wal_uuid=x,ceph.type=%s' % _type
             osd = api.Volume(
@@ -169,6 +202,16 @@ class TestEnsureAssociatedLVs(object):
         assert '/dev/VolGroup/lvwal' in result
         assert '/dev/VolGroup/lvdb' in result
 
+    @patch('ceph_volume.devices.lvm.zap.api.get_lvs')
+    def test_ensure_associated_lvs(self, m_get_lvs):
+        zap.ensure_associated_lvs([], lv_tags={'ceph.osd_id': '1'})
+        calls = [
+            call(tags={'ceph.type': 'journal', 'ceph.osd_id': '1'}),
+            call(tags={'ceph.type': 'db', 'ceph.osd_id': '1'}),
+            call(tags={'ceph.type': 'wal', 'ceph.osd_id': '1'})
+        ]
+        m_get_lvs.assert_has_calls(calls, any_order=True)
+
 
 class TestWipeFs(object):
 
diff --git a/ceph/src/ceph-volume/ceph_volume/tests/devices/raw/__init__.py b/ceph/src/ceph-volume/ceph_volume/tests/devices/raw/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/src/ceph-volume/ceph_volume/tests/devices/raw/test_prepare.py b/ceph/src/ceph-volume/ceph_volume/tests/devices/raw/test_prepare.py
new file mode 100644 (file)
index 0000000..e4cf8ce
--- /dev/null
@@ -0,0 +1,97 @@
+import pytest
+from ceph_volume.devices import raw
+from mock.mock import patch
+
+
+class TestRaw(object):
+
+    def test_main_spits_help_with_no_arguments(self, capsys):
+        raw.main.Raw([]).main()
+        stdout, stderr = capsys.readouterr()
+        assert 'Manage a single-device OSD on a raw block device.' in stdout
+
+    def test_main_shows_activate_subcommands(self, capsys):
+        raw.main.Raw([]).main()
+        stdout, stderr = capsys.readouterr()
+        assert 'activate ' in stdout
+        assert 'Discover and prepare' in stdout
+
+    def test_main_shows_prepare_subcommands(self, capsys):
+        raw.main.Raw([]).main()
+        stdout, stderr = capsys.readouterr()
+        assert 'prepare ' in stdout
+        assert 'Format a raw device' in stdout
+
+
+class TestPrepare(object):
+
+    def test_main_spits_help_with_no_arguments(self, capsys):
+        raw.prepare.Prepare([]).main()
+        stdout, stderr = capsys.readouterr()
+        assert 'Prepare an OSD by assigning an ID and FSID' in stdout
+
+    def test_main_shows_full_help(self, capsys):
+        with pytest.raises(SystemExit):
+            raw.prepare.Prepare(argv=['--help']).main()
+        stdout, stderr = capsys.readouterr()
+        assert 'a raw device to use for the OSD' in stdout
+        assert 'Crush device class to assign this OSD to' in stdout
+        assert 'Use BlueStore backend' in stdout
+        assert 'Path to bluestore block.db block device' in stdout
+        assert 'Path to bluestore block.wal block device' in stdout
+        assert 'Enable device encryption via dm-crypt' in stdout
+
+    @patch('ceph_volume.util.arg_validators.ValidDevice.__call__')
+    def test_prepare_dmcrypt_no_secret_passed(self, m_valid_device, capsys):
+        m_valid_device.return_value = '/dev/foo'
+        with pytest.raises(SystemExit):
+            raw.prepare.Prepare(argv=['--bluestore', '--data', '/dev/foo', '--dmcrypt']).main()
+        stdout, stderr = capsys.readouterr()
+        assert 'CEPH_VOLUME_DMCRYPT_SECRET is not set, you must set' in stderr
+
+    @patch('ceph_volume.util.encryption.luks_open')
+    @patch('ceph_volume.util.encryption.luks_format')
+    @patch('ceph_volume.util.disk.lsblk')
+    def test_prepare_dmcrypt_block(self, m_lsblk, m_luks_format, m_luks_open):
+        m_lsblk.return_value = {'KNAME': 'foo'}
+        m_luks_format.return_value = True
+        m_luks_open.return_value = True
+        result = raw.prepare.prepare_dmcrypt('foo', '/dev/foo', 'block', '123')
+        m_luks_open.assert_called_with('foo', '/dev/foo', 'ceph-123-foo-block-dmcrypt')
+        m_luks_format.assert_called_with('foo', '/dev/foo')
+        assert result == '/dev/mapper/ceph-123-foo-block-dmcrypt'
+
+    @patch('ceph_volume.util.encryption.luks_open')
+    @patch('ceph_volume.util.encryption.luks_format')
+    @patch('ceph_volume.util.disk.lsblk')
+    def test_prepare_dmcrypt_db(self, m_lsblk, m_luks_format, m_luks_open):
+        m_lsblk.return_value = {'KNAME': 'foo'}
+        m_luks_format.return_value = True
+        m_luks_open.return_value = True
+        result = raw.prepare.prepare_dmcrypt('foo', '/dev/foo', 'db', '123')
+        m_luks_open.assert_called_with('foo', '/dev/foo', 'ceph-123-foo-db-dmcrypt')
+        m_luks_format.assert_called_with('foo', '/dev/foo')
+        assert result == '/dev/mapper/ceph-123-foo-db-dmcrypt'
+
+    @patch('ceph_volume.util.encryption.luks_open')
+    @patch('ceph_volume.util.encryption.luks_format')
+    @patch('ceph_volume.util.disk.lsblk')
+    def test_prepare_dmcrypt_wal(self, m_lsblk, m_luks_format, m_luks_open):
+        m_lsblk.return_value = {'KNAME': 'foo'}
+        m_luks_format.return_value = True
+        m_luks_open.return_value = True
+        result = raw.prepare.prepare_dmcrypt('foo', '/dev/foo', 'wal', '123')
+        m_luks_open.assert_called_with('foo', '/dev/foo', 'ceph-123-foo-wal-dmcrypt')
+        m_luks_format.assert_called_with('foo', '/dev/foo')
+        assert result == '/dev/mapper/ceph-123-foo-wal-dmcrypt'
+
+    @patch('ceph_volume.devices.raw.prepare.rollback_osd')
+    @patch('ceph_volume.devices.raw.prepare.Prepare.prepare')
+    @patch('ceph_volume.util.arg_validators.ValidDevice.__call__')
+    def test_safe_prepare_exception_raised(self, m_valid_device, m_prepare, m_rollback_osd):
+        m_valid_device.return_value = '/dev/foo'
+        m_prepare.side_effect=Exception('foo')
+        m_rollback_osd.return_value = 'foobar'
+        with pytest.raises(Exception):
+            raw.prepare.Prepare(argv=['--bluestore', '--data', '/dev/foo']).main()
+        m_rollback_osd.assert_called()
index 829a928d13c33b3be1865a740085724d95305859..f7969fe9bde07dbe444e7cfaf198bb59bdd9cfb1 100644 (file)
@@ -34,7 +34,7 @@ changedir=
   centos8-bluestore-mixed_type_explicit: {toxinidir}/centos8/bluestore/mixed-type-explicit
   centos8-bluestore-mixed_type_dmcrypt_explicit: {toxinidir}/centos8/bluestore/mixed-type-dmcrypt-explicit
 commands=
-  git clone -b {env:CEPH_ANSIBLE_BRANCH:master} --single-branch https://github.com/ceph/ceph-ansible.git {envdir}/tmp/ceph-ansible
+  git clone -b {env:CEPH_ANSIBLE_BRANCH:master} --single-branch {env:CEPH_ANSIBLE_CLONE:"https://github.com/ceph/ceph-ansible.git"} {envdir}/tmp/ceph-ansible
   python -m pip install -r {envdir}/tmp/ceph-ansible/tests/requirements.txt
 
   # bash {toxinidir}/../scripts/vagrant_up.sh {env:VAGRANT_UP_FLAGS:""} {posargs:--provider=virtualbox}
index 65dc95233026a605e8806055763b43812695fb06..c333af3e522c1500b03ed4f343c276b92d5caaa2 100644 (file)
@@ -11,6 +11,9 @@ osd_scenario: lvm
 ceph_origin: 'repository'
 ceph_repository: 'dev'
 copy_admin_key: false
+pv_devices:
+  - /dev/vdb
+  - /dev/vdc
 lvm_volumes:
   - data: data-lv1
     data_vg: test_group
index 93c870a36db00856d8d92015aaa8ec96cb06c5d8..d73637763bc5b6e105c3a0020ad2b5c2962d33f4 100644 (file)
@@ -12,6 +12,9 @@ osd_scenario: lvm
 ceph_origin: 'repository'
 ceph_repository: 'dev'
 copy_admin_key: false
+pv_devices:
+  - /dev/vdb
+  - /dev/vdc
 lvm_volumes:
   - data: data-lv1
     data_vg: test_group
index cc40419d6e6905576f4c55d54bdb0ef699d5fba3..f5f26e7cef885a370c32e7f645c46ca65035f158 100644 (file)
@@ -11,6 +11,9 @@ osd_scenario: lvm
 ceph_origin: 'repository'
 ceph_repository: 'dev'
 copy_admin_key: false
+pv_devices:
+  - /dev/vdb
+  - /dev/vdc
 # test-volume is created by tests/functional/lvm_setup.yml from /dev/sda
 lvm_volumes:
   - data: data-lv1
index d0910837275f00209496ceb0d3f8858c158f6b2c..e5c08727108e6add13ae375ff668ba23ffd4bce2 100644 (file)
@@ -12,6 +12,9 @@ osd_scenario: lvm
 ceph_origin: 'repository'
 ceph_repository: 'dev'
 copy_admin_key: false
+pv_devices:
+  - /dev/vdb
+  - /dev/vdc
 # test-volume is created by tests/functional/lvm_setup.yml from /dev/sda
 lvm_volumes:
   - data: data-lv1
index e8cf077c6cb82faaa4c7bad500769c33d12f1538..2cf83e477fbd6d0533a61252e4e193b27f2c2419 100644 (file)
         suffix: sparse
       register: tmpdir
 
-    - name: create a 5GB sparse file
-      command: fallocate -l 5G {{ tmpdir.path }}/sparse.file
+    - name: create a 1GB sparse file
+      command: fallocate -l 1G {{ tmpdir.path }}/sparse.file
 
     - name: find an empty loop device
       command: losetup -f
index 9239a36246534230b9067bb47cce4d497bdacff4..42ee40a1baa65f49e95f9e47df8f2cb4f0ddb84c 100644 (file)
         suffix: sparse
       register: tmpdir
 
-    - name: create a 5GB sparse file
-      command: fallocate -l 5G {{ tmpdir.path }}/sparse.file
+    - name: create a 1GB sparse file
+      command: fallocate -l 1G {{ tmpdir.path }}/sparse.file
 
     - name: find an empty loop device
       command: losetup -f
index 1dd7c999f0baa8eb5f1397fb7994e9106893ca8d..2b63875bf438d0969dd3c90015a065db617dbcb2 100644 (file)
@@ -32,7 +32,7 @@ changedir=
   centos8-filestore-prepare_activate: {toxinidir}/xenial/filestore/prepare_activate
   centos8-bluestore-prepare_activate: {toxinidir}/xenial/bluestore/prepare_activate
 commands=
-  git clone -b {env:CEPH_ANSIBLE_BRANCH:master} --single-branch https://github.com/ceph/ceph-ansible.git {envdir}/tmp/ceph-ansible
+  git clone -b {env:CEPH_ANSIBLE_BRANCH:master} --single-branch {env:CEPH_ANSIBLE_CLONE:"https://github.com/ceph/ceph-ansible.git"} {envdir}/tmp/ceph-ansible
   pip install -r {envdir}/tmp/ceph-ansible/tests/requirements.txt
 
   bash {toxinidir}/../scripts/vagrant_up.sh {env:VAGRANT_UP_FLAGS:"--no-provision"} {posargs:--provider=virtualbox}
index a8bd07db90501cd199a078ab6eb0eca8158cc3e9..1d99953d5b2a0ebee89729841862b4fb25ffda42 100644 (file)
@@ -1,18 +1,33 @@
 import pytest
+from copy import deepcopy
 from ceph_volume.util import device
 from ceph_volume.api import lvm as api
 
 
 class TestDevice(object):
 
-    def test_sys_api(self, device_info):
+    def test_sys_api(self, monkeypatch, device_info):
+        volume = api.Volume(lv_name='lv', lv_uuid='y', vg_name='vg',
+                            lv_tags={}, lv_path='/dev/VolGroup/lv')
+        volumes = []
+        volumes.append(volume)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs:
+                            deepcopy(volumes))
+
         data = {"/dev/sda": {"foo": "bar"}}
         device_info(devices=data)
         disk = device.Device("/dev/sda")
         assert disk.sys_api
         assert "foo" in disk.sys_api
 
-    def test_lvm_size(self, device_info):
+    def test_lvm_size(self, monkeypatch, device_info):
+        volume = api.Volume(lv_name='lv', lv_uuid='y', vg_name='vg',
+                            lv_tags={}, lv_path='/dev/VolGroup/lv')
+        volumes = []
+        volumes.append(volume)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs:
+                            deepcopy(volumes))
+
         # 5GB in size
         data = {"/dev/sda": {"size": "5368709120"}}
         device_info(devices=data)
@@ -32,12 +47,15 @@ class TestDevice(object):
         disk = device.Device("vg/lv")
         assert disk.is_lv
 
-    def test_vgs_is_empty(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
-        BarPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", pv_tags={})
+    def test_vgs_is_empty(self, device_info, monkeypatch):
+        BarPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000",
+                                 pv_tags={})
+        pvolumes = []
         pvolumes.append(BarPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
         lsblk = {"TYPE": "disk"}
         device_info(lsblk=lsblk)
+        monkeypatch.setattr(api, 'get_pvs', lambda **kwargs: {})
+
         disk = device.Device("/dev/nvme0n1")
         assert disk.vgs == []
 
@@ -50,42 +68,42 @@ class TestDevice(object):
         disk = device.Device("/dev/nvme0n1")
         assert len(disk.vgs) == 1
 
-    def test_device_is_device(self, device_info, pvolumes):
+    def test_device_is_device(self, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "device"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_device is True
 
-    def test_device_is_rotational(self, device_info, pvolumes):
+    def test_device_is_rotational(self, device_info):
         data = {"/dev/sda": {"rotational": "1"}}
         lsblk = {"TYPE": "device"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
-    def test_device_is_not_rotational(self, device_info, pvolumes):
+    def test_device_is_not_rotational(self, device_info):
         data = {"/dev/sda": {"rotational": "0"}}
         lsblk = {"TYPE": "device"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.rotational
 
-    def test_device_is_rotational_lsblk(self, device_info, pvolumes):
+    def test_device_is_rotational_lsblk(self, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "device", "ROTA": "1"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
-    def test_device_is_not_rotational_lsblk(self, device_info, pvolumes):
+    def test_device_is_not_rotational_lsblk(self, device_info):
         data = {"/dev/sda": {"rotational": "0"}}
         lsblk = {"TYPE": "device", "ROTA": "0"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.rotational
 
-    def test_device_is_rotational_defaults_true(self, device_info, pvolumes):
+    def test_device_is_rotational_defaults_true(self, device_info):
         # rotational will default true if no info from sys_api or lsblk is found
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "device", "foo": "bar"}
@@ -93,28 +111,35 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
-    def test_disk_is_device(self, device_info, pvolumes):
+    def test_disk_is_device(self, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "disk"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_device is True
 
-    def test_is_partition(self, device_info, pvolumes):
+    def test_is_partition(self, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_partition
 
-    def test_is_not_lvm_memeber(self, device_info, pvolumes):
+    def test_is_not_acceptable_device(self, device_info):
+        data = {"/dev/dm-0": {"foo": "bar"}}
+        lsblk = {"TYPE": "mpath"}
+        device_info(devices=data, lsblk=lsblk)
+        disk = device.Device("/dev/dm-0")
+        assert not disk.is_device
+
+    def test_is_not_lvm_memeber(self, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
         device_info(devices=data, lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert not disk.is_lvm_member
 
-    def test_is_lvm_memeber(self, device_info, pvolumes):
+    def test_is_lvm_memeber(self, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
         device_info(devices=data, lsblk=lsblk)
@@ -137,15 +162,13 @@ class TestDevice(object):
         assert not disk.is_mapper
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_is_ceph_disk_lsblk(self, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
 
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_is_ceph_disk_blkid(self, monkeypatch, patch_bluestore_label):
         monkeypatch.setattr("ceph_volume.util.device.disk.lsblk",
                             lambda path: {'PARTLABEL': ""})
@@ -153,8 +176,7 @@ class TestDevice(object):
         assert disk.is_ceph_disk_member
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_is_ceph_disk_member_not_available_lsblk(self, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
@@ -162,8 +184,7 @@ class TestDevice(object):
         assert "Used by ceph-disk" in disk.rejected_reasons
 
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_is_ceph_disk_member_not_available_blkid(self, monkeypatch, patch_bluestore_label):
         monkeypatch.setattr("ceph_volume.util.device.disk.lsblk",
                             lambda path: {'PARTLABEL': ""})
@@ -209,7 +230,6 @@ class TestDevice(object):
         assert "Has BlueStore device label" in disk.rejected_reasons
 
     @pytest.mark.usefixtures("device_info_not_ceph_disk_member",
-                             "disable_lvm_queries",
                              "disable_kernel_queries")
     def test_is_not_ceph_disk_member_lsblk(self, patch_bluestore_label):
         disk = device.Device("/dev/sda")
@@ -254,13 +274,24 @@ class TestDevice(object):
         assert not disk.available_raw
 
     @pytest.mark.parametrize("ceph_type", ["data", "block"])
-    def test_used_by_ceph(self, device_info, pvolumes, pvolumes_empty, monkeypatch, ceph_type):
-        FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
-        pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
+    def test_used_by_ceph(self, device_info,
+                          monkeypatch, ceph_type):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
-        lv_data = {"lv_path": "vg/lv", "vg_name": "vg", "lv_uuid": "0000", "tags": {"ceph.osd_id": 0, "ceph.type": ceph_type}}
+        FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000",
+                                 lv_uuid="0000", pv_tags={}, vg_name="vg")
+        pvolumes = []
+        pvolumes.append(FooPVolume)
+        lv_data = {"lv_name": "lv", "lv_path": "vg/lv", "vg_name": "vg",
+                   "lv_uuid": "0000", "lv_tags":
+                   "ceph.osd_id=0,ceph.type="+ceph_type}
+        volumes = []
+        lv = api.Volume(**lv_data)
+        volumes.append(lv)
+        monkeypatch.setattr(api, 'get_pvs', lambda **kwargs: pvolumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs:
+                            deepcopy(volumes))
+
         device_info(devices=data, lsblk=lsblk, lv=lv_data)
         vg = api.VolumeGroup(vg_name='foo/bar', vg_free_count=6,
                              vg_extent_size=1073741824)
@@ -268,13 +299,15 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.used_by_ceph
 
-    def test_not_used_by_ceph(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
+    def test_not_used_by_ceph(self, device_info, monkeypatch):
         FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
+        pvolumes = []
         pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
         lv_data = {"lv_path": "vg/lv", "vg_name": "vg", "lv_uuid": "0000", "tags": {"ceph.osd_id": 0, "ceph.type": "journal"}}
+        monkeypatch.setattr(api, 'get_pvs', lambda **kwargs: pvolumes)
+
         device_info(devices=data, lsblk=lsblk, lv=lv_data)
         disk = device.Device("/dev/sda")
         assert not disk.used_by_ceph
@@ -289,33 +322,33 @@ class TestDevice(object):
 
 class TestDeviceEncryption(object):
 
-    def test_partition_is_not_encrypted_lsblk(self, device_info, pvolumes):
+    def test_partition_is_not_encrypted_lsblk(self, device_info):
         lsblk = {'TYPE': 'part', 'FSTYPE': 'xfs'}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is False
 
-    def test_partition_is_encrypted_lsblk(self, device_info, pvolumes):
+    def test_partition_is_encrypted_lsblk(self, device_info):
         lsblk = {'TYPE': 'part', 'FSTYPE': 'crypto_LUKS'}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is True
 
-    def test_partition_is_not_encrypted_blkid(self, device_info, pvolumes):
+    def test_partition_is_not_encrypted_blkid(self, device_info):
         lsblk = {'TYPE': 'part'}
         blkid = {'TYPE': 'ceph data'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is False
 
-    def test_partition_is_encrypted_blkid(self, device_info, pvolumes):
+    def test_partition_is_encrypted_blkid(self, device_info):
         lsblk = {'TYPE': 'part'}
         blkid = {'TYPE': 'crypto_LUKS'}
         device_info(lsblk=lsblk, blkid=blkid)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_encrypted_luks1(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
+    def test_mapper_is_encrypted_luks1(self, device_info, monkeypatch):
         status = {'type': 'LUKS1'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
@@ -324,7 +357,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_encrypted_luks2(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
+    def test_mapper_is_encrypted_luks2(self, device_info, monkeypatch):
         status = {'type': 'LUKS2'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
@@ -333,7 +366,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_encrypted_plain(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
+    def test_mapper_is_encrypted_plain(self, device_info, monkeypatch):
         status = {'type': 'PLAIN'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
@@ -342,7 +375,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_not_encrypted_plain(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
+    def test_mapper_is_not_encrypted_plain(self, device_info, monkeypatch):
         monkeypatch.setattr(device, 'encryption_status', lambda x: {})
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
@@ -350,7 +383,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is False
 
-    def test_lv_is_encrypted_blkid(self, device_info, pvolumes):
+    def test_lv_is_encrypted_blkid(self, device_info):
         lsblk = {'TYPE': 'lvm'}
         blkid = {'TYPE': 'crypto_LUKS'}
         device_info(lsblk=lsblk, blkid=blkid)
@@ -358,7 +391,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = {}
         assert disk.is_encrypted is True
 
-    def test_lv_is_not_encrypted_blkid(self, factory, device_info, pvolumes):
+    def test_lv_is_not_encrypted_blkid(self, factory, device_info):
         lsblk = {'TYPE': 'lvm'}
         blkid = {'TYPE': 'xfs'}
         device_info(lsblk=lsblk, blkid=blkid)
@@ -366,7 +399,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = factory(encrypted=None)
         assert disk.is_encrypted is False
 
-    def test_lv_is_encrypted_lsblk(self, device_info, pvolumes):
+    def test_lv_is_encrypted_lsblk(self, device_info):
         lsblk = {'FSTYPE': 'crypto_LUKS', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
@@ -374,7 +407,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = {}
         assert disk.is_encrypted is True
 
-    def test_lv_is_not_encrypted_lsblk(self, factory, device_info, pvolumes):
+    def test_lv_is_not_encrypted_lsblk(self, factory, device_info):
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
@@ -382,7 +415,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = factory(encrypted=None)
         assert disk.is_encrypted is False
 
-    def test_lv_is_encrypted_lvm_api(self, factory, device_info, pvolumes):
+    def test_lv_is_encrypted_lvm_api(self, factory, device_info):
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
@@ -390,7 +423,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = factory(encrypted=True)
         assert disk.is_encrypted is True
 
-    def test_lv_is_not_encrypted_lvm_api(self, factory, device_info, pvolumes):
+    def test_lv_is_not_encrypted_lvm_api(self, factory, device_info):
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
         device_info(lsblk=lsblk, blkid=blkid)
@@ -452,8 +485,7 @@ class TestCephDiskDevice(object):
         assert disk.partlabel == 'ceph data'
 
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_is_member_blkid(self, monkeypatch, patch_bluestore_label):
         monkeypatch.setattr("ceph_volume.util.device.disk.lsblk",
                             lambda path: {'PARTLABEL': ""})
@@ -462,8 +494,7 @@ class TestCephDiskDevice(object):
         assert disk.is_member is True
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_is_member_lsblk(self, patch_bluestore_label):
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
@@ -479,8 +510,7 @@ class TestCephDiskDevice(object):
     ceph_types = ['data', 'wal', 'db', 'lockbox', 'journal', 'block']
 
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_type_blkid(self, monkeypatch, device_info, ceph_partlabel):
         monkeypatch.setattr("ceph_volume.util.device.disk.lsblk",
                             lambda path: {'PARTLABEL': ''})
@@ -490,8 +520,7 @@ class TestCephDiskDevice(object):
 
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
                              "lsblk_ceph_disk_member",
-                             "disable_kernel_queries",
-                             "disable_lvm_queries")
+                             "disable_kernel_queries")
     def test_type_lsblk(self, device_info, ceph_partlabel):
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
index 43c9c9d6835d11b53070ac6b7386364b9f637a30..1b5afe97040fbb83812c9a3fc3316ded206c7cbf 100644 (file)
@@ -98,3 +98,11 @@ def prompt_bool(question, input_=None):
         terminal.error('Valid false responses are: n, no')
         terminal.error('That response was invalid, please try again')
         return prompt_bool(question, input_=input_prompt)
+
+def merge_dict(x, y):
+    """
+    Return two dicts merged
+    """
+    z = x.copy()
+    z.update(y)
+    return z
\ No newline at end of file
index 878a584ce690bab179a54c84b8b2f3443664dc4c..2d00f6da3e59638deda4cf214da1a75151d97672 100644 (file)
@@ -130,8 +130,14 @@ class Device(object):
                     self.sys_api = part
                     break
 
-        # start with lvm since it can use an absolute or relative path
-        lv = lvm.get_lv_from_argument(self.path)
+        # if the path is not absolute, we have 'vg/lv', let's use LV name
+        # to get the LV.
+        if self.path[0] == '/':
+            lv = lvm.get_first_lv(filters={'lv_path': self.path})
+        else:
+            vgname, lvname = self.path.split('/')
+            lv = lvm.get_first_lv(filters={'lv_name': lvname,
+                                           'vg_name': vgname})
         if lv:
             self.lv_api = lv
             self.lvs = [lv]
@@ -246,7 +252,6 @@ class Device(object):
                     # actually unused (not 100% sure) and can simply be removed
                     self.vg_name = vgs[0]
                     self._is_lvm_member = True
-
                     self.lvs.extend(lvm.get_device_lvs(path))
         return self._is_lvm_member
 
@@ -393,7 +398,7 @@ class Device(object):
         ]
         rejected = [reason for (k, v, reason) in reasons if
                     self.sys_api.get(k, '') == v]
-        # reject disks small than 5GB
+        # reject disks smaller than 5GB
         if int(self.sys_api.get('size', 0)) < 5368709120:
             rejected.append('Insufficient space (<5GB)')
         if self.is_ceph_disk_member:
@@ -403,10 +408,15 @@ class Device(object):
         return rejected
 
     def _check_lvm_reject_reasons(self):
-        rejected = self._check_generic_reject_reasons()
-        available_vgs = [vg for vg in self.vgs if vg.free >= 5368709120]
-        if self.vgs and not available_vgs:
-            rejected.append('Insufficient space (<5GB) on vgs')
+        rejected = []
+        if self.vgs:
+            available_vgs = [vg for vg in self.vgs if vg.free >= 5368709120]
+            if not available_vgs:
+                rejected.append('Insufficient space (<5GB) on vgs')
+        else:
+            # only check generic if no vgs are present. Vgs might hold lvs and
+            # that might cause 'locked' to trigger
+            rejected.extend(self._check_generic_reject_reasons())
 
         return len(rejected) == 0, rejected
 
index 9bd48178cbf4fd51a43bcb8b3c4f9bb87189d937..44a0d0e468997f67869b29d4fa6cb37c5f7c1e2b 100644 (file)
@@ -1,4 +1,5 @@
 from setuptools import setup, find_packages
+import os
 
 
 setup(
@@ -13,9 +14,13 @@ setup(
     keywords='ceph volume disk devices lvm',
     url="https://github.com/ceph/ceph",
     zip_safe = False,
+    install_requires='ceph',
+    dependency_links=[''.join(['file://', os.path.join(os.getcwd(), '../',
+                                                       'python-common#egg=ceph-1.0.0')])],
     tests_require=[
         'pytest >=2.1.3',
         'tox',
+        'ceph',
     ],
     entry_points = dict(
         console_scripts = [
index 5cd4606e4c5d7c78bca34132ffdf6f69399336da..e5c390271344bc591bc59fed54dc26e81f35f8fa 100644 (file)
@@ -1,5 +1,5 @@
 [tox]
-envlist = py27, py35, py36
+envlist = py36, py3
 skip_missing_interpreters = true
 
 [testenv]
index dc66681d2c0368ee621adda97c27f37dae370743..6ccf3e775caadb0708c2c341475b64fdf3e650bd 100644 (file)
@@ -1,14 +1,15 @@
 [tox]
-envlist = py27, py35, py36, flake8
+envlist = py36, py3, py3-flake8
 skip_missing_interpreters = true
 
 [testenv]
 deps=
   pytest
   mock
+install_command=./tox_install_command.sh {opts} {packages}
 commands=py.test -v {posargs:ceph_volume/tests} --ignore=ceph_volume/tests/functional
 
-[testenv:flake8]
+[testenv:py3-flake8]
 deps=flake8
 commands=flake8 {posargs:ceph_volume}
 
diff --git a/ceph/src/ceph-volume/tox_install_command.sh b/ceph/src/ceph-volume/tox_install_command.sh
new file mode 100755 (executable)
index 0000000..79343a4
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/bash
+python -m pip install --editable="file://`pwd`/../python-common"
+python -m pip install $@
index 13929a4cca8d1610527495711b3db56ec24ca224..44a32bcd60646a0b74ae466d329017313a27be20 100755 (executable)
@@ -1041,7 +1041,7 @@ def main():
     if parsed_args.help:
         target = None
         if len(childargs) >= 2 and childargs[0] == 'tell':
-            target = childargs[1].split('.')
+            target = childargs[1].split('.', 1)
             if not validate_target(target):
                 print('target {0} doesn\'t exist; please pass correct target to tell command (e.g., mon.a, osd.1, mds.a, mgr)'.format(childargs[1]), file=sys.stderr)
                 return 1
@@ -1057,7 +1057,7 @@ def main():
 
     # implement "tell service.id help"
     if len(childargs) >= 3 and childargs[0] == 'tell' and childargs[2] == 'help':
-        target = childargs[1].split('.')
+        target = childargs[1].split('.', 1)
         if validate_target(target):
             hdr('Tell %s commands' % target[0])
             return do_extended_help(parser, childargs, target, None)
index afa945dd00deaba684ccda3f5042812035fc14a8..a2b36769bfd02243c419e80cfba68dfa54f4ef17 100644 (file)
@@ -573,6 +573,9 @@ flushjournal_out:
     g_conf().get_val<Option::size_t>("osd_client_message_size_cap");
   boost::scoped_ptr<Throttle> client_byte_throttler(
     new Throttle(g_ceph_context, "osd_client_bytes", message_size));
+  uint64_t message_cap = g_conf().get_val<uint64_t>("osd_client_message_cap");
+  boost::scoped_ptr<Throttle> client_msg_throttler(
+    new Throttle(g_ceph_context, "osd_client_messages", message_cap));
 
   // All feature bits 0 - 34 should be present from dumpling v0.67 forward
   uint64_t osd_required =
@@ -583,7 +586,7 @@ flushjournal_out:
   ms_public->set_default_policy(Messenger::Policy::stateless_registered_server(0));
   ms_public->set_policy_throttlers(entity_name_t::TYPE_CLIENT,
                                   client_byte_throttler.get(),
-                                  nullptr);
+                                  client_msg_throttler.get());
   ms_public->set_policy(entity_name_t::TYPE_MON,
                         Messenger::Policy::lossy_client(osd_required));
   ms_public->set_policy(entity_name_t::TYPE_MGR,
@@ -752,6 +755,7 @@ flushjournal_out:
   delete ms_objecter;
 
   client_byte_throttler.reset();
+  client_msg_throttler.reset();
 
   // cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
   char s[20];
index e27bc73a6365c81c831f1ac43ba074c5bb160318..d6f85f1ad8811a0ef2120cde2f6f8e4be8c1b79c 100755 (executable)
@@ -2,20 +2,20 @@
 
 DEFAULT_IMAGE='docker.io/ceph/ceph:v15'
 DEFAULT_IMAGE_IS_MASTER=False
-LATEST_STABLE_RELEASE='octopus'
-DATA_DIR='/var/lib/ceph'
-LOG_DIR='/var/log/ceph'
-LOCK_DIR='/run/cephadm'
-LOGROTATE_DIR='/etc/logrotate.d'
-UNIT_DIR='/etc/systemd/system'
-LOG_DIR_MODE=0o770
-DATA_DIR_MODE=0o700
+LATEST_STABLE_RELEASE = 'octopus'
+DATA_DIR = '/var/lib/ceph'
+LOG_DIR = '/var/log/ceph'
+LOCK_DIR = '/run/cephadm'
+LOGROTATE_DIR = '/etc/logrotate.d'
+UNIT_DIR = '/etc/systemd/system'
+LOG_DIR_MODE = 0o770
+DATA_DIR_MODE = 0o700
 CONTAINER_PREFERENCE = ['podman', 'docker']  # prefer podman to docker
-CUSTOM_PS1=r'[ceph: \u@\h \W]\$ '
-DEFAULT_TIMEOUT=None # in seconds
-DEFAULT_RETRY=10
-SHELL_DEFAULT_CONF='/etc/ceph/ceph.conf'
-SHELL_DEFAULT_KEYRING='/etc/ceph/ceph.client.admin.keyring'
+CUSTOM_PS1 = r'[ceph: \u@\h \W]\$ '
+DEFAULT_TIMEOUT = None  # in seconds
+DEFAULT_RETRY = 10
+SHELL_DEFAULT_CONF = '/etc/ceph/ceph.conf'
+SHELL_DEFAULT_KEYRING = '/etc/ceph/ceph.client.admin.keyring'
 
 """
 You can invoke cephadm in two ways:
@@ -41,10 +41,12 @@ You can invoke cephadm in two ways:
 import argparse
 import datetime
 import fcntl
+import ipaddress
 import json
 import logging
 import os
 import platform
+import pwd
 import random
 import re
 import select
@@ -57,7 +59,7 @@ import tempfile
 import time
 import errno
 try:
-    from typing import Dict, List, Tuple, Optional, Union, Any, NoReturn, Callable
+    from typing import Dict, List, Tuple, Optional, Union, Any, NoReturn, Callable, IO
 except ImportError:
     pass
 import uuid
@@ -82,6 +84,9 @@ if sys.version_info >= (3, 0):
 else:
     from urllib2 import urlopen, HTTPError
 
+if sys.version_info > (3, 0):
+    unicode = str
+
 container_path = ''
 cached_stdin = None
 
@@ -93,20 +98,24 @@ class termcolor:
     red = '\033[31m'
     end = '\033[0m'
 
+
 class Error(Exception):
     pass
 
+
 class TimeoutExpired(Error):
     pass
 
 ##################################
 
+
 class Ceph(object):
     daemons = ('mon', 'mgr', 'mds', 'osd', 'rgw', 'rbd-mirror',
                'crash')
 
 ##################################
 
+
 class Monitoring(object):
     """Define the configs for the monitoring containers"""
 
@@ -167,6 +176,7 @@ class Monitoring(object):
 
 ##################################
 
+
 class NFSGanesha(object):
     """Defines a NFS-Ganesha container"""
 
@@ -210,14 +220,6 @@ class NFSGanesha(object):
         # type: (str, Union[int, str]) -> NFSGanesha
         return cls(fsid, daemon_id, get_parm(args.config_json), args.image)
 
-    @staticmethod
-    def port_in_use():
-        # type () -> None
-        for (srv, port) in NFSGanesha.port_map.items():
-            if port_in_use(port):
-                msg = 'TCP port {} required for {} is already in use'.format(port, srv)
-                raise Error(msg)
-
     @staticmethod
     def get_container_mounts(data_dir):
         # type: (str) -> Dict[str, str]
@@ -325,19 +327,20 @@ class NFSGanesha(object):
         volume_mounts = self.get_container_mounts(data_dir)
         envs = self.get_container_envs()
 
-        logger.info('Creating RADOS grace for action: %s' % (action))
+        logger.info('Creating RADOS grace for action: %s' % action)
         c = CephContainer(
             image=self.image,
             entrypoint=entrypoint,
             args=args,
             volume_mounts=volume_mounts,
-            cname=self.get_container_name(desc='grace-%s' % (action)),
+            cname=self.get_container_name(desc='grace-%s' % action),
             envs=envs
         )
         return c
 
 ##################################
 
+
 class CephIscsi(object):
     """Defines a Ceph-Iscsi container"""
 
@@ -384,6 +387,17 @@ class CephIscsi(object):
         mounts['/dev/log'] = '/dev/log:z'
         return mounts
 
+    @staticmethod
+    def get_container_binds():
+        # type: () -> List[List[str]]
+        binds = []
+        lib_modules = ['type=bind',
+                       'source=/lib/modules',
+                       'destination=/lib/modules',
+                       'ro=true']
+        binds.append(lib_modules)
+        return binds
+
     @staticmethod
     def get_version(container_id):
         # type: (str) -> Optional[str]
@@ -392,7 +406,7 @@ class CephIscsi(object):
             [container_path, 'exec', container_id,
              '/usr/bin/python3', '-c', "import pkg_resources; print(pkg_resources.require('ceph_iscsi')[0].version)"])
         if code == 0:
-            version = out
+            version = out.strip()
         return version
 
     def validate(self):
@@ -461,8 +475,18 @@ class CephIscsi(object):
                   "umount {0}; fi".format(mount_path)
         return cmd.split()
 
+    def get_tcmu_runner_container(self):
+        # type: () -> CephContainer
+        tcmu_container = get_container(self.fsid, self.daemon_type, self.daemon_id)
+        tcmu_container.entrypoint = "/usr/bin/tcmu-runner"
+        tcmu_container.volume_mounts.pop("/dev/log")
+        tcmu_container.volume_mounts["/dev"] = "/dev:z"
+        tcmu_container.cname = self.get_container_name(desc='tcmu')
+        return tcmu_container
+
 ##################################
 
+
 def get_supported_daemons():
     # type: () -> List[str]
     supported_daemons = list(Ceph.daemons)
@@ -474,6 +498,7 @@ def get_supported_daemons():
 
 ##################################
 
+
 def attempt_bind(s, address, port):
     # type: (socket.socket, str, int) -> None
     try:
@@ -489,6 +514,7 @@ def attempt_bind(s, address, port):
     finally:
         s.close()
 
+
 def port_in_use(port_num):
     # type: (int) -> bool
     """Detect whether a port is in use on the local machine - IPv4 and IPv6"""
@@ -504,6 +530,7 @@ def port_in_use(port_num):
     else:
         return False
 
+
 def check_ip_port(ip, port):
     # type: (str, int) -> None
     if not args.skip_ping_check:
@@ -530,6 +557,7 @@ try:
 except NameError:
     TimeoutError = OSError
 
+
 class Timeout(TimeoutError):
     """
     Raised when the lock could not be acquired in *timeout*
@@ -563,7 +591,7 @@ class _Acquire_ReturnProxy(object):
 
 
 class FileLock(object):
-    def __init__(self, name, timeout = -1):
+    def __init__(self, name, timeout=-1):
         if not os.path.exists(LOCK_DIR):
             os.mkdir(LOCK_DIR, 0o700)
         self._lock_file = os.path.join(LOCK_DIR, name + '.lock')
@@ -643,14 +671,14 @@ class FileLock(object):
                         lock_id, lock_filename, poll_intervall
                     )
                     time.sleep(poll_intervall)
-        except:
+        except:  # noqa
             # Something did go wrong, so decrement the counter.
             self._lock_counter = max(0, self._lock_counter - 1)
 
             raise
         return _Acquire_ReturnProxy(lock = self)
 
-    def release(self, force = False):
+    def release(self, force=False):
         """
         Releases the file lock.
         Please note, that the lock is only completly released, if the lock
@@ -683,10 +711,9 @@ class FileLock(object):
         return None
 
     def __del__(self):
-        self.release(force = True)
+        self.release(force=True)
         return None
 
-
     def _acquire(self):
         open_mode = os.O_RDWR | os.O_CREAT | os.O_TRUNC
         fd = os.open(self._lock_file, open_mode)
@@ -706,8 +733,8 @@ class FileLock(object):
         #   https://stackoverflow.com/questions/17708885/flock-removing-locked-file-without-race-condition
         fd = self._lock_file_fd
         self._lock_file_fd = None
-        fcntl.flock(fd, fcntl.LOCK_UN)
-        os.close(fd)
+        fcntl.flock(fd, fcntl.LOCK_UN)  # type: ignore
+        os.close(fd)  # type: ignore
         return None
 
 
@@ -765,9 +792,10 @@ def call(command,  # type: List[str]
         end_time = start_time + timeout
     while not stop:
         if end_time and (time.time() >= end_time):
-            logger.info(desc + ':timeout after %s seconds' % timeout)
             stop = True
-            process.kill()
+            if process.poll() is None:
+                logger.info(desc + ':timeout after %s seconds' % timeout)
+                process.kill()
         if reads and process.poll() is not None:
             # we want to stop, but first read off anything remaining
             # on stdout/stderr
@@ -814,6 +842,8 @@ def call(command,  # type: List[str]
                     assert False
             except (IOError, OSError):
                 pass
+        logger.debug(desc + ':profile rt=%s, stop=%s, exit=%s, reads=%s'
+                % (time.time()-start_time, stop, process.poll(), reads))
 
     returncode = process.wait()
 
@@ -888,6 +918,7 @@ def call_timeout(command, timeout):
 
 ##################################
 
+
 def is_available(what, func):
     # type: (str, Callable[[], bool]) -> None
     """
@@ -897,12 +928,12 @@ def is_available(what, func):
     :param func: the callable object that determines availability
     """
     retry = args.retry
-    logger.info('Waiting for %s...' % (what))
+    logger.info('Waiting for %s...' % what)
     num = 1
     while True:
         if func():
             logger.info('%s is available'
-                    % (what))
+                        % what)
             break
         elif num > retry:
             raise Error('%s not available after %s tries'
@@ -937,11 +968,13 @@ def read_config(fn):
 
     return cp
 
+
 def pathify(p):
     # type: (str) -> str
     p = os.path.expanduser(p)
     return os.path.abspath(p)
 
+
 def get_file_timestamp(fn):
     # type: (str) -> Optional[str]
     try:
@@ -952,6 +985,7 @@ def get_file_timestamp(fn):
     except Exception as e:
         return None
 
+
 def try_convert_datetime(s):
     # type: (str) -> Optional[str]
     # This is super irritating because
@@ -992,6 +1026,7 @@ def try_convert_datetime(s):
             pass
     return None
 
+
 def get_podman_version():
     # type: () -> Tuple[int, ...]
     if 'podman' not in container_path:
@@ -999,6 +1034,7 @@ def get_podman_version():
     out, _, _ = call_throws([container_path, '--version'])
     return _parse_podman_version(out)
 
+
 def _parse_podman_version(out):
     # type: (str) -> Tuple[int, ...]
     _, _, version_str = out.strip().split()
@@ -1018,24 +1054,29 @@ def get_hostname():
     # type: () -> str
     return socket.gethostname()
 
+
 def get_fqdn():
     # type: () -> str
     return socket.getfqdn() or socket.gethostname()
 
+
 def get_arch():
     # type: () -> str
     return platform.uname().machine
 
+
 def generate_service_id():
     # type: () -> str
     return get_hostname() + '.' + ''.join(random.choice(string.ascii_lowercase)
                                           for _ in range(6))
 
+
 def generate_password():
     # type: () -> str
     return ''.join(random.choice(string.ascii_lowercase + string.digits)
                    for i in range(10))
 
+
 def normalize_container_id(i):
     # type: (str) -> str
     # docker adds the sha256: prefix, but AFAICS both
@@ -1047,10 +1088,12 @@ def normalize_container_id(i):
         i = i[len(prefix):]
     return i
 
+
 def make_fsid():
     # type: () -> str
     return str(uuid.uuid1())
 
+
 def is_fsid(s):
     # type: (str) -> bool
     try:
@@ -1059,6 +1102,7 @@ def is_fsid(s):
         return False
     return True
 
+
 def infer_fsid(func):
     """
     If we only find a single fsid in /var/lib/ceph/*, use that
@@ -1069,14 +1113,19 @@ def infer_fsid(func):
             logger.debug('Using specified fsid: %s' % args.fsid)
             return func()
 
-        fsids = set()
+        fsids_set = set()
         daemon_list = list_daemons(detail=False)
         for daemon in daemon_list:
-            if 'name' not in args or not args.name:
-                fsids.add(daemon['fsid'])
+            if not is_fsid(daemon['fsid']):
+                # 'unknown' fsid
+                continue
+            elif 'name' not in args or not args.name:
+                # args.name not specified
+                fsids_set.add(daemon['fsid'])
             elif daemon['name'] == args.name:
-                fsids.add(daemon['fsid'])
-        fsids = list(fsids)
+                # args.name is a match
+                fsids_set.add(daemon['fsid'])
+        fsids = sorted(fsids_set)
 
         if not fsids:
             # some commands do not always require an fsid
@@ -1090,6 +1139,7 @@ def infer_fsid(func):
 
     return _infer_fsid
 
+
 def infer_config(func):
     """
     If we find a MON daemon, use the config from that container
@@ -1120,6 +1170,7 @@ def infer_config(func):
 
     return _infer_config
 
+
 def _get_default_image():
     if DEFAULT_IMAGE_IS_MASTER:
         warn = '''This is a development version of cephadm.
@@ -1130,6 +1181,7 @@ For information regarding the latest stable release:
             logger.warning('{}{}{}'.format(termcolor.yellow, line, termcolor.end))
     return DEFAULT_IMAGE
 
+
 def infer_image(func):
     """
     Use the most recent ceph image
@@ -1146,6 +1198,7 @@ def infer_image(func):
 
     return _infer_image
 
+
 def default_image(func):
     @wraps(func)
     def _default_image():
@@ -1163,6 +1216,7 @@ def default_image(func):
 
     return _default_image
 
+
 def get_last_local_ceph_image():
     """
     :return: The most recent local ceph image (already pulled)
@@ -1179,6 +1233,7 @@ def get_last_local_ceph_image():
         return r
     return None
 
+
 def write_tmp(s, uid, gid):
     # type: (str, int, int) -> Any
     tmp_f = tempfile.NamedTemporaryFile(mode='w',
@@ -1189,6 +1244,7 @@ def write_tmp(s, uid, gid):
 
     return tmp_f
 
+
 def makedirs(dir, uid, gid, mode):
     # type: (str, int, int, int) -> None
     if not os.path.exists(dir):
@@ -1198,14 +1254,17 @@ def makedirs(dir, uid, gid, mode):
     os.chown(dir, uid, gid)
     os.chmod(dir, mode)   # the above is masked by umask...
 
+
 def get_data_dir(fsid, t, n):
     # type: (str, str, Union[int, str]) -> str
     return os.path.join(args.data_dir, fsid, '%s.%s' % (t, n))
 
+
 def get_log_dir(fsid):
     # type: (str) -> str
     return os.path.join(args.log_dir, fsid)
 
+
 def make_data_dir_base(fsid, uid, gid):
     # type: (str, int, int) -> str
     data_dir_base = os.path.join(args.data_dir, fsid)
@@ -1215,30 +1274,34 @@ def make_data_dir_base(fsid, uid, gid):
              DATA_DIR_MODE)
     return data_dir_base
 
+
 def make_data_dir(fsid, daemon_type, daemon_id, uid=None, gid=None):
-    # type: (str, str, Union[int, str], int, int) -> str
-    if not uid or not gid:
-        (uid, gid) = extract_uid_gid()
+    # type: (str, str, Union[int, str], Optional[int], Optional[int]) -> str
+    if uid is None or gid is None:
+        uid, gid = extract_uid_gid()
     make_data_dir_base(fsid, uid, gid)
     data_dir = get_data_dir(fsid, daemon_type, daemon_id)
     makedirs(data_dir, uid, gid, DATA_DIR_MODE)
     return data_dir
 
+
 def make_log_dir(fsid, uid=None, gid=None):
-    # type: (str, int, int) -> str
-    if not uid or not gid:
-        (uid, gid) = extract_uid_gid()
+    # type: (str, Optional[int], Optional[int]) -> str
+    if uid is None or gid is None:
+        uid, gid = extract_uid_gid()
     log_dir = get_log_dir(fsid)
     makedirs(log_dir, uid, gid, LOG_DIR_MODE)
     return log_dir
 
+
 def make_var_run(fsid, uid, gid):
     # type: (str, int, int) -> None
     call_throws(['install', '-d', '-m0770', '-o', str(uid), '-g', str(gid),
                  '/var/run/ceph/%s' % fsid])
 
+
 def copy_tree(src, dst, uid=None, gid=None):
-    # type: (List[str], str, int, int) -> None
+    # type: (List[str], str, Optional[int], Optional[int]) -> None
     """
     Copy a directory tree from src to dst
     """
@@ -1263,7 +1326,7 @@ def copy_tree(src, dst, uid=None, gid=None):
 
 
 def copy_files(src, dst, uid=None, gid=None):
-    # type: (List[str], str, int, int) -> None
+    # type: (List[str], str, Optional[int], Optional[int]) -> None
     """
     Copy a files from src to dst
     """
@@ -1281,8 +1344,9 @@ def copy_files(src, dst, uid=None, gid=None):
         logger.debug('chown %s:%s \'%s\'' % (uid, gid, dst_file))
         os.chown(dst_file, uid, gid)
 
+
 def move_files(src, dst, uid=None, gid=None):
-    # type: (List[str], str, int, int) -> None
+    # type: (List[str], str, Optional[int], Optional[int]) -> None
     """
     Move files from src to dst
     """
@@ -1306,6 +1370,7 @@ def move_files(src, dst, uid=None, gid=None):
             logger.debug('chown %s:%s \'%s\'' % (uid, gid, dst_file))
             os.chown(dst_file, uid, gid)
 
+
 ## copied from distutils ##
 def find_executable(executable, path=None):
     """Tries to find 'executable' in the directories listed in 'path'.
@@ -1342,6 +1407,7 @@ def find_executable(executable, path=None):
             return f
     return None
 
+
 def find_program(filename):
     # type: (str) -> str
     name = find_executable(filename)
@@ -1349,6 +1415,7 @@ def find_program(filename):
         raise ValueError('%s not found' % filename)
     return name
 
+
 def get_unit_name(fsid, daemon_type, daemon_id=None):
     # type: (str, str, Optional[Union[int, str]]) -> str
     # accept either name or type + id
@@ -1357,6 +1424,7 @@ def get_unit_name(fsid, daemon_type, daemon_id=None):
     else:
         return 'ceph-%s@%s' % (fsid, daemon_type)
 
+
 def get_unit_name_by_daemon_name(fsid, name):
     daemon = get_daemon_description(fsid, name)
     try:
@@ -1364,6 +1432,7 @@ def get_unit_name_by_daemon_name(fsid, name):
     except KeyError:
         raise Error('Failed to get unit name for {}'.format(daemon))
 
+
 def check_unit(unit_name):
     # type: (str) -> Tuple[bool, str, bool]
     # NOTE: we ignore the exit code here because systemctl outputs
@@ -1402,6 +1471,7 @@ def check_unit(unit_name):
         state = 'unknown'
     return (enabled, state, installed)
 
+
 def check_units(units, enabler=None):
     # type: (List[str], Optional[Packager]) -> bool
     for u in units:
@@ -1415,8 +1485,9 @@ def check_units(units, enabler=None):
                 enabler.enable_service(u)
     return False
 
+
 def get_legacy_config_fsid(cluster, legacy_dir=None):
-    # type: (str, str) -> Optional[str]
+    # type: (str, Optional[str]) -> Optional[str]
     config_file = '/etc/ceph/%s.conf' % cluster
     if legacy_dir is not None:
         config_file = os.path.abspath(legacy_dir + config_file)
@@ -1427,8 +1498,9 @@ def get_legacy_config_fsid(cluster, legacy_dir=None):
             return config.get('global', 'fsid')
     return None
 
+
 def get_legacy_daemon_fsid(cluster, daemon_type, daemon_id, legacy_dir=None):
-    # type: (str, str, Union[int, str], str) -> Optional[str]
+    # type: (str, str, Union[int, str], Optional[str]) -> Optional[str]
     fsid = None
     if daemon_type == 'osd':
         try:
@@ -1446,6 +1518,7 @@ def get_legacy_daemon_fsid(cluster, daemon_type, daemon_id, legacy_dir=None):
         fsid = get_legacy_config_fsid(cluster, legacy_dir=legacy_dir)
     return fsid
 
+
 def get_daemon_args(fsid, daemon_type, daemon_id):
     # type: (str, str, Union[int, str]) -> List[str]
     r = list()  # type: List[str]
@@ -1471,12 +1544,15 @@ def get_daemon_args(fsid, daemon_type, daemon_id):
             peers = config.get('peers', list())  # type: ignore
             for peer in peers:
                 r += ["--cluster.peer={}".format(peer)]
+            # some alertmanager, by default, look elsewhere for a config
+            r += ["--config.file=/etc/alertmanager/alertmanager.yml"]
     elif daemon_type == NFSGanesha.daemon_type:
         nfs_ganesha = NFSGanesha.init(fsid, daemon_id)
         r += nfs_ganesha.get_daemon_args()
 
     return r
 
+
 def create_daemon_dirs(fsid, daemon_type, daemon_id, uid, gid,
                        config=None, keyring=None):
     # type: (str, str, Union[int, str], int, int, Optional[str], Optional[str]) ->  None
@@ -1521,7 +1597,6 @@ def create_daemon_dirs(fsid, daemon_type, daemon_id, uid, gid,
             makedirs(os.path.join(data_dir_root, config_dir), uid, gid, 0o755)
             makedirs(os.path.join(data_dir_root, config_dir, 'data'), uid, gid, 0o755)
 
-
         # populate the config directory for the component from the config-json
         for fname in required_files:
             if 'files' in config: # type: ignore
@@ -1543,6 +1618,7 @@ def create_daemon_dirs(fsid, daemon_type, daemon_id, uid, gid,
         ceph_iscsi = CephIscsi.init(fsid, daemon_id)
         ceph_iscsi.create_daemon_dirs(data_dir, uid, gid)
 
+
 def get_parm(option):
     # type: (str) -> Dict[str, str]
 
@@ -1577,6 +1653,7 @@ def get_parm(option):
     else:
         return js
 
+
 def get_config_and_keyring():
     # type: () -> Tuple[Optional[str], Optional[str]]
     config = None
@@ -1597,7 +1674,19 @@ def get_config_and_keyring():
         with open(args.keyring, 'r') as f:
             keyring = f.read()
 
-    return (config, keyring)
+    return config, keyring
+
+
+def get_container_binds(fsid, daemon_type, daemon_id):
+    # type: (str, str, Union[int, str, None]) -> List[List[str]]
+    binds = list()
+
+    if daemon_type == CephIscsi.daemon_type:
+        assert daemon_id
+        binds.extend(CephIscsi.get_container_binds())
+
+    return binds
+
 
 def get_container_mounts(fsid, daemon_type, daemon_id,
                          no_config=False):
@@ -1667,7 +1756,7 @@ def get_container_mounts(fsid, daemon_type, daemon_id,
             mounts[os.path.join(data_dir, 'etc/grafana/provisioning/datasources')] = '/etc/grafana/provisioning/datasources:Z'
             mounts[os.path.join(data_dir, 'etc/grafana/certs')] = '/etc/grafana/certs:Z'
         elif daemon_type == 'alertmanager':
-            mounts[os.path.join(data_dir, 'etc/alertmanager')] = '/alertmanager:Z'
+            mounts[os.path.join(data_dir, 'etc/alertmanager')] = '/etc/alertmanager:Z'
 
     if daemon_type == NFSGanesha.daemon_type:
         assert daemon_id
@@ -1682,6 +1771,7 @@ def get_container_mounts(fsid, daemon_type, daemon_id,
 
     return mounts
 
+
 def get_container(fsid, daemon_type, daemon_id,
                   privileged=False,
                   ptrace=False,
@@ -1718,20 +1808,14 @@ def get_container(fsid, daemon_type, daemon_id,
         entrypoint = ''
         name = ''
 
-    ceph_args = [] # type: List[str]
+    ceph_args = []  # type: List[str]
     if daemon_type in Monitoring.components:
         uid, gid = extract_uid_gid_monitoring(daemon_type)
-        m = Monitoring.components[daemon_type]  # type: ignore
-        metadata = m.get('image', dict())  # type: ignore
         monitoring_args = [
             '--user',
             str(uid),
             # FIXME: disable cpu/memory limits for the time being (not supported
             # by ubuntu 18.04 kernel!)
-            #'--cpus',
-            #metadata.get('cpus', '2'),
-            #'--memory',
-            #metadata.get('memory', '4GB')
         ]
         container_args.extend(monitoring_args)
     elif daemon_type == 'crash':
@@ -1739,7 +1823,7 @@ def get_container(fsid, daemon_type, daemon_id,
     elif daemon_type in Ceph.daemons:
         ceph_args = ['-n', name, '-f']
 
-    envs=[] # type: List[str]
+    envs = []  # type: List[str]
     if daemon_type == NFSGanesha.daemon_type:
         envs.extend(NFSGanesha.get_container_envs())
 
@@ -1749,31 +1833,50 @@ def get_container(fsid, daemon_type, daemon_id,
         args=ceph_args + get_daemon_args(fsid, daemon_type, daemon_id),
         container_args=container_args,
         volume_mounts=get_container_mounts(fsid, daemon_type, daemon_id),
+        bind_mounts=get_container_binds(fsid, daemon_type, daemon_id),
         cname='ceph-%s-%s.%s' % (fsid, daemon_type, daemon_id),
         envs=envs,
         privileged=privileged,
         ptrace=ptrace,
     )
 
+
 def extract_uid_gid(img='', file_path='/var/lib/ceph'):
-    # type: (str, str) -> Tuple[int, int]
+    # type: (str, Union[str, List[str]]) -> Tuple[int, int]
 
     if not img:
         img = args.image
 
-    out = CephContainer(
-        image=img,
-        entrypoint='stat',
-        args=['-c', '%u %g', file_path]
-    ).run()
-    (uid, gid) = out.split(' ')
-    return (int(uid), int(gid))
+    if isinstance(file_path, str):
+        paths = [file_path]
+    else:
+        paths = file_path
+
+    for fp in paths:
+        try:
+            out = CephContainer(
+                image=img,
+                entrypoint='stat',
+                args=['-c', '%u %g', fp]
+            ).run()
+            uid, gid = out.split(' ')
+            return int(uid), int(gid)
+        except RuntimeError:
+            pass
+    raise RuntimeError('uid/gid not found')
+
 
 def deploy_daemon(fsid, daemon_type, daemon_id, c, uid, gid,
                   config=None, keyring=None,
                   osd_fsid=None,
-                  reconfig=False):
-    # type: (str, str, Union[int, str], CephContainer, int, int, Optional[str], Optional[str], Optional[str], Optional[bool]) -> None
+                  reconfig=False,
+                  ports=None):
+    # type: (str, str, Union[int, str], CephContainer, int, int, Optional[str], Optional[str], Optional[str], Optional[bool], Optional[List[int]]) -> None
+
+    ports = ports or []
+    if any([port_in_use(port) for port in ports]):
+        raise Error("TCP Port(s) '{}' required for {} already in use".format(",".join(map(str, ports)), daemon_type))
+
     data_dir = get_data_dir(fsid, daemon_type, daemon_id)
     if reconfig and not os.path.exists(data_dir):
         raise Error('cannot reconfig, data path %s does not exist' % data_dir)
@@ -1836,6 +1939,12 @@ def deploy_daemon(fsid, daemon_type, daemon_id, c, uid, gid,
 
     update_firewalld(daemon_type)
 
+    # Open ports explicitly required for the daemon
+    if ports:
+        fw = Firewalld()
+        fw.open_ports(ports)
+        fw.apply_rules()
+
     if reconfig and daemon_type not in Ceph.daemons:
         # ceph daemons do not need a restart; others (presumably) do to pick
         # up the new config
@@ -1844,6 +1953,21 @@ def deploy_daemon(fsid, daemon_type, daemon_id, c, uid, gid,
         call_throws(['systemctl', 'restart',
                      get_unit_name(fsid, daemon_type, daemon_id)])
 
+def _write_container_cmd_to_bash(file_obj, container, comment=None, background=False):
+    # type: (IO[str], CephContainer, Optional[str], Optional[bool]) -> None
+    if comment:
+        # Sometimes adding a comment, espectially if there are multiple containers in one
+        # unit file, makes it easier to read and grok.
+        file_obj.write('# ' + comment + '\n')
+    # Sometimes, adding `--rm` to a run_cmd doesn't work. Let's remove the container manually
+    file_obj.write('! '+ ' '.join(container.rm_cmd()) + '\n')
+    # Sometimes, `podman rm` doesn't find the container. Then you'll have to add `--storage`
+    if 'podman' in container_path:
+        file_obj.write('! '+ ' '.join(container.rm_cmd(storage=True)) + '\n')
+
+    # container run command
+    file_obj.write(' '.join(container.run_cmd()) + (' &' if background else '') + '\n')
+
 def deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
                         enable=True, start=True,
                         osd_fsid=None):
@@ -1851,28 +1975,34 @@ def deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
     # cmd
     data_dir = get_data_dir(fsid, daemon_type, daemon_id)
     with open(data_dir + '/unit.run.new', 'w') as f:
+        f.write('set -e\n')
         # pre-start cmd(s)
         if daemon_type == 'osd':
             # osds have a pre-start step
             assert osd_fsid
-            f.write('# Simple OSDs need chown on startup:\n')
-            for n in ['block', 'block.db', 'block.wal']:
-                p = os.path.join(data_dir, n)
-                f.write('[ ! -L {p} ] || chown {uid}:{gid} {p}\n'.format(p=p, uid=uid, gid=gid))
-            f.write('# LVM OSDs use ceph-volume lvm activate:\n')
-            prestart = CephContainer(
-                image=args.image,
-                entrypoint='/usr/sbin/ceph-volume',
-                args=[
-                    'lvm', 'activate',
-                    str(daemon_id), osd_fsid,
-                    '--no-systemd'
-                ],
-                privileged=True,
-                volume_mounts=get_container_mounts(fsid, daemon_type, daemon_id),
-                cname='ceph-%s-%s.%s-activate' % (fsid, daemon_type, daemon_id),
-            )
-            f.write(' '.join(prestart.run_cmd()) + '\n')
+            simple_fn = os.path.join('/etc/ceph/osd',
+                                     '%s-%s.json.adopted-by-cephadm' % (daemon_id, osd_fsid))
+            if os.path.exists(simple_fn):
+                f.write('# Simple OSDs need chown on startup:\n')
+                for n in ['block', 'block.db', 'block.wal']:
+                    p = os.path.join(data_dir, n)
+                    f.write('[ ! -L {p} ] || chown {uid}:{gid} {p}\n'.format(p=p, uid=uid, gid=gid))
+            else:
+                f.write('# LVM OSDs use ceph-volume lvm activate:\n')
+                prestart = CephContainer(
+                    image=args.image,
+                    entrypoint='/usr/sbin/ceph-volume',
+                    args=[
+                        'lvm', 'activate',
+                        str(daemon_id), osd_fsid,
+                        '--no-systemd'
+                    ],
+                    privileged=True,
+                    volume_mounts=get_container_mounts(fsid, daemon_type, daemon_id),
+                    bind_mounts=get_container_binds(fsid, daemon_type, daemon_id),
+                    cname='ceph-%s-%s.%s-activate' % (fsid, daemon_type, daemon_id),
+                )
+                f.write(' '.join(prestart.run_cmd()) + '\n')
         elif daemon_type == NFSGanesha.daemon_type:
             # add nfs to the rados grace db
             nfs_ganesha = NFSGanesha.init(fsid, daemon_id)
@@ -1880,13 +2010,15 @@ def deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
             f.write(' '.join(prestart.run_cmd()) + '\n')
         elif daemon_type == CephIscsi.daemon_type:
             f.write(' '.join(CephIscsi.configfs_mount_umount(data_dir, mount=True)) + '\n')
+            ceph_iscsi = CephIscsi.init(fsid, daemon_id)
+            tcmu_container = ceph_iscsi.get_tcmu_runner_container()
+            _write_container_cmd_to_bash(f, tcmu_container, 'iscsi tcmu-runnter container', background=True)
 
         if daemon_type in Ceph.daemons:
             install_path = find_program('install')
             f.write('{install_path} -d -m0770 -o {uid} -g {gid} /var/run/ceph/{fsid}\n'.format(install_path=install_path, fsid=fsid, uid=uid, gid=gid))
 
-        # container run command
-        f.write(' '.join(c.run_cmd()) + '\n')
+        _write_container_cmd_to_bash(f, c, '%s.%s' % (daemon_type, str(daemon_id)))
         os.fchmod(f.fileno(), 0o600)
         os.rename(data_dir + '/unit.run.new',
                   data_dir + '/unit.run')
@@ -1904,6 +2036,7 @@ def deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
                 ],
                 privileged=True,
                 volume_mounts=get_container_mounts(fsid, daemon_type, daemon_id),
+                bind_mounts=get_container_binds(fsid, daemon_type, daemon_id),
                 cname='ceph-%s-%s.%s-deactivate' % (fsid, daemon_type,
                                                     daemon_id),
             )
@@ -1914,6 +2047,10 @@ def deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
             poststop = nfs_ganesha.get_rados_grace_container('remove')
             f.write(' '.join(poststop.run_cmd()) + '\n')
         elif daemon_type == CephIscsi.daemon_type:
+            # make sure we also stop the tcmu container
+            ceph_iscsi = CephIscsi.init(fsid, daemon_id)
+            tcmu_container = ceph_iscsi.get_tcmu_runner_container()
+            f.write('! '+ ' '.join(tcmu_container.stop_cmd()) + '\n')
             f.write(' '.join(CephIscsi.configfs_mount_umount(data_dir, mount=False)) + '\n')
         os.fchmod(f.fileno(), 0o600)
         os.rename(data_dir + '/unit.poststop.new',
@@ -1945,56 +2082,94 @@ def deploy_daemon_units(fsid, uid, gid, daemon_type, daemon_id, c,
     if start:
         call_throws(['systemctl', 'start', unit_name])
 
-def update_firewalld(daemon_type):
-    # type: (str) -> None
-    if args.skip_firewalld:
-        return
-    cmd = find_executable('firewall-cmd')
-    if not cmd:
-        logger.debug('firewalld does not appear to be present')
-        return
-    (enabled, state, _) = check_unit('firewalld.service')
-    if not enabled:
-        logger.debug('firewalld.service is not enabled')
-        return
-
-    fw_services = []
-    fw_ports = []
-    if daemon_type == 'mon':
-        fw_services.append('ceph-mon')
-    elif daemon_type in ['mgr', 'mds', 'osd']:
-        fw_services.append('ceph')
-    if daemon_type == 'mgr':
-        fw_ports.append(8080)  # dashboard
-        fw_ports.append(8443)  # dashboard
-        fw_ports.append(9283)  # mgr/prometheus exporter
-    elif daemon_type in Monitoring.port_map.keys():
-        fw_ports.extend(Monitoring.port_map[daemon_type])  # prometheus etc
-    elif daemon_type == NFSGanesha.daemon_type:
-        fw_services.append('nfs')
 
-    for svc in fw_services:
-        out, err, ret = call([cmd, '--permanent', '--query-service', svc])
+
+class Firewalld(object):
+    def __init__(self):
+        # type: () -> None
+        self.available = self.check()
+
+    def check(self):
+        # type: () -> bool
+        self.cmd = find_executable('firewall-cmd')
+        if not self.cmd:
+            logger.debug('firewalld does not appear to be present')
+            return False
+        (enabled, state, _) = check_unit('firewalld.service')
+        if not enabled:
+            logger.debug('firewalld.service is not enabled')
+            return False
+        if state != "running":
+            logger.debug('firewalld.service is not running')
+            return False
+
+        logger.info("firewalld ready")
+        return True
+
+    def enable_service_for(self, daemon_type):
+        # type: (str) -> None
+        if not self.available:
+            logger.debug('Not possible to enable service <%s>. firewalld.service is not available' % daemon_type)
+            return
+
+        if daemon_type == 'mon':
+            svc = 'ceph-mon'
+        elif daemon_type in ['mgr', 'mds', 'osd']:
+            svc = 'ceph'
+        elif daemon_type == NFSGanesha.daemon_type:
+            svc = 'nfs'
+        else:
+            return
+
+        out, err, ret = call([self.cmd, '--permanent', '--query-service', svc], verbose_on_failure=False)
         if ret:
             logger.info('Enabling firewalld service %s in current zone...' % svc)
-            out, err, ret = call([cmd, '--permanent', '--add-service', svc])
+            out, err, ret = call([self.cmd, '--permanent', '--add-service', svc])
             if ret:
                 raise RuntimeError(
                     'unable to add service %s to current zone: %s' % (svc, err))
         else:
             logger.debug('firewalld service %s is enabled in current zone' % svc)
-    for port in fw_ports:
-        tcp_port = str(port) + '/tcp'
-        out, err, ret = call([cmd, '--permanent', '--query-port', tcp_port])
-        if ret:
-            logger.info('Enabling firewalld port %s in current zone...' % tcp_port)
-            out, err, ret = call([cmd, '--permanent', '--add-port', tcp_port])
+
+    def open_ports(self, fw_ports):
+        # type: (List[int]) -> None
+        if not self.available:
+            logger.debug('Not possible to open ports <%s>. firewalld.service is not available' % fw_ports)
+            return
+
+        for port in fw_ports:
+            tcp_port = str(port) + '/tcp'
+            out, err, ret = call([self.cmd, '--permanent', '--query-port', tcp_port], verbose_on_failure=False)
             if ret:
-                raise RuntimeError('unable to add port %s to current zone: %s' %
-                                   (tcp_port, err))
-        else:
-            logger.debug('firewalld port %s is enabled in current zone' % tcp_port)
-    call_throws([cmd, '--reload'])
+                logger.info('Enabling firewalld port %s in current zone...' % tcp_port)
+                out, err, ret = call([self.cmd, '--permanent', '--add-port', tcp_port])
+                if ret:
+                    raise RuntimeError('unable to add port %s to current zone: %s' %
+                                    (tcp_port, err))
+            else:
+                logger.debug('firewalld port %s is enabled in current zone' % tcp_port)
+
+    def apply_rules(self):
+        # type: () -> None
+        if not self.available:
+            return
+
+        call_throws([self.cmd, '--reload'])
+
+
+def update_firewalld(daemon_type):
+    # type: (str) -> None
+    firewall = Firewalld()
+
+    firewall.enable_service_for(daemon_type)
+
+    fw_ports = []
+
+    if daemon_type in Monitoring.port_map.keys():
+        fw_ports.extend(Monitoring.port_map[daemon_type])  # prometheus etc
+
+    firewall.open_ports(fw_ports)
+    firewall.apply_rules()
 
 def install_base_units(fsid):
     # type: (str) -> None
@@ -2064,6 +2239,7 @@ def install_base_units(fsid):
 }
 """ % fsid)
 
+
 def get_unit_file(fsid):
     # type: (str) -> str
     u = """# generated by cephadm
@@ -2106,6 +2282,7 @@ WantedBy=ceph-{fsid}.target
 
 ##################################
 
+
 class CephContainer:
     def __init__(self,
                  image,
@@ -2116,8 +2293,9 @@ class CephContainer:
                  container_args=[],
                  envs=None,
                  privileged=False,
-                 ptrace=False):
-        # type: (str, str, List[str], Dict[str, str], str, List[str], Optional[List[str]], bool, bool) -> None
+                 ptrace=False,
+                 bind_mounts=None):
+        # type: (str, str, List[str], Dict[str, str], str, List[str], Optional[List[str]], bool, bool, Optional[List[List[str]]]) -> None
         self.image = image
         self.entrypoint = entrypoint
         self.args = args
@@ -2127,17 +2305,19 @@ class CephContainer:
         self.envs = envs
         self.privileged = privileged
         self.ptrace = ptrace
+        self.bind_mounts = bind_mounts if bind_mounts else []
 
     def run_cmd(self):
         # type: () -> List[str]
-        vols = [] # type: List[str]
-        envs = [] # type: List[str]
-        cname = [] # type: List[str]
-        entrypoint = [] # type: List[str]
+        vols = []  # type: List[str]
+        envs = []  # type: List[str]
+        cname = []  # type: List[str]
+        binds = []  # type: List[str]
+        entrypoint = []  # type: List[str]
         if self.entrypoint:
             entrypoint = ['--entrypoint', self.entrypoint]
 
-        priv = [] # type: List[str]
+        priv = []  # type: List[str]
         if self.privileged:
             priv = ['--privileged',
                     # let OSD etc read block devs that haven't been chowned
@@ -2147,6 +2327,8 @@ class CephContainer:
         vols = sum(
             [['-v', '%s:%s' % (host_dir, container_dir)]
              for host_dir, container_dir in self.volume_mounts.items()], [])
+        binds = sum([['--mount', '{}'.format(','.join(bind))]
+                     for bind in self.bind_mounts],[])
         envs = [
             '-e', 'CONTAINER_IMAGE=%s' % self.image,
             '-e', 'NODE_NAME=%s' % get_hostname(),
@@ -2163,22 +2345,25 @@ class CephContainer:
             '--ipc=host',
         ] + self.container_args + priv + \
         cname + envs + \
-        vols + entrypoint + \
+        vols + binds + entrypoint + \
         [
             self.image
         ] + self.args # type: ignore
 
     def shell_cmd(self, cmd):
         # type: (List[str]) -> List[str]
-        priv = [] # type: List[str]
+        priv = []  # type: List[str]
         if self.privileged:
             priv = ['--privileged',
                     # let OSD etc read block devs that haven't been chowned
                     '--group-add=disk']
-        vols = [] # type: List[str]
+        vols = []  # type: List[str]
         vols = sum(
             [['-v', '%s:%s' % (host_dir, container_dir)]
              for host_dir, container_dir in self.volume_mounts.items()], [])
+        binds = [] # type: List[str]
+        binds = sum([['--mount', '{}'.format(','.join(bind))]
+                     for bind in self.bind_mounts], [])
         envs = [
             '-e', 'CONTAINER_IMAGE=%s' % self.image,
             '-e', 'NODE_NAME=%s' % get_hostname(),
@@ -2195,7 +2380,7 @@ class CephContainer:
             '--rm',
             '--net=host',
             '--ipc=host',
-        ] + self.container_args + priv + envs + vols + [
+        ] + self.container_args + priv + envs + vols + binds + [
             '--entrypoint', cmd[0],
             self.image
         ] + cmd[1:]
@@ -2209,6 +2394,25 @@ class CephContainer:
             self.cname,
         ] + cmd
 
+    def rm_cmd(self, storage=False):
+        # type: (bool) -> List[str]
+        ret = [
+            str(container_path),
+            'rm', '-f',
+        ]
+        if storage:
+            ret.append('--storage')
+        ret.append(self.cname)
+        return ret
+
+    def stop_cmd(self):
+        # type () -> List[str]
+        ret = [
+            str(container_path),
+            'stop', self.cname,
+        ]
+        return ret
+
     def run(self, timeout=DEFAULT_TIMEOUT):
         # type: (Optional[int]) -> str
         logger.debug(self.run_cmd())
@@ -2218,6 +2422,7 @@ class CephContainer:
 
 ##################################
 
+
 @infer_image
 def command_version():
     # type: () -> int
@@ -2227,15 +2432,43 @@ def command_version():
 
 ##################################
 
+
 @infer_image
 def command_pull():
     # type: () -> int
-    logger.info('Pulling latest %s...' % args.image)
-    call_throws([container_path, 'pull', args.image])
+
+    _pull_image(args.image)
     return command_inspect_image()
 
+
+def _pull_image(image):
+    # type: (str) -> None
+    logger.info('Pulling container image %s...' % image)
+
+    ignorelist = [
+        "error creating read-write layer with ID",
+        "net/http: TLS handshake timeout",
+        "Digest did not match, expected",
+    ]
+
+    cmd = [container_path, 'pull', image]
+    cmd_str = ' '.join(cmd)
+
+    for sleep_secs in [1, 4, 25]:
+        out, err, ret = call(cmd)
+        if not ret:
+            return
+
+        if not any(pattern in err for pattern in ignorelist):
+            raise RuntimeError('Failed command: %s' % cmd_str)
+
+        logger.info('"%s failed transiently. Retrying. waiting %s seconds...' % (cmd_str, sleep_secs))
+        time.sleep(sleep_secs)
+
+    raise RuntimeError('Failed command: %s: maximum retries reached' % cmd_str)
 ##################################
 
+
 @infer_image
 def command_inspect_image():
     # type: () -> int
@@ -2256,6 +2489,23 @@ def command_inspect_image():
 
 ##################################
 
+def unwrap_ipv6(address):
+    # type: (str) -> str
+    if address.startswith('[') and address.endswith(']'):
+        return address[1:-1]
+    return address
+
+
+def is_ipv6(address):
+    # type: (str) -> bool
+    address = unwrap_ipv6(address)
+    try:
+        return ipaddress.ip_address(unicode(address)).version == 6
+    except ValueError:
+        logger.warning("Address: {} isn't a valid IP address".format(address))
+        return False
+
+
 @default_image
 def command_bootstrap():
     # type: () -> int
@@ -2291,14 +2541,16 @@ def command_bootstrap():
     mon_id = args.mon_id or hostname
     mgr_id = args.mgr_id or generate_service_id()
     logging.info('Cluster fsid: %s' % fsid)
+    ipv6 = False
 
     l = FileLock(fsid)
     l.acquire()
 
     # ip
     r = re.compile(r':(\d+)$')
-    base_ip = None
+    base_ip = ''
     if args.mon_ip:
+        ipv6 = is_ipv6(args.mon_ip)
         hasport = r.findall(args.mon_ip)
         if hasport:
             port = int(hasport[0])
@@ -2322,6 +2574,7 @@ def command_bootstrap():
         if addr_arg[0] != '[' or addr_arg[-1] != ']':
             raise Error('--mon-addrv value %s must use square backets' %
                         addr_arg)
+        ipv6 = addr_arg.count('[') > 1
         for addr in addr_arg[1:-1].split(','):
             hasport = r.findall(addr)
             if not hasport:
@@ -2341,7 +2594,8 @@ def command_bootstrap():
         # make sure IP is configured locally, and then figure out the
         # CIDR network
         for net, ips in list_networks().items():
-            if base_ip in ips:
+            if ipaddress.ip_address(unicode(unwrap_ipv6(base_ip))) in \
+                    [ipaddress.ip_address(unicode(ip)) for ip in ips]:
                 mon_network = net
                 logger.info('Mon IP %s is in CIDR network %s' % (base_ip,
                                                                  mon_network))
@@ -2361,9 +2615,11 @@ def command_bootstrap():
     cp.write(cpf)
     config = cpf.getvalue()
 
+    if args.registry_json or args.registry_url:
+        command_registry_login()
+
     if not args.skip_pull:
-        logger.info('Pulling latest %s container...' % args.image)
-        call_throws([container_path, 'pull', args.image])
+        _pull_image(args.image)
 
     logger.info('Extracting ceph user uid/gid from container image...')
     (uid, gid) = extract_uid_gid()
@@ -2498,7 +2754,7 @@ def command_bootstrap():
     # wait for the service to become available
     def is_mon_available():
         # type: () -> bool
-        timeout=args.timeout if args.timeout else 30 # seconds
+        timeout=args.timeout if args.timeout else 60 # seconds
         out, err, ret = call(c.run_cmd(),
                              desc=c.entrypoint,
                              timeout=timeout)
@@ -2535,12 +2791,17 @@ def command_bootstrap():
         logger.info('Setting mon public_network...')
         cli(['config', 'set', 'mon', 'public_network', mon_network])
 
+    if ipv6:
+        logger.info('Enabling IPv6 (ms_bind_ipv6)')
+        cli(['config', 'set', 'global', 'ms_bind_ipv6', 'true'])
+
     # create mgr
     logger.info('Creating mgr...')
     mgr_keyring = '[mgr.%s]\n\tkey = %s\n' % (mgr_id, mgr_key)
     mgr_c = get_container(fsid, 'mgr', mgr_id)
+    # Note:the default port used by the Prometheus node exporter is opened in fw
     deploy_daemon(fsid, 'mgr', mgr_id, mgr_c, uid, gid,
-                  config=config, keyring=mgr_keyring)
+                  config=config, keyring=mgr_keyring, ports=[9283])
 
     # output files
     with open(args.output_keyring, 'w') as f:
@@ -2557,7 +2818,7 @@ def command_bootstrap():
     logger.info('Waiting for mgr to start...')
     def is_mgr_available():
         # type: () -> bool
-        timeout=args.timeout if args.timeout else 30 # seconds
+        timeout=args.timeout if args.timeout else 60 # seconds
         try:
             out = cli(['status', '-f', 'json-pretty'], timeout=timeout)
             j = json.loads(out)
@@ -2588,6 +2849,8 @@ def command_bootstrap():
 
     # ssh
     if not args.skip_ssh:
+        cli(['config-key', 'set', 'mgr/cephadm/ssh_user', args.ssh_user])
+
         logger.info('Enabling cephadm module...')
         cli(['mgr', 'module', 'enable', 'cephadm'])
         wait_for_mgr_restart()
@@ -2619,11 +2882,21 @@ def command_bootstrap():
                 f.write(ssh_pub)
             logger.info('Wrote public SSH key to to %s' % args.output_pub_ssh_key)
 
-            logger.info('Adding key to root@localhost\'s authorized_keys...')
-            if not os.path.exists('/root/.ssh'):
-                os.mkdir('/root/.ssh', 0o700)
-            auth_keys_file = '/root/.ssh/authorized_keys'
+            logger.info('Adding key to %s@localhost\'s authorized_keys...' % args.ssh_user)
+            try:
+                s_pwd = pwd.getpwnam(args.ssh_user)
+            except KeyError as e:
+                raise Error('Cannot find uid/gid for ssh-user: %s' % (args.ssh_user))
+            ssh_uid = s_pwd.pw_uid
+            ssh_gid = s_pwd.pw_gid
+            ssh_dir = os.path.join(s_pwd.pw_dir, '.ssh')
+
+            if not os.path.exists(ssh_dir):
+                makedirs(ssh_dir, ssh_uid, ssh_gid, 0o700)
+
+            auth_keys_file = '%s/authorized_keys' % ssh_dir
             add_newline = False
+
             if os.path.exists(auth_keys_file):
                 with open(auth_keys_file, 'r') as f:
                     f.seek(0, os.SEEK_END)
@@ -2631,7 +2904,9 @@ def command_bootstrap():
                         f.seek(f.tell()-1, os.SEEK_SET) # go to last char
                         if f.read() != '\n':
                             add_newline = True
+
             with open(auth_keys_file, 'a') as f:
+                os.fchown(f.fileno(), ssh_uid, ssh_gid) # just in case we created it
                 os.fchmod(f.fileno(), 0o600)  # just in case we created it
                 if add_newline:
                     f.write('\n')
@@ -2639,7 +2914,10 @@ def command_bootstrap():
 
         host = get_hostname()
         logger.info('Adding host %s...' % host)
-        cli(['orch', 'host', 'add', host])
+        try:
+            cli(['orch', 'host', 'add', host])
+        except RuntimeError as e:
+            raise Error('Failed to add host <%s>: %s' % (host, e))
 
         if not args.orphan_initial_daemons:
             for t in ['mon', 'mgr', 'crash']:
@@ -2653,7 +2931,17 @@ def command_bootstrap():
                 logger.info('Deploying %s service with default placement...' % t)
                 cli(['orch', 'apply', t])
 
+    if args.registry_url and args.registry_username and args.registry_password:
+        cli(['config', 'set', 'mgr', 'mgr/cephadm/registry_url', args.registry_url, '--force'])
+        cli(['config', 'set', 'mgr', 'mgr/cephadm/registry_username', args.registry_username, '--force'])
+        cli(['config', 'set', 'mgr', 'mgr/cephadm/registry_password', args.registry_password, '--force'])
+
     if not args.skip_dashboard:
+        # Configure SSL port (cephadm only allows to configure dashboard SSL port)
+        # if the user does not want to use SSL he can change this setting once the cluster is up
+        cli(["config", "set",  "mgr", "mgr/dashboard/ssl_server_port" , str(args.ssl_dashboard_port)])
+
+        # configuring dashboard parameters
         logger.info('Enabling the dashboard module...')
         cli(['mgr', 'module', 'enable', 'dashboard'])
         wait_for_mgr_restart()
@@ -2681,6 +2969,11 @@ def command_bootstrap():
         out = cli(['config', 'get', 'mgr', 'mgr/dashboard/ssl_server_port'])
         port = int(out)
 
+        # Open dashboard port
+        fw = Firewalld()
+        fw.open_ports([port])
+        fw.apply_rules()
+
         logger.info('Ceph Dashboard is now available at:\n\n'
                     '\t     URL: https://%s:%s/\n'
                     '\t    User: %s\n'
@@ -2688,7 +2981,7 @@ def command_bootstrap():
                         get_fqdn(), port,
                         args.initial_dashboard_user,
                         password))
-    
+
     if args.apply_spec:
         logger.info('Applying %s to cluster' % args.apply_spec)
 
@@ -2703,7 +2996,7 @@ def command_bootstrap():
                         ssh_key = '/etc/ceph/ceph.pub'
                         if args.ssh_public_key:
                             ssh_key = args.ssh_public_key.name
-                        out, err, code = call_throws(['ssh-copy-id', '-f', '-i', ssh_key, 'root@%s' % split[1]])
+                        out, err, code = call_throws(['ssh-copy-id', '-f', '-i', ssh_key, '%s@%s' % (args.ssh_user, split[1])])
 
         mounts = {}
         mounts[pathify(args.apply_spec)] = '/tmp/spec.yml:z'
@@ -2726,6 +3019,44 @@ def command_bootstrap():
 
 ##################################
 
+def command_registry_login():
+    if args.registry_json:
+        logger.info("Pulling custom registry login info from %s." % args.registry_json)
+        d = get_parm(args.registry_json)
+        if d.get('url') and d.get('username') and d.get('password'):
+            args.registry_url = d.get('url')
+            args.registry_username = d.get('username')
+            args.registry_password = d.get('password')
+            registry_login(args.registry_url, args.registry_username, args.registry_password)
+        else:
+            raise Error("json provided for custom registry login did not include all necessary fields. "
+                            "Please setup json file as\n"
+                            "{\n"
+                              " \"url\": \"REGISTRY_URL\",\n"
+                              " \"username\": \"REGISTRY_USERNAME\",\n"
+                              " \"password\": \"REGISTRY_PASSWORD\"\n"
+                            "}\n")
+    elif args.registry_url and args.registry_username and args.registry_password:
+        registry_login(args.registry_url, args.registry_username, args.registry_password)
+    else:
+        raise Error("Invalid custom registry arguments received. To login to a custom registry include "
+                        "--registry-url, --registry-username and --registry-password "
+                        "options or --registry-json option")
+    return 0
+
+def registry_login(url, username, password):
+    logger.info("Logging into custom registry.")
+    try:
+        out, _, _ = call_throws([container_path, 'login',
+                                   '-u', username,
+                                   '-p', password,
+                                   url])
+    except:
+        raise Error("Failed to login to custom registry @ %s as %s with given password" % (args.registry_url, args.registry_username))
+
+##################################
+
+
 def extract_uid_gid_monitoring(daemon_type):
     # type: (str) -> Tuple[int, int]
 
@@ -2736,7 +3067,7 @@ def extract_uid_gid_monitoring(daemon_type):
     elif daemon_type == 'grafana':
         uid, gid = extract_uid_gid(file_path='/var/lib/grafana')
     elif daemon_type == 'alertmanager':
-        uid, gid = extract_uid_gid(file_path='/etc/alertmanager')
+        uid, gid = extract_uid_gid(file_path=['/etc/alertmanager', '/etc/prometheus'])
     else:
         raise Error("{} not implemented yet".format(daemon_type))
     return uid, gid
@@ -2766,24 +3097,29 @@ def command_deploy():
     else:
         logger.info('%s daemon %s ...' % ('Deploy', args.name))
 
+    # Get and check ports explicitly required to be opened
+    daemon_ports = [] # type: List[int]
+    if args.tcp_ports:
+        daemon_ports = list(map(int, args.tcp_ports.split()))
+
     if daemon_type in Ceph.daemons:
         config, keyring = get_config_and_keyring()
         uid, gid = extract_uid_gid()
         make_var_run(args.fsid, uid, gid)
+
         c = get_container(args.fsid, daemon_type, daemon_id,
                           ptrace=args.allow_ptrace)
         deploy_daemon(args.fsid, daemon_type, daemon_id, c, uid, gid,
                       config=config, keyring=keyring,
                       osd_fsid=args.osd_fsid,
-                      reconfig=args.reconfig)
+                      reconfig=args.reconfig,
+                      ports=daemon_ports)
 
     elif daemon_type in Monitoring.components:
         # monitoring daemon - prometheus, grafana, alertmanager, node-exporter
         # Default Checks
         if not args.reconfig and not redeploy:
-            daemon_ports = Monitoring.port_map[daemon_type]  # type: List[int]
-            if any([port_in_use(port) for port in daemon_ports]):
-                raise Error("TCP Port(s) '{}' required for {} is already in use".format(",".join(map(str, daemon_ports)), daemon_type))
+            daemon_ports.extend(Monitoring.port_map[daemon_type])
 
         # make sure provided config-json is sufficient
         config = get_parm(args.config_json) # type: ignore
@@ -2801,18 +3137,21 @@ def command_deploy():
         uid, gid = extract_uid_gid_monitoring(daemon_type)
         c = get_container(args.fsid, daemon_type, daemon_id)
         deploy_daemon(args.fsid, daemon_type, daemon_id, c, uid, gid,
-                      reconfig=args.reconfig)
+                      reconfig=args.reconfig,
+                      ports=daemon_ports)
 
     elif daemon_type == NFSGanesha.daemon_type:
         if not args.reconfig and not redeploy:
-            NFSGanesha.port_in_use()
+            daemon_ports.extend(NFSGanesha.port_map.values())
+
         config, keyring = get_config_and_keyring()
         # TODO: extract ganesha uid/gid (997, 994) ?
         uid, gid = extract_uid_gid()
         c = get_container(args.fsid, daemon_type, daemon_id)
         deploy_daemon(args.fsid, daemon_type, daemon_id, c, uid, gid,
                       config=config, keyring=keyring,
-                      reconfig=args.reconfig)
+                      reconfig=args.reconfig,
+                      ports=daemon_ports)
 
     elif daemon_type == CephIscsi.daemon_type:
         config, keyring = get_config_and_keyring()
@@ -2820,12 +3159,14 @@ def command_deploy():
         c = get_container(args.fsid, daemon_type, daemon_id)
         deploy_daemon(args.fsid, daemon_type, daemon_id, c, uid, gid,
                       config=config, keyring=keyring,
-                      reconfig=args.reconfig)
+                      reconfig=args.reconfig,
+                      ports=daemon_ports)
     else:
         raise Error("{} not implemented in command_deploy function".format(daemon_type))
 
 ##################################
 
+
 @infer_image
 def command_run():
     # type: () -> int
@@ -2836,6 +3177,7 @@ def command_run():
 
 ##################################
 
+
 @infer_fsid
 @infer_config
 @infer_image
@@ -2865,6 +3207,7 @@ def command_shell():
     container_args = [] # type: List[str]
     mounts = get_container_mounts(args.fsid, daemon_type, daemon_id,
                                   no_config=True if args.config else False)
+    binds = get_container_binds(args.fsid, daemon_type, daemon_id)
     if args.config:
         mounts[pathify(args.config)] = '/etc/ceph/ceph.conf:z'
     if args.keyring:
@@ -2900,6 +3243,7 @@ def command_shell():
         args=[],
         container_args=container_args,
         volume_mounts=mounts,
+        bind_mounts=binds,
         envs=args.env,
         privileged=True)
     command = c.shell_cmd(command)
@@ -2908,6 +3252,7 @@ def command_shell():
 
 ##################################
 
+
 @infer_fsid
 def command_enter():
     # type: () -> int
@@ -2935,6 +3280,7 @@ def command_enter():
 
 ##################################
 
+
 @infer_fsid
 @infer_image
 def command_ceph_volume():
@@ -2977,6 +3323,7 @@ def command_ceph_volume():
 
 ##################################
 
+
 @infer_fsid
 def command_unit():
     # type: () -> None
@@ -2992,6 +3339,7 @@ def command_unit():
 
 ##################################
 
+
 @infer_fsid
 def command_logs():
     # type: () -> None
@@ -3012,6 +3360,7 @@ def command_logs():
 
 ##################################
 
+
 def list_networks():
     # type: () -> Dict[str,List[str]]
 
@@ -3021,10 +3370,17 @@ def list_networks():
     #j = json.loads(out)
     #for x in j:
 
+    res = _list_ipv4_networks()
+    res.update(_list_ipv6_networks())
+    return res
+
+
+def _list_ipv4_networks():
     out, _, _ = call_throws([find_executable('ip'), 'route', 'ls'])
-    return _parse_ip_route(out)
+    return _parse_ipv4_route(out)
 
-def _parse_ip_route(out):
+
+def _parse_ipv4_route(out):
     r = {}  # type: Dict[str,List[str]]
     p = re.compile(r'^(\S+) (.*)scope link (.*)src (\S+)')
     for line in out.splitlines():
@@ -3038,6 +3394,39 @@ def _parse_ip_route(out):
         r[net].append(ip)
     return r
 
+
+def _list_ipv6_networks():
+    routes, _, _ = call_throws([find_executable('ip'), '-6', 'route', 'ls'])
+    ips, _, _ = call_throws([find_executable('ip'), '-6', 'addr', 'ls'])
+    return _parse_ipv6_route(routes, ips)
+
+
+def _parse_ipv6_route(routes, ips):
+    r = {}  # type: Dict[str,List[str]]
+    route_p = re.compile(r'^(\S+) dev (\S+) proto (\S+) metric (\S+) .*pref (\S+)$')
+    ip_p = re.compile(r'^\s+inet6 (\S+)/(.*)scope (.*)$')
+    for line in routes.splitlines():
+        m = route_p.findall(line)
+        if not m or m[0][0].lower() == 'default':
+            continue
+        net = m[0][0]
+        if net not in r:
+            r[net] = []
+
+    for line in ips.splitlines():
+        m = ip_p.findall(line)
+        if not m:
+            continue
+        ip = m[0][0]
+        # find the network it belongs to
+        net = [n for n in r.keys()
+               if ipaddress.ip_address(unicode(ip)) in ipaddress.ip_network(unicode(n))]
+        if net:
+            r[net[0]].append(ip)
+
+    return r
+
+
 def command_list_networks():
     # type: () -> None
     r = list_networks()
@@ -3045,12 +3434,14 @@ def command_list_networks():
 
 ##################################
 
+
 def command_ls():
     # type: () -> None
     ls = list_daemons(detail=not args.no_detail,
                       legacy_dir=args.legacy_dir)
     print(json.dumps(ls, indent=4))
 
+
 def list_daemons(detail=True, legacy_dir=None):
     # type: (bool, Optional[str]) -> List[Dict[str, str]]
     host_version = None
@@ -3217,8 +3608,7 @@ def command_adopt():
     # type: () -> None
 
     if not args.skip_pull:
-        logger.info('Pulling latest %s container...' % args.image)
-        call_throws([container_path, 'pull', args.image])
+        _pull_image(args.image)
 
     (daemon_type, daemon_id) = args.name.split('.', 1)
 
@@ -3479,6 +3869,7 @@ def command_adopt_prometheus(daemon_id, fsid):
     deploy_daemon(fsid, daemon_type, daemon_id, c, uid, gid)
     update_firewalld(daemon_type)
 
+
 def command_adopt_grafana(daemon_id, fsid):
     # type: (str, str) -> None
 
@@ -3521,7 +3912,6 @@ def command_adopt_grafana(daemon_id, fsid):
     else:
         logger.debug("Skipping ssl, missing cert {} or key {}".format(cert, key))
 
-
     # data - possible custom dashboards/plugins
     data_src = '/var/lib/grafana/'
     data_src = os.path.abspath(args.legacy_dir + data_src)
@@ -3533,6 +3923,7 @@ def command_adopt_grafana(daemon_id, fsid):
     deploy_daemon(fsid, daemon_type, daemon_id, c, uid, gid)
     update_firewalld(daemon_type)
 
+
 def command_adopt_alertmanager(daemon_id, fsid):
     # type: (str, str) -> None
 
@@ -3562,6 +3953,7 @@ def command_adopt_alertmanager(daemon_id, fsid):
     deploy_daemon(fsid, daemon_type, daemon_id, c, uid, gid)
     update_firewalld(daemon_type)
 
+
 def _adjust_grafana_ini(filename):
     # type: (str) -> None
 
@@ -3637,6 +4029,7 @@ def command_rm_daemon():
 
 ##################################
 
+
 def command_rm_cluster():
     # type: () -> None
     if not args.force:
@@ -3720,13 +4113,16 @@ def check_time_sync(enabler=None):
         return False
     return True
 
+
 def command_check_host():
     # type: () -> None
+    global container_path
+
     errors = []
     commands = ['systemctl', 'lvcreate']
 
     if args.docker:
-            container_path = find_program('docker')
+        container_path = find_program('docker')
     else:
         for i in CONTAINER_PREFERENCE:
             try:
@@ -3764,6 +4160,7 @@ def command_check_host():
 
 ##################################
 
+
 def command_prepare_host():
     # type: () -> None
     logger.info('Verifying podman|docker is present...')
@@ -3799,6 +4196,7 @@ def command_prepare_host():
 
 ##################################
 
+
 class CustomValidation(argparse.Action):
 
     def _check_name(self, values):
@@ -3821,6 +4219,7 @@ class CustomValidation(argparse.Action):
 
 ##################################
 
+
 def get_distro():
     # type: () -> Tuple[Optional[str], Optional[str], Optional[str]]
     distro = None
@@ -3842,6 +4241,7 @@ def get_distro():
                 distro_codename = val.lower()
     return distro, distro_version, distro_codename
 
+
 class Packager(object):
     def __init__(self, stable=None, version=None, branch=None, commit=None):
         assert \
@@ -3969,6 +4369,7 @@ class Apt(Packager):
             logging.info('Podman did not work.  Falling back to docker...')
             self.install(['docker.io'])
 
+
 class YumDnf(Packager):
     DISTRO_NAMES = {
         'centos': ('centos', 'el'),
@@ -4086,17 +4487,10 @@ class YumDnf(Packager):
         if self.distro_code.startswith('el'):
             logger.info('Enabling EPEL...')
             call_throws([self.tool, 'install', '-y', 'epel-release'])
-        if self.distro_code == 'el8':
-            # we also need Ken's copr repo, at least for now
-            logger.info('Enabling supplementary copr repo ktdreyer/ceph-el8...')
-            call_throws(['dnf', 'copr', 'enable', '-y', 'ktdreyer/ceph-el8'])
 
     def rm_repo(self):
         if os.path.exists(self.repo_path()):
             os.unlink(self.repo_path())
-        if self.distro_code == 'el8':
-            logger.info('Disabling supplementary copr repo ktdreyer/ceph-el8...')
-            call_throws(['dnf', 'copr', 'disable', '-y', 'ktdreyer/ceph-el8'])
 
     def install(self, ls):
         logger.info('Installing packages %s...' % ls)
@@ -4234,16 +4628,19 @@ def command_add_repo():
                           commit=args.dev_commit)
     pkg.add_repo()
 
+
 def command_rm_repo():
     pkg = create_packager()
     pkg.rm_repo()
 
+
 def command_install():
     pkg = create_packager()
     pkg.install(args.packages)
 
 ##################################
 
+
 def _get_parser():
     # type: () -> argparse.ArgumentParser
     parser = argparse.ArgumentParser(
@@ -4420,7 +4817,7 @@ def _get_parser():
         help='ceph.keyring to pass through to the container')
     parser_shell.add_argument(
         '--mount', '-m',
-        help='file or directory path that will be mounted in container /mnt')
+        help='mount a file or directory under /mnt in the container')
     parser_shell.add_argument(
         '--env', '-e',
         action='append',
@@ -4538,7 +4935,11 @@ def _get_parser():
     parser_bootstrap.add_argument(
         '--initial-dashboard-password',
         help='Initial password for the initial dashboard user')
-
+    parser_bootstrap.add_argument(
+        '--ssl-dashboard-port',
+        type=int,
+        default = 8443,
+        help='Port number used to connect with dashboard using SSL')
     parser_bootstrap.add_argument(
         '--dashboard-key',
         type=argparse.FileType('r'),
@@ -4560,6 +4961,10 @@ def _get_parser():
         '--ssh-public-key',
         type=argparse.FileType('r'),
         help='SSH public key')
+    parser_bootstrap.add_argument(
+        '--ssh-user',
+        default='root',
+        help='set user for SSHing to cluster hosts, passwordless sudo will be needed for non-root users')
 
     parser_bootstrap.add_argument(
         '--skip-mon-network',
@@ -4613,12 +5018,24 @@ def _get_parser():
         '--apply-spec',
         help='Apply cluster spec after bootstrap (copy ssh key, add hosts and apply services)')
 
-
     parser_bootstrap.add_argument(
         '--shared_ceph_folder',
         metavar='CEPH_SOURCE_FOLDER',
         help='Development mode. Several folders in containers are volumes mapped to different sub-folders in the ceph source folder')
 
+    parser_bootstrap.add_argument(
+        '--registry-url',
+        help='url for custom registry')
+    parser_bootstrap.add_argument(
+        '--registry-username',
+        help='username for custom registry')
+    parser_bootstrap.add_argument(
+        '--registry-password',
+        help='password for custom registry')
+    parser_bootstrap.add_argument(
+        '--registry-json',
+        help='json file with custom registry login info (URL, Username, Password)')
+
     parser_deploy = subparsers.add_parser(
         'deploy', help='deploy a daemon')
     parser_deploy.set_defaults(func=command_deploy)
@@ -4650,6 +5067,9 @@ def _get_parser():
         '--skip-firewalld',
         action='store_true',
         help='Do not configure firewalld')
+    parser_deploy.add_argument(
+        '--tcp-ports',
+        help='List of tcp ports to open in the host firewall')
     parser_deploy.add_argument(
         '--reconfig',
         action='store_true',
@@ -4709,8 +5129,28 @@ def _get_parser():
         default=['cephadm'],
         help='packages')
 
+    parser_registry_login = subparsers.add_parser(
+        'registry-login', help='log host into authenticated registry')
+    parser_registry_login.set_defaults(func=command_registry_login)
+    parser_registry_login.add_argument(
+        '--registry-url',
+        help='url for custom registry')
+    parser_registry_login.add_argument(
+        '--registry-username',
+        help='username for custom registry')
+    parser_registry_login.add_argument(
+        '--registry-password',
+        help='password for custom registry')
+    parser_registry_login.add_argument(
+        '--registry-json',
+        help='json file with custom registry login info (URL, Username, Password)')
+    parser_registry_login.add_argument(
+        '--fsid',
+        help='cluster FSID')
+
     return parser
 
+
 def _parse_args(av):
     parser = _get_parser()
     args = parser.parse_args(av)
@@ -4718,10 +5158,11 @@ def _parse_args(av):
         args.command.pop(0)
     return args
 
+
 if __name__ == "__main__":
     # allow argv to be injected
     try:
-        av = injected_argv # type: ignore
+        av = injected_argv  # type: ignore
     except NameError:
         av = sys.argv[1:]
     args = _parse_args(av)
diff --git a/ceph/src/cephadm/mypy.ini b/ceph/src/cephadm/mypy.ini
deleted file mode 100644 (file)
index 313abc8..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-[mypy]
-ignore_missing_imports = False
diff --git a/ceph/src/cephadm/requirements.txt b/ceph/src/cephadm/requirements.txt
new file mode 100644 (file)
index 0000000..9271687
--- /dev/null
@@ -0,0 +1 @@
+ipaddress ; python_version < '3.3'
index 785aedac7820f102d3b3cff7e4db881f05eb0d8b..ef23a260454fa721f8c1df9cf5b5c9494793c6da 100644 (file)
@@ -90,5 +90,137 @@ default via 10.3.64.1 dev eno1 proto static metric 100
                 '192.168.122.0/24': ['192.168.122.1']}
         ),
     ])
-    def test_parse_ip_route(self, test_input, expected):
-        assert cd._parse_ip_route(test_input) == expected
+    def test_parse_ipv4_route(self, test_input, expected):
+        assert cd._parse_ipv4_route(test_input) == expected
+
+    @pytest.mark.parametrize("test_routes, test_ips, expected", [
+        (
+"""
+::1 dev lo proto kernel metric 256 pref medium
+fdbc:7574:21fe:9200::/64 dev wlp2s0 proto ra metric 600 pref medium
+fdd8:591e:4969:6363::/64 dev wlp2s0 proto ra metric 600 pref medium
+fde4:8dba:82e1::/64 dev eth1 proto kernel metric 256 expires 1844sec pref medium
+fe80::/64 dev tun0 proto kernel metric 256 pref medium
+fe80::/64 dev wlp2s0 proto kernel metric 600 pref medium
+default dev tun0 proto static metric 50 pref medium
+default via fe80::2480:28ec:5097:3fe2 dev wlp2s0 proto ra metric 20600 pref medium
+""",
+"""
+1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
+    inet6 ::1/128 scope host
+       valid_lft forever preferred_lft forever
+2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
+    inet6 fdd8:591e:4969:6363:4c52:cafe:8dd4:dc4/64 scope global temporary dynamic
+       valid_lft 86394sec preferred_lft 14394sec
+    inet6 fdbc:7574:21fe:9200:4c52:cafe:8dd4:dc4/64 scope global temporary dynamic
+       valid_lft 6745sec preferred_lft 3145sec
+    inet6 fdd8:591e:4969:6363:103a:abcd:af1f:57f3/64 scope global temporary deprecated dynamic
+       valid_lft 86394sec preferred_lft 0sec
+    inet6 fdbc:7574:21fe:9200:103a:abcd:af1f:57f3/64 scope global temporary deprecated dynamic
+       valid_lft 6745sec preferred_lft 0sec
+    inet6 fdd8:591e:4969:6363:a128:1234:2bdd:1b6f/64 scope global temporary deprecated dynamic
+       valid_lft 86394sec preferred_lft 0sec
+    inet6 fdbc:7574:21fe:9200:a128:1234:2bdd:1b6f/64 scope global temporary deprecated dynamic
+       valid_lft 6745sec preferred_lft 0sec
+    inet6 fdd8:591e:4969:6363:d581:4321:380b:3905/64 scope global temporary deprecated dynamic
+       valid_lft 86394sec preferred_lft 0sec
+    inet6 fdbc:7574:21fe:9200:d581:4321:380b:3905/64 scope global temporary deprecated dynamic
+       valid_lft 6745sec preferred_lft 0sec
+    inet6 fe80::1111:2222:3333:4444/64 scope link noprefixroute
+       valid_lft forever preferred_lft forever
+    inet6 fde4:8dba:82e1:0:ec4a:e402:e9df:b357/64 scope global temporary dynamic
+       valid_lft 1074sec preferred_lft 1074sec
+    inet6 fde4:8dba:82e1:0:5054:ff:fe72:61af/64 scope global dynamic mngtmpaddr
+       valid_lft 1074sec preferred_lft 1074sec
+12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 state UNKNOWN qlen 100
+    inet6 fe80::cafe:cafe:cafe:cafe/64 scope link stable-privacy
+       valid_lft forever preferred_lft forever
+""",
+            {
+                "::1": ["::1"],
+                "fdbc:7574:21fe:9200::/64": ["fdbc:7574:21fe:9200:4c52:cafe:8dd4:dc4",
+                                             "fdbc:7574:21fe:9200:103a:abcd:af1f:57f3",
+                                             "fdbc:7574:21fe:9200:a128:1234:2bdd:1b6f",
+                                             "fdbc:7574:21fe:9200:d581:4321:380b:3905"],
+                "fdd8:591e:4969:6363::/64": ["fdd8:591e:4969:6363:4c52:cafe:8dd4:dc4",
+                                             "fdd8:591e:4969:6363:103a:abcd:af1f:57f3",
+                                             "fdd8:591e:4969:6363:a128:1234:2bdd:1b6f",
+                                             "fdd8:591e:4969:6363:d581:4321:380b:3905"],
+                "fde4:8dba:82e1::/64": ["fde4:8dba:82e1:0:ec4a:e402:e9df:b357",
+                                        "fde4:8dba:82e1:0:5054:ff:fe72:61af"],
+                "fe80::/64": ["fe80::1111:2222:3333:4444",
+                              "fe80::cafe:cafe:cafe:cafe"]
+            }
+        )])
+    def test_parse_ipv6_route(self, test_routes, test_ips, expected):
+        assert cd._parse_ipv6_route(test_routes, test_ips) == expected
+
+    def test_is_ipv6(self):
+        cd.logger = mock.Mock()
+        for good in ("[::1]", "::1",
+                     "fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"):
+            assert cd.is_ipv6(good)
+        for bad in ("127.0.0.1",
+                    "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffg",
+                    "1:2:3:4:5:6:7:8:9", "fd00::1::1", "[fg::1]"):
+            assert not cd.is_ipv6(bad)
+
+    def test_unwrap_ipv6(self):
+        def unwrap_test(address, expected):
+            assert cd.unwrap_ipv6(address) == expected
+
+        tests = [
+            ('::1', '::1'), ('[::1]', '::1'),
+            ('[fde4:8dba:82e1:0:5054:ff:fe6a:357]', 'fde4:8dba:82e1:0:5054:ff:fe6a:357'),
+            ('can actually be any string', 'can actually be any string'),
+            ('[but needs to be stripped] ', '[but needs to be stripped] ')]
+        for address, expected in tests:
+            unwrap_test(address, expected)
+
+    @mock.patch('cephadm.call_throws')
+    @mock.patch('cephadm.get_parm')
+    def test_registry_login(self, get_parm, call_throws):
+
+        # test normal valid login with url, username and password specified
+        call_throws.return_value = '', '', 0
+        args = cd._parse_args(['registry-login', '--registry-url', 'sample-url', '--registry-username', 'sample-user', '--registry-password', 'sample-pass'])
+        cd.args = args
+        retval = cd.command_registry_login()
+        assert retval == 0
+
+        # test bad login attempt with invalid arguments given
+        args = cd._parse_args(['registry-login', '--registry-url', 'bad-args-url'])
+        cd.args = args
+        with pytest.raises(Exception) as e:
+            assert cd.command_registry_login()
+        assert str(e.value) == ('Invalid custom registry arguments received. To login to a custom registry include '
+                                '--registry-url, --registry-username and --registry-password options or --registry-json option')
+
+        # test normal valid login with json file
+        get_parm.return_value = {"url": "sample-url", "username": "sample-username", "password": "sample-password"}
+        args = cd._parse_args(['registry-login', '--registry-json', 'sample-json'])
+        cd.args = args
+        retval = cd.command_registry_login()
+        assert retval == 0
+
+        # test bad login attempt with bad json file
+        get_parm.return_value = {"bad-json": "bad-json"}
+        args = cd._parse_args(['registry-login', '--registry-json', 'sample-json'])
+        cd.args = args
+        with pytest.raises(Exception) as e:
+            assert cd.command_registry_login()
+        assert str(e.value) == ("json provided for custom registry login did not include all necessary fields. "
+                        "Please setup json file as\n"
+                        "{\n"
+                          " \"url\": \"REGISTRY_URL\",\n"
+                          " \"username\": \"REGISTRY_USERNAME\",\n"
+                          " \"password\": \"REGISTRY_PASSWORD\"\n"
+                        "}\n")
+
+        # test login attempt with valid arguments where login command fails
+        call_throws.side_effect = Exception
+        args = cd._parse_args(['registry-login', '--registry-url', 'sample-url', '--registry-username', 'sample-user', '--registry-password', 'sample-pass'])
+        cd.args = args
+        with pytest.raises(Exception) as e:
+            cd.command_registry_login()
+        assert str(e.value) == "Failed to login to custom registry @ sample-url as sample-user with given password"
index 59d94a4c4c0f84c002189fe1031cde27f1ac6d60..be0ab4ddfd4d9824c94e6bf71033dfd9e82627b9 100644 (file)
@@ -7,9 +7,10 @@ skip_install=true
 deps =
   pytest
   mock
+  -r{toxinidir}/requirements.txt
 commands=pytest {posargs}
 
 [testenv:mypy]
 basepython = python3
-deps = mypy
-commands = mypy {posargs:cephadm}
+deps = mypy==0.782
+commands = mypy --config-file ../mypy.ini {posargs:cephadm}
old mode 100644 (file)
new mode 100755 (executable)
index c84da99..52e8184
@@ -1735,16 +1735,14 @@ int Client::make_request(MetaRequest *request,
     // open a session?
     if (!have_open_session(mds)) {
       session = _get_or_open_mds_session(mds);
-
+      if (session->state == MetaSession::STATE_REJECTED) {
+       request->abort(-EPERM);
+       break;
+      }
       // wait
       if (session->state == MetaSession::STATE_OPENING) {
        ldout(cct, 10) << "waiting for session to mds." << mds << " to open" << dendl;
        wait_on_context_list(session->waiting_for_open);
-        // Abort requests on REJECT from MDS
-        if (rejected_by_mds.count(mds)) {
-          request->abort(-EPERM);
-          break;
-        }
        continue;
       }
 
@@ -2051,20 +2049,6 @@ MetaSession *Client::_open_mds_session(mds_rank_t mds)
   ceph_assert(em.second); /* not already present */
   MetaSession *session = &em.first->second;
 
-  // Maybe skip sending a request to open if this MDS daemon
-  // has previously sent us a REJECT.
-  if (rejected_by_mds.count(mds)) {
-    if (rejected_by_mds[mds] == session->addrs) {
-      ldout(cct, 4) << __func__ << " mds." << mds << " skipping "
-                       "because we were rejected" << dendl;
-      return session;
-    } else {
-      ldout(cct, 4) << __func__ << " mds." << mds << " old inst "
-                       "rejected us, trying with new inst" << dendl;
-      rejected_by_mds.erase(mds);
-    }
-  }
-
   auto m = make_message<MClientSession>(CEPH_SESSION_REQUEST_OPEN);
   m->metadata = metadata;
   m->supported_features = feature_bitset_t(CEPHFS_FEATURES_CLIENT_SUPPORTED);
@@ -2079,16 +2063,21 @@ void Client::_close_mds_session(MetaSession *s)
   s->con->send_message2(make_message<MClientSession>(CEPH_SESSION_REQUEST_CLOSE, s->seq));
 }
 
-void Client::_closed_mds_session(MetaSession *s)
+void Client::_closed_mds_session(MetaSession *s, int err, bool rejected)
 {
   ldout(cct, 5) << __func__ << " mds." << s->mds_num << " seq " << s->seq << dendl;
-  s->state = MetaSession::STATE_CLOSED;
+  if (rejected && s->state != MetaSession::STATE_CLOSING)
+    s->state = MetaSession::STATE_REJECTED;
+  else
+    s->state = MetaSession::STATE_CLOSED;
   s->con->mark_down();
   signal_context_list(s->waiting_for_open);
   mount_cond.notify_all();
-  remove_session_caps(s);
+  remove_session_caps(s, err);
   kick_requests_closed(s);
-  mds_sessions.erase(s->mds_num);
+  mds_ranks_closing.erase(s->mds_num);
+  if (s->state == MetaSession::STATE_CLOSED)
+    mds_sessions.erase(s->mds_num);
 }
 
 void Client::handle_client_session(const MConstRef<MClientSession>& m)
@@ -2110,9 +2099,8 @@ void Client::handle_client_session(const MConstRef<MClientSession>& m)
       if (!missing_features.empty()) {
        lderr(cct) << "mds." << from << " lacks required features '"
                   << missing_features << "', closing session " << dendl;
-       rejected_by_mds[session->mds_num] = session->addrs;
        _close_mds_session(session);
-       _closed_mds_session(session);
+       _closed_mds_session(session, -EPERM, true);
        break;
       }
       session->mds_features = std::move(m->supported_features);
@@ -2175,8 +2163,7 @@ void Client::handle_client_session(const MConstRef<MClientSession>& m)
        error_str = "unknown error";
       lderr(cct) << "mds." << from << " rejected us (" << error_str << ")" << dendl;
 
-      rejected_by_mds[session->mds_num] = session->addrs;
-      _closed_mds_session(session);
+      _closed_mds_session(session, -EPERM, true);
     }
     break;
 
@@ -2204,6 +2191,10 @@ void Client::_kick_stale_sessions()
 
   for (auto it = mds_sessions.begin(); it != mds_sessions.end(); ) {
     MetaSession &s = it->second;
+    if (s.state == MetaSession::STATE_REJECTED) {
+      mds_sessions.erase(it++);
+      continue;
+    }
     ++it;
     if (s.state == MetaSession::STATE_STALE)
       _closed_mds_session(&s);
@@ -3231,8 +3222,10 @@ void Client::put_cap_ref(Inode *in, int cap)
   }
 }
 
-int Client::get_caps(Inode *in, int need, int want, int *phave, loff_t endoff)
+int Client::get_caps(Fh *fh, int need, int want, int *phave, loff_t endoff)
 {
+  Inode *in = fh->inode.get();
+
   int r = check_pool_perm(in, need);
   if (r < 0)
     return r;
@@ -3246,6 +3239,12 @@ int Client::get_caps(Inode *in, int need, int want, int *phave, loff_t endoff)
       return -EBADF;
     }
 
+    if ((fh->mode & CEPH_FILE_MODE_WR) && fh->gen != fd_gen)
+      return -EBADF;
+
+    if ((in->flags & I_ERROR_FILELOCK) && fh->has_any_filelocks())
+      return -EIO;
+
     int implemented;
     int have = in->caps_issued(&implemented);
 
@@ -4160,7 +4159,7 @@ void Client::remove_all_caps(Inode *in)
     remove_cap(&in->caps.begin()->second, true);
 }
 
-void Client::remove_session_caps(MetaSession *s)
+void Client::remove_session_caps(MetaSession *s, int err)
 {
   ldout(cct, 10) << __func__ << " mds." << s->mds_num << dendl;
 
@@ -4172,7 +4171,10 @@ void Client::remove_session_caps(MetaSession *s)
       dirty_caps = in->dirty_caps | in->flushing_caps;
       in->wanted_max_size = 0;
       in->requested_max_size = 0;
+      if (in->has_any_filelocks())
+       in->flags |= I_ERROR_FILELOCK;
     }
+    auto caps = cap->implemented;
     if (cap->wanted | cap->issued)
       in->flags |= I_CAP_DROPPED;
     remove_cap(cap, false);
@@ -4187,6 +4189,20 @@ void Client::remove_session_caps(MetaSession *s)
       in->mark_caps_clean();
       put_inode(in.get());
     }
+    caps &= CEPH_CAP_FILE_CACHE | CEPH_CAP_FILE_BUFFER;
+    if (caps && !in->caps_issued_mask(caps, true)) {
+      if (err == -EBLACKLISTED) {
+       if (in->oset.dirty_or_tx) {
+         lderr(cct) << __func__ << " still has dirty data on " << *in << dendl;
+         in->set_async_err(err);
+       }
+       objectcacher->purge_set(&in->oset);
+      } else {
+       objectcacher->release_set(&in->oset);
+      }
+      _schedule_invalidate_callback(in.get(), 0, 0);
+    }
+
     signal_cond_list(in->waitfor_caps);
   }
   s->flushing_caps_tids.clear();
@@ -6023,18 +6039,39 @@ int Client::mount(const std::string &mount_root, const UserPerm& perms,
 
 void Client::_close_sessions()
 {
+  for (auto it = mds_sessions.begin(); it != mds_sessions.end(); ) {
+    if (it->second.state == MetaSession::STATE_REJECTED)
+      mds_sessions.erase(it++);
+    else
+      ++it;
+  }
+
   while (!mds_sessions.empty()) {
     // send session closes!
     for (auto &p : mds_sessions) {
       if (p.second.state != MetaSession::STATE_CLOSING) {
        _close_mds_session(&p.second);
+       mds_ranks_closing.insert(p.first);
       }
     }
 
     // wait for sessions to close
-    ldout(cct, 2) << "waiting for " << mds_sessions.size() << " mds sessions to close" << dendl;
+    double timo = cct->_conf.get_val<std::chrono::seconds>("client_shutdown_timeout").count();
+    ldout(cct, 2) << "waiting for " << mds_ranks_closing.size() << " mds session(s) to close (timeout: "
+                  << timo << "s)" << dendl;
     std::unique_lock l{client_lock, std::adopt_lock};
-    mount_cond.wait(l);
+    if (!timo) {
+      mount_cond.wait(l);
+    } else if (!mount_cond.wait_for(l, ceph::make_timespan(timo), [this] { return mds_ranks_closing.empty(); })) {
+      ldout(cct, 1) << mds_ranks_closing.size() << " mds(s) did not respond to session close -- timing out." << dendl;
+      while (!mds_ranks_closing.empty()) {
+        auto session = mds_sessions.at(*mds_ranks_closing.begin());
+        // this prunes entry from mds_sessions and mds_ranks_closing
+        _closed_mds_session(&session, -ETIMEDOUT);
+      }
+    }
+
+    mds_ranks_closing.clear();
     l.release();
   }
 }
@@ -6084,7 +6121,7 @@ void Client::_abort_mds_sessions(int err)
   // Force-close all sessions
   while(!mds_sessions.empty()) {
     auto& session = mds_sessions.begin()->second;
-    _closed_mds_session(&session);
+    _closed_mds_session(&session, err);
   }
 }
 
@@ -6309,6 +6346,16 @@ void Client::tick()
   }
 
   trim_cache(true);
+
+  if (blacklisted && mounted &&
+      last_auto_reconnect + 30 * 60 < now &&
+      cct->_conf.get_val<bool>("client_reconnect_stale")) {
+    messenger->client_reset();
+    fd_gen++; // invalidate open files
+    blacklisted = false;
+    _kick_stale_sessions();
+    last_auto_reconnect = now;
+  }
 }
 
 void Client::renew_caps()
@@ -8741,7 +8788,7 @@ int Client::lookup_name(Inode *ino, Inode *parent, const UserPerm& perms)
 Fh *Client::_create_fh(Inode *in, int flags, int cmode, const UserPerm& perms)
 {
   ceph_assert(in);
-  Fh *f = new Fh(in, flags, cmode, perms);
+  Fh *f = new Fh(in, flags, cmode, fd_gen, perms);
 
   ldout(cct, 10) << __func__ << " " << in->ino << " mode " << cmode << dendl;
 
@@ -8869,7 +8916,8 @@ int Client::_open(Inode *in, int flags, mode_t mode, Fh **fhp,
       if (cmode & CEPH_FILE_MODE_RD)
         need |= CEPH_CAP_FILE_RD;
 
-      result = get_caps(in, need, want, &have, -1);
+      Fh fh(in, flags, cmode, fd_gen, perms);
+      result = get_caps(&fh, need, want, &have, -1);
       if (result < 0) {
        ldout(cct, 8) << "Unable to get caps after open of inode " << *in <<
                          " . Denying open: " <<
@@ -9130,7 +9178,7 @@ int Client::uninline_data(Inode *in, Context *onfinish)
 
 int Client::read(int fd, char *buf, loff_t size, loff_t offset)
 {
-  std::lock_guard lock(client_lock);
+  std::unique_lock lock(client_lock);
   tout(cct) << "read" << std::endl;
   tout(cct) << fd << std::endl;
   tout(cct) << size << std::endl;
@@ -9152,6 +9200,7 @@ int Client::read(int fd, char *buf, loff_t size, loff_t offset)
   int r = _read(f, offset, size, &bl);
   ldout(cct, 3) << "read(" << fd << ", " << (void*)buf << ", " << size << ", " << offset << ") = " << r << dendl;
   if (r >= 0) {
+    lock.unlock();
     bl.begin().copy(bl.length(), buf);
     r = bl.length();
   }
@@ -9200,7 +9249,7 @@ retry:
     want = CEPH_CAP_FILE_CACHE | CEPH_CAP_FILE_LAZYIO;
   else
     want = CEPH_CAP_FILE_CACHE;
-  r = get_caps(in, CEPH_CAP_FILE_RD, want, &have, -1);
+  r = get_caps(f, CEPH_CAP_FILE_RD, want, &have, -1);
   if (r < 0) {
     goto done;
   }
@@ -9630,7 +9679,7 @@ int64_t Client::_write(Fh *f, int64_t offset, uint64_t size, const char *buf,
     want = CEPH_CAP_FILE_BUFFER | CEPH_CAP_FILE_LAZYIO;
   else
     want = CEPH_CAP_FILE_BUFFER;
-  int r = get_caps(in, CEPH_CAP_FILE_WR|CEPH_CAP_AUTH_SHARED, want, &have, endoff);
+  int r = get_caps(f, CEPH_CAP_FILE_WR|CEPH_CAP_AUTH_SHARED, want, &have, endoff);
   if (r < 0)
     return r;
 
@@ -9719,9 +9768,11 @@ int64_t Client::_write(Fh *f, int64_t offset, uint64_t size, const char *buf,
                       in->truncate_size, in->truncate_seq,
                       &onfinish);
     client_lock.unlock();
-    onfinish.wait();
+    r = onfinish.wait();
     client_lock.lock();
     _sync_write_commit(in);
+    if (r < 0)
+      goto done;
   }
 
   // if we get here, write was successful, update client metadata
@@ -10168,6 +10219,9 @@ int Client::_do_filelock(Inode *in, Fh *fh, int lock_type, int op, int sleep,
                 << " type " << fl->l_type << " owner " << owner
                 << " " << fl->l_start << "~" << fl->l_len << dendl;
 
+  if (in->flags & I_ERROR_FILELOCK)
+    return -EIO;
+
   int lock_cmd;
   if (F_RDLCK == fl->l_type)
     lock_cmd = CEPH_LOCK_SHARED;
@@ -10341,30 +10395,39 @@ void Client::_release_filelocks(Fh *fh)
   Inode *in = fh->inode.get();
   ldout(cct, 10) << __func__ << " " << fh << " ino " << in->ino << dendl;
 
+  list<ceph_filelock> activated_locks;
+
   list<pair<int, ceph_filelock> > to_release;
 
   if (fh->fcntl_locks) {
     auto &lock_state = fh->fcntl_locks;
-    for(multimap<uint64_t, ceph_filelock>::iterator p = lock_state->held_locks.begin();
-       p != lock_state->held_locks.end();
-       ++p)
-      to_release.push_back(pair<int, ceph_filelock>(CEPH_LOCK_FCNTL, p->second));
+    for(auto p = lock_state->held_locks.begin(); p != lock_state->held_locks.end(); ) {
+      auto q = p++;
+      if (in->flags & I_ERROR_FILELOCK) {
+       lock_state->remove_lock(q->second, activated_locks);
+      } else {
+       to_release.push_back(pair<int, ceph_filelock>(CEPH_LOCK_FCNTL, q->second));
+      }
+    }
     lock_state.reset();
   }
   if (fh->flock_locks) {
     auto &lock_state = fh->flock_locks;
-    for(multimap<uint64_t, ceph_filelock>::iterator p = lock_state->held_locks.begin();
-       p != lock_state->held_locks.end();
-       ++p)
-      to_release.push_back(pair<int, ceph_filelock>(CEPH_LOCK_FLOCK, p->second));
+    for(auto p = lock_state->held_locks.begin(); p != lock_state->held_locks.end(); ) {
+      auto q = p++;
+      if (in->flags & I_ERROR_FILELOCK) {
+       lock_state->remove_lock(q->second, activated_locks);
+      } else {
+       to_release.push_back(pair<int, ceph_filelock>(CEPH_LOCK_FLOCK, q->second));
+      }
+    }
     lock_state.reset();
   }
 
-  if (to_release.empty())
-    return;
+  if ((in->flags & I_ERROR_FILELOCK) && !in->has_any_filelocks())
+    in->flags &= ~I_ERROR_FILELOCK;
 
-  // mds has already released filelocks if session was closed.
-  if (in->caps.empty())
+  if (to_release.empty())
     return;
 
   struct flock fl;
@@ -10748,6 +10811,7 @@ Inode *Client::open_snapdir(Inode *diri)
     in->mtime = diri->mtime;
     in->ctime = diri->ctime;
     in->btime = diri->btime;
+    in->atime = diri->atime;
     in->size = diri->size;
     in->change_attr = diri->change_attr;
 
@@ -11565,6 +11629,12 @@ int Client::_setxattr(Inode *in, const char *name, const void *value,
     return -EROFS;
   }
 
+  if (size == 0) {
+    value = "";
+  } else if (value == NULL) {
+      return -EINVAL;
+  }
+
   bool posix_acl_xattr = false;
   if (acl_type == POSIX_ACL)
     posix_acl_xattr = !strncmp(name, "system.", 7);
@@ -11798,7 +11868,8 @@ int Client::ll_removexattr(Inode *in, const char *name, const UserPerm& perms)
 bool Client::_vxattrcb_quota_exists(Inode *in)
 {
   return in->quota.is_enable() &&
-        in->snaprealm && in->snaprealm->ino == in->ino;
+   (in->snapid != CEPH_NOSNAP ||
+    (in->snaprealm && in->snaprealm->ino == in->ino));
 }
 size_t Client::_vxattrcb_quota(Inode *in, char *val, size_t size)
 {
@@ -13322,7 +13393,10 @@ int Client::ll_read(Fh *fh, loff_t off, loff_t len, bufferlist *bl)
 
   /* We can't return bytes written larger than INT_MAX, clamp len to that */
   len = std::min(len, (loff_t)INT_MAX);
-  return _read(fh, off, len, bl);
+  int r = _read(fh, off, len, bl);
+  ldout(cct, 3) << "ll_read " << fh << " " << off << "~" << len << " = " << r
+               << dendl;
+  return r;
 }
 
 int Client::ll_read_block(Inode *in, uint64_t blockid,
@@ -13564,7 +13638,7 @@ int Client::_fallocate(Fh *fh, int mode, int64_t offset, int64_t length)
   }
 
   int have;
-  int r = get_caps(in, CEPH_CAP_FILE_WR, CEPH_CAP_FILE_BUFFER, &have, -1);
+  int r = get_caps(fh, CEPH_CAP_FILE_WR, CEPH_CAP_FILE_BUFFER, &have, -1);
   if (r < 0)
     return r;
 
@@ -14110,8 +14184,7 @@ void Client::ms_handle_remote_reset(Connection *con)
        case MetaSession::STATE_OPEN:
          {
            objecter->maybe_request_map(); /* to check if we are blacklisted */
-           const auto& conf = cct->_conf;
-           if (conf->client_reconnect_stale) {
+           if (cct->_conf.get_val<bool>("client_reconnect_stale")) {
              ldout(cct, 1) << "reset from mds we were open; close mds session for reconnect" << dendl;
              _closed_mds_session(s);
            } else {
@@ -14493,14 +14566,14 @@ int Client::start_reclaim(const std::string& uuid, unsigned flags,
     MetaSession *session;
     if (!have_open_session(mds)) {
       session = _get_or_open_mds_session(mds);
+      if (session->state == MetaSession::STATE_REJECTED)
+       return -EPERM;
       if (session->state != MetaSession::STATE_OPENING) {
        // umounting?
        return -EINVAL;
       }
       ldout(cct, 10) << "waiting for session to mds." << mds << " to open" << dendl;
       wait_on_context_list(session->waiting_for_open);
-      if (rejected_by_mds.count(mds))
-       return -EPERM;
       continue;
     }
 
index a927d85b1505b109e9556e6ee5b281df6952932f..1b85421c92317aea7bd5e396b4d5e6857a606ae2 100644 (file)
@@ -627,14 +627,14 @@ public:
                      inodeno_t realm, int flags, const UserPerm& perms);
   void remove_cap(Cap *cap, bool queue_release);
   void remove_all_caps(Inode *in);
-  void remove_session_caps(MetaSession *session);
+  void remove_session_caps(MetaSession *session, int err);
   int mark_caps_flushing(Inode *in, ceph_tid_t *ptid);
   void adjust_session_flushing_caps(Inode *in, MetaSession *old_s, MetaSession *new_s);
   void flush_caps_sync();
   void kick_flushing_caps(Inode *in, MetaSession *session);
   void kick_flushing_caps(MetaSession *session);
   void early_kick_flushing_caps(MetaSession *session);
-  int get_caps(Inode *in, int need, int want, int *have, loff_t endoff);
+  int get_caps(Fh *fh, int need, int want, int *have, loff_t endoff);
   int get_caps_used(Inode *in);
 
   void maybe_update_snaprealm(SnapRealm *realm, snapid_t snap_created, snapid_t snap_highwater,
@@ -766,7 +766,7 @@ protected:
   MetaSession *_get_or_open_mds_session(mds_rank_t mds);
   MetaSession *_open_mds_session(mds_rank_t mds);
   void _close_mds_session(MetaSession *s);
-  void _closed_mds_session(MetaSession *s);
+  void _closed_mds_session(MetaSession *s, int err=0, bool rejected=false);
   bool _any_stale_sessions() const;
   void _kick_stale_sessions();
   void handle_client_session(const MConstRef<MClientSession>& m);
@@ -1212,6 +1212,7 @@ private:
 
   // mds sessions
   map<mds_rank_t, MetaSession> mds_sessions;  // mds -> push seq
+  std::set<mds_rank_t> mds_ranks_closing;  // mds ranks currently tearing down sessions
   std::list<ceph::condition_variable*> waiting_for_mdsmap;
 
   // FSMap, for when using mds_command
@@ -1232,6 +1233,7 @@ private:
   ceph::unordered_map<int, Fh*> fd_map;
   set<Fh*> ll_unclosed_fh_set;
   ceph::unordered_set<dir_result_t*> opened_dirs;
+  uint64_t fd_gen = 1;
 
   bool   initialized = false;
   bool   mounted = false;
@@ -1244,12 +1246,6 @@ private:
   ino_t last_used_faked_ino;
   ino_t last_used_faked_root;
 
-  // When an MDS has sent us a REJECT, remember that and don't
-  // contact it again.  Remember which inst rejected us, so that
-  // when we talk to another inst with the same rank we can
-  // try again.
-  std::map<mds_rank_t, entity_addrvec_t> rejected_by_mds;
-
   int local_osd = -ENXIO;
   epoch_t local_osd_epoch = 0;
 
@@ -1269,6 +1265,8 @@ private:
   ceph::unordered_map<inodeno_t,SnapRealm*> snap_realms;
   std::map<std::string, std::string> metadata;
 
+  utime_t last_auto_reconnect;
+
   // trace generation
   ofstream traceout;
 
index a51dca3121ad876f19140cfe2212821f023dda36..62bd261404e213f626dc647f30757b6dc9da62e3 100644 (file)
@@ -18,9 +18,9 @@
 
 #include "Fh.h"
 
-Fh::Fh(InodeRef in, int flags, int cmode, const UserPerm &perms) :
-    inode(in), _ref(1), pos(0), mds(0), mode(cmode), flags(flags), pos_locked(false),
-    actor_perms(perms), readahead()
+Fh::Fh(InodeRef in, int flags, int cmode, uint64_t _gen, const UserPerm &perms) :
+    inode(in), _ref(1), pos(0), mds(0), mode(cmode), gen(_gen), flags(flags),
+    pos_locked(false), actor_perms(perms), readahead()
 {
   inode->add_fh(this);
 }
index eae96037e74325d5af7db2f5d6f5ca79de4e8891..c3355ba6c52660930227e6e1b5a5c7a02a7a0d88 100644 (file)
@@ -17,6 +17,7 @@ struct Fh {
   loff_t    pos;
   int       mds;        // have to talk to mds we opened with (for now)
   int       mode;       // the mode i opened the file with
+  uint64_t  gen;
 
   int flags;
   bool pos_locked;           // pos is currently in use
@@ -30,6 +31,12 @@ struct Fh {
   std::unique_ptr<ceph_lock_state_t> fcntl_locks;
   std::unique_ptr<ceph_lock_state_t> flock_locks;
 
+  bool has_any_filelocks() {
+    return
+      (fcntl_locks && !fcntl_locks->empty()) ||
+      (flock_locks && !flock_locks->empty());
+  }
+
   // IO error encountered by any writeback on this Inode while
   // this Fh existed (i.e. an fsync on another Fh will still show
   // up as an async_err here because it could have been the same
@@ -44,7 +51,7 @@ struct Fh {
   }
 
   Fh() = delete;
-  Fh(InodeRef in, int flags, int cmode, const UserPerm &perms);
+  Fh(InodeRef in, int flags, int cmode, uint64_t gen, const UserPerm &perms);
   ~Fh();
 
   void get() { ++_ref; }
index 42dbddc97ec856ef8becf209c22efb25e443c77e..afaf64e0515ce36811abdf72cd068d11b9a1982e 100644 (file)
@@ -109,11 +109,12 @@ struct CapSnap {
 };
 
 // inode flags
-#define I_COMPLETE     1
-#define I_DIR_ORDERED  2
-#define I_CAP_DROPPED  4
-#define I_SNAPDIR_OPEN 8
-#define I_KICK_FLUSH   16
+#define I_COMPLETE             (1 << 0)
+#define I_DIR_ORDERED          (1 << 1)
+#define I_SNAPDIR_OPEN         (1 << 2)
+#define I_KICK_FLUSH           (1 << 3)
+#define I_CAP_DROPPED          (1 << 4)
+#define I_ERROR_FILELOCK       (1 << 5)
 
 struct Inode {
   Client *client;
@@ -258,6 +259,12 @@ struct Inode {
   std::unique_ptr<ceph_lock_state_t> fcntl_locks;
   std::unique_ptr<ceph_lock_state_t> flock_locks;
 
+  bool has_any_filelocks() {
+    return
+      (fcntl_locks && !fcntl_locks->empty()) ||
+      (flock_locks && !flock_locks->empty());
+  }
+
   list<Delegation> delegations;
 
   xlist<MetaRequest*> unsafe_ops;
index 94881c370cac3d78488df5bf69beeeeb04ecd576..c0901305a810481a61181764a3bf7b799b4973a0 100644 (file)
@@ -33,6 +33,7 @@ struct MetaSession {
     STATE_CLOSING,
     STATE_CLOSED,
     STATE_STALE,
+    STATE_REJECTED,
   } state;
 
   enum {
index bdc3f78433246eae219a412123b64e4cf216699b..cba9a2d73492ad029614bd3b5a83d91cd134c091 100644 (file)
@@ -1795,7 +1795,9 @@ static int rgw_bucket_unlink_instance(cls_method_context_t hctx, bufferlist *in,
       olh.update(next_key, next.is_delete_marker());
       olh.update_log(CLS_RGW_OLH_OP_LINK_OLH, op.op_tag, next_key, next.is_delete_marker());
     } else {
-      /* next_key is empty */
+      // next_key is empty, but we need to preserve its name in case this entry
+      // gets resharded, because this key is used for hash placement
+      next_key.name = dest_key.name;
       olh.update(next_key, false);
       olh.update_log(CLS_RGW_OLH_OP_UNLINK_OLH, op.op_tag, next_key, false);
       olh.set_exists(false);
@@ -3660,7 +3662,7 @@ static int rgw_cls_lc_get_entry(cls_method_context_t hctx, bufferlist *in, buffe
     return -EINVAL;
   }
 
-  rgw_lc_entry_t lc_entry;
+  cls_rgw_lc_entry lc_entry;
   int ret = read_omap_entry(hctx, op.marker, &lc_entry);
   if (ret < 0)
     return ret;
@@ -3686,7 +3688,7 @@ static int rgw_cls_lc_set_entry(cls_method_context_t hctx, bufferlist *in, buffe
   bufferlist bl;
   encode(op.entry, bl);
 
-  int ret = cls_cxx_map_set_val(hctx, op.entry.first, &bl);
+  int ret = cls_cxx_map_set_val(hctx, op.entry.bucket, &bl);
   return ret;
 }
 
@@ -3702,7 +3704,7 @@ static int rgw_cls_lc_rm_entry(cls_method_context_t hctx, bufferlist *in, buffer
     return -EINVAL;
   }
 
-  int ret = cls_cxx_map_remove_key(hctx, op.entry.first);
+  int ret = cls_cxx_map_remove_key(hctx, op.entry.bucket);
   return ret;
 }
 
@@ -3725,7 +3727,7 @@ static int rgw_cls_lc_get_next_entry(cls_method_context_t hctx, bufferlist *in,
   if (ret < 0)
     return ret;
   map<string, bufferlist>::iterator it;
-  pair<string, int> entry;
+  cls_rgw_lc_entry entry;
   if (!vals.empty()) {
     it=vals.begin();
     in_iter = it->second.begin();
@@ -3741,7 +3743,8 @@ static int rgw_cls_lc_get_next_entry(cls_method_context_t hctx, bufferlist *in,
   return 0;
 }
 
-static int rgw_cls_lc_list_entries(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
+static int rgw_cls_lc_list_entries(cls_method_context_t hctx, bufferlist *in,
+                                  bufferlist *out)
 {
   cls_rgw_lc_list_entries_op op;
   auto in_iter = in->cbegin();
@@ -3752,24 +3755,34 @@ static int rgw_cls_lc_list_entries(cls_method_context_t hctx, bufferlist *in, bu
     return -EINVAL;
   }
 
-  cls_rgw_lc_list_entries_ret op_ret;
+  cls_rgw_lc_list_entries_ret op_ret(op.compat_v);
   bufferlist::const_iterator iter;
   map<string, bufferlist> vals;
   string filter_prefix;
-  int ret = cls_cxx_map_get_vals(hctx, op.marker, filter_prefix, op.max_entries, &vals, &op_ret.is_truncated);
+  int ret = cls_cxx_map_get_vals(hctx, op.marker, filter_prefix, op.max_entries,
+                                &vals, &op_ret.is_truncated);
   if (ret < 0)
     return ret;
   map<string, bufferlist>::iterator it;
-  pair<string, int> entry;
-  for (it = vals.begin(); it != vals.end(); ++it) {
+  for (auto it = vals.begin(); it != vals.end(); ++it) {
+    cls_rgw_lc_entry entry;
     iter = it->second.cbegin();
     try {
-    decode(entry, iter);
+      decode(entry, iter);
     } catch (buffer::error& err) {
-    CLS_LOG(1, "ERROR: rgw_cls_lc_list_entries(): failed to decode entry\n");
-    return -EIO;
-   }
-   op_ret.entries.insert(entry);
+      /* try backward compat */
+      pair<string, int> oe;
+      try {
+       iter = it->second.begin();
+       decode(oe, iter);
+       entry = {oe.first, 0 /* start */, uint32_t(oe.second)};
+      } catch(buffer::error& err) {
+       CLS_LOG(
+         1, "ERROR: rgw_cls_lc_list_entries(): failed to decode entry\n");
+       return -EIO;
+      }
+    }
+   op_ret.entries.push_back(entry);
   }
   encode(op_ret, *out);
   return 0;
index 65e59047ebada1547a95de8a50061080f6af42e0..182897ab4323d8b045d6b9e19655d80c14019143 100644 (file)
@@ -839,7 +839,8 @@ int cls_rgw_lc_put_head(IoCtx& io_ctx, const string& oid, cls_rgw_lc_obj_head& h
   return r;
 }
 
-int cls_rgw_lc_get_next_entry(IoCtx& io_ctx, const string& oid, string& marker, pair<string, int>& entry)
+int cls_rgw_lc_get_next_entry(IoCtx& io_ctx, const string& oid, string& marker,
+                             cls_rgw_lc_entry& entry)
 {
   bufferlist in, out;
   cls_rgw_lc_get_next_entry_op call;
@@ -861,7 +862,8 @@ int cls_rgw_lc_get_next_entry(IoCtx& io_ctx, const string& oid, string& marker,
  return r;
 }
 
-int cls_rgw_lc_rm_entry(IoCtx& io_ctx, const string& oid, const pair<string, int>& entry)
+int cls_rgw_lc_rm_entry(IoCtx& io_ctx, const string& oid,
+                       const cls_rgw_lc_entry& entry)
 {
   bufferlist in, out;
   cls_rgw_lc_rm_entry_op call;
@@ -871,7 +873,8 @@ int cls_rgw_lc_rm_entry(IoCtx& io_ctx, const string& oid, const pair<string, int
  return r;
 }
 
-int cls_rgw_lc_set_entry(IoCtx& io_ctx, const string& oid, const pair<string, int>& entry)
+int cls_rgw_lc_set_entry(IoCtx& io_ctx, const string& oid,
+                        const cls_rgw_lc_entry& entry)
 {
   bufferlist in, out;
   cls_rgw_lc_set_entry_op call;
@@ -881,7 +884,8 @@ int cls_rgw_lc_set_entry(IoCtx& io_ctx, const string& oid, const pair<string, in
   return r;
 }
 
-int cls_rgw_lc_get_entry(IoCtx& io_ctx, const string& oid, const std::string& marker, rgw_lc_entry_t& entry)
+int cls_rgw_lc_get_entry(IoCtx& io_ctx, const string& oid,
+                        const std::string& marker, cls_rgw_lc_entry& entry)
 {
   bufferlist in, out;
   cls_rgw_lc_get_entry_op call{marker};;
@@ -907,7 +911,7 @@ int cls_rgw_lc_get_entry(IoCtx& io_ctx, const string& oid, const std::string& ma
 int cls_rgw_lc_list(IoCtx& io_ctx, const string& oid,
                     const string& marker,
                     uint32_t max_entries,
-                    map<string, int>& entries)
+                    vector<cls_rgw_lc_entry>& entries)
 {
   bufferlist in, out;
   cls_rgw_lc_list_entries_op op;
@@ -930,9 +934,12 @@ int cls_rgw_lc_list(IoCtx& io_ctx, const string& oid,
   } catch (buffer::error& err) {
     return -EIO;
   }
-  entries.insert(ret.entries.begin(),ret.entries.end());
 
- return r;
+  std::sort(std::begin(ret.entries), std::end(ret.entries),
+           [](const cls_rgw_lc_entry& a, const cls_rgw_lc_entry& b)
+             { return a.bucket < b.bucket; });
+  entries = std::move(ret.entries);
+  return r;
 }
 
 void cls_rgw_reshard_add(librados::ObjectWriteOperation& op, const cls_rgw_reshard_entry& entry)
index bd13710e86686b29484ae64d4e55533f279d38df..c68703c6958f7c60091d542ddf1b5ec0926d0b8a 100644 (file)
@@ -607,14 +607,14 @@ int cls_rgw_gc_list(librados::IoCtx& io_ctx, string& oid, string& marker, uint32
 #ifndef CLS_CLIENT_HIDE_IOCTX
 int cls_rgw_lc_get_head(librados::IoCtx& io_ctx, const string& oid, cls_rgw_lc_obj_head& head);
 int cls_rgw_lc_put_head(librados::IoCtx& io_ctx, const string& oid, cls_rgw_lc_obj_head& head);
-int cls_rgw_lc_get_next_entry(librados::IoCtx& io_ctx, const string& oid, string& marker, pair<string, int>& entry);
-int cls_rgw_lc_rm_entry(librados::IoCtx& io_ctx, const string& oid, const pair<string, int>& entry);
-int cls_rgw_lc_set_entry(librados::IoCtx& io_ctx, const string& oid, const pair<string, int>& entry);
-int cls_rgw_lc_get_entry(librados::IoCtx& io_ctx, const string& oid, const std::string& marker, rgw_lc_entry_t& entry);
+int cls_rgw_lc_get_next_entry(librados::IoCtx& io_ctx, const string& oid, string& marker, cls_rgw_lc_entry& entry);
+int cls_rgw_lc_rm_entry(librados::IoCtx& io_ctx, const string& oid, const cls_rgw_lc_entry& entry);
+int cls_rgw_lc_set_entry(librados::IoCtx& io_ctx, const string& oid, const cls_rgw_lc_entry& entry);
+int cls_rgw_lc_get_entry(librados::IoCtx& io_ctx, const string& oid, const std::string& marker, cls_rgw_lc_entry& entry);
 int cls_rgw_lc_list(librados::IoCtx& io_ctx, const string& oid,
                     const string& marker,
                     uint32_t max_entries,
-                    map<string, int>& entries);
+                    vector<cls_rgw_lc_entry>& entries);
 #endif
 
 /* resharding */
index d752118b2fb19d0cd7b2f130298356d1d3bf8082..873acf070d8fd2a845b2344e236e9afd485f477c 100644 (file)
@@ -1030,21 +1030,26 @@ struct cls_rgw_lc_get_next_entry_op {
 };
 WRITE_CLASS_ENCODER(cls_rgw_lc_get_next_entry_op)
 
-using rgw_lc_entry_t = std::pair<std::string, int>;
-
 struct cls_rgw_lc_get_next_entry_ret {
-  rgw_lc_entry_t entry;
+  cls_rgw_lc_entry entry;
+
   cls_rgw_lc_get_next_entry_ret() {}
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 2, bl);
     encode(entry, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(1, bl);
-    decode(entry, bl);
+    DECODE_START(2, bl);
+    if (struct_v < 2) {
+      std::pair<std::string, int> oe;
+      decode(oe, bl);
+      entry = {oe.first, 0 /* start */, uint32_t(oe.second)};
+    } else {
+      decode(entry, bl);
+    }
     DECODE_FINISH(bl);
   }
 
@@ -1071,9 +1076,11 @@ struct cls_rgw_lc_get_entry_op {
 WRITE_CLASS_ENCODER(cls_rgw_lc_get_entry_op)
 
 struct cls_rgw_lc_get_entry_ret {
-  rgw_lc_entry_t entry;
+  cls_rgw_lc_entry entry;
+
   cls_rgw_lc_get_entry_ret() {}
-  cls_rgw_lc_get_entry_ret(rgw_lc_entry_t&& _entry) : entry(std::move(_entry)) {}
+  cls_rgw_lc_get_entry_ret(cls_rgw_lc_entry&& _entry)
+    : entry(std::move(_entry)) {}
 
   void encode(bufferlist& bl) const {
     ENCODE_START(1, 1, bl);
@@ -1090,38 +1097,49 @@ struct cls_rgw_lc_get_entry_ret {
 };
 WRITE_CLASS_ENCODER(cls_rgw_lc_get_entry_ret)
 
-
 struct cls_rgw_lc_rm_entry_op {
-  rgw_lc_entry_t entry;
+  cls_rgw_lc_entry entry;
   cls_rgw_lc_rm_entry_op() {}
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 2, bl);
     encode(entry, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(1, bl);
-    decode(entry, bl);
+    DECODE_START(2, bl);
+    if (struct_v < 2) {
+      std::pair<std::string, int> oe;
+      decode(oe, bl);
+      entry = {oe.first, 0 /* start */, uint32_t(oe.second)};
+    } else {
+      decode(entry, bl);
+    }
     DECODE_FINISH(bl);
   }
 };
 WRITE_CLASS_ENCODER(cls_rgw_lc_rm_entry_op)
 
 struct cls_rgw_lc_set_entry_op {
-  rgw_lc_entry_t entry;
+  cls_rgw_lc_entry entry;
   cls_rgw_lc_set_entry_op() {}
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 2, bl);
     encode(entry, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(1, bl);
-    decode(entry, bl);
+    DECODE_START(2, bl);
+    if (struct_v < 2) {
+      std::pair<std::string, int> oe;
+      decode(oe, bl);
+      entry = {oe.first, 0 /* start */, uint32_t(oe.second)};
+    } else {
+      decode(entry, bl);
+    }
     DECODE_FINISH(bl);
   }
 };
@@ -1171,18 +1189,20 @@ WRITE_CLASS_ENCODER(cls_rgw_lc_get_head_ret)
 struct cls_rgw_lc_list_entries_op {
   string marker;
   uint32_t max_entries = 0;
+  uint8_t compat_v{0};
 
   cls_rgw_lc_list_entries_op() {}
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(3, 1, bl);
     encode(marker, bl);
     encode(max_entries, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(1, bl);
+    DECODE_START(3, bl);
+    compat_v = struct_v;
     decode(marker, bl);
     decode(max_entries, bl);
     DECODE_FINISH(bl);
@@ -1192,27 +1212,46 @@ struct cls_rgw_lc_list_entries_op {
 WRITE_CLASS_ENCODER(cls_rgw_lc_list_entries_op)
 
 struct cls_rgw_lc_list_entries_ret {
-  map<string, int> entries;
+  vector<cls_rgw_lc_entry> entries;
   bool is_truncated{false};
+  uint8_t compat_v;
 
-  cls_rgw_lc_list_entries_ret() {}
+cls_rgw_lc_list_entries_ret(uint8_t compat_v = 3)
+  : compat_v(compat_v) {}
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(2, 1, bl);
-    encode(entries, bl);
+    ENCODE_START(compat_v, 1, bl);
+    if (compat_v <= 2) {
+      map<string, int> oes;
+      std::for_each(entries.begin(), entries.end(),
+                   [&oes](const cls_rgw_lc_entry& elt)
+                     {oes.insert({elt.bucket, elt.status});});
+      encode(oes, bl);
+    } else {
+      encode(entries, bl);
+    }
     encode(is_truncated, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(2, bl);
-    decode(entries, bl);
+    DECODE_START(3, bl);
+    compat_v = struct_v;
+    if (struct_v <= 2) {
+      map<string, int> oes;
+      decode(oes, bl);
+      std::for_each(oes.begin(), oes.end(),
+                   [this](const std::pair<string, int>& oe)
+                     {entries.push_back({oe.first, 0 /* start */,
+                                         uint32_t(oe.second)});});
+    } else {
+      decode(entries, bl);
+    }
     if (struct_v >= 2) {
       decode(is_truncated, bl);
     }
     DECODE_FINISH(bl);
   }
-
 };
 WRITE_CLASS_ENCODER(cls_rgw_lc_list_entries_ret)
 
index f820003a2ff512f98fe2d10fb5191190d2ba67b5..b4753b473f7a94063be32e07bb0830bcdb773b45 100644 (file)
@@ -327,6 +327,7 @@ bool rgw_cls_bi_entry::get_info(cls_rgw_obj_key *key,
       {
         rgw_bucket_dir_entry entry;
         decode(entry, iter);
+        account = (account && entry.exists);
         *key = entry.key;
         *category = entry.meta.category;
         accounted_stats->num_entries++;
index 0bd197ae856ad61c0d6c4c832e19a6e7dc400292..620811dbc4a25925a12561f531826749c2d4b0f7 100644 (file)
@@ -1214,6 +1214,37 @@ struct cls_rgw_lc_obj_head
 };
 WRITE_CLASS_ENCODER(cls_rgw_lc_obj_head)
 
+struct cls_rgw_lc_entry {
+  std::string bucket;
+  uint64_t start_time; // if in_progress
+  uint32_t status;
+
+  cls_rgw_lc_entry()
+    : start_time(0), status(0) {}
+
+  cls_rgw_lc_entry(const cls_rgw_lc_entry& rhs) = default;
+
+  cls_rgw_lc_entry(const std::string& b, uint64_t t, uint32_t s)
+    : bucket(b), start_time(t), status(s) {};
+
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(bucket, bl);
+    encode(start_time, bl);
+    encode(status, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(bucket, bl);
+    decode(start_time, bl);
+    decode(status, bl);
+    DECODE_FINISH(bl);
+  }
+};
+WRITE_CLASS_ENCODER(cls_rgw_lc_entry);
+
 struct cls_rgw_reshard_entry
 {
   ceph::real_time time;
index f45fb2df22fc9c4a8b36d9decd7d7eddc53488aa..bb3c2ffc1576b3f3e4b0de20d6a1bc800f3d588d 100644 (file)
@@ -426,7 +426,7 @@ static int cls_rgw_gc_queue_update_entry(cls_method_context_t hctx, bufferlist *
       } //end - catch
       auto xattr_iter = xattr_urgent_data_map.find(op.info.tag);
       if (xattr_iter != xattr_urgent_data_map.end()) {
-        it->second = op.info.time;
+        xattr_iter->second = op.info.time;
         tag_found = true;
         //write the updated map back
         bufferlist bl_map;
index e80e6e231c27046608cd863cec413aa540c5b728..64018fa1b40f757a37ef1f47fad2aa62e2cff9bc 100644 (file)
@@ -422,7 +422,75 @@ static int cls_user_reset_stats(cls_method_context_t hctx,
 
   CLS_LOG(20, "%s: updating header", __func__);
   return cls_cxx_map_write_header(hctx, &bl);
-}
+} /* legacy cls_user_reset_stats */
+
+/// A method to reset the user.buckets header stats in accordance to
+/// the values seen in the user.buckets omap keys. This is not be
+/// equivalent to --sync-stats which also re-calculates the stats for
+/// each bucket.
+static int cls_user_reset_stats2(cls_method_context_t hctx,
+                                buffer::list *in, buffer::list *out)
+{
+  cls_user_reset_stats2_op op;
+
+  try {
+    auto bliter = in->cbegin();
+    decode(op, bliter);
+  } catch (ceph::buffer::error& err) {
+    CLS_LOG(0, "ERROR: %s failed to decode op", __func__);
+    return -EINVAL;
+  }
+
+  cls_user_header header;
+  string from_index{op.marker}, prefix;
+  cls_user_reset_stats2_ret ret;
+
+  map<string, buffer::list> keys;
+  int rc = cls_cxx_map_get_vals(hctx, from_index, prefix, MAX_ENTRIES,
+                               &keys, &ret.truncated);
+  if (rc < 0) {
+    CLS_LOG(0, "ERROR: %s failed to retrieve omap key-values", __func__);
+    return rc;
+  }
+  CLS_LOG(20, "%s: read %lu key-values, truncated=%d",
+         __func__, keys.size(), ret.truncated);
+
+  for (const auto& kv : keys) {
+    cls_user_bucket_entry e;
+    try {
+      auto& bl = kv.second;
+      auto bliter = bl.cbegin();
+      decode(e, bliter);
+    } catch (ceph::buffer::error& err) {
+      CLS_LOG(0, "ERROR: %s failed to decode bucket entry for %s",
+             __func__, kv.first.c_str());
+      return -EIO;
+    }
+    add_header_stats(&ret.acc_stats, e);
+  }
+
+  /* try-update marker */
+  if(!keys.empty())
+    ret.marker = (--keys.cend())->first;
+
+  if (! ret.truncated) {
+    buffer::list bl;
+    header.last_stats_update = op.time;
+    header.stats = ret.acc_stats;
+    encode(header, bl);
+
+    CLS_LOG(20, "%s: updating header", __func__);
+    rc = cls_cxx_map_write_header(hctx, &bl);
+
+    /* return final result */
+    encode(ret, *out);
+    return rc;
+  }
+
+  /* return partial result */
+  encode(ret, *out);
+  return 0;
+} /* cls_user_reset_stats2 */
 
 CLS_INIT(user)
 {
@@ -435,6 +503,7 @@ CLS_INIT(user)
   cls_method_handle_t h_user_list_buckets;
   cls_method_handle_t h_user_get_header;
   cls_method_handle_t h_user_reset_stats;
+  cls_method_handle_t h_user_reset_stats2;
 
   cls_register("user", &h_class);
 
@@ -447,6 +516,8 @@ CLS_INIT(user)
   cls_register_cxx_method(h_class, "list_buckets", CLS_METHOD_RD, cls_user_list_buckets, &h_user_list_buckets);
   cls_register_cxx_method(h_class, "get_header", CLS_METHOD_RD, cls_user_get_header, &h_user_get_header);
   cls_register_cxx_method(h_class, "reset_user_stats", CLS_METHOD_RD | CLS_METHOD_WR, cls_user_reset_stats, &h_user_reset_stats);
+  cls_register_cxx_method(h_class, "reset_user_stats2", CLS_METHOD_RD | CLS_METHOD_WR, cls_user_reset_stats2, &h_user_reset_stats2);
+
   return;
 }
 
index fa4b1f31b67b848d2e100aad25f32b9de28c2df8..b64c9aebfe39e0604e52d097688efcd496f818f9 100644 (file)
@@ -156,6 +156,69 @@ struct cls_user_reset_stats_op {
 };
 WRITE_CLASS_ENCODER(cls_user_reset_stats_op);
 
+struct cls_user_reset_stats2_op {
+  ceph::real_time time;
+  std::string marker;
+  cls_user_stats acc_stats;
+
+  cls_user_reset_stats2_op() {}
+
+  void encode(ceph::buffer::list& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(time, bl);
+    encode(marker, bl);
+    encode(acc_stats, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(ceph::buffer::list::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(time, bl);
+    decode(marker, bl);
+    decode(acc_stats, bl);
+    DECODE_FINISH(bl);
+  }
+
+  void dump(ceph::Formatter *f) const;
+  static void generate_test_instances(std::list<cls_user_reset_stats2_op*>& ls);
+};
+WRITE_CLASS_ENCODER(cls_user_reset_stats2_op);
+
+struct cls_user_reset_stats2_ret {
+  std::string marker;
+  cls_user_stats acc_stats; /* 0-initialized */
+  bool truncated;
+
+  cls_user_reset_stats2_ret()
+    : truncated(false) {}
+
+  void update_call(cls_user_reset_stats2_op& call) {
+    call.marker = marker;
+    call.acc_stats = acc_stats;
+  }
+
+  void encode(ceph::buffer::list& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(marker, bl);
+    encode(acc_stats, bl);
+    encode(truncated, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(ceph::buffer::list::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(marker, bl);
+    decode(acc_stats, bl);
+    decode(truncated, bl);
+    DECODE_FINISH(bl);
+  }
+
+  void dump(ceph::Formatter *f) const;
+  static void generate_test_instances(
+    std::list<cls_user_reset_stats2_ret*>& ls);
+};
+WRITE_CLASS_ENCODER(cls_user_reset_stats2_ret);
+
 struct cls_user_get_header_ret {
   cls_user_header header;
 
index 5951fbeb46a1926d664c7661d835033f871bcbf7..d34179b40204a71099933702b8dbe9aaeb8908d2 100644 (file)
@@ -3,6 +3,7 @@
 #ifndef CEPH_COMMON_PREFORKER_H
 #define CEPH_COMMON_PREFORKER_H
 
+#include <signal.h>
 #include <sys/socket.h>
 #include <sys/wait.h>
 #include <unistd.h>
@@ -45,6 +46,17 @@ public:
       return (errno = e, -1);
     }
 
+    struct sigaction sa;
+    sa.sa_handler = SIG_IGN;
+    sigemptyset(&sa.sa_mask);
+    sa.sa_flags = 0;
+    if (sigaction(SIGHUP, &sa, nullptr) != 0) {
+      int e = errno;
+      oss << "[" << getpid() << "]: unable to ignore SIGHUP: " << cpp_strerror(e);
+      err = oss.str();
+      return (errno = e, -1);
+    }
+
     forked = true;
 
     childpid = fork();
index b0562247dda99cac9344264548cfffa0e3550c54..cd7b78f1018a0d7f2571fd710dada4a01754659b 100644 (file)
@@ -347,7 +347,6 @@ OPTION(client_trace, OPT_STR)
 OPTION(client_readahead_min, OPT_LONGLONG)  // readahead at _least_ this much.
 OPTION(client_readahead_max_bytes, OPT_LONGLONG)  // default unlimited
 OPTION(client_readahead_max_periods, OPT_LONGLONG)  // as multiple of file layout period (object size * num stripes)
-OPTION(client_reconnect_stale, OPT_BOOL)  // automatically reconnect stale session
 OPTION(client_snapdir, OPT_STR)
 OPTION(client_mount_uid, OPT_INT)
 OPTION(client_mount_gid, OPT_INT)
@@ -914,6 +913,8 @@ OPTION(bluefs_sync_write, OPT_BOOL)
 OPTION(bluefs_allocator, OPT_STR)     // stupid | bitmap
 OPTION(bluefs_preextend_wal_files, OPT_BOOL)  // this *requires* that rocksdb has recycling enabled
 OPTION(bluefs_log_replay_check_allocations, OPT_BOOL)
+OPTION(bluefs_replay_recovery, OPT_BOOL)
+OPTION(bluefs_replay_recovery_disable_compact, OPT_BOOL)
 
 OPTION(bluestore_bluefs, OPT_BOOL)
 OPTION(bluestore_bluefs_env_mirror, OPT_BOOL) // mirror to normal Env for debug
@@ -1276,6 +1277,11 @@ OPTION(rgw_enable_quota_threads, OPT_BOOL)
 OPTION(rgw_enable_gc_threads, OPT_BOOL)
 OPTION(rgw_enable_lc_threads, OPT_BOOL)
 
+/* overrides for librgw/nfs */
+OPTION(rgw_nfs_run_gc_threads, OPT_BOOL)
+OPTION(rgw_nfs_run_lc_threads, OPT_BOOL)
+OPTION(rgw_nfs_run_quota_threads, OPT_BOOL)
+OPTION(rgw_nfs_run_sync_thread, OPT_BOOL)
 
 OPTION(rgw_data, OPT_STR)
 OPTION(rgw_enable_apis, OPT_STR)
index b9d5b675a0a3e43e025a5d70d8018f4fd52b4ff6..2af36dd0e4ef3f24c5cf31f50cea74adb595b46c 100644 (file)
@@ -1501,6 +1501,11 @@ std::vector<Option> get_global_options() {
     .add_service("mgr")
     .set_description("issue REQUEST_SLOW health warning if OSD ops are slower than this age (seconds)"),
 
+    Option("mon_osd_warn_num_repaired", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
+    .set_default(10)
+    .add_service("mon")
+    .set_description("issue OSD_TOO_MANY_REPAIRS health warning if an OSD has more than this many read repairs"),
+
     Option("mon_osd_err_op_age_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
     .set_default(128)
     .add_service("mgr")
@@ -2511,7 +2516,7 @@ std::vector<Option> get_global_options() {
     .set_long_description("If this value is exceeded, the OSD will not read any new client data off of the network until memory is freed."),
 
     Option("osd_client_message_cap", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
-    .set_default(100)
+    .set_default(0)
     .set_description("maximum number of in-flight client requests"),
 
     Option("osd_crush_update_weight_set", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
@@ -3231,6 +3236,7 @@ std::vector<Option> get_global_options() {
 
     Option("osd_scrub_max_preemptions", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
     .set_default(5)
+    .set_min_max(0, 30)
     .set_description("Set the maximum number of times we will preempt a deep scrub due to a client operation before blocking client IO to complete the scrub"),
 
     Option("osd_deep_scrub_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
@@ -4016,6 +4022,17 @@ std::vector<Option> get_global_options() {
       .set_default(true)
       .set_description("Enables checks for allocations consistency during log replay"),
 
+    Option("bluefs_replay_recovery", Option::TYPE_BOOL, Option::LEVEL_DEV)
+    .set_default(false)
+    .set_description("Attempt to read bluefs log so large that it became unreadable.")
+    .set_long_description("If BlueFS log grows to extreme sizes (200GB+) it is likely that it becames unreadable. "
+                         "This options enables heuristics that scans devices for missing data. "
+                         "DO NOT ENABLE BY DEFAULT"),
+
+    Option("bluefs_replay_recovery_disable_compact", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description(""),
+
     Option("bluestore_bluefs", Option::TYPE_BOOL, Option::LEVEL_DEV)
     .set_default(true)
     .set_flag(Option::FLAG_CREATE)
@@ -5925,6 +5942,22 @@ std::vector<Option> get_rgw_options() {
     .set_long_description("use fast S3 attrs from bucket index (assumes NFS "
                          "mounts are immutable)"),
 
+    Option("rgw_nfs_run_gc_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description("run GC threads in librgw (default off)"),
+
+    Option("rgw_nfs_run_lc_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description("run lifecycle threads in librgw (default off)"),
+
+    Option("rgw_nfs_run_quota_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description("run quota threads in librgw (default off)"),
+
+    Option("rgw_nfs_run_sync_thread", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description("run sync thread in librgw (default off)"),
+
     Option("rgw_rados_pool_autoscale_bias", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
     .set_default(4.0)
     .set_min_max(0.01, 100000.0)
@@ -6475,8 +6508,9 @@ std::vector<Option> get_rgw_options() {
     .set_default(1000)
     .set_description("Max number of buckets per user")
     .set_long_description(
-        "A user can create this many buckets. Zero means unlimited, negative number means "
-        "user cannot create any buckets (although user will retain buckets already created."),
+      "A user can create at most this number of buckets. Zero means "
+      "no limit; a negative value means users cannot create any new "
+      "buckets, although users will retain buckets already created."),
 
     Option("rgw_objexp_gc_interval", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
     .set_default(10_min)
@@ -7449,6 +7483,12 @@ static std::vector<Option> get_rbd_options() {
     Option("rbd_rwl_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("/tmp")
     .set_description("location of the persistent write back cache in a DAX-enabled filesystem on persistent memory"),
+
+    Option("rbd_config_pool_override_update_timestamp", Option::TYPE_UINT,
+           Option::LEVEL_DEV)
+    .set_default(0)
+    .set_description("timestamp of last update to pool-level config overrides"),
+
   });
 }
 
@@ -7578,7 +7618,7 @@ static std::vector<Option> get_rbd_mirror_options() {
 static std::vector<Option> get_immutable_object_cache_options() {
   return std::vector<Option>({
     Option("immutable_object_cache_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
-    .set_default("/tmp")
+    .set_default("/tmp/ceph_immutable_object_cache")
     .set_description("immutable object cache data dir"),
 
     Option("immutable_object_cache_sock", Option::TYPE_STR, Option::LEVEL_ADVANCED)
@@ -7826,6 +7866,25 @@ std::vector<Option> get_mds_options() {
     .set_default(true)
     .set_description("allow setting directory export pins to particular ranks"),
 
+    Option("mds_export_ephemeral_random", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_flag(Option::FLAG_RUNTIME)
+    .set_description("allow ephemeral random pinning of the loaded subtrees")
+    .set_long_description("probabilistically pin the loaded directory inode and the subtree beneath it to an MDS based on the consistent hash of the inode number. The higher this value the more likely the loaded subtrees get pinned"),
+
+    Option("mds_export_ephemeral_random_max", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+    .set_default(0.01)
+    .set_flag(Option::FLAG_RUNTIME)
+    .set_description("the maximum percent permitted for random ephemeral pin policy")
+    .set_min_max(0.0, 1.0)
+    .add_see_also("mds_export_ephemeral_random"),
+
+    Option("mds_export_ephemeral_distributed", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_flag(Option::FLAG_RUNTIME)
+    .set_description("allow ephemeral distributed pinning of the loaded subtrees")
+    .set_long_description("pin the immediate child directories of the loaded directory inode based on the consistent hash of the child's inode number. "),
+
     Option("mds_bal_sample_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
     .set_default(3.0)
     .set_description("interval in seconds between balancer ticks"),
@@ -8420,6 +8479,14 @@ std::vector<Option> get_mds_client_options() {
     Option("debug_allow_any_pool_priority", Option::TYPE_BOOL, Option::LEVEL_DEV)
     .set_default(false)
     .set_description("Allow any pool priority to be set to test conversion to new range"),
+
+    Option("client_shutdown_timeout", Option::TYPE_SECS, Option::LEVEL_ADVANCED)
+    .set_flag(Option::FLAG_RUNTIME)
+    .set_default(30)
+    .set_min(0)
+    .set_description("timeout for shutting down CephFS")
+    .set_long_description("Timeout for shutting down CephFS via unmount or shutdown.")
+    .add_tag("client")
   });
 }
 
index 224deb55de9aa46f8b90947e326a9745f0629520..5e983e992f346ccb17c48eab1e27fbed12759942 100644 (file)
@@ -155,6 +155,7 @@ set(crimson_mon_srcs
   mon/MonClient.cc
   ${PROJECT_SOURCE_DIR}/src/mon/MonSub.cc)
 set(crimson_net_srcs
+  ${PROJECT_SOURCE_DIR}/src/msg/async/frames_v2.cc
   net/Errors.cc
   net/Messenger.cc
   net/SocketConnection.cc
index 2535584bb6efbb4a5c0d255c2c5614617099fa61..d68dba174ce593964405cba3edecc9d275fba838 100644 (file)
@@ -178,7 +178,8 @@ ProtocolV2::ProtocolV2(Dispatcher& dispatcher,
                        SocketMessenger& messenger)
   : Protocol(proto_t::v2, dispatcher, conn),
     messenger{messenger},
-    protocol_timer{conn}
+    protocol_timer{conn},
+    tx_frame_asm(&session_stream_handlers, false)
 {}
 
 ProtocolV2::~ProtocolV2() {}
@@ -283,7 +284,7 @@ size_t ProtocolV2::get_current_msg_size() const
 
 seastar::future<Tag> ProtocolV2::read_main_preamble()
 {
-  return read_exactly(FRAME_PREAMBLE_SIZE)
+  return read_exactly(sizeof(preamble_block_t))
     .then([this] (auto bl) {
       if (session_stream_handlers.rx) {
         session_stream_handlers.rx->reset_rx_handler();
@@ -371,7 +372,7 @@ seastar::future<> ProtocolV2::read_frame_payload()
   ).then([this] {
     // TODO: get_epilogue_size()
     ceph_assert(!session_stream_handlers.rx);
-    return read_exactly(FRAME_PLAIN_EPILOGUE_SIZE);
+    return read_exactly(sizeof(epilogue_crc_rev0_block_t));
   }).then([this] (auto bl) {
     logger().trace("{} RECV({}) frame epilogue", conn, bl.size());
 
@@ -380,7 +381,7 @@ seastar::future<> ProtocolV2::read_frame_payload()
       // TODO
       ceph_assert(false);
     } else {
-      auto& epilogue = *reinterpret_cast<const epilogue_plain_block_t*>(bl.get());
+      auto& epilogue = *reinterpret_cast<const epilogue_crc_rev0_block_t*>(bl.get());
       for (std::uint8_t idx = 0; idx < rx_segments_data.size(); idx++) {
         const __u32 expected_crc = epilogue.crc_values[idx];
         const __u32 calculated_crc = rx_segments_data[idx].crc32c(-1);
@@ -402,7 +403,7 @@ seastar::future<> ProtocolV2::read_frame_payload()
     // we do have a mechanism that allows transmitter to start sending message
     // and abort after putting entire data field on wire. This will be used by
     // the kernel client to avoid unnecessary buffering.
-    if (late_flags & FRAME_FLAGS_LATEABRT) {
+    if (late_flags & FRAME_LATE_FLAG_ABORTED) {
       // TODO
       ceph_assert(false);
     }
@@ -412,7 +413,7 @@ seastar::future<> ProtocolV2::read_frame_payload()
 template <class F>
 seastar::future<> ProtocolV2::write_frame(F &frame, bool flush)
 {
-  auto bl = frame.get_buffer(session_stream_handlers);
+  auto bl = frame.get_buffer(tx_frame_asm);
   const auto main_preamble = reinterpret_cast<const preamble_block_t*>(bl.front().c_str());
   logger().trace("{} SEND({}) frame: tag={}, num_segments={}, crc={}",
                  conn, bl.length(), (int)main_preamble->tag,
@@ -1852,19 +1853,19 @@ ceph::bufferlist ProtocolV2::do_sweep_messages(
 
   if (unlikely(require_keepalive)) {
     auto keepalive_frame = KeepAliveFrame::Encode();
-    bl.append(keepalive_frame.get_buffer(session_stream_handlers));
+    bl.append(keepalive_frame.get_buffer(tx_frame_asm));
     INTERCEPT_FRAME(ceph::msgr::v2::Tag::KEEPALIVE2, bp_type_t::WRITE);
   }
 
   if (unlikely(_keepalive_ack.has_value())) {
     auto keepalive_ack_frame = KeepAliveFrameAck::Encode(*_keepalive_ack);
-    bl.append(keepalive_ack_frame.get_buffer(session_stream_handlers));
+    bl.append(keepalive_ack_frame.get_buffer(tx_frame_asm));
     INTERCEPT_FRAME(ceph::msgr::v2::Tag::KEEPALIVE2_ACK, bp_type_t::WRITE);
   }
 
   if (require_ack && !num_msgs) {
     auto ack_frame = AckFrame::Encode(conn.in_seq);
-    bl.append(ack_frame.get_buffer(session_stream_handlers));
+    bl.append(ack_frame.get_buffer(tx_frame_asm));
     INTERCEPT_FRAME(ceph::msgr::v2::Tag::ACK, bp_type_t::WRITE);
   }
 
@@ -1893,7 +1894,7 @@ ceph::bufferlist ProtocolV2::do_sweep_messages(
         msg->get_payload(), msg->get_middle(), msg->get_data());
     logger().debug("{} --> #{} === {} ({})",
                   conn, msg->get_seq(), *msg, msg->get_type());
-    bl.append(message.get_buffer(session_stream_handlers));
+    bl.append(message.get_buffer(tx_frame_asm));
     INTERCEPT_FRAME(ceph::msgr::v2::Tag::MESSAGE, bp_type_t::WRITE);
   });
 
@@ -1908,7 +1909,7 @@ seastar::future<> ProtocolV2::read_message(utime_t throttle_stamp)
 
     // we need to get the size before std::moving segments data
     const size_t cur_msg_size = get_current_msg_size();
-    auto msg_frame = MessageFrame::Decode(std::move(rx_segments_data));
+    auto msg_frame = MessageFrame::Decode(rx_segments_data);
     // XXX: paranoid copy just to avoid oops
     ceph_msg_header2 current_header = msg_frame.header();
 
index 0e8f2ff90e823f2d8f73ba96bec5034ac7499297..5162346ef55a88676cc1eb77b0f7cf26fa001da8 100644 (file)
@@ -113,8 +113,8 @@ class ProtocolV2 final : public Protocol {
   ceph::crypto::onwire::rxtx_t session_stream_handlers;
   boost::container::static_vector<ceph::msgr::v2::segment_t,
                                  ceph::msgr::v2::MAX_NUM_SEGMENTS> rx_segments_desc;
-  boost::container::static_vector<ceph::bufferlist,
-                                 ceph::msgr::v2::MAX_NUM_SEGMENTS> rx_segments_data;
+  ceph::msgr::v2::FrameAssembler tx_frame_asm;
+  ceph::msgr::v2::segment_bls_t rx_segments_data;
 
   size_t get_current_msg_size() const;
   seastar::future<ceph::msgr::v2::Tag> read_main_preamble();
index 8e3ceee48f664206de08a35e25770c0cdc07c7fa..ed4a90addc425d691bd0e232b51ea4e4faf3ec91 100644 (file)
@@ -1331,6 +1331,7 @@ public:
       crush->max_devices = name_map.rbegin()->first + 1;
     }
     have_uniform_rules = !has_legacy_rule_ids();
+    build_rmaps();
   }
   int bucket_set_alg(int id, int alg);
 
index bda8108082475f8a13b67920cc41658acc204060..f7b2a07816ba4843bc9e692f860782bc41d25981 100644 (file)
 #define DEFINE_MSGR2_FEATURE(bit, incarnation, name)               \
        const static uint64_t CEPH_MSGR2_FEATURE_##name = (1ULL << bit); \
        const static uint64_t CEPH_MSGR2_FEATUREMASK_##name =            \
-                       (1ULL << bit | CEPH_FEATURE_INCARNATION_##incarnation);
+                       (1ULL << bit | CEPH_MSGR2_INCARNATION_##incarnation);
 
 #define HAVE_MSGR2_FEATURE(x, name) \
        (((x) & (CEPH_MSGR2_FEATUREMASK_##name)) == (CEPH_MSGR2_FEATUREMASK_##name))
 
+DEFINE_MSGR2_FEATURE( 0, 1, REVISION_1)   // msgr2.1
 
-#define CEPH_MSGR2_SUPPORTED_FEATURES (0ull)
+#define CEPH_MSGR2_SUPPORTED_FEATURES (CEPH_MSGR2_FEATURE_REVISION_1)
 
-#define CEPH_MSGR2_REQUIRED_FEATURES (CEPH_MSGR2_SUPPORTED_FEATURES)
+#define CEPH_MSGR2_REQUIRED_FEATURES  (0ull)
 
 
 /*
index c6d5633fac7eb4e449d471090af375c8499a2bbd..ae9e8110a29549bed62ce10a1be0b4306230caa2 100644 (file)
@@ -49,6 +49,7 @@ extern "C" {
 
 #define LIBRADOS_SUPPORTS_WATCH 1
 #define LIBRADOS_SUPPORTS_SERVICES 1
+#define LIBRADOS_SUPPORTS_GETADDRS 1
 #define LIBRADOS_SUPPORTS_APP_METADATA 1
 
 /* RADOS lock flags
index d85cd36504b66def6c2599dbf1eae7f450f9ab6e..c06c6017118ef1ced13c212ba4d3d89eaea7bd9f 100644 (file)
@@ -47,6 +47,7 @@ extern "C" {
 #define LIBRBD_SUPPORTS_IOVEC 1
 #define LIBRBD_SUPPORTS_WATCH 0
 #define LIBRBD_SUPPORTS_WRITESAME 1
+#define LIBRBD_SUPPORTS_WRITE_ZEROES 1
 
 #if __GNUC__ >= 4
   #define CEPH_RBD_API          __attribute__ ((visibility ("default")))
@@ -1094,10 +1095,15 @@ CEPH_RBD_API ssize_t rbd_write2(rbd_image_t image, uint64_t ofs, size_t len,
                                 const char *buf, int op_flags);
 CEPH_RBD_API int rbd_discard(rbd_image_t image, uint64_t ofs, uint64_t len);
 CEPH_RBD_API ssize_t rbd_writesame(rbd_image_t image, uint64_t ofs, size_t len,
-                                   const char *buf, size_t data_len, int op_flags);
+                                   const char *buf, size_t data_len,
+                                   int op_flags);
+CEPH_RBD_API ssize_t rbd_write_zeroes(rbd_image_t image, uint64_t ofs,
+                                      size_t len, int zero_flags,
+                                      int op_flags);
 CEPH_RBD_API ssize_t rbd_compare_and_write(rbd_image_t image, uint64_t ofs,
                                            size_t len, const char *cmp_buf,
-                                           const char *buf, uint64_t *mismatch_off,
+                                           const char *buf,
+                                           uint64_t *mismatch_off,
                                            int op_flags);
 
 CEPH_RBD_API int rbd_aio_write(rbd_image_t image, uint64_t off, size_t len,
@@ -1125,10 +1131,15 @@ CEPH_RBD_API int rbd_aio_discard(rbd_image_t image, uint64_t off, uint64_t len,
 CEPH_RBD_API int rbd_aio_writesame(rbd_image_t image, uint64_t off, size_t len,
                                    const char *buf, size_t data_len,
                                    rbd_completion_t c, int op_flags);
+CEPH_RBD_API int rbd_aio_write_zeroes(rbd_image_t image, uint64_t off,
+                                      size_t len, rbd_completion_t c,
+                                      int zero_flags, int op_flags);
 CEPH_RBD_API ssize_t rbd_aio_compare_and_write(rbd_image_t image,
                                                uint64_t off, size_t len,
-                                               const char *cmp_buf, const char *buf,
-                                               rbd_completion_t c, uint64_t *mismatch_off,
+                                               const char *cmp_buf,
+                                               const char *buf,
+                                               rbd_completion_t c,
+                                               uint64_t *mismatch_off,
                                                int op_flags);
 
 CEPH_RBD_API int rbd_aio_create_completion(void *cb_arg,
index ca2d7449baf39fa3a0d34761967e9ac720a72391..1bb74ce72f2e9e13f3800306143fc47285de78db 100644 (file)
@@ -664,8 +664,11 @@ public:
   ssize_t write(uint64_t ofs, size_t len, ceph::bufferlist& bl);
   /* @param op_flags see librados.h constants beginning with LIBRADOS_OP_FLAG */
   ssize_t write2(uint64_t ofs, size_t len, ceph::bufferlist& bl, int op_flags);
+
   int discard(uint64_t ofs, uint64_t len);
   ssize_t writesame(uint64_t ofs, size_t len, ceph::bufferlist &bl, int op_flags);
+  ssize_t write_zeroes(uint64_t ofs, size_t len, int zero_flags, int op_flags);
+
   ssize_t compare_and_write(uint64_t ofs, size_t len, ceph::bufferlist &cmp_bl,
                             ceph::bufferlist& bl, uint64_t *mismatch_off, int op_flags);
 
@@ -673,11 +676,17 @@ public:
   /* @param op_flags see librados.h constants beginning with LIBRADOS_OP_FLAG */
   int aio_write2(uint64_t off, size_t len, ceph::bufferlist& bl,
                  RBD::AioCompletion *c, int op_flags);
+
+  int aio_discard(uint64_t off, uint64_t len, RBD::AioCompletion *c);
   int aio_writesame(uint64_t off, size_t len, ceph::bufferlist& bl,
                     RBD::AioCompletion *c, int op_flags);
+  int aio_write_zeroes(uint64_t ofs, size_t len, RBD::AioCompletion *c,
+                       int zero_flags, int op_flags);
+
   int aio_compare_and_write(uint64_t off, size_t len, ceph::bufferlist& cmp_bl,
                             ceph::bufferlist& bl, RBD::AioCompletion *c,
                             uint64_t *mismatch_off, int op_flags);
+
   /**
    * read async from image
    *
@@ -699,7 +708,6 @@ public:
   /* @param op_flags see librados.h constants beginning with LIBRADOS_OP_FLAG */
   int aio_read2(uint64_t off, size_t len, ceph::bufferlist& bl,
                  RBD::AioCompletion *c, int op_flags);
-  int aio_discard(uint64_t off, uint64_t len, RBD::AioCompletion *c);
 
   int flush();
   /**
index bcdc8af8e26839bf5b6851e236f88af3fc0fabb0..946f3f5e71ff5630d6ccbb287567fdc05871439e 100644 (file)
@@ -8,6 +8,7 @@ add_library(rbd_types STATIC
 set(librbd_internal_srcs
   AsyncObjectThrottle.cc
   AsyncRequest.cc
+  ConfigWatcher.cc
   DeepCopyRequest.cc
   ExclusiveLock.cc
   ImageCtx.cc
@@ -73,6 +74,7 @@ set(librbd_internal_srcs
   io/AioCompletion.cc
   io/AsyncOperation.cc
   io/CopyupRequest.cc
+  io/FlushTracker.cc
   io/ImageDispatchSpec.cc
   io/ImageRequest.cc
   io/ImageRequestWQ.cc
diff --git a/ceph/src/librbd/ConfigWatcher.cc b/ceph/src/librbd/ConfigWatcher.cc
new file mode 100644 (file)
index 0000000..0e41278
--- /dev/null
@@ -0,0 +1,116 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "librbd/ConfigWatcher.h"
+#include "common/config_obs.h"
+#include "common/dout.h"
+#include "common/errno.h"
+#include "librbd/ImageCtx.h"
+#include "librbd/ImageState.h"
+#include "librbd/api/Config.h"
+#include <deque>
+#include <string>
+#include <vector>
+#include <boost/algorithm/string/predicate.hpp>
+
+#define dout_subsys ceph_subsys_rbd
+#undef dout_prefix
+#define dout_prefix *_dout << "librbd::ConfigWatcher: " \
+                           << __func__ << ": "
+
+namespace librbd {
+
+template <typename I>
+struct ConfigWatcher<I>::Observer : public md_config_obs_t {
+  ConfigWatcher<I>* m_config_watcher;
+
+  std::deque<std::string> m_config_key_strs;
+  mutable std::vector<const char*> m_config_keys;
+
+  Observer(CephContext* cct, ConfigWatcher<I>* config_watcher)
+    : m_config_watcher(config_watcher) {
+    const std::string rbd_key_prefix("rbd_");
+    auto& schema = cct->_conf.get_schema();
+    for (auto& pair : schema) {
+      // watch all "rbd_" keys for simplicity
+      if (!boost::starts_with(pair.first, rbd_key_prefix)) {
+        continue;
+      }
+
+      m_config_key_strs.emplace_back(pair.first);
+    }
+
+    m_config_keys.reserve(m_config_key_strs.size());
+    for (auto& key : m_config_key_strs) {
+      m_config_keys.emplace_back(key.c_str());
+    }
+    m_config_keys.emplace_back(nullptr);
+  }
+
+  const char** get_tracked_conf_keys() const override {
+    ceph_assert(!m_config_keys.empty());
+    return &m_config_keys[0];
+  }
+
+  void handle_conf_change(const ConfigProxy& conf,
+                          const std::set <std::string> &changed) override {
+    m_config_watcher->handle_global_config_change(changed);
+  }
+};
+
+template <typename I>
+ConfigWatcher<I>::ConfigWatcher(I& image_ctx)
+  : m_image_ctx(image_ctx) {
+}
+
+template <typename I>
+ConfigWatcher<I>::~ConfigWatcher() {
+  ceph_assert(m_observer == nullptr);
+}
+
+template <typename I>
+void ConfigWatcher<I>::init() {
+  auto cct = m_image_ctx.cct;
+  ldout(cct, 10) << dendl;
+
+  m_observer = new Observer(cct, this);
+  cct->_conf.add_observer(m_observer);
+}
+
+template <typename I>
+void ConfigWatcher<I>::shut_down() {
+  auto cct = m_image_ctx.cct;
+  ldout(cct, 10) << dendl;
+
+  ceph_assert(m_observer != nullptr);
+  cct->_conf.remove_observer(m_observer);
+
+  delete m_observer;
+  m_observer = nullptr;
+}
+
+template <typename I>
+void ConfigWatcher<I>::handle_global_config_change(
+    std::set<std::string> changed_keys) {
+
+  {
+    // ignore any global changes that are being overridden
+    std::shared_lock image_locker{m_image_ctx.image_lock};
+    for (auto& key : m_image_ctx.config_overrides) {
+      changed_keys.erase(key);
+    }
+  }
+  if (changed_keys.empty()) {
+    return;
+  }
+
+  auto cct = m_image_ctx.cct;
+  ldout(cct, 10) << "changed_keys=" << changed_keys << dendl;
+
+  // refresh the image to pick up any global config overrides
+  m_image_ctx.state->handle_update_notification();
+}
+
+} // namespace librbd
+
+template class librbd::ConfigWatcher<librbd::ImageCtx>;
diff --git a/ceph/src/librbd/ConfigWatcher.h b/ceph/src/librbd/ConfigWatcher.h
new file mode 100644 (file)
index 0000000..1f10c8c
--- /dev/null
@@ -0,0 +1,47 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_LIBRBD_CONFIG_WATCHER_H
+#define CEPH_LIBRBD_CONFIG_WATCHER_H
+
+#include <set>
+#include <string>
+
+struct Context;
+
+namespace librbd {
+
+struct ImageCtx;
+
+template <typename ImageCtxT>
+class ConfigWatcher {
+public:
+  static ConfigWatcher* create(ImageCtxT& image_ctx) {
+    return new ConfigWatcher(image_ctx);
+  }
+
+  ConfigWatcher(ImageCtxT& image_ctx);
+  ~ConfigWatcher();
+
+  ConfigWatcher(const ConfigWatcher&) = delete;
+  ConfigWatcher& operator=(const ConfigWatcher&) = delete;
+
+  void init();
+  void shut_down();
+
+private:
+  struct Observer;
+
+  ImageCtxT& m_image_ctx;
+
+  Observer* m_observer = nullptr;
+
+  void handle_global_config_change(std::set<std::string> changed);
+
+};
+
+} // namespace librbd
+
+extern template class librbd::ConfigWatcher<librbd::ImageCtx>;
+
+#endif // CEPH_LIBRBD_CONFIG_WATCHER_H
index 74bd121bad7df3b650ef189d57e7404e0cdc9d17..23beddedb88ff4b272166ddc1abc087e5643604f 100644 (file)
@@ -122,7 +122,6 @@ public:
       operations(new Operations<>(*this)),
       exclusive_lock(nullptr), object_map(nullptr),
       io_work_queue(nullptr), op_work_queue(nullptr),
-      external_callback_completions(32),
       event_socket_completions(32),
       asok_hook(nullptr),
       trace_endpoint("librbd")
@@ -158,6 +157,7 @@ public:
   }
 
   ImageCtx::~ImageCtx() {
+    ceph_assert(config_watcher == nullptr);
     ceph_assert(image_watcher == NULL);
     ceph_assert(exclusive_lock == NULL);
     ceph_assert(object_map == NULL);
@@ -727,6 +727,8 @@ public:
                                 bool thread_safe) {
     ldout(cct, 20) << __func__ << dendl;
 
+    std::unique_lock image_locker(image_lock);
+
     // reset settings back to global defaults
     for (auto& key : config_overrides) {
       std::string value;
@@ -765,6 +767,8 @@ public:
       }
     }
 
+    image_locker.unlock();
+
 #define ASSIGN_OPTION(param, type)              \
     param = config.get_val<type>("rbd_"#param)
 
index 79908cf18dc43d72067187b9b1dde2e569f2859f..1218f8380a6bb444560db255eb4d7b416325b5e0 100644 (file)
@@ -42,6 +42,7 @@ class SafeTimer;
 
 namespace librbd {
 
+  template <typename> class ConfigWatcher;
   template <typename> class ExclusiveLock;
   template <typename> class ImageState;
   template <typename> class ImageWatcher;
@@ -109,6 +110,8 @@ namespace librbd {
     cls::rbd::SnapshotNamespace snap_namespace;
     std::string snap_name;
     IoCtx data_ctx, md_ctx;
+
+    ConfigWatcher<ImageCtx> *config_watcher = nullptr;
     ImageWatcher<ImageCtx> *image_watcher;
     Journal<ImageCtx> *journal;
 
@@ -189,9 +192,6 @@ namespace librbd {
       io::AioCompletion*,
       boost::lockfree::allocator<ceph::allocator<void>>> Completions;
 
-    Completions external_callback_completions;
-    std::atomic<bool> external_callback_in_progress = {false};
-
     Completions event_socket_completions;
     EventSocket event_socket;
 
index 073123094d265c3f49af7ec02480f1da66ca60a8..c46549a78d3d57479732cb3bad6279f69801842e 100644 (file)
@@ -88,6 +88,9 @@ void ImageWatcher<I>::unregister_watch(Context *on_finish) {
 
   cancel_async_requests();
 
+  on_finish = new LambdaContext([this, on_finish](int r) {
+    m_async_op_tracker.wait_for_ops(on_finish);
+  });
   auto ctx = new LambdaContext([this, on_finish](int r) {
     m_task_finisher->cancel_all(on_finish);
   });
@@ -129,6 +132,7 @@ int ImageWatcher<I>::notify_async_progress(const AsyncRequestId &request,
 template <typename I>
 void ImageWatcher<I>::schedule_async_complete(const AsyncRequestId &request,
                                               int r) {
+  m_async_op_tracker.start_op();
   auto ctx = new LambdaContext(
     boost::bind(&ImageWatcher<I>::notify_async_complete, this, request, r));
   m_task_finisher->queue(ctx);
@@ -154,13 +158,16 @@ void ImageWatcher<I>::handle_async_complete(const AsyncRequestId &request,
   if (ret_val < 0) {
     lderr(m_image_ctx.cct) << this << " failed to notify async complete: "
                           << cpp_strerror(ret_val) << dendl;
-    if (ret_val == -ETIMEDOUT) {
+    if (ret_val == -ETIMEDOUT && !is_unregistered()) {
       schedule_async_complete(request, r);
+      m_async_op_tracker.finish_op();
+      return;
     }
-  } else {
-    std::unique_lock async_request_locker{m_async_request_lock};
-    m_async_pending.erase(request);
   }
+
+  std::unique_lock async_request_locker{m_async_request_lock};
+  m_async_pending.erase(request);
+  m_async_op_tracker.finish_op();
 }
 
 template <typename I>
index 1ae54d80bfd4b5fd099762323f6bc97c93467030..2d97467617e8dfb3f8ad219bee324e7780517bfb 100644 (file)
@@ -5,6 +5,7 @@
 #define CEPH_LIBRBD_IMAGE_WATCHER_H
 
 #include "cls/rbd/cls_rbd_types.h"
+#include "common/AsyncOpTracker.h"
 #include "common/ceph_mutex.h"
 #include "include/Context.h"
 #include "include/rbd/librbd.hpp"
@@ -171,6 +172,8 @@ private:
   ceph::mutex m_owner_client_id_lock;
   watch_notify::ClientId m_owner_client_id;
 
+  AsyncOpTracker m_async_op_tracker;
+
   void handle_register_watch(int r);
 
   void schedule_cancel_async_requests();
index 0d60cc95f94e5790c012993c2e951a8b62c073f9..2913277396bfb325d8ded3c2063e4c26fcbec0c5 100644 (file)
@@ -163,8 +163,14 @@ void ObjectMap<I>::close(Context *on_finish) {
     return;
   }
 
-  auto req = object_map::UnlockRequest<I>::create(m_image_ctx, ctx);
-  req->send();
+  ctx = new LambdaContext([this, ctx](int r) {
+      auto req = object_map::UnlockRequest<I>::create(m_image_ctx, ctx);
+      req->send();
+    });
+
+  // ensure the block guard for aio updates is empty before unlocking
+  // the object map
+  m_async_op_tracker.wait_for_ops(ctx);
 }
 
 template <typename I>
@@ -276,6 +282,7 @@ void ObjectMap<I>::detained_aio_update(UpdateOperation &&op) {
     lderr(cct) << "failed to detain object map update: " << cpp_strerror(r)
                << dendl;
     m_image_ctx.op_work_queue->queue(op.on_finish, r);
+    m_async_op_tracker.finish_op();
     return;
   } else if (r > 0) {
     ldout(cct, 20) << "detaining object map update due to in-flight update: "
@@ -315,6 +322,7 @@ void ObjectMap<I>::handle_detained_aio_update(BlockGuardCell *cell, int r,
   }
 
   on_finish->complete(r);
+  m_async_op_tracker.finish_op();
 }
 
 template <typename I>
index 9cadb32910362ea9890e536b172b78f6e77e31f6..7577d267f44060c7c4f89eae2e64a4e9c8e940b4 100644 (file)
@@ -8,6 +8,7 @@
 #include "include/fs_types.h"
 #include "include/rados/librados_fwd.hpp"
 #include "include/rbd/object_map_types.h"
+#include "common/AsyncOpTracker.h"
 #include "common/bit_vector.hpp"
 #include "common/RWLock.h"
 #include "common/RefCountedObj.h"
@@ -102,6 +103,7 @@ public:
         return false;
       }
 
+      m_async_op_tracker.start_op();
       UpdateOperation update_operation(start_object_no, end_object_no,
                                        new_state, current_state, parent_trace,
                                        ignore_enoent,
@@ -150,6 +152,7 @@ private:
   mutable ceph::shared_mutex m_lock;
   ceph::BitVector<2> m_object_map;
 
+  AsyncOpTracker m_async_op_tracker;
   UpdateGuard *m_update_guard = nullptr;
 
   void detained_aio_update(UpdateOperation &&update_operation);
index 174e9a588647ef5272d7d21d6e65e1e0aaebe980..07e37162b4340476b71fe98fdb8b321e1de39a22 100644 (file)
@@ -36,7 +36,8 @@ static std::set<std::string_view> EXCLUDE_OPTIONS {
     "rbd_tracing",
     "rbd_validate_names",
     "rbd_validate_pool",
-    "rbd_mirror_pool_replayers_refresh_interval"
+    "rbd_mirror_pool_replayers_refresh_interval",
+    "rbd_config_pool_override_update_timestamp"
   };
 static std::set<std::string_view> EXCLUDE_IMAGE_OPTIONS {
     "rbd_default_clone_format",
index ae3d43c69679313a99cfe423900c76aba0c4aee3..ea3d43d6e6e9141006a36037805b51413b563555 100644 (file)
@@ -36,6 +36,8 @@ int PoolMetadata<I>::set(librados::IoCtx& io_ctx, const std::string &key,
                          const std::string &value) {
   CephContext *cct = (CephContext *)io_ctx.cct();
 
+  bool update_pool_timestamp = false;
+
   std::string config_key;
   if (util::is_metadata_config_override(key, &config_key)) {
     if (!librbd::api::Config<I>::is_option_name(io_ctx, config_key)) {
@@ -49,6 +51,8 @@ int PoolMetadata<I>::set(librados::IoCtx& io_ctx, const std::string &key,
                  << dendl;
       return -EINVAL;
     }
+
+    update_pool_timestamp = true;
   }
 
   ceph::bufferlist bl;
@@ -61,6 +65,26 @@ int PoolMetadata<I>::set(librados::IoCtx& io_ctx, const std::string &key,
     return r;
   }
 
+  if (update_pool_timestamp) {
+    auto now = ceph_clock_now();
+    std::string cmd =
+      R"({)"
+        R"("prefix": "config set", )"
+        R"("who": "global", )"
+        R"("name": "rbd_config_pool_override_update_timestamp", )"
+        R"("value": ")" + stringify(now.sec()) + R"(")"
+      R"(})";
+
+    librados::Rados rados(io_ctx);
+    bufferlist in_bl;
+    std::string ss;
+    r = rados.mon_command(cmd, in_bl, nullptr, &ss);
+    if (r < 0) {
+      lderr(cct) << "failed to notify clients of pool config update: "
+                 << cpp_strerror(r) << dendl;
+    }
+  }
+
   return 0;
 }
 
index feae4160e521015440965cbbc536bb60d1f9811f..ec8b7fa7e04823658297506b10f2c84961811b1e 100644 (file)
@@ -4,6 +4,7 @@
 #include "librbd/image/CloseRequest.h"
 #include "common/dout.h"
 #include "common/errno.h"
+#include "librbd/ConfigWatcher.h"
 #include "librbd/ExclusiveLock.h"
 #include "librbd/ImageCtx.h"
 #include "librbd/ImageState.h"
@@ -34,6 +35,13 @@ CloseRequest<I>::CloseRequest(I *image_ctx, Context *on_finish)
 
 template <typename I>
 void CloseRequest<I>::send() {
+  if (m_image_ctx->config_watcher != nullptr) {
+    m_image_ctx->config_watcher->shut_down();
+
+    delete m_image_ctx->config_watcher;
+    m_image_ctx->config_watcher = nullptr;
+  }
+
   send_block_image_watcher();
 }
 
index 88d5d62e0e5ab27a981a4f7f5a6c4d3355067119..2e30242e8f425faa7924c114c6956e7ed0ceab53 100644 (file)
@@ -5,6 +5,7 @@
 #include "common/dout.h"
 #include "common/errno.h"
 #include "cls/rbd/cls_rbd_client.h"
+#include "librbd/ConfigWatcher.h"
 #include "librbd/ImageCtx.h"
 #include "librbd/Utils.h"
 #include "librbd/cache/ObjectCacherObjectDispatch.h"
@@ -500,6 +501,9 @@ void OpenRequest<I>::send_refresh() {
   CephContext *cct = m_image_ctx->cct;
   ldout(cct, 10) << this << " " << __func__ << dendl;
 
+  m_image_ctx->config_watcher = ConfigWatcher<I>::create(*m_image_ctx);
+  m_image_ctx->config_watcher->init();
+
   using klass = OpenRequest<I>;
   RefreshRequest<I> *req = RefreshRequest<I>::create(
     *m_image_ctx, false, m_skip_open_parent_image,
index afd4a30d76883180e1269d231b70ee0dbdbd60ce..6644b608bd93e501f0ef5fdcbf2342e86a8dc14a 100644 (file)
@@ -105,21 +105,13 @@ void AioCompletion::complete() {
     } else {
       complete_cb(rbd_comp, complete_arg);
       complete_event_socket();
+      notify_callbacks_complete();
     }
   } else {
     complete_event_socket();
+    notify_callbacks_complete();
   }
-  state = AIO_STATE_COMPLETE;
 
-  {
-    std::unique_lock<std::mutex> locker(lock);
-    cond.notify_all();
-  }
-
-  // note: possible for image to be closed after op marked finished
-  if (async_op.started()) {
-    async_op.finish_op();
-  }
   tracepoint(librbd, aio_complete_exit);
 }
 
@@ -248,27 +240,13 @@ ssize_t AioCompletion::get_return_value() {
 void AioCompletion::complete_external_callback() {
   // ensure librbd external users never experience concurrent callbacks
   // from multiple librbd-internal threads.
-  ictx->external_callback_completions.push(this);
-
-  while (true) {
-    if (ictx->external_callback_in_progress.exchange(true)) {
-      // another thread is concurrently invoking external callbacks
-      break;
-    }
-
-    AioCompletion* aio_comp;
-    while (ictx->external_callback_completions.pop(aio_comp)) {
-      aio_comp->complete_cb(aio_comp->rbd_comp, aio_comp->complete_arg);
-      aio_comp->complete_event_socket();
-    }
-
-    ictx->external_callback_in_progress.store(false);
-    if (ictx->external_callback_completions.empty()) {
-      // queue still empty implies we didn't have a race between the last failed
-      // pop and resetting the in-progress state
-      break;
-    }
-  }
+  get();
+  ictx->op_work_queue->queue(new LambdaContext([this](int r) {
+      complete_cb(rbd_comp, complete_arg);
+      complete_event_socket();
+      notify_callbacks_complete();
+      put();
+    }));
 }
 
 void AioCompletion::complete_event_socket() {
@@ -278,5 +256,19 @@ void AioCompletion::complete_event_socket() {
   }
 }
 
+void AioCompletion::notify_callbacks_complete() {
+  state = AIO_STATE_COMPLETE;
+
+  {
+    std::unique_lock<std::mutex> locker(lock);
+    cond.notify_all();
+  }
+
+  // note: possible for image to be closed after op marked finished
+  if (async_op.started()) {
+    async_op.finish_op();
+  }
+}
+
 } // namespace io
 } // namespace librbd
index 9df547cd2413c8ef5fe9e71c40ecdcf17ee79fd1..ecb3bc66d2cb2418528046878ad4bd7516dd485f 100644 (file)
@@ -179,7 +179,7 @@ private:
   void queue_complete();
   void complete_external_callback();
   void complete_event_socket();
-
+  void notify_callbacks_complete();
 };
 
 class C_AioRequest : public Context {
diff --git a/ceph/src/librbd/io/FlushTracker.cc b/ceph/src/librbd/io/FlushTracker.cc
new file mode 100644 (file)
index 0000000..0a0e102
--- /dev/null
@@ -0,0 +1,125 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "librbd/io/FlushTracker.h"
+#include "common/dout.h"
+#include "librbd/ImageCtx.h"
+#include "librbd/Utils.h"
+
+#define dout_subsys ceph_subsys_rbd
+#undef dout_prefix
+#define dout_prefix *_dout << "librbd::io::FlushTracker: " << this \
+                           << " " << __func__ << ": "
+
+namespace librbd {
+namespace io {
+
+template <typename I>
+FlushTracker<I>::FlushTracker(I* image_ctx)
+  : m_image_ctx(image_ctx),
+    m_lock(ceph::make_shared_mutex(
+      util::unique_lock_name("librbd::io::FlushTracker::m_lock", this))) {
+}
+
+template <typename I>
+FlushTracker<I>::~FlushTracker() {
+  std::unique_lock locker{m_lock};
+  ceph_assert(m_flush_contexts.empty());
+}
+
+template <typename I>
+void FlushTracker<I>::shut_down() {
+  auto cct = m_image_ctx->cct;
+  ldout(cct, 20) << dendl;
+
+  std::unique_lock locker{m_lock};
+  Contexts flush_ctxs;
+  for (auto& [flush_tid, ctxs] : m_flush_contexts) {
+    flush_ctxs.insert(flush_ctxs.end(), ctxs.begin(), ctxs.end());
+  }
+  locker.unlock();
+
+  for (auto ctx : flush_ctxs) {
+    ctx->complete(0);
+  }
+}
+
+template <typename I>
+uint64_t FlushTracker<I>::start_io(uint64_t tid) {
+  auto cct = m_image_ctx->cct;
+
+  std::unique_lock locker{m_lock};
+  auto [it, inserted] = m_tid_to_flush_tid.insert({tid, ++m_next_flush_tid});
+  auto flush_tid = it->second;
+  m_in_flight_flush_tids.insert(flush_tid);
+  locker.unlock();
+
+  ldout(cct, 20) << "tid=" << tid << ", flush_tid=" << flush_tid << dendl;
+  return flush_tid;
+}
+
+template <typename I>
+void FlushTracker<I>::finish_io(uint64_t tid) {
+  auto cct = m_image_ctx->cct;
+
+  std::unique_lock locker{m_lock};
+  auto tid_to_flush_tid_it = m_tid_to_flush_tid.find(tid);
+  if (tid_to_flush_tid_it == m_tid_to_flush_tid.end()) {
+    return;
+  }
+
+  auto flush_tid = tid_to_flush_tid_it->second;
+  m_tid_to_flush_tid.erase(tid_to_flush_tid_it);
+  m_in_flight_flush_tids.erase(flush_tid);
+
+  ldout(cct, 20) << "tid=" << tid << ", flush_tid=" << flush_tid << dendl;
+  auto oldest_flush_tid = std::numeric_limits<uint64_t>::max();
+  if (!m_in_flight_flush_tids.empty()) {
+    oldest_flush_tid = *m_in_flight_flush_tids.begin();
+  }
+
+  // all flushes tagged before the oldest tid should be completed
+  Contexts flush_ctxs;
+  auto flush_contexts_it = m_flush_contexts.begin();
+  while (flush_contexts_it != m_flush_contexts.end()) {
+    if (flush_contexts_it->first >= oldest_flush_tid) {
+      ldout(cct, 20) << "pending IOs: [" << m_in_flight_flush_tids << "], "
+                     << "pending flushes=" << m_flush_contexts << dendl;
+      break;
+    }
+
+    auto& ctxs = flush_contexts_it->second;
+    flush_ctxs.insert(flush_ctxs.end(), ctxs.begin(), ctxs.end());
+    flush_contexts_it = m_flush_contexts.erase(flush_contexts_it);
+  }
+  locker.unlock();
+
+  if (!flush_ctxs.empty()) {
+    ldout(cct, 20) << "completing flushes: " << flush_ctxs << dendl;
+    for (auto ctx : flush_ctxs) {
+      ctx->complete(0);
+    }
+  }
+}
+
+template <typename I>
+void FlushTracker<I>::flush(Context* on_finish) {
+  auto cct = m_image_ctx->cct;
+
+  std::unique_lock locker{m_lock};
+  if (m_in_flight_flush_tids.empty()) {
+    locker.unlock();
+    on_finish->complete(0);
+    return;
+  }
+
+  auto flush_tid = *m_in_flight_flush_tids.rbegin();
+  m_flush_contexts[flush_tid].push_back(on_finish);
+  ldout(cct, 20) << "flush_tid=" << flush_tid << ", ctx=" << on_finish << ", "
+                 << "flush_contexts=" << m_flush_contexts << dendl;
+}
+
+} // namespace io
+} // namespace librbd
+
+template class librbd::io::FlushTracker<librbd::ImageCtx>;
diff --git a/ceph/src/librbd/io/FlushTracker.h b/ceph/src/librbd/io/FlushTracker.h
new file mode 100644 (file)
index 0000000..cc7fcd9
--- /dev/null
@@ -0,0 +1,61 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_LIBRBD_IO_FLUSH_TRACKER_H
+#define CEPH_LIBRBD_IO_FLUSH_TRACKER_H
+
+#include "include/int_types.h"
+#include "common/ceph_mutex.h"
+#include <atomic>
+#include <list>
+#include <map>
+#include <set>
+#include <unordered_map>
+
+struct Context;
+
+namespace librbd {
+
+struct ImageCtx;
+
+namespace io {
+
+struct AioCompletion;
+
+template <typename ImageCtxT>
+class FlushTracker {
+public:
+  FlushTracker(ImageCtxT* image_ctx);
+  ~FlushTracker();
+
+  void shut_down();
+
+  uint64_t start_io(uint64_t tid);
+  void finish_io(uint64_t tid);
+
+  void flush(Context* on_finish);
+
+private:
+  typedef std::list<Context*> Contexts;
+  typedef std::map<uint64_t, Contexts> FlushContexts;
+  typedef std::set<uint64_t> Tids;
+  typedef std::unordered_map<uint64_t, uint64_t> TidToFlushTid;
+
+  ImageCtxT* m_image_ctx;
+
+  std::atomic<uint32_t> m_next_flush_tid{0};
+
+  mutable ceph::shared_mutex m_lock;
+  TidToFlushTid m_tid_to_flush_tid;
+
+  Tids m_in_flight_flush_tids;
+  FlushContexts m_flush_contexts;
+
+};
+
+} // namespace io
+} // namespace librbd
+
+extern template class librbd::io::FlushTracker<librbd::ImageCtx>;
+
+#endif // CEPH_LIBRBD_IO_FLUSH_TRACKER_H
index 2d21418428196da2d04046c8fa9996bfcd447b04..94dd982180f27489f887560edc35547db250b9eb 100644 (file)
@@ -212,6 +212,32 @@ ssize_t ImageRequestWQ<I>::writesame(uint64_t off, uint64_t len,
   return len;
 }
 
+template <typename I>
+ssize_t ImageRequestWQ<I>::write_zeroes(uint64_t off, uint64_t len,
+                                        int zero_flags, int op_flags) {
+  auto cct = m_image_ctx.cct;
+  ldout(cct, 20) << "ictx=" << &m_image_ctx << ", off=" << off << ", "
+                 << "len = " << len << dendl;
+
+  m_image_ctx.image_lock.lock_shared();
+  int r = clip_io(util::get_image_ctx(&m_image_ctx), off, &len);
+  m_image_ctx.image_lock.unlock_shared();
+  if (r < 0) {
+    lderr(cct) << "invalid IO request: " << cpp_strerror(r) << dendl;
+    return r;
+  }
+
+  C_SaferCond ctx;
+  auto aio_comp = io::AioCompletion::create(&ctx);
+  aio_write_zeroes(aio_comp, off, len, zero_flags, op_flags, false);
+
+  r = ctx.wait();
+  if (r < 0) {
+    return r;
+  }
+  return len;
+}
+
 template <typename I>
 ssize_t ImageRequestWQ<I>::compare_and_write(uint64_t off, uint64_t len,
                                              bufferlist &&cmp_bl,
@@ -486,6 +512,62 @@ void ImageRequestWQ<I>::aio_writesame(AioCompletion *c, uint64_t off,
   trace.event("finish");
 }
 
+
+template <typename I>
+void ImageRequestWQ<I>::aio_write_zeroes(io::AioCompletion *aio_comp,
+                                         uint64_t off, uint64_t len,
+                                         int zero_flags, int op_flags,
+                                         bool native_async) {
+  auto cct = m_image_ctx.cct;
+  FUNCTRACE(cct);
+  ZTracer::Trace trace;
+  if (m_image_ctx.blkin_trace_all) {
+    trace.init("io: write_zeroes", &m_image_ctx.trace_endpoint);
+    trace.event("init");
+  }
+
+  aio_comp->init_time(util::get_image_ctx(&m_image_ctx), io::AIO_TYPE_DISCARD);
+  ldout(cct, 20) << "ictx=" << &m_image_ctx << ", "
+                 << "completion=" << aio_comp << ", off=" << off << ", "
+                 << "len=" << len << dendl;
+
+  if (native_async && m_image_ctx.event_socket.is_valid()) {
+    aio_comp->set_event_notify(true);
+  }
+
+  // validate the supported flags
+  if (zero_flags != 0U) {
+    aio_comp->fail(-EINVAL);
+    return;
+  }
+
+  if (!start_in_flight_io(aio_comp)) {
+    return;
+  }
+
+  // enable partial discard (zeroing) of objects
+  uint32_t discard_granularity_bytes = 0;
+
+  auto tid = ++m_last_tid;
+
+  {
+    std::lock_guard locker{m_lock};
+    m_queued_or_blocked_io_tids.insert(tid);
+  }
+
+  auto req = ImageDispatchSpec<I>::create_discard_request(
+    m_image_ctx, aio_comp, off, len, discard_granularity_bytes, trace, tid);
+
+  std::shared_lock owner_locker{m_image_ctx.owner_lock};
+  if (m_image_ctx.non_blocking_aio || writes_blocked()) {
+    queue(req);
+  } else {
+    process_io(req, false);
+    finish_in_flight_io();
+  }
+  trace.event("finish");
+}
+
 template <typename I>
 void ImageRequestWQ<I>::aio_compare_and_write(AioCompletion *c,
                                               uint64_t off, uint64_t len,
index ecbf33f3d20a8794381cd397498134a7f7d555a2..cef18124a61a42a24851da5458a3f9e1edd16092 100644 (file)
@@ -38,6 +38,8 @@ public:
   ssize_t discard(uint64_t off, uint64_t len,
                   uint32_t discard_granularity_bytes);
   ssize_t writesame(uint64_t off, uint64_t len, bufferlist &&bl, int op_flags);
+  ssize_t write_zeroes(uint64_t off, uint64_t len, int zero_flags,
+                       int op_flags);
   ssize_t compare_and_write(uint64_t off, uint64_t len,
                             bufferlist &&cmp_bl, bufferlist &&bl,
                             uint64_t *mismatch_off, int op_flags);
@@ -52,6 +54,8 @@ public:
   void aio_flush(AioCompletion *c, bool native_async=true);
   void aio_writesame(AioCompletion *c, uint64_t off, uint64_t len,
                      bufferlist &&bl, int op_flags, bool native_async=true);
+  void aio_write_zeroes(AioCompletion *c, uint64_t off, uint64_t len,
+                        int zero_flags, int op_flags, bool native_async);
   void aio_compare_and_write(AioCompletion *c, uint64_t off,
                              uint64_t len, bufferlist &&cmp_bl,
                              bufferlist &&bl, uint64_t *mismatch_off,
index 6b6a60c9862bf343863d0b36d51307d6794470d8..808b3b14d27c29d2674c2633ef9a7f0af79eb48a 100644 (file)
@@ -7,6 +7,7 @@
 #include "common/errno.h"
 #include "librbd/ImageCtx.h"
 #include "librbd/Utils.h"
+#include "librbd/io/FlushTracker.h"
 #include "librbd/io/ObjectDispatchSpec.h"
 #include "librbd/io/ObjectDispatcher.h"
 #include "librbd/io/Utils.h"
@@ -174,6 +175,7 @@ template <typename I>
 SimpleSchedulerObjectDispatch<I>::SimpleSchedulerObjectDispatch(
     I* image_ctx)
   : m_image_ctx(image_ctx),
+    m_flush_tracker(new FlushTracker<I>(image_ctx)),
     m_lock(ceph::make_mutex(librbd::util::unique_lock_name(
       "librbd::io::SimpleSchedulerObjectDispatch::lock", this))),
     m_max_delay(image_ctx->config.template get_val<uint64_t>(
@@ -190,6 +192,7 @@ SimpleSchedulerObjectDispatch<I>::SimpleSchedulerObjectDispatch(
 
 template <typename I>
 SimpleSchedulerObjectDispatch<I>::~SimpleSchedulerObjectDispatch() {
+  delete m_flush_tracker;
 }
 
 template <typename I>
@@ -206,6 +209,7 @@ void SimpleSchedulerObjectDispatch<I>::shut_down(Context* on_finish) {
   auto cct = m_image_ctx->cct;
   ldout(cct, 5) << dendl;
 
+  m_flush_tracker->shut_down();
   on_finish->complete(0);
 }
 
@@ -260,6 +264,15 @@ bool SimpleSchedulerObjectDispatch<I>::write(
   std::lock_guard locker{m_lock};
   if (try_delay_write(object_no, object_off, std::move(data), snapc, op_flags,
                       *object_dispatch_flags, on_dispatched)) {
+
+    auto dispatch_seq = ++m_dispatch_seq;
+    m_flush_tracker->start_io(dispatch_seq);
+    *on_finish = new LambdaContext(
+      [this, dispatch_seq, ctx=*on_finish](int r) {
+        ctx->complete(r);
+        m_flush_tracker->finish_io(dispatch_seq);
+      });
+
     *dispatch_result = DISPATCH_RESULT_COMPLETE;
     return true;
   }
@@ -316,10 +329,15 @@ bool SimpleSchedulerObjectDispatch<I>::flush(
   auto cct = m_image_ctx->cct;
   ldout(cct, 20) << dendl;
 
-  std::lock_guard locker{m_lock};
-  dispatch_all_delayed_requests();
+  {
+    std::lock_guard locker{m_lock};
+    dispatch_all_delayed_requests();
+  }
 
-  return false;
+  *dispatch_result = DISPATCH_RESULT_CONTINUE;
+  m_flush_tracker->flush(on_dispatched);
+
+  return true;
 }
 
 template <typename I>
@@ -403,24 +421,30 @@ void SimpleSchedulerObjectDispatch<I>::register_in_flight_request(
   auto it = res.first;
 
   auto dispatch_seq = ++m_dispatch_seq;
+  m_flush_tracker->start_io(dispatch_seq);
+
   it->second->set_dispatch_seq(dispatch_seq);
   *on_finish = new LambdaContext(
     [this, object_no, dispatch_seq, start_time, ctx=*on_finish](int r) {
       ctx->complete(r);
 
-      std::lock_guard locker{m_lock};
+      std::unique_lock locker{m_lock};
       if (m_latency_stats && start_time != utime_t()) {
         auto latency = ceph_clock_now() - start_time;
         m_latency_stats->add(latency.to_nsec());
       }
+
       auto it = m_requests.find(object_no);
       if (it == m_requests.end() ||
           it->second->get_dispatch_seq() != dispatch_seq) {
         ldout(m_image_ctx->cct, 20) << "already dispatched" << dendl;
-        return;
+      } else {
+        dispatch_delayed_requests(it->second);
+        m_requests.erase(it);
       }
-      dispatch_delayed_requests(it->second);
-      m_requests.erase(it);
+      locker.unlock();
+
+      m_flush_tracker->finish_io(dispatch_seq);
     });
 }
 
index e5a88371d7f3a19f2f1d34b9690adbbb05e2cca6..0cab97ff0ada961f8c978e96a64ea037cdc58df5 100644 (file)
@@ -22,6 +22,7 @@ class ImageCtx;
 
 namespace io {
 
+template <typename> class FlushTracker;
 class LatencyStats;
 
 /**
@@ -176,6 +177,8 @@ private:
 
   ImageCtxT *m_image_ctx;
 
+  FlushTracker<ImageCtxT>* m_flush_tracker;
+
   ceph::mutex m_lock;
   SafeTimer *m_timer;
   ceph::mutex *m_timer_lock;
index ca1009e0ee54db351be19b174041bb9f4b09f576..9a3cc3e67d1aaa7c3cc86dd57a0be5a1de1004e9 100644 (file)
@@ -2540,8 +2540,8 @@ namespace librbd {
     }
 
     bool discard_zero = ictx->config.get_val<bool>("rbd_discard_on_zeroed_write_same");
-    if (discard_zero && mem_is_zero(bl.c_str(), bl.length())) {
-      int r = ictx->io_work_queue->discard(ofs, len, 0);
+    if (discard_zero && bl.is_zero()) {
+      int r = ictx->io_work_queue->write_zeroes(ofs, len, 0U, op_flags);
       tracepoint(librbd, writesame_exit, r);
       return r;
     }
@@ -2551,6 +2551,13 @@ namespace librbd {
     return r;
   }
 
+  ssize_t Image::write_zeroes(uint64_t ofs, size_t len, int zero_flags,
+                              int op_flags)
+  {
+    ImageCtx *ictx = (ImageCtx *)ctx;
+    return ictx->io_work_queue->write_zeroes(ofs, len, zero_flags, op_flags);
+  }
+
   ssize_t Image::compare_and_write(uint64_t ofs, size_t len,
                                    ceph::bufferlist &cmp_bl, ceph::bufferlist& bl,
                                    uint64_t *mismatch_off, int op_flags)
@@ -2678,8 +2685,9 @@ namespace librbd {
     }
 
     bool discard_zero = ictx->config.get_val<bool>("rbd_discard_on_zeroed_write_same");
-    if (discard_zero && mem_is_zero(bl.c_str(), bl.length())) {
-      ictx->io_work_queue->aio_discard(get_aio_completion(c), off, len, 0);
+    if (discard_zero && bl.is_zero()) {
+      ictx->io_work_queue->aio_write_zeroes(get_aio_completion(c), off, len, 0U,
+                                            op_flags, true);
       tracepoint(librbd, aio_writesame_exit, 0);
       return 0;
     }
@@ -2690,6 +2698,15 @@ namespace librbd {
     return 0;
   }
 
+  int Image::aio_write_zeroes(uint64_t off, size_t len, RBD::AioCompletion *c,
+                              int zero_flags, int op_flags)
+  {
+    ImageCtx *ictx = (ImageCtx *)ctx;
+    ictx->io_work_queue->aio_write_zeroes(
+      get_aio_completion(c), off, len, zero_flags, op_flags, true);
+    return 0;
+  }
+
   int Image::aio_compare_and_write(uint64_t off, size_t len,
                                    ceph::bufferlist& cmp_bl, ceph::bufferlist& bl,
                                    RBD::AioCompletion *c, uint64_t *mismatch_off,
@@ -5861,7 +5878,7 @@ extern "C" ssize_t rbd_writesame(rbd_image_t image, uint64_t ofs, size_t len,
 
   bool discard_zero = ictx->config.get_val<bool>("rbd_discard_on_zeroed_write_same");
   if (discard_zero && mem_is_zero(buf, data_len)) {
-    int r = ictx->io_work_queue->discard(ofs, len, 0);
+    int r = ictx->io_work_queue->write_zeroes(ofs, len, 0, op_flags);
     tracepoint(librbd, writesame_exit, r);
     return r;
   }
@@ -5873,6 +5890,13 @@ extern "C" ssize_t rbd_writesame(rbd_image_t image, uint64_t ofs, size_t len,
   return r;
 }
 
+extern "C" ssize_t rbd_write_zeroes(rbd_image_t image, uint64_t ofs, size_t len,
+                                    int zero_flags, int op_flags)
+{
+  librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
+  return ictx->io_work_queue->write_zeroes(ofs, len, zero_flags, op_flags);
+}
+
 extern "C" ssize_t rbd_compare_and_write(rbd_image_t image,
                                          uint64_t ofs, size_t len,
                                          const char *cmp_buf,
@@ -6085,7 +6109,8 @@ extern "C" int rbd_aio_writesame(rbd_image_t image, uint64_t off, size_t len,
 
   bool discard_zero = ictx->config.get_val<bool>("rbd_discard_on_zeroed_write_same");
   if (discard_zero && mem_is_zero(buf, data_len)) {
-    ictx->io_work_queue->aio_discard(get_aio_completion(comp), off, len, 0);
+    ictx->io_work_queue->aio_write_zeroes(get_aio_completion(comp), off, len, 0,
+                                          op_flags, true);
     tracepoint(librbd, aio_writesame_exit, 0);
     return 0;
   }
@@ -6099,6 +6124,18 @@ extern "C" int rbd_aio_writesame(rbd_image_t image, uint64_t off, size_t len,
   return 0;
 }
 
+extern "C" int rbd_aio_write_zeroes(rbd_image_t image, uint64_t off, size_t len,
+                                    rbd_completion_t c, int zero_flags,
+                                    int op_flags)
+{
+  librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
+  librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c;
+
+  ictx->io_work_queue->aio_write_zeroes(
+    get_aio_completion(comp), off, len, zero_flags, op_flags, true);
+  return 0;
+}
+
 extern "C" ssize_t rbd_aio_compare_and_write(rbd_image_t image, uint64_t off,
                                              size_t len, const char *cmp_buf,
                                              const char *buf, rbd_completion_t c,
index a8479b53beecb72ed4fd416b944304837d5359bb..536f1a9dc8a223956c3450545484794eb739b154 100644 (file)
@@ -41,7 +41,6 @@ public:
   pthread_t m_thread;
   short m_prio, m_subsys;
 
-private:
   static log_clock& clock() {
     static log_clock clock;
     return clock;
index 924abe983d322e4ed7c44586c70a934865047a2c..68a884e7111efe1706fc92ae97f54c581b58e96e 100644 (file)
@@ -62,9 +62,9 @@ Log::~Log()
 void Log::set_coarse_timestamps(bool coarse) {
   std::scoped_lock lock(m_flush_mutex);
   if (coarse)
-    clock.coarsen();
+    Entry::clock().coarsen();
   else
-    clock.refine();
+    Entry::clock().refine();
 }
 
 void Log::set_flush_on_exit()
index 9c7f53425b650badbf63298da195a7f1d29536d2..2947a63f133fe58f1fd40d6f96720f31b070590c 100644 (file)
@@ -33,7 +33,6 @@ class Log : private Thread
   static const std::size_t DEFAULT_MAX_RECENT = 10000;
 
   Log **m_indirect_this;
-  log_clock clock;
 
   const SubsystemMap *m_subs;
 
index 7d6d69337fcf27ad93b77be8e5016c275d8a0901..67f46df98a51b5e1ce8dad842b8b516b31494721 100644 (file)
@@ -1857,6 +1857,7 @@ CDentry *CDir::_load_dentry(
         if (in->inode.is_dirty_rstat())
           in->mark_dirty_rstat();
 
+        in->maybe_ephemeral_rand(true);
         //in->hack_accessed = false;
         //in->hack_load_stamp = ceph_clock_now();
         //num_new_inodes_loaded++;
index 24a56c8f428ce1dde89a2f5e2848bd18bec83be6..551d2bf0b4538be1f43ebb2644278cbd516693e8 100644 (file)
@@ -273,6 +273,12 @@ ostream& operator<<(ostream& out, const CInode& in)
   if (in.inode.export_pin != MDS_RANK_NONE) {
     out << " export_pin=" << in.inode.export_pin;
   }
+  if (in.state_test(CInode::STATE_DISTEPHEMERALPIN)) {
+    out << " distepin";
+  }
+  if (in.state_test(CInode::STATE_RANDEPHEMERALPIN)) {
+    out << " randepin";
+  }
 
   out << " " << &in;
   out << "]";
@@ -443,16 +449,24 @@ CInode::projected_inode &CInode::project_inode(bool xattr, bool snap)
 void CInode::pop_and_dirty_projected_inode(LogSegment *ls) 
 {
   ceph_assert(!projected_nodes.empty());
-  auto &front = projected_nodes.front();
+  auto& front = projected_nodes.front();
+
   dout(15) << __func__ << " " << front.inode.ino
           << " v" << front.inode.version << dendl;
+
   int64_t old_pool = inode.layout.pool_id;
+  bool pin_update = inode.export_pin != front.inode.export_pin;
+  bool dist_update = inode.export_ephemeral_distributed_pin
+                     != front.inode.export_ephemeral_distributed_pin;
 
   mark_dirty(front.inode.version, ls);
-  bool new_export_pin = inode.export_pin != front.inode.export_pin;
-  inode = front.inode;
-  if (new_export_pin)
+
+  inode = std::move(front.inode);
+
+  if (pin_update)
     maybe_export_pin(true);
+  if (dist_update)
+    maybe_ephemeral_dist_children(true);
 
   if (inode.is_backtrace_updated())
     mark_dirty_parent(ls, old_pool != inode.layout.pool_id);
@@ -821,7 +835,7 @@ CDir *CInode::add_dirfrag(CDir *dir)
     dir->get(CDir::PIN_STICKY);
   }
 
-  maybe_export_pin();
+  maybe_pin();
 
   return dir;
 }
@@ -2007,20 +2021,22 @@ void CInode::decode_lock_iflock(bufferlist::const_iterator& p)
 
 void CInode::encode_lock_ipolicy(bufferlist& bl)
 {
-  ENCODE_START(1, 1, bl);
+  ENCODE_START(2, 1, bl);
   if (inode.is_dir()) {
     encode(inode.version, bl);
     encode(inode.ctime, bl);
     encode(inode.layout, bl, mdcache->mds->mdsmap->get_up_features());
     encode(inode.quota, bl);
     encode(inode.export_pin, bl);
+    encode(inode.export_ephemeral_distributed_pin, bl);
+    encode(inode.export_ephemeral_random_pin, bl);
   }
   ENCODE_FINISH(bl);
 }
 
 void CInode::decode_lock_ipolicy(bufferlist::const_iterator& p)
 {
-  DECODE_START(1, p);
+  DECODE_START(2, p);
   if (inode.is_dir()) {
     decode(inode.version, p);
     utime_t tm;
@@ -2028,9 +2044,19 @@ void CInode::decode_lock_ipolicy(bufferlist::const_iterator& p)
     if (inode.ctime < tm) inode.ctime = tm;
     decode(inode.layout, p);
     decode(inode.quota, p);
-    mds_rank_t old_pin = inode.export_pin;
-    decode(inode.export_pin, p);
-    maybe_export_pin(old_pin != inode.export_pin);
+    {
+      mds_rank_t old_pin = inode.export_pin;
+      decode(inode.export_pin, p);
+      maybe_export_pin(old_pin != inode.export_pin);
+    }
+    if (struct_v >= 2) {
+      {
+        bool old_ephemeral_pin = inode.export_ephemeral_distributed_pin;
+        decode(inode.export_ephemeral_distributed_pin, p);
+        maybe_ephemeral_dist_children(old_ephemeral_pin != inode.export_ephemeral_distributed_pin);
+      }
+      decode(inode.export_ephemeral_random_pin, p);
+    }
   }
   DECODE_FINISH(p);
 }
@@ -3173,9 +3199,12 @@ void CInode::choose_lock_state(SimpleLock *lock, int allissued)
     } else if (lock->get_state() != LOCK_MIX) {
       if (issued & (CEPH_CAP_GEXCL | CEPH_CAP_GBUFFER))
        lock->set_state(LOCK_EXCL);
-      else if (issued & CEPH_CAP_GWR)
-       lock->set_state(LOCK_MIX);
-      else if (lock->is_dirty()) {
+      else if (issued & CEPH_CAP_GWR) {
+        if (issued & (CEPH_CAP_GCACHE | CEPH_CAP_GSHARED))
+          lock->set_state(LOCK_EXCL);
+        else
+          lock->set_state(LOCK_MIX);
+      } else if (lock->is_dirty()) {
        if (is_replicated())
          lock->set_state(LOCK_MIX);
        else
@@ -4246,9 +4275,20 @@ void CInode::decode_import(bufferlist::const_iterator& p,
 
   _decode_base(p);
 
-  unsigned s;
-  decode(s, p);
-  state_set(STATE_AUTH | (s & MASK_STATE_EXPORTED));
+  {
+    unsigned s;
+    decode(s, p);
+    s &= MASK_STATE_EXPORTED;
+
+    if (s & STATE_RANDEPHEMERALPIN) {
+      set_ephemeral_rand(true);
+    }
+    if (s & STATE_DISTEPHEMERALPIN) {
+      set_ephemeral_dist(true);
+    }
+
+    state_set(STATE_AUTH | s);
+  }
 
   if (is_dirty()) {
     get(PIN_DIRTY);
@@ -5150,30 +5190,21 @@ int64_t CInode::get_backtrace_pool() const
   }
 }
 
-void CInode::maybe_export_pin(bool update)
+void CInode::queue_export_pin(mds_rank_t target)
 {
-  if (!g_conf()->mds_bal_export_pin)
-    return;
-  if (!is_dir() || !is_normal())
-    return;
-
-  mds_rank_t export_pin = get_export_pin(false);
-  if (export_pin == MDS_RANK_NONE && !update)
-    return;
-
   if (state_test(CInode::STATE_QUEUEDEXPORTPIN))
     return;
 
   bool queue = false;
-  for (auto p = dirfrags.begin(); p != dirfrags.end(); p++) {
-    CDir *dir = p->second;
+  for (auto& p : dirfrags) {
+    CDir *dir = p.second;
     if (!dir->is_auth())
       continue;
-    if (export_pin != MDS_RANK_NONE) {
+    if (target != MDS_RANK_NONE) {
       if (dir->is_subtree_root()) {
        // set auxsubtree bit or export it
        if (!dir->state_test(CDir::STATE_AUXSUBTREE) ||
-           export_pin != dir->get_dir_auth().first)
+           target != dir->get_dir_auth().first)
          queue = true;
       } else {
        // create aux subtree or export it
@@ -5191,6 +5222,184 @@ void CInode::maybe_export_pin(bool update)
   }
 }
 
+void CInode::maybe_export_pin(bool update)
+{
+  if (!g_conf()->mds_bal_export_pin)
+    return;
+  if (!is_dir() || !is_normal())
+    return;
+
+  dout(15) << __func__ << " update=" << update << " " << *this << dendl;
+
+  mds_rank_t export_pin = get_export_pin(false, false);
+  if (export_pin == MDS_RANK_NONE && !update) {
+    return;
+  }
+
+  /* disable ephemeral pins */
+  set_ephemeral_dist(false);
+  set_ephemeral_rand(false);
+  queue_export_pin(export_pin);
+}
+
+void CInode::set_ephemeral_dist(bool yes)
+{
+  if (yes) {
+    if (!state_test(CInode::STATE_DISTEPHEMERALPIN)) {
+      state_set(CInode::STATE_DISTEPHEMERALPIN);
+      auto p = mdcache->dist_ephemeral_pins.insert(this);
+      ceph_assert(p.second);
+    }
+  } else {
+    /* avoid std::set::erase if unnecessary */
+    if (state_test(CInode::STATE_DISTEPHEMERALPIN)) {
+      dout(10) << "clearing ephemeral distributed pin on " << *this << dendl;
+      state_clear(CInode::STATE_DISTEPHEMERALPIN);
+      auto count = mdcache->dist_ephemeral_pins.erase(this);
+      ceph_assert(count == 1);
+      queue_export_pin(MDS_RANK_NONE);
+    }
+  }
+}
+
+void CInode::maybe_ephemeral_dist(bool update)
+{
+  if (!mdcache->get_export_ephemeral_distributed_config()) {
+    dout(15) << __func__ << " config false: cannot ephemeral distributed pin " << *this << dendl;
+    set_ephemeral_dist(false);
+    return;
+  } else if (!is_dir() || !is_normal()) {
+    dout(15) << __func__ << " !dir or !normal: cannot ephemeral distributed pin " << *this << dendl;
+    set_ephemeral_dist(false);
+    return;
+  } else if (get_inode().nlink == 0) {
+    dout(15) << __func__ << " unlinked directory: cannot ephemeral distributed pin " << *this << dendl;
+    set_ephemeral_dist(false);
+    return;
+  } else if (!update && state_test(CInode::STATE_DISTEPHEMERALPIN)) {
+    dout(15) << __func__ << " requeueing already pinned " << *this << dendl;
+    queue_export_pin(mdcache->hash_into_rank_bucket(ino()));
+    return;
+  }
+
+  dout(15) << __func__ << " update=" << update << " " << *this << dendl;
+
+  auto dir = get_parent_dir();
+  if (!dir) {
+    return;
+  }
+
+  bool pin = dir->get_inode()->get_inode().export_ephemeral_distributed_pin;
+  if (pin) {
+    dout(10) << __func__ << "  ephemeral distributed pinning " << *this << dendl;
+    set_ephemeral_dist(true);
+    queue_export_pin(mdcache->hash_into_rank_bucket(ino()));
+  } else if (update) {
+    set_ephemeral_dist(false);
+    queue_export_pin(MDS_RANK_NONE);
+  }
+}
+
+void CInode::maybe_ephemeral_dist_children(bool update)
+{
+  if (!mdcache->get_export_ephemeral_distributed_config()) {
+    dout(15) << __func__ << " config false: cannot ephemeral distributed pin " << *this << dendl;
+    return;
+  } else if (!is_dir() || !is_normal()) {
+    dout(15) << __func__ << " !dir or !normal: cannot ephemeral distributed pin " << *this << dendl;
+    return;
+  } else if (get_inode().nlink == 0) {
+    dout(15) << __func__ << " unlinked directory: cannot ephemeral distributed pin " << *this << dendl;
+    return;
+  }
+
+  bool pin = get_inode().export_ephemeral_distributed_pin;
+  /* FIXME: expensive to iterate children when not updating */
+  if (!pin && !update) {
+    return;
+  }
+
+  dout(10) << __func__ << " maybe ephemerally pinning children of " << *this << dendl;
+  for (auto& p : dirfrags) {
+    auto& dir = p.second;
+    for (auto& q : *dir) {
+      auto& dn = q.second;
+      auto&& in = dn->get_linkage()->get_inode();
+      if (in && in->is_dir()) {
+        in->maybe_ephemeral_dist(update);
+      }
+    }
+  }
+}
+
+void CInode::set_ephemeral_rand(bool yes)
+{
+  if (yes) {
+    if (!state_test(CInode::STATE_RANDEPHEMERALPIN)) {
+      state_set(CInode::STATE_RANDEPHEMERALPIN);
+      auto p = mdcache->rand_ephemeral_pins.insert(this);
+      ceph_assert(p.second);
+    }
+  } else {
+    if (state_test(CInode::STATE_RANDEPHEMERALPIN)) {
+      dout(10) << "clearing ephemeral random pin on " << *this << dendl;
+      state_clear(CInode::STATE_RANDEPHEMERALPIN);
+      auto count = mdcache->rand_ephemeral_pins.erase(this);
+      ceph_assert(count == 1);
+      queue_export_pin(MDS_RANK_NONE);
+    }
+  }
+}
+
+void CInode::maybe_ephemeral_rand(bool fresh)
+{
+  if (!mdcache->get_export_ephemeral_random_config()) {
+    dout(15) << __func__ << " config false: cannot ephemeral random pin " << *this << dendl;
+    set_ephemeral_rand(false);
+    return;
+  } else if (!is_dir() || !is_normal()) {
+    dout(15) << __func__ << " !dir or !normal: cannot ephemeral random pin " << *this << dendl;
+    set_ephemeral_rand(false);
+    return;
+  } else if (get_inode().nlink == 0) {
+    dout(15) << __func__ << " unlinked directory: cannot ephemeral random pin " << *this << dendl;
+    set_ephemeral_rand(false);
+    return;
+  } else if (state_test(CInode::STATE_RANDEPHEMERALPIN)) {
+    dout(10) << __func__ << " already ephemeral random pinned: requeueing " << *this << dendl;
+    queue_export_pin(mdcache->hash_into_rank_bucket(ino()));
+    return;
+  } else if (!fresh) {
+    return;
+  }
+
+  double threshold = get_ephemeral_rand();
+  double n = ceph::util::generate_random_number(0.0, 1.0);
+
+  dout(15) << __func__ << " rand " << n << " <?= " << threshold
+           << " " << *this << dendl;
+
+  if (n <= threshold) {
+    dout(10) << __func__ << " randomly export pinning " << *this << dendl;
+    set_ephemeral_rand(true);
+    queue_export_pin(mdcache->hash_into_rank_bucket(ino()));
+  }
+}
+
+void CInode::setxattr_ephemeral_rand(double probability)
+{
+  ceph_assert(is_dir());
+  ceph_assert(is_projected());
+  get_projected_inode()->export_ephemeral_random_pin = probability;
+}
+
+void CInode::setxattr_ephemeral_dist(bool val)
+{
+  ceph_assert(is_dir());
+  ceph_assert(is_projected());
+  get_projected_inode()->export_ephemeral_distributed_pin = val;
+}
+
 void CInode::set_export_pin(mds_rank_t rank)
 {
   ceph_assert(is_dir());
@@ -5198,7 +5407,35 @@ void CInode::set_export_pin(mds_rank_t rank)
   get_projected_inode()->export_pin = rank;
 }
 
-mds_rank_t CInode::get_export_pin(bool inherit) const
+void CInode::check_pin_policy()
+{
+  const CInode *in = this;
+  mds_rank_t etarget = MDS_RANK_NONE;
+  while (true) {
+    if (in->is_system())
+      break;
+    const CDentry *pdn = in->get_parent_dn();
+    if (!pdn)
+      break;
+    if (in->get_inode().nlink == 0) {
+      // ignore export pin for unlinked directory
+      return;
+    } else if (etarget != MDS_RANK_NONE && in->has_ephemeral_policy()) {
+      return;
+    } else if (in->get_inode().export_pin >= 0) {
+      /* clear any epin policy */
+      set_ephemeral_dist(false);
+      set_ephemeral_rand(false);
+      return;
+    } else if (etarget == MDS_RANK_NONE && in->is_ephemerally_pinned()) {
+      /* If a parent overrides a grandparent ephemeral pin policy with an export pin, we use that export pin instead. */
+      etarget = mdcache->hash_into_rank_bucket(in->ino());
+    }
+    in = pdn->get_dir()->inode;
+  }
+}
+
+mds_rank_t CInode::get_export_pin(bool inherit, bool ephemeral) const
 {
   /* An inode that is export pinned may not necessarily be a subtree root, we
    * need to traverse the parents. A base or system inode cannot be pinned.
@@ -5206,6 +5443,41 @@ mds_rank_t CInode::get_export_pin(bool inherit) const
    * have a parent yet.
    */
   const CInode *in = this;
+  mds_rank_t etarget = MDS_RANK_NONE;
+  while (true) {
+    if (in->is_system())
+      break;
+    const CDentry *pdn = in->get_parent_dn();
+    if (!pdn)
+      break;
+    if (in->get_inode().nlink == 0) {
+      // ignore export pin for unlinked directory
+      return MDS_RANK_NONE;
+    } else if (etarget != MDS_RANK_NONE && in->has_ephemeral_policy()) {
+      return etarget;
+    } else if (in->get_inode().export_pin >= 0) {
+      return in->get_inode().export_pin;
+    } else if (etarget == MDS_RANK_NONE && ephemeral && in->is_ephemerally_pinned()) {
+      /* If a parent overrides a grandparent ephemeral pin policy with an export pin, we use that export pin instead. */
+      etarget = mdcache->hash_into_rank_bucket(in->ino());
+      if (!inherit) return etarget;
+    }
+
+    if (!inherit) {
+      break;
+    }
+    in = pdn->get_dir()->inode;
+  }
+  return MDS_RANK_NONE;
+}
+
+double CInode::get_ephemeral_rand(bool inherit) const
+{
+  /* N.B. inodes not yet linked into a dir (i.e. anonymous inodes) will not
+   * have a parent yet.
+   */
+  const CInode *in = this;
+  double max = mdcache->export_ephemeral_random_max;
   while (true) {
     if (in->is_system())
       break;
@@ -5215,14 +5487,21 @@ mds_rank_t CInode::get_export_pin(bool inherit) const
     // ignore export pin for unlinked directory
     if (in->get_inode().nlink == 0)
       break;
+
+    if (in->get_inode().export_ephemeral_random_pin > 0.0)
+      return std::min(in->get_inode().export_ephemeral_random_pin, max);
+
+    /* An export_pin overrides only if no closer parent (incl. this one) has a
+     * random pin set.
+     */
     if (in->get_inode().export_pin >= 0)
-      return in->get_inode().export_pin;
+      return 0.0;
 
     if (!inherit)
       break;
     in = pdn->get_dir()->inode;
   }
-  return MDS_RANK_NONE;
+  return 0.0;
 }
 
 bool CInode::is_exportable(mds_rank_t dest) const
index c50815e94fe0d01c23b50aca06e277935a09b046..22cdc6e7bef32f64bdca73692a63280896b547de 100644 (file)
@@ -321,14 +321,30 @@ class CInode : public MDSCacheObject, public InodeStoreBase, public Counter<CIno
   static const int STATE_QUEUEDEXPORTPIN       = (1<<17);
   static const int STATE_TRACKEDBYOFT          = (1<<18);  // tracked by open file table
   static const int STATE_DELAYEDEXPORTPIN      = (1<<19);
+  static const int STATE_DISTEPHEMERALPIN       = (1<<20);
+  static const int STATE_RANDEPHEMERALPIN       = (1<<21);
   // orphan inode needs notification of releasing reference
   static const int STATE_ORPHAN =      STATE_NOTIFYREF;
 
   static const int MASK_STATE_EXPORTED =
-    (STATE_DIRTY|STATE_NEEDSRECOVER|STATE_DIRTYPARENT|STATE_DIRTYPOOL);
+    (STATE_DIRTY|STATE_NEEDSRECOVER|STATE_DIRTYPARENT|STATE_DIRTYPOOL|
+    STATE_DISTEPHEMERALPIN|STATE_RANDEPHEMERALPIN);
   static const int MASK_STATE_EXPORT_KEPT =
     (STATE_FROZEN|STATE_AMBIGUOUSAUTH|STATE_EXPORTINGCAPS|
-     STATE_QUEUEDEXPORTPIN|STATE_TRACKEDBYOFT|STATE_DELAYEDEXPORTPIN);
+     STATE_QUEUEDEXPORTPIN|STATE_TRACKEDBYOFT|STATE_DELAYEDEXPORTPIN|
+     STATE_DISTEPHEMERALPIN|STATE_RANDEPHEMERALPIN);
+
+  /* These are for "permanent" state markers that are passed around between
+   * MDS. Nothing protects/updates it like a typical MDS lock.
+   *
+   * Currently, we just use this for REPLICATED inodes. The reason we need to
+   * replicate the random epin state is because the directory inode is still
+   * under the authority of the parent subtree. So it's not exported normally
+   * and we can't pass around the state that way. The importer of the dirfrags
+   * still needs to know that the inode is random pinned though otherwise it
+   * doesn't know that the dirfrags are pinned.
+   */
+  static const int MASK_STATE_REPLICATED = STATE_RANDEPHEMERALPIN;
 
   // -- waiters --
   static const uint64_t WAIT_DIR         = (1<<0);
@@ -905,11 +921,45 @@ class CInode : public MDSCacheObject, public InodeStoreBase, public Counter<CIno
     return !projected_parent.empty();
   }
 
-  void maybe_export_pin(bool update=false);
+  mds_rank_t get_export_pin(bool inherit=true, bool ephemeral=true) const;
   void set_export_pin(mds_rank_t rank);
-  mds_rank_t get_export_pin(bool inherit=true) const;
+  void queue_export_pin(mds_rank_t target);
+  void maybe_export_pin(bool update=false);
+
+  void check_pin_policy();
+
+  void set_ephemeral_dist(bool yes);
+  void maybe_ephemeral_dist(bool update=false);
+  void maybe_ephemeral_dist_children(bool update=false);
+  void setxattr_ephemeral_dist(bool val=false);
+  bool is_ephemeral_dist() const {
+    return state_test(STATE_DISTEPHEMERALPIN);
+  }
+
+  double get_ephemeral_rand(bool inherit=true) const;
+  void set_ephemeral_rand(bool yes);
+  void maybe_ephemeral_rand(bool fresh=false);
+  void setxattr_ephemeral_rand(double prob=0.0);
+  bool is_ephemeral_rand() const {
+    return state_test(STATE_RANDEPHEMERALPIN);
+  }
+
+  bool has_ephemeral_policy() const {
+    return get_inode().export_ephemeral_random_pin > 0.0 ||
+           get_inode().export_ephemeral_distributed_pin;
+  }
+  bool is_ephemerally_pinned() const {
+    return state_test(STATE_DISTEPHEMERALPIN) ||
+           state_test(STATE_RANDEPHEMERALPIN);
+  }
   bool is_exportable(mds_rank_t dest) const;
 
+  void maybe_pin() {
+    maybe_export_pin();
+    maybe_ephemeral_dist();
+    maybe_ephemeral_rand();
+  }
+
   void print(ostream& out) override;
   void dump(Formatter *f, int flags = DUMP_DEFAULT) const;
 
index a1b8508f54e32adcd8ea6677423d68190b59bfd8..76241bcb4bc37e25c6c4ff40ec27638a4810f2dc 100644 (file)
@@ -99,20 +99,23 @@ void MDBalancer::handle_export_pins(void)
     auto cur = it++;
     CInode *in = *cur;
     ceph_assert(in->is_dir());
+
+    in->check_pin_policy();
     mds_rank_t export_pin = in->get_export_pin(false);
     if (export_pin >= mds->mdsmap->get_max_mds()) {
-      dout(20) << " delay export pin on " << *in << dendl;
+      dout(20) << " delay export_pin=" << export_pin << " on " << *in << dendl;
       in->state_clear(CInode::STATE_QUEUEDEXPORTPIN);
       q.erase(cur);
 
       in->state_set(CInode::STATE_DELAYEDEXPORTPIN);
       mds->mdcache->export_pin_delayed_queue.insert(in);
       continue;
+    } else {
+      dout(20) << " executing export_pin=" << export_pin << " on " << *in << dendl;
     }
 
     bool remove = true;
-    auto&& dfls = in->get_dirfrags();
-    for (auto dir : dfls) {
+    for (auto&& dir : in->get_dirfrags()) {
       if (!dir->is_auth())
        continue;
 
@@ -128,22 +131,28 @@ void MDBalancer::handle_export_pins(void)
          mds->mdcache->try_subtree_merge(dir);
        }
       } else if (export_pin == mds->get_nodeid()) {
-       if (dir->state_test(CDir::STATE_CREATING) ||
-           dir->is_frozen() || dir->is_freezing()) {
+        if (dir->state_test(CDir::STATE_AUXSUBTREE)) {
+          ceph_assert(dir->is_subtree_root());
+        } else if (dir->state_test(CDir::STATE_CREATING) ||
+                  dir->is_frozen() || dir->is_freezing()) {
          // try again later
          remove = false;
          continue;
-       }
-       if (!dir->is_subtree_root()) {
+       } else if (!dir->is_subtree_root()) {
          dir->state_set(CDir::STATE_AUXSUBTREE);
          mds->mdcache->adjust_subtree_auth(dir, mds->get_nodeid());
          dout(10) << " create aux subtree on " << *dir << dendl;
-       } else if (!dir->state_test(CDir::STATE_AUXSUBTREE)) {
+       } else {
          dout(10) << " set auxsubtree bit on " << *dir << dendl;
          dir->state_set(CDir::STATE_AUXSUBTREE);
        }
       } else {
-       mds->mdcache->migrator->export_dir(dir, export_pin);
+        /* Only export a directory if it's non-empty. An empty directory will
+         * be sent back by the importer.
+         */
+        if (dir->get_num_head_items() > 0) {
+         mds->mdcache->migrator->export_dir(dir, export_pin);
+        }
        remove = false;
       }
     }
@@ -172,9 +181,12 @@ void MDBalancer::handle_export_pins(void)
                  dendl;
     }
 
-    if (export_pin >= 0 && export_pin < mds->mdsmap->get_max_mds() 
-       && export_pin != mds->get_nodeid()) {
-      mds->mdcache->migrator->export_dir(cd, export_pin);
+    if (export_pin >= 0 && export_pin < mds->mdsmap->get_max_mds()) {
+      if (export_pin == mds->get_nodeid()) {
+        cd->get_inode()->check_pin_policy();
+      } else {
+        mds->mdcache->migrator->export_dir(cd, export_pin);
+      }
     }
   }
 }
index c6d85a5aed6e289003fcc74ee34da0509e9545ae..732466f505bc25167244484e43c9c3c082a2206a 100644 (file)
@@ -49,6 +49,8 @@ public:
    */
   void tick();
 
+  void handle_export_pins(void);
+
   void subtract_export(CDir *ex);
   void add_import(CDir *im);
   void adjust_pop_for_rename(CDir *pdir, CDir *dir, bool inc);
@@ -83,8 +85,6 @@ private:
   void prep_rebalance(int beat);
   int mantle_prep_rebalance();
 
-  void handle_export_pins(void);
-
   mds_load_t get_load();
   int localize_balancer();
   void send_heartbeat();
index 325cbfc88ecef8e58bd869805537dbaa38b61607..88eece19f00bb485c42581b7cc838641626986bd 100644 (file)
@@ -153,6 +153,10 @@ MDCache::MDCache(MDSRank *m, PurgeQueue &purge_queue_) :
   cache_health_threshold = g_conf().get_val<double>("mds_health_cache_threshold");
   forward_all_requests_to_auth = g_conf().get_val<bool>("mds_forward_all_requests_to_auth");
 
+  export_ephemeral_distributed_config =  g_conf().get_val<bool>("mds_export_ephemeral_distributed");
+  export_ephemeral_random_config =  g_conf().get_val<bool>("mds_export_ephemeral_random");
+  export_ephemeral_random_max = g_conf().get_val<double>("mds_export_ephemeral_random_max");
+
   lru.lru_set_midpoint(g_conf().get_val<double>("mds_cache_mid"));
 
   bottom_lru.lru_set_midpoint(0);
@@ -213,10 +217,36 @@ MDCache::~MDCache()
 
 void MDCache::handle_conf_change(const std::set<std::string>& changed, const MDSMap& mdsmap)
 {
+  dout(20) << "config changes: " << changed << dendl;
   if (changed.count("mds_cache_memory_limit"))
     cache_memory_limit = g_conf().get_val<Option::size_t>("mds_cache_memory_limit");
   if (changed.count("mds_cache_reservation"))
     cache_reservation = g_conf().get_val<double>("mds_cache_reservation");
+  if (changed.count("mds_export_ephemeral_distributed")) {
+    export_ephemeral_distributed_config = g_conf().get_val<bool>("mds_export_ephemeral_distributed");
+    dout(10) << "Migrating any ephemeral distributed pinned inodes" << dendl;
+    /* copy to vector to avoid removals during iteration */
+    std::vector<CInode*> migrate;
+    migrate.assign(dist_ephemeral_pins.begin(), dist_ephemeral_pins.end());
+    for (auto& in : migrate) {
+      in->maybe_ephemeral_dist();
+    }
+    mds->balancer->handle_export_pins();
+  }
+  if (changed.count("mds_export_ephemeral_random")) {
+    export_ephemeral_random_config = g_conf().get_val<bool>("mds_export_ephemeral_random");
+    dout(10) << "Migrating any ephemeral random pinned inodes" << dendl;
+    /* copy to vector to avoid removals during iteration */
+    std::vector<CInode*> migrate;
+    migrate.assign(rand_ephemeral_pins.begin(), rand_ephemeral_pins.end());
+    for (auto& in : migrate) {
+      in->maybe_ephemeral_rand();
+    }
+    mds->balancer->handle_export_pins();
+  }
+  if (changed.count("mds_export_ephemeral_random_max")) {
+    export_ephemeral_random_max = g_conf().get_val<double>("mds_export_ephemeral_random_max");
+  }
   if (changed.count("mds_health_cache_threshold"))
     cache_health_threshold = g_conf().get_val<double>("mds_health_cache_threshold");
   if (changed.count("mds_cache_mid"))
@@ -301,6 +331,8 @@ void MDCache::add_inode(CInode *in)
   if (cache_toofull()) {
     exceeded_size_limit = true;
   }
+
+  in->maybe_ephemeral_dist(false);
 }
 
 void MDCache::remove_inode(CInode *o) 
@@ -329,6 +361,9 @@ void MDCache::remove_inode(CInode *o)
   if (o->state_test(CInode::STATE_DELAYEDEXPORTPIN))
     export_pin_delayed_queue.erase(o);
 
+  o->set_ephemeral_dist(false);
+  o->set_ephemeral_rand(false);
+
   // remove from inode map
   if (o->last == CEPH_NOSNAP) {
     inode_map.erase(o->ino());
@@ -830,6 +865,27 @@ MDSCacheObject *MDCache::get_object(const MDSCacheObjectInfo &info)
 }
 
 
+// ====================================================================
+// consistent hash ring
+
+/*
+ * hashing implementation based on Lamping and Veach's Jump Consistent Hash: https://arxiv.org/pdf/1406.2294.pdf
+*/
+mds_rank_t MDCache::hash_into_rank_bucket(inodeno_t ino)
+{
+  const mds_rank_t max_mds = mds->mdsmap->get_max_mds();
+  uint64_t hash = rjhash64(ino);
+  int64_t b = -1, j = 0;
+  while (j < max_mds) {
+    b = j;
+    hash = hash*2862933555777941757ULL + 1;
+    j = (b + 1) * (double(1LL << 31) / double((hash >> 33) + 1));
+  }
+  // verify bounds before returning
+  auto result = mds_rank_t(b);
+  ceph_assert(result >= 0 && result < max_mds);
+  return result;
+}
 
 
 // ====================================================================
@@ -905,6 +961,11 @@ void MDCache::adjust_subtree_auth(CDir *dir, mds_authority_t auth, bool adjust_p
     }
   }
 
+  if (dir->is_auth()) {
+    /* do this now that we are auth for the CDir */
+    dir->inode->maybe_pin();
+  }
+
   show_subtrees();
 }
 
@@ -1265,14 +1326,16 @@ CDir *MDCache::get_projected_subtree_root(CDir *dir)
 void MDCache::remove_subtree(CDir *dir)
 {
   dout(10) << "remove_subtree " << *dir << dendl;
-  ceph_assert(subtrees.count(dir));
-  ceph_assert(subtrees[dir].empty());
-  subtrees.erase(dir);
+  auto it = subtrees.find(dir);
+  ceph_assert(it != subtrees.end());
+  subtrees.erase(it);
   dir->put(CDir::PIN_SUBTREE);
   if (dir->get_parent_dir()) {
     CDir *p = get_subtree_root(dir->get_parent_dir());
-    ceph_assert(subtrees[p].count(dir));
-    subtrees[p].erase(dir);
+    auto it = subtrees.find(p);
+    ceph_assert(it != subtrees.end());
+    auto count = it->second.erase(dir);
+    ceph_assert(count == 1);
   }
 }
 
@@ -2513,11 +2576,7 @@ ESubtreeMap *MDCache::create_subtree_map()
 
   // include all auth subtrees, and their bounds.
   // and a spanning tree to tie it to the root.
-  for (map<CDir*, set<CDir*> >::iterator p = subtrees.begin();
-       p != subtrees.end();
-       ++p) {
-    CDir *dir = p->first;
-
+  for (auto& [dir, bounds] : subtrees) {
     // journal subtree as "ours" if we are
     //   me, -2
     //   me, me
@@ -2533,19 +2592,21 @@ ESubtreeMap *MDCache::create_subtree_map()
       dout(15) << " ambig subtree " << *dir << dendl;
       le->ambiguous_subtrees.insert(dir->dirfrag());
     } else {
-      dout(15) << " subtree " << *dir << dendl;
+      dout(15) << " auth subtree " << *dir << dendl;
     }
 
     dirs_to_add[dir->dirfrag()] = dir;
     le->subtrees[dir->dirfrag()].clear();
 
-
     // bounds
-    for (set<CDir*>::iterator q = p->second.begin();
-        q != p->second.end();
-        ++q) {
-      CDir *bound = *q;
-      dout(15) << " subtree bound " << *bound << dendl;
+    size_t nbounds = bounds.size();
+    if (nbounds > 3) {
+      dout(15) << "  subtree has " << nbounds << " bounds" << dendl;
+    }
+    for (auto& bound : bounds) {
+      if (nbounds <= 3) {
+        dout(15) << "  subtree bound " << *bound << dendl;
+      }
       dirs_to_add[bound->dirfrag()] = bound;
       le->subtrees[dir->dirfrag()].push_back(bound->dirfrag());
     }
@@ -2554,18 +2615,18 @@ ESubtreeMap *MDCache::create_subtree_map()
   // apply projected renames
   for (const auto& [diri, renames] : projected_subtree_renames) {
     for (const auto& [olddir, newdir] : renames) {
-      dout(10) << " adjusting for projected rename of " << *diri << " to " << *newdir << dendl;
+      dout(15) << " adjusting for projected rename of " << *diri << " to " << *newdir << dendl;
 
       auto&& dfls = diri->get_dirfrags();
       for (const auto& dir : dfls) {
-       dout(10) << "dirfrag " << dir->dirfrag() << " " << *dir << dendl;
+       dout(15) << "dirfrag " << dir->dirfrag() << " " << *dir << dendl;
        CDir *oldparent = get_projected_subtree_root(olddir);
-       dout(10) << " old parent " << oldparent->dirfrag() << " " << *oldparent << dendl;
+       dout(15) << " old parent " << oldparent->dirfrag() << " " << *oldparent << dendl;
        CDir *newparent = get_projected_subtree_root(newdir);
-       dout(10) << " new parent " << newparent->dirfrag() << " " << *newparent << dendl;
+       dout(15) << " new parent " << newparent->dirfrag() << " " << *newparent << dendl;
 
        if (oldparent == newparent) {
-         dout(10) << "parent unchanged for " << dir->dirfrag() << " at "
+         dout(15) << "parent unchanged for " << dir->dirfrag() << " at "
                   << oldparent->dirfrag() << dendl;
          continue;
        }
@@ -2596,10 +2657,7 @@ ESubtreeMap *MDCache::create_subtree_map()
          }
          
          // see if any old bounds move to the new parent.
-         for (set<CDir*>::iterator p = subtrees[oldparent].begin();
-              p != subtrees[oldparent].end();
-              ++p) {
-           CDir *bound = *p;
+         for (auto& bound : subtrees.at(oldparent)) {
            if (dir->contains(bound->get_parent_dir()))
              _move_subtree_map_bound(bound->dirfrag(), oldparent->dirfrag(), newparent->dirfrag(),
                                      le->subtrees);
@@ -2613,21 +2671,22 @@ ESubtreeMap *MDCache::create_subtree_map()
   // subtrees than needed due to migrations that are just getting
   // started or just completing.  but on replay, the "live" map will
   // be simple and we can do a straight comparison.
-  for (map<dirfrag_t, vector<dirfrag_t> >::iterator p = le->subtrees.begin(); p != le->subtrees.end(); ++p) {
-    if (le->ambiguous_subtrees.count(p->first))
+  for (auto& [frag, bfrags] : le->subtrees) {
+    if (le->ambiguous_subtrees.count(frag))
       continue;
     unsigned i = 0;
-    while (i < p->second.size()) {
-      dirfrag_t b = p->second[i];
+    while (i < bfrags.size()) {
+      dirfrag_t b = bfrags[i];
       if (le->subtrees.count(b) &&
          le->ambiguous_subtrees.count(b) == 0) {
-       vector<dirfrag_t>& bb = le->subtrees[b];
-       dout(10) << "simplify: " << p->first << " swallowing " << b << " with bounds " << bb << dendl;
-       for (vector<dirfrag_t>::iterator r = bb.begin(); r != bb.end(); ++r)
-         p->second.push_back(*r);
+       auto& bb = le->subtrees.at(b);
+       dout(10) << "simplify: " << frag << " swallowing " << b << " with bounds " << bb << dendl;
+       for (auto& r : bb) {
+         bfrags.push_back(r);
+        }
        dirs_to_add.erase(b);
        le->subtrees.erase(b);
-       p->second.erase(p->second.begin() + i);
+       bfrags.erase(bfrags.begin() + i);
       } else {
        ++i;
       }
@@ -6738,32 +6797,38 @@ std::pair<bool, uint64_t> MDCache::trim(uint64_t count)
     ++p;
     CInode *diri = dir->get_inode();
     if (dir->is_auth()) {
-      if (!diri->is_auth() && !diri->is_base() &&
-         dir->get_num_head_items() == 0) {
-       if (dir->state_test(CDir::STATE_EXPORTING) ||
-           !(mds->is_active() || mds->is_stopping()) ||
-           dir->is_freezing() || dir->is_frozen())
-         continue;
+      if (diri->is_auth() && !diri->is_base()) {
+        /* this situation should correspond to an export pin */
+        if (dir->get_num_head_items() == 0 && dir->get_num_ref() == 1) {
+          /* pinned empty subtree, try to drop */
+          if (dir->state_test(CDir::STATE_AUXSUBTREE)) {
+            dout(20) << "trimming empty pinned subtree " << *dir << dendl;
+            dir->state_clear(CDir::STATE_AUXSUBTREE);
+            remove_subtree(dir);
+            diri->close_dirfrag(dir->dirfrag().frag);
+          }
+        }
+      } else if (!diri->is_auth() && !diri->is_base() && dir->get_num_head_items() == 0) {
+        if (dir->state_test(CDir::STATE_EXPORTING) ||
+           !(mds->is_active() || mds->is_stopping()) ||
+           dir->is_freezing() || dir->is_frozen())
+          continue;
 
-       migrator->export_empty_import(dir);
+        migrator->export_empty_import(dir);
         ++trimmed;
       }
-    } else {
-      if (!diri->is_auth()) {
-       if (dir->get_num_ref() > 1)  // only subtree pin
-         continue;
-       auto&& ls = diri->get_subtree_dirfrags();
-       if (diri->get_num_ref() > (int)ls.size()) // only pinned by subtrees
-         continue;
+    } else if (!diri->is_auth() && dir->get_num_ref() <= 1) {
+      // only subtree pin
+      auto&& ls = diri->get_subtree_dirfrags();
+      if (diri->get_num_ref() > (int)ls.size()) // only pinned by subtrees
+        continue;
 
-       // don't trim subtree root if its auth MDS is recovering.
-       // This simplify the cache rejoin code.
-       if (dir->is_subtree_root() &&
-           rejoin_ack_gather.count(dir->get_dir_auth().first))
-         continue;
-       trim_dirfrag(dir, 0, expiremap);
-        ++trimmed;
-      }
+      // don't trim subtree root if its auth MDS is recovering.
+      // This simplify the cache rejoin code.
+      if (dir->is_subtree_root() && rejoin_ack_gather.count(dir->get_dir_auth().first))
+        continue;
+      trim_dirfrag(dir, 0, expiremap);
+      ++trimmed;
     }
   }
 
@@ -7785,30 +7850,44 @@ bool MDCache::shutdown_pass()
   trim(UINT64_MAX);
   dout(5) << "lru size now " << lru.lru_get_size() << "/" << bottom_lru.lru_get_size() << dendl;
 
+
+  {
+    dout(10) << "Migrating any ephemerally pinned inodes" << dendl;
+    /* copy to vector to avoid removals during iteration */
+    std::vector<CInode*> migrate;
+    migrate.assign(rand_ephemeral_pins.begin(), rand_ephemeral_pins.end());
+    for (auto& in : migrate) {
+      in->maybe_ephemeral_rand();
+    }
+    migrate.assign(dist_ephemeral_pins.begin(), dist_ephemeral_pins.end());
+    for (auto& in : migrate) {
+      in->maybe_ephemeral_dist();
+    }
+    mds->balancer->handle_export_pins();
+  }
+
   // Export all subtrees to another active (usually rank 0) if not rank 0
   int num_auth_subtree = 0;
-  if (!subtrees.empty() &&
-      mds->get_nodeid() != 0) {
-    dout(7) << "looking for subtrees to export to mds0" << dendl;
+  if (!subtrees.empty() && mds->get_nodeid() != 0) {
+    dout(7) << "looking for subtrees to export" << dendl;
     std::vector<CDir*> ls;
-    for (map<CDir*, set<CDir*> >::iterator it = subtrees.begin();
-         it != subtrees.end();
-         ++it) {
-      CDir *dir = it->first;
-      if (dir->get_inode()->is_mdsdir())
+    for (auto& [dir, bounds] : subtrees) {
+      dout(10) << "  examining " << *dir << " bounds " << bounds << dendl;
+      if (dir->get_inode()->is_mdsdir() || !dir->is_auth())
        continue;
-      if (dir->is_auth()) {
-       num_auth_subtree++;
-       if (dir->is_frozen() ||
-           dir->is_freezing() ||
-           dir->is_ambiguous_dir_auth() ||
-           dir->state_test(CDir::STATE_EXPORTING))
-         continue;
-       ls.push_back(dir);
+      num_auth_subtree++;
+      if (dir->is_frozen() ||
+          dir->is_freezing() ||
+          dir->is_ambiguous_dir_auth() ||
+          dir->state_test(CDir::STATE_EXPORTING) ||
+          dir->get_inode()->is_ephemerally_pinned()) {
+        continue;
       }
+      ls.push_back(dir);
     }
 
     migrator->clear_export_queue();
+
     for (const auto& dir : ls) {
       mds_rank_t dest = dir->get_inode()->authority().first;
       if (dest > 0 && !mds->mdsmap->is_active(dest))
@@ -10689,7 +10768,7 @@ void MDCache::encode_replica_dentry(CDentry *dn, mds_rank_t to, bufferlist& bl)
 void MDCache::encode_replica_inode(CInode *in, mds_rank_t to, bufferlist& bl,
                              uint64_t features)
 {
-  ENCODE_START(1, 1, bl);
+  ENCODE_START(2, 1, bl);
   ceph_assert(in->is_auth());
   encode(in->inode.ino, bl);  // bleh, minor assymetry here
   encode(in->last, bl);
@@ -10699,6 +10778,10 @@ void MDCache::encode_replica_inode(CInode *in, mds_rank_t to, bufferlist& bl,
 
   in->_encode_base(bl, features);
   in->_encode_locks_state_for_replica(bl, mds->get_state() < MDSMap::STATE_ACTIVE);
+
+  __u32 state = in->state;
+  encode(state, bl);
+
   ENCODE_FINISH(bl);
 }
 
@@ -10795,7 +10878,7 @@ void MDCache::decode_replica_dentry(CDentry *&dn, bufferlist::const_iterator& p,
 
 void MDCache::decode_replica_inode(CInode *&in, bufferlist::const_iterator& p, CDentry *dn, MDSContext::vec& finished)
 {
-  DECODE_START(1, p);
+  DECODE_START(2, p);
   inodeno_t ino;
   snapid_t last;
   __u32 nonce;
@@ -10829,6 +10912,17 @@ void MDCache::decode_replica_inode(CInode *&in, bufferlist::const_iterator& p, C
     if (!dn->get_linkage()->is_primary() || dn->get_linkage()->get_inode() != in)
       dout(10) << __func__ << " different linkage in dentry " << *dn << dendl;
   }
+
+  if (struct_v >= 2) {
+    __u32 s;
+    decode(s, p);
+    s &= CInode::MASK_STATE_REPLICATED;
+    if (s & CInode::STATE_RANDEPHEMERALPIN) {
+      dout(10) << "replica inode is random ephemeral pinned" << dendl;
+      in->set_ephemeral_rand(true);
+    }
+  }
+
   DECODE_FINISH(p); 
 }
 
@@ -13266,12 +13360,15 @@ bool MDCache::dump_inode(Formatter *f, uint64_t number) {
   return true;
 }
 
-void MDCache::handle_mdsmap(const MDSMap &mdsmap) {
+void MDCache::handle_mdsmap(const MDSMap &mdsmap, const MDSMap &oldmap) {
   // process export_pin_delayed_queue whenever a new MDSMap received
   auto &q = export_pin_delayed_queue;
   for (auto it = q.begin(); it != q.end(); ) {
     auto *in = *it;
     mds_rank_t export_pin = in->get_export_pin(false);
+    if (in->is_ephemerally_pinned()) {
+      dout(10) << "ephemeral export pin to " << export_pin << " for " << *in << dendl;
+    }
     dout(10) << " delayed export_pin=" << export_pin << " on " << *in 
       << " max_mds=" << mdsmap.get_max_mds() << dendl;
     if (export_pin >= mdsmap.get_max_mds()) {
@@ -13281,7 +13378,20 @@ void MDCache::handle_mdsmap(const MDSMap &mdsmap) {
 
     in->state_clear(CInode::STATE_DELAYEDEXPORTPIN);
     it = q.erase(it);
-    in->maybe_export_pin();
+    in->queue_export_pin(export_pin);
   }
-}
 
+  if (mdsmap.get_max_mds() != oldmap.get_max_mds()) {
+    dout(10) << "Checking ephemerally pinned directories for redistribute due to max_mds change." << dendl;
+    /* copy to vector to avoid removals during iteration */
+    std::vector<CInode*> migrate;
+    migrate.assign(rand_ephemeral_pins.begin(), rand_ephemeral_pins.end());
+    for (auto& in : migrate) {
+      in->maybe_ephemeral_rand();
+    }
+    migrate.assign(dist_ephemeral_pins.begin(), dist_ephemeral_pins.end());
+    for (auto& in : migrate) {
+      in->maybe_ephemeral_dist();
+    }
+  }
+}
index bb6759617a5a040fc74023ecede0547a17792780..38fac4235db4dac098f3288933b43928d7be46cb 100644 (file)
@@ -217,6 +217,14 @@ class MDCache {
     stray_index = (stray_index+1)%NUM_STRAY;
   }
 
+  bool get_export_ephemeral_distributed_config(void) const {
+    return export_ephemeral_distributed_config;
+  }
+
+  bool get_export_ephemeral_random_config(void) const {
+    return export_ephemeral_random_config;
+  }
+
   /**
    * Call this when you know that a CDentry is ready to be passed
    * on to StrayManager (i.e. this is a stray you've just created)
@@ -229,6 +237,8 @@ class MDCache {
     stray_manager.eval_stray(dn);
   }
 
+  mds_rank_t hash_into_rank_bucket(inodeno_t ino);
+
   void maybe_eval_stray(CInode *in, bool delay=false);
   void clear_dirty_bits_for_stray(CInode* diri);
 
@@ -901,7 +911,7 @@ class MDCache {
   void discard_delayed_expire(CDir *dir);
 
   // -- mdsmap --
-  void handle_mdsmap(const MDSMap &mdsmap);
+  void handle_mdsmap(const MDSMap &mdsmap, const MDSMap &oldmap);
 
   int dump_cache() { return dump_cache({}, nullptr); }
   int dump_cache(std::string_view filename);
@@ -989,9 +999,13 @@ class MDCache {
   /* Because exports may fail, this set lets us keep track of inodes that need exporting. */
   std::set<CInode *> export_pin_queue;
   std::set<CInode *> export_pin_delayed_queue;
+  std::set<CInode *> rand_ephemeral_pins;
+  std::set<CInode *> dist_ephemeral_pins;
 
   OpenFileTable open_file_table;
 
+  double export_ephemeral_random_max = 0.0;
+
  protected:
   // track master requests whose slaves haven't acknowledged commit
   struct umaster {
@@ -1301,6 +1315,9 @@ class MDCache {
   bool forward_all_requests_to_auth;
   std::array<CInode *, NUM_STRAY> strays{}; // my stray dir
 
+  bool export_ephemeral_distributed_config;
+  bool export_ephemeral_random_config;
+
   // File size recovery
   RecoveryQueue recovery_queue;
 
index e7b1f51001e90779b52fc08cf075db62556065ee..d0ff38a3ef068644f4de6b86696dce6d0770e25b 100644 (file)
@@ -904,6 +904,17 @@ bool MDSDaemon::ms_dispatch2(const ref_t<Message> &m)
 /*
  * high priority messages we always process
  */
+
+#define ALLOW_MESSAGES_FROM(peers)                                      \
+  do {                                                                  \
+    if (m->get_connection() && (m->get_connection()->get_peer_type() & (peers)) == 0) { \
+      dout(0) << __FILE__ << "." << __LINE__ << ": filtered out request, peer=" \
+              << m->get_connection()->get_peer_type() << " allowing="   \
+              << #peers << " message=" << *m << dendl;                  \
+      return true;                                                      \
+    }                                                                   \
+  } while (0)
+
 bool MDSDaemon::handle_core_message(const cref_t<Message> &m)
 {
   switch (m->get_type()) {
index 93f687f25ede943b7a6f7fbdc0895090c1a215c4..e7ebee467e7acf7534b22dd696619c5d1b4c521a 100644 (file)
@@ -1010,6 +1010,10 @@ bool MDSRank::_dispatch(const cref_t<Message> &m, bool new_msg)
   if (is_stale_message(m)) {
     return true;
   }
+  // do not proceed if this message cannot be handled
+  if (!is_valid_message(m)) {
+    return false;
+  }
 
   if (beacon.is_laggy()) {
     dout(5) << " laggy, deferring " << *m << dendl;
@@ -1018,10 +1022,7 @@ bool MDSRank::_dispatch(const cref_t<Message> &m, bool new_msg)
     dout(5) << " there are deferred messages, deferring " << *m << dendl;
     waiting_for_nolaggy.push_back(m);
   } else {
-    if (!handle_deferrable_message(m)) {
-      return false;
-    }
-
+    handle_message(m);
     heartbeat_reset();
   }
 
@@ -1132,10 +1133,45 @@ void MDSRank::update_mlogger()
   }
 }
 
+// message types that the mds can handle
+bool MDSRank::is_valid_message(const cref_t<Message> &m) {
+  int port = m->get_type() & 0xff00;
+  int type = m->get_type();
+
+  if (port == MDS_PORT_CACHE ||
+      port == MDS_PORT_MIGRATOR ||
+      type == CEPH_MSG_CLIENT_SESSION ||
+      type == CEPH_MSG_CLIENT_RECONNECT ||
+      type == CEPH_MSG_CLIENT_RECLAIM ||
+      type == CEPH_MSG_CLIENT_REQUEST ||
+      type == MSG_MDS_SLAVE_REQUEST ||
+      type == MSG_MDS_HEARTBEAT ||
+      type == MSG_MDS_TABLE_REQUEST ||
+      type == MSG_MDS_LOCK ||
+      type == MSG_MDS_INODEFILECAPS ||
+      type == CEPH_MSG_CLIENT_CAPS ||
+      type == CEPH_MSG_CLIENT_CAPRELEASE ||
+      type == CEPH_MSG_CLIENT_LEASE) {
+    return true;
+  }
+
+  return false;
+}
+
 /*
  * lower priority messages we defer if we seem laggy
  */
-bool MDSRank::handle_deferrable_message(const cref_t<Message> &m)
+
+#define ALLOW_MESSAGES_FROM(peers)                                      \
+  do {                                                                  \
+    if (m->get_connection() && (m->get_connection()->get_peer_type() & (peers)) == 0) { \
+      dout(0) << __FILE__ << "." << __LINE__ << ": filtered out request, peer=" << m->get_connection()->get_peer_type() \
+              << " allowing=" << #peers << " message=" << *m << dendl;  \
+      return;                                                           \
+    }                                                                   \
+  } while (0)
+
+void MDSRank::handle_message(const cref_t<Message> &m)
 {
   int port = m->get_type() & 0xff00;
 
@@ -1199,11 +1235,9 @@ bool MDSRank::handle_deferrable_message(const cref_t<Message> &m)
       break;
 
     default:
-      return false;
+      derr << "unrecognized message " << *m << dendl;
     }
   }
-
-  return true;
 }
 
 /**
@@ -1239,9 +1273,8 @@ void MDSRank::_advance_queues()
 
     if (!is_stale_message(old)) {
       dout(7) << " processing laggy deferred " << *old << dendl;
-      if (!handle_deferrable_message(old)) {
-        dout(0) << "unrecognized message " << *old << dendl;
-      }
+      ceph_assert(is_valid_message(old));
+      handle_message(old);
     }
 
     heartbeat_reset();
@@ -2399,7 +2432,7 @@ void MDSRankDispatcher::handle_mds_map(
       scrubstack->scrub_abort(c);
     }
   }
-  mdcache->handle_mdsmap(*mdsmap);
+  mdcache->handle_mdsmap(*mdsmap, oldmap);
 }
 
 void MDSRank::handle_mds_recovery(mds_rank_t who)
@@ -2865,7 +2898,10 @@ void MDSRank::command_get_subtrees(Formatter *f)
       f->dump_bool("is_auth", dir->is_auth());
       f->dump_int("auth_first", dir->get_dir_auth().first);
       f->dump_int("auth_second", dir->get_dir_auth().second);
-      f->dump_int("export_pin", dir->inode->get_export_pin());
+      f->dump_int("export_pin", dir->inode->get_export_pin(false, false));
+      f->dump_bool("distributed_ephemeral_pin", dir->inode->is_ephemeral_dist());
+      f->dump_bool("random_ephemeral_pin", dir->inode->is_ephemeral_rand());
+      f->dump_int("ephemeral_pin", mdcache->hash_into_rank_bucket(dir->inode->ino()));
       f->open_object_section("dir");
       dir->dump(f);
       f->close_section();
@@ -3521,6 +3557,9 @@ const char** MDSRankDispatcher::get_tracked_conf_keys() const
     "mds_dump_cache_threshold_file",
     "mds_dump_cache_threshold_formatter",
     "mds_enable_op_tracker",
+    "mds_export_ephemeral_random",
+    "mds_export_ephemeral_random_max",
+    "mds_export_ephemeral_distributed",
     "mds_health_cache_threshold",
     "mds_inject_migrator_session_race",
     "mds_log_pause",
@@ -3572,6 +3611,8 @@ void MDSRankDispatcher::handle_conf_change(const ConfigProxy& conf, const std::s
   finisher->queue(new LambdaContext([this, changed](int) {
     std::scoped_lock lock(mds_lock);
 
+    dout(10) << "flushing conf change to components: " << changed << dendl;
+
     if (changed.count("mds_log_pause") && !g_conf()->mds_log_pause) {
       mdlog->kick_submitter();
     }
index 9367034b6bde1d75ad367c38cf6241740fbc5bbb..c0605be626a0b5c15ac345ca89f01c9a702ec309 100644 (file)
@@ -421,7 +421,8 @@ class MDSRank {
     void inc_dispatch_depth() { ++dispatch_depth; }
     void dec_dispatch_depth() { --dispatch_depth; }
     void retry_dispatch(const cref_t<Message> &m);
-    bool handle_deferrable_message(const cref_t<Message> &m);
+    bool is_valid_message(const cref_t<Message> &m);
+    void handle_message(const cref_t<Message> &m);
     void _advance_queues();
     bool _dispatch(const cref_t<Message> &m, bool new_msg);
     bool is_stale_message(const cref_t<Message> &m) const;
@@ -653,15 +654,5 @@ public:
   bool ms_dispatch(const cref_t<Message> &m);
 };
 
-// This utility for MDS and MDSRank dispatchers.
-#define ALLOW_MESSAGES_FROM(peers) \
-do { \
-  if (m->get_connection() && (m->get_connection()->get_peer_type() & (peers)) == 0) { \
-    dout(0) << __FILE__ << "." << __LINE__ << ": filtered out request, peer=" << m->get_connection()->get_peer_type() \
-           << " allowing=" << #peers << " message=" << *m << dendl; \
-    return true; \
-  } \
-} while (0)
-
 #endif // MDS_RANK_H_
 
index 874e56416aa68a85fb81082fcbe2808b3fbc5a93..61ffabde21e2b10aa631a975b33634e37e54a32e 100644 (file)
@@ -790,7 +790,7 @@ void Migrator::export_dir(CDir *dir, mds_rank_t dest)
   ceph_assert(dest != mds->get_nodeid());
    
   CDir* parent = dir->inode->get_projected_parent_dir();
-  if (!mds->is_stopping() && !dir->inode->is_exportable(dest)) {
+  if (!mds->is_stopping() && !dir->inode->is_exportable(dest) && dir->get_num_head_items() > 0) {
     dout(7) << "Cannot export to mds." << dest << " " << *dir << ": dir is export pinned" << dendl;
     return;
   } else if (!(mds->is_active() || mds->is_stopping())) {
@@ -3176,7 +3176,6 @@ void Migrator::import_finish(CDir *dir, bool notify, bool last)
   }
 }
 
-
 void Migrator::decode_import_inode(CDentry *dn, bufferlist::const_iterator& blp,
                                   mds_rank_t oldauth, LogSegment *ls,
                                   map<CInode*, map<client_t,Capability::Export> >& peer_exports,
@@ -3441,6 +3440,7 @@ void Migrator::decode_import_dir(bufferlist::const_iterator& blp,
     dir->verify_fragstat();
 #endif
 
+  dir->inode->maybe_ephemeral_dist();
   dir->inode->maybe_export_pin();
 
   dout(7) << " done " << *dir << dendl;
index 3bb03dd08ff8776b4063bab3fcd8bdf75072fad6..d636646807d850628dc152cb98203c1995fadecf 100644 (file)
@@ -5603,7 +5603,7 @@ void Server::handle_set_vxattr(MDRequestRef& mdr, CInode *cur)
 
     client_t exclude_ct = mdr->get_client();
     mdcache->broadcast_quota_to_client(cur, exclude_ct, true);
-  } else if (name.find("ceph.dir.pin") == 0) {
+  } else if (name == "ceph.dir.pin"sv) {
     if (!cur->is_dir() || cur->is_root()) {
       respond_to_request(mdr, -EINVAL);
       return;
@@ -5625,6 +5625,56 @@ void Server::handle_set_vxattr(MDRequestRef& mdr, CInode *cur)
     auto &pi = cur->project_inode();
     cur->set_export_pin(rank);
     pip = &pi.inode;
+  } else if (name == "ceph.dir.pin.random"sv) {
+    if (!cur->is_dir() || cur->is_root()) {
+      respond_to_request(mdr, -EINVAL);
+      return;
+    }
+
+    double val;
+    try {
+      val = boost::lexical_cast<double>(value);
+    } catch (boost::bad_lexical_cast const&) {
+      dout(10) << "bad vxattr value, unable to parse float for " << name << dendl;
+      respond_to_request(mdr, -EINVAL);
+      return;
+    }
+
+    if (val < 0.0 || 1.0 < val) {
+      respond_to_request(mdr, -EDOM);
+      return;
+    } else if (mdcache->export_ephemeral_random_max < val) {
+      respond_to_request(mdr, -EINVAL);
+      return;
+    }
+
+    if (!xlock_policylock(mdr, cur))
+      return;
+
+    auto &pi = cur->project_inode();
+    cur->setxattr_ephemeral_rand(val);
+    pip = &pi.inode;
+  } else if (name == "ceph.dir.pin.distributed"sv) {
+    if (!cur->is_dir() || cur->is_root()) {
+      respond_to_request(mdr, -EINVAL);
+      return;
+    }
+
+    bool val;
+    try {
+      val = boost::lexical_cast<bool>(value);
+    } catch (boost::bad_lexical_cast const&) {
+      dout(10) << "bad vxattr value, unable to parse bool for " << name << dendl;
+      respond_to_request(mdr, -EINVAL);
+      return;
+    }
+
+    if (!xlock_policylock(mdr, cur))
+      return;
+
+    auto &pi = cur->project_inode();
+    cur->setxattr_ephemeral_dist(val);
+    pip = &pi.inode;
   } else {
     dout(10) << " unknown vxattr " << name << dendl;
     respond_to_request(mdr, -EINVAL);
@@ -5929,8 +5979,13 @@ public:
     MDRequestRef null_ref;
     get_mds()->mdcache->send_dentry_link(dn, null_ref);
 
-    if (newi->inode.is_file())
+    if (newi->inode.is_file()) {
       get_mds()->locker->share_inode_max_size(newi);
+    } else if (newi->inode.is_dir()) {
+      // We do this now so that the linkages on the new directory are stable.
+      newi->maybe_ephemeral_dist();
+      newi->maybe_ephemeral_rand(true);
+    }
 
     // hit pop
     get_mds()->balancer->hit_inode(newi, META_POP_IWR);
index f00d23ffed0710583a976080b810c073e3d8ab2f..52bcce20e19831bffd1a1d5d1172bc54b74dbe1e 100644 (file)
@@ -65,6 +65,7 @@ public:
     static const int STATE_DIRTYPARENT = (1<<1);
     static const int STATE_DIRTYPOOL   = (1<<2);
     static const int STATE_NEED_SNAPFLUSH = (1<<3);
+    static const int STATE_EPHEMERAL_RANDOM = (1<<4);
     std::string  dn;         // dentry
     snapid_t dnfirst, dnlast;
     version_t dnv{0};
@@ -111,6 +112,7 @@ public:
     bool is_dirty_parent() const { return (state & STATE_DIRTYPARENT); }
     bool is_dirty_pool() const { return (state & STATE_DIRTYPOOL); }
     bool need_snapflush() const { return (state & STATE_NEED_SNAPFLUSH); }
+    bool is_export_ephemeral_random() const { return (state & STATE_EPHEMERAL_RANDOM); }
 
     void print(ostream& out) const {
       out << " fullbit dn " << dn << " [" << dnfirst << "," << dnlast << "] dnv " << dnv
@@ -446,6 +448,10 @@ private:
     if (!in) 
       in = dn->get_projected_linkage()->get_inode();
 
+    if (in->is_ephemeral_rand()) {
+      state |= fullbit::STATE_EPHEMERAL_RANDOM;
+    }
+
     // make note of where this inode was last journaled
     in->last_journaled = event_seq;
     //cout << "journaling " << in->inode.ino << " at " << my_offset << std::endl;
index ac25fe19cc65939476bd974aec3ae8bbefc6fd4e..70face21f1c53bdc15033e2932d96a287f6f1aa2 100644 (file)
@@ -526,8 +526,14 @@ void EMetaBlob::fullbit::update_inode(MDSRank *mds, CInode *in)
 {
   in->inode = inode;
   in->xattrs = xattrs;
-  in->maybe_export_pin();
   if (in->inode.is_dir()) {
+    if (is_export_ephemeral_random()) {
+      dout(15) << "random ephemeral pin on " << *in << dendl;
+      in->set_ephemeral_rand(true);
+      in->maybe_ephemeral_rand(true);
+    }
+    in->maybe_ephemeral_dist();
+    in->maybe_export_pin();
     if (!(in->dirfragtree == dirfragtree)) {
       dout(10) << "EMetaBlob::fullbit::update_inode dft " << in->dirfragtree << " -> "
               << dirfragtree << " on " << *in << dendl;
@@ -1135,6 +1141,7 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
   set<CInode*> linked;
 
   // walk through my dirs (in order!)
+  int count = 0;
   for (const auto& lp : lump_order) {
     dout(10) << "EMetaBlob.replay dir " << lp << dendl;
     dirlump &lump = lump_map[lp];
@@ -1286,6 +1293,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
       else
        in->state_clear(CInode::STATE_AUTH);
       ceph_assert(g_conf()->mds_kill_journal_replay_at != 2);
+
+      if (!(++count % 1000))
+        mds->heartbeat_reset();
     }
 
     // remote dentries
@@ -1317,6 +1327,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
       }
       if (lump.is_importing())
        dn->state_set(CDentry::STATE_AUTH);
+
+      if (!(++count % 1000))
+        mds->heartbeat_reset();
     }
 
     // null dentries
@@ -1352,6 +1365,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
 
       // Make null dentries the first things we trim
       dout(10) << "EMetaBlob.replay pushing to bottom of lru " << *dn << dendl;
+
+      if (!(++count % 1000))
+        mds->heartbeat_reset();
     }
   }
 
@@ -1382,6 +1398,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
            slaveup->olddirs.insert(dir->inode);
          else
            dir->state_set(CDir::STATE_AUTH);
+
+          if (!(++count % 1000))
+            mds->heartbeat_reset();
        }
       }
 
@@ -1411,6 +1430,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
        dout(10) << " creating new rename import bound " << *dir << dendl;
        dir->state_clear(CDir::STATE_AUTH);
        mds->mdcache->adjust_subtree_auth(dir, CDIR_AUTH_UNDEF);
+
+        if (!(++count % 1000))
+          mds->heartbeat_reset();
       }
     }
 
@@ -1421,6 +1443,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
        continue;
       ceph_assert(p->first->is_dir());
       mds->mdcache->adjust_subtree_after_rename(p->first, p->second, false);
+
+      if (!(++count % 1000))
+        mds->heartbeat_reset();
     }
   }
 
@@ -1436,6 +1461,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
          in->snaprealm->adjust_parent();
       } else
        mds->mdcache->remove_inode_recursive(in);
+
+      if (!(++count % 1000))
+        mds->heartbeat_reset();
     }
   }
 
@@ -1446,6 +1474,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
     MDSTableClient *client = mds->get_table_client(p.first);
     if (client)
       client->got_journaled_agree(p.second, logseg);
+
+    if (!(++count % 1000))
+      mds->heartbeat_reset();
   }
 
   // opened ino?
@@ -1532,6 +1563,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
     CInode *in = mds->mdcache->get_inode(ino);
     ceph_assert(in);
     mds->mdcache->add_recovered_truncate(in, logseg);
+
+    if (!(++count % 1000))
+      mds->heartbeat_reset();
   }
   for (const auto& p : truncate_finish) {
     LogSegment *ls = mds->mdlog->get_segment(p.second);
@@ -1540,6 +1574,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
       ceph_assert(in);
       mds->mdcache->remove_recovered_truncate(in, ls);
     }
+
+    if (!(++count % 1000))
+      mds->heartbeat_reset();
   }
 
   // destroyed inodes
@@ -1559,6 +1596,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
       } else {
        dout(10) << "EMetaBlob.replay destroyed " << *p << ", not in cache" << dendl;
       }
+
+      if (!(++count % 1000))
+        mds->heartbeat_reset();
     }
     mds->mdcache->open_file_table.note_destroyed_inos(logseg->seq, destroyed_inodes);
   }
@@ -1578,6 +1618,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
          session->trim_completed_requests(p.second);
       }
     }
+
+    if (!(++count % 1000))
+      mds->heartbeat_reset();
   }
 
   // client flushes
@@ -1591,6 +1634,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, MDSlaveUpdate *slaveup)
          session->trim_completed_flushes(p.second);
       }
     }
+
+    if (!(++count % 1000))
+      mds->heartbeat_reset();
   }
 
   // update segment
index 8c00845eb761cda8d7fac19124514709230a7291..cd829b86698f08545bd9c0749ed2caa151ba0882 100644 (file)
@@ -586,6 +586,9 @@ struct inode_t {
 
   mds_rank_t export_pin = MDS_RANK_NONE;
 
+  double export_ephemeral_random_pin = 0;
+  bool export_ephemeral_distributed_pin = false;
+
   // special stuff
   version_t version = 0;           // auth only
   version_t file_data_version = 0; // auth only
@@ -608,7 +611,7 @@ private:
 template<template<typename> class Allocator>
 void inode_t<Allocator>::encode(bufferlist &bl, uint64_t features) const
 {
-  ENCODE_START(15, 6, bl);
+  ENCODE_START(16, 6, bl);
 
   encode(ino, bl);
   encode(rdev, bl);
@@ -660,13 +663,16 @@ void inode_t<Allocator>::encode(bufferlist &bl, uint64_t features) const
 
   encode(export_pin, bl);
 
+  encode(export_ephemeral_random_pin, bl);
+  encode(export_ephemeral_distributed_pin, bl);
+
   ENCODE_FINISH(bl);
 }
 
 template<template<typename> class Allocator>
 void inode_t<Allocator>::decode(bufferlist::const_iterator &p)
 {
-  DECODE_START_LEGACY_COMPAT_LEN(15, 6, 6, p);
+  DECODE_START_LEGACY_COMPAT_LEN(16, 6, 6, p);
 
   decode(ino, p);
   decode(rdev, p);
@@ -757,6 +763,14 @@ void inode_t<Allocator>::decode(bufferlist::const_iterator &p)
     export_pin = MDS_RANK_NONE;
   }
 
+  if (struct_v >= 16) {
+    decode(export_ephemeral_random_pin, p);
+    decode(export_ephemeral_distributed_pin, p);
+  } else {
+    export_ephemeral_random_pin = 0;
+    export_ephemeral_distributed_pin = false;
+  }
+
   DECODE_FINISH(p);
 }
 
@@ -794,6 +808,8 @@ void inode_t<Allocator>::dump(Formatter *f) const
   f->dump_unsigned("time_warp_seq", time_warp_seq);
   f->dump_unsigned("change_attr", change_attr);
   f->dump_int("export_pin", export_pin);
+  f->dump_int("export_ephemeral_random_pin", export_ephemeral_random_pin);
+  f->dump_bool("export_ephemeral_distributed_pin", export_ephemeral_distributed_pin);
 
   f->open_array_section("client_ranges");
   for (const auto &p : client_ranges) {
index 3a2c6d60c024472a8db321fd27c46b635e99f0fd..210f7755090857e448761c9d11170dd7dad2452a 100644 (file)
@@ -446,21 +446,22 @@ void ActivePyModules::start_one(PyModuleRef py_module)
   std::lock_guard l(lock);
 
   const auto name = py_module->get_name();
-  auto em = modules.emplace(name,
-      std::make_shared<ActivePyModule>(py_module, clog));
-  ceph_assert(em.second); // actually inserted
-  auto& active_module = em.first->second;
+  auto active_module = std::make_shared<ActivePyModule>(py_module, clog);
 
+  pending_modules.insert(name);
   // Send all python calls down a Finisher to avoid blocking
   // C++ code, and avoid any potential lock cycles.
   finisher.queue(new LambdaContext([this, active_module, name](int) {
     int r = active_module->load(this);
+    std::lock_guard l(lock);
+    pending_modules.erase(name);
     if (r != 0) {
       derr << "Failed to run module in active mode ('" << name << "')"
            << dendl;
-      std::lock_guard l(lock);
-      modules.erase(name);
     } else {
+      auto em = modules.emplace(name, active_module);
+      ceph_assert(em.second); // actually inserted
+
       dout(4) << "Starting thread for " << name << dendl;
       active_module->thread.create(active_module->get_thread_name());
     }
index 192360400c762bc0c8cd82110bdc296c8b62c21e..4892f2705fcda596095f2a527395c5e516f76fc8 100644 (file)
@@ -39,6 +39,9 @@ class PyModuleRegistry;
 
 class ActivePyModules
 {
+  // module class instances not yet created
+  std::set<std::string, std::less<>> pending_modules;
+  // module class instances already created
   std::map<std::string, std::shared_ptr<ActivePyModule>> modules;
   PyModuleConfig &module_config;
   std::map<std::string, std::string> store_cache;
@@ -158,6 +161,9 @@ public:
                   const std::string &notify_id);
   void notify_all(const LogEntry &log_entry);
 
+  bool is_pending(std::string_view name) const {
+    return pending_modules.count(name) > 0;
+  }
   bool module_exists(const std::string &name) const
   {
     return modules.count(name) > 0;
index f695203abbbdfa6e38edce7b5f44cc7840390ca1..5610fa769255c66a20f0836c50a232833a328b96 100644 (file)
@@ -1834,6 +1834,12 @@ bool DaemonServer::_handle_command(
     int r = 0;
     string name;
     if (cmd_getval(cmdctx->cmdmap, "key", name)) {
+      // handle special options
+      if (name == "fsid") {
+       cmdctx->odata.append(stringify(monc->get_fsid()) + "\n");
+       cmdctx->reply(r, ss);
+       return true;
+      }
       auto p = daemon->config.find(name);
       if (p != daemon->config.end() &&
          !p->second.empty()) {
index 2897684c4aedd20e6496477678dfe922617562e6..1768292aa5cf8784c018295d9e3cc4ef6f20c1b1 100644 (file)
@@ -370,6 +370,9 @@ void PyModuleRegistry::get_health_checks(health_check_map_t *checks)
 
     // report failed always_on modules as health errors
     for (const auto& name : mgr_map.get_always_on_modules()) {
+      if (active_modules->is_pending(name)) {
+       continue;
+      }
       if (!active_modules->module_exists(name)) {
         if (failed_modules.find(name) == failed_modules.end() &&
             dependency_modules.find(name) == dependency_modules.end()) {
index 62f063a14039f3abd104e275b7c50321f9dde94a..8537cfde480778a28d8228100cbb415e1c5ae8c9 100644 (file)
@@ -79,11 +79,7 @@ void StandbyPyModules::start_one(PyModuleRef py_module)
 {
   std::lock_guard l(lock);
   const auto name = py_module->get_name();
-
-  ceph_assert(modules.count(name) == 0);
-
-  modules[name].reset(new StandbyPyModule(state, py_module, clog));
-  auto standby_module = modules.at(name).get();
+  auto standby_module = new StandbyPyModule(state, py_module, clog);
 
   // Send all python calls down a Finisher to avoid blocking
   // C++ code, and avoid any potential lock cycles.
@@ -92,9 +88,12 @@ void StandbyPyModules::start_one(PyModuleRef py_module)
     if (r != 0) {
       derr << "Failed to run module in standby mode ('" << name << "')"
            << dendl;
-      std::lock_guard l(lock);
-      modules.erase(name);
+      delete standby_module;
     } else {
+      std::lock_guard l(lock);
+      auto em = modules.emplace(name, standby_module);
+      ceph_assert(em.second); // actually inserted
+
       dout(4) << "Starting thread for " << name << dendl;
       standby_module->thread.create(standby_module->get_thread_name());
     }
index 230793be2335c3f8f707a024428d5bf837b489ee..e60c06d46a49b55975dc1a86196d31783d96c120 100644 (file)
@@ -2039,7 +2039,7 @@ bool MDSMonitor::check_health(FSMap& fsmap, bool* propose_osdmap)
   }
 
   for (const auto& gid : to_remove) {
-    auto& info = fsmap.get_info_gid(gid);
+    auto info = fsmap.get_info_gid(gid);
     const mds_info_t* rep_info = nullptr;
     if (info.rank >= 0) {
       auto fscid = fsmap.gid_fscid(gid);
index ef126edd65222ad61a99ae16b2739351ab3cf207..88b987b721166850fec192dc0a7d6837493af006 100644 (file)
@@ -63,7 +63,6 @@ const static std::map<uint32_t, std::set<std::string>> always_on_modules = {
       "devicehealth",
       "orchestrator",
       "rbd_support",
-      "osd_support",
       "volumes",
       "pg_autoscaler",
       "telemetry",
index 57fb9b1554f3e73744bdfb9a8ca3872d4b9e4f76..a3937170aa82e7966017ec2873eccd90190098e7 100644 (file)
@@ -953,11 +953,13 @@ void MonClient::_un_backoff()
 void MonClient::schedule_tick()
 {
   auto do_tick = make_lambda_context([this](int) { tick(); });
-  if (_hunting()) {
+  if (!is_connected()) {
+    // start another round of hunting
     const auto hunt_interval = (cct->_conf->mon_client_hunt_interval *
                                reopen_interval_multiplier);
     timer.add_event_after(hunt_interval, do_tick);
   } else {
+    // keep in touch
     timer.add_event_after(std::min(cct->_conf->mon_client_ping_interval,
                                   cct->_conf->mon_client_log_interval),
                          do_tick);
index 196a1d04269f9630164ccd5a50165af75db82384..e256d10aa57af0fbf5655b7bf5eb21c5f1a07fa7 100644 (file)
@@ -1915,8 +1915,17 @@ void OSDMonitor::encode_pending(MonitorDBStore::TransactionRef t)
        i != pending_inc.new_state.end();
        ++i) {
     int s = i->second ? i->second : CEPH_OSD_UP;
-    if (s & CEPH_OSD_UP)
+    if (s & CEPH_OSD_UP) {
       dout(2) << " osd." << i->first << " DOWN" << dendl;
+      // Reset laggy parameters if failure interval exceeds a threshold.
+      const osd_xinfo_t& xi = osdmap.get_xinfo(i->first);
+      if ((xi.laggy_probability || xi.laggy_interval) && xi.down_stamp.sec()) {
+        int last_failure_interval = pending_inc.modified.sec() - xi.down_stamp.sec();
+        if (grace_interval_threshold_exceeded(last_failure_interval)) {
+          set_default_laggy_params(i->first);
+        }
+      }
+    }
     if (s & CEPH_OSD_EXISTS)
       dout(2) << " osd." << i->first << " DNE" << dendl;
   }
@@ -2216,7 +2225,7 @@ epoch_t OSDMonitor::get_min_last_epoch_clean() const
   // don't trim past the oldest reported osd epoch
   for (auto& osd_epoch : osd_epochs) {
     if (osd_epoch.second < floor &&
-        osdmap.is_out(osd_epoch.first)) {
+        osdmap.is_in(osd_epoch.first)) {
       floor = osd_epoch.second;
     }
   }
@@ -3319,6 +3328,39 @@ void OSDMonitor::take_all_failures(list<MonOpRequestRef>& ls)
   failure_info.clear();
 }
 
+int OSDMonitor::get_grace_interval_threshold()
+{
+  int halflife = g_conf()->mon_osd_laggy_halflife;
+  // Scale the halflife period (default: 1_hr) by
+  // a factor (48) to calculate the threshold.
+  int grace_threshold_factor = 48;
+  return halflife * grace_threshold_factor;
+}
+
+bool OSDMonitor::grace_interval_threshold_exceeded(int last_failed_interval)
+{
+  int grace_interval_threshold_secs = get_grace_interval_threshold();
+  if (last_failed_interval > grace_interval_threshold_secs) {
+    dout(1) << " last_failed_interval " << last_failed_interval
+            << " > grace_interval_threshold_secs " << grace_interval_threshold_secs
+            << dendl;
+    return true;
+  }
+  return false;
+}
+
+void OSDMonitor::set_default_laggy_params(int target_osd)
+{
+  if (pending_inc.new_xinfo.count(target_osd) == 0) {
+    pending_inc.new_xinfo[target_osd] = osdmap.osd_xinfo[target_osd];
+  }
+  osd_xinfo_t& xi = pending_inc.new_xinfo[target_osd];
+  xi.down_stamp = pending_inc.modified;
+  xi.laggy_probability = 0.0;
+  xi.laggy_interval = 0;
+  dout(20) << __func__ << " reset laggy, now xi " << xi << dendl;
+}
+
 
 // boot --
 
@@ -12547,22 +12589,38 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       goto reply;
     }
 
-    if (expected_num_objects > 0 &&
-       cct->_conf->osd_objectstore == "filestore" &&
-       cct->_conf->filestore_merge_threshold > 0) {
+    set<int32_t> osds;
+    osdmap.get_all_osds(osds);
+    bool has_filestore_osd = std::any_of(osds.begin(), osds.end(), [this](int osd) {
+      string type;
+      if (!get_osd_objectstore_type(osd, &type)) {
+        return type == "filestore";
+      } else {
+        return false;
+      }
+    });
+
+    if (has_filestore_osd &&
+        expected_num_objects > 0 &&
+        cct->_conf->filestore_merge_threshold > 0) {
       ss << "'expected_num_objects' requires 'filestore_merge_threshold < 0'";
       err = -EINVAL;
       goto reply;
     }
 
-    if (expected_num_objects == 0 &&
-       cct->_conf->osd_objectstore == "filestore" &&
-       cct->_conf->filestore_merge_threshold < 0) {
+    if (has_filestore_osd &&
+        expected_num_objects == 0 &&
+        cct->_conf->filestore_merge_threshold < 0) {
       int osds = osdmap.get_num_osds();
-      if (osds && (pg_num >= 1024 || pg_num / osds >= 100)) {
+      bool sure = false;
+      cmd_getval(cmdmap, "yes_i_really_mean_it", sure);
+      if (!sure && osds && (pg_num >= 1024 || pg_num / osds >= 100)) {
         ss << "For better initial performance on pools expected to store a "
-          << "large number of objects, consider supplying the "
-          << "expected_num_objects parameter when creating the pool.\n";
+           << "large number of objects, consider supplying the "
+           << "expected_num_objects parameter when creating the pool."
+           << " Pass --yes-i-really-mean-it to ignore it";
+        err = -EPERM;
+        goto reply;
       }
     }
 
index 86878aa315ae70df7c27aeb15717b312d53284db..131f789ebdbcac2a5a155a5ed22ede2b1e92211f 100644 (file)
@@ -669,6 +669,10 @@ protected:
 
   int32_t _allocate_osd_id(int32_t* existing_id);
 
+  int get_grace_interval_threshold();
+  bool grace_interval_threshold_exceeded(int last_failed);
+  void set_default_laggy_params(int target_osd);
+
 public:
   OSDMonitor(CephContext *cct, Monitor *mn, Paxos *p, const string& service_name);
 
index 636ab0c7156327814c384b2e1050a9a361226d66..4d5950fc48a0851e0b6e9851b429d28e33f4a688 100644 (file)
@@ -958,6 +958,7 @@ void PGMapDigest::dump_object_stat_sum(
       f->dump_int("compress_under_bytes", statfs.data_compressed_original);
       // Stored by user amplified by replication
       f->dump_int("stored_raw", stored_raw);
+      f->dump_unsigned("avail_raw", avail);
     }
   } else {
     tbl << stringify(byte_u_t(stored_normalized));
@@ -1176,7 +1177,7 @@ void PGMap::apply_incremental(CephContext *cct, const Incremental& inc)
 
     auto pool_statfs_iter =
       pool_statfs.find(std::make_pair(update_pool, update_osd));
-    if (pg_pool_sum.count(update_pool)) { 
+    if (pg_pool_sum.count(update_pool)) {
       pool_stat_t &pool_sum_ref = pg_pool_sum[update_pool];
       if (pool_statfs_iter == pool_statfs.end()) {
         pool_statfs.emplace(std::make_pair(update_pool, update_osd), statfs_inc);
@@ -1212,6 +1213,13 @@ void PGMap::apply_incremental(CephContext *cct, const Incremental& inc)
     bool pool_erased = false;
     if (s != pg_stat.end()) {
       pool_erased = stat_pg_sub(removed_pg, s->second);
+
+      // decrease pool stats if pg was removed
+      auto pool_stats_it = pg_pool_sum.find(removed_pg.pool());
+      if (pool_stats_it != pg_pool_sum.end()) {
+        pool_stats_it->second.sub(s->second);
+      }
+
       pg_stat.erase(s);
       if (pool_erased) {
         deleted_pools.insert(removed_pg.pool());
@@ -2525,7 +2533,11 @@ void PGMap::get_health_checks(
         if (pg_response.stuck_since) {
           // Delayed response, check for stuckness
           utime_t last_whatever = pg_response.stuck_since(pg_info);
-          if (last_whatever >= cutoff) {
+          if (last_whatever.is_zero() &&
+            pg_info.last_change >= cutoff) {
+            // still moving, ignore
+            continue;
+          } else if (last_whatever >= cutoff) {
             // Not stuck enough, ignore.
             continue;
           } else {
@@ -2823,6 +2835,7 @@ void PGMap::get_health_checks(
 
     list<string> detail_back;
     list<string> detail_front;
+    list<string> detail;
     set<mon_ping_item_t> back_sorted, front_sorted;
     for (auto i : osd_stat) {
       for (auto j : i.second.hb_pingtime) {
@@ -2853,6 +2866,19 @@ void PGMap::get_health_checks(
          front_sorted.emplace(front);
        }
       }
+      if (i.second.num_shards_repaired >
+                     cct->_conf.get_val<uint64_t>("mon_osd_warn_num_repaired")) {
+        ostringstream ss;
+       ss << "osd." << i.first << " had " << i.second.num_shards_repaired << " reads repaired";
+        detail.push_back(ss.str());
+      }
+    }
+    if (!detail.empty()) {
+      ostringstream ss;
+      ss << "Too many repaired reads on " << detail.size() << " OSDs";
+      auto& d = checks->add("OSD_TOO_MANY_REPAIRS", HEALTH_WARN, ss.str(),
+                     detail.size());
+      d.detail.swap(detail);
     }
     int max_detail = 10;
     for (auto &sback : boost::adaptors::reverse(back_sorted)) {
index 0c8359657958497ba8b88362e06788242406a25a..fada39b457f4f80a0ca4cca4ab0c3f4eff98a4de 100644 (file)
@@ -17,6 +17,7 @@ list(APPEND msg_srcs
   async/PosixStack.cc
   async/Stack.cc
   async/crypto_onwire.cc
+  async/frames_v2.cc
   async/net_handler.cc)
 
 if(LINUX)
index c00374c114d2d5ef02e270bd75fea9ca69d6ebf6..3620a7e5ae0b009a6061b7c9e1bf7d9fdfe5e52d 100644 (file)
@@ -416,6 +416,8 @@ public:
    */
   virtual int bind(const entity_addr_t& bind_addr) = 0;
 
+  virtual int bindv(const entity_addrvec_t& addrs);
+
   /**
    * This function performs a full restart of the Messenger component,
    * whatever that means.  Other entities who connect to this
@@ -432,10 +434,15 @@ public:
    * is true.
    * @param bind_addr The address to bind to.
    * @return 0 on success, or -1 on error, or -errno if
+   * we can be more specific about the failure.
    */
   virtual int client_bind(const entity_addr_t& bind_addr) = 0;
 
-  virtual int bindv(const entity_addrvec_t& addrs);
+  /**
+   * reset the 'client' Messenger. Mark all the existing Connections down
+   * and update 'nonce'.
+   */
+  virtual int client_reset() = 0;
 
 
   virtual bool should_use_msgr2() {
index 4f1224284f28ff98f770dca83207255428c74397..7595b35d77c2104802c40045afac129846510383 100644 (file)
@@ -503,6 +503,24 @@ void AsyncMessenger::_finish_bind(const entity_addrvec_t& bind_addrs,
   did_bind = true;
 }
 
+int AsyncMessenger::client_reset()
+{
+  mark_down_all();
+
+  std::scoped_lock l{lock};
+  // adjust the nonce; we want our entity_addr_t to be truly unique.
+  nonce += 1000000;
+  ldout(cct, 10) << __func__ << " new nonce " << nonce << dendl;
+
+  entity_addrvec_t newaddrs = *my_addrs;
+  for (auto& a : newaddrs.v) {
+    a.set_nonce(nonce);
+  }
+  set_myaddrs(newaddrs);
+  _init_local_connection();
+  return 0;
+}
+
 int AsyncMessenger::start()
 {
   std::scoped_lock l{lock};
index 6e18281f1b9c43211607cbae7f794b6ac11b4a4a..3ce1b61ce604784663ac3ae743bd2e67313ed940 100644 (file)
@@ -116,9 +116,11 @@ public:
 
   int bind(const entity_addr_t& bind_addr) override;
   int rebind(const set<int>& avoid_ports) override;
+  int bindv(const entity_addrvec_t& bind_addrs) override;
+
   int client_bind(const entity_addr_t& bind_addr) override;
 
-  int bindv(const entity_addrvec_t& bind_addrs) override;
+  int client_reset() override;
 
   bool should_use_msgr2() override;
 
index c69f2ccf79ad26cca248f6ed1dd9c7ce2ae351a4..544dc40dad10a0c88bbf77308c105d4fc576ec82 100644 (file)
@@ -24,6 +24,8 @@ ostream &ProtocolV2::_conn_prefix(std::ostream *_dout) {
                << " :" << connection->port
                 << " s=" << get_state_name(state) << " pgs=" << peer_global_seq
                 << " cs=" << connect_seq << " l=" << connection->policy.lossy
+                << " rev1=" << HAVE_MSGR2_FEATURE(peer_supported_features,
+                                                  REVISION_1)
                 << " rx=" << session_stream_handlers.rx.get()
                 << " tx=" << session_stream_handlers.tx.get()
                 << ").";
@@ -81,7 +83,7 @@ if(connection->interceptor) { \
 ProtocolV2::ProtocolV2(AsyncConnection *connection)
     : Protocol(2, connection),
       state(NONE),
-      peer_required_features(0),
+      peer_supported_features(0),
       client_cookie(0),
       server_cookie(0),
       global_seq(0),
@@ -92,6 +94,8 @@ ProtocolV2::ProtocolV2(AsyncConnection *connection)
       replacing(false),
       can_write(false),
       bannerExchangeCallback(nullptr),
+      tx_frame_asm(&session_stream_handlers, false),
+      rx_frame_asm(&session_stream_handlers, false),
       next_tag(static_cast<Tag>(0)),
       keepalive(false) {
 }
@@ -263,11 +267,11 @@ void ProtocolV2::reset_recv_state() {
 }
 
 size_t ProtocolV2::get_current_msg_size() const {
-  ceph_assert(!rx_segments_desc.empty());
+  ceph_assert(rx_frame_asm.get_num_segments() > 0);
   size_t sum = 0;
   // we don't include SegmentIndex::Msg::HEADER.
-  for (__u8 idx = 1; idx < rx_segments_desc.size(); idx++) {
-    sum += rx_segments_desc[idx].length;
+  for (size_t i = 1; i < rx_frame_asm.get_num_segments(); i++) {
+    sum += rx_frame_asm.get_segment_logical_len(i);
   }
   return sum;
 }
@@ -573,11 +577,14 @@ template <class F>
 bool ProtocolV2::append_frame(F& frame) {
   ceph::bufferlist bl;
   try {
-    bl = frame.get_buffer(session_stream_handlers);
+    bl = frame.get_buffer(tx_frame_asm);
   } catch (ceph::crypto::onwire::TxHandlerError &e) {
     ldout(cct, 1) << __func__ << " " << e.what() << dendl;
     return false;
   }
+
+  ldout(cct, 25) << __func__ << " assembled frame " << bl.length()
+                 << " bytes " << tx_frame_asm << dendl;
   connection->outgoing_bl.append(bl);
   return true;
 }
@@ -732,26 +739,6 @@ bool ProtocolV2::is_queued() {
   return !out_queue.empty() || connection->is_queued();
 }
 
-uint32_t ProtocolV2::get_onwire_size(const uint32_t logical_size) const {
-  if (session_stream_handlers.rx) {
-    return segment_onwire_size(logical_size);
-  } else {
-    return logical_size;
-  }
-}
-
-uint32_t ProtocolV2::get_epilogue_size() const {
-  // In secure mode size of epilogue is flexible and depends on particular
-  // cipher implementation. See the comment for epilogue_secure_block_t or
-  // epilogue_plain_block_t.
-  if (session_stream_handlers.rx) {
-    return FRAME_SECURE_EPILOGUE_SIZE + \
-        session_stream_handlers.rx->get_extra_size_at_final();
-  } else {
-    return FRAME_PLAIN_EPILOGUE_SIZE;
-  }
-}
-
 CtPtr ProtocolV2::read(CONTINUATION_RXBPTR_TYPE<ProtocolV2> &next,
                        rx_buffer_t &&buffer) {
   const auto len = buffer->length();
@@ -787,11 +774,14 @@ CtPtr ProtocolV2::write(const std::string &desc,
                         F &frame) {
   ceph::bufferlist bl;
   try {
-    bl = frame.get_buffer(session_stream_handlers);
+    bl = frame.get_buffer(tx_frame_asm);
   } catch (ceph::crypto::onwire::TxHandlerError &e) {
     ldout(cct, 1) << __func__ << " " << e.what() << dendl;
     return _fault();
   }
+
+  ldout(cct, 25) << __func__ << " assembled frame " << bl.length()
+                 << " bytes " << tx_frame_asm << dendl;
   return write(desc, next, bl);
 }
 
@@ -939,13 +929,15 @@ CtPtr ProtocolV2::_handle_peer_banner_payload(rx_buffer_t &&buffer, int r) {
     return nullptr;
   }
 
-  this->peer_required_features = peer_required_features;
-  if (this->peer_required_features == 0) {
+  this->peer_supported_features = peer_supported_features;
+  if (peer_required_features == 0) {
     this->connection_features = msgr2_required;
   }
 
-  // at this point we can change how the client protocol behaves based on
-  // this->peer_required_features
+  // if the peer supports msgr2.1, switch to it
+  bool is_rev1 = HAVE_MSGR2_FEATURE(peer_supported_features, REVISION_1);
+  tx_frame_asm.set_is_rev1(is_rev1);
+  rx_frame_asm.set_is_rev1(is_rev1);
 
   if (state == BANNER_CONNECTING) {
     state = HELLO_CONNECTING;
@@ -1061,86 +1053,48 @@ CtPtr ProtocolV2::read_frame() {
   }
 
   ldout(cct, 20) << __func__ << dendl;
-  return READ(FRAME_PREAMBLE_SIZE, handle_read_frame_preamble_main);
+  rx_preamble.clear();
+  rx_epilogue.clear();
+  rx_segments_data.clear();
+
+  return READ(rx_frame_asm.get_preamble_onwire_len(),
+              handle_read_frame_preamble_main);
 }
 
 CtPtr ProtocolV2::handle_read_frame_preamble_main(rx_buffer_t &&buffer, int r) {
   ldout(cct, 20) << __func__ << " r=" << r << dendl;
 
   if (r < 0) {
-    ldout(cct, 1) << __func__ << " read frame length and tag failed r=" << r
+    ldout(cct, 1) << __func__ << " read frame preamble failed r=" << r
                   << " (" << cpp_strerror(r) << ")" << dendl;
     return _fault();
   }
 
-  ceph::bufferlist preamble;
-  preamble.push_back(std::move(buffer));
+  rx_preamble.push_back(std::move(buffer));
 
   ldout(cct, 30) << __func__ << " preamble\n";
-  preamble.hexdump(*_dout);
+  rx_preamble.hexdump(*_dout);
   *_dout << dendl;
 
-  if (session_stream_handlers.rx) {
-    ceph_assert(session_stream_handlers.rx);
-
-    session_stream_handlers.rx->reset_rx_handler();
-    preamble = session_stream_handlers.rx->authenticated_decrypt_update(
-      std::move(preamble), segment_t::DEFAULT_ALIGNMENT);
+  try {
+    next_tag = rx_frame_asm.disassemble_preamble(rx_preamble);
+  } catch (FrameError& e) {
+    ldout(cct, 1) << __func__ << " " << e.what() << dendl;
+    return _fault();
+  } catch (ceph::crypto::onwire::MsgAuthError&) {
+    ldout(cct, 1) << __func__ << "bad auth tag" << dendl;
+    return _fault();
+  }
 
-    ldout(cct, 10) << __func__ << " got encrypted preamble."
-                   << " after decrypt premable.length()=" << preamble.length()
-                   << dendl;
+  ldout(cct, 25) << __func__ << " disassembled preamble " << rx_frame_asm
+                 << dendl;
 
+  if (session_stream_handlers.rx) {
     ldout(cct, 30) << __func__ << " preamble after decrypt\n";
-    preamble.hexdump(*_dout);
+    rx_preamble.hexdump(*_dout);
     *_dout << dendl;
   }
 
-  {
-    // I expect ceph_le32 will make the endian conversion for me. Passing
-    // everything through ::Decode is unnecessary.
-    const auto& main_preamble = \
-      reinterpret_cast<preamble_block_t&>(*preamble.c_str());
-
-    // verify preamble's CRC before any further processing
-    const auto rx_crc = ceph_crc32c(0,
-      reinterpret_cast<const unsigned char*>(&main_preamble),
-      sizeof(main_preamble) - sizeof(main_preamble.crc));
-    if (rx_crc != main_preamble.crc) {
-      ldout(cct, 10) << __func__ << " crc mismatch for main preamble"
-                    << " rx_crc=" << rx_crc
-                    << " tx_crc=" << main_preamble.crc << dendl;
-      return _fault();
-    }
-
-    // currently we do support between 1 and MAX_NUM_SEGMENTS segments
-    if (main_preamble.num_segments < 1 ||
-        main_preamble.num_segments > MAX_NUM_SEGMENTS) {
-      ldout(cct, 10) << __func__ << " unsupported num_segments="
-                    << " tx_crc=" << main_preamble.num_segments << dendl;
-      return _fault();
-    }
-
-    next_tag = static_cast<Tag>(main_preamble.tag);
-
-    rx_segments_desc.clear();
-    rx_segments_data.clear();
-
-    if (main_preamble.num_segments > MAX_NUM_SEGMENTS) {
-      ldout(cct, 30) << __func__
-                    << " num_segments=" << main_preamble.num_segments
-                    << " is too much" << dendl;
-      return _fault();
-    }
-    for (std::uint8_t idx = 0; idx < main_preamble.num_segments; idx++) {
-      ldout(cct, 10) << __func__ << " got new segment:"
-                    << " len=" << main_preamble.segments[idx].length
-                    << " align=" << main_preamble.segments[idx].alignment
-                    << dendl;
-      rx_segments_desc.emplace_back(main_preamble.segments[idx]);
-    }
-  }
-
   // does it need throttle?
   if (next_tag == Tag::MESSAGE) {
     if (state != READY) {
@@ -1193,21 +1147,26 @@ CtPtr ProtocolV2::handle_read_frame_dispatch() {
 }
 
 CtPtr ProtocolV2::read_frame_segment() {
-  ldout(cct, 20) << __func__ << dendl;
-  ceph_assert(!rx_segments_desc.empty());
+  size_t seg_idx = rx_segments_data.size();
+  ldout(cct, 20) << __func__ << " seg_idx=" << seg_idx << dendl;
+  rx_segments_data.emplace_back();
+
+  uint32_t onwire_len = rx_frame_asm.get_segment_onwire_len(seg_idx);
+  if (onwire_len == 0) {
+    return _handle_read_frame_segment();
+  }
 
-  // description of current segment to read
-  const auto& cur_rx_desc = rx_segments_desc.at(rx_segments_data.size());
   rx_buffer_t rx_buffer;
+  uint16_t align = rx_frame_asm.get_segment_align(seg_idx);
   try {
     rx_buffer = buffer::ptr_node::create(buffer::create_aligned(
-      get_onwire_size(cur_rx_desc.length), cur_rx_desc.alignment));
+        onwire_len, align));
   } catch (std::bad_alloc&) {
     // Catching because of potential issues with satisfying alignment.
-    ldout(cct, 20) << __func__ << " can't allocate aligned rx_buffer "
-                  << " len=" << get_onwire_size(cur_rx_desc.length)
-                  << " align=" << cur_rx_desc.alignment
-                  << dendl;
+    ldout(cct, 1) << __func__ << " can't allocate aligned rx_buffer"
+                  << " len=" << onwire_len
+                  << " align=" << align
+                  << dendl;
     return _fault();
   }
 
@@ -1223,35 +1182,21 @@ CtPtr ProtocolV2::handle_read_frame_segment(rx_buffer_t &&rx_buffer, int r) {
     return _fault();
   }
 
-  rx_segments_data.emplace_back();
   rx_segments_data.back().push_back(std::move(rx_buffer));
+  return _handle_read_frame_segment();
+}
 
-  // decrypt incoming data
-  // FIXME: if (auth_meta->is_mode_secure()) {
-  if (session_stream_handlers.rx) {
-    ceph_assert(session_stream_handlers.rx);
-
-    auto& new_seg = rx_segments_data.back();
-    if (new_seg.length()) {
-      auto padded = session_stream_handlers.rx->authenticated_decrypt_update(
-          std::move(new_seg), segment_t::DEFAULT_ALIGNMENT);
-      const auto idx = rx_segments_data.size() - 1;
-      new_seg.clear();
-      padded.splice(0, rx_segments_desc[idx].length, &new_seg);
-
-      ldout(cct, 20) << __func__
-                     << " unpadded new_seg.length()=" << new_seg.length()
-                     << dendl;
-    }
-  }
-
-  if (rx_segments_desc.size() == rx_segments_data.size()) {
+CtPtr ProtocolV2::_handle_read_frame_segment() {
+  if (rx_segments_data.size() == rx_frame_asm.get_num_segments()) {
     // OK, all segments planned to read are read. Can go with epilogue.
-    return READ(get_epilogue_size(), handle_read_frame_epilogue_main);
-  } else {
-    // TODO: for makeshift only. This will be more generic and throttled
-    return read_frame_segment();
+    uint32_t epilogue_onwire_len = rx_frame_asm.get_epilogue_onwire_len();
+    if (epilogue_onwire_len == 0) {
+      return _handle_read_frame_epilogue_main();
+    }
+    return READ(epilogue_onwire_len, handle_read_frame_epilogue_main);
   }
+  // TODO: for makeshift only. This will be more generic and throttled
+  return read_frame_segment();
 }
 
 CtPtr ProtocolV2::handle_frame_payload() {
@@ -1346,66 +1291,38 @@ CtPtr ProtocolV2::handle_read_frame_epilogue_main(rx_buffer_t &&buffer, int r)
   ldout(cct, 20) << __func__ << " r=" << r << dendl;
 
   if (r < 0) {
-    ldout(cct, 1) << __func__ << " read data error " << dendl;
+    ldout(cct, 1) << __func__ << " read frame epilogue failed r=" << r
+                  << " (" << cpp_strerror(r) << ")" << dendl;
     return _fault();
   }
 
-  __u8 late_flags;
+  rx_epilogue.push_back(std::move(buffer));
+  return _handle_read_frame_epilogue_main();
+}
 
-  // FIXME: if (auth_meta->is_mode_secure()) {
-  if (session_stream_handlers.rx) {
-    ldout(cct, 1) << __func__ << " read frame epilogue bytes="
-                  << get_epilogue_size() << dendl;
-
-    // decrypt epilogue and authenticate entire frame.
-    ceph::bufferlist epilogue_bl;
-    {
-      epilogue_bl.push_back(std::move(buffer));
-      try {
-        epilogue_bl =
-            session_stream_handlers.rx->authenticated_decrypt_update_final(
-               std::move(epilogue_bl), segment_t::DEFAULT_ALIGNMENT);
-      } catch (ceph::crypto::onwire::MsgAuthError &e) {
-        ldout(cct, 5) << __func__ << " message authentication failed: "
-                      << e.what() << dendl;
-        return _fault();
-      }
-    }
-    auto& epilogue =
-        reinterpret_cast<epilogue_plain_block_t&>(*epilogue_bl.c_str());
-    late_flags = epilogue.late_flags;
-  } else {
-    auto& epilogue = reinterpret_cast<epilogue_plain_block_t&>(*buffer->c_str());
-
-    for (std::uint8_t idx = 0; idx < rx_segments_data.size(); idx++) {
-      const __u32 expected_crc = epilogue.crc_values[idx];
-      const __u32 calculated_crc = rx_segments_data[idx].crc32c(-1);
-      if (expected_crc != calculated_crc) {
-       ldout(cct, 5) << __func__ << " message integrity check failed: "
-                     << " expected_crc=" << expected_crc
-                     << " calculated_crc=" << calculated_crc
-                     << dendl;
-       return _fault();
-      } else {
-       ldout(cct, 20) << __func__ << " message integrity check success: "
-                      << " expected_crc=" << expected_crc
-                      << " calculated_crc=" << calculated_crc
-                      << dendl;
-      }
-    }
-    late_flags = epilogue.late_flags;
+CtPtr ProtocolV2::_handle_read_frame_epilogue_main() {
+  bool aborted;
+  try {
+    rx_frame_asm.disassemble_first_segment(rx_preamble, rx_segments_data[0]);
+    aborted = !rx_frame_asm.disassemble_remaining_segments(
+        rx_segments_data.data(), rx_epilogue);
+  } catch (FrameError& e) {
+    ldout(cct, 1) << __func__ << " " << e.what() << dendl;
+    return _fault();
+  } catch (ceph::crypto::onwire::MsgAuthError&) {
+    ldout(cct, 1) << __func__ << "bad auth tag" << dendl;
+    return _fault();
   }
 
   // we do have a mechanism that allows transmitter to start sending message
   // and abort after putting entire data field on wire. This will be used by
   // the kernel client to avoid unnecessary buffering.
-  if (late_flags & FRAME_FLAGS_LATEABRT) {
+  if (aborted) {
     reset_throttle();
     state = READY;
     return CONTINUE(read_frame);
-  } else {
-    return handle_read_frame_dispatch();
   }
+  return handle_read_frame_dispatch();
 }
 
 CtPtr ProtocolV2::handle_message() {
@@ -1417,9 +1334,8 @@ CtPtr ProtocolV2::handle_message() {
 #endif
   recv_stamp = ceph_clock_now();
 
-  // we need to get the size before std::moving segments data
   const size_t cur_msg_size = get_current_msg_size();
-  auto msg_frame = MessageFrame::Decode(std::move(rx_segments_data));
+  auto msg_frame = MessageFrame::Decode(rx_segments_data);
 
   // XXX: paranoid copy just to avoid oops
   ceph_msg_header2 current_header = msg_frame.header();
@@ -1541,9 +1457,8 @@ CtPtr ProtocolV2::handle_message() {
   }
 
   connection->logger->inc(l_msgr_recv_messages);
-  connection->logger->inc(
-      l_msgr_recv_bytes,
-      cur_msg_size + sizeof(ceph_msg_header) + sizeof(ceph_msg_footer));
+  connection->logger->inc(l_msgr_recv_bytes,
+                          rx_frame_asm.get_frame_onwire_len());
 
   messenger->ms_fast_preprocess(message);
   fast_dispatch_time = ceph::mono_clock::now();
@@ -1895,8 +1810,9 @@ CtPtr ProtocolV2::handle_auth_done(ceph::bufferlist &payload)
     return _fault();
   }
   auth_meta->con_mode = auth_done.con_mode();
-  session_stream_handlers = \
-    ceph::crypto::onwire::rxtx_t::create_handler_pair(cct, *auth_meta, false);
+  bool is_rev1 = HAVE_MSGR2_FEATURE(peer_supported_features, REVISION_1);
+  session_stream_handlers = ceph::crypto::onwire::rxtx_t::create_handler_pair(
+      cct, *auth_meta, /*new_nonce_format=*/is_rev1, /*crossed=*/false);
 
   state = AUTH_CONNECTING_SIGN;
 
@@ -2131,8 +2047,8 @@ CtPtr ProtocolV2::handle_server_ident(ceph::bufferlist &payload)
                 << " features_supported=" << std::hex
                 << server_ident.supported_features()
                 << " features_required=" << server_ident.required_features()
-                << " flags=" << server_ident.flags() << " cookie=" << std::dec
-                << server_ident.cookie() << dendl;
+                << " flags=" << server_ident.flags()
+                << " cookie=" << server_ident.cookie() << std::dec << dendl;
 
   // is this who we intended to talk to?
   // be a bit forgiving here, since we may be connecting based on addresses parsed out
@@ -2275,8 +2191,9 @@ CtPtr ProtocolV2::finish_auth()
   ceph_assert(auth_meta);
   // TODO: having a possibility to check whether we're server or client could
   // allow reusing finish_auth().
-  session_stream_handlers = \
-    ceph::crypto::onwire::rxtx_t::create_handler_pair(cct, *auth_meta, true);
+  bool is_rev1 = HAVE_MSGR2_FEATURE(peer_supported_features, REVISION_1);
+  session_stream_handlers = ceph::crypto::onwire::rxtx_t::create_handler_pair(
+      cct, *auth_meta, /*new_nonce_format=*/is_rev1, /*crossed=*/true);
 
   const auto sig = auth_meta->session_key.empty() ? sha256_digest_t() :
     auth_meta->session_key.hmac_sha256(cct, pre_auth.rxbuf);
@@ -2725,6 +2642,10 @@ CtPtr ProtocolV2::reuse_connection(const AsyncConnectionRef& existing,
   exproto->pre_auth.enabled = false;
 
   if (!reconnecting) {
+    exproto->peer_supported_features = peer_supported_features;
+    exproto->tx_frame_asm.set_is_rev1(tx_frame_asm.get_is_rev1());
+    exproto->rx_frame_asm.set_is_rev1(rx_frame_asm.get_is_rev1());
+
     exproto->client_cookie = client_cookie;
     exproto->peer_name = peer_name;
     exproto->connection_features = connection_features;
@@ -2877,8 +2798,8 @@ CtPtr ProtocolV2::send_server_ident() {
                 << connection->policy.features_supported
                 << " features_required="
                            << (connection->policy.features_required | msgr2_required)
-                << " flags=" << flags << " cookie=" << std::dec << server_cookie
-                << dendl;
+                << " flags=" << flags
+                << " cookie=" << server_cookie << std::dec << dendl;
 
   connection->lock.unlock();
   // Because "replacing" will prevent other connections preempt this addr,
index 9897d18cf23334d9d81a349c3a085462b1348302..d9a49d0e9d9f46a9c29ce4688316b2aec28b4e9b 100644 (file)
@@ -4,8 +4,6 @@
 #ifndef _MSG_ASYNC_PROTOCOL_V2_
 #define _MSG_ASYNC_PROTOCOL_V2_
 
-#include <boost/container/static_vector.hpp>
-
 #include "Protocol.h"
 #include "crypto_onwire.h"
 #include "frames_v2.h"
@@ -67,13 +65,12 @@ private:
     return statenames[state];
   }
 
-public:
   // TODO: move into auth_meta?
   ceph::crypto::onwire::rxtx_t session_stream_handlers;
-private:
+
   entity_name_t peer_name;
   State state;
-  uint64_t peer_required_features;
+  uint64_t peer_supported_features;  // CEPH_MSGR2_FEATURE_*
 
   uint64_t client_cookie;
   uint64_t server_cookie;
@@ -97,10 +94,12 @@ private:
   using ProtFuncPtr = void (ProtocolV2::*)();
   Ct<ProtocolV2> *bannerExchangeCallback;
 
-  boost::container::static_vector<ceph::msgr::v2::segment_t,
-                                 ceph::msgr::v2::MAX_NUM_SEGMENTS> rx_segments_desc;
-  boost::container::static_vector<ceph::bufferlist,
-                                 ceph::msgr::v2::MAX_NUM_SEGMENTS> rx_segments_data;
+  ceph::msgr::v2::FrameAssembler tx_frame_asm;
+  ceph::msgr::v2::FrameAssembler rx_frame_asm;
+
+  ceph::bufferlist rx_preamble;
+  ceph::bufferlist rx_epilogue;
+  ceph::msgr::v2::segment_bls_t rx_segments_data;
   ceph::msgr::v2::Tag next_tag;
   utime_t backoff;  // backoff time
   utime_t recv_stamp;
@@ -170,7 +169,9 @@ private:
   Ct<ProtocolV2> *handle_read_frame_preamble_main(rx_buffer_t &&buffer, int r);
   Ct<ProtocolV2> *read_frame_segment();
   Ct<ProtocolV2> *handle_read_frame_segment(rx_buffer_t &&rx_buffer, int r);
+  Ct<ProtocolV2> *_handle_read_frame_segment();
   Ct<ProtocolV2> *handle_read_frame_epilogue_main(rx_buffer_t &&buffer, int r);
+  Ct<ProtocolV2> *_handle_read_frame_epilogue_main();
   Ct<ProtocolV2> *handle_read_frame_dispatch();
   Ct<ProtocolV2> *handle_frame_payload();
 
@@ -252,8 +253,6 @@ private:
   Ct<ProtocolV2> *send_reconnect_ok();
   Ct<ProtocolV2> *server_ready();
 
-  uint32_t get_onwire_size(uint32_t logical_size) const;
-  uint32_t get_epilogue_size() const;
   size_t get_current_msg_size() const;
 };
 
index c39632cbd6e1e1b595fb6e97983dcf47188d4dda..4e42340603e7d671e6ecb8846ba512dc62948bdf 100644 (file)
@@ -20,8 +20,8 @@ static constexpr const std::size_t AESGCM_TAG_LEN{16};
 static constexpr const std::size_t AESGCM_BLOCK_LEN{16};
 
 struct nonce_t {
-  ceph_le32 random_seq;
-  ceph_le64 random_rest;
+  ceph_le32 fixed;
+  ceph_le64 counter;
 
   bool operator==(const nonce_t& rhs) const {
     return !memcmp(this, &rhs, sizeof(*this));
@@ -41,15 +41,18 @@ class AES128GCM_OnWireTxHandler : public ceph::crypto::onwire::TxHandler {
   ceph::bufferlist buffer;
   nonce_t nonce, initial_nonce;
   bool used_initial_nonce;
+  bool new_nonce_format;  // 64-bit counter?
   static_assert(sizeof(nonce) == AESGCM_IV_LEN);
 
 public:
   AES128GCM_OnWireTxHandler(CephContext* const cct,
                            const key_t& key,
-                           const nonce_t& nonce)
+                           const nonce_t& nonce,
+                           bool new_nonce_format)
     : cct(cct),
       ectx(EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free),
-      nonce(nonce), initial_nonce(nonce), used_initial_nonce(false) {
+      nonce(nonce), initial_nonce(nonce), used_initial_nonce(false),
+      new_nonce_format(new_nonce_format) {
     ceph_assert_always(ectx);
     ceph_assert_always(key.size() * CHAR_BIT == 128);
 
@@ -69,20 +72,14 @@ public:
     ::ceph::crypto::zeroize_for_security(&initial_nonce, sizeof(initial_nonce));
   }
 
-  std::uint32_t calculate_segment_size(std::uint32_t size) override
-  {
-    return size;
-  }
-
-  void reset_tx_handler(
-    std::initializer_list<std::uint32_t> update_size_sequence) override;
+  void reset_tx_handler(const uint32_t* first, const uint32_t* last) override;
 
   void authenticated_encrypt_update(const ceph::bufferlist& plaintext) override;
   ceph::bufferlist authenticated_encrypt_final() override;
 };
 
-void AES128GCM_OnWireTxHandler::reset_tx_handler(
-  std::initializer_list<std::uint32_t> update_size_sequence)
+void AES128GCM_OnWireTxHandler::reset_tx_handler(const uint32_t* first,
+                                                 const uint32_t* last)
 {
   if (nonce == initial_nonce) {
     if (used_initial_nonce) {
@@ -96,15 +93,23 @@ void AES128GCM_OnWireTxHandler::reset_tx_handler(
     throw std::runtime_error("EVP_EncryptInit_ex failed");
   }
 
-  buffer.reserve(std::accumulate(std::begin(update_size_sequence),
-    std::end(update_size_sequence), AESGCM_TAG_LEN));
+  ceph_assert(buffer.get_append_buffer_unused_tail_length() == 0);
+  buffer.reserve(std::accumulate(first, last, AESGCM_TAG_LEN));
 
-  nonce.random_seq = nonce.random_seq + 1;
+  if (!new_nonce_format) {
+    // msgr2.0: 32-bit counter followed by 64-bit fixed field,
+    // susceptible to overflow!
+    nonce.fixed = nonce.fixed + 1;
+  } else {
+    nonce.counter = nonce.counter + 1;
+  }
 }
 
 void AES128GCM_OnWireTxHandler::authenticated_encrypt_update(
   const ceph::bufferlist& plaintext)
 {
+  ceph_assert(buffer.get_append_buffer_unused_tail_length() >=
+              plaintext.length());
   auto filler = buffer.append_hole(plaintext.length());
 
   for (const auto& plainbuf : plaintext.buffers()) {
@@ -131,6 +136,8 @@ void AES128GCM_OnWireTxHandler::authenticated_encrypt_update(
 ceph::bufferlist AES128GCM_OnWireTxHandler::authenticated_encrypt_final()
 {
   int final_len = 0;
+  ceph_assert(buffer.get_append_buffer_unused_tail_length() ==
+              AESGCM_BLOCK_LEN);
   auto filler = buffer.append_hole(AESGCM_BLOCK_LEN);
   if(1 != EVP_EncryptFinal_ex(ectx.get(),
        reinterpret_cast<unsigned char*>(filler.c_str()),
@@ -158,16 +165,17 @@ class AES128GCM_OnWireRxHandler : public ceph::crypto::onwire::RxHandler {
   CephContext* const cct;
   std::unique_ptr<EVP_CIPHER_CTX, decltype(&::EVP_CIPHER_CTX_free)> ectx;
   nonce_t nonce;
+  bool new_nonce_format;  // 64-bit counter?
   static_assert(sizeof(nonce) == AESGCM_IV_LEN);
 
 public:
   AES128GCM_OnWireRxHandler(CephContext* const cct,
                            const key_t& key,
-                           const nonce_t& nonce)
+                           const nonce_t& nonce,
+                           bool new_nonce_format)
     : cct(cct),
       ectx(EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free),
-      nonce(nonce)
-  {
+      nonce(nonce), new_nonce_format(new_nonce_format) {
     ceph_assert_always(ectx);
     ceph_assert_always(key.size() * CHAR_BIT == 128);
 
@@ -190,12 +198,8 @@ public:
     return AESGCM_TAG_LEN;
   }
   void reset_rx_handler() override;
-  ceph::bufferlist authenticated_decrypt_update(
-    ceph::bufferlist&& ciphertext,
-    std::uint32_t alignment) override;
-  ceph::bufferlist authenticated_decrypt_update_final(
-    ceph::bufferlist&& ciphertext,
-    std::uint32_t alignment) override;
+  void authenticated_decrypt_update(ceph::bufferlist& bl) override;
+  void authenticated_decrypt_update_final(ceph::bufferlist& bl) override;
 };
 
 void AES128GCM_OnWireRxHandler::reset_rx_handler()
@@ -204,68 +208,46 @@ void AES128GCM_OnWireRxHandler::reset_rx_handler()
        reinterpret_cast<const unsigned char*>(&nonce))) {
     throw std::runtime_error("EVP_DecryptInit_ex failed");
   }
-  nonce.random_seq = nonce.random_seq + 1;
+
+  if (!new_nonce_format) {
+    // msgr2.0: 32-bit counter followed by 64-bit fixed field,
+    // susceptible to overflow!
+    nonce.fixed = nonce.fixed + 1;
+  } else {
+    nonce.counter = nonce.counter + 1;
+  }
 }
 
-ceph::bufferlist AES128GCM_OnWireRxHandler::authenticated_decrypt_update(
-  ceph::bufferlist&& ciphertext,
-  std::uint32_t alignment)
+void AES128GCM_OnWireRxHandler::authenticated_decrypt_update(
+  ceph::bufferlist& bl)
 {
-  ceph_assert(ciphertext.length() > 0);
-  //ceph_assert(ciphertext.length() % AESGCM_BLOCK_LEN == 0);
-
-  // NOTE: we might consider in-place transformations in the future. AFAIK
-  // OpenSSL's might sustain that but lack of clear confirmation postpones.
-  auto plainnode = ceph::buffer::ptr_node::create(buffer::create_aligned(
-    ciphertext.length(), alignment));
-  auto* plainbuf = reinterpret_cast<unsigned char*>(plainnode->c_str());
-
-  for (const auto& cipherbuf : ciphertext.buffers()) {
-    // XXX: Why int?
+  // discard cached crcs as we will be writing through c_str()
+  bl.invalidate_crc();
+  for (auto& buf : bl.buffers()) {
+    auto p = reinterpret_cast<unsigned char*>(const_cast<char*>(buf.c_str()));
     int update_len = 0;
 
-    if (1 != EVP_DecryptUpdate(ectx.get(),
-       plainbuf,
-       &update_len,
-       reinterpret_cast<const unsigned char*>(cipherbuf.c_str()),
-       cipherbuf.length())) {
+    if (1 != EVP_DecryptUpdate(ectx.get(), p, &update_len, p, buf.length())) {
       throw std::runtime_error("EVP_DecryptUpdate failed");
     }
     ceph_assert_always(update_len >= 0);
-    ceph_assert(cipherbuf.length() == static_cast<unsigned>(update_len));
-
-    plainbuf += update_len;
+    ceph_assert(static_cast<unsigned>(update_len) == buf.length());
   }
-
-  ceph::bufferlist outbl;
-  outbl.push_back(std::move(plainnode));
-  return outbl;
 }
 
-
-ceph::bufferlist AES128GCM_OnWireRxHandler::authenticated_decrypt_update_final(
-  ceph::bufferlist&& ciphertext_and_tag,
-  std::uint32_t alignment)
+void AES128GCM_OnWireRxHandler::authenticated_decrypt_update_final(
+  ceph::bufferlist& bl)
 {
-  const auto cnt_len = ciphertext_and_tag.length();
-  ceph_assert(cnt_len >= AESGCM_TAG_LEN);
+  unsigned orig_len = bl.length();
+  ceph_assert(orig_len >= AESGCM_TAG_LEN);
 
   // decrypt optional data. Caller is obliged to provide only signature but it
   // may supply ciphertext as well. Combining the update + final is reflected
   // combined together.
-  ceph::bufferlist plainbl;
   ceph::bufferlist auth_tag;
-  {
-    const auto tag_off = cnt_len - AESGCM_TAG_LEN;
-    ceph::bufferlist ciphertext;
-    ciphertext_and_tag.splice(0, tag_off, &ciphertext);
-
-    // the rest is the signature (a.k.a auth tag)
-    auth_tag = std::move(ciphertext_and_tag);
-
-    if (ciphertext.length()) {
-      plainbl = authenticated_decrypt_update(std::move(ciphertext), alignment);
-    }
+  bl.splice(orig_len - AESGCM_TAG_LEN, AESGCM_TAG_LEN, &auth_tag);
+  if (bl.length() > 0) {
+    authenticated_decrypt_update(bl);
   }
 
   // we need to ensure the tag is stored in continuous memory.
@@ -279,23 +261,17 @@ ceph::bufferlist AES128GCM_OnWireRxHandler::authenticated_decrypt_update_final(
   {
     int final_len = 0;
     if (0 >= EVP_DecryptFinal_ex(ectx.get(), nullptr, &final_len)) {
-      ldout(cct, 15) << __func__
-                    << " plainbl.length()=" << plainbl.length()
-                    << " final_len=" << final_len
-                    << dendl;
       throw MsgAuthError();
-    } else {
-      ceph_assert_always(final_len == 0);
-      ceph_assert_always(plainbl.length() + final_len + AESGCM_TAG_LEN == cnt_len);
     }
+    ceph_assert_always(final_len == 0);
+    ceph_assert(bl.length() + AESGCM_TAG_LEN == orig_len);
   }
-
-  return plainbl;
 }
 
 ceph::crypto::onwire::rxtx_t ceph::crypto::onwire::rxtx_t::create_handler_pair(
   CephContext* cct,
   const AuthConnectionMeta& auth_meta,
+  bool new_nonce_format,
   bool crossed)
 {
   if (auth_meta.is_mode_secure()) {
@@ -323,9 +299,9 @@ ceph::crypto::onwire::rxtx_t ceph::crypto::onwire::rxtx_t::create_handler_pair(
 
     return {
       std::make_unique<AES128GCM_OnWireRxHandler>(
-       cct, key, crossed ? tx_nonce : rx_nonce),
+       cct, key, crossed ? tx_nonce : rx_nonce, new_nonce_format),
       std::make_unique<AES128GCM_OnWireTxHandler>(
-       cct, key, crossed ? rx_nonce : tx_nonce)
+       cct, key, crossed ? rx_nonce : tx_nonce, new_nonce_format)
     };
   } else {
     return { nullptr, nullptr };
index 0c544f205aca468144315dddc9f3695b67fc5364..55f7550868fbeca48b8938b7d9b1529f849e33de 100644 (file)
@@ -53,8 +53,6 @@ struct TxHandlerError : public std::runtime_error {
 struct TxHandler {
   virtual ~TxHandler() = default;
 
-  virtual std::uint32_t calculate_segment_size(std::uint32_t size) = 0;
-
   // Instance of TxHandler must be reset before doing any encrypt-update
   // step. This applies also to situation when encrypt-final was already
   // called and another round of update-...-update-final will take place.
@@ -67,8 +65,17 @@ struct TxHandler {
   // It's undefined what will happen if client doesn't follow the order.
   //
   // TODO: switch to always_aligned_t
-  virtual void reset_tx_handler(
-    std::initializer_list<std::uint32_t> update_size_sequence) = 0;
+  virtual void reset_tx_handler(const uint32_t* first,
+                                const uint32_t* last) = 0;
+
+  void reset_tx_handler(std::initializer_list<uint32_t> update_size_sequence) {
+    if (update_size_sequence.size() > 0) {
+      const uint32_t* first = &*update_size_sequence.begin();
+      reset_tx_handler(first, first + update_size_sequence.size());
+    } else {
+      reset_tx_handler(nullptr, nullptr);
+    }
+  }
 
   // Perform encryption. Client gives full ownership right to provided
   // bufferlist. The method MUST NOT be called after _final() if there
@@ -96,17 +103,12 @@ public:
   virtual void reset_rx_handler() = 0;
 
   // Perform decryption ciphertext must be ALWAYS aligned to 16 bytes.
-  // TODO: switch to always_aligned_t
-  virtual ceph::bufferlist authenticated_decrypt_update(
-    ceph::bufferlist&& ciphertext,
-    std::uint32_t alignment) = 0;
+  virtual void authenticated_decrypt_update(ceph::bufferlist& bl) = 0;
 
   // Perform decryption of last cipertext's portion and verify signature
   // for overall decryption sequence.
   // Throws on integrity/authenticity checks
-  virtual ceph::bufferlist authenticated_decrypt_update_final(
-    ceph::bufferlist&& ciphertext,
-    std::uint32_t alignment) = 0;
+  virtual void authenticated_decrypt_update_final(ceph::bufferlist& bl) = 0;
 };
 
 struct rxtx_t {
@@ -119,6 +121,7 @@ struct rxtx_t {
   static rxtx_t create_handler_pair(
     CephContext* ctx,
     const class AuthConnectionMeta& auth_meta,
+    bool new_nonce_format,
     bool crossed);
 };
 
diff --git a/ceph/src/msg/async/frames_v2.cc b/ceph/src/msg/async/frames_v2.cc
new file mode 100644 (file)
index 0000000..8fdded4
--- /dev/null
@@ -0,0 +1,478 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2020 Red Hat
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation. See file COPYING.
+ *
+ */
+
+#include "frames_v2.h"
+
+#include <ostream>
+
+#include <fmt/format.h>
+
+namespace ceph::msgr::v2 {
+
+// Unpads bufferlist to unpadded_len.
+static void unpad_zero(bufferlist& bl, uint32_t unpadded_len) {
+  ceph_assert(bl.length() >= unpadded_len);
+  if (bl.length() > unpadded_len) {
+    bl.splice(unpadded_len, bl.length() - unpadded_len);
+  }
+}
+
+// Discards trailing empty segments, unless there is just one segment.
+// A frame always has at least one (possibly empty) segment.
+static size_t calc_num_segments(const bufferlist segment_bls[],
+                                size_t segment_count) {
+  ceph_assert(segment_count > 0 && segment_count <= MAX_NUM_SEGMENTS);
+  for (size_t i = segment_count; i-- > 0; ) {
+    if (segment_bls[i].length() > 0) {
+      return i + 1;
+    }
+  }
+  return 1;
+}
+
+static void check_segment_crc(const bufferlist& segment_bl,
+                              uint32_t expected_crc) {
+  uint32_t crc = segment_bl.crc32c(-1);
+  if (crc != expected_crc) {
+    throw FrameError(fmt::format(
+        "bad segment crc calculated={} expected={}", crc, expected_crc));
+  }
+}
+
+// Returns true if the frame is ready for dispatching, or false if
+// it was aborted by the sender and must be dropped.
+static bool check_epilogue_late_status(__u8 late_status) {
+  __u8 aborted = late_status & FRAME_LATE_STATUS_ABORTED_MASK;
+  if (aborted != FRAME_LATE_STATUS_ABORTED &&
+      aborted != FRAME_LATE_STATUS_COMPLETE) {
+    throw FrameError(fmt::format("bad late_status"));
+  }
+  return aborted == FRAME_LATE_STATUS_COMPLETE;
+}
+
+void FrameAssembler::fill_preamble(Tag tag,
+                                   preamble_block_t& preamble) const {
+  // FIPS zeroization audit 20191115: this memset is not security related.
+  ::memset(&preamble, 0, sizeof(preamble));
+
+  preamble.tag = static_cast<__u8>(tag);
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    preamble.segments[i].length = m_descs[i].logical_len;
+    preamble.segments[i].alignment = m_descs[i].align;
+  }
+  preamble.num_segments = m_descs.size();
+  preamble.crc = ceph_crc32c(
+      0, reinterpret_cast<const unsigned char*>(&preamble),
+      sizeof(preamble) - sizeof(preamble.crc));
+}
+
+uint64_t FrameAssembler::get_frame_logical_len() const {
+  ceph_assert(!m_descs.empty());
+  uint64_t logical_len = 0;
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    logical_len += m_descs[i].logical_len;
+  }
+  return logical_len;
+}
+
+uint64_t FrameAssembler::get_frame_onwire_len() const {
+  ceph_assert(!m_descs.empty());
+  uint64_t onwire_len = get_preamble_onwire_len();
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    onwire_len += get_segment_onwire_len(i);
+  }
+  onwire_len += get_epilogue_onwire_len();
+  return onwire_len;
+}
+
+bufferlist FrameAssembler::asm_crc_rev0(const preamble_block_t& preamble,
+                                        bufferlist segment_bls[]) const {
+  epilogue_crc_rev0_block_t epilogue;
+  // FIPS zeroization audit 20191115: this memset is not security related.
+  ::memset(&epilogue, 0, sizeof(epilogue));
+
+  bufferlist frame_bl(sizeof(preamble) + sizeof(epilogue));
+  frame_bl.append(reinterpret_cast<const char*>(&preamble), sizeof(preamble));
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    ceph_assert(segment_bls[i].length() == m_descs[i].logical_len);
+    epilogue.crc_values[i] = segment_bls[i].crc32c(-1);
+    if (segment_bls[i].length() > 0) {
+      frame_bl.claim_append(segment_bls[i]);
+    }
+  }
+  frame_bl.append(reinterpret_cast<const char*>(&epilogue), sizeof(epilogue));
+  return frame_bl;
+}
+
+bufferlist FrameAssembler::asm_secure_rev0(const preamble_block_t& preamble,
+                                           bufferlist segment_bls[]) const {
+  bufferlist preamble_bl(sizeof(preamble));
+  preamble_bl.append(reinterpret_cast<const char*>(&preamble),
+                     sizeof(preamble));
+
+  epilogue_secure_rev0_block_t epilogue;
+  // FIPS zeroization audit 20191115: this memset is not security related.
+  ::memset(&epilogue, 0, sizeof(epilogue));
+  bufferlist epilogue_bl(sizeof(epilogue));
+  epilogue_bl.append(reinterpret_cast<const char*>(&epilogue),
+                     sizeof(epilogue));
+
+  // preamble + MAX_NUM_SEGMENTS + epilogue
+  uint32_t onwire_lens[MAX_NUM_SEGMENTS + 2];
+  onwire_lens[0] = preamble_bl.length();
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    onwire_lens[i + 1] = segment_bls[i].length();  // already padded
+  }
+  onwire_lens[m_descs.size() + 1] = epilogue_bl.length();
+  m_crypto->tx->reset_tx_handler(onwire_lens,
+                                 onwire_lens + m_descs.size() + 2);
+  m_crypto->tx->authenticated_encrypt_update(preamble_bl);
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    if (segment_bls[i].length() > 0) {
+      m_crypto->tx->authenticated_encrypt_update(segment_bls[i]);
+    }
+  }
+  m_crypto->tx->authenticated_encrypt_update(epilogue_bl);
+  return m_crypto->tx->authenticated_encrypt_final();
+}
+
+bufferlist FrameAssembler::asm_crc_rev1(const preamble_block_t& preamble,
+                                        bufferlist segment_bls[]) const {
+  epilogue_crc_rev1_block_t epilogue;
+  // FIPS zeroization audit 20191115: this memset is not security related.
+  ::memset(&epilogue, 0, sizeof(epilogue));
+  epilogue.late_status |= FRAME_LATE_STATUS_COMPLETE;
+
+  bufferlist frame_bl(sizeof(preamble) + FRAME_CRC_SIZE + sizeof(epilogue));
+  frame_bl.append(reinterpret_cast<const char*>(&preamble), sizeof(preamble));
+
+  ceph_assert(segment_bls[0].length() == m_descs[0].logical_len);
+  if (segment_bls[0].length() > 0) {
+    uint32_t crc = segment_bls[0].crc32c(-1);
+    frame_bl.claim_append(segment_bls[0]);
+    encode(crc, frame_bl);
+  }
+  if (m_descs.size() == 1) {
+    return frame_bl;  // no epilogue if only one segment
+  }
+
+  for (size_t i = 1; i < m_descs.size(); i++) {
+    ceph_assert(segment_bls[i].length() == m_descs[i].logical_len);
+    epilogue.crc_values[i - 1] = segment_bls[i].crc32c(-1);
+    if (segment_bls[i].length() > 0) {
+      frame_bl.claim_append(segment_bls[i]);
+    }
+  }
+  frame_bl.append(reinterpret_cast<const char*>(&epilogue), sizeof(epilogue));
+  return frame_bl;
+}
+
+bufferlist FrameAssembler::asm_secure_rev1(const preamble_block_t& preamble,
+                                           bufferlist segment_bls[]) const {
+  bufferlist preamble_bl;
+  if (segment_bls[0].length() > FRAME_PREAMBLE_INLINE_SIZE) {
+    // first segment is partially inlined, inline buffer is full
+    preamble_bl.reserve(sizeof(preamble));
+    preamble_bl.append(reinterpret_cast<const char*>(&preamble),
+                       sizeof(preamble));
+    segment_bls[0].splice(0, FRAME_PREAMBLE_INLINE_SIZE, &preamble_bl);
+  } else {
+    // first segment is fully inlined, inline buffer may need padding
+    uint32_t pad_len = FRAME_PREAMBLE_INLINE_SIZE - segment_bls[0].length();
+    preamble_bl.reserve(sizeof(preamble) + pad_len);
+    preamble_bl.append(reinterpret_cast<const char*>(&preamble),
+                       sizeof(preamble));
+    preamble_bl.claim_append(segment_bls[0]);
+    if (pad_len > 0) {
+      preamble_bl.append_zero(pad_len);
+    }
+  }
+
+  m_crypto->tx->reset_tx_handler({preamble_bl.length()});
+  m_crypto->tx->authenticated_encrypt_update(preamble_bl);
+  auto frame_bl = m_crypto->tx->authenticated_encrypt_final();
+
+  if (segment_bls[0].length() > 0) {
+    m_crypto->tx->reset_tx_handler({segment_bls[0].length()});
+    m_crypto->tx->authenticated_encrypt_update(segment_bls[0]);
+    auto tmp = m_crypto->tx->authenticated_encrypt_final();
+    frame_bl.claim_append(tmp);
+  }
+  if (m_descs.size() == 1) {
+    return frame_bl;  // no epilogue if only one segment
+  }
+
+  epilogue_secure_rev1_block_t epilogue;
+  // FIPS zeroization audit 20191115: this memset is not security related.
+  ::memset(&epilogue, 0, sizeof(epilogue));
+  epilogue.late_status |= FRAME_LATE_STATUS_COMPLETE;
+  bufferlist epilogue_bl(sizeof(epilogue));
+  epilogue_bl.append(reinterpret_cast<const char*>(&epilogue),
+                     sizeof(epilogue));
+
+  // MAX_NUM_SEGMENTS - 1 + epilogue
+  uint32_t onwire_lens[MAX_NUM_SEGMENTS];
+  for (size_t i = 1; i < m_descs.size(); i++) {
+    onwire_lens[i - 1] = segment_bls[i].length();  // already padded
+  }
+  onwire_lens[m_descs.size() - 1] = epilogue_bl.length();
+  m_crypto->tx->reset_tx_handler(onwire_lens, onwire_lens + m_descs.size());
+  for (size_t i = 1; i < m_descs.size(); i++) {
+    if (segment_bls[i].length() > 0) {
+      m_crypto->tx->authenticated_encrypt_update(segment_bls[i]);
+    }
+  }
+  m_crypto->tx->authenticated_encrypt_update(epilogue_bl);
+  auto tmp = m_crypto->tx->authenticated_encrypt_final();
+  frame_bl.claim_append(tmp);
+  return frame_bl;
+}
+
+bufferlist FrameAssembler::assemble_frame(Tag tag, bufferlist segment_bls[],
+                                          const uint16_t segment_aligns[],
+                                          size_t segment_count) {
+  m_descs.resize(calc_num_segments(segment_bls, segment_count));
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    m_descs[i].logical_len = segment_bls[i].length();
+    m_descs[i].align = segment_aligns[i];
+  }
+
+  preamble_block_t preamble;
+  fill_preamble(tag, preamble);
+
+  if (m_crypto->rx) {
+    for (size_t i = 0; i < m_descs.size(); i++) {
+      ceph_assert(segment_bls[i].length() == m_descs[i].logical_len);
+      // We're padding segments to biggest cipher's block size. Although
+      // AES-GCM can live without that as it's a stream cipher, we don't
+      // want to be fixed to stream ciphers only.
+      uint32_t padded_len = get_segment_padded_len(i);
+      if (padded_len > segment_bls[i].length()) {
+        uint32_t pad_len = padded_len - segment_bls[i].length();
+        segment_bls[i].reserve(pad_len);
+        segment_bls[i].append_zero(pad_len);
+      }
+    }
+    if (m_is_rev1) {
+      return asm_secure_rev1(preamble, segment_bls);
+    }
+    return asm_secure_rev0(preamble, segment_bls);
+  }
+  if (m_is_rev1) {
+    return asm_crc_rev1(preamble, segment_bls);
+  }
+  return asm_crc_rev0(preamble, segment_bls);
+}
+
+Tag FrameAssembler::disassemble_preamble(bufferlist& preamble_bl) {
+  if (m_crypto->rx) {
+    m_crypto->rx->reset_rx_handler();
+    if (m_is_rev1) {
+      ceph_assert(preamble_bl.length() == FRAME_PREAMBLE_WITH_INLINE_SIZE +
+                                          get_auth_tag_len());
+      m_crypto->rx->authenticated_decrypt_update_final(preamble_bl);
+    } else {
+      ceph_assert(preamble_bl.length() == sizeof(preamble_block_t));
+      m_crypto->rx->authenticated_decrypt_update(preamble_bl);
+    }
+  } else {
+    ceph_assert(preamble_bl.length() == sizeof(preamble_block_t));
+  }
+
+  // I expect ceph_le32 will make the endian conversion for me. Passing
+  // everything through ::Decode is unnecessary.
+  auto preamble = reinterpret_cast<const preamble_block_t*>(
+      preamble_bl.c_str());
+  // check preamble crc before any further processing
+  uint32_t crc = ceph_crc32c(
+      0, reinterpret_cast<const unsigned char*>(preamble),
+      sizeof(*preamble) - sizeof(preamble->crc));
+  if (crc != preamble->crc) {
+    throw FrameError(fmt::format(
+        "bad preamble crc calculated={} expected={}", crc, preamble->crc));
+  }
+
+  // see calc_num_segments()
+  if (preamble->num_segments < 1 ||
+      preamble->num_segments > MAX_NUM_SEGMENTS) {
+    throw FrameError(fmt::format(
+        "bad number of segments num_segments={}", preamble->num_segments));
+  }
+  if (preamble->num_segments > 1 &&
+      preamble->segments[preamble->num_segments - 1].length == 0) {
+    throw FrameError("last segment empty");
+  }
+
+  m_descs.resize(preamble->num_segments);
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    m_descs[i].logical_len = preamble->segments[i].length;
+    m_descs[i].align = preamble->segments[i].alignment;
+  }
+  return static_cast<Tag>(preamble->tag);
+}
+
+bool FrameAssembler::disasm_all_crc_rev0(bufferlist segment_bls[],
+                                         bufferlist& epilogue_bl) const {
+  ceph_assert(epilogue_bl.length() == sizeof(epilogue_crc_rev0_block_t));
+  auto epilogue = reinterpret_cast<const epilogue_crc_rev0_block_t*>(
+      epilogue_bl.c_str());
+
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    ceph_assert(segment_bls[i].length() == m_descs[i].logical_len);
+    check_segment_crc(segment_bls[i], epilogue->crc_values[i]);
+  }
+  return !(epilogue->late_flags & FRAME_LATE_FLAG_ABORTED);
+}
+
+bool FrameAssembler::disasm_all_secure_rev0(bufferlist segment_bls[],
+                                            bufferlist& epilogue_bl) const {
+  for (size_t i = 0; i < m_descs.size(); i++) {
+    ceph_assert(segment_bls[i].length() == get_segment_padded_len(i));
+    if (segment_bls[i].length() > 0) {
+      m_crypto->rx->authenticated_decrypt_update(segment_bls[i]);
+      unpad_zero(segment_bls[i], m_descs[i].logical_len);
+    }
+  }
+
+  ceph_assert(epilogue_bl.length() == sizeof(epilogue_secure_rev0_block_t) +
+                                      get_auth_tag_len());
+  m_crypto->rx->authenticated_decrypt_update_final(epilogue_bl);
+  auto epilogue = reinterpret_cast<const epilogue_secure_rev0_block_t*>(
+      epilogue_bl.c_str());
+  return !(epilogue->late_flags & FRAME_LATE_FLAG_ABORTED);
+}
+
+void FrameAssembler::disasm_first_crc_rev1(bufferlist& preamble_bl,
+                                           bufferlist& segment_bl) const {
+  ceph_assert(preamble_bl.length() == sizeof(preamble_block_t));
+  if (m_descs[0].logical_len > 0) {
+    ceph_assert(segment_bl.length() == m_descs[0].logical_len +
+                                       FRAME_CRC_SIZE);
+    bufferlist::const_iterator it(&segment_bl, m_descs[0].logical_len);
+    uint32_t expected_crc;
+    decode(expected_crc, it);
+    segment_bl.splice(m_descs[0].logical_len, FRAME_CRC_SIZE);
+    check_segment_crc(segment_bl, expected_crc);
+  } else {
+    ceph_assert(segment_bl.length() == 0);
+  }
+}
+
+bool FrameAssembler::disasm_remaining_crc_rev1(bufferlist segment_bls[],
+                                               bufferlist& epilogue_bl) const {
+  ceph_assert(epilogue_bl.length() == sizeof(epilogue_crc_rev1_block_t));
+  auto epilogue = reinterpret_cast<const epilogue_crc_rev1_block_t*>(
+      epilogue_bl.c_str());
+
+  for (size_t i = 1; i < m_descs.size(); i++) {
+    ceph_assert(segment_bls[i].length() == m_descs[i].logical_len);
+    check_segment_crc(segment_bls[i], epilogue->crc_values[i - 1]);
+  }
+  return check_epilogue_late_status(epilogue->late_status);
+}
+
+void FrameAssembler::disasm_first_secure_rev1(bufferlist& preamble_bl,
+                                              bufferlist& segment_bl) const {
+  ceph_assert(preamble_bl.length() == FRAME_PREAMBLE_WITH_INLINE_SIZE);
+  uint32_t padded_len = get_segment_padded_len(0);
+  if (padded_len > FRAME_PREAMBLE_INLINE_SIZE) {
+    ceph_assert(segment_bl.length() == padded_len + get_auth_tag_len() -
+                                       FRAME_PREAMBLE_INLINE_SIZE);
+    m_crypto->rx->reset_rx_handler();
+    m_crypto->rx->authenticated_decrypt_update_final(segment_bl);
+    // prepend the inline buffer (already decrypted) to segment_bl
+    bufferlist tmp;
+    segment_bl.swap(tmp);
+    preamble_bl.splice(sizeof(preamble_block_t), FRAME_PREAMBLE_INLINE_SIZE,
+                       &segment_bl);
+    segment_bl.claim_append(tmp);
+  } else {
+    ceph_assert(segment_bl.length() == 0);
+    preamble_bl.splice(sizeof(preamble_block_t), FRAME_PREAMBLE_INLINE_SIZE,
+                       &segment_bl);
+  }
+  unpad_zero(segment_bl, m_descs[0].logical_len);
+  ceph_assert(segment_bl.length() == m_descs[0].logical_len);
+}
+
+bool FrameAssembler::disasm_remaining_secure_rev1(
+    bufferlist segment_bls[], bufferlist& epilogue_bl) const {
+  m_crypto->rx->reset_rx_handler();
+  for (size_t i = 1; i < m_descs.size(); i++) {
+    ceph_assert(segment_bls[i].length() == get_segment_padded_len(i));
+    if (segment_bls[i].length() > 0) {
+      m_crypto->rx->authenticated_decrypt_update(segment_bls[i]);
+      unpad_zero(segment_bls[i], m_descs[i].logical_len);
+    }
+  }
+
+  ceph_assert(epilogue_bl.length() == sizeof(epilogue_secure_rev1_block_t) +
+                                      get_auth_tag_len());
+  m_crypto->rx->authenticated_decrypt_update_final(epilogue_bl);
+  auto epilogue = reinterpret_cast<const epilogue_secure_rev1_block_t*>(
+      epilogue_bl.c_str());
+  return check_epilogue_late_status(epilogue->late_status);
+}
+
+void FrameAssembler::disassemble_first_segment(bufferlist& preamble_bl,
+                                               bufferlist& segment_bl) const {
+  ceph_assert(!m_descs.empty());
+  if (m_is_rev1) {
+    if (m_crypto->rx) {
+      disasm_first_secure_rev1(preamble_bl, segment_bl);
+    } else {
+      disasm_first_crc_rev1(preamble_bl, segment_bl);
+    }
+  } else {
+    // noop, everything is handled in disassemble_remaining_segments()
+  }
+}
+
+bool FrameAssembler::disassemble_remaining_segments(
+    bufferlist segment_bls[], bufferlist& epilogue_bl) const {
+  ceph_assert(!m_descs.empty());
+  if (m_is_rev1) {
+    if (m_descs.size() == 1) {
+      // no epilogue if only one segment
+      ceph_assert(epilogue_bl.length() == 0);
+      return true;
+    }
+    if (m_crypto->rx) {
+      return disasm_remaining_secure_rev1(segment_bls, epilogue_bl);
+    }
+    return disasm_remaining_crc_rev1(segment_bls, epilogue_bl);
+  }
+  if (m_crypto->rx) {
+    return disasm_all_secure_rev0(segment_bls, epilogue_bl);
+  }
+  return disasm_all_crc_rev0(segment_bls, epilogue_bl);
+}
+
+std::ostream& operator<<(std::ostream& os, const FrameAssembler& frame_asm) {
+  if (!frame_asm.m_descs.empty()) {
+    os << frame_asm.get_preamble_onwire_len();
+    for (size_t i = 0; i < frame_asm.m_descs.size(); i++) {
+      os << " + " << frame_asm.get_segment_onwire_len(i)
+         << " (logical " << frame_asm.m_descs[i].logical_len
+         << "/" << frame_asm.m_descs[i].align << ")";
+    }
+    os << " + " << frame_asm.get_epilogue_onwire_len() << " ";
+  }
+  os << "rev1=" << frame_asm.m_is_rev1
+     << " rx=" << frame_asm.m_crypto->rx.get()
+     << " tx=" << frame_asm.m_crypto->tx.get();
+  return os;
+}
+
+}  // namespace ceph::msgr::v2
index ddc42a489cf04af4eb94283985063f7ea3233f60..5ce4a4fcc554467e87092fe4b2f7dbf35f6a13b6 100644 (file)
@@ -5,8 +5,11 @@
 #include "common/Clock.h"
 #include "crypto_onwire.h"
 #include <array>
+#include <iosfwd>
 #include <utility>
 
+#include <boost/container/static_vector.hpp>
+
 /**
  * Protocol V2 Frame Structures
  * 
@@ -107,203 +110,292 @@ struct preamble_block_t {
 static_assert(sizeof(preamble_block_t) % CRYPTO_BLOCK_SIZE == 0);
 static_assert(std::is_standard_layout<preamble_block_t>::value);
 
-// Each Frame has an epilogue for integrity or authenticity validation.
-// For plain mode it's quite straightforward - the structure stores up
-// to MAX_NUM_SEGMENTS crc32 checksums, one per each segment.
-// For secure mode things become very different. The fundamental thing
-// is that epilogue format is **an implementation detail of particular
-// cipher**. ProtocolV2 only knows:
-//   * where the data is placed (always at the end of ciphertext),
-//   * how long it is. RxHandler provides get_extra_size_at_final() but
-//     ProtocolV2 has NO WAY to alter this.
-//
-// The intention behind the contract is to provide flexibility of cipher
-// selection. Currently AES in GCM mode is used and epilogue conveys its
-// *auth tag* (following OpenSSL's terminology). However, it would be OK
-// to switch to e.g. AES128-CBC + HMAC-SHA512 without affecting protocol
-// (expect the cipher negotiation, of course).
-//
-// In addition to integrity/authenticity data each variant of epilogue
-// conveys late_flags. The initial user of this field will be the late
-// frame abortion facility.
-struct epilogue_plain_block_t {
-  __u8 late_flags;
+struct epilogue_crc_rev0_block_t {
+  __u8 late_flags;  // FRAME_LATE_FLAG_ABORTED
   ceph_le32 crc_values[MAX_NUM_SEGMENTS];
 } __attribute__((packed));
-static_assert(std::is_standard_layout<epilogue_plain_block_t>::value);
+static_assert(std::is_standard_layout_v<epilogue_crc_rev0_block_t>);
 
-struct epilogue_secure_block_t {
-  __u8 late_flags;
-  __u8 padding[CRYPTO_BLOCK_SIZE - sizeof(late_flags)];
+struct epilogue_crc_rev1_block_t {
+  __u8 late_status;  // FRAME_LATE_STATUS_*
+  ceph_le32 crc_values[MAX_NUM_SEGMENTS - 1];
+} __attribute__((packed));
+static_assert(std::is_standard_layout_v<epilogue_crc_rev1_block_t>);
 
-  __u8 ciphers_private_data[];
+struct epilogue_secure_rev0_block_t {
+  __u8 late_flags;  // FRAME_LATE_FLAG_ABORTED
+  __u8 padding[CRYPTO_BLOCK_SIZE - sizeof(late_flags)];
 } __attribute__((packed));
-static_assert(sizeof(epilogue_secure_block_t) % CRYPTO_BLOCK_SIZE == 0);
-static_assert(std::is_standard_layout<epilogue_secure_block_t>::value);
+static_assert(sizeof(epilogue_secure_rev0_block_t) % CRYPTO_BLOCK_SIZE == 0);
+static_assert(std::is_standard_layout_v<epilogue_secure_rev0_block_t>);
 
+// epilogue_secure_rev0_block_t with late_flags changed to late_status
+struct epilogue_secure_rev1_block_t {
+  __u8 late_status;  // FRAME_LATE_STATUS_*
+  __u8 padding[CRYPTO_BLOCK_SIZE - sizeof(late_status)];
+} __attribute__((packed));
+static_assert(sizeof(epilogue_secure_rev1_block_t) % CRYPTO_BLOCK_SIZE == 0);
+static_assert(std::is_standard_layout_v<epilogue_secure_rev1_block_t>);
+
+static constexpr uint32_t FRAME_CRC_SIZE = 4;
+static constexpr uint32_t FRAME_PREAMBLE_INLINE_SIZE = 48;
+static_assert(FRAME_PREAMBLE_INLINE_SIZE % CRYPTO_BLOCK_SIZE == 0);
+// just for performance, nothing should break otherwise
+static_assert(sizeof(ceph_msg_header2) <= FRAME_PREAMBLE_INLINE_SIZE);
+static constexpr uint32_t FRAME_PREAMBLE_WITH_INLINE_SIZE =
+    sizeof(preamble_block_t) + FRAME_PREAMBLE_INLINE_SIZE;
+
+// A frame can be aborted by the sender after transmitting the
+// preamble and the first segment.  The remainder of the frame
+// is filled with zeros, up until the epilogue.
+//
+// This flag is for msgr2.0.  Note that in crc mode, late_flags
+// is not covered by any crc -- a single bit flip can result in
+// a completed frame being dropped or in an aborted frame with
+// garbage segment payloads being dispatched.
+#define FRAME_LATE_FLAG_ABORTED           (1<<0)
+
+// For msgr2.1, FRAME_LATE_STATUS_ABORTED has the same meaning
+// as FRAME_LATE_FLAG_ABORTED and late_status replaces late_flags.
+// Bit error detection in crc mode is achieved by using a 4-bit
+// nibble per flag with two code words that are far apart in terms
+// of Hamming Distance (HD=4, same as provided by CRC32-C for
+// input lengths over ~5K).
+#define FRAME_LATE_STATUS_ABORTED         0x1
+#define FRAME_LATE_STATUS_COMPLETE        0xe
+#define FRAME_LATE_STATUS_ABORTED_MASK    0xf
+
+#define FRAME_LATE_STATUS_RESERVED_TRUE   0x10
+#define FRAME_LATE_STATUS_RESERVED_FALSE  0xe0
+#define FRAME_LATE_STATUS_RESERVED_MASK   0xf0
+
+struct FrameError : std::runtime_error {
+  using runtime_error::runtime_error;
+};
 
-static constexpr uint32_t FRAME_PREAMBLE_SIZE = sizeof(preamble_block_t);
-static constexpr uint32_t FRAME_PLAIN_EPILOGUE_SIZE =
-    sizeof(epilogue_plain_block_t);
-static constexpr uint32_t FRAME_SECURE_EPILOGUE_SIZE =
-    sizeof(epilogue_secure_block_t);
+class FrameAssembler {
+public:
+  // crypto must be non-null
+  FrameAssembler(const ceph::crypto::onwire::rxtx_t* crypto, bool is_rev1)
+      : m_crypto(crypto), m_is_rev1(is_rev1) {}
 
-#define FRAME_FLAGS_LATEABRT      (1<<0)   /* frame was aborted after txing data */
+  void set_is_rev1(bool is_rev1) {
+    m_descs.clear();
+    m_is_rev1 = is_rev1;
+  }
 
-static uint32_t segment_onwire_size(const uint32_t logical_size)
-{
-  return p2roundup<uint32_t>(logical_size, CRYPTO_BLOCK_SIZE);
-}
+  bool get_is_rev1() {
+    return m_is_rev1;
+  }
 
-static inline ceph::bufferlist segment_onwire_bufferlist(ceph::bufferlist&& bl)
-{
-  const auto padding_size = segment_onwire_size(bl.length()) - bl.length();
-  if (padding_size) {
-    bl.append_zero(padding_size);
+  size_t get_num_segments() const {
+    ceph_assert(!m_descs.empty());
+    return m_descs.size();
   }
-  return std::move(bl);
-}
 
-template <class T, uint16_t... SegmentAlignmentVs>
-struct Frame {
-  static constexpr size_t SegmentsNumV = sizeof...(SegmentAlignmentVs);
-  static_assert(SegmentsNumV > 0 && SegmentsNumV <= MAX_NUM_SEGMENTS);
-protected:
-  std::array<ceph::bufferlist, SegmentsNumV> segments;
+  uint32_t get_segment_logical_len(size_t seg_idx) const {
+    ceph_assert(seg_idx < m_descs.size());
+    return m_descs[seg_idx].logical_len;
+  }
 
-private:
-  static constexpr std::array<uint16_t, SegmentsNumV> alignments {
-    SegmentAlignmentVs...
-  };
-  ceph::bufferlist::contiguous_filler preamble_filler;
+  uint16_t get_segment_align(size_t seg_idx) const {
+    ceph_assert(seg_idx < m_descs.size());
+    return m_descs[seg_idx].align;
+  }
 
-  __u8 calc_num_segments(const segment_t segments[])
-  {
-    for (__u8 num = SegmentsNumV; num > 0; num--) {
-      if (segments[num-1].length) {
-        return num;
-      }
+  // Preamble:
+  //
+  //   preamble_block_t
+  //   [preamble inline buffer + auth tag -- only in msgr2.1 secure mode]
+  //
+  // The preamble is generated unconditionally.
+  //
+  // In msgr2.1 secure mode, the first segment is inlined into the
+  // preamble inline buffer, either fully or partially.
+  uint32_t get_preamble_onwire_len() const {
+    if (m_is_rev1 && m_crypto->rx) {
+      return FRAME_PREAMBLE_WITH_INLINE_SIZE + get_auth_tag_len();
     }
-    // frame always has at least one segment.
-    return 1;
+    return sizeof(preamble_block_t);
   }
 
-  // craft the main preamble. It's always present regardless of the number
-  // of segments message is composed from.
-  void fill_preamble() {
-    ceph_assert(std::size(segments) <= MAX_NUM_SEGMENTS);
-
-    preamble_block_t main_preamble;
-    // FIPS zeroization audit 20191115: this memset is not security related.
-    ::memset(&main_preamble, 0, sizeof(main_preamble));
-
-    main_preamble.tag = static_cast<__u8>(T::tag);
-    ceph_assert(main_preamble.tag != 0);
-
-    // implementation detail: the first bufferlist of Frame::segments carries
-    // space for preamble. This glueing isn't a part of the onwire format but
-    // just our private detail.
-    main_preamble.segments[0].length =
-        segments[0].length() - FRAME_PREAMBLE_SIZE;
-    main_preamble.segments[0].alignment = alignments[0];
-
-    // there is no business in issuing frame without at least one segment
-    // filled.
-    if constexpr(SegmentsNumV > 1) {
-      for (__u8 idx = 1; idx < SegmentsNumV; idx++) {
-        main_preamble.segments[idx].length = segments[idx].length();
-        main_preamble.segments[idx].alignment = alignments[idx];
+  // Segment:
+  //
+  //   segment payload
+  //   [zero padding -- only in secure mode]
+  //   [crc or auth tag -- only in msgr2.1, only for the first segment]
+  //
+  // For an empty segment, nothing is generated.  In msgr2.1 secure
+  // mode, if the first segment gets fully inlined into the preamble
+  // inline buffer, it is considered empty.
+  uint32_t get_segment_onwire_len(size_t seg_idx) const {
+    ceph_assert(seg_idx < m_descs.size());
+    if (m_crypto->rx) {
+      uint32_t padded_len = get_segment_padded_len(seg_idx);
+      if (m_is_rev1 && seg_idx == 0) {
+        if (padded_len > FRAME_PREAMBLE_INLINE_SIZE) {
+          return padded_len + get_auth_tag_len() - FRAME_PREAMBLE_INLINE_SIZE;
+        }
+        return 0;
       }
+      return padded_len;
     }
-    // calculate the number of non-empty segments.
-    // TODO: reorder segments to get DATA first
-    main_preamble.num_segments = calc_num_segments(main_preamble.segments);
-
-    main_preamble.crc =
-        ceph_crc32c(0, reinterpret_cast<unsigned char *>(&main_preamble),
-                    sizeof(main_preamble) - sizeof(main_preamble.crc));
-
-    preamble_filler.copy_in(sizeof(main_preamble),
-                            reinterpret_cast<const char *>(&main_preamble));
+    if (m_is_rev1 && seg_idx == 0 && m_descs[0].logical_len > 0) {
+      return m_descs[0].logical_len + FRAME_CRC_SIZE;
+    }
+    return m_descs[seg_idx].logical_len;
   }
 
-  template <size_t... Is>
-  void reset_tx_handler(
-    ceph::crypto::onwire::rxtx_t &session_stream_handlers,
-    std::index_sequence<Is...>)
-  {
-    session_stream_handlers.tx->reset_tx_handler({ segments[Is].length()... });
+  // Epilogue:
+  //
+  //   epilogue_*_block_t
+  //   [auth tag -- only in secure mode]
+  //
+  // For msgr2.0, the epilogue is generated unconditionally.  In
+  // crc mode, it stores crcs for all segments; the preamble is
+  // covered by its own crc.  In secure mode, the epilogue auth tag
+  // covers the whole frame.
+  //
+  // For msgr2.1, the epilogue is generated only if the frame has
+  // more than one segment (i.e. at least one of second to fourth
+  // segments is not empty).  In crc mode, it stores crcs for
+  // second to fourh segments; the preamble and the first segment
+  // are covered by their own crcs.  In secure mode, the epilogue
+  // auth tag covers second to fourth segments; the preamble and the
+  // first segment (if not fully inlined into the preamble inline
+  // buffer) are covered by their own auth tags.
+  //
+  // Note that the auth tag format is an implementation detail of a
+  // particular cipher.  FrameAssembler is concerned only with where
+  // the auth tag is placed (at the end of the ciphertext) and how
+  // long it is (RxHandler::get_extra_size_at_final()).  This is to
+  // provide room for other encryption algorithms: currently we use
+  // AES-128-GCM with 16-byte tags, but it is possible to switch to
+  // e.g. AES-128-CBC + HMAC-SHA512 without affecting the protocol
+  // (except for the cipher negotiation, of course).
+  //
+  // Additionally, each variant of the epilogue contains either
+  // late_flags or late_status field that directs handling of frames
+  // with more than one segment.
+  uint32_t get_epilogue_onwire_len() const {
+    ceph_assert(!m_descs.empty());
+    if (m_is_rev1 && m_descs.size() == 1) {
+      return 0;
+    }
+    if (m_crypto->rx) {
+      return (m_is_rev1 ? sizeof(epilogue_secure_rev1_block_t) :
+                  sizeof(epilogue_secure_rev0_block_t)) + get_auth_tag_len();
+    }
+    return m_is_rev1 ? sizeof(epilogue_crc_rev1_block_t) :
+                       sizeof(epilogue_crc_rev0_block_t);
   }
 
-public:
-  ceph::bufferlist get_buffer(
-    ceph::crypto::onwire::rxtx_t &session_stream_handlers)
-  {
-    fill_preamble();
-    if (session_stream_handlers.tx) {
-      // we're padding segments to biggest cipher's block size. Although
-      // AES-GCM can live without that as it's a stream cipher, we don't
-      // to be fixed to stream ciphers only.
-      for (auto& segment : segments) {
-        segment = segment_onwire_bufferlist(std::move(segment));
-      }
-
-      // let's cipher allocate one huge buffer for entire ciphertext.
-      reset_tx_handler(
-          session_stream_handlers, std::make_index_sequence<SegmentsNumV>());
-
-      for (auto& segment : segments) {
-        if (segment.length()) {
-          session_stream_handlers.tx->authenticated_encrypt_update(
-            std::move(segment));
-        }
-      }
+  uint64_t get_frame_logical_len() const;
+  uint64_t get_frame_onwire_len() const;
+
+  bufferlist assemble_frame(Tag tag, bufferlist segment_bls[],
+                            const uint16_t segment_aligns[],
+                            size_t segment_count);
+
+  Tag disassemble_preamble(bufferlist& preamble_bl);
+
+  // Like msgr1, and unlike msgr2.0, msgr2.1 allows interpreting the
+  // first segment before reading in the rest of the frame.
+  //
+  // For msgr2.1 (set_is_rev1(true)), you may:
+  //
+  // - read in the first segment
+  // - call disassemble_first_segment()
+  // - use the contents of the first segment, for example to
+  //   look up user-provided buffers based on ceph_msg_header2::tid
+  // - read in the remaining segments, possibly directly into
+  //   user-provided buffers
+  // - read in epilogue
+  // - call disassemble_remaining_segments()
+  //
+  // For msgr2.0 (set_is_rev1(false)), disassemble_first_segment() is
+  // a noop.  To accomodate, disassemble_remaining_segments() always
+  // takes all segments and skips over the first segment in msgr2.1
+  // case.  You must:
+  //
+  // - read in all segments
+  // - read in epilogue
+  // - call disassemble_remaining_segments()
+  //
+  // disassemble_remaining_segments() returns true if the frame is
+  // ready for dispatching, or false if it was aborted by the sender
+  // and must be dropped.
+  void disassemble_first_segment(bufferlist& preamble_bl,
+                                 bufferlist& segment_bl) const;
+  bool disassemble_remaining_segments(bufferlist segment_bls[],
+                                      bufferlist& epilogue_bl) const;
 
-      // in secure mode we craft only the late_flags. Signature (for AES-GCM
-      // called auth tag) will be added by the cipher.
-      {
-        epilogue_secure_block_t epilogue;
-        // FIPS zeroization audit 20191115: this memset is not security
-        // related.
-        ::memset(&epilogue, 0, sizeof(epilogue));
-        ceph::bufferlist epilogue_bl;
-        epilogue_bl.append(reinterpret_cast<const char*>(&epilogue),
-                           sizeof(epilogue));
-        session_stream_handlers.tx->authenticated_encrypt_update(epilogue_bl);
-      }
-      return session_stream_handlers.tx->authenticated_encrypt_final();
-    } else {
-      // plain mode
-      epilogue_plain_block_t epilogue;
-      // FIPS zeroization audit 20191115: this memset is not security related.
-      ::memset(&epilogue, 0, sizeof(epilogue));
-
-      ceph::bufferlist::const_iterator hdriter(&segments.front(),
-                                               FRAME_PREAMBLE_SIZE);
-      epilogue.crc_values[SegmentIndex::Control::PAYLOAD] =
-          hdriter.crc32c(hdriter.get_remaining(), -1);
-      if constexpr(SegmentsNumV > 1) {
-        for (__u8 idx = 1; idx < SegmentsNumV; idx++) {
-          epilogue.crc_values[idx] = segments[idx].crc32c(-1);
-        }
-      }
+private:
+  struct segment_desc_t {
+    uint32_t logical_len;
+    uint16_t align;
+  };
 
-      ceph::bufferlist ret;
-      for (auto& segment : segments) {
-        ret.claim_append(segment);
-      }
-      ret.append(reinterpret_cast<const char*>(&epilogue), sizeof(epilogue));
-      return ret;
-    }
+  uint32_t get_segment_padded_len(size_t seg_idx) const {
+    return p2roundup<uint32_t>(m_descs[seg_idx].logical_len,
+                               CRYPTO_BLOCK_SIZE);
   }
 
-  Frame()
-    : preamble_filler(segments.front().append_hole(FRAME_PREAMBLE_SIZE)) {
+  uint32_t get_auth_tag_len() const {
+    return m_crypto->rx->get_extra_size_at_final();
   }
 
-public:
+  bufferlist asm_crc_rev0(const preamble_block_t& preamble,
+                          bufferlist segment_bls[]) const;
+  bufferlist asm_secure_rev0(const preamble_block_t& preamble,
+                             bufferlist segment_bls[]) const;
+  bufferlist asm_crc_rev1(const preamble_block_t& preamble,
+                          bufferlist segment_bls[]) const;
+  bufferlist asm_secure_rev1(const preamble_block_t& preamble,
+                             bufferlist segment_bls[]) const;
+
+  bool disasm_all_crc_rev0(bufferlist segment_bls[],
+                           bufferlist& epilogue_bl) const;
+  bool disasm_all_secure_rev0(bufferlist segment_bls[],
+                              bufferlist& epilogue_bl) const;
+  void disasm_first_crc_rev1(bufferlist& preamble_bl,
+                             bufferlist& segment_bl) const;
+  bool disasm_remaining_crc_rev1(bufferlist segment_bls[],
+                                 bufferlist& epilogue_bl) const;
+  void disasm_first_secure_rev1(bufferlist& preamble_bl,
+                                bufferlist& segment_bl) const;
+  bool disasm_remaining_secure_rev1(bufferlist segment_bls[],
+                                    bufferlist& epilogue_bl) const;
+
+  void fill_preamble(Tag tag, preamble_block_t& preamble) const;
+  friend std::ostream& operator<<(std::ostream& os,
+                                  const FrameAssembler& frame_asm);
+
+  boost::container::static_vector<segment_desc_t, MAX_NUM_SEGMENTS> m_descs;
+  const ceph::crypto::onwire::rxtx_t* m_crypto;
+  bool m_is_rev1;  // msgr2.1?
 };
 
+template <class T, uint16_t... SegmentAlignmentVs>
+struct Frame {
+  static constexpr size_t SegmentsNumV = sizeof...(SegmentAlignmentVs);
+  static_assert(SegmentsNumV > 0 && SegmentsNumV <= MAX_NUM_SEGMENTS);
+protected:
+  std::array<ceph::bufferlist, SegmentsNumV> segments;
+
+private:
+  static constexpr std::array<uint16_t, SegmentsNumV> alignments {
+    SegmentAlignmentVs...
+  };
+
+public:
+  ceph::bufferlist get_buffer(FrameAssembler& tx_frame_asm) {
+    auto bl = tx_frame_asm.assemble_frame(T::tag, segments.data(),
+                                          alignments.data(), SegmentsNumV);
+    ceph_assert(bl.length() == tx_frame_asm.get_frame_onwire_len());
+    return bl;
+  }
+};
 
 // ControlFrames are used to manage transceiver state (like connections) and
 // orchestrate transfers of MessageFrames. They use only single segment with
@@ -673,6 +765,9 @@ protected:
   using ControlFrame::ControlFrame;
 };
 
+using segment_bls_t =
+    boost::container::static_vector<bufferlist, MAX_NUM_SEGMENTS>;
+
 // This class is used for encoding/decoding header of the message frame.
 // Body is processed almost independently with the sole junction point
 // being the `extra_payload_len` passed to get_buffer().
@@ -682,12 +777,6 @@ struct MessageFrame : public Frame<MessageFrame,
                                    segment_t::DEFAULT_ALIGNMENT,
                                    segment_t::DEFAULT_ALIGNMENT,
                                    segment_t::PAGE_SIZE_ALIGNMENT> {
-  struct {
-    uint32_t front;
-    uint32_t middle;
-    uint32_t data;
-  } len;
-
   static const Tag tag = Tag::MESSAGE;
 
   static MessageFrame Encode(const ceph_msg_header2 &msg_header,
@@ -705,10 +794,7 @@ struct MessageFrame : public Frame<MessageFrame,
     return f;
   }
 
-  using rx_segments_t =
-    boost::container::static_vector<ceph::bufferlist,
-                                    ceph::msgr::v2::MAX_NUM_SEGMENTS>;
-  static MessageFrame Decode(rx_segments_t &&recv_segments) {
+  static MessageFrame Decode(segment_bls_t& recv_segments) {
     MessageFrame f;
     // transfer segments' bufferlists. If a MessageFrame contains less
     // SegmentsNumV segments, the missing ones will be seen as zeroed.
index 832f6b85393f84569feb60b7fe8e98b85b3fc7ee..db5aecd7545ba0334bdd92ba12d949624ecb4a73 100644 (file)
@@ -64,9 +64,7 @@ uint64_t IOContext::get_num_ios() const
   // that to the bytes value.
   uint64_t ios = 0;
 #if defined(HAVE_LIBAIO) || defined(HAVE_POSIXAIO)
-  for (auto& p : pending_aios) {
-    ios += p.iov.size();
-  }
+  ios += pending_aios.size();
 #endif
 #ifdef HAVE_SPDK
   ios += total_nseg;
index 4038fd4d3c1cba8c7496870f023e4110f1da5eae..417c1e0f68717a52ac5d8baf9b7f4cae9bc449cb 100644 (file)
@@ -63,7 +63,7 @@ public:
         delete hook;
         hook = nullptr;
       } else {
-        r = admin_socket->register_command("bluestore bluefs stats",
+        r = admin_socket->register_command("bluefs stats",
                                            hook,
                                            "Dump internal statistics for bluefs."
                                            "");
@@ -514,7 +514,7 @@ int BlueFS::mkfs(uuid_d osd_uuid, const bluefs_layout_t& layout)
   // init log
   FileRef log_file = ceph::make_ref<File>();
   log_file->fnode.ino = 1;
-  log_file->vselector_hint = vselector->get_hint_by_device(BDEV_WAL);
+  log_file->vselector_hint = vselector->get_hint_for_log();
   int r = _allocate(
     vselector->select_prefer_bdev(log_file->vselector_hint),
     cct->_conf->bluefs_max_log_runway,
@@ -962,7 +962,7 @@ int BlueFS::_replay(bool noop, bool to_stdout)
   if (!noop) {
     log_file->fnode = super.log_fnode;
     log_file->vselector_hint =
-      vselector->get_hint_by_device(BDEV_WAL);
+      vselector->get_hint_for_log();
   } else {
     // do not use fnode from superblock in 'noop' mode - log_file's one should
     // be fine and up-to-date
@@ -1003,7 +1003,10 @@ int BlueFS::_replay(bool noop, bool to_stdout)
     {
       int r = _read(log_reader, &log_reader->buf, read_pos, super.block_size,
                    &bl, NULL);
-      ceph_assert(r == (int)super.block_size);
+      if (r != (int)super.block_size && cct->_conf->bluefs_replay_recovery) {
+       r += do_replay_recovery_read(log_reader, pos, read_pos + r, super.block_size - r, &bl);
+      }
+      assert(r == (int)super.block_size);
       read_pos += r;
     }
     uint64_t more = 0;
@@ -1056,10 +1059,17 @@ int BlueFS::_replay(bool noop, bool to_stdout)
       bufferlist t;
       int r = _read(log_reader, &log_reader->buf, read_pos, more, &t, NULL);
       if (r < (int)more) {
-       derr  << __func__ << " 0x" << std::hex << pos
-              << ": stop: len is 0x" << bl.length() + more << std::dec
-              << ", which is past eof" << dendl;
-       break;
+       dout(10) << __func__ << " 0x" << std::hex << pos
+                 << ": stop: len is 0x" << bl.length() + more << std::dec
+                 << ", which is past eof" << dendl;
+       if (cct->_conf->bluefs_replay_recovery) {
+         //try to search for more data
+         r += do_replay_recovery_read(log_reader, pos, read_pos + r, more - r, &t);
+         if (r < (int)more) {
+           //in normal mode we must read r==more, for recovery it is too strict
+           break;
+         }
+       }
       }
       ceph_assert(r == (int)more);
       bl.claim_append(t);
@@ -1905,6 +1915,7 @@ int BlueFS::_read_random(
       s_lock.unlock();
       uint64_t x_off = 0;
       auto p = h->file->fnode.seek(off, &x_off);
+      ceph_assert(p != h->file->fnode.extents.end());
       uint64_t l = std::min(p->length - x_off, len);
       dout(20) << __func__ << " read random 0x"
               << std::hex << x_off << "~" << l << std::dec
@@ -2004,6 +2015,12 @@ int BlueFS::_read(
         buf->bl_off = off & super.block_mask();
         uint64_t x_off = 0;
         auto p = h->file->fnode.seek(buf->bl_off, &x_off);
+       if (p == h->file->fnode.extents.end()) {
+         dout(5) << __func__ << " reading less then required "
+                 << ret << "<" << ret + len << dendl;
+         break;
+       }
+
         uint64_t want = round_up_to(len + (off & ~super.block_mask()),
                                    super.block_size);
         want = std::max(want, buf->max_prefetch);
@@ -2096,11 +2113,13 @@ uint64_t BlueFS::_estimate_log_size()
 
 void BlueFS::compact_log()
 {
-  std::unique_lock l(lock);
-  if (cct->_conf->bluefs_compact_log_sync) {
-     _compact_log_sync();
-  } else {
-    _compact_log_async(l);
+  std::unique_lock<ceph::mutex> l(lock);
+  if (!cct->_conf->bluefs_replay_recovery_disable_compact) {
+    if (cct->_conf->bluefs_compact_log_sync) {
+      _compact_log_sync();
+    } else {
+      _compact_log_async(l);
+    }
   }
 }
 
@@ -2545,6 +2564,7 @@ int BlueFS::_flush_and_sync_log(std::unique_lock<ceph::mutex>& l,
   // allocate some more space (before we run out)?
   int64_t runway = log_writer->file->fnode.get_allocated() -
     log_writer->get_effective_write_pos();
+  bool just_expanded_log = false;
   if (runway < (int64_t)cct->_conf->bluefs_min_log_runway) {
     dout(10) << __func__ << " allocating more log runway (0x"
             << std::hex << runway << std::dec  << " remaining)" << dendl;
@@ -2560,6 +2580,7 @@ int BlueFS::_flush_and_sync_log(std::unique_lock<ceph::mutex>& l,
     ceph_assert(r == 0);
     vselector->add_usage(log_writer->file->vselector_hint, log_writer->file->fnode);
     log_t.op_file_update(log_writer->file->fnode);
+    just_expanded_log = true;
   }
 
   bufferlist bl;
@@ -2572,6 +2593,10 @@ int BlueFS::_flush_and_sync_log(std::unique_lock<ceph::mutex>& l,
 
   logger->inc(l_bluefs_logged_bytes, bl.length());
 
+  if (just_expanded_log) {
+    ceph_assert(bl.length() <= runway); // if we write this, we will have an unrecoverable data loss
+  }
+
   log_writer->append(bl);
 
   log_t.clear();
@@ -2883,11 +2908,24 @@ void BlueFS::wait_for_aio(FileWriter *h)
 }
 #endif
 
-int BlueFS::_flush(FileWriter *h, bool force)
+int BlueFS::_flush(FileWriter *h, bool force, std::unique_lock<ceph::mutex>& l)
+{
+  bool flushed = false;
+  int r = _flush(h, force, &flushed);
+  if (r == 0 && flushed) {
+    _maybe_compact_log(l);
+  }
+  return r;
+}
+
+int BlueFS::_flush(FileWriter *h, bool force, bool *flushed)
 {
   h->buffer_appender.flush();
   uint64_t length = h->buffer.length();
   uint64_t offset = h->pos;
+  if (flushed) {
+    *flushed = false;
+  }
   if (!force &&
       length < cct->_conf->bluefs_min_flush_size) {
     dout(10) << __func__ << " " << h << " ignoring, length " << length
@@ -2904,7 +2942,11 @@ int BlueFS::_flush(FileWriter *h, bool force)
            << std::hex << offset << "~" << length << std::dec
           << " to " << h->file->fnode << dendl;
   ceph_assert(h->pos <= h->file->fnode.size);
-  return _flush_range(h, offset, length);
+  int r = _flush_range(h, offset, length);
+  if (flushed) {
+    *flushed = true;
+  }
+  return r;
 }
 
 int BlueFS::_truncate(FileWriter *h, uint64_t offset)
@@ -3181,7 +3223,7 @@ int BlueFS::_preallocate(FileRef f, uint64_t off, uint64_t len)
 
 void BlueFS::sync_metadata(bool avoid_compact)
 {
-  std::unique_lock l(lock);
+  std::unique_lock<ceph::mutex> l(lock);
   if (log_t.empty() && dirty_files.empty()) {
     dout(10) << __func__ << " - no pending log events" << dendl;
   } else {
@@ -3192,7 +3234,15 @@ void BlueFS::sync_metadata(bool avoid_compact)
     dout(10) << __func__ << " done in " << (ceph_clock_now() - start) << dendl;
   }
 
-  if (!avoid_compact && _should_compact_log()) {
+  if (!avoid_compact) {
+    _maybe_compact_log(l);
+  }
+}
+
+void BlueFS::_maybe_compact_log(std::unique_lock<ceph::mutex>& l)
+{
+  if (!cct->_conf->bluefs_replay_recovery_disable_compact &&
+      _should_compact_log()) {
     if (cct->_conf->bluefs_compact_log_sync) {
       _compact_log_sync();
     } else {
@@ -3222,6 +3272,7 @@ int BlueFS::open_for_write(
 
   FileRef file;
   bool create = false;
+  bool truncate = false;
   map<string,FileRef>::iterator q = dir->file_map.find(filename);
   if (q == dir->file_map.end()) {
     if (overwrite) {
@@ -3252,6 +3303,7 @@ int BlueFS::open_for_write(
       for (auto& p : file->fnode.extents) {
        pending_release[p.bdev].insert(p.offset, p.length);
       }
+      truncate = true;
 
       file->fnode.clear_extents();
     }
@@ -3260,6 +3312,9 @@ int BlueFS::open_for_write(
 
   file->fnode.mtime = ceph_clock_now();
   file->vselector_hint = vselector->get_hint_by_dir(dirname);
+  if (create || truncate) {
+    vselector->add_usage(file->vselector_hint, file->fnode); // update file count
+  }
 
   dout(20) << __func__ << " mapping " << dirname << "/" << filename
           << " vsel_hint " << file->vselector_hint
@@ -3577,6 +3632,191 @@ bool BlueFS::wal_is_rotational()
   return bdev[BDEV_SLOW]->is_rotational();
 }
 
+/*
+  Algorithm.
+  do_replay_recovery_read is used when bluefs log abruptly ends, but it seems that more data should be there.
+  Idea is to search disk for definiton of extents that will be accompanied with bluefs log in future,
+  and try if using it will produce healthy bluefs transaction.
+  We encode already known bluefs log extents and search disk for these bytes.
+  When we find it, we decode following bytes as extent.
+  We read that whole extent and then check if merged with existing log part gives a proper bluefs transaction.
+ */
+int BlueFS::do_replay_recovery_read(FileReader *log_reader,
+                                   size_t replay_pos,
+                                   size_t read_offset,
+                                   size_t read_len,
+                                   bufferlist* bl) {
+  dout(1) << __func__ << " replay_pos=0x" << std::hex << replay_pos <<
+    " needs 0x" << read_offset << "~" << read_len << std::dec << dendl;
+
+  bluefs_fnode_t& log_fnode = log_reader->file->fnode;
+  bufferlist bin_extents;
+  ceph::encode(log_fnode.extents, bin_extents);
+  dout(2) << __func__ << " log file encoded extents length = " << bin_extents.length() << dendl;
+
+  // cannot process if too small to effectively search
+  ceph_assert(bin_extents.length() >= 32);
+  bufferlist last_32;
+  last_32.substr_of(bin_extents, bin_extents.length() - 32, 32);
+
+  //read fixed part from replay_pos to end of bluefs_log extents
+  bufferlist fixed;
+  uint64_t e_off = 0;
+  auto e = log_fnode.seek(replay_pos, &e_off);
+  ceph_assert(e != log_fnode.extents.end());
+  int r = bdev[e->bdev]->read(e->offset + e_off, e->length - e_off, &fixed, ioc[e->bdev],
+                                 cct->_conf->bluefs_buffered_io);
+  ceph_assert(r == 0);
+  //capture dev of last good extent
+  uint8_t last_e_dev = e->bdev;
+  uint64_t last_e_off = e->offset;
+  ++e;
+  while (e != log_fnode.extents.end()) {
+    r = bdev[e->bdev]->read(e->offset, e->length, &fixed, ioc[e->bdev],
+                                 cct->_conf->bluefs_buffered_io);
+    ceph_assert(r == 0);
+    last_e_dev = e->bdev;
+    ++e;
+  }
+  ceph_assert(replay_pos + fixed.length() == read_offset);
+
+  dout(2) << __func__ << " valid data in log = " << fixed.length() << dendl;
+
+  struct compare {
+    bool operator()(const bluefs_extent_t& a, const bluefs_extent_t& b) const {
+      if (a.bdev < b.bdev) return true;
+      if (a.offset < b.offset) return true;
+      return a.length < b.length;
+    }
+  };
+  std::set<bluefs_extent_t, compare> extents_rejected;
+  for (int dcnt = 0; dcnt < 3; dcnt++) {
+    uint8_t dev = (last_e_dev + dcnt) % MAX_BDEV;
+    if (bdev[dev] == nullptr) continue;
+    dout(2) << __func__ << " processing " << get_device_name(dev) << dendl;
+    interval_set<uint64_t> disk_regions;
+    disk_regions.insert(0, bdev[dev]->get_size());
+    for (auto f : file_map) {
+      auto& e = f.second->fnode.extents;
+      for (auto& p : e) {
+       if (p.bdev == dev) {
+         disk_regions.erase(p.offset, p.length);
+       }
+      }
+    }
+    size_t disk_regions_count = disk_regions.num_intervals();
+    dout(5) << __func__ << " " << disk_regions_count << " regions to scan on " << get_device_name(dev) << dendl;
+
+    auto reg = disk_regions.lower_bound(last_e_off);
+    //for all except first, start from beginning
+    last_e_off = 0;
+    if (reg == disk_regions.end()) {
+      reg = disk_regions.begin();
+    }
+    const uint64_t chunk_size = 4 * 1024 * 1024;
+    const uint64_t page_size = 4096;
+    const uint64_t max_extent_size = 16;
+    uint64_t overlay_size = last_32.length() + max_extent_size;
+    for (size_t i = 0; i < disk_regions_count; reg++, i++) {
+      if (reg == disk_regions.end()) {
+       reg = disk_regions.begin();
+      }
+      uint64_t pos = reg.get_start();
+      uint64_t len = reg.get_len();
+
+      std::unique_ptr<char[]> raw_data_p{new char[page_size + chunk_size]};
+      char* raw_data = raw_data_p.get();
+      memset(raw_data, 0, page_size);
+
+      while (len > last_32.length()) {
+       uint64_t chunk_len = len > chunk_size ? chunk_size : len;
+       dout(5) << __func__ << " read "
+               << get_device_name(dev) << ":0x" << std::hex << pos << "+" << chunk_len << std::dec << dendl;
+       r = bdev[dev]->read_random(pos, chunk_len, raw_data + page_size, cct->_conf->bluefs_buffered_io);
+       ceph_assert(r == 0);
+
+       //search for fixed_last_32
+       char* chunk_b = raw_data + page_size;
+       char* chunk_e = chunk_b + chunk_len;
+
+       char* search_b = chunk_b - overlay_size;
+       char* search_e = chunk_e;
+
+       for (char* sp = search_b; ; sp += last_32.length()) {
+         sp = (char*)memmem(sp, search_e - sp, last_32.c_str(), last_32.length());
+         if (sp == nullptr) {
+           break;
+         }
+
+         char* n = sp + last_32.length();
+         dout(5) << __func__ << " checking location 0x" << std::hex << pos + (n - chunk_b) << std::dec << dendl;
+         bufferlist test;
+         test.append(n, std::min<size_t>(max_extent_size, chunk_e - n));
+         bluefs_extent_t ne;
+         try {
+           bufferlist::const_iterator p = test.begin();
+           ceph::decode(ne, p);
+         } catch (buffer::error& e) {
+           continue;
+         }
+         if (extents_rejected.count(ne) != 0) {
+           dout(5) << __func__ << " extent " << ne << " already refected" <<dendl;
+           continue;
+         }
+         //insert as rejected already. if we succeed, it wouldn't make difference.
+         extents_rejected.insert(ne);
+
+         if (ne.bdev >= MAX_BDEV ||
+             bdev[ne.bdev] == nullptr ||
+             ne.length > 16 * 1024 * 1024 ||
+             (ne.length & 4095) != 0 ||
+             ne.offset + ne.length > bdev[ne.bdev]->get_size() ||
+             (ne.offset & 4095) != 0) {
+           dout(5) << __func__ << " refusing extent " << ne << dendl;
+           continue;
+         }
+         dout(5) << __func__ << " checking extent " << ne << dendl;
+
+         //read candidate extent - whole
+         bufferlist candidate;
+         candidate.append(fixed);
+         r = bdev[ne.bdev]->read(ne.offset, ne.length, &candidate, ioc[ne.bdev],
+                               cct->_conf->bluefs_buffered_io);
+         ceph_assert(r == 0);
+
+         //check if transaction & crc is ok
+         bluefs_transaction_t t;
+         try {
+           bufferlist::const_iterator p = candidate.cbegin();
+           decode(t, p);
+         }
+         catch (buffer::error& e) {
+           dout(5) << __func__ << " failed match" << dendl;
+           continue;
+         }
+
+         //success, it seems a probable candidate
+         uint64_t l = std::min<uint64_t>(ne.length, read_len);
+         //trim to required size
+         bufferlist requested_read;
+         requested_read.substr_of(candidate, fixed.length(), l);
+         bl->append(requested_read);
+         dout(5) << __func__ << " successful extension of log " << l << "/" << read_len << dendl;
+         log_fnode.append_extent(ne);
+         log_fnode.recalc_allocated();
+         log_reader->buf.pos += l;
+         return l;
+       }
+       //save overlay for next search
+       memcpy(search_b, chunk_e - overlay_size, overlay_size);
+       pos += chunk_len;
+       len -= chunk_len;
+      }
+    }
+  }
+  return 0;
+}
+
 void BlueFS::debug_inject_duplicate_gift(unsigned id,
   uint64_t offset,
   uint64_t len)
@@ -3590,8 +3830,8 @@ void BlueFS::debug_inject_duplicate_gift(unsigned id,
 // ===============================================
 // OriginalVolumeSelector
 
-void* OriginalVolumeSelector::get_hint_by_device(uint8_t dev) const {
-  return reinterpret_cast<void*>(dev);
+void* OriginalVolumeSelector::get_hint_for_log() const {
+  return reinterpret_cast<void*>(BlueFS::BDEV_WAL);
 }
 void* OriginalVolumeSelector::get_hint_by_dir(const string& dirname) const {
   uint8_t res = BlueFS::BDEV_DB;
index fa727715ca6a15111dbe9acf852ea378261bdb23..eddabf7344f25f42019a1791260cf1fb931e1e1e 100644 (file)
@@ -80,8 +80,8 @@ public:
 
   virtual ~BlueFSVolumeSelector() {
   }
-  virtual void* get_hint_by_device(uint8_t dev) const = 0;
-  virtual void* get_hint_by_dir(const string& dirname) const = 0;
+  virtual void* get_hint_for_log() const = 0;
+  virtual void* get_hint_by_dir(const std::string& dirname) const = 0;
 
   virtual void add_usage(void* file_hint, const bluefs_fnode_t& fnode) = 0;
   virtual void sub_usage(void* file_hint, const bluefs_fnode_t& fnode) = 0;
@@ -352,7 +352,8 @@ private:
                                 PExtentVector* extents);
 
   int _flush_range(FileWriter *h, uint64_t offset, uint64_t length);
-  int _flush(FileWriter *h, bool force);
+  int _flush(FileWriter *h, bool focce, std::unique_lock<ceph::mutex>& l);
+  int _flush(FileWriter *h, bool force, bool *flushed = nullptr);
   int _fsync(FileWriter *h, std::unique_lock<ceph::mutex>& l);
 
 #ifdef HAVE_LIBAIO
@@ -516,6 +517,8 @@ public:
 
   /// sync any uncommitted state to disk
   void sync_metadata(bool avoid_compact);
+  /// test and compact log, if necessary
+  void _maybe_compact_log(std::unique_lock<ceph::mutex>& l);
 
   void set_slow_device_expander(BlueFSDeviceExpander* a) {
     slow_dev_expander = a;
@@ -552,9 +555,10 @@ public:
   // handler for discard event
   void handle_discard(unsigned dev, interval_set<uint64_t>& to_release);
 
-  void flush(FileWriter *h) {
-    std::lock_guard l(lock);
-    _flush(h, false);
+  void flush(FileWriter *h, bool force = false) {
+    std::unique_lock l(lock);
+    int r = _flush(h, force, l);
+    ceph_assert(r == 0);
   }
   void flush_range(FileWriter *h, uint64_t offset, uint64_t length) {
     std::lock_guard l(lock);
@@ -562,7 +566,9 @@ public:
   }
   int fsync(FileWriter *h) {
     std::unique_lock l(lock);
-    return _fsync(h, l);
+    int r = _fsync(h, l);
+    _maybe_compact_log(l);
+    return r;
   }
   int read(FileReader *h, FileReaderBuffer *buf, uint64_t offset, size_t len,
           bufferlist *outbl, char *out) {
@@ -590,6 +596,11 @@ public:
     std::lock_guard l(lock);
     return _truncate(h, offset);
   }
+  int do_replay_recovery_read(FileReader *log,
+                             size_t log_pos,
+                             size_t read_offset,
+                             size_t read_len,
+                             bufferlist* bl);
 
   /// test purpose methods
   void debug_inject_duplicate_gift(unsigned bdev, uint64_t offset, uint64_t len);
@@ -610,8 +621,8 @@ public:
     uint64_t _slow_total)
     : wal_total(_wal_total), db_total(_db_total), slow_total(_slow_total) {}
 
-  void* get_hint_by_device(uint8_t dev) const override;
-  void* get_hint_by_dir(const string& dirname) const override;
+  void* get_hint_for_log() const override;
+  void* get_hint_by_dir(const std::string& dirname) const override;
 
   void add_usage(void* hint, const bluefs_fnode_t& fnode) override {
     // do nothing
index 51614c09d2cd61a736b8e4eb4585e6f44543f86c..aa689dbc08b90808624e3dc4d108f75dd01a1713 100644 (file)
@@ -196,7 +196,7 @@ class BlueRocksWritableFile : public rocksdb::WritableFile {
   }
 
   rocksdb::Status Close() override {
-    Flush();
+    fs->flush(h, true);
 
     // mimic posix env, here.  shrug.
     size_t block_size;
index 66c437fc8616d7029fb1911e853790f6323fcd39..442a93c66bb276ff0121155d1856ffd1ff506087 100644 (file)
@@ -843,77 +843,47 @@ struct LruOnodeCacheShard : public BlueStore::OnodeCacheShard {
       BlueStore::Onode,
       boost::intrusive::list_member_hook<>,
       &BlueStore::Onode::lru_item> > list_t;
-  typedef boost::intrusive::list<
-    BlueStore::Onode,
-    boost::intrusive::member_hook<
-      BlueStore::Onode,
-      boost::intrusive::list_member_hook<>,
-      &BlueStore::Onode::pin_item> > pin_list_t;
 
   list_t lru;
-  pin_list_t pin_list;
 
   explicit LruOnodeCacheShard(CephContext *cct) : BlueStore::OnodeCacheShard(cct) {}
 
-  void _add(BlueStore::OnodeRef& o, int level) override
+  void _add(BlueStore::Onode* o, int level) override
   {
-    ceph_assert(o->s == nullptr);
-    o->s = this;
-    if (o->nref > 1) {
-      pin_list.push_front(*o);
-      o->pinned = true;
-      num_pinned = pin_list.size();
-    } else {
+    if (o->put_cache()) {
       (level > 0) ? lru.push_front(*o) : lru.push_back(*o);
+    } else {
+      ++num_pinned;
     }
-    num = lru.size();
+    ++num; // we count both pinned and unpinned entries
+    dout(20) << __func__ << " " << this << " " << o->oid << " added, num=" << num << dendl;
   }
-  void _rm(BlueStore::OnodeRef& o) override
+  void _rm(BlueStore::Onode* o) override
   {
-    o->s = nullptr;
-    if (o->pinned) {
-      o->pinned = false;
-      pin_list.erase(pin_list.iterator_to(*o));
-    } else {
+    if (o->pop_cache()) {
       lru.erase(lru.iterator_to(*o));
+    } else {
+      ceph_assert(num_pinned);
+      --num_pinned;
     }
-    num = lru.size();
-    num_pinned = pin_list.size();
+    ceph_assert(num);
+    --num;
+    dout(20) << __func__ << " " << this << " " << " " << o->oid << " removed, num=" << num << dendl;
   }
-  void _touch(BlueStore::OnodeRef& o) override
+  void _pin(BlueStore::Onode* o) override
   {
-    if (o->pinned) {
-      return;
-    }
     lru.erase(lru.iterator_to(*o));
-    lru.push_front(*o);
-    num = lru.size();
+    ++num_pinned;
+    dout(20) << __func__ << this << " " << " " << " " << o->oid << " pinned" << dendl;
   }
-  void _pin(BlueStore::Onode& o) override
+  void _unpin(BlueStore::Onode* o) override
   {
-    if (o.pinned == true) {
-      return;
-    }
-    lru.erase(lru.iterator_to(o));
-    pin_list.push_front(o);
-    o.pinned = true;
-    num = lru.size();
-    num_pinned = pin_list.size();
-    dout(30) << __func__ << " " << o.oid << " pinned" << dendl;
-
-  } 
-  void _unpin(BlueStore::Onode& o) override
-  {
-    if (o.pinned == false) {
-      return;
-    }
-    pin_list.erase(pin_list.iterator_to(o));
-    lru.push_front(o);
-    o.pinned = false;
-    num = lru.size();
-    num_pinned = pin_list.size();
-    dout(30) << __func__ << " " << o.oid << " unpinned" << dendl;
+    lru.push_front(*o);
+    ceph_assert(num_pinned);
+    --num_pinned;
+    dout(20) << __func__ << this << " " << " " << " " << o->oid << " unpinned" << dendl;
   }
+
   void _trim_to(uint64_t new_size) override
   {
     if (new_size >= lru.size()) {
@@ -923,26 +893,40 @@ struct LruOnodeCacheShard : public BlueStore::OnodeCacheShard {
     auto p = lru.end();
     ceph_assert(p != lru.begin());
     --p;
-    while (n > 0) {
+    ceph_assert(num >= n);
+    num -= n;
+    while (n-- > 0) {
       BlueStore::Onode *o = &*p;
-      dout(30) << __func__ << "  rm " << o->oid << dendl;
+      dout(20) << __func__ << "  rm " << o->oid << " "
+               << o->nref << " " << o->cached << " " << o->pinned << dendl;
       if (p != lru.begin()) {
         lru.erase(p--);
       } else {
+        ceph_assert(n == 0);
         lru.erase(p);
-        ceph_assert(n == 1);
       }
-      o->s = nullptr;
-      o->get();  // paranoia
-      o->c->onode_map.remove(o->oid);
-      o->put();
-      --n;
+      auto pinned = !o->pop_cache();
+      ceph_assert(!pinned);
+      o->c->onode_map._remove(o->oid);
     }
-    num = lru.size();
+  }
+  void move_pinned(OnodeCacheShard *to, BlueStore::Onode *o) override
+  {
+    if (to == this) {
+      return;
+    }
+    ceph_assert(o->cached);
+    ceph_assert(o->pinned);
+    ceph_assert(num);
+    ceph_assert(num_pinned);
+    --num_pinned;
+    --num;
+    ++to->num_pinned;
+    ++to->num;
   }
   void add_stats(uint64_t *onodes, uint64_t *pinned_onodes) override
   {
-    *onodes += num + num_pinned;
+    *onodes += num;
     *pinned_onodes += num_pinned;
   }
 };
@@ -1637,7 +1621,8 @@ void BlueStore::BufferSpace::split(BufferCacheShard* cache, size_t pos, BlueStor
 #undef dout_prefix
 #define dout_prefix *_dout << "bluestore.OnodeSpace(" << this << " in " << cache << ") "
 
-BlueStore::OnodeRef BlueStore::OnodeSpace::add(const ghobject_t& oid, OnodeRef o)
+BlueStore::OnodeRef BlueStore::OnodeSpace::add(const ghobject_t& oid,
+  OnodeRef& o)
 {
   std::lock_guard l(cache->lock);
   auto p = onode_map.find(oid);
@@ -1647,13 +1632,19 @@ BlueStore::OnodeRef BlueStore::OnodeSpace::add(const ghobject_t& oid, OnodeRef o
                          << dendl;
     return p->second;
   }
-  ldout(cache->cct, 30) << __func__ << " " << oid << " " << o << dendl;
+  ldout(cache->cct, 20) << __func__ << " " << oid << " " << o << dendl;
   onode_map[oid] = o;
-  cache->_add(o, 1);
+  cache->_add(o.get(), 1);
   cache->_trim();
   return o;
 }
 
+void BlueStore::OnodeSpace::_remove(const ghobject_t& oid)
+{
+  ldout(cache->cct, 20) << __func__ << " " << oid << " " << dendl;
+  onode_map.erase(oid);
+}
+
 BlueStore::OnodeRef BlueStore::OnodeSpace::lookup(const ghobject_t& oid)
 {
   ldout(cache->cct, 30) << __func__ << dendl;
@@ -1667,10 +1658,16 @@ BlueStore::OnodeRef BlueStore::OnodeSpace::lookup(const ghobject_t& oid)
       ldout(cache->cct, 30) << __func__ << " " << oid << " miss" << dendl;
     } else {
       ldout(cache->cct, 30) << __func__ << " " << oid << " hit " << p->second
+                            << " " << p->second->nref
+                            << " " << p->second->cached
+                            << " " << p->second->pinned
                            << dendl;
-      cache->_touch(p->second);
-      hit = true;
+      // This will pin onode and implicitly touch the cache when Onode
+      // eventually will become unpinned
       o = p->second;
+      ceph_assert(!o->cached || o->pinned);
+
+      hit = true;
     }
   }
 
@@ -1685,9 +1682,9 @@ BlueStore::OnodeRef BlueStore::OnodeSpace::lookup(const ghobject_t& oid)
 void BlueStore::OnodeSpace::clear()
 {
   std::lock_guard l(cache->lock);
-  ldout(cache->cct, 10) << __func__ << dendl;
+  ldout(cache->cct, 10) << __func__ << " " << onode_map.size()<< dendl;
   for (auto &p : onode_map) {
-    cache->_rm(p.second);
+    cache->_rm(p.second.get());
   }
   onode_map.clear();
 }
@@ -1716,7 +1713,7 @@ void BlueStore::OnodeSpace::rename(
   if (pn != onode_map.end()) {
     ldout(cache->cct, 30) << __func__ << "  removing target " << pn->second
                          << dendl;
-    cache->_rm(pn->second);
+    cache->_rm(pn->second.get());
     onode_map.erase(pn);
   }
   OnodeRef o = po->second;
@@ -1724,10 +1721,13 @@ void BlueStore::OnodeSpace::rename(
   // install a non-existent onode at old location
   oldo.reset(new Onode(o->c, old_oid, o->key));
   po->second = oldo;
-  cache->_add(po->second, 1);
-  // add at new position and fix oid, key
+  cache->_add(oldo.get(), 1);
+  // add at new position and fix oid, key.
+  // This will pin 'o' and implicitly touch cache
+  // when it will eventually become unpinned
   onode_map.insert(make_pair(new_oid, o));
-  cache->_touch(o);
+  ceph_assert(o->pinned);
+
   o->oid = new_oid;
   o->key = new_okey;
   cache->_trim();
@@ -1749,7 +1749,11 @@ template <int LogLevelV = 30>
 void BlueStore::OnodeSpace::dump(CephContext *cct)
 {
   for (auto& i : onode_map) {
-    ldout(cct, LogLevelV) << i.first << " : " << i.second << dendl;
+    ldout(cct, LogLevelV) << i.first << " : " << i.second
+      << " " << i.second->nref
+      << " " << i.second->cached
+      << " " << i.second->pinned
+      << dendl;
   }
 }
 
@@ -3289,6 +3293,47 @@ BlueStore::BlobRef BlueStore::ExtentMap::split_blob(
 #undef dout_prefix
 #define dout_prefix *_dout << "bluestore.onode(" << this << ")." << __func__ << " "
 
+//
+// A tricky thing about Onode's ref counter is that we do an additional
+// increment when newly pinned instance is detected. And -1 on unpin.
+// This prevents from a conflict with a delete call (when nref == 0).
+// The latter might happen while the thread is in unpin() function
+// (and e.g. waiting for lock acquisition) since nref is already
+// decremented. And another 'putting' thread on the instance will release it.
+//
+void BlueStore::Onode::get() {
+  if (++nref == 2) {
+    c->get_onode_cache()->pin(this, [&]() {
+        bool was_pinned = pinned;
+        pinned = nref >= 2;
+        // additional increment for newly pinned instance
+        bool r = !was_pinned && pinned;
+        if (r) {
+          ++nref;
+        }
+        return cached && r;
+      });
+  }
+}
+void BlueStore::Onode::put() {
+  if (--nref == 2) {
+    c->get_onode_cache()->unpin(this, [&]() {
+        bool was_pinned = pinned;
+        pinned = pinned && nref > 2; // intentionally use > not >= as we have
+                                     // +1 due to pinned state
+        bool r = was_pinned && !pinned;
+        // additional decrement for newly unpinned instance
+        if (r) {
+          --nref;
+        }
+        return cached && r;
+      });
+  }
+  if (nref == 0) {
+    delete this;
+  }
+}
+
 BlueStore::Onode* BlueStore::Onode::decode(
   CollectionRef c,
   const ghobject_t& oid,
@@ -3726,23 +3771,17 @@ void BlueStore::Collection::split_cache(
       ldout(store->cct, 20) << __func__ << " moving " << o << " " << o->oid
                            << dendl;
 
-      // move the onode to the new map before futzing with the cache
-      // shard, ensuring that nref is always >= 2, and no racing
-      // thread can trigger a pin or unpin (which does *not* behave
-      // well when we are clearing and resetting the 's' shard
-      // pointer!).
+      // ensuring that nref is always >= 2 and hence onode is pinned and 
+      // physically out of cache during the transition
+      OnodeRef o_pin = o;
+      ceph_assert(o->pinned);
+
       p = onode_map.onode_map.erase(p);
       dest->onode_map.onode_map[o->oid] = o;
-
-      if (onode_map.cache != dest->onode_map.cache) {
-       // move onode to a different cache shard
-       onode_map.cache->_rm(o);
-       o->c = dest;
-       dest->onode_map.cache->_add(o, 1);
-      } else {
-       // the onode is in the same cache shard, making our move simpler.
-       o->c = dest;
+      if (get_onode_cache() != dest->get_onode_cache()) {
+        get_onode_cache()->move_pinned(dest->get_onode_cache(), o.get());
       }
+      o->c = dest;
 
       // move over shared blobs and buffers.  cover shared blobs from
       // both extent map and spanning blob map (the full extent map
@@ -7047,7 +7086,7 @@ int BlueStore::_mount(bool kv_only, bool open_db)
  out_stop:
   _kv_stop();
  out_coll:
-  _flush_cache();
+  _shutdown_cache();
  out_db:
   _close_db_and_around(false);
  out_bdev:
@@ -7071,7 +7110,7 @@ int BlueStore::umount()
     mempool_thread.shutdown();
     dout(20) << __func__ << " stopping kv thread" << dendl;
     _kv_stop();
-    _flush_cache();
+    _shutdown_cache();
     dout(20) << __func__ << " closing" << dendl;
 
   }
@@ -8191,7 +8230,7 @@ int BlueStore::_fsck(BlueStore::FSCKDepth depth, bool repair)
 
 out_scan:
   mempool_thread.shutdown();
-  _flush_cache();
+  _shutdown_cache();
 out_db:
   _close_db_and_around(false);
 out_bdev:
@@ -15369,22 +15408,15 @@ void BlueStore::generate_db_histogram(Formatter *f)
 
 }
 
-void BlueStore::_flush_cache()
+void BlueStore::_shutdown_cache()
 {
   dout(10) << __func__ << dendl;
-  for (auto i : onode_cache_shards) {
-    i->flush();
-    ceph_assert(i->empty());
-  }
   for (auto i : buffer_cache_shards) {
     i->flush();
     ceph_assert(i->empty());
   }
   for (auto& p : coll_map) {
-    if (!p.second->onode_map.empty()) {
-      derr << __func__ << " stray onodes on " << p.first << dendl;
-      p.second->onode_map.dump<0>(cct);
-    }
+    p.second->onode_map.clear();
     if (!p.second->shared_blob_set.empty()) {
       derr << __func__ << " stray shared blobs on " << p.first << dendl;
       p.second->shared_blob_set.dump<0>(cct);
@@ -15393,6 +15425,9 @@ void BlueStore::_flush_cache()
     ceph_assert(p.second->shared_blob_set.empty());
   }
   coll_map.clear();
+  for (auto i : onode_cache_shards) {
+    ceph_assert(i->empty());
+  }
 }
 
 // For external caller.
@@ -15776,6 +15811,7 @@ uint8_t RocksDBBlueFSVolumeSelector::select_prefer_bdev(void* h) {
       // - observed maximums on DB dev for DB/WAL/UNSORTED data
       // - observed maximum spillovers
       uint64_t max_db_use = 0; // max db usage we potentially observed
+      max_db_use += per_level_per_dev_max.at(BlueFS::BDEV_DB, LEVEL_LOG - LEVEL_FIRST);
       max_db_use += per_level_per_dev_max.at(BlueFS::BDEV_DB, LEVEL_WAL - LEVEL_FIRST);
       max_db_use += per_level_per_dev_max.at(BlueFS::BDEV_DB, LEVEL_DB - LEVEL_FIRST);
       // this could go to db hence using it in the estimation
@@ -15792,6 +15828,7 @@ uint8_t RocksDBBlueFSVolumeSelector::select_prefer_bdev(void* h) {
       }
     }
     break;
+  case LEVEL_LOG:
   case LEVEL_WAL:
     res = BlueFS::BDEV_WAL;
     break;
@@ -15834,14 +15871,15 @@ void RocksDBBlueFSVolumeSelector::dump(ostream& sout) {
     << ", slow_total:" << l_totals[LEVEL_SLOW - LEVEL_FIRST]
     << ", db_avail:" << db_avail4slow << std::endl
     << "Usage matrix:" << std::endl;
-  constexpr std::array<const char*, 7> names{ {
+  constexpr std::array<const char*, 8> names{ {
     "DEV/LEV",
     "WAL",
     "DB",
     "SLOW",
     "*",
     "*",
-    "REAL"
+    "REAL",
+    "FILES",
   } };
   const size_t width = 12;
   for (size_t i = 0; i < names.size(); ++i) {
@@ -15854,6 +15892,8 @@ void RocksDBBlueFSVolumeSelector::dump(ostream& sout) {
     sout.setf(std::ios::left, std::ios::adjustfield);
     sout.width(width);
     switch (l + LEVEL_FIRST) {
+    case LEVEL_LOG:
+      sout << "LOG"; break;
     case LEVEL_WAL:
       sout << "WAL"; break;
     case LEVEL_DB:
@@ -15863,15 +15903,14 @@ void RocksDBBlueFSVolumeSelector::dump(ostream& sout) {
     case LEVEL_MAX:
       sout << "TOTALS"; break;
     }
-    for (size_t d = 0; d < max_x - 1; d++) {
+    for (size_t d = 0; d < max_x; d++) {
       sout.setf(std::ios::left, std::ios::adjustfield);
       sout.width(width);
       sout << stringify(byte_u_t(per_level_per_dev_usage.at(d, l)));
     }
     sout.setf(std::ios::left, std::ios::adjustfield);
     sout.width(width);
-    sout << stringify(byte_u_t(per_level_per_dev_usage.at(max_x - 1, l)))
-         << std::endl;
+    sout << stringify(per_level_files[l]) << std::endl;
   }
   ceph_assert(max_x == per_level_per_dev_max.get_max_x());
   ceph_assert(max_y == per_level_per_dev_max.get_max_y());
@@ -15880,6 +15919,8 @@ void RocksDBBlueFSVolumeSelector::dump(ostream& sout) {
     sout.setf(std::ios::left, std::ios::adjustfield);
     sout.width(width);
     switch (l + LEVEL_FIRST) {
+    case LEVEL_LOG:
+      sout << "LOG"; break;
     case LEVEL_WAL:
       sout << "WAL"; break;
     case LEVEL_DB:
index 55787e1b2986bd61dcc129b3205ba38e690cb190..cac64a08d5df482c6c00ee07b5847d22ca839a1c 100644 (file)
@@ -1050,13 +1050,9 @@ public:
   };
 
   struct OnodeSpace;
-  struct OnodeCacheShard;
   /// an in-memory object
   struct Onode {
     MEMPOOL_CLASS_HELPERS();
-    // Not persisted and updated on cache insertion/removal
-    OnodeCacheShard *s;
-    bool pinned = false; // Only to be used by the onode cache shard
 
     std::atomic_int nref;  ///< reference count
     Collection *c;
@@ -1065,11 +1061,15 @@ public:
     /// key under PREFIX_OBJ where we are stored
     mempool::bluestore_cache_other::string key;
 
-    boost::intrusive::list_member_hook<> lru_item, pin_item;
+    boost::intrusive::list_member_hook<> lru_item;
 
     bluestore_onode_t onode;  ///< metadata stored as value in kv store
     bool exists;              ///< true if object logically exists
-
+    bool cached;              ///< Onode is logically in the cache
+                              /// (it can be pinned and hence physically out
+                              /// of it at the moment though)
+    bool pinned;              ///< Onode is pinned
+                              /// (or should be pinned when cached)
     ExtentMap extent_map;
 
     // track txc's that have not been committed to kv store (and whose
@@ -1082,32 +1082,35 @@ public:
 
     Onode(Collection *c, const ghobject_t& o,
          const mempool::bluestore_cache_other::string& k)
-      : s(nullptr),
-        nref(0),
+      : nref(0),
        c(c),
        oid(o),
        key(k),
        exists(false),
+        cached(false),
+        pinned(false),
        extent_map(this) {
     }
     Onode(Collection* c, const ghobject_t& o,
-      const string& k)
-      : s(nullptr),
-      nref(0),
+      const std::string& k)
+      : nref(0),
       c(c),
       oid(o),
       key(k),
       exists(false),
+      cached(false),
+      pinned(false),
       extent_map(this) {
     }
     Onode(Collection* c, const ghobject_t& o,
       const char* k)
-      : s(nullptr),
-      nref(0),
+      : nref(0),
       c(c),
       oid(o),
       key(k),
       exists(false),
+      cached(false),
+      pinned(false),
       extent_map(this) {
     }
 
@@ -1120,19 +1123,18 @@ public:
     void dump(Formatter* f) const;
 
     void flush();
-    void get() {
-      if (++nref == 2 && s != nullptr) {
-        s->pin(*this);
-      }
+    void get();
+    void put();
+
+    inline bool put_cache() {
+      ceph_assert(!cached);
+      cached = true;
+      return !pinned;
     }
-    void put() {
-      int n = --nref;
-      if (n == 1 && s != nullptr) {
-        s->unpin(*this);
-      }
-      if (n == 0) {
-       delete this;
-      }
+    inline bool pop_cache() {
+      ceph_assert(cached);
+      cached = false;
+      return !pinned;
     }
 
     const string& get_omap_prefix();
@@ -1199,26 +1201,32 @@ public:
     std::atomic<uint64_t> num_pinned = {0};
 
     std::array<std::pair<ghobject_t, mono_clock::time_point>, 64> dumped_onodes;
+
+    virtual void _pin(Onode* o) = 0;
+    virtual void _unpin(Onode* o) = 0;
+
   public:
     OnodeCacheShard(CephContext* cct) : CacheShard(cct) {}
     static OnodeCacheShard *create(CephContext* cct, string type,
                                    PerfCounters *logger);
-    virtual void _add(OnodeRef& o, int level) = 0;
-    virtual void _rm(OnodeRef& o) = 0;
-    virtual void _touch(OnodeRef& o) = 0;
-    virtual void _pin(Onode& o) = 0;
-    virtual void _unpin(Onode& o) = 0;
+    virtual void _add(Onode* o, int level) = 0;
+    virtual void _rm(Onode* o) = 0;
 
-    void pin(Onode& o) {
+    void pin(Onode* o, std::function<bool ()> validator) {
       std::lock_guard l(lock);
-      _pin(o);
+      if (validator()) {
+        _pin(o);
+      }
     }
 
-    void unpin(Onode& o) {
+    void unpin(Onode* o, std::function<bool()> validator) {
       std::lock_guard l(lock);
-      _unpin(o);
+      if (validator()) {
+        _unpin(o);
+      }
     }
 
+    virtual void move_pinned(OnodeCacheShard *to, Onode *o) = 0;
     virtual void add_stats(uint64_t *onodes, uint64_t *pinned_onodes) = 0;
     bool empty() {
       return _get_num() == 0;
@@ -1279,17 +1287,16 @@ public:
 
     friend class Collection; // for split_cache()
 
+    friend struct LruOnodeCacheShard;
+    void _remove(const ghobject_t& oid);
   public:
     OnodeSpace(OnodeCacheShard *c) : cache(c) {}
     ~OnodeSpace() {
       clear();
     }
 
-    OnodeRef add(const ghobject_t& oid, OnodeRef o);
+    OnodeRef add(const ghobject_t& oid, OnodeRef& o);
     OnodeRef lookup(const ghobject_t& o);
-    void remove(const ghobject_t& oid) {
-      onode_map.erase(oid);
-    }
     void rename(OnodeRef& o, const ghobject_t& old_oid,
                const ghobject_t& new_oid,
                const mempool::bluestore_cache_other::string& new_okey);
@@ -1326,6 +1333,9 @@ public:
     pool_opts_t pool_opts;
     ContextQueue *commit_queue;
 
+    OnodeCacheShard* get_onode_cache() const {
+      return onode_map.cache;
+    }
     OnodeRef get_onode(const ghobject_t& oid, bool create, bool is_createop=false);
 
     // the terminology is confusing here, sorry!
@@ -2558,7 +2568,7 @@ public:
 
   void get_db_statistics(Formatter *f) override;
   void generate_db_histogram(Formatter *f) override;
-  void _flush_cache();
+  void _shutdown_cache();
   int flush_cache(ostream *os = NULL) override;
   void dump_perf_counters(Formatter *f) override {
     f->open_object_section("perf_counters");
@@ -3582,7 +3592,8 @@ class RocksDBBlueFSVolumeSelector : public BlueFSVolumeSelector
   enum {
     // use 0/nullptr as unset indication
     LEVEL_FIRST = 1,
-    LEVEL_WAL = LEVEL_FIRST,
+    LEVEL_LOG = LEVEL_FIRST, // BlueFS log
+    LEVEL_WAL,
     LEVEL_DB,
     LEVEL_SLOW,
     LEVEL_MAX
@@ -3592,6 +3603,8 @@ class RocksDBBlueFSVolumeSelector : public BlueFSVolumeSelector
   typedef matrix_2d<uint64_t, BlueFS::MAX_BDEV + 1, LEVEL_MAX - LEVEL_FIRST + 1> per_level_per_dev_usage_t;
 
   per_level_per_dev_usage_t per_level_per_dev_usage;
+  // file count per level, add +1 to keep total file count
+  uint64_t per_level_files[LEVEL_MAX - LEVEL_FIRST + 1] = { 0 };
 
   // Note: maximum per-device totals below might be smaller than corresponding
   // perf counters by up to a single alloc unit (1M) due to superblock extent.
@@ -3617,6 +3630,7 @@ public:
     uint64_t reserved,
     bool new_pol)
   {
+    l_totals[LEVEL_LOG - LEVEL_FIRST] = 0; // not used at the moment
     l_totals[LEVEL_WAL - LEVEL_FIRST] = _wal_total;
     l_totals[LEVEL_DB - LEVEL_FIRST] = _db_total;
     l_totals[LEVEL_SLOW - LEVEL_FIRST] = _slow_total;
@@ -3651,9 +3665,8 @@ public:
     }
   }
 
-  void* get_hint_by_device(uint8_t dev) const override {
-    ceph_assert(dev == BlueFS::BDEV_WAL); // others aren't used atm
-    return  reinterpret_cast<void*>(LEVEL_WAL);
+  void* get_hint_for_log() const override {
+    return  reinterpret_cast<void*>(LEVEL_LOG);
   }
   void* get_hint_by_dir(const string& dirname) const override;
 
@@ -3687,6 +3700,8 @@ public:
         max = cur;
       }
     }
+    ++per_level_files[pos];
+    ++per_level_files[LEVEL_MAX - LEVEL_FIRST];
   }
   void sub_usage(void* hint, const bluefs_fnode_t& fnode) override {
     if (hint == nullptr)
@@ -3706,6 +3721,10 @@ public:
     auto& cur = per_level_per_dev_usage.at(BlueFS::MAX_BDEV, pos);
     ceph_assert(cur >= fnode.size);
     cur -= fnode.size;
+    ceph_assert(per_level_files[pos] > 0);
+    --per_level_files[pos];
+    ceph_assert(per_level_files[LEVEL_MAX - LEVEL_FIRST] > 0);
+    --per_level_files[LEVEL_MAX - LEVEL_FIRST];
   }
   void add_usage(void* hint, uint64_t fsize) override {
     if (hint == nullptr)
index b5f005797321eb6b550620b86d3cf452a60ee357..2dc1016c38edd4a886f97cb462cf4e1253bd8877 100644 (file)
@@ -261,7 +261,8 @@ int main(int argc, char **argv)
         "prime-osd-dir, "
         "bluefs-log-dump, "
         "free-dump, "
-        "free-score")
+        "free-score, "
+        "bluefs-stats")
     ;
   po::options_description po_all("All options");
   po_all.add(po_options).add(po_positional);
@@ -845,10 +846,10 @@ int main(int argc, char **argv)
     for (auto alloc_name : allocs_name) {
       ceph::bufferlist in, out;
       ostringstream err;
-      bool b = admin_socket->execute_command(
+      int r = admin_socket->execute_command(
        {"{\"prefix\": \"bluestore allocator " + action_name + " " + alloc_name + "\"}"},
        in, err, &out);
-      if (!b) {
+      if (r != 0) {
         cerr << "failure querying '" << alloc_name << "'" << std::endl;
         exit(EXIT_FAILURE);
       }
@@ -857,6 +858,28 @@ int main(int argc, char **argv)
     }
 
     bluestore.cold_close();
+  } else  if (action == "bluefs-stats") {
+    AdminSocket* admin_socket = g_ceph_context->get_admin_socket();
+    ceph_assert(admin_socket);
+    validate_path(cct.get(), path, false);
+    BlueStore bluestore(cct.get(), path);
+    int r = bluestore.cold_open();
+    if (r < 0) {
+      cerr << "error from cold_open: " << cpp_strerror(r) << std::endl;
+      exit(EXIT_FAILURE);
+    }
+
+    ceph::bufferlist in, out;
+    ostringstream err;
+    r = admin_socket->execute_command(
+      { "{\"prefix\": \"bluefs stats\"}" },
+      in, err, &out);
+    if (r != 0) {
+      cerr << "failure querying bluefs stats: " << cpp_strerror(r) << std::endl;
+      exit(EXIT_FAILURE);
+    }
+    cout << std::string(out.c_str(), out.length()) << std::endl;
+     bluestore.cold_close();
   } else {
     cerr << "unrecognized action " << action << std::endl;
     return 1;
index e72f9f6f650f451cff898293f12390de85547849..7b6e1aca215d448af9bb7df24ac1f6bc60bd1f8c 100644 (file)
@@ -2709,7 +2709,6 @@ will start to track new ops received afterwards.";
   }
 
   else if (prefix == "bench") {
-    lock_guard l(osd_lock);
     int64_t count;
     int64_t bsize;
     int64_t osize, onum;
@@ -3721,7 +3720,7 @@ void OSD::final_init()
   ceph_assert(r == 0);
   r = admin_socket->register_command("dump_scrub_reservations",
                                     asok_hook,
-                                    "show recovery reservations");
+                                    "show scrub reservations");
   ceph_assert(r == 0);
   r = admin_socket->register_command("get_latest_osdmap",
                                     asok_hook,
@@ -6511,6 +6510,12 @@ void OSD::_collect_metadata(map<string,string> *pm)
   (*pm)["rotational"] = store_is_rotational ? "1" : "0";
   (*pm)["journal_rotational"] = journal_is_rotational ? "1" : "0";
   (*pm)["default_device_class"] = store->get_default_device_class();
+  string osdspec_affinity;
+  int r = store->read_meta("osdspec_affinity", &osdspec_affinity);
+  if (r < 0 || osdspec_affinity.empty()) {
+    osdspec_affinity = "";
+  }
+  (*pm)["osdspec_affinity"] = osdspec_affinity;
   store->collect_metadata(pm);
 
   collect_sys_info(pm, cct);
@@ -7425,16 +7430,15 @@ void OSD::sched_scrub()
     return;
   }
   bool allow_requested_repair_only = false;
-  if (service.is_recovery_active()) {
-    if (!cct->_conf->osd_scrub_during_recovery && cct->_conf->osd_repair_during_recovery) {
-      dout(10) << __func__
-               << " will only schedule explicitly requested repair due to active recovery"
-               << dendl;
-      allow_requested_repair_only = true;
-    } else if (!cct->_conf->osd_scrub_during_recovery && !cct->_conf->osd_repair_during_recovery) {
+  if (service.is_recovery_active() && !cct->_conf->osd_scrub_during_recovery) {
+    if (!cct->_conf->osd_repair_during_recovery) {
       dout(20) << __func__ << " not scheduling scrubs due to active recovery" << dendl;
       return;
     }
+    dout(10) << __func__
+             << " will only schedule explicitly requested repair due to active recovery"
+             << dendl;
+    allow_requested_repair_only = true;
   }
 
   utime_t now = ceph_clock_now();
@@ -7928,6 +7932,13 @@ void OSD::handle_osd_map(MOSDMap *m)
        delete o;
        request_full_map(e, last);
        last = e - 1;
+
+       // don't continue committing if we failed to enc the first inc map
+       if (last < start) {
+         dout(10) << __func__ << " bailing because last < start (" << last << "<" << start << ")" << dendl;
+         m->put();
+         return;
+       }
        break;
       }
       got_full_map(e);
@@ -8060,10 +8071,12 @@ void OSD::_committed_osd_maps(epoch_t first, epoch_t last, MOSDMap *m)
   }
   map_lock.lock();
 
+  ceph_assert(first <= last);
+
   bool do_shutdown = false;
   bool do_restart = false;
   bool network_error = false;
-  OSDMapRef osdmap;
+  OSDMapRef osdmap = get_osdmap();
 
   // advance through the new maps
   for (epoch_t cur = first; cur <= last; cur++) {
@@ -10711,7 +10724,7 @@ void OSD::ShardedOpWQ::_enqueue(OpSchedulerItem&& item) {
 
   if (empty) {
     std::lock_guard l{sdata->sdata_wait_lock};
-    sdata->sdata_cond.notify_one();
+    sdata->sdata_cond.notify_all();
   }
 }
 
index dfc7eae9ec37816a6ac7434c7c459c503f31c371..d5339a059367081504be031afd0b0a3b3ece567f 100644 (file)
@@ -332,6 +332,8 @@ void OSDCapGrant::expand_profile()
 
   if (profile.name == "rbd") {
     // RBD read-write grant
+    profile_grants.emplace_back(OSDCapMatch(string(), "rbd_info"),
+                                OSDCapSpec(osd_rwxa_t(OSD_CAP_R)));
     profile_grants.emplace_back(OSDCapMatch(string(), "rbd_children"),
                                 OSDCapSpec(osd_rwxa_t(OSD_CAP_CLS_R)));
     profile_grants.emplace_back(OSDCapMatch(string(), "rbd_mirroring"),
index 0649e1c9e770d3e94a1ffab4203dcdf2da0b7cd3..4afcec660882a38f96c59850c847f7ad68fe16d3 100644 (file)
@@ -197,6 +197,7 @@ PG::PG(OSDService *o, OSDMapRef curmap,
   pg_stats_publish_valid(false),
   finish_sync_event(NULL),
   scrub_after_recovery(false),
+  save_req_scrub(false),
   active_pushes(0),
   recovery_state(
     o->cct,
@@ -349,6 +350,7 @@ void PG::clear_primary_state()
 
   scrubber.reserved_peers.clear();
   scrub_after_recovery = false;
+  save_req_scrub = false;
 
   agent_clear();
 }
@@ -359,7 +361,7 @@ PG::Scrubber::Scrubber()
    active(false),
    shallow_errors(0), deep_errors(0), fixed(0),
    must_scrub(false), must_deep_scrub(false), must_repair(false),
-   need_auto(false), time_for_deep(false),
+   need_auto(false), req_scrub(false), time_for_deep(false),
    auto_repair(false),
    check_repair(false),
    deep_scrub_on_error(false),
@@ -513,6 +515,8 @@ void PG::_finish_recovery(Context *c)
       scrub_after_recovery = false;
       scrubber.must_deep_scrub = true;
       scrubber.check_repair = true;
+      // We remember whether req_scrub was set when scrub_after_recovery set to true
+      scrubber.req_scrub = save_req_scrub;
       queue_scrub();
     }
   } else {
@@ -1550,6 +1554,7 @@ void PG::scrub_requested(bool deep, bool repair, bool need_auto)
     scrubber.must_repair = repair;
     // User might intervene, so clear this
     scrubber.need_auto = false;
+    scrubber.req_scrub = true;
   }
   reg_next_scrub();
 }
@@ -2552,6 +2557,12 @@ void PG::scrub(epoch_t queued, ThreadPool::TPHandle &handle)
   chunky_scrub(handle);
 }
 
+void PG::abort_scrub()
+{
+  scrub_clear_state();
+  scrub_unreserve_replicas();
+}
+
 /*
  * Chunky scrub scrubs objects one chunk at a time with writes blocked for that
  * chunk.
@@ -2632,12 +2643,29 @@ void PG::scrub(epoch_t queued, ThreadPool::TPHandle &handle)
  */
 void PG::chunky_scrub(ThreadPool::TPHandle &handle)
 {
+  // Since repair is only by request and we need to scrub afterward
+  // treat the same as req_scrub.
+  if (!scrubber.req_scrub) {
+    if (state_test(PG_STATE_DEEP_SCRUB)) {
+      if (get_osdmap()->test_flag(CEPH_OSDMAP_NODEEP_SCRUB) ||
+         pool.info.has_flag(pg_pool_t::FLAG_NODEEP_SCRUB)) {
+           dout(10) << "nodeep_scrub set, aborting" << dendl;
+       abort_scrub();
+        return;
+      }
+    } else if (state_test(PG_STATE_SCRUBBING)) {
+      if (get_osdmap()->test_flag(CEPH_OSDMAP_NOSCRUB) || pool.info.has_flag(pg_pool_t::FLAG_NOSCRUB)) {
+         dout(10) << "noscrub set, aborting" << dendl;
+        abort_scrub();
+         return;
+      }
+    }
+  }
   // check for map changes
   if (scrubber.is_chunky_scrub_active()) {
     if (scrubber.epoch_start != info.history.same_interval_since) {
-      dout(10) << "scrub  pg changed, aborting" << dendl;
-      scrub_clear_state();
-      scrub_unreserve_replicas();
+      dout(10) << "scrub pg changed, aborting" << dendl;
+      abort_scrub();
       return;
     }
   }
@@ -2716,6 +2744,7 @@ void PG::chunky_scrub(ThreadPool::TPHandle &handle)
           * left end of the range if we are a tier because they may legitimately
           * not exist (see _scrub).
           */
+          ceph_assert(scrubber.preempt_divisor > 0);
          int min = std::max<int64_t>(3, cct->_conf->osd_scrub_chunk_min /
                                      scrubber.preempt_divisor);
          int max = std::max<int64_t>(min, cct->_conf->osd_scrub_chunk_max /
@@ -3021,6 +3050,7 @@ void PG::scrub_clear_state(bool has_error)
   state_clear(PG_STATE_DEEP_SCRUB);
   publish_stats_to_osd();
 
+  scrubber.req_scrub = false;
   // local -> nothing.
   if (scrubber.local_reserved) {
     osd->dec_scrubs_local();
@@ -3253,7 +3283,8 @@ void PG::scrub_finish()
     } else if (has_error) {
       // Deep scrub in order to get corrected error counts
       scrub_after_recovery = true;
-      dout(20) << __func__ << " Set scrub_after_recovery" << dendl;
+      save_req_scrub = scrubber.req_scrub;
+      dout(20) << __func__ << " Set scrub_after_recovery, req_scrub=" << save_req_scrub << dendl;
     } else if (scrubber.shallow_errors || scrubber.deep_errors) {
       // We have errors but nothing can be fixed, so there is no repair
       // possible.
@@ -3399,6 +3430,8 @@ ostream& operator<<(ostream& out, const PG& pg)
     out << " TIME_FOR_DEEP";
   if (pg.scrubber.need_auto)
     out << " NEED_AUTO";
+  if (pg.scrubber.req_scrub)
+    out << " REQ_SCRUB";
 
   if (pg.recovery_ops_active)
     out << " rops=" << pg.recovery_ops_active;
index d187c3a630c20e740045bbd488c02e68738d307d..13f115b8b9bb8b2e26b70cebdd20bbf1e2860825 100644 (file)
@@ -1130,7 +1130,7 @@ public:
     utime_t sleep_start;
 
     // flags to indicate explicitly requested scrubs (by admin)
-    bool must_scrub, must_deep_scrub, must_repair, need_auto;
+    bool must_scrub, must_deep_scrub, must_repair, need_auto, req_scrub;
 
     // Priority to use for scrub scheduling
     unsigned priority = 0;
@@ -1255,6 +1255,7 @@ public:
       must_deep_scrub = false;
       must_repair = false;
       need_auto = false;
+      req_scrub = false;
       time_for_deep = false;
       auto_repair = false;
       check_repair = false;
@@ -1291,6 +1292,7 @@ public:
 
 protected:
   bool scrub_after_recovery;
+  bool save_req_scrub; // Saved for scrub_after_recovery
 
   int active_pushes;
 
@@ -1310,6 +1312,7 @@ protected:
     const list<pair<ScrubMap::object, pg_shard_t> > &ok_peers,
     const set<pg_shard_t> &bad_peers);
 
+  void abort_scrub();
   void chunky_scrub(ThreadPool::TPHandle &handle);
   void scrub_compare_maps();
   /**
index 5a49aaf4514e94c02f786dfd7949740f7f577bfa..47ba7d3614cd71f3b61755b17c2993a3bab9db76 100644 (file)
@@ -3089,6 +3089,20 @@ void PeeringState::merge_from(
               << sources.begin()->second->info.history
               << dendl;
 
+    // above we have pulled down source's history and we need to check
+    // history.epoch_created again to confirm that source is not a placeholder
+    // too. (peering requires a sane history.same_interval_since value for any
+    // non-newly created pg and below here we know we are basically iterating
+    // back a series of past maps to fake a merge process, hence we need to
+    // fix history.same_interval_since first so that start_peering_interval()
+    // will not complain)
+    if (info.history.epoch_created == 0) {
+      dout(10) << __func__ << " both merge target and source are placeholders,"
+               << " set sis to lec " << info.history.last_epoch_clean
+               << dendl;
+      info.history.same_interval_since = info.history.last_epoch_clean;
+    }
+
     // if the past_intervals start is later than last_epoch_clean, it
     // implies the source repeered again but the target didn't, or
     // that the source became clean in a later epoch than the target.
@@ -3270,7 +3284,8 @@ void PeeringState::update_calc_stats()
       // Primary should not be in the peer_info, skip if it is.
       if (peer.first == pg_whoami) continue;
       int64_t missing = 0;
-      int64_t peer_num_objects = peer.second.stats.stats.sum.num_objects;
+      int64_t peer_num_objects =
+        std::max((int64_t)0, peer.second.stats.stats.sum.num_objects);
       // Backfill targets always track num_objects accurately
       // all other peers track missing accurately.
       if (is_backfill_target(peer.first)) {
index a16ba09eb22d18d63f79b67856d52937c116c071..f02e12636e4088f2af64dc2df18367bf320630a2 100644 (file)
@@ -10868,7 +10868,7 @@ void PrimaryLogPG::check_blacklisted_obc_watchers(ObjectContextRef obc)
 
 void PrimaryLogPG::populate_obc_watchers(ObjectContextRef obc)
 {
-  ceph_assert(is_active());
+  ceph_assert(is_primary() && is_active());
   auto it_objects = recovery_state.get_pg_log().get_log().objects.find(obc->obs.oi.soid);
   ceph_assert((recovering.count(obc->obs.oi.soid) ||
          !is_missing_object(obc->obs.oi.soid)) ||
@@ -11062,7 +11062,7 @@ ObjectContextRef PrimaryLogPG::get_object_context(
       soid, true,
       soid.has_snapset() ? attrs : 0);
 
-    if (is_active())
+    if (is_primary() && is_active())
       populate_obc_watchers(obc);
 
     if (pool.info.is_erasure()) {
index 8bf89c62799b3b9943c4c4f8b860c20c2d167161..e7fd0329e54e98302078c9af5c6a2da04274f091 100644 (file)
@@ -355,7 +355,7 @@ class CephFSVolumeClient(object):
                 continue
 
             (group_id, volume_id) = volume.split('/')
-            group_id = group_id if group_id is not 'None' else None
+            group_id = group_id if group_id != 'None' else None
             volume_path = VolumePath(group_id, volume_id)
             access_level = volume_data['access_level']
 
@@ -378,7 +378,7 @@ class CephFSVolumeClient(object):
                 if vol_meta['auths'][auth_id] == want_auth:
                     continue
 
-                readonly = True if access_level is 'r' else False
+                readonly = access_level == 'r'
                 self._authorize_volume(volume_path, auth_id, readonly)
 
             # Recovered from partial auth updates for the auth ID's access
@@ -1099,7 +1099,7 @@ class CephFSVolumeClient(object):
 
             # Construct auth caps that if present might conflict with the desired
             # auth caps.
-            unwanted_access_level = 'r' if want_access_level is 'rw' else 'rw'
+            unwanted_access_level = 'r' if want_access_level == 'rw' else 'rw'
             unwanted_mds_cap = 'allow {0} path={1}'.format(unwanted_access_level, path)
             if namespace:
                 unwanted_osd_cap = 'allow {0} pool={1} namespace={2}'.format(
index 8130ab3583937c1d4ab238f4468c67d8c532506a..7cde23ed811f11d483d0678a04b0d13c823e450d 100644 (file)
@@ -471,7 +471,7 @@ class Module(MgrModule):
             return (0, '', '')
         elif command['prefix'] == 'balancer pool ls':
             pool_ids = self.get_module_option('pool_ids')
-            if pool_ids is '':
+            if pool_ids == '':
                 return (0, '', '')
             pool_ids = pool_ids.split(',')
             pool_ids = [int(p) for p in pool_ids]
@@ -497,7 +497,7 @@ class Module(MgrModule):
             to_add = [str(pool_id_by_name[p]) for p in raw_names if p in pool_id_by_name]
             existing = self.get_module_option('pool_ids')
             final = to_add
-            if existing is not '':
+            if existing != '':
                 existing = existing.split(',')
                 final = set(to_add) | set(existing)
             self.set_module_option('pool_ids', ','.join(final))
@@ -505,7 +505,7 @@ class Module(MgrModule):
         elif command['prefix'] == 'balancer pool rm':
             raw_names = command['pools']
             existing = self.get_module_option('pool_ids')
-            if existing is '': # for idempotence
+            if existing == '': # for idempotence
                 return (0, '', '')
             existing = existing.split(',')
             osdmap = self.get_osdmap()
@@ -665,7 +665,7 @@ class Module(MgrModule):
                 osdmap = self.get_osdmap()
                 allow = self.get_module_option('pool_ids')
                 final = []
-                if allow is not '':
+                if allow != '':
                     allow = allow.split(',')
                     valid = [str(p['pool']) for p in osdmap.dump().get('pools', [])]
                     final = set(allow) & set(valid)
index 29e0831a35b8f7bf9f47299cadfc9d0938ed9628..fa6ea9e1bf51a5e8af5932fe3113b6c36cb32acb 100644 (file)
@@ -37,10 +37,13 @@ From within the `src/pybind/mgr/cephadm` directory.
 
    # vagrant up
 
-This will spawn three machines.
-mon0, mgr0, osd0
+This will spawn three machines by default.
+mon0, mgr0 and osd0 with 2 additional disks.
 
-NUM_DAEMONS can be used to increase the number of VMs created. (defaults to 1)
+You can change that by passing `MONS` (default: 1), `MGRS` (default: 1), `OSDS` (default: 1) and
+`DISKS` (default: 2) environment variables to overwrite the defaults. In order to not always have
+to set the environment variables you can now create as JSON see `./vagrant.config.example.json`
+for details.
 
 If will also come with the necessary packages preinstalled as well as your ~/.ssh/id_rsa.pub key
 injected. (to users root and vagrant; the cephadm-orchestrator currently connects as root)
@@ -48,7 +51,8 @@ injected. (to users root and vagrant; the cephadm-orchestrator currently connect
 
 2) Update the ssh-config
 
-The cephadm orchestrator needs to understand how to connect to the new node. Most likely the VM isn't reachable with the default settings used:
+The cephadm orchestrator needs to understand how to connect to the new node. Most likely the VM
+isn't reachable with the default settings used:
 
 ```
 Host *
@@ -82,12 +86,32 @@ Add the newly created host(s) to the inventory.
 
 4) Verify the inventory
 
+You should see the hostname in the list.
+
 ::
 
    # ceph orch host ls
 
 
-You should see the hostname in the list.
+5) Verify the devices
+
+To verify all disks are set and in good shape look if all devices have been spawned
+and can be found
+
+::
+
+   # ceph orch device ls
+
+
+6) Make a snapshot of all your VMs!
+
+To not go the long way again the next time snapshot your VMs in order to revert them back
+if they are dirty.
+
+In `this repository <https://github.com/Devp00l/vagrant-helper-scripts>`_ you can find two
+scripts that will help you with doing a snapshot and reverting it, without having to manual
+snapshot and revert each VM individually.
+
 
 Understanding ``AsyncCompletion``
 =================================
index 5cb85f7aff45fdd88063c0428298eaf303f1db38..be1992a23ec989561dc5a99f24d77a5da7d69dc8 100644 (file)
@@ -1,24 +1,51 @@
 # vi: set ft=ruby :
+#
+# In order to reduce the need of recreating all vagrant boxes everytime they
+# get dirty, snaptshot them and revert the snapshot of them instead.
+# Two helpful scripts to do this easily can be found here:
+# https://github.com/Devp00l/vagrant-helper-scripts
 
-NUM_DAEMONS = ENV["NUM_DAEMONS"] ? ENV["NUM_DAEMONS"].to_i : 1
+require 'json'
+configFileName = 'vagrant.config.json'
+CONFIG = File.file?(configFileName) && JSON.parse(File.read(File.join(File.dirname(__FILE__), configFileName)))
+
+def getConfig(name, default)
+  down = name.downcase
+  up = name.upcase
+  CONFIG && CONFIG[down] ? CONFIG[down] : (ENV[up] ? ENV[up].to_i : default)
+end
+
+OSDS = getConfig('OSDS', 1)
+MGRS = getConfig('MGRS', 1)
+MONS = getConfig('MONS', 1)
+DISKS = getConfig('DISKS', 2)
+
+# Activate only for test purpose as it changes the output of each vagrant command link to get the ssh_config.
+# puts "Your setup:","OSDs: #{OSDS}","MGRs: #{MGRS}","MONs: #{MONS}","Disks per OSD: #{DISKS}"
 
 Vagrant.configure("2") do |config|
   config.vm.synced_folder ".", "/vagrant", disabled: true
   config.vm.network "private_network", type: "dhcp"
-  config.vm.box = "centos/7"
+  config.vm.box = "centos/8"
 
-  (0..NUM_DAEMONS - 1).each do |i|
+  (0..MONS - 1).each do |i|
     config.vm.define "mon#{i}" do |mon|
       mon.vm.hostname = "mon#{i}"
     end
+  end
+  (0..MGRS - 1).each do |i|
     config.vm.define "mgr#{i}" do |mgr|
       mgr.vm.hostname = "mgr#{i}"
     end
+  end
+  (0..OSDS - 1).each do |i|
     config.vm.define "osd#{i}" do |osd|
       osd.vm.hostname = "osd#{i}"
       osd.vm.provider :libvirt do |libvirt|
-        libvirt.storage :file, :size => '20G'
-        libvirt.storage :file, :size => '20G'
+        (0..DISKS - 1).each do |d|
+          # In ruby value.chr makes ASCII char from value
+          libvirt.storage :file, :size => '20G', :device => "vd#{(98+d).chr}#{i}"
+        end
       end
     end
   end
@@ -31,10 +58,9 @@ Vagrant.configure("2") do |config|
 
   config.vm.provision "shell", inline: <<-SHELL
     sudo yum install -y yum-utils
-    sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
+    sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
     sudo rpm --import 'https://download.ceph.com/keys/release.asc'
-    curl -L https://shaman.ceph.com/api/repos/ceph/master/latest/centos/7/repo/ | sudo tee /etc/yum.repos.d/shaman.repo
+    curl -L https://shaman.ceph.com/api/repos/ceph/octopus/latest/centos/8/repo/ | sudo tee /etc/yum.repos.d/shaman.repo
     sudo yum install -y python36 podman ceph
-    sudo ln -s /usr/bin/python36 /usr/bin/python3 || true
   SHELL
 end
index e107ee4abb46586fe1b248c67941a315e323b766..3780e749f72d618209cc32bbb9545868dc5acfee 100644 (file)
@@ -9,7 +9,7 @@ import six
 import orchestrator
 from ceph.deployment import inventory
 from ceph.deployment.service_spec import ServiceSpec
-from orchestrator import OrchestratorError, HostSpec
+from orchestrator import OrchestratorError, HostSpec, OrchestratorEvent
 
 if TYPE_CHECKING:
     from .module import CephadmOrchestrator
@@ -83,8 +83,9 @@ class Inventory:
         for h, hostspec in self._inventory.items():
             if not label or label in hostspec.get('labels', []):
                 if as_hostspec:
-                    yield hostspec
-                yield h
+                    yield self.spec_from_dict(hostspec)
+                else:
+                    yield h
 
     def spec_from_dict(self, info):
         hostname = info['hostname']
@@ -108,6 +109,7 @@ class SpecStore():
         self.mgr = mgr
         self.specs = {} # type: Dict[str, ServiceSpec]
         self.spec_created = {} # type: Dict[str, datetime.datetime]
+        self.spec_preview = {} # type: Dict[str, ServiceSpec]
 
     def load(self):
         # type: () -> None
@@ -128,6 +130,9 @@ class SpecStore():
 
     def save(self, spec):
         # type: (ServiceSpec) -> None
+        if spec.preview_only:
+            self.spec_preview[spec.service_name()] = spec
+            return None
         self.specs[spec.service_name()] = spec
         self.spec_created[spec.service_name()] = datetime.datetime.utcnow()
         self.mgr.set_store(
@@ -137,6 +142,7 @@ class SpecStore():
                 'created': self.spec_created[spec.service_name()].strftime(DATEFMT),
             }, sort_keys=True),
         )
+        self.mgr.events.for_service(spec, OrchestratorEvent.INFO, 'service was created')
 
     def rm(self, service_name):
         # type: (str) -> bool
@@ -171,9 +177,13 @@ class HostCache():
         self.daemon_refresh_queue = [] # type: List[str]
         self.device_refresh_queue = [] # type: List[str]
         self.osdspec_previews_refresh_queue = [] # type: List[str]
+
+        # host -> daemon name -> dict
         self.daemon_config_deps = {}   # type: Dict[str, Dict[str, Dict[str,Any]]]
         self.last_host_check = {}      # type: Dict[str, datetime.datetime]
         self.loading_osdspec_preview = set()  # type: Set[str]
+        self.last_etc_ceph_ceph_conf: Dict[str, datetime.datetime] = {}
+        self.registry_login_queue: Set[str] = set()
 
     def load(self):
         # type: () -> None
@@ -215,6 +225,10 @@ class HostCache():
                 if 'last_host_check' in j:
                     self.last_host_check[host] = datetime.datetime.strptime(
                         j['last_host_check'], DATEFMT)
+                if 'last_etc_ceph_ceph_conf' in j:
+                    self.last_etc_ceph_ceph_conf[host] = datetime.datetime.strptime(
+                        j['last_etc_ceph_ceph_conf'], DATEFMT)
+                self.registry_login_queue.add(host)
                 self.mgr.log.debug(
                     'HostCache.load: host %s has %d daemons, '
                     '%d devices, %d networks' % (
@@ -259,6 +273,7 @@ class HostCache():
         self.daemon_refresh_queue.append(host)
         self.device_refresh_queue.append(host)
         self.osdspec_previews_refresh_queue.append(host)
+        self.registry_login_queue.add(host)
 
     def invalidate_host_daemons(self, host):
         # type: (str) -> None
@@ -273,6 +288,9 @@ class HostCache():
         if host in self.last_device_update:
             del self.last_device_update[host]
         self.mgr.event.set()
+    
+    def distribute_new_registry_login_info(self):
+        self.registry_login_queue = set(self.mgr.inventory.keys())
 
     def save_host(self, host):
         # type: (str) -> None
@@ -301,6 +319,10 @@ class HostCache():
 
         if host in self.last_host_check:
             j['last_host_check'] = self.last_host_check[host].strftime(DATEFMT)
+
+        if host in self.last_etc_ceph_ceph_conf:
+            j['last_etc_ceph_ceph_conf'] = self.last_etc_ceph_ceph_conf[host].strftime(DATEFMT)
+
         self.mgr.set_store(HOST_CACHE_PREFIX + host, json.dumps(j))
 
     def rm_host(self, host):
@@ -338,24 +360,40 @@ class HostCache():
                 r.append(dd)
         return r
 
+    def get_daemon(self, daemon_name: str) -> orchestrator.DaemonDescription:
+        for _, dm in self.daemons.items():
+            for _, dd in dm.items():
+                if dd.name() == daemon_name:
+                    return dd
+        raise orchestrator.OrchestratorError(f'Unable to find {daemon_name} daemon(s)')
+
     def get_daemons_with_volatile_status(self) -> Iterator[Tuple[str, Dict[str, orchestrator.DaemonDescription]]]:
-        for host, dm in self.daemons.items():
+        def alter(host, dd_orig: orchestrator.DaemonDescription) -> orchestrator.DaemonDescription:
+            dd = copy(dd_orig)
             if host in self.mgr.offline_hosts:
-                def set_offline(dd: orchestrator.DaemonDescription) -> orchestrator.DaemonDescription:
-                    ret = copy(dd)
-                    ret.status = -1
-                    ret.status_desc = 'host is offline'
-                    return ret
-                yield host, {name: set_offline(d) for name, d in dm.items()}
-            else:
-                yield host, dm
+                dd.status = -1
+                dd.status_desc = 'host is offline'
+            dd.events = self.mgr.events.get_for_daemon(dd.name())
+            return dd
+
+        for host, dm in self.daemons.items():
+            yield host, {name: alter(host, d) for name, d in dm.items()}
 
     def get_daemons_by_service(self, service_name):
         # type: (str) -> List[orchestrator.DaemonDescription]
         result = []   # type: List[orchestrator.DaemonDescription]
         for host, dm in self.daemons.items():
             for name, d in dm.items():
-                if name.startswith(service_name + '.'):
+                if d.service_name() == service_name:
+                    result.append(d)
+        return result
+
+    def get_daemons_by_type(self, service_type):
+        # type: (str) -> List[orchestrator.DaemonDescription]
+        result = []   # type: List[orchestrator.DaemonDescription]
+        for host, dm in self.daemons.items():
+            for name, d in dm.items():
+                if d.daemon_type == service_type:
                     result.append(d)
         return result
 
@@ -419,6 +457,35 @@ class HostCache():
             seconds=self.mgr.host_check_interval)
         return host not in self.last_host_check or self.last_host_check[host] < cutoff
 
+    def host_needs_new_etc_ceph_ceph_conf(self, host: str):
+        if not self.mgr.manage_etc_ceph_ceph_conf:
+            return False
+        if self.mgr.paused:
+            return False
+        if host in self.mgr.offline_hosts:
+            return False
+        if not self.mgr.last_monmap:
+            return False
+        if host not in self.last_etc_ceph_ceph_conf:
+            return True
+        if self.mgr.last_monmap > self.last_etc_ceph_ceph_conf[host]:
+            return True
+        # already up to date:
+        return False
+    
+    def update_last_etc_ceph_ceph_conf(self, host: str):
+        if not self.mgr.last_monmap:
+            return
+        self.last_etc_ceph_ceph_conf[host] = self.mgr.last_monmap
+
+    def host_needs_registry_login(self, host):
+        if host in self.mgr.offline_hosts:
+            return False
+        if host in self.registry_login_queue:
+            self.registry_login_queue.remove(host)
+            return True
+        return False
+
     def add_daemon(self, host, dd):
         # type: (str, orchestrator.DaemonDescription) -> None
         assert host in self.daemons
@@ -427,4 +494,86 @@ class HostCache():
     def rm_daemon(self, host, name):
         if host in self.daemons:
             if name in self.daemons[host]:
-                del self.daemons[host][name]
\ No newline at end of file
+                del self.daemons[host][name]
+
+    def daemon_cache_filled(self):
+        """
+        i.e. we have checked the daemons for each hosts at least once.
+        excluding offline hosts.
+
+        We're not checking for `host_needs_daemon_refresh`, as this might never be
+        False for all hosts.
+        """
+        return all((h in self.last_daemon_update or h in self.mgr.offline_hosts)
+                   for h in self.get_hosts())
+
+
+class EventStore():
+    def __init__(self, mgr):
+        # type: (CephadmOrchestrator) -> None
+        self.mgr: CephadmOrchestrator = mgr
+        self.events = {} # type: Dict[str, List[OrchestratorEvent]]
+
+    def add(self, event: OrchestratorEvent) -> None:
+
+        if event.kind_subject() not in self.events:
+            self.events[event.kind_subject()] = [event]
+
+        for e in self.events[event.kind_subject()]:
+            if e.message == event.message:
+                return
+
+        self.events[event.kind_subject()].append(event)
+
+        # limit to five events for now.
+        self.events[event.kind_subject()] = self.events[event.kind_subject()][-5:]
+
+    def for_service(self, spec: ServiceSpec, level, message) -> None:
+        e = OrchestratorEvent(datetime.datetime.utcnow(), 'service', spec.service_name(), level, message)
+        self.add(e)
+
+    def from_orch_error(self, e: OrchestratorError):
+        if e.event_subject is not None:
+            self.add(OrchestratorEvent(
+                datetime.datetime.utcnow(),
+                e.event_subject[0],
+                e.event_subject[1],
+                "ERROR",
+                str(e)
+            ))
+
+
+    def for_daemon(self, daemon_name, level, message):
+        e = OrchestratorEvent(datetime.datetime.utcnow(), 'daemon', daemon_name, level, message)
+        self.add(e)
+
+    def for_daemon_from_exception(self, daemon_name, e: Exception):
+        self.for_daemon(
+            daemon_name,
+            "ERROR",
+            str(e)
+        )
+
+    def cleanup(self) -> None:
+        # Needs to be properly done, in case events are persistently stored.
+
+        unknowns: List[str] = []
+        daemons = self.mgr.cache.get_daemon_names()
+        specs = self.mgr.spec_store.specs.keys()
+        for k_s, v in self.events.items():
+            kind, subject = k_s.split(':')
+            if kind == 'service':
+                if subject not in specs:
+                    unknowns.append(k_s)
+            elif kind == 'daemon':
+                if subject not in daemons:
+                    unknowns.append(k_s)
+
+        for k_s in unknowns:
+            del self.events[k_s]
+
+    def get_for_service(self, name) -> List[OrchestratorEvent]:
+        return self.events.get('service:' + name, [])
+
+    def get_for_daemon(self, name) -> List[OrchestratorEvent]:
+        return self.events.get('daemon:' + name, [])
diff --git a/ceph/src/pybind/mgr/cephadm/migrations.py b/ceph/src/pybind/mgr/cephadm/migrations.py
new file mode 100644 (file)
index 0000000..9e1612d
--- /dev/null
@@ -0,0 +1,160 @@
+import logging
+from typing import TYPE_CHECKING, Iterator
+
+from ceph.deployment.service_spec import PlacementSpec, ServiceSpec, HostPlacementSpec
+from cephadm.schedule import HostAssignment
+
+from orchestrator import OrchestratorError
+
+if TYPE_CHECKING:
+    from .module import CephadmOrchestrator
+
+LAST_MIGRATION = 2
+
+logger = logging.getLogger(__name__)
+
+
+class Migrations:
+    def __init__(self, mgr: "CephadmOrchestrator"):
+        self.mgr = mgr
+
+        # Why having a global counter, instead of spec versions?
+        #
+        # for the first migration:
+        # The specs don't change in (this) migration. but the scheduler here.
+        # Adding the version to the specs at this time just felt wrong to me.
+        #
+        # And the specs are only another part of cephadm which needs potential upgrades.
+        # We have the cache, the inventory, the config store, the upgrade (imagine changing the
+        # upgrade code, while an old upgrade is still in progress), naming of daemons,
+        # fs-layout of the daemons, etc.
+        if self.mgr.migration_current is None:
+            self.set(0)
+
+        # for some migrations, we don't need to do anything except for
+        # setting migration_current = 1.
+        # let's try to shortcut things here.
+        self.migrate()
+
+    def set(self, val):
+        self.mgr.set_module_option('migration_current', val)
+        self.mgr.migration_current = val
+
+    def is_migration_ongoing(self):
+        return self.mgr.migration_current != LAST_MIGRATION
+
+    def verify_no_migration(self):
+        if self.is_migration_ongoing():
+            # this is raised in module.serve()
+            raise OrchestratorError(
+                "cephadm migration still ongoing. Please wait, until the migration is complete.")
+
+    def migrate(self):
+        if self.mgr.migration_current == 0:
+            if self.migrate_0_1():
+                self.set(1)
+
+        if self.mgr.migration_current == 1:
+            if self.migrate_1_2():
+                self.set(2)
+
+    def migrate_0_1(self) -> bool:
+        """
+        Migration 0 -> 1
+        New scheduler that takes PlacementSpec as the bound and not as recommendation.
+        I.e. the new scheduler won't suggest any new placements outside of the hosts
+        specified by label etc.
+
+        Which means, we have to make sure, we're not removing any daemons directly after
+        upgrading to the new scheduler.
+
+        There is a potential race here:
+        1. user updates his spec to remove daemons
+        2. mgr gets upgraded to new scheduler, before the old scheduler removed the daemon
+        3. now, we're converting the spec to explicit placement, thus reverting (1.)
+        I think this is ok.
+        """
+
+        def interesting_specs() -> Iterator[ServiceSpec]:
+            for s in self.mgr.spec_store.specs.values():
+                if s.unmanaged:
+                    continue
+                p = s.placement
+                if p is None:
+                    continue
+                if p.count is None:
+                    continue
+                if not p.hosts and not p.host_pattern and not p.label:
+                    continue
+                yield s
+
+        def convert_to_explicit(spec: ServiceSpec) -> None:
+            placements = HostAssignment(
+                spec=spec,
+                get_hosts_func=self.mgr._get_hosts,
+                get_daemons_func=self.mgr.cache.get_daemons_by_service
+            ).place()
+
+            existing_daemons = self.mgr.cache.get_daemons_by_service(spec.service_name())
+
+            # We have to migrate, only if the new scheduler would remove daemons
+            if len(placements) >= len(existing_daemons):
+                return
+
+            old_hosts = {h.hostname: h for h in spec.placement.hosts}
+            new_hosts = [
+                old_hosts[d.hostname] if d.hostname in old_hosts else HostPlacementSpec(
+                    hostname=d.hostname, network='', name='')
+                for d in existing_daemons
+            ]
+
+            new_placement = PlacementSpec(
+                hosts=new_hosts,
+                count=spec.placement.count
+            )
+
+            new_spec = ServiceSpec.from_json(spec.to_json())
+            new_spec.placement = new_placement
+
+            logger.info(f"Migrating {spec.one_line_str()} to explicit placement")
+
+            self.mgr.spec_store.save(new_spec)
+
+        specs = list(interesting_specs())
+        if not specs:
+            return True  # nothing to do. shortcut
+
+        if not self.mgr.cache.daemon_cache_filled():
+            logger.info("Unable to migrate yet. Daemon Cache still incomplete.")
+            return False
+
+        for spec in specs:
+            convert_to_explicit(spec)
+
+        return True
+
+    def migrate_1_2(self) -> bool:
+        """
+        After 15.2.4, we unified some service IDs: MONs, MGRs etc no longer have a service id.
+        Which means, the service names changed:
+
+        mon.foo -> mon
+        mgr.foo -> mgr
+
+        This fixes the data structure consistency
+        """
+        bad_specs = {}
+        for name, spec in self.mgr.spec_store.specs.items():
+            if name != spec.service_name():
+                bad_specs[name] = (spec.service_name(), spec)
+
+        for old, (new, old_spec) in bad_specs.items():
+            if new not in self.mgr.spec_store.specs:
+                spec = old_spec
+            else:
+                spec = self.mgr.spec_store.specs[new]
+            spec.unmanaged = True
+            self.mgr.spec_store.save(spec)
+            self.mgr.spec_store.rm(old)
+
+        return True
index de9673aa039320f7540a3117a78b999721349969..4de556f9c6cb90813e59f91eca3c2aac2e7d6df9 100644 (file)
@@ -2,13 +2,14 @@ import json
 import errno
 import logging
 from collections import defaultdict
+from contextlib import contextmanager
 from functools import wraps
 from tempfile import TemporaryDirectory
 from threading import Event
 
 import string
 from typing import List, Dict, Optional, Callable, Tuple, TypeVar, \
-    Any, Set, TYPE_CHECKING, cast
+    Any, Set, TYPE_CHECKING, cast, Iterator, Union
 
 import datetime
 import six
@@ -22,27 +23,30 @@ import subprocess
 from ceph.deployment import inventory
 from ceph.deployment.drive_group import DriveGroupSpec
 from ceph.deployment.service_spec import \
-    NFSServiceSpec, ServiceSpec, PlacementSpec, assert_valid_host
+    NFSServiceSpec, RGWSpec, ServiceSpec, PlacementSpec, assert_valid_host
+from cephadm.services.cephadmservice import CephadmDaemonSpec
 
 from mgr_module import MgrModule, HandleCommandResult
 import orchestrator
 from orchestrator import OrchestratorError, OrchestratorValidationError, HostSpec, \
-    CLICommandMeta
+    CLICommandMeta, OrchestratorEvent, set_exception_subject, DaemonDescription
 from orchestrator._interface import GenericSpec
 
 from . import remotes
 from . import utils
+from .migrations import Migrations
 from .services.cephadmservice import MonService, MgrService, MdsService, RgwService, \
     RbdMirrorService, CrashService, CephadmService
 from .services.iscsi import IscsiService
 from .services.nfs import NFSService
-from .services.osd import RemoveUtil, OSDRemoval, OSDService
+from .services.osd import RemoveUtil, OSDQueue, OSDService, OSD, NotFoundError
 from .services.monitoring import GrafanaService, AlertmanagerService, PrometheusService, \
     NodeExporterService
-from .schedule import HostAssignment
-from .inventory import Inventory, SpecStore, HostCache
+from .schedule import HostAssignment, HostPlacementSpec
+from .inventory import Inventory, SpecStore, HostCache, EventStore
 from .upgrade import CEPH_UPGRADE_ORDER, CephadmUpgrade
 from .template import TemplateMgr
+from .utils import forall_hosts, CephadmNoImage, cephadmNoImage
 
 try:
     import remoto
@@ -84,42 +88,11 @@ CEPH_DATEFMT = '%Y-%m-%dT%H:%M:%S.%fZ'
 CEPH_TYPES = set(CEPH_UPGRADE_ORDER)
 
 
-def forall_hosts(f: Callable[..., T]) -> Callable[..., List[T]]:
-    @wraps(f)
-    def forall_hosts_wrapper(*args) -> List[T]:
-
-        # Some weired logic to make calling functions with multiple arguments work.
-        if len(args) == 1:
-            vals = args[0]
-            self = None
-        elif len(args) == 2:
-            self, vals = args
-        else:
-            assert 'either f([...]) or self.f([...])'
-
-        def do_work(arg):
-            if not isinstance(arg, tuple):
-                arg = (arg, )
-            try:
-                if self:
-                    return f(self, *arg)
-                return f(*arg)
-            except Exception as e:
-                logger.exception(f'executing {f.__name__}({args}) failed.')
-                raise
-
-        assert CephadmOrchestrator.instance is not None
-        return CephadmOrchestrator.instance._worker_pool.map(do_work, vals)
-
-
-    return forall_hosts_wrapper
-
-
-class CephadmCompletion(orchestrator.Completion):
+class CephadmCompletion(orchestrator.Completion[T]):
     def evaluate(self):
         self.finalize(None)
 
-def trivial_completion(f: Callable) -> Callable[..., CephadmCompletion]:
+def trivial_completion(f: Callable[..., T]) -> Callable[..., CephadmCompletion[T]]:
     """
     Decorator to make CephadmCompletion methods return
     a completion object that executes themselves.
@@ -139,7 +112,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
 
     instance = None
     NATIVE_OPTIONS = []  # type: List[Any]
-    MODULE_OPTIONS = [
+    MODULE_OPTIONS: List[dict] = [
         {
             'name': 'ssh_config_file',
             'type': 'str',
@@ -184,7 +157,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         },
         {
             'name': 'container_image_grafana',
-            'default': 'ceph/ceph-grafana:latest',
+            'default': 'ceph/ceph-grafana:6.6.2',
             'desc': 'Prometheus container image',
         },
         {
@@ -239,11 +212,49 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             'default': '/etc/prometheus/ceph/ceph_default_alerts.yml',
             'desc': 'location of alerts to include in prometheus deployments',
         },
+        {
+            'name': 'migration_current',
+            'type': 'int',
+            'default': None,
+            'desc': 'internal - do not modify',
+            # used to track track spec and other data migrations.
+        },
+        {
+            'name': 'config_dashboard',
+            'type': 'bool',
+            'default': True,
+            'desc': 'manage configs like API endpoints in Dashboard.'
+        },
+        {
+            'name': 'manage_etc_ceph_ceph_conf',
+            'type': 'bool',
+            'default': False,
+            'desc': 'Manage and own /etc/ceph/ceph.conf on the hosts.',
+        },
+        {
+            'name': 'registry_url',
+            'type': 'str',
+            'default': None,
+            'desc': 'Custom repository url'
+        },
+        {
+            'name': 'registry_username',
+            'type': 'str',
+            'default': None,
+            'desc': 'Custom repository username'
+        },
+        {
+            'name': 'registry_password',
+            'type': 'str',
+            'default': None,
+            'desc': 'Custom repository password'
+        },
     ]
 
     def __init__(self, *args, **kwargs):
         super(CephadmOrchestrator, self).__init__(*args, **kwargs)
         self._cluster_fsid = self.get('mon_map')['fsid']
+        self.last_monmap: Optional[datetime.datetime] = None
 
         # for serve()
         self.run = True
@@ -271,9 +282,17 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             self.warn_on_failed_host_check = True
             self.allow_ptrace = False
             self.prometheus_alerts_path = ''
+            self.migration_current = None
+            self.config_dashboard = True
+            self.manage_etc_ceph_ceph_conf = True
+            self.registry_url: Optional[str] = None
+            self.registry_username: Optional[str] = None
+            self.registry_password: Optional[str] = None
 
         self._cons = {}  # type: Dict[str, Tuple[remoto.backends.BaseConnection,remoto.backends.LegacyModuleExecute]]
 
+
+        self.notify('mon_map', None)
         self.config_notify()
 
         path = self.get_ceph_option('cephadm_path')
@@ -300,7 +319,10 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
 
         self.cache = HostCache(self)
         self.cache.load()
+
         self.rm_util = RemoveUtil(self)
+        self.to_remove_osds = OSDQueue()
+        self.rm_util.load_from_store()
 
         self.spec_store = SpecStore(self)
         self.spec_store.load()
@@ -313,9 +335,13 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             if h not in self.inventory:
                 self.cache.rm_host(h)
 
+
         # in-memory only.
+        self.events = EventStore(self)
         self.offline_hosts: Set[str] = set()
 
+        self.migration = Migrations(self)
+
         # services:
         self.osd_service = OSDService(self)
         self.nfs_service = NFSService(self)
@@ -348,6 +374,8 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
 
         self.template = TemplateMgr()
 
+        self.requires_post_actions = set()
+
     def shutdown(self):
         self.log.debug('shutdown')
         self._worker_pool.close()
@@ -363,27 +391,19 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         self.log.debug('_kick_serve_loop')
         self.event.set()
 
-    def _check_safe_to_destroy_mon(self, mon_id):
-        # type: (str) -> None
-        ret, out, err = self.check_mon_command({
-            'prefix': 'quorum_status',
-        })
-        try:
-            j = json.loads(out)
-        except Exception as e:
-            raise OrchestratorError('failed to parse quorum status')
+    # function responsible for logging single host into custom registry
+    def _registry_login(self, host, url, username, password):
+        self.log.debug(f"Attempting to log host {host} into custom registry @ {url}")
+        # want to pass info over stdin rather than through normal list of args
+        args_str = ("{\"url\": \"" + url + "\", \"username\": \"" + username + "\", "
+                    " \"password\": \"" + password + "\"}")
+        out, err, code = self._run_cephadm(
+            host, 'mon', 'registry-login',
+            ['--registry-json', '-'], stdin=args_str, error_ok=True)
+        if code:
+            return f"Host {host} failed to login to {url} as {username} with given password"
+        return
 
-        mons = [m['name'] for m in j['monmap']['mons']]
-        if mon_id not in mons:
-            self.log.info('Safe to remove mon.%s: not in monmap (%s)' % (
-                mon_id, mons))
-            return
-        new_mons = [m for m in mons if m != mon_id]
-        new_quorum = [m for m in j['quorum_names'] if m != mon_id]
-        if len(new_quorum) > len(new_mons) / 2:
-            self.log.info('Safe to remove mon.%s: new quorum should be %s (from %s)' % (mon_id, new_quorum, new_mons))
-            return
-        raise OrchestratorError('Removing %s would break mon quorum (new quorum %s, new mons %s)' % (mon_id, new_quorum, new_mons))
 
     def _check_host(self, host):
         if host not in self.inventory:
@@ -391,7 +411,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         self.log.debug(' checking %s' % host)
         try:
             out, err, code = self._run_cephadm(
-                host, 'client', 'check-host', [],
+                host, cephadmNoImage, 'check-host', [],
                 error_ok=True, no_fsid=True)
             self.cache.update_last_host_check(host)
             self.cache.save_host(host)
@@ -458,94 +478,67 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         ret = self.event.wait(sleep_interval)
         self.event.clear()
 
-    def serve(self):
-        # type: () -> None
+    def serve(self) -> None:
+        """
+        The main loop of cephadm.
+
+        A command handler will typically change the declarative state
+        of cephadm. This loop will then attempt to apply this new state.
+        """
         self.log.debug("serve starting")
         while self.run:
 
-            # refresh daemons
-            self.log.debug('refreshing hosts')
-            bad_hosts = []
-            failures = []
-            for host in self.cache.get_hosts():
-                if self.cache.host_needs_check(host):
-                    r = self._check_host(host)
-                    if r is not None:
-                        bad_hosts.append(r)
-                if self.cache.host_needs_daemon_refresh(host):
-                    self.log.debug('refreshing %s daemons' % host)
-                    r = self._refresh_host_daemons(host)
-                    if r:
-                        failures.append(r)
-                if self.cache.host_needs_device_refresh(host):
-                    self.log.debug('refreshing %s devices' % host)
-                    r = self._refresh_host_devices(host)
-                    if r:
-                        failures.append(r)
-
-                if self.cache.host_needs_osdspec_preview_refresh(host):
-                    self.log.debug(f"refreshing OSDSpec previews for {host}")
-                    r = self._refresh_host_osdspec_previews(host)
-                    if r:
-                        failures.append(r)
-
-            health_changed = False
-            if 'CEPHADM_HOST_CHECK_FAILED' in self.health_checks:
-                del self.health_checks['CEPHADM_HOST_CHECK_FAILED']
-                health_changed = True
-            if bad_hosts:
-                self.health_checks['CEPHADM_HOST_CHECK_FAILED'] = {
-                    'severity': 'warning',
-                    'summary': '%d hosts fail cephadm check' % len(bad_hosts),
-                    'count': len(bad_hosts),
-                    'detail': bad_hosts,
-                }
-                health_changed = True
-            if failures:
-                self.health_checks['CEPHADM_REFRESH_FAILED'] = {
-                    'severity': 'warning',
-                    'summary': 'failed to probe daemons or devices',
-                    'count': len(failures),
-                    'detail': failures,
-                }
-                health_changed = True
-            elif 'CEPHADM_REFRESH_FAILED' in self.health_checks:
-                del self.health_checks['CEPHADM_REFRESH_FAILED']
-                health_changed = True
-            if health_changed:
-                self.set_health_checks(self.health_checks)
+            try:
 
-            self._check_for_strays()
+                # refresh daemons
+                self.log.debug('refreshing hosts and daemons')
+                self._refresh_hosts_and_daemons()
 
-            if self.paused:
-                self.health_checks['CEPHADM_PAUSED'] = {
-                    'severity': 'warning',
-                    'summary': 'cephadm background work is paused',
-                    'count': 1,
-                    'detail': ["'ceph orch resume' to resume"],
-                }
-                self.set_health_checks(self.health_checks)
-            else:
-                if 'CEPHADM_PAUSED' in self.health_checks:
-                    del self.health_checks['CEPHADM_PAUSED']
-                    self.set_health_checks(self.health_checks)
+                self._check_for_strays()
 
-                self.rm_util._remove_osds_bg()
+                self._update_paused_health()
 
-                if self._apply_all_services():
-                    continue  # did something, refresh
+                if not self.paused:
+                    self.rm_util.process_removal_queue()
 
-                self._check_daemons()
+                    self.migration.migrate()
+                    if self.migration.is_migration_ongoing():
+                        continue
 
-                if self.upgrade.continue_upgrade():
-                    continue
+                    if self._apply_all_services():
+                        continue  # did something, refresh
+
+                    self._check_daemons()
+
+                    if self.upgrade.continue_upgrade():
+                        continue
+
+            except OrchestratorError as e:
+                if e.event_subject:
+                    self.events.from_orch_error(e)
 
             self._serve_sleep()
         self.log.debug("serve exit")
 
+    def _update_paused_health(self):
+        if self.paused:
+            self.health_checks['CEPHADM_PAUSED'] = {
+                'severity': 'warning',
+                'summary': 'cephadm background work is paused',
+                'count': 1,
+                'detail': ["'ceph orch resume' to resume"],
+            }
+            self.set_health_checks(self.health_checks)
+        else:
+            if 'CEPHADM_PAUSED' in self.health_checks:
+                del self.health_checks['CEPHADM_PAUSED']
+                self.set_health_checks(self.health_checks)
+
     def config_notify(self):
         """
         This method is called whenever one of our config options is changed.
+
+        TODO: this method should be moved into mgr_module.py
         """
         for opt in self.MODULE_OPTIONS:
             setattr(self,
@@ -562,7 +555,27 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         self.event.set()
 
     def notify(self, notify_type, notify_id):
-        pass
+        if notify_type == "mon_map":
+            # get monmap mtime so we can refresh configs when mons change
+            monmap = self.get('mon_map')
+            self.last_monmap = datetime.datetime.strptime(
+                monmap['modified'], CEPH_DATEFMT)
+            if self.last_monmap and self.last_monmap > datetime.datetime.utcnow():
+                self.last_monmap = None  # just in case clocks are skewed
+        if notify_type == "pg_summary":
+            self._trigger_osd_removal()
+
+    def _trigger_osd_removal(self):
+        data = self.get("osd_stats")
+        for osd in data.get('osd_stats', []):
+            if osd.get('num_pgs') == 0:
+                # if _ANY_ osd that is currently in the queue appears to be empty,
+                # start the removal process
+                if int(osd.get('osd')) in self.to_remove_osds.as_osd_ids():
+                    self.log.debug(f"Found empty osd. Starting removal process")
+                    # if the osd that is now empty is also part of the removal queue
+                    # start the process
+                    self.rm_util.process_removal_queue()
 
     def pause(self):
         if not self.paused:
@@ -593,7 +606,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         ]
         if forcename:
             if len([d for d in existing if d.daemon_id == forcename]):
-                raise orchestrator.OrchestratorValidationError('name %s already in use', forcename)
+                raise orchestrator.OrchestratorValidationError(f'name {daemon_type}.{forcename} already in use')
             return forcename
 
         if '.' in host:
@@ -609,7 +622,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
                                       for _ in range(6))
             if len([d for d in existing if d.daemon_id == name]):
                 if not suffix:
-                    raise orchestrator.OrchestratorValidationError('name %s already in use', name)
+                    raise orchestrator.OrchestratorValidationError(f'name {daemon_type}.{name} already in use')
                 self.log.debug('name %s exists, trying again', name)
                 continue
             return name
@@ -633,6 +646,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         if ssh_config_fname:
             self.validate_ssh_config_fname(ssh_config_fname)
             ssh_options += ['-F', ssh_config_fname]
+        self.ssh_config = ssh_config
 
         # identity
         ssh_key = self.get_store("ssh_identity_key")
@@ -658,7 +672,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             self._ssh_options = None
 
         if self.mode == 'root':
-            self.ssh_user = 'root'
+            self.ssh_user = self.get_store('ssh_user', default='root')
         elif self.mode == 'cephadm-package':
             self.ssh_user = 'cephadm'
 
@@ -700,7 +714,12 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         """
         The cephadm orchestrator is always available.
         """
-        return self.can_run()
+        ok, err = self.can_run()
+        if not ok:
+            return ok, err
+        if not self.ssh_key or not self.ssh_pub:
+            return False, 'SSH keys not set. Use `ceph cephadm set-priv-key` and `ceph cephadm set-pub-key` or `ceph cephadm generate-key`'
+        return True, ''
 
     def process(self, completions):
         """
@@ -724,8 +743,11 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         """
         if inbuf is None or len(inbuf) == 0:
             return -errno.EINVAL, "", "empty ssh config provided"
+        if inbuf == self.ssh_config:
+            return 0, "value unchanged", ""
         self.set_store("ssh_config", inbuf)
         self.log.info('Set ssh_config')
+        self._reconfig_ssh()
         return 0, "", ""
 
     @orchestrator._cli_write_command(
@@ -738,6 +760,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         self.set_store("ssh_config", None)
         self.ssh_config_tmp = None
         self.log.info('Cleared ssh_config')
+        self._reconfig_ssh()
         return 0, "", ""
 
     @orchestrator._cli_read_command(
@@ -789,6 +812,8 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
     def _set_priv_key(self, inbuf=None):
         if inbuf is None or len(inbuf) == 0:
             return -errno.EINVAL, "", "empty private ssh key provided"
+        if inbuf == self.ssh_key:
+            return 0, "value unchanged", ""
         self.set_store("ssh_identity_key", inbuf)
         self.log.info('Set ssh private key')
         self._reconfig_ssh()
@@ -800,6 +825,8 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
     def _set_pub_key(self, inbuf=None):
         if inbuf is None or len(inbuf) == 0:
             return -errno.EINVAL, "", "empty public ssh key provided"
+        if inbuf == self.ssh_pub:
+            return 0, "value unchanged", ""
         self.set_store("ssh_identity_pub", inbuf)
         self.log.info('Set ssh public key')
         self._reconfig_ssh()
@@ -830,18 +857,93 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
     def _get_user(self):
         return 0, self.ssh_user, ''
 
+    @orchestrator._cli_read_command(
+        'cephadm set-user',
+        'name=user,type=CephString',
+        'Set user for SSHing to cluster hosts, passwordless sudo will be needed for non-root users')
+    def set_ssh_user(self, user):
+        current_user = self.ssh_user
+        if user == current_user:
+            return 0, "value unchanged", ""
+
+        self.set_store('ssh_user', user)
+        self._reconfig_ssh()
+
+        host = self.cache.get_hosts()[0]
+        r = self._check_host(host)
+        if r is not None:
+            #connection failed reset user
+            self.set_store('ssh_user', current_user)
+            self._reconfig_ssh()
+            return -errno.EINVAL, '', 'ssh connection %s@%s failed' % (user, host)
+
+        msg = 'ssh user set to %s' % user
+        if user != 'root':
+            msg += ' sudo will be used'
+        self.log.info(msg)
+        return 0, msg, ''
+
+    @orchestrator._cli_read_command(
+        'cephadm registry-login',
+        "name=url,type=CephString,req=false "
+        "name=username,type=CephString,req=false "
+        "name=password,type=CephString,req=false",
+        'Set custom registry login info by providing url, username and password or json file with login info (-i <file>)')
+    def registry_login(self, url=None, username=None, password=None, inbuf=None):
+        # if password not given in command line, get it through file input
+        if not (url and username and password) and (inbuf is None or len(inbuf) == 0):
+            return -errno.EINVAL, "", ("Invalid arguments. Please provide arguments <url> <username> <password> "
+                                        "or -i <login credentials json file>")
+        elif not (url and username and password):
+            login_info = json.loads(inbuf)
+            if "url" in login_info and "username" in login_info and "password" in login_info:
+                url = login_info["url"]
+                username = login_info["username"]
+                password = login_info["password"]
+            else:
+                return -errno.EINVAL, "", ("json provided for custom registry login did not include all necessary fields. "
+                                "Please setup json file as\n"
+                                "{\n"
+                                  " \"url\": \"REGISTRY_URL\",\n"
+                                  " \"username\": \"REGISTRY_USERNAME\",\n"
+                                  " \"password\": \"REGISTRY_PASSWORD\"\n"
+                                "}\n")
+        # verify login info works by attempting login on random host
+        host = None
+        for host_name in self.inventory.keys():
+            host = host_name
+            break
+        if not host:
+            raise OrchestratorError('no hosts defined')
+        r = self._registry_login(host, url, username, password)
+        if r is not None:
+            return 1, '', r
+        # if logins succeeded, store info
+        self.log.debug("Host logins successful. Storing login info.")
+        self.set_module_option('registry_url', url)
+        self.set_module_option('registry_username', username)
+        self.set_module_option('registry_password', password)
+        # distribute new login info to all hosts
+        self.cache.distribute_new_registry_login_info()
+        return 0, "registry login scheduled", ''
+
     @orchestrator._cli_read_command(
         'cephadm check-host',
         'name=host,type=CephString '
         'name=addr,type=CephString,req=false',
         'Check whether we can access and manage a remote host')
     def check_host(self, host, addr=None):
-        out, err, code = self._run_cephadm(host, 'client', 'check-host',
-                                           ['--expect-hostname', host],
-                                           addr=addr,
-                                           error_ok=True, no_fsid=True)
-        if code:
-            return 1, '', ('check-host failed:\n' + '\n'.join(err))
+        try:
+            out, err, code = self._run_cephadm(host, cephadmNoImage, 'check-host',
+                                               ['--expect-hostname', host],
+                                               addr=addr,
+                                               error_ok=True, no_fsid=True)
+            if code:
+                return 1, '', ('check-host failed:\n' + '\n'.join(err))
+        except OrchestratorError as e:
+            self.log.exception(f"check-host failed for '{host}'")
+            return 1, '', ('check-host failed:\n' +
+                f"Host '{host}' not found. Use 'ceph orch host ls' to see all managed hosts.")
         # if we have an outstanding health alert for this host, give the
         # serve thread a kick
         if 'CEPHADM_HOST_CHECK_FAILED' in self.health_checks:
@@ -856,7 +958,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         'name=addr,type=CephString,req=false',
         'Prepare a remote host for use with cephadm')
     def _prepare_host(self, host, addr=None):
-        out, err, code = self._run_cephadm(host, 'client', 'prepare-host',
+        out, err, code = self._run_cephadm(host, cephadmNoImage, 'prepare-host',
                                            ['--expect-hostname', host],
                                            addr=addr,
                                            error_ok=True, no_fsid=True)
@@ -870,7 +972,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
                     self.event.set()
         return 0, '%s (%s) ok' % (host, addr), err
 
-    def _get_connection(self, host):
+    def _get_connection(self, host: str):
         """
         Setup a connection for running commands on remote host.
         """
@@ -889,7 +991,8 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         conn = remoto.Connection(
             n,
             logger=child_logger,
-            ssh_options=self._ssh_options)
+            ssh_options=self._ssh_options,
+            sudo=True if self.ssh_user != 'root' else False)
 
         r = conn.import_module(remotes)
         self._cons[host] = conn, r
@@ -912,23 +1015,11 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             executable_path))
         return executable_path
 
-    def _run_cephadm(self,
-                     host: str,
-                     entity: Optional[str],
-                     command: str,
-                     args: List[str],
-                     addr: Optional[str] = None,
-                     stdin: Optional[str] = None,
-                     no_fsid=False,
-                     error_ok=False,
-                     image: Optional[str] = None,
-                     env_vars: Optional[List[str]] = None,
-                     ) -> Tuple[List[str], List[str], int]:
-        """
-        Run cephadm on the remote host with the given command + args
-
-        :env_vars: in format -> [KEY=VALUE, ..]
-        """
+    @contextmanager
+    def _remote_connection(self,
+                           host: str,
+                           addr: Optional[str]=None,
+                           ) -> Iterator[Tuple["BaseConnection", Any]]:
         if not addr and host in self.inventory:
             addr = self.inventory.get_addr(host)
 
@@ -936,36 +1027,85 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
 
         try:
             try:
+                if not addr:
+                    raise OrchestratorError("host address is empty")
                 conn, connr = self._get_connection(addr)
             except OSError as e:
-                if error_ok:
-                    self.log.exception('failed to establish ssh connection')
-                    return [], [str("Can't communicate with remote host, possibly because python3 is not installed there")], 1
-                raise execnet.gateway_bootstrap.HostNotFound(str(e)) from e
+                self._reset_con(host)
+                msg = f"Can't communicate with remote host `{addr}`, possibly because python3 is not installed there: {str(e)}"
+                raise execnet.gateway_bootstrap.HostNotFound(msg)
 
+            yield (conn, connr)
+
+        except execnet.gateway_bootstrap.HostNotFound as e:
+            # this is a misleading exception as it seems to be thrown for
+            # any sort of connection failure, even those having nothing to
+            # do with "host not found" (e.g., ssh key permission denied).
+            self.offline_hosts.add(host)
+            self._reset_con(host)
+
+            user = self.ssh_user if self.mode == 'root' else 'cephadm'
+            msg = f'''Failed to connect to {host} ({addr}).
+Check that the host is reachable and accepts connections using the cephadm SSH key
+
+you may want to run:
+> ceph cephadm get-ssh-config > ssh_config
+> ceph config-key get mgr/cephadm/ssh_identity_key > key
+> ssh -F ssh_config -i key {user}@{host}'''
+            raise OrchestratorError(msg) from e
+        except Exception as ex:
+            self.log.exception(ex)
+            raise
+
+    def _get_container_image(self, daemon_name: str) -> str:
+        daemon_type = daemon_name.split('.', 1)[0]  # type: ignore
+        if daemon_type in CEPH_TYPES or \
+                daemon_type == 'nfs' or \
+                daemon_type == 'iscsi':
+            # get container image
+            ret, image, err = self.check_mon_command({
+                'prefix': 'config get',
+                'who': utils.name_to_config_section(daemon_name),
+                'key': 'container_image',
+            })
+            image = image.strip()  # type: ignore
+        elif daemon_type == 'prometheus':
+            image = self.container_image_prometheus
+        elif daemon_type == 'grafana':
+            image = self.container_image_grafana
+        elif daemon_type == 'alertmanager':
+            image = self.container_image_alertmanager
+        elif daemon_type == 'node-exporter':
+            image = self.container_image_node_exporter
+        else:
+            assert False, daemon_type
+
+        self.log.debug('%s container image %s' % (daemon_name, image))
+
+        return image
+
+    def _run_cephadm(self,
+                     host: str,
+                     entity: Union[CephadmNoImage, str],
+                     command: str,
+                     args: List[str],
+                     addr: Optional[str] = "",
+                     stdin: Optional[str] = "",
+                     no_fsid: Optional[bool] = False,
+                     error_ok: Optional[bool] = False,
+                     image: Optional[str] = "",
+                     env_vars: Optional[List[str]]= None,
+                     ) -> Tuple[List[str], List[str], int]:
+        """
+        Run cephadm on the remote host with the given command + args
+
+        :env_vars: in format -> [KEY=VALUE, ..]
+        """
+        with self._remote_connection(host, addr) as tpl:
+            conn, connr = tpl
             assert image or entity
-            if not image:
-                daemon_type = entity.split('.', 1)[0]  # type: ignore
-                if daemon_type in CEPH_TYPES or \
-                        daemon_type == 'nfs' or \
-                        daemon_type == 'iscsi':
-                    # get container image
-                    ret, image, err = self.check_mon_command({
-                        'prefix': 'config get',
-                        'who': utils.name_to_config_section(entity),
-                        'key': 'container_image',
-                    })
-                    image = image.strip()  # type: ignore
-                elif daemon_type == 'prometheus':
-                    image = self.container_image_prometheus
-                elif daemon_type == 'grafana':
-                    image = self.container_image_grafana
-                elif daemon_type == 'alertmanager':
-                    image = self.container_image_alertmanager
-                elif daemon_type == 'node-exporter':
-                    image = self.container_image_node_exporter
-
-            self.log.debug('%s container image %s' % (entity, image))
+            if not image and entity is not cephadmNoImage:
+                image = self._get_container_image(entity)
 
             final_args = []
 
@@ -996,9 +1136,9 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
                             host, remotes.PYTHONS, remotes.PATH))
                 try:
                     out, err, code = remoto.process.check(
-                        conn,
-                        [python, '-u'],
-                        stdin=script.encode('utf-8'))
+                    conn,
+                    [python, '-u'],
+                    stdin=script.encode('utf-8'))
                 except RuntimeError as e:
                     self._reset_con(host)
                     if error_ok:
@@ -1024,28 +1164,11 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             if err:
                 self.log.debug('err: %s' % '\n'.join(err))
             if code and not error_ok:
-                raise RuntimeError(
+                raise OrchestratorError(
                     'cephadm exited with an error code: %d, stderr:%s' % (
                         code, '\n'.join(err)))
             return out, err, code
 
-        except execnet.gateway_bootstrap.HostNotFound as e:
-            # this is a misleading exception as it seems to be thrown for
-            # any sort of connection failure, even those having nothing to
-            # do with "host not found" (e.g., ssh key permission denied).
-            self.offline_hosts.add(host)
-            user = 'root' if self.mode == 'root' else 'cephadm'
-            msg = f'''Failed to connect to {host} ({addr}).
-Check that the host is reachable and accepts connections using the cephadm SSH key
-
-you may want to run:
-> ceph cephadm get-ssh-config > ssh_config
-> ceph config-key get mgr/cephadm/ssh_identity_key > key
-> ssh -F ssh_config -i key {user}@{host}'''
-            raise OrchestratorError(msg) from e
-        except Exception as ex:
-            self.log.exception(ex)
-            raise
 
     def _get_hosts(self, label: Optional[str] = '', as_hostspec: bool = False) -> List:
         return list(self.inventory.filter_by_label(label=label, as_hostspec=as_hostspec))
@@ -1058,7 +1181,7 @@ you may want to run:
         :param host: host name
         """
         assert_valid_host(spec.hostname)
-        out, err, code = self._run_cephadm(spec.hostname, 'client', 'check-host',
+        out, err, code = self._run_cephadm(spec.hostname, cephadmNoImage, 'check-host',
                                            ['--expect-hostname', spec.hostname],
                                            addr=spec.addr,
                                            error_ok=True, no_fsid=True)
@@ -1093,7 +1216,7 @@ you may want to run:
         return "Removed host '{}'".format(host)
 
     @trivial_completion
-    def update_host_addr(self, host, addr):
+    def update_host_addr(self, host, addr) -> str:
         self.inventory.set_addr(host, addr)
         self._reset_con(host)
         self.event.set()  # refresh stray health check
@@ -1112,17 +1235,40 @@ you may want to run:
         return list(self.inventory.all_specs())
 
     @trivial_completion
-    def add_host_label(self, host, label):
+    def add_host_label(self, host, label) -> str:
         self.inventory.add_label(host, label)
         self.log.info('Added label %s to host %s' % (label, host))
         return 'Added label %s to host %s' % (label, host)
 
     @trivial_completion
-    def remove_host_label(self, host, label):
+    def remove_host_label(self, host, label) -> str:
         self.inventory.rm_label(host, label)
         self.log.info('Removed label %s to host %s' % (label, host))
         return 'Removed label %s from host %s' % (label, host)
 
+    @trivial_completion
+    def host_ok_to_stop(self, hostname: str):
+        if hostname not in self.cache.get_hosts():
+            raise OrchestratorError(f'Cannot find host "{hostname}"')
+
+        daemons = self.cache.get_daemons()
+        daemon_map = defaultdict(lambda: [])
+        for dd in daemons:
+            if dd.hostname == hostname:
+                daemon_map[dd.daemon_type].append(dd.daemon_id)
+
+        for daemon_type,daemon_ids in daemon_map.items():
+            r = self.cephadm_services[daemon_type].ok_to_stop(daemon_ids)
+            if r.retval:
+                self.log.error(f'It is NOT safe to stop host {hostname}')
+                raise orchestrator.OrchestratorError(
+                        r.stderr,
+                        errno=r.retval)
+
+        msg = f'It is presumed safe to stop host {hostname}'
+        self.log.info(msg)
+        return msg
+
     def update_osdspec_previews(self, search_host: str = ''):
         # Set global 'pending' flag for host
         self.cache.loading_osdspec_preview.add(search_host)
@@ -1141,7 +1287,75 @@ you may want to run:
         self.log.debug(f'Refreshed OSDSpec previews for host <{host}>')
         return True
 
-    def _refresh_host_daemons(self, host):
+    def _refresh_hosts_and_daemons(self) -> None:
+        bad_hosts = []
+        failures = []
+
+        @forall_hosts
+        def refresh(host):
+            if self.cache.host_needs_check(host):
+                r = self._check_host(host)
+                if r is not None:
+                    bad_hosts.append(r)
+            if self.cache.host_needs_daemon_refresh(host):
+                self.log.debug('refreshing %s daemons' % host)
+                r = self._refresh_host_daemons(host)
+                if r:
+                    failures.append(r)
+
+            if self.cache.host_needs_registry_login(host) and self.registry_url:
+                self.log.debug(f"Logging `{host}` into custom registry")
+                r = self._registry_login(host, self.registry_url, self.registry_username, self.registry_password)
+                if r:
+                    bad_hosts.append(r)
+
+            if self.cache.host_needs_device_refresh(host):
+                self.log.debug('refreshing %s devices' % host)
+                r = self._refresh_host_devices(host)
+                if r:
+                    failures.append(r)
+
+            if self.cache.host_needs_osdspec_preview_refresh(host):
+                self.log.debug(f"refreshing OSDSpec previews for {host}")
+                r = self._refresh_host_osdspec_previews(host)
+                if r:
+                    failures.append(r)
+
+            if self.cache.host_needs_new_etc_ceph_ceph_conf(host):
+                self.log.debug(f"deploying new /etc/ceph/ceph.conf on `{host}`")
+                r = self._deploy_etc_ceph_ceph_conf(host)
+                if r:
+                    bad_hosts.append(r)
+
+        refresh(self.cache.get_hosts())
+
+        health_changed = False
+        if 'CEPHADM_HOST_CHECK_FAILED' in self.health_checks:
+            del self.health_checks['CEPHADM_HOST_CHECK_FAILED']
+            health_changed = True
+        if bad_hosts:
+            self.health_checks['CEPHADM_HOST_CHECK_FAILED'] = {
+                'severity': 'warning',
+                'summary': '%d hosts fail cephadm check' % len(bad_hosts),
+                'count': len(bad_hosts),
+                'detail': bad_hosts,
+            }
+            health_changed = True
+        if failures:
+            self.health_checks['CEPHADM_REFRESH_FAILED'] = {
+                'severity': 'warning',
+                'summary': 'failed to probe daemons or devices',
+                'count': len(failures),
+                'detail': failures,
+            }
+            health_changed = True
+        elif 'CEPHADM_REFRESH_FAILED' in self.health_checks:
+            del self.health_checks['CEPHADM_REFRESH_FAILED']
+            health_changed = True
+        if health_changed:
+            self.set_health_checks(self.health_checks)
+
+    def _refresh_host_daemons(self, host) -> Optional[str]:
         try:
             out, err, code = self._run_cephadm(
                 host, 'mon', 'ls', [], no_fsid=True)
@@ -1194,7 +1408,7 @@ you may want to run:
         self.cache.save_host(host)
         return None
 
-    def _refresh_host_devices(self, host):
+    def _refresh_host_devices(self, host) -> Optional[str]:
         try:
             out, err, code = self._run_cephadm(
                 host, 'osd',
@@ -1226,15 +1440,51 @@ you may want to run:
         self.cache.save_host(host)
         return None
 
+    def _deploy_etc_ceph_ceph_conf(self, host: str) -> Optional[str]:
+        ret, config, err = self.check_mon_command({
+            "prefix": "config generate-minimal-conf",
+        })
+
+        try:
+            with self._remote_connection(host) as tpl:
+                conn, connr = tpl
+                out, err, code = remoto.process.check(
+                    conn,
+                    ['mkdir', '-p', '/etc/ceph'])
+                if code:
+                    return f'failed to create /etc/ceph on {host}: {err}'
+                out, err, code = remoto.process.check(
+                    conn,
+                    ['dd', 'of=/etc/ceph/ceph.conf'],
+                    stdin=config.encode('utf-8')
+                )
+                if code:
+                    return f'failed to create /etc/ceph/ceph.conf on {host}: {err}'
+                self.cache.update_last_etc_ceph_ceph_conf(host)
+                self.cache.save_host(host)
+        except OrchestratorError as e:
+            return f'failed to create /etc/ceph/ceph.conf on {host}: {str(e)}'
+        return None
+
+    def _invalidate_daemons_and_kick_serve(self, filter_host=None):
+        if filter_host:
+            self.cache.invalidate_host_daemons(filter_host)
+        else:
+            for h in self.cache.get_hosts():
+                # Also discover daemons deployed manually
+                self.cache.invalidate_host_daemons(h)
+
+        self._kick_serve_loop()
+
     @trivial_completion
-    def describe_service(self, service_type=None, service_name=None,
-                         refresh=False):
+    def describe_service(self, service_type: Optional[str] = None, service_name: Optional[str] = None,
+                         refresh: bool = False) -> List[orchestrator.ServiceDescription]:
         if refresh:
-            # ugly sync path, FIXME someday perhaps?
-            for host in self.inventory.keys():
-                self._refresh_host_daemons(host)
+            self._invalidate_daemons_and_kick_serve()
+            self.log.info('Kicked serve() loop to refresh all services')
+
         # <service_map>
-        sm = {}  # type: Dict[str, orchestrator.ServiceDescription]
+        sm: Dict[str, orchestrator.ServiceDescription] = {}
         osd_count = 0
         for h, dm in self.cache.get_daemons_with_volatile_status():
             for name, dd in dm.items():
@@ -1248,6 +1498,9 @@ you may want to run:
                     OSDs do not know the affinity to their spec out of the box.
                     """
                     n = f"osd.{dd.osdspec_affinity}"
+                    if not dd.osdspec_affinity:
+                        # If there is no osdspec_affinity, the spec should suffice for displaying
+                        continue
                 if n in self.spec_store.specs:
                     spec = self.spec_store.specs[n]
                 else:
@@ -1265,18 +1518,20 @@ you may want to run:
                         container_image_id=dd.container_image_id,
                         container_image_name=dd.container_image_name,
                         spec=spec,
+                        events=self.events.get_for_service(spec.service_name()),
                     )
                 if n in self.spec_store.specs:
                     if dd.daemon_type == 'osd':
                         """
                         The osd count can't be determined by the Placement spec.
-                        It's rather pointless to show a actual/expected representation 
+                        Showing an actual/expected representation cannot be determined
                         here. So we're setting running = size for now.
                         """
                         osd_count += 1
                         sm[n].size = osd_count
                     else:
-                        sm[n].size = spec.placement.get_host_selection_size(self._get_hosts)
+                        sm[n].size = spec.placement.get_host_selection_size(
+                            self.inventory.all_specs())
 
                     sm[n].created = self.spec_store.spec_created[n]
                     if service_type == 'nfs':
@@ -1301,8 +1556,9 @@ you may want to run:
                 continue
             sm[n] = orchestrator.ServiceDescription(
                 spec=spec,
-                size=spec.placement.get_host_selection_size(self._get_hosts),
+                size=spec.placement.get_host_selection_size(self.inventory.all_specs()),
                 running=0,
+                events=self.events.get_for_service(spec.service_name()),
             )
             if service_type == 'nfs':
                 spec = cast(NFSServiceSpec, spec)
@@ -1310,15 +1566,16 @@ you may want to run:
         return list(sm.values())
 
     @trivial_completion
-    def list_daemons(self, service_name=None, daemon_type=None, daemon_id=None,
-                     host=None, refresh=False):
+    def list_daemons(self,
+                     service_name: Optional[str] = None,
+                     daemon_type: Optional[str] = None,
+                     daemon_id: Optional[str] = None,
+                     host: Optional[str] = None,
+                     refresh: bool = False) -> List[orchestrator.DaemonDescription]:
         if refresh:
-            # ugly sync path, FIXME someday perhaps?
-            if host:
-                self._refresh_host_daemons(host)
-            else:
-                for hostname in self.inventory.keys():
-                    self._refresh_host_daemons(hostname)
+            self._invalidate_daemons_and_kick_serve(host)
+            self.log.info('Kicked serve() loop to refresh all daemons')
+
         result = []
         for h, dm in self.cache.get_daemons_with_volatile_status():
             if host and h != host:
@@ -1334,7 +1591,7 @@ you may want to run:
         return result
 
     @trivial_completion
-    def service_action(self, action, service_name):
+    def service_action(self, action, service_name) -> List[str]:
         args = []
         for host, dm in self.cache.daemons.items():
             for name, d in dm.items():
@@ -1345,47 +1602,67 @@ you may want to run:
         return self._daemon_actions(args)
 
     @forall_hosts
-    def _daemon_actions(self, daemon_type, daemon_id, host, action):
-        return self._daemon_action(daemon_type, daemon_id, host, action)
+    def _daemon_actions(self, daemon_type, daemon_id, host, action) -> str:
+        with set_exception_subject('daemon', DaemonDescription(
+            daemon_type=daemon_type,
+            daemon_id=daemon_id
+        ).name()):
+            return self._daemon_action(daemon_type, daemon_id, host, action)
+
+    def _daemon_action(self, daemon_type, daemon_id, host, action, image=None):
+        daemon_spec: CephadmDaemonSpec = CephadmDaemonSpec(
+            host=host,
+            daemon_id=daemon_id,
+            daemon_type=daemon_type,
+        )
+
+        if image is not None:
+            if action != 'redeploy':
+                raise OrchestratorError(
+                    f'Cannot execute {action} with new image. `action` needs to be `redeploy`')
+            if daemon_type not in CEPH_TYPES:
+                raise OrchestratorError(
+                    f'Cannot redeploy {daemon_type}.{daemon_id} with a new image: Supported '
+                    f'types are: {", ".join(CEPH_TYPES)}')
+
+            self.check_mon_command({
+                'prefix': 'config set',
+                'name': 'container_image',
+                'value': image,
+                'who': utils.name_to_config_section(daemon_type + '.' + daemon_id),
+            })
 
-    def _daemon_action(self, daemon_type, daemon_id, host, action):
         if action == 'redeploy':
             # stop, recreate the container+unit, then restart
-            return self._create_daemon(daemon_type, daemon_id, host)
+            return self._create_daemon(daemon_spec)
         elif action == 'reconfig':
-            return self._create_daemon(daemon_type, daemon_id, host,
-                                       reconfig=True)
+            return self._create_daemon(daemon_spec, reconfig=True)
 
         actions = {
             'start': ['reset-failed', 'start'],
             'stop': ['stop'],
             'restart': ['reset-failed', 'restart'],
         }
-        name = '%s.%s' % (daemon_type, daemon_id)
+        name = daemon_spec.name()
         for a in actions[action]:
-            out, err, code = self._run_cephadm(
-                host, name, 'unit',
-                ['--name', name, a],
-                error_ok=True)
-        self.cache.invalidate_host_daemons(host)
-        return "{} {} from host '{}'".format(action, name, host)
+            try:
+                out, err, code = self._run_cephadm(
+                    host, name, 'unit',
+                    ['--name', name, a])
+            except Exception:
+                self.log.exception(f'`{host}: cephadm unit {name} {a}` failed')
+        self.cache.invalidate_host_daemons(daemon_spec.host)
+        msg = "{} {} from host '{}'".format(action, name, daemon_spec.host)
+        self.events.for_daemon(name, 'INFO', msg)
+        return msg
 
     @trivial_completion
-    def daemon_action(self, action, daemon_type, daemon_id):
-        args = []
-        for host, dm in self.cache.daemons.items():
-            for name, d in dm.items():
-                if d.daemon_type == daemon_type and d.daemon_id == daemon_id:
-                    args.append((d.daemon_type, d.daemon_id,
-                                 d.hostname, action))
-        if not args:
-            raise orchestrator.OrchestratorError(
-                'Unable to find %s.%s daemon(s)' % (
-                    daemon_type, daemon_id))
-        self.log.info('%s daemons %s' % (
-            action.capitalize(),
-            ','.join(['%s.%s' % (a[0], a[1]) for a in args])))
-        return self._daemon_actions(args)
+    def daemon_action(self, action: str, daemon_name: str, image: Optional[str]=None) -> str:
+        d = self.cache.get_daemon(daemon_name)
+
+        self.log.info(f'{action} daemon {daemon_name}')
+        return self._daemon_action(d.daemon_type, d.daemon_id,
+                                 d.hostname, action, image=image)
 
     @trivial_completion
     def remove_daemons(self, names):
@@ -1401,19 +1678,19 @@ you may want to run:
         return self._remove_daemons(args)
 
     @trivial_completion
-    def remove_service(self, service_name):
+    def remove_service(self, service_name) -> str:
         self.log.info('Remove service %s' % service_name)
         self._trigger_preview_refresh(service_name=service_name)
         found = self.spec_store.rm(service_name)
         if found:
             self._kick_serve_loop()
-            return ['Removed service %s' % service_name]
+            return 'Removed service %s' % service_name
         else:
             # must be idempotent: still a success.
-            return [f'Failed to remove service. <{service_name}> was not found.']
+            return f'Failed to remove service. <{service_name}> was not found.'
 
     @trivial_completion
-    def get_inventory(self, host_filter=None, refresh=False):
+    def get_inventory(self, host_filter: Optional[orchestrator.InventoryFilter] = None, refresh=False) -> List[orchestrator.InventoryHost]:
         """
         Return the storage inventory of hosts matching the given filter.
 
@@ -1423,24 +1700,26 @@ you may want to run:
           - add filtering by label
         """
         if refresh:
-            # ugly sync path, FIXME someday perhaps?
-            if host_filter:
-                for host in host_filter.hosts:
-                    self._refresh_host_devices(host)
+            if host_filter and host_filter.hosts:
+                for h in host_filter.hosts:
+                    self.cache.invalidate_host_devices(h)
             else:
-                for host in self.inventory.keys():
-                    self._refresh_host_devices(host)
+                for h in self.cache.get_hosts():
+                    self.cache.invalidate_host_devices(h)
+
+            self.event.set()
+            self.log.info('Kicked serve() loop to refresh devices')
 
         result = []
         for host, dls in self.cache.devices.items():
-            if host_filter and host not in host_filter.hosts:
+            if host_filter and host_filter.hosts and host not in host_filter.hosts:
                 continue
             result.append(orchestrator.InventoryHost(host,
                                                      inventory.Devices(dls)))
         return result
 
     @trivial_completion
-    def zap_device(self, host, path):
+    def zap_device(self, host, path) -> str:
         self.log.info('Zap device %s:%s' % (host, path))
         out, err, code = self._run_cephadm(
             host, 'osd', 'ceph-volume',
@@ -1452,7 +1731,7 @@ you may want to run:
         return '\n'.join(out + err)
 
     @trivial_completion
-    def blink_device_light(self, ident_fault, on, locs):
+    def blink_device_light(self, ident_fault, on, locs) -> List[str]:
         @forall_hosts
         def blink(host, dev, path):
             cmd = [
@@ -1466,7 +1745,7 @@ you may want to run:
                 host, 'osd', 'shell', ['--'] + cmd,
                 error_ok=True)
             if code:
-                raise RuntimeError(
+                raise OrchestratorError(
                     'Unable to affect %s light for %s:%s. Command: %s' % (
                         ident_fault, host, dev, ' '.join(cmd)))
             self.log.info('Set %s light for %s:%s %s' % (
@@ -1491,58 +1770,50 @@ you may want to run:
                 r[str(osd_id)] = o.get('uuid', '')
         return r
 
-    def resolve_hosts_for_osdspecs(self,
-                                   specs: Optional[List[DriveGroupSpec]] = None,
-                                   service_name: Optional[str] = None
-                                   ) -> List[str]:
-        osdspecs = []
-        if service_name:
-            self.log.debug(f"Looking for OSDSpec with service_name: {service_name}")
-            osdspecs = self.spec_store.find(service_name=service_name)
-            self.log.debug(f"Found OSDSpecs: {osdspecs}")
-        if specs:
-            osdspecs = [cast(DriveGroupSpec, spec) for spec in specs]
-        if not service_name and not specs:
-            # if neither parameters are fulfilled, search for all available osdspecs
-            osdspecs = self.spec_store.find(service_name='osd')
-            self.log.debug(f"Found OSDSpecs: {osdspecs}")
-        if not osdspecs:
-            self.log.debug("No OSDSpecs found")
-            return []
-        return sum([spec.placement.filter_matching_hosts(self._get_hosts) for spec in osdspecs], [])
-
-    def resolve_osdspecs_for_host(self, host):
-        matching_specs = []
-        self.log.debug(f"Finding OSDSpecs for host: <{host}>")
-        for spec in self.spec_store.find('osd'):
-            if host in spec.placement.filter_matching_hosts(self._get_hosts):
-                self.log.debug(f"Found OSDSpecs for host: <{host}> -> <{spec}>")
-                matching_specs.append(spec)
-        return matching_specs
-
     def _trigger_preview_refresh(self,
                                  specs: Optional[List[DriveGroupSpec]] = None,
-                                 service_name: Optional[str] = None):
-        refresh_hosts = self.resolve_hosts_for_osdspecs(specs=specs, service_name=service_name)
+                                 service_name: Optional[str] = None,
+                                 ) -> None:
+        # Only trigger a refresh when a spec has changed
+        trigger_specs = []
+        if specs:
+            for spec in specs:
+                preview_spec = self.spec_store.spec_preview.get(spec.service_name())
+                # the to-be-preview spec != the actual spec, this means we need to
+                # trigger a refresh, if the spec has been removed (==None) we need to
+                # refresh as well.
+                if not preview_spec or spec != preview_spec:
+                    trigger_specs.append(spec)
+        if service_name:
+            trigger_specs = [cast(DriveGroupSpec, self.spec_store.spec_preview.get(service_name))]
+        if not any(trigger_specs):
+            return None
+
+        refresh_hosts = self.osd_service.resolve_hosts_for_osdspecs(specs=trigger_specs)
         for host in refresh_hosts:
             self.log.info(f"Marking host: {host} for OSDSpec preview refresh.")
             self.cache.osdspec_previews_refresh_queue.append(host)
 
     @trivial_completion
-    def apply_drivegroups(self, specs: List[DriveGroupSpec]):
-        self._trigger_preview_refresh(specs=specs)
+    def apply_drivegroups(self, specs: List[DriveGroupSpec]) -> List[str]:
+        """
+        Deprecated. Please use `apply()` instead.
+
+        Keeping this around to be compapatible to mgr/dashboard
+        """
         return [self._apply(spec) for spec in specs]
 
     @trivial_completion
-    def create_osds(self, drive_group: DriveGroupSpec):
-        return self.osd_service.create(drive_group)
+    def create_osds(self, drive_group: DriveGroupSpec) -> str:
+        return self.osd_service.create_from_spec(drive_group)
 
-    @trivial_completion
-    def preview_osdspecs(self,
-                         osdspec_name: Optional[str] = None,
-                         osdspecs: Optional[List[DriveGroupSpec]] = None
-                         ):
-        matching_hosts = self.resolve_hosts_for_osdspecs(specs=osdspecs, service_name=osdspec_name)
+    def _preview_osdspecs(self,
+                          osdspecs: Optional[List[DriveGroupSpec]] = None
+                          ):
+        if not osdspecs:
+            return {'n/a': [{'error': True,
+                             'message': 'No OSDSpec or matching hosts found.'}]}
+        matching_hosts = self.osd_service.resolve_hosts_for_osdspecs(specs=osdspecs)
         if not matching_hosts:
             return {'n/a': [{'error': True,
                              'message': 'No OSDSpec or matching hosts found.'}]}
@@ -1552,9 +1823,18 @@ you may want to run:
             # Report 'pending' when any of the matching hosts is still loading previews (flag is True)
             return {'n/a': [{'error': True,
                              'message': 'Preview data is being generated.. '
-                                        'Please try again in a bit.'}]}
-        # drop all keys that are not in search_hosts and return preview struct
-        return {k: v for (k, v) in self.cache.osdspec_previews.items() if k in matching_hosts}
+                                        'Please re-run this command in a bit.'}]}
+        # drop all keys that are not in search_hosts and only select reports that match the requested osdspecs
+        previews_for_specs = {}
+        for host, raw_reports in self.cache.osdspec_previews.items():
+            if host not in matching_hosts:
+                continue
+            osd_reports = []
+            for osd_report in raw_reports:
+                if osd_report.get('osdspec') in [x.service_id for x in osdspecs]:
+                    osd_reports.append(osd_report)
+            previews_for_specs.update({host: osd_reports})
+        return previews_for_specs
 
     def _calc_daemon_deps(self, daemon_type, daemon_id):
         need = {
@@ -1568,13 +1848,13 @@ you may want to run:
                 deps.append(dd.name())
         return sorted(deps)
 
-    def _get_config_and_keyring(self, daemon_type, daemon_id,
+    def _get_config_and_keyring(self, daemon_type, daemon_id, host,
                                 keyring=None,
                                 extra_ceph_config=None):
-        # type: (str, str, Optional[str], Optional[str]) -> Dict[str, Any]
+        # type: (str, str, str, Optional[str], Optional[str]) -> Dict[str, Any]
         # keyring
         if not keyring:
-            ename = utils.name_to_auth_entity(daemon_type + '.' + daemon_id)
+            ename = utils.name_to_auth_entity(daemon_type, daemon_id, host=host)
             ret, keyring, err = self.check_mon_command({
                 'prefix': 'auth get',
                 'entity': ename,
@@ -1593,91 +1873,78 @@ you may want to run:
         }
 
     def _create_daemon(self,
-                       daemon_type: str,
-                       daemon_id: str,
-                       host: str,
-                       keyring: Optional[str] = None,
-                       extra_args: Optional[List[str]] = None,
-                       extra_config: Optional[Dict[str, Any]] = None,
+                       daemon_spec: CephadmDaemonSpec,
                        reconfig=False,
                        osd_uuid_map: Optional[Dict[str, Any]] = None,
                        redeploy=False,
                        ) -> str:
 
-        if not extra_args:
-            extra_args = []
-        if not extra_config:
-            extra_config = {}
-        name = '%s.%s' % (daemon_type, daemon_id)
-
-        start_time = datetime.datetime.utcnow()
-        deps = []  # type: List[str]
-        cephadm_config = {}  # type: Dict[str, Any]
-        if daemon_type == 'prometheus':
-            cephadm_config, deps = self.prometheus_service.generate_config()
-            extra_args.extend(['--config-json', '-'])
-        elif daemon_type == 'grafana':
-            cephadm_config, deps = self.grafana_service.generate_config()
-            extra_args.extend(['--config-json', '-'])
-        elif daemon_type == 'nfs':
-            cephadm_config, deps = \
-                    self.nfs_service._generate_nfs_config(daemon_type, daemon_id, host)
-            extra_args.extend(['--config-json', '-'])
-        elif daemon_type == 'alertmanager':
-            cephadm_config, deps = self.alertmanager_service.generate_config()
-            extra_args.extend(['--config-json', '-'])
-        elif daemon_type == 'node-exporter':
-            cephadm_config, deps = self.node_exporter_service.generate_config()
-            extra_args.extend(['--config-json', '-'])
-        else:
-            # Ceph.daemons (mon, mgr, mds, osd, etc)
-            cephadm_config = self._get_config_and_keyring(
-                    daemon_type, daemon_id,
-                    keyring=keyring,
-                    extra_ceph_config=extra_config.pop('config', ''))
-            if extra_config:
-                cephadm_config.update({'files': extra_config})
-            extra_args.extend(['--config-json', '-'])
+
+        with set_exception_subject('service', orchestrator.DaemonDescription(
+                daemon_type=daemon_spec.daemon_type,
+                daemon_id=daemon_spec.daemon_id,
+                hostname=daemon_spec.host,
+        ).service_id(), overwrite=True):
+
+            start_time = datetime.datetime.utcnow()
+            cephadm_config, deps = self.cephadm_services[daemon_spec.daemon_type].generate_config(daemon_spec)
+
+            daemon_spec.extra_args.extend(['--config-json', '-'])
+
+            # TCP port to open in the host firewall
+            if daemon_spec.ports:
+                daemon_spec.extra_args.extend(['--tcp-ports', ' '.join(map(str,daemon_spec.ports))])
 
             # osd deployments needs an --osd-uuid arg
-            if daemon_type == 'osd':
+            if daemon_spec.daemon_type == 'osd':
                 if not osd_uuid_map:
                     osd_uuid_map = self.get_osd_uuid_map()
-                osd_uuid = osd_uuid_map.get(daemon_id)
+                osd_uuid = osd_uuid_map.get(daemon_spec.daemon_id)
                 if not osd_uuid:
-                    raise OrchestratorError('osd.%s not in osdmap' % daemon_id)
-                extra_args.extend(['--osd-fsid', osd_uuid])
+                    raise OrchestratorError('osd.%s not in osdmap' % daemon_spec.daemon_id)
+                daemon_spec.extra_args.extend(['--osd-fsid', osd_uuid])
 
-        if reconfig:
-            extra_args.append('--reconfig')
-        if self.allow_ptrace:
-            extra_args.append('--allow-ptrace')
+            if reconfig:
+                daemon_spec.extra_args.append('--reconfig')
+            if self.allow_ptrace:
+                daemon_spec.extra_args.append('--allow-ptrace')
 
-        self.log.info('%s daemon %s on %s' % (
-            'Reconfiguring' if reconfig else 'Deploying',
-            name, host))
+            if self.cache.host_needs_registry_login(daemon_spec.host) and self.registry_url:
+                self._registry_login(daemon_spec.host, self.registry_url, self.registry_username, self.registry_password)
 
-        out, err, code = self._run_cephadm(
-            host, name, 'deploy',
-            [
-                '--name', name,
-            ] + extra_args,
-            stdin=json.dumps(cephadm_config))
-        if not code and host in self.cache.daemons:
-            # prime cached service state with what we (should have)
-            # just created
-            sd = orchestrator.DaemonDescription()
-            sd.daemon_type = daemon_type
-            sd.daemon_id = daemon_id
-            sd.hostname = host
-            sd.status = 1
-            sd.status_desc = 'starting'
-            self.cache.add_daemon(host, sd)
-        self.cache.invalidate_host_daemons(host)
-        self.cache.update_daemon_config_deps(host, name, deps, start_time)
-        self.cache.save_host(host)
-        return "{} {} on host '{}'".format(
-            'Reconfigured' if reconfig else 'Deployed', name, host)
+            self.log.info('%s daemon %s on %s' % (
+                'Reconfiguring' if reconfig else 'Deploying',
+                daemon_spec.name(), daemon_spec.host))
+
+            out, err, code = self._run_cephadm(
+                daemon_spec.host, daemon_spec.name(), 'deploy',
+                [
+                    '--name', daemon_spec.name(),
+                ] + daemon_spec.extra_args,
+                stdin=json.dumps(cephadm_config))
+            if not code and daemon_spec.host in self.cache.daemons:
+                # prime cached service state with what we (should have)
+                # just created
+                sd = orchestrator.DaemonDescription()
+                sd.daemon_type = daemon_spec.daemon_type
+                sd.daemon_id = daemon_spec.daemon_id
+                sd.hostname = daemon_spec.host
+                sd.status = 1
+                sd.status_desc = 'starting'
+                self.cache.add_daemon(daemon_spec.host, sd)
+                if daemon_spec.daemon_type in ['grafana', 'iscsi', 'prometheus', 'alertmanager', 'nfs']:
+                    self.requires_post_actions.add(daemon_spec.daemon_type)
+            self.cache.invalidate_host_daemons(daemon_spec.host)
+            self.cache.update_daemon_config_deps(daemon_spec.host, daemon_spec.name(), deps, start_time)
+            self.cache.save_host(daemon_spec.host)
+            msg = "{} {} on host '{}'".format(
+                'Reconfigured' if reconfig else 'Deployed', daemon_spec.name(), daemon_spec.host)
+            if not code:
+                self.events.for_daemon(daemon_spec.name(), OrchestratorEvent.INFO, msg)
+            else:
+                what = 'reconfigure' if reconfig else 'deploy'
+                self.events.for_daemon(daemon_spec.name(), OrchestratorEvent.ERROR, f'Failed to {what}: {err}')
+            return msg
 
     @forall_hosts
     def _remove_daemons(self, name, host) -> str:
@@ -1688,55 +1955,34 @@ you may want to run:
         Remove a daemon
         """
         (daemon_type, daemon_id) = name.split('.', 1)
-        if daemon_type == 'mon':
-            self._check_safe_to_destroy_mon(daemon_id)
 
-            # remove mon from quorum before we destroy the daemon
-            self.log.info('Removing monitor %s from monmap...' % name)
-            ret, out, err = self.check_mon_command({
-                'prefix': 'mon rm',
-                'name': daemon_id,
-            })
+        with set_exception_subject('service', orchestrator.DaemonDescription(
+                daemon_type=daemon_type,
+                daemon_id=daemon_id,
+                hostname=host,
+        ).service_id(), overwrite=True):
 
-        args = ['--name', name, '--force']
-        self.log.info('Removing daemon %s from %s' % (name, host))
-        out, err, code = self._run_cephadm(
-            host, name, 'rm-daemon', args)
-        if not code:
-            # remove item from cache
-            self.cache.rm_daemon(host, name)
-        self.cache.invalidate_host_daemons(host)
-        return "Removed {} from host '{}'".format(name, host)
-
-    def _create_fn(self, service_type: str) -> Callable[..., str]:
-        try:
-            d: Dict[str, function] = {
-                'mon': self.mon_service.create,
-                'mgr': self.mgr_service.create,
-                'osd': self.osd_service.create,
-                'mds': self.mds_service.create,
-                'rgw': self.rgw_service.create,
-                'rbd-mirror': self.rbd_mirror_service.create,
-                'nfs': self.nfs_service.create,
-                'grafana': self.grafana_service.create,
-                'alertmanager': self.alertmanager_service.create,
-                'prometheus': self.prometheus_service.create,
-                'node-exporter': self.node_exporter_service.create,
-                'crash': self.crash_service.create,
-                'iscsi': self.iscsi_service.create,
-            }
-            return d[service_type]  # type: ignore
-        except KeyError:
-            self.log.exception(f'unknown service type {service_type}')
-            raise OrchestratorError(f'unknown service type {service_type}') from e
+
+            self.cephadm_services[daemon_type].pre_remove(daemon_id)
+
+            args = ['--name', name, '--force']
+            self.log.info('Removing daemon %s from %s' % (name, host))
+            out, err, code = self._run_cephadm(
+                host, name, 'rm-daemon', args)
+            if not code:
+                # remove item from cache
+                self.cache.rm_daemon(host, name)
+            self.cache.invalidate_host_daemons(host)
+            return "Removed {} from host '{}'".format(name, host)
 
     def _config_fn(self, service_type) -> Optional[Callable[[ServiceSpec], None]]:
-        return {
+        fn = {
             'mds': self.mds_service.config,
             'rgw': self.rgw_service.config,
             'nfs': self.nfs_service.config,
             'iscsi': self.iscsi_service.config,
         }.get(service_type)
+        return cast(Callable[[ServiceSpec], None], fn)
 
     def _apply_service(self, spec: ServiceSpec) -> bool:
         """
@@ -1746,15 +1992,17 @@ you may want to run:
         daemon_type = spec.service_type
         service_name = spec.service_name()
         if spec.unmanaged:
-            self.log.debug('Skipping unmanaged service %s spec' % service_name)
+            self.log.debug('Skipping unmanaged service %s' % service_name)
+            return False
+        if spec.preview_only:
+            self.log.debug('Skipping preview_only service %s' % service_name)
             return False
         self.log.debug('Applying service %s spec' % service_name)
 
-        create_func = self._create_fn(daemon_type)
         config_func = self._config_fn(daemon_type)
 
         if daemon_type == 'osd':
-            create_func(spec)
+            self.osd_service.create_from_spec(cast(DriveGroupSpec, spec))
             # TODO: return True would result in a busy loop
             return False
 
@@ -1779,12 +2027,15 @@ you may want to run:
             # host
             return len(self.cache.networks[host].get(public_network, [])) > 0
 
-        hosts = HostAssignment(
+        ha = HostAssignment(
             spec=spec,
             get_hosts_func=self._get_hosts,
             get_daemons_func=self.cache.get_daemons_by_service,
             filter_new_host=matches_network if daemon_type == 'mon' else None,
-        ).place()
+        )
+
+        hosts: List[HostPlacementSpec] = ha.place()
+        self.log.debug('Usable hosts: %s' % hosts)
 
         r = False
 
@@ -1795,42 +2046,55 @@ you may want to run:
 
         # add any?
         did_config = False
-        hosts_with_daemons = {d.hostname for d in daemons}
-        self.log.debug('hosts with daemons: %s' % hosts_with_daemons)
-        for host, network, name in hosts:
-            if host not in hosts_with_daemons:
-                if not did_config and config_func:
-                    config_func(spec)
-                    did_config = True
-                daemon_id = self.get_unique_name(daemon_type, host, daemons,
-                                                 prefix=spec.service_id,
-                                                 forcename=name)
-                self.log.debug('Placing %s.%s on host %s' % (
-                    daemon_type, daemon_id, host))
-                if daemon_type == 'mon':
-                    create_func(daemon_id, host, network)  # type: ignore
-                elif daemon_type in ['nfs', 'iscsi']:
-                    create_func(daemon_id, host, spec)  # type: ignore
+
+        add_daemon_hosts: Set[HostPlacementSpec] = ha.add_daemon_hosts(hosts)
+        self.log.debug('Hosts that will receive new daemons: %s' % add_daemon_hosts)
+
+        remove_daemon_hosts: Set[orchestrator.DaemonDescription] = ha.remove_daemon_hosts(hosts)
+        self.log.debug('Hosts that will loose daemons: %s' % remove_daemon_hosts)
+
+        for host, network, name in add_daemon_hosts:
+            daemon_id = self.get_unique_name(daemon_type, host, daemons,
+                                             prefix=spec.service_id,
+                                             forcename=name)
+
+            if not did_config and config_func:
+                if daemon_type == 'rgw':
+                    rgw_config_func = cast(Callable[[RGWSpec, str], None], config_func)
+                    rgw_config_func(cast(RGWSpec, spec), daemon_id)
                 else:
-                    create_func(daemon_id, host)  # type: ignore
+                    config_func(spec)
+                did_config = True
 
-                # add to daemon list so next name(s) will also be unique
-                sd = orchestrator.DaemonDescription(
-                    hostname=host,
-                    daemon_type=daemon_type,
-                    daemon_id=daemon_id,
-                )
-                daemons.append(sd)
-                r = True
+            daemon_spec = self.cephadm_services[daemon_type].make_daemon_spec(host, daemon_id, network, spec)
+            self.log.debug('Placing %s.%s on host %s' % (
+                daemon_type, daemon_id, host))
+
+            self.cephadm_services[daemon_type].create(daemon_spec)
+
+            # add to daemon list so next name(s) will also be unique
+            sd = orchestrator.DaemonDescription(
+                hostname=host,
+                daemon_type=daemon_type,
+                daemon_id=daemon_id,
+            )
+            daemons.append(sd)
+            r = True
 
         # remove any?
-        target_hosts = [h.hostname for h in hosts]
-        for d in daemons:
-            if d.hostname not in target_hosts:
-                # NOTE: we are passing the 'force' flag here, which means
-                # we can delete a mon instances data.
-                self._remove_daemon(d.name(), d.hostname)
-                r = True
+        def _ok_to_stop(remove_daemon_hosts: Set[orchestrator.DaemonDescription]) -> bool:
+            daemon_ids = [d.daemon_id for d in remove_daemon_hosts]
+            r = self.cephadm_services[daemon_type].ok_to_stop(daemon_ids)
+            return not r.retval
+
+        while remove_daemon_hosts and not _ok_to_stop(remove_daemon_hosts):
+            # let's find a subset that is ok-to-stop
+            remove_daemon_hosts.pop()
+        for d in remove_daemon_hosts:
+            # NOTE: we are passing the 'force' flag here, which means
+            # we can delete a mon instances data.
+            self._remove_daemon(d.name(), d.hostname)
+            r = True
 
         return r
 
@@ -1846,6 +2110,8 @@ you may want to run:
             except Exception as e:
                 self.log.exception('Failed to apply %s spec %s: %s' % (
                     spec.service_name(), spec, e))
+                self.events.for_service(spec, 'ERROR', 'Failed to apply: ' + str(e))
+
         return r
 
     def _check_pool_exists(self, pool, service_name):
@@ -1855,15 +2121,9 @@ you may want to run:
                                     f'service {service_name}')
 
     def _check_daemons(self):
-        # get monmap mtime so we can refresh configs when mons change
-        monmap = self.get('mon_map')
-        last_monmap: Optional[datetime.datetime] = datetime.datetime.strptime(
-            monmap['modified'], CEPH_DATEFMT)
-        if last_monmap and last_monmap > datetime.datetime.utcnow():
-            last_monmap = None   # just in case clocks are skewed
 
         daemons = self.cache.get_daemons()
-        daemons_post = defaultdict(list)
+        daemons_post: Dict[str, List[orchestrator.DaemonDescription]] = defaultdict(list)
         for dd in daemons:
             # orphan?
             spec = self.spec_store.specs.get(dd.service_name(), None)
@@ -1878,8 +2138,14 @@ you may want to run:
                 continue
 
             # These daemon types require additional configs after creation
-            if dd.daemon_type in ['grafana', 'iscsi', 'prometheus', 'alertmanager']:
+            if dd.daemon_type in ['grafana', 'iscsi', 'prometheus', 'alertmanager', 'nfs']:
                 daemons_post[dd.daemon_type].append(dd)
+            
+            if self.cephadm_services[dd.daemon_type].get_active_daemon(
+               self.cache.get_daemons_by_service(dd.service_name())).daemon_id == dd.daemon_id:
+                dd.is_active = True
+            else:
+                dd.is_active = False
 
             deps = self._calc_daemon_deps(dd.daemon_type, dd.daemon_id)
             last_deps, last_config = self.cache.get_daemon_last_config_deps(
@@ -1897,18 +2163,35 @@ you may want to run:
                 self.log.info('Reconfiguring %s (dependencies changed)...' % (
                     dd.name()))
                 reconfig = True
-            elif last_monmap and \
-               last_monmap > last_config and \
+            elif self.last_monmap and \
+                    self.last_monmap > last_config and \
                dd.daemon_type in CEPH_TYPES:
                 self.log.info('Reconfiguring %s (monmap changed)...' % dd.name())
                 reconfig = True
             if reconfig:
-                self._create_daemon(dd.daemon_type, dd.daemon_id,
-                                    dd.hostname, reconfig=True)
+                try:
+                    self._create_daemon(
+                        CephadmDaemonSpec(
+                            host=dd.hostname,
+                            daemon_id=dd.daemon_id,
+                            daemon_type=dd.daemon_type),
+                        reconfig=True)
+                except OrchestratorError as e:
+                    self.events.from_orch_error(e)
+                    if dd.daemon_type in daemons_post:
+                        del daemons_post[dd.daemon_type]
+                    # continue...
+                except Exception as e:
+                    self.events.for_daemon_from_exception(dd.name(), e)
+                    if dd.daemon_type in daemons_post:
+                        del daemons_post[dd.daemon_type]
+                    # continue...
 
         # do daemon post actions
         for daemon_type, daemon_descs in daemons_post.items():
-            self._get_cephadm_service(daemon_type).daemon_check_post(daemon_descs)
+            if daemon_type in self.requires_post_actions:
+                self.requires_post_actions.remove(daemon_type)
+                self._get_cephadm_service(daemon_type).daemon_check_post(daemon_descs)
 
     def _add_daemon(self, daemon_type, spec,
                     create_func: Callable[..., T], config_func=None) -> List[T]:
@@ -1932,22 +2215,25 @@ you may want to run:
             raise OrchestratorError('too few hosts: want %d, have %s' % (
                 count, hosts))
 
-        if config_func:
-            config_func(spec)
+        did_config = False
 
-        args = []  # type: List[tuple]
+        args = []  # type: List[CephadmDaemonSpec]
         for host, network, name in hosts:
             daemon_id = self.get_unique_name(daemon_type, host, daemons,
                                              prefix=spec.service_id,
                                              forcename=name)
+
+            if not did_config and config_func:
+                if daemon_type == 'rgw':
+                    config_func(spec, daemon_id)
+                else:
+                    config_func(spec)
+                did_config = True
+
+            daemon_spec = self.cephadm_services[daemon_type].make_daemon_spec(host, daemon_id, network, spec)
             self.log.debug('Placing %s.%s on host %s' % (
                 daemon_type, daemon_id, host))
-            if daemon_type == 'mon':
-                args.append((daemon_id, host, network))  # type: ignore
-            elif daemon_type in ['nfs', 'iscsi']:
-                args.append((daemon_id, host, spec))  # type: ignore
-            else:
-                args.append((daemon_id, host))  # type: ignore
+            args.append(daemon_spec)
 
             # add to daemon list so next name(s) will also be unique
             sd = orchestrator.DaemonDescription(
@@ -1964,7 +2250,7 @@ you may want to run:
         return create_func_map(args)
 
     @trivial_completion
-    def apply_mon(self, spec):
+    def apply_mon(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
@@ -1978,11 +2264,54 @@ you may want to run:
         return self._add_daemon('mgr', spec, self.mgr_service.create)
 
     def _apply(self, spec: GenericSpec) -> str:
+        self.migration.verify_no_migration()
+
         if spec.service_type == 'host':
             return self._add_host(cast(HostSpec, spec))
 
+        if spec.service_type == 'osd':
+            # _trigger preview refresh needs to be smart and
+            # should only refresh if a change has been detected
+            self._trigger_preview_refresh(specs=[cast(DriveGroupSpec, spec)])
+
         return self._apply_service_spec(cast(ServiceSpec, spec))
 
+    def _plan(self, spec: ServiceSpec):
+        if spec.service_type == 'osd':
+            return {'service_name': spec.service_name(),
+                    'service_type': spec.service_type,
+                    'data': self._preview_osdspecs(osdspecs=[cast(DriveGroupSpec, spec)])}
+
+        ha = HostAssignment(
+            spec=spec,
+            get_hosts_func=self._get_hosts,
+            get_daemons_func=self.cache.get_daemons_by_service,
+        )
+        ha.validate()
+        hosts = ha.place()
+
+        add_daemon_hosts = ha.add_daemon_hosts(hosts)
+        remove_daemon_hosts = ha.remove_daemon_hosts(hosts)
+
+        return {
+            'service_name': spec.service_name(),
+            'service_type': spec.service_type,
+            'add': [hs.hostname for hs in add_daemon_hosts],
+            'remove': [d.hostname for d in remove_daemon_hosts]
+        }
+
+    @trivial_completion
+    def plan(self, specs: List[GenericSpec]) -> List:
+        results = [{'warning': 'WARNING! Dry-Runs are snapshots of a certain point in time and are bound \n'
+                               'to the current inventory setup. If any on these conditions changes, the \n'
+                               'preview will be invalid. Please make sure to have a minimal \n'
+                               'timeframe between planning and applying the specs.'}]
+        if any([spec.service_type == 'host' for spec in specs]):
+            return [{'error': 'Found <HostSpec>. Previews that include Host Specifications are not supported, yet.'}]
+        for spec in specs:
+            results.append(self._plan(cast(ServiceSpec, spec)))
+        return results
+
     def _apply_service_spec(self, spec: ServiceSpec) -> str:
         if spec.placement.is_empty():
             # fill in default placement
@@ -2020,30 +2349,30 @@ you may want to run:
         return "Scheduled %s update..." % spec.service_name()
 
     @trivial_completion
-    def apply(self, specs: List[GenericSpec]):
+    def apply(self, specs: List[GenericSpec]) -> List[str]:
         results = []
         for spec in specs:
             results.append(self._apply(spec))
         return results
 
     @trivial_completion
-    def apply_mgr(self, spec):
+    def apply_mgr(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
-    def add_mds(self, spec: ServiceSpec):
+    def add_mds(self, spec: ServiceSpec) -> List[str]:
         return self._add_daemon('mds', spec, self.mds_service.create, self.mds_service.config)
 
     @trivial_completion
-    def apply_mds(self, spec: ServiceSpec):
+    def apply_mds(self, spec: ServiceSpec) -> str:
         return self._apply(spec)
 
     @trivial_completion
-    def add_rgw(self, spec):
+    def add_rgw(self, spec) -> List[str]:
         return self._add_daemon('rgw', spec, self.rgw_service.create, self.rgw_service.config)
 
     @trivial_completion
-    def apply_rgw(self, spec):
+    def apply_rgw(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
@@ -2052,23 +2381,23 @@ you may want to run:
         return self._add_daemon('iscsi', spec, self.iscsi_service.create, self.iscsi_service.config)
 
     @trivial_completion
-    def apply_iscsi(self, spec):
+    def apply_iscsi(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
-    def add_rbd_mirror(self, spec):
+    def add_rbd_mirror(self, spec) -> List[str]:
         return self._add_daemon('rbd-mirror', spec, self.rbd_mirror_service.create)
 
     @trivial_completion
-    def apply_rbd_mirror(self, spec):
+    def apply_rbd_mirror(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
-    def add_nfs(self, spec):
+    def add_nfs(self, spec) -> List[str]:
         return self._add_daemon('nfs', spec, self.nfs_service.create, self.nfs_service.config)
 
     @trivial_completion
-    def apply_nfs(self, spec):
+    def apply_nfs(self, spec) -> str:
         return self._apply(spec)
 
     def _get_dashboard_url(self):
@@ -2076,11 +2405,11 @@ you may want to run:
         return self.get('mgr_map').get('services', {}).get('dashboard', '')
 
     @trivial_completion
-    def add_prometheus(self, spec):
+    def add_prometheus(self, spec) -> List[str]:
         return self._add_daemon('prometheus', spec, self.prometheus_service.create)
 
     @trivial_completion
-    def apply_prometheus(self, spec):
+    def apply_prometheus(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
@@ -2090,7 +2419,7 @@ you may want to run:
                                 self.node_exporter_service.create)
 
     @trivial_completion
-    def apply_node_exporter(self, spec):
+    def apply_node_exporter(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
@@ -2100,7 +2429,7 @@ you may want to run:
                                 self.crash_service.create)
 
     @trivial_completion
-    def apply_crash(self, spec):
+    def apply_crash(self, spec) -> str:
         return self._apply(spec)
 
     @trivial_completion
@@ -2109,7 +2438,7 @@ you may want to run:
         return self._add_daemon('grafana', spec, self.grafana_service.create)
 
     @trivial_completion
-    def apply_grafana(self, spec: ServiceSpec):
+    def apply_grafana(self, spec: ServiceSpec) -> str:
         return self._apply(spec)
 
     @trivial_completion
@@ -2118,7 +2447,7 @@ you may want to run:
         return self._add_daemon('alertmanager', spec, self.alertmanager_service.create)
 
     @trivial_completion
-    def apply_alertmanager(self, spec: ServiceSpec):
+    def apply_alertmanager(self, spec: ServiceSpec) -> str:
         return self._apply(spec)
 
     def _get_container_image_id(self, image_name):
@@ -2129,8 +2458,10 @@ you may want to run:
             break
         if not host:
             raise OrchestratorError('no hosts defined')
+        if self.cache.host_needs_registry_login(host) and self.registry_url:
+            self._registry_login(host, self.registry_url, self.registry_username, self.registry_password)
         out, err, code = self._run_cephadm(
-            host, None, 'pull', [],
+            host, '', 'pull', [],
             image=image_name,
             no_fsid=True,
             error_ok=True)
@@ -2145,7 +2476,7 @@ you may want to run:
         return image_id, ceph_version
 
     @trivial_completion
-    def upgrade_check(self, image, version):
+    def upgrade_check(self, image, version) -> str:
         if version:
             target_name = self.container_image_base + ':v' + version
         elif image:
@@ -2176,57 +2507,79 @@ you may want to run:
         return json.dumps(r, indent=4, sort_keys=True)
 
     @trivial_completion
-    def upgrade_status(self):
+    def upgrade_status(self) -> orchestrator.UpgradeStatusSpec:
         return self.upgrade.upgrade_status()
 
     @trivial_completion
-    def upgrade_start(self, image, version):
+    def upgrade_start(self, image, version) -> str:
         return self.upgrade.upgrade_start(image, version)
 
     @trivial_completion
-    def upgrade_pause(self):
+    def upgrade_pause(self) -> str:
         return self.upgrade.upgrade_pause()
 
     @trivial_completion
-    def upgrade_resume(self):
+    def upgrade_resume(self) -> str:
         return self.upgrade.upgrade_resume()
 
     @trivial_completion
-    def upgrade_stop(self):
+    def upgrade_stop(self) -> str:
         return self.upgrade.upgrade_stop()
 
     @trivial_completion
     def remove_osds(self, osd_ids: List[str],
                     replace: bool = False,
-                    force: bool = False):
+                    force: bool = False) -> str:
         """
         Takes a list of OSDs and schedules them for removal.
         The function that takes care of the actual removal is
-        _remove_osds_bg().
+        process_removal_queue().
         """
 
-        daemons = self.cache.get_daemons_by_service('osd')
-        found: Set[OSDRemoval] = set()
+        daemons: List[orchestrator.DaemonDescription] = self.cache.get_daemons_by_type('osd')
+        to_remove_daemons = list()
         for daemon in daemons:
-            if daemon.daemon_id not in osd_ids:
-                continue
-            found.add(OSDRemoval(daemon.daemon_id, replace, force,
-                                 daemon.hostname, daemon.name(),
-                                 datetime.datetime.utcnow(), -1))
+            if daemon.daemon_id in osd_ids:
+                to_remove_daemons.append(daemon)
+        if not to_remove_daemons:
+            return f"Unable to find OSDs: {osd_ids}"
 
-        not_found = {osd_id for osd_id in osd_ids if osd_id not in [x.osd_id for x in found]}
-        if not_found:
-            raise OrchestratorError('Unable to find OSD: %s' % not_found)
-
-        self.rm_util.queue_osds_for_removal(found)
+        for daemon in to_remove_daemons:
+            try:
+                self.to_remove_osds.enqueue(OSD(osd_id=int(daemon.daemon_id),
+                                                replace=replace,
+                                                force=force,
+                                                hostname=daemon.hostname,
+                                                fullname=daemon.name(),
+                                                process_started_at=datetime.datetime.utcnow(),
+                                                remove_util=self.rm_util))
+            except NotFoundError:
+                return f"Unable to find OSDs: {osd_ids}"
 
         # trigger the serve loop to initiate the removal
         self._kick_serve_loop()
         return "Scheduled OSD(s) for removal"
 
+    @trivial_completion
+    def stop_remove_osds(self, osd_ids: List[str]):
+        """
+        Stops a `removal` process for a List of OSDs.
+        This will revert their weight and remove it from the osds_to_remove queue
+        """
+        for osd_id in osd_ids:
+            try:
+                self.to_remove_osds.rm(OSD(osd_id=int(osd_id),
+                                           remove_util=self.rm_util))
+            except (NotFoundError, KeyError):
+                return f'Unable to find OSD in the queue: {osd_id}'
+
+        # trigger the serve loop to halt the removal
+        self._kick_serve_loop()
+        return "Stopped OSD(s) removal"
+
     @trivial_completion
     def remove_osds_status(self):
         """
         The CLI call to retrieve an osd removal report
         """
-        return self.rm_util.report
+        return self.to_remove_osds.all_osds()
index 1c480c105e30d58868fad0ae40a8135fa52af30e..d8cda4e9d9c946bec97ed2c527547aeba4a79101 100644 (file)
@@ -14,6 +14,7 @@ PATH = [
     '/sbin',
 ]
 
+
 def choose_python():
     for e in PYTHONS:
         for b in PATH:
@@ -22,6 +23,7 @@ def choose_python():
                 return p
     return None
 
+
 if __name__ == '__channelexec__':
     for item in channel:  # type: ignore
         channel.send(eval(item))  # type: ignore
index 6e9bb6899318cc3dfdf5da1dc253d10710aaae2c..17fbe6bcb24766c5266fe0bff1aba59236db5e2c 100644 (file)
@@ -1,28 +1,30 @@
 import logging
 import random
-from typing import List, Optional, Callable
+from typing import List, Optional, Callable, Iterable, Tuple, TypeVar, Set
 
 import orchestrator
 from ceph.deployment.service_spec import PlacementSpec, HostPlacementSpec, ServiceSpec
+from orchestrator._interface import DaemonDescription
 from orchestrator import OrchestratorValidationError
 
 logger = logging.getLogger(__name__)
+T = TypeVar('T')
 
 class BaseScheduler(object):
     """
     Base Scheduler Interface
 
-    * requires a placement_spec
+    * requires a ServiceSpec
 
     `place(host_pool)` needs to return a List[HostPlacementSpec, ..]
     """
 
-    def __init__(self, placement_spec):
-        # type: (PlacementSpec) -> None
-        self.placement_spec = placement_spec
+    def __init__(self, spec):
+        # type: (ServiceSpec) -> None
+        self.spec = spec
 
     def place(self, host_pool, count=None):
-        # type: (List, Optional[int]) -> List[HostPlacementSpec]
+        # type: (List[T], Optional[int]) -> List[T]
         raise NotImplementedError
 
 
@@ -32,56 +34,51 @@ class SimpleScheduler(BaseScheduler):
     1) Shuffle the provided host_pool
     2) Select from list up to :count
     """
-    def __init__(self, placement_spec):
-        super(SimpleScheduler, self).__init__(placement_spec)
+    def __init__(self, spec):
+        super(SimpleScheduler, self).__init__(spec)
 
     def place(self, host_pool, count=None):
-        # type: (List, Optional[int]) -> List[HostPlacementSpec]
+        # type: (List[T], Optional[int]) -> List[T]
         if not host_pool:
             return []
         host_pool = [x for x in host_pool]
+        # gen seed off of self.spec to make shuffling deterministic
+        seed = hash(self.spec.service_name())
         # shuffle for pseudo random selection
-        random.shuffle(host_pool)
+        random.Random(seed).shuffle(host_pool)
         return host_pool[:count]
 
 
 class HostAssignment(object):
-    """
-    A class to detect if hosts are being passed imperative or declarative
-    If the spec is populated via the `hosts/hosts` field it will not load
-    any hosts into the list.
-    If the spec isn't populated, i.e. when only num or label is present (declarative)
-    it will use the provided `get_host_func` to load it from the inventory.
-
-    Schedulers can be assigned to pick hosts from the pool.
-    """
 
     def __init__(self,
                  spec,  # type: ServiceSpec
                  get_hosts_func,  # type: Callable
                  get_daemons_func, # type: Callable[[str],List[orchestrator.DaemonDescription]]
-
                  filter_new_host=None, # type: Optional[Callable[[str],bool]]
                  scheduler=None,  # type: Optional[BaseScheduler]
                  ):
         assert spec and get_hosts_func and get_daemons_func
         self.spec = spec  # type: ServiceSpec
-        self.scheduler = scheduler if scheduler else SimpleScheduler(self.spec.placement)
+        self.scheduler = scheduler if scheduler else SimpleScheduler(self.spec)
         self.get_hosts_func = get_hosts_func
-        self.get_daemons_func = get_daemons_func
         self.filter_new_host = filter_new_host
         self.service_name = spec.service_name()
-
+        self.daemons = get_daemons_func(self.service_name)
 
     def validate(self):
         self.spec.validate()
 
+        if self.spec.placement.count == 0:
+            raise OrchestratorValidationError(
+                f'<count> can not be 0 for {self.spec.one_line_str()}')
+
         if self.spec.placement.hosts:
             explicit_hostnames = {h.hostname for h in self.spec.placement.hosts}
             unknown_hosts = explicit_hostnames.difference(set(self.get_hosts_func()))
             if unknown_hosts:
                 raise OrchestratorValidationError(
-                    f'Cannot place {self.spec.one_line_str()} on {unknown_hosts}: Unknown hosts')
+                    f'Cannot place {self.spec.one_line_str()} on {", ".join(sorted(unknown_hosts))}: Unknown hosts')
 
         if self.spec.placement.host_pattern:
             pattern_hostnames = self.spec.placement.filter_matching_hosts(self.get_hosts_func)
@@ -99,95 +96,157 @@ class HostAssignment(object):
     def place(self):
         # type: () -> List[HostPlacementSpec]
         """
-        Load hosts into the spec.placement.hosts container.
+        Generate a list of HostPlacementSpec taking into account:
+
+        * all known hosts
+        * hosts with existing daemons
+        * placement spec
+        * self.filter_new_host
         """
 
         self.validate()
 
-        # count == 0
-        if self.spec.placement.count == 0:
-            return []
+        count = self.spec.placement.count
 
-        # respect any explicit host list
-        if self.spec.placement.hosts and not self.spec.placement.count:
-            logger.debug('Provided hosts: %s' % self.spec.placement.hosts)
-            return self.spec.placement.hosts
+        # get candidates based on [hosts, label, host_pattern]
+        candidates = self.get_candidates()
 
-        # respect host_pattern
-        if self.spec.placement.host_pattern:
-            candidates = [
-                HostPlacementSpec(x, '', '')
-                for x in self.spec.placement.filter_matching_hosts(self.get_hosts_func)
-            ]
-            logger.debug('All hosts: {}'.format(candidates))
+        # If we don't have <count> the list of candidates is definitive.
+        if count is None:
+            logger.debug('Provided hosts: %s' % candidates)
             return candidates
 
-        count = 0
-        if self.spec.placement.hosts and \
-           self.spec.placement.count and \
-           len(self.spec.placement.hosts) >= self.spec.placement.count:
-            hosts = self.spec.placement.hosts
-            logger.debug('place %d over provided host list: %s' % (
-                count, hosts))
-            count = self.spec.placement.count
+        # prefer hosts that already have services.
+        # this avoids re-assigning to _new_ hosts
+        # and constant re-distribution of hosts when new nodes are
+        # added to the cluster
+        hosts_with_daemons = self.hosts_with_daemons(candidates)
+
+        # The amount of hosts that need to be selected in order to fulfill count.
+        need = count - len(hosts_with_daemons)
+
+        # hostspecs that are do not have daemons on them but are still candidates.
+        others = difference_hostspecs(candidates, hosts_with_daemons)
+
+        # we don't need any additional hosts
+        if need < 0:
+            return self.prefer_hosts_with_active_daemons(hosts_with_daemons, count)
+        else:
+            # exclusive to 'mon' daemons. Filter out hosts that don't have a public network assigned
+            if self.filter_new_host:
+                old = others
+                others = [h for h in others if self.filter_new_host(h.hostname)]
+                logger.debug('filtered %s down to %s' % (old, candidates))
+
+            # ask the scheduler to return a set of hosts with a up to the value of <count>
+            others = self.scheduler.place(others, need)
+            logger.debug('Combine hosts with existing daemons %s + new hosts %s' % (
+                hosts_with_daemons, others))
+            # if a host already has the anticipated daemon, merge it with the candidates
+            # to get a list of HostPlacementSpec that can be deployed on.
+            return list(merge_hostspecs(hosts_with_daemons, others))
+    
+    def get_hosts_with_active_daemon(self, hosts: List[HostPlacementSpec]) -> List[HostPlacementSpec]:
+        active_hosts: List['HostPlacementSpec'] = []
+        for daemon in self.daemons:
+            if daemon.is_active:
+                for h in hosts:
+                    if h.hostname == daemon.hostname:
+                        active_hosts.append(h)
+        # remove duplicates before returning
+        return list(dict.fromkeys(active_hosts))
+    
+    def prefer_hosts_with_active_daemons(self, hosts: List[HostPlacementSpec], count) -> List[HostPlacementSpec]:
+        # try to prefer host with active daemon if possible
+        active_hosts = self.get_hosts_with_active_daemon(hosts)
+        if len(active_hosts) != 0 and count > 0:
+            for host in active_hosts:
+                hosts.remove(host)
+            if len(active_hosts) >= count:
+                return self.scheduler.place(active_hosts, count)
+            else:
+                return list(merge_hostspecs(self.scheduler.place(active_hosts, count),
+                            self.scheduler.place(hosts, count - len(active_hosts))))
+        # ask the scheduler to return a set of hosts with a up to the value of <count>
+        return self.scheduler.place(hosts, count)
+
+    def add_daemon_hosts(self, host_pool: List[HostPlacementSpec]) -> Set[HostPlacementSpec]:
+        hosts_with_daemons = {d.hostname for d in self.daemons}
+        _add_daemon_hosts = set()
+        for host in host_pool:
+            if host.hostname not in hosts_with_daemons:
+                _add_daemon_hosts.add(host)
+        return _add_daemon_hosts
+
+    def remove_daemon_hosts(self, host_pool: List[HostPlacementSpec]) -> Set[DaemonDescription]:
+        target_hosts = [h.hostname for h in host_pool]
+        _remove_daemon_hosts = set()
+        for d in self.daemons:
+            if d.hostname not in target_hosts:
+                _remove_daemon_hosts.add(d)
+        return _remove_daemon_hosts
+
+    def get_candidates(self) -> List[HostPlacementSpec]:
+        if self.spec.placement.hosts:
+            return self.spec.placement.hosts
         elif self.spec.placement.label:
-            hosts = [
+            return [
                 HostPlacementSpec(x, '', '')
                 for x in self.get_hosts_func(label=self.spec.placement.label)
             ]
-            if not self.spec.placement.count:
-                logger.debug('Labeled hosts: {}'.format(hosts))
-                return hosts
-            count = self.spec.placement.count
-            logger.debug('place %d over label %s: %s' % (
-                count, self.spec.placement.label, hosts))
-        else:
-            hosts = [
+        elif self.spec.placement.host_pattern:
+            return [
                 HostPlacementSpec(x, '', '')
-                for x in self.get_hosts_func()
+                for x in self.spec.placement.filter_matching_hosts(self.get_hosts_func)
             ]
-            if self.spec.placement.count:
-                count = self.spec.placement.count
-            else:
-                # this should be a totally empty spec given all of the
-                # alternative paths above.
-                assert self.spec.placement.count is None
-                assert not self.spec.placement.hosts
-                assert not self.spec.placement.label
-                count = 1
-            logger.debug('place %d over all hosts: %s' % (count, hosts))
-
-        # we need to select a subset of the candidates
-
-        # if a partial host list is provided, always start with that
-        if len(self.spec.placement.hosts) < count:
-            chosen = self.spec.placement.hosts
-        else:
-            chosen = []
+        # If none of the above and also no <count>
+        if self.spec.placement.count is None:
+            raise OrchestratorValidationError("placement spec is empty: no hosts, no label, no pattern, no count")
+        # backward compatibility: consider an empty placements to be the same pattern = *
+        return [
+            HostPlacementSpec(x, '', '')
+            for x in self.get_hosts_func()
+        ]
+
+    def hosts_with_daemons(self, candidates: List[HostPlacementSpec]) -> List[HostPlacementSpec]:
+        """
+        Prefer hosts with daemons. Otherwise we'll constantly schedule daemons
+        on different hosts all the time. This is about keeping daemons where
+        they are. This isn't about co-locating.
+        """
+        hosts_with_daemons = {d.hostname for d in self.daemons}
 
-        # prefer hosts that already have services
-        daemons = self.get_daemons_func(self.service_name)
-        hosts_with_daemons = {d.hostname for d in daemons}
         # calc existing daemons (that aren't already in chosen)
-        chosen_hosts = [hs.hostname for hs in chosen]
-        existing = [hs for hs in hosts
-                    if hs.hostname in hosts_with_daemons and \
-                    hs.hostname not in chosen_hosts]
-        if len(chosen + existing) >= count:
-            chosen = chosen + self.scheduler.place(
-                existing,
-                count - len(chosen))
-            logger.debug('Hosts with existing daemons: {}'.format(chosen))
-            return chosen
-
-        need = count - len(existing + chosen)
-        others = [hs for hs in hosts
-                  if hs.hostname not in hosts_with_daemons]
-        if self.filter_new_host:
-            old = others
-            others = [h for h in others if self.filter_new_host(h.hostname)]
-            logger.debug('filtered %s down to %s' % (old, hosts))
-        chosen = chosen + self.scheduler.place(others, need)
-        logger.debug('Combine hosts with existing daemons %s + new hosts %s' % (
-            existing, chosen))
-        return existing + chosen
+        existing = [hs for hs in candidates if hs.hostname in hosts_with_daemons]
+
+        logger.debug('Hosts with existing daemons: {}'.format(existing))
+        return existing
+
+
+def merge_hostspecs(l: List[HostPlacementSpec], r: List[HostPlacementSpec]) -> Iterable[HostPlacementSpec]:
+    """
+    Merge two lists of HostPlacementSpec by hostname. always returns `l` first.
+
+    >>> list(merge_hostspecs([HostPlacementSpec(hostname='h', name='x', network='')],
+    ...                      [HostPlacementSpec(hostname='h', name='y', network='')]))
+    [HostPlacementSpec(hostname='h', network='', name='x')]
+
+    """
+    l_names = {h.hostname for h in l}
+    yield from l
+    yield from (h for h in r if h.hostname not in l_names)
+
+
+def difference_hostspecs(l: List[HostPlacementSpec], r: List[HostPlacementSpec]) -> List[HostPlacementSpec]:
+    """
+    returns l "minus" r by hostname.
+
+    >>> list(difference_hostspecs([HostPlacementSpec(hostname='h1', name='x', network=''),
+    ...                           HostPlacementSpec(hostname='h2', name='y', network='')],
+    ...                           [HostPlacementSpec(hostname='h2', name='', network='')]))
+    [HostPlacementSpec(hostname='h1', network='', name='x')]
+
+    """
+    r_names = {h.hostname for h in r}
+    return [h for h in l if h.hostname not in r_names]
+
index 6acbb60493b5ca0a90a96d6f1f1411dfeeac9cc3..c42cc121d61fcda4e8425d2791c34d28de6acb37 100644 (file)
@@ -1,7 +1,11 @@
+import json
+import re
 import logging
-from typing import TYPE_CHECKING, List
+import subprocess
+from abc import ABCMeta, abstractmethod
+from typing import TYPE_CHECKING, List, Callable, Any, TypeVar, Generic,  Optional, Dict, Any, Tuple
 
-from mgr_module import MonCommandFailed
+from mgr_module import HandleCommandResult, MonCommandFailed
 
 from ceph.deployment.service_spec import ServiceSpec, RGWSpec
 from orchestrator import OrchestratorError, DaemonDescription
@@ -12,22 +16,110 @@ if TYPE_CHECKING:
 
 logger = logging.getLogger(__name__)
 
+ServiceSpecs = TypeVar('ServiceSpecs', bound=ServiceSpec)
 
-class CephadmService:
+
+class CephadmDaemonSpec(Generic[ServiceSpecs]):
+    # typing.NamedTuple + Generic is broken in py36
+    def __init__(self, host: str, daemon_id,
+                 spec: Optional[ServiceSpecs]=None,
+                 network: Optional[str]=None,
+                 keyring: Optional[str]=None,
+                 extra_args: Optional[List[str]]=None,
+                 extra_config: Optional[Dict[str, Any]]=None,
+                 daemon_type: Optional[str]=None,
+                 ports: Optional[List[int]]=None,):
+        """
+        Used for
+        * deploying new daemons. then everything is set
+        * redeploying existing daemons, then only the first three attrs are set.
+
+        Would be great to have a consistent usage where all properties are set.
+        """
+        self.host: str = host
+        self.daemon_id = daemon_id
+        daemon_type = daemon_type or (spec.service_type if spec else None)
+        assert daemon_type is not None
+        self.daemon_type: str = daemon_type
+
+        # would be great to have the spec always available:
+        self.spec: Optional[ServiceSpecs] = spec
+
+        # mons
+        self.network = network
+
+        # for run_cephadm.
+        self.keyring: Optional[str] = keyring
+
+        # For run_cephadm. Would be great to have more expressive names.
+        self.extra_args: List[str] = extra_args or []
+        self.extra_config: Dict[str, Any] = extra_config or {}
+
+        # TCP ports used by the daemon
+        self.ports:  List[int] = ports or []
+
+
+    def name(self) -> str:
+        return '%s.%s' % (self.daemon_type, self.daemon_id)
+
+
+class CephadmService(metaclass=ABCMeta):
     """
     Base class for service types. Often providing a create() and config() fn.
     """
+
+    @property
+    @abstractmethod
+    def TYPE(self):
+        pass
+
     def __init__(self, mgr: "CephadmOrchestrator"):
         self.mgr: "CephadmOrchestrator" = mgr
 
+    def make_daemon_spec(self, host, daemon_id, netowrk, spec: ServiceSpecs) -> CephadmDaemonSpec:
+        return CephadmDaemonSpec(
+            host=host,
+            daemon_id=daemon_id,
+            spec=spec,
+            network=netowrk
+        )
+
+    def create(self, daemon_spec: CephadmDaemonSpec):
+        raise NotImplementedError()
+
+    def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
+        # Ceph.daemons (mon, mgr, mds, osd, etc)
+        cephadm_config = self.mgr._get_config_and_keyring(
+            daemon_spec.daemon_type,
+            daemon_spec.daemon_id,
+            host=daemon_spec.host,
+            keyring=daemon_spec.keyring,
+            extra_ceph_config=daemon_spec.extra_config.pop('config', ''))
+
+
+        if daemon_spec.extra_config:
+            cephadm_config.update({'files': daemon_spec.extra_config})
+
+        return cephadm_config, []
+
     def daemon_check_post(self, daemon_descrs: List[DaemonDescription]):
         """The post actions needed to be done after daemons are checked"""
+        if self.mgr.config_dashboard:
+            if 'dashboard' in self.mgr.get('mgr_map')['modules']:
+                self.config_dashboard(daemon_descrs)
+            else:
+                logger.debug('Dashboard is not enabled. Skip configuration.')
+
+    def config_dashboard(self, daemon_descrs: List[DaemonDescription]):
+        """Config dashboard settings."""
         raise NotImplementedError()
 
     def get_active_daemon(self, daemon_descrs: List[DaemonDescription]) -> DaemonDescription:
-        raise NotImplementedError()
+        # if this is called for a service type where it hasn't explcitly been
+        # defined, return empty Daemon Desc
+        return DaemonDescription()
 
-    def _inventory_get_addr(self, hostname: str):
+    def _inventory_get_addr(self, hostname: str) -> str:
         """Get a host's address with its hostname."""
         return self.mgr.inventory.get_addr(hostname)
 
@@ -36,32 +128,118 @@ class CephadmService:
                                       get_mon_cmd: str,
                                       set_mon_cmd: str,
                                       service_url: str):
-        """A helper to get and set service_url via Dashboard's MON command."""
+        """A helper to get and set service_url via Dashboard's MON command.
+
+           If result of get_mon_cmd differs from service_url, set_mon_cmd will
+           be sent to set the service_url.
+        """
+        def get_set_cmd_dicts(out: str) -> List[dict]:
+            cmd_dict = {
+                'prefix': set_mon_cmd,
+                'value': service_url
+            }
+            return [cmd_dict] if service_url != out else []
+
+        self._check_and_set_dashboard(
+            service_name=service_name,
+            get_cmd=get_mon_cmd,
+            get_set_cmd_dicts=get_set_cmd_dicts
+        )
+
+    def _check_and_set_dashboard(self,
+                                 service_name: str,
+                                 get_cmd: str,
+                                 get_set_cmd_dicts: Callable[[str], List[dict]]):
+        """A helper to set configs in the Dashboard.
+
+        The method is useful for the pattern:
+            - Getting a config from Dashboard by using a Dashboard command. e.g. current iSCSI
+              gateways.
+            - Parse or deserialize previous output. e.g. Dashboard command returns a JSON string.
+            - Determine if the config need to be update. NOTE: This step is important because if a
+              Dashboard command modified Ceph config, cephadm's config_notify() is called. Which
+              kicks the serve() loop and the logic using this method is likely to be called again.
+              A config should be updated only when needed.
+            - Update a config in Dashboard by using a Dashboard command.
+
+        :param service_name: the service name to be used for logging
+        :type service_name: str
+        :param get_cmd: Dashboard command prefix to get config. e.g. dashboard get-grafana-api-url
+        :type get_cmd: str
+        :param get_set_cmd_dicts: function to create a list, and each item is a command dictionary.
+            e.g.
+            [
+                {
+                   'prefix': 'dashboard iscsi-gateway-add',
+                   'service_url': 'http://admin:admin@aaa:5000',
+                   'name': 'aaa'
+                },
+                {
+                    'prefix': 'dashboard iscsi-gateway-add',
+                    'service_url': 'http://admin:admin@bbb:5000',
+                    'name': 'bbb'
+                }
+            ]
+            The function should return empty list if no command need to be sent.
+        :type get_set_cmd_dicts: Callable[[str], List[dict]]
+        """
+
         try:
             _, out, _ = self.mgr.check_mon_command({
-                'prefix': get_mon_cmd
+                'prefix': get_cmd
             })
         except MonCommandFailed as e:
-            logger.warning('Failed to get service URL for %s: %s', service_name, e)
+            logger.warning('Failed to get Dashboard config for %s: %s', service_name, e)
             return
-        if out.strip() != service_url:
+        cmd_dicts = get_set_cmd_dicts(out.strip())
+        for cmd_dict in list(cmd_dicts):
             try:
-                logger.info(
-                    'Setting service URL %s for %s in the Dashboard', service_url, service_name)
-                _, out, _ = self.mgr.check_mon_command({
-                    'prefix': set_mon_cmd,
-                    'value': service_url,
-                })
+                logger.info('Setting Dashboard config for %s: command: %s', service_name, cmd_dict)
+                _, out, _ = self.mgr.check_mon_command(cmd_dict)
             except MonCommandFailed as e:
-                logger.warning('Failed to set service URL %s for %s in the Dashboard: %s',
-                               service_url, service_name, e)
+                logger.warning('Failed to set Dashboard config for %s: %s', service_name, e)
+
+
+
+    def ok_to_stop(self, daemon_ids: List[str]) -> HandleCommandResult:
+        names = [f'{self.TYPE}.{d_id}' for d_id in daemon_ids]
+        out = f'It is presumed safe to stop {names}'
+        err = f'It is NOT safe to stop {names}'
+
+        if self.TYPE not in ['mon', 'osd', 'mds']:
+            logger.info(out)
+            return HandleCommandResult(0, out, None)
+
+        r = HandleCommandResult(*self.mgr.mon_command({
+            'prefix': f'{self.TYPE} ok-to-stop',
+            'ids': daemon_ids,
+        }))
+
+        if r.retval:
+            err = f'{err}: {r.stderr}' if r.stderr else err
+            logger.error(err)
+            return HandleCommandResult(r.retval, r.stdout, err)
 
+        out = f'{out}: {r.stdout}' if r.stdout else out
+        logger.info(out)
+        return HandleCommandResult(r.retval, out, r.stderr)
+
+    def pre_remove(self, daemon_id: str) -> None:
+        """
+        Called before the daemon is removed.
+        """
+        pass
 
 class MonService(CephadmService):
-    def create(self, name, host, network):
+    TYPE = 'mon'
+
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
         """
         Create a new monitor on the given host.
         """
+        assert self.TYPE == daemon_spec.daemon_type
+        name, host, network = daemon_spec.daemon_id, daemon_spec.host, daemon_spec.network
+
         # get mon. key
         ret, keyring, err = self.mgr.check_mon_command({
             'prefix': 'auth get',
@@ -86,23 +264,61 @@ class MonService(CephadmService):
                 'who': 'mon',
                 'key': 'public_network',
             })
-            network = network.strip() # type: ignore
+            network = network.strip() if network else network
             if not network:
                 raise OrchestratorError('Must set public_network config option or specify a CIDR network, ceph addrvec, or plain IP')
             if '/' not in network:
                 raise OrchestratorError('public_network is set but does not look like a CIDR network: \'%s\'' % network)
             extra_config += 'public network = %s\n' % network
 
-        return self.mgr._create_daemon('mon', name, host,
-                                       keyring=keyring,
-                                       extra_config={'config': extra_config})
+        daemon_spec.extra_config={'config': extra_config}
+        daemon_spec.keyring=keyring
+
+        return self.mgr._create_daemon(daemon_spec)
+
+    def _check_safe_to_destroy(self, mon_id: str) -> None:
+        ret, out, err = self.mgr.check_mon_command({
+            'prefix': 'quorum_status',
+        })
+        try:
+            j = json.loads(out)
+        except Exception as e:
+            raise OrchestratorError('failed to parse quorum status')
+
+        mons = [m['name'] for m in j['monmap']['mons']]
+        if mon_id not in mons:
+            logger.info('Safe to remove mon.%s: not in monmap (%s)' % (
+                mon_id, mons))
+            return
+        new_mons = [m for m in mons if m != mon_id]
+        new_quorum = [m for m in j['quorum_names'] if m != mon_id]
+        if len(new_quorum) > len(new_mons) / 2:
+            logger.info('Safe to remove mon.%s: new quorum should be %s (from %s)' % (mon_id, new_quorum, new_mons))
+            return
+        raise OrchestratorError('Removing %s would break mon quorum (new quorum %s, new mons %s)' % (mon_id, new_quorum, new_mons))
+
+
+    def pre_remove(self, daemon_id: str) -> None:
+        self._check_safe_to_destroy(daemon_id)
+
+        # remove mon from quorum before we destroy the daemon
+        logger.info('Removing monitor %s from monmap...' % daemon_id)
+        ret, out, err = self.mgr.check_mon_command({
+            'prefix': 'mon rm',
+            'name': daemon_id,
+        })
 
 
 class MgrService(CephadmService):
-    def create(self, mgr_id, host):
+    TYPE = 'mgr'
+
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
         """
         Create a new manager instance on a host.
         """
+        assert self.TYPE == daemon_spec.daemon_type
+        mgr_id, host = daemon_spec.daemon_id, daemon_spec.host
+
         # get mgr. key
         ret, keyring, err = self.mgr.check_mon_command({
             'prefix': 'auth get-or-create',
@@ -112,13 +328,49 @@ class MgrService(CephadmService):
                      'mds', 'allow *'],
         })
 
-        return self.mgr._create_daemon('mgr', mgr_id, host, keyring=keyring)
+
+        # Retrieve ports used by manager modules
+        # In the case of the dashboard port and with several manager daemons
+        # running in different hosts, it exists the possibility that the
+        # user has decided to use different dashboard ports in each server
+        # If this is the case then the dashboard port opened will be only the used
+        # as default.
+        ports = []
+        config_ports = ''
+        ret, mgr_services, err = self.mgr.check_mon_command({
+                'prefix': 'mgr services',
+        })
+        if mgr_services:
+            mgr_endpoints = json.loads(mgr_services)
+            for end_point in mgr_endpoints.values():
+                port = re.search('\:\d+\/', end_point)
+                if port:
+                    ports.append(int(port[0][1:-1]))
+
+        if ports:
+            daemon_spec.ports = ports
+
+        daemon_spec.keyring = keyring
+
+        return self.mgr._create_daemon(daemon_spec)
+    
+    def get_active_daemon(self, daemon_descrs: List[DaemonDescription]) -> DaemonDescription:
+        active_mgr_str = self.mgr.get('mgr_map')['active_name']
+        for daemon in daemon_descrs:
+            if daemon.daemon_id == active_mgr_str:
+                return daemon
+        # if no active mgr found, return empty Daemon Desc
+        return DaemonDescription()
 
 
 class MdsService(CephadmService):
-    def config(self, spec: ServiceSpec):
-        # ensure mds_join_fs is set for these daemons
+    TYPE = 'mds'
+
+    def config(self, spec: ServiceSpec) -> None:
+        assert self.TYPE == spec.service_type
         assert spec.service_id
+
+        # ensure mds_join_fs is set for these daemons
         ret, out, err = self.mgr.check_mon_command({
             'prefix': 'config set',
             'who': 'mds.' + spec.service_id,
@@ -126,20 +378,47 @@ class MdsService(CephadmService):
             'value': spec.service_id,
         })
 
-    def create(self, mds_id, host) -> str:
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        mds_id, host = daemon_spec.daemon_id, daemon_spec.host
+
         # get mgr. key
         ret, keyring, err = self.mgr.check_mon_command({
             'prefix': 'auth get-or-create',
             'entity': 'mds.' + mds_id,
             'caps': ['mon', 'profile mds',
-                     'osd', 'allow rwx',
+                     'osd', 'allow rw tag cephfs *=*',
                      'mds', 'allow'],
         })
-        return self.mgr._create_daemon('mds', mds_id, host, keyring=keyring)
+        daemon_spec.keyring = keyring
+
+        return self.mgr._create_daemon(daemon_spec)
+    
+    def get_active_daemon(self, daemon_descrs: List[DaemonDescription]) -> DaemonDescription:
+        active_mds_strs = list()
+        for fs in self.mgr.get('fs_map')['filesystems']:
+            mds_map = fs['mdsmap']
+            if mds_map is not None:
+                for mds_id, mds_status in mds_map['info'].items():
+                    if mds_status['state'] == 'up:active':
+                        active_mds_strs.append(mds_status['name'])
+        if len(active_mds_strs) != 0:
+            for daemon in daemon_descrs:
+                if daemon.daemon_id in active_mds_strs:
+                    return daemon
+        # if no mds found, return empty Daemon Desc
+        return DaemonDescription()
 
 
 class RgwService(CephadmService):
-    def config(self, spec: RGWSpec):
+    TYPE = 'rgw'
+
+    def config(self, spec: RGWSpec, rgw_id: str):
+        assert self.TYPE == spec.service_type
+
+        # create realm, zonegroup, and zone if needed
+        self.create_realm_zonegroup_zone(spec, rgw_id)
+
         # ensure rgw_realm and rgw_zone is set for these daemons
         ret, out, err = self.mgr.check_mon_command({
             'prefix': 'config set',
@@ -194,7 +473,17 @@ class RgwService(CephadmService):
             spec.service_name(), spec.placement.pretty_str()))
         self.mgr.spec_store.save(spec)
 
-    def create(self, rgw_id, host) -> str:
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        rgw_id, host = daemon_spec.daemon_id, daemon_spec.host
+
+        keyring = self.get_keyring(rgw_id)
+
+        daemon_spec.keyring = keyring
+
+        return self.mgr._create_daemon(daemon_spec)
+
+    def get_keyring(self, rgw_id: str):
         ret, keyring, err = self.mgr.check_mon_command({
             'prefix': 'auth get-or-create',
             'entity': f"{utils.name_to_config_section('rgw')}.{rgw_id}",
@@ -202,27 +491,159 @@ class RgwService(CephadmService):
                      'mgr', 'allow rw',
                      'osd', 'allow rwx'],
         })
-        return self.mgr._create_daemon('rgw', rgw_id, host, keyring=keyring)
+        return keyring
+
+    def create_realm_zonegroup_zone(self, spec: RGWSpec, rgw_id: str):
+        if utils.get_cluster_health(self.mgr) != 'HEALTH_OK':
+            raise OrchestratorError('Health not ok, will try agin when health ok')
+
+        #get keyring needed to run rados commands and strip out just the keyring
+        keyring = self.get_keyring(rgw_id).split('key = ',1)[1].rstrip()
+
+        # We can call radosgw-admin within the container, cause cephadm gives the MGR the required keyring permissions
+
+        def get_realms() -> List[str]:
+            cmd = ['radosgw-admin',
+                   '--key=%s'%keyring,
+                   '--user', 'rgw.%s'%rgw_id,
+                   'realm', 'list',
+                   '--format=json']
+            result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            out = result.stdout
+            if not out:
+                return []
+            try:
+                j = json.loads(out)
+                return j.get('realms', [])
+            except Exception as e:
+                raise OrchestratorError('failed to parse realm info')
+
+        def create_realm():
+            cmd = ['radosgw-admin',
+                   '--key=%s'%keyring,
+                   '--user', 'rgw.%s'%rgw_id,
+                   'realm', 'create',
+                   '--rgw-realm=%s'%spec.rgw_realm,
+                   '--default']
+            result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            self.mgr.log.info('created realm: %s'%spec.rgw_realm)
+
+        def get_zonegroups() -> List[str]:
+            cmd = ['radosgw-admin',
+                   '--key=%s'%keyring,
+                   '--user', 'rgw.%s'%rgw_id,
+                   'zonegroup', 'list',
+                   '--format=json']
+            result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            out = result.stdout
+            if not out:
+                return []
+            try:
+                j = json.loads(out)
+                return j.get('zonegroups', [])
+            except Exception as e:
+                raise OrchestratorError('failed to parse zonegroup info')
+
+        def create_zonegroup():
+            cmd = ['radosgw-admin',
+                   '--key=%s'%keyring,
+                   '--user', 'rgw.%s'%rgw_id,
+                   'zonegroup', 'create',
+                   '--rgw-zonegroup=default',
+                   '--master', '--default']
+            result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            self.mgr.log.info('created zonegroup: default')
+
+        def create_zonegroup_if_required():
+            zonegroups = get_zonegroups()
+            if 'default' not in zonegroups:
+                create_zonegroup()
+
+        def get_zones() -> List[str]:
+            cmd = ['radosgw-admin',
+                   '--key=%s'%keyring,
+                   '--user', 'rgw.%s'%rgw_id,
+                   'zone', 'list',
+                   '--format=json']
+            result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            out = result.stdout
+            if not out:
+                return []
+            try:
+                j = json.loads(out)
+                return j.get('zones', [])
+            except Exception as e:
+                raise OrchestratorError('failed to parse zone info')
+
+        def create_zone():
+            cmd = ['radosgw-admin',
+                   '--key=%s'%keyring,
+                   '--user', 'rgw.%s'%rgw_id,
+                   'zone', 'create',
+                   '--rgw-zonegroup=default',
+                   '--rgw-zone=%s'%spec.rgw_zone,
+                   '--master', '--default']
+            result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            self.mgr.log.info('created zone: %s'%spec.rgw_zone)
+
+
+        changes = False
+        realms = get_realms()
+        if spec.rgw_realm not in realms:
+            create_realm()
+            changes = True
+
+        zones = get_zones()
+        if spec.rgw_zone not in zones:
+            create_zonegroup_if_required()
+            create_zone()
+            changes = True
+
+        # update period if changes were made
+        if changes:
+            cmd = ['radosgw-admin',
+                   '--key=%s'%keyring,
+                   '--user', 'rgw.%s'%rgw_id,
+                   'period', 'update',
+                   '--rgw-realm=%s'%spec.rgw_realm,
+                   '--commit']
+            result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            self.mgr.log.info('updated period')
 
 
 class RbdMirrorService(CephadmService):
-    def create(self, daemon_id, host) -> str:
+    TYPE = 'rbd-mirror'
+
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        daemon_id, host = daemon_spec.daemon_id, daemon_spec.host
+
         ret, keyring, err = self.mgr.check_mon_command({
             'prefix': 'auth get-or-create',
             'entity': 'client.rbd-mirror.' + daemon_id,
             'caps': ['mon', 'profile rbd-mirror',
                      'osd', 'profile rbd'],
         })
-        return self.mgr._create_daemon('rbd-mirror', daemon_id, host,
-                                       keyring=keyring)
+
+        daemon_spec.keyring = keyring
+
+        return self.mgr._create_daemon(daemon_spec)
 
 
 class CrashService(CephadmService):
-    def create(self, daemon_id, host) -> str:
+    TYPE = 'crash'
+
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        daemon_id, host = daemon_spec.daemon_id, daemon_spec.host
+
         ret, keyring, err = self.mgr.check_mon_command({
             'prefix': 'auth get-or-create',
             'entity': 'client.crash.' + host,
             'caps': ['mon', 'profile crash',
                      'mgr', 'profile crash'],
         })
-        return self.mgr._create_daemon('crash', daemon_id, host, keyring=keyring)
+
+        daemon_spec.keyring = keyring
+
+        return self.mgr._create_daemon(daemon_spec)
index 9b10d0a1652663fdb55669a60fae2fe710b869dc..aecf1417835943cc302ccc0b6ad27c0d1361cddd 100644 (file)
@@ -5,29 +5,38 @@ from typing import List, cast
 from mgr_module import MonCommandFailed
 from ceph.deployment.service_spec import IscsiServiceSpec
 
-from orchestrator import DaemonDescription
-from .cephadmservice import CephadmService
+from orchestrator import DaemonDescription, OrchestratorError
+from .cephadmservice import CephadmService, CephadmDaemonSpec
 from .. import utils
 
 logger = logging.getLogger(__name__)
 
 
 class IscsiService(CephadmService):
-    def config(self, spec: IscsiServiceSpec):
+    TYPE = 'iscsi'
+
+    def config(self, spec: IscsiServiceSpec) -> None:
+        assert self.TYPE == spec.service_type
         self.mgr._check_pool_exists(spec.pool, spec.service_name())
 
         logger.info('Saving service %s spec with placement %s' % (
             spec.service_name(), spec.placement.pretty_str()))
         self.mgr.spec_store.save(spec)
 
-    def create(self, igw_id, host, spec) -> str:
+    def create(self, daemon_spec: CephadmDaemonSpec[IscsiServiceSpec]) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        assert daemon_spec.spec
+
+        spec = daemon_spec.spec
+        igw_id = daemon_spec.daemon_id
+
         ret, keyring, err = self.mgr.check_mon_command({
             'prefix': 'auth get-or-create',
-            'entity': utils.name_to_auth_entity('iscsi') + '.' + igw_id,
+            'entity': utils.name_to_auth_entity('iscsi', igw_id),
             'caps': ['mon', 'profile rbd, '
                             'allow command "osd blacklist", '
                             'allow command "config-key get" with "key" prefix "iscsi/"',
-                     'osd', f'allow rwx pool={spec.pool}'],
+                     'osd', 'allow rwx'],
         })
 
         if spec.ssl_cert:
@@ -57,43 +66,42 @@ class IscsiService(CephadmService):
             'spec': spec
         }
         igw_conf = self.mgr.template.render('services/iscsi/iscsi-gateway.cfg.j2', context)
-        extra_config = {'iscsi-gateway.cfg': igw_conf}
-        return self.mgr._create_daemon('iscsi', igw_id, host, keyring=keyring,
-                                       extra_config=extra_config)
-
-    def daemon_check_post(self, daemon_descrs: List[DaemonDescription]):
-        try:
-            _, out, _ = self.mgr.check_mon_command({
-                'prefix': 'dashboard iscsi-gateway-list'
-            })
-        except MonCommandFailed as e:
-            logger.warning('Failed to get existing iSCSI gateways from the Dashboard: %s', e)
-            return
-
-        gateways = json.loads(out)['gateways']
-        for dd in daemon_descrs:
-            spec = cast(IscsiServiceSpec,
-                        self.mgr.spec_store.specs.get(dd.service_name(), None))
-            if not spec:
-                logger.warning('No ServiceSpec found for %s', dd)
-                continue
-            if not all([spec.api_user, spec.api_password]):
-                reason = 'api_user or api_password is not specified in ServiceSpec'
-                logger.warning(
-                    'Unable to add iSCSI gateway to the Dashboard for %s: %s', dd, reason)
-                continue
-            host = self._inventory_get_addr(dd.hostname)
-            service_url = 'http://{}:{}@{}:{}'.format(
-                spec.api_user, spec.api_password, host, spec.api_port or '5000')
-            gw = gateways.get(dd.hostname)
-            if not gw or gw['service_url'] != service_url:
-                try:
+
+        daemon_spec.keyring = keyring
+        daemon_spec.extra_config = {'iscsi-gateway.cfg': igw_conf}
+
+        return self.mgr._create_daemon(daemon_spec)
+
+    def config_dashboard(self, daemon_descrs: List[DaemonDescription]):
+        def get_set_cmd_dicts(out: str) -> List[dict]:
+            gateways = json.loads(out)['gateways']
+            cmd_dicts = []
+            for dd in daemon_descrs:
+                spec = cast(IscsiServiceSpec,
+                            self.mgr.spec_store.specs.get(dd.service_name(), None))
+                if not spec:
+                    logger.warning('No ServiceSpec found for %s', dd)
+                    continue
+                if not all([spec.api_user, spec.api_password]):
+                    reason = 'api_user or api_password is not specified in ServiceSpec'
+                    logger.warning(
+                        'Unable to add iSCSI gateway to the Dashboard for %s: %s', dd, reason)
+                    continue
+                host = self._inventory_get_addr(dd.hostname)
+                service_url = 'http://{}:{}@{}:{}'.format(
+                    spec.api_user, spec.api_password, host, spec.api_port or '5000')
+                gw = gateways.get(host)
+                if not gw or gw['service_url'] != service_url:
                     logger.info('Adding iSCSI gateway %s to Dashboard', service_url)
-                    _, out, _ = self.mgr.check_mon_command({
+                    cmd_dicts.append({
                         'prefix': 'dashboard iscsi-gateway-add',
                         'service_url': service_url,
-                        'name': dd.hostname
+                        'name': host
                     })
-                except MonCommandFailed as e:
-                    logger.warning(
-                        'Failed to add iSCSI gateway %s to the Dashboard: %s', service_url, e)
+            return cmd_dicts
+
+        self._check_and_set_dashboard(
+            service_name='iSCSI',
+            get_cmd='dashboard iscsi-gateway-list',
+            get_set_cmd_dicts=get_set_cmd_dicts
+        )
index b17a448755b272e3f8d43dd43e9ed8cdc6b181ed..cc4d1416b65ad1752ebbc0e49487509589c8de17 100644 (file)
@@ -3,20 +3,23 @@ import os
 from typing import List, Any, Tuple, Dict
 
 from orchestrator import DaemonDescription
-from cephadm.services.cephadmservice import CephadmService
+from ceph.deployment.service_spec import AlertManagerSpec
+from cephadm.services.cephadmservice import CephadmService, CephadmDaemonSpec
 from mgr_util import verify_tls, ServerConfigException, create_self_signed_cert
 
 logger = logging.getLogger(__name__)
 
+
 class GrafanaService(CephadmService):
+    TYPE = 'grafana'
     DEFAULT_SERVICE_PORT = 3000
 
-    def create(self, daemon_id, host):
-        # type: (str, str) -> str
-        return self.mgr._create_daemon('grafana', daemon_id, host)
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        return self.mgr._create_daemon(daemon_spec)
 
-    def generate_config(self):
-        # type: () -> Tuple[Dict[str, Any], List[str]]
+    def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
+        assert self.TYPE == daemon_spec.daemon_type
         deps = []  # type: List[str]
 
         prom_services = []  # type: List[str]
@@ -60,7 +63,7 @@ class GrafanaService(CephadmService):
         # Use the least-created one as the active daemon
         return daemon_descrs[-1]
 
-    def daemon_check_post(self, daemon_descrs: List[DaemonDescription]):
+    def config_dashboard(self, daemon_descrs: List[DaemonDescription]):
         # TODO: signed cert
         dd = self.get_active_daemon(daemon_descrs)
         service_url = 'https://{}:{}'.format(
@@ -72,18 +75,29 @@ class GrafanaService(CephadmService):
             service_url
         )
 
+
 class AlertmanagerService(CephadmService):
+    TYPE = 'alertmanager'
     DEFAULT_SERVICE_PORT = 9093
 
-    def create(self, daemon_id, host) -> str:
-        return self.mgr._create_daemon('alertmanager', daemon_id, host)
+    def create(self, daemon_spec: CephadmDaemonSpec[AlertManagerSpec]) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        assert daemon_spec.spec
+        return self.mgr._create_daemon(daemon_spec)
+
+    def generate_config(self, daemon_spec: CephadmDaemonSpec[AlertManagerSpec]) -> Tuple[Dict[str, Any], List[str]]:
+        assert self.TYPE == daemon_spec.daemon_type
+        deps: List[str] = []
+        default_webhook_urls: List[str] = []
 
-    def generate_config(self):
-        # type: () -> Tuple[Dict[str, Any], List[str]]
-        deps = [] # type: List[str]
+        if daemon_spec.spec:
+            user_data = daemon_spec.spec.user_data
+            if 'default_webhook_urls' in user_data and isinstance(
+                    user_data['default_webhook_urls'], list):
+                default_webhook_urls.extend(user_data['default_webhook_urls'])
 
         # dashboard(s)
-        dashboard_urls = []
+        dashboard_urls: List[str] = []
         mgr_map = self.mgr.get('mgr_map')
         port = None
         proto = None  # http: or https:
@@ -107,7 +121,8 @@ class AlertmanagerService(CephadmService):
                                                   port))
 
         context = {
-            'dashboard_urls': dashboard_urls
+            'dashboard_urls': dashboard_urls,
+            'default_webhook_urls': default_webhook_urls
         }
         yml = self.mgr.template.render('services/alertmanager/alertmanager.yml.j2', context)
 
@@ -128,7 +143,7 @@ class AlertmanagerService(CephadmService):
         # TODO: if there are multiple daemons, who is the active one?
         return daemon_descrs[0]
 
-    def daemon_check_post(self, daemon_descrs: List[DaemonDescription]):
+    def config_dashboard(self, daemon_descrs: List[DaemonDescription]):
         dd = self.get_active_daemon(daemon_descrs)
         service_url = 'http://{}:{}'.format(self._inventory_get_addr(dd.hostname), self.DEFAULT_SERVICE_PORT)
         self._set_service_url_on_dashboard(
@@ -140,13 +155,15 @@ class AlertmanagerService(CephadmService):
 
 
 class PrometheusService(CephadmService):
+    TYPE = 'prometheus'
     DEFAULT_SERVICE_PORT = 9095
 
-    def create(self, daemon_id, host) -> str:
-        return self.mgr._create_daemon('prometheus', daemon_id, host)
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        return self.mgr._create_daemon(daemon_spec)
 
-    def generate_config(self):
-        # type: () -> Tuple[Dict[str, Any], List[str]]
+    def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
+        assert self.TYPE == daemon_spec.daemon_type
         deps = []  # type: List[str]
 
         # scrape mgrs
@@ -216,7 +233,7 @@ class PrometheusService(CephadmService):
         # TODO: if there are multiple daemons, who is the active one?
         return daemon_descrs[0]
 
-    def daemon_check_post(self, daemon_descrs: List[DaemonDescription]):
+    def config_dashboard(self, daemon_descrs: List[DaemonDescription]):
         dd = self.get_active_daemon(daemon_descrs)
         service_url = 'http://{}:{}'.format(
             self._inventory_get_addr(dd.hostname), self.DEFAULT_SERVICE_PORT)
@@ -227,9 +244,14 @@ class PrometheusService(CephadmService):
             service_url
         )
 
+
 class NodeExporterService(CephadmService):
-    def create(self, daemon_id, host) -> str:
-        return self.mgr._create_daemon('node-exporter', daemon_id, host)
+    TYPE = 'node-exporter'
+
+    def create(self, daemon_spec: CephadmDaemonSpec) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        return self.mgr._create_daemon(daemon_spec)
 
-    def generate_config(self) -> Tuple[Dict[str, Any], List[str]]:
+    def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
+        assert self.TYPE == daemon_spec.daemon_type
         return {}, []
index 4c7f79133491a6b08fec8cf36fba9a651d40e51b..6824053ff20bb61afbb62256431c54f30fc39b04 100644 (file)
@@ -1,28 +1,35 @@
 import logging
+from typing import TYPE_CHECKING, Dict, Optional, Tuple, Any, List, Set, cast
 
+from ceph.deployment.service_spec import NFSServiceSpec
 import rados
-from typing import Dict, Optional, Tuple, Any, List, cast
 
-from ceph.deployment.service_spec import NFSServiceSpec
+from orchestrator import OrchestratorError, DaemonDescription
 
-import orchestrator
-from orchestrator import OrchestratorError
+from cephadm import utils
+from cephadm.services.cephadmservice import CephadmService, CephadmDaemonSpec
 
-import cephadm
-from .. import utils
+if TYPE_CHECKING:
+    from cephadm.module import CephadmOrchestrator
 
-from .cephadmservice import CephadmService
 logger = logging.getLogger(__name__)
 
 
 class NFSService(CephadmService):
-    def _generate_nfs_config(self, daemon_type, daemon_id, host):
-        # type: (str, str, str) -> Tuple[Dict[str, Any], List[str]]
-        deps = []  # type: List[str]
+    TYPE = 'nfs'
+
+    def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
+        assert self.TYPE == daemon_spec.daemon_type
+
+        daemon_type = daemon_spec.daemon_type
+        daemon_id = daemon_spec.daemon_id
+        host = daemon_spec.host
+
+        deps: List[str] = []
 
         # find the matching NFSServiceSpec
         # TODO: find the spec and pass via _create_daemon instead ??
-        dd = orchestrator.DaemonDescription()
+        dd = DaemonDescription()
         dd.daemon_type = daemon_type
         dd.daemon_id = daemon_id
         dd.hostname = host
@@ -53,49 +60,84 @@ class NFSService(CephadmService):
         # generate the cephadm config
         cephadm_config = nfs.get_cephadm_config()
         cephadm_config.update(
-                self.mgr._get_config_and_keyring(
-                    daemon_type, daemon_id,
-                    keyring=keyring))
+            self.mgr._get_config_and_keyring(
+                daemon_type, daemon_id,
+                keyring=keyring,
+                host=host
+            )
+        )
 
         return cephadm_config, deps
 
-    def config(self, spec):
+    def config(self, spec: NFSServiceSpec) -> None:
+        assert self.TYPE == spec.service_type
         self.mgr._check_pool_exists(spec.pool, spec.service_name())
+
         logger.info('Saving service %s spec with placement %s' % (
             spec.service_name(), spec.placement.pretty_str()))
         self.mgr.spec_store.save(spec)
 
-    def create(self, daemon_id, host, spec):
+    def create(self, daemon_spec: CephadmDaemonSpec[NFSServiceSpec]) -> str:
+        assert self.TYPE == daemon_spec.daemon_type
+        assert daemon_spec.spec
+
+        daemon_id = daemon_spec.daemon_id
+        host = daemon_spec.host
+        spec = daemon_spec.spec
+
         logger.info('Create daemon %s on host %s with spec %s' % (
             daemon_id, host, spec))
-        return self.mgr._create_daemon('nfs', daemon_id, host)
+        return self.mgr._create_daemon(daemon_spec)
+
+    def config_dashboard(self, daemon_descrs: List[DaemonDescription]):
+
+        def get_set_cmd_dicts(out: str) -> List[dict]:
+            locations: Set[str] = set()
+            for dd in daemon_descrs:
+                spec = cast(NFSServiceSpec,
+                            self.mgr.spec_store.specs.get(dd.service_name(), None))
+                if not spec or not spec.service_id:
+                    logger.warning('No ServiceSpec or service_id found for %s', dd)
+                    continue
+                location = '{}:{}'.format(spec.service_id, spec.pool)
+                if spec.namespace:
+                    location = '{}/{}'.format(location, spec.namespace)
+                locations.add(location)
+            new_value = ','.join(locations)
+            if new_value and new_value != out:
+                return [{'prefix': 'dashboard set-ganesha-clusters-rados-pool-namespace',
+                         'value': new_value}]
+            return []
+
+        self._check_and_set_dashboard(
+            service_name='Ganesha',
+            get_cmd='dashboard get-ganesha-clusters-rados-pool-namespace',
+            get_set_cmd_dicts=get_set_cmd_dicts
+        )
 
 
 class NFSGanesha(object):
     def __init__(self,
-                 mgr,
-                 daemon_id,
-                 spec):
-        # type: (cephadm.CephadmOrchestrator, str, NFSServiceSpec) -> None
+                 mgr: "CephadmOrchestrator",
+                 daemon_id: str,
+                 spec: NFSServiceSpec) -> None:
         assert spec.service_id and daemon_id.startswith(spec.service_id)
+        mgr._check_pool_exists(spec.pool, spec.service_name())
+
         self.mgr = mgr
         self.daemon_id = daemon_id
         self.spec = spec
 
-    def get_daemon_name(self):
-        # type: () -> str
+    def get_daemon_name(self) -> str:
         return '%s.%s' % (self.spec.service_type, self.daemon_id)
 
-    def get_rados_user(self):
-        # type: () -> str
+    def get_rados_user(self) -> str:
         return '%s.%s' % (self.spec.service_type, self.daemon_id)
 
-    def get_keyring_entity(self):
-        # type: () -> str
+    def get_keyring_entity(self) -> str:
         return utils.name_to_config_section(self.get_rados_user())
 
-    def get_or_create_keyring(self, entity=None):
-        # type: (Optional[str]) -> str
+    def get_or_create_keyring(self, entity: Optional[str] = None) -> str:
         if not entity:
             entity = self.get_keyring_entity()
 
@@ -107,18 +149,17 @@ class NFSGanesha(object):
 
         if ret != 0:
             raise OrchestratorError(
-                    'Unable to create keyring %s: %s %s' \
-                            % (entity, ret, err))
+                'Unable to create keyring %s: %s %s'
+                % (entity, ret, err))
         return keyring
 
-    def update_keyring_caps(self, entity=None):
-        # type: (Optional[str]) -> None
+    def update_keyring_caps(self, entity: Optional[str] = None) -> None:
         if not entity:
             entity = self.get_keyring_entity()
 
-        osd_caps='allow rw pool=%s' % (self.spec.pool)
+        osd_caps = 'allow rw pool=%s' % (self.spec.pool)
         if self.spec.namespace:
-            osd_caps='%s namespace=%s' % (osd_caps, self.spec.namespace)
+            osd_caps = '%s namespace=%s' % (osd_caps, self.spec.namespace)
 
         logger.info('Updating keyring caps: %s' % entity)
         ret, out, err = self.mgr.mon_command({
@@ -130,17 +171,15 @@ class NFSGanesha(object):
 
         if ret != 0:
             raise OrchestratorError(
-                    'Unable to update keyring caps %s: %s %s' \
-                            % (entity, ret, err))
-
-    def create_rados_config_obj(self, clobber=False):
-        # type: (Optional[bool]) -> None
-        obj = self.spec.rados_config_name()
+                'Unable to update keyring caps %s: %s %s'
+                % (entity, ret, err))
 
+    def create_rados_config_obj(self, clobber: Optional[bool] = False) -> None:
         with self.mgr.rados.open_ioctx(self.spec.pool) as ioctx:
             if self.spec.namespace:
                 ioctx.set_namespace(self.spec.namespace)
 
+            obj = self.spec.rados_config_name()
             exists = True
             try:
                 ioctx.stat(obj)
@@ -155,8 +194,7 @@ class NFSGanesha(object):
                 logger.info('Creating rados config object: %s' % obj)
                 ioctx.write_full(obj, ''.encode('utf-8'))
 
-    def get_ganesha_conf(self):
-        # type: () -> str
+    def get_ganesha_conf(self) -> str:
         context = dict(user=self.get_rados_user(),
                        nodeid=self.get_daemon_name(),
                        pool=self.spec.pool,
@@ -164,15 +202,14 @@ class NFSGanesha(object):
                        url=self.spec.rados_config_location())
         return self.mgr.template.render('services/nfs/ganesha.conf.j2', context)
 
-    def get_cephadm_config(self):
-        # type: () -> Dict
-        config = {'pool' : self.spec.pool} # type: Dict
+    def get_cephadm_config(self) -> Dict[str, Any]:
+        config: Dict[str, Any] = {'pool': self.spec.pool}
         if self.spec.namespace:
             config['namespace'] = self.spec.namespace
         config['userid'] = self.get_rados_user()
         config['extra_args'] = ['-N', 'NIV_EVENT']
         config['files'] = {
-            'ganesha.conf' : self.get_ganesha_conf(),
+            'ganesha.conf': self.get_ganesha_conf(),
         }
         logger.debug('Generated cephadm config-json: %s' % config)
         return config
index 1e6db9b0da9149927c4fcd0e09b6257c15c46299..b1c3edbf5bc3bfa410876817711daf6c70df5492 100644 (file)
@@ -1,4 +1,3 @@
-import datetime
 import json
 import logging
 from typing import List, Dict, Any, Set, Union, Tuple, cast, Optional
@@ -7,38 +6,43 @@ from ceph.deployment import translate
 from ceph.deployment.drive_group import DriveGroupSpec
 from ceph.deployment.drive_selection import DriveSelection
 
+from datetime import datetime
 import orchestrator
+from cephadm.utils import forall_hosts
 from orchestrator import OrchestratorError
 from mgr_module import MonCommandFailed
 
-from cephadm.services.cephadmservice import CephadmService
-
+from cephadm.services.cephadmservice import CephadmService, CephadmDaemonSpec
 
 logger = logging.getLogger(__name__)
+DATEFMT = '%Y-%m-%dT%H:%M:%S.%f'
 
 
 class OSDService(CephadmService):
-    def create(self, drive_group: DriveGroupSpec) -> str:
+    TYPE = 'osd'
+
+    def create_from_spec(self, drive_group: DriveGroupSpec) -> str:
         logger.debug(f"Processing DriveGroup {drive_group}")
-        ret = []
-        drive_group.osd_id_claims = self.find_destroyed_osds()
-        logger.info(f"Found osd claims for drivegroup {drive_group.service_id} -> {drive_group.osd_id_claims}")
-        for host, drive_selection in self.prepare_drivegroup(drive_group):
+        osd_id_claims = self.find_destroyed_osds()
+        logger.info(f"Found osd claims for drivegroup {drive_group.service_id} -> {osd_id_claims}")
+
+        @forall_hosts
+        def create_from_spec_one(host: str, drive_selection: DriveSelection) -> Optional[str]:
             logger.info('Applying %s on host %s...' % (drive_group.service_id, host))
-            cmd = self.driveselection_to_ceph_volume(drive_group, drive_selection,
-                                                     drive_group.osd_id_claims.get(host, []))
+            cmd = self.driveselection_to_ceph_volume(drive_selection,
+                                                     osd_id_claims.get(host, []))
             if not cmd:
                 logger.debug("No data_devices, skipping DriveGroup: {}".format(drive_group.service_id))
-                continue
-            # env_vars = [f"CEPH_VOLUME_OSDSPEC_AFFINITY={drive_group.service_id}"]
-            # disable this until https://github.com/ceph/ceph/pull/34835 is merged
-            env_vars: List[str] = []
+                return None
+            env_vars: List[str] = [f"CEPH_VOLUME_OSDSPEC_AFFINITY={drive_group.service_id}"]
             ret_msg = self.create_single_host(
-                host, cmd, replace_osd_ids=drive_group.osd_id_claims.get(host, []), env_vars=env_vars
+                host, cmd, replace_osd_ids=osd_id_claims.get(host, []), env_vars=env_vars
             )
-            ret.append(ret_msg)
-        return ", ".join(ret)
-        
+            return ret_msg
+
+        ret = create_from_spec_one(self.prepare_drivegroup(drive_group))
+        return ", ".join(filter(None, ret))
+
     def create_single_host(self, host: str, cmd: str, replace_osd_ids=None, env_vars: Optional[List[str]] = None) -> str:
         out, err, code = self._run_ceph_volume_command(host, cmd, env_vars=env_vars)
 
@@ -85,8 +89,13 @@ class OSDService(CephadmService):
                     continue
 
                 created.append(osd_id)
+                daemon_spec: CephadmDaemonSpec = CephadmDaemonSpec(
+                    daemon_id=osd_id,
+                    host=host,
+                    daemon_type='osd',
+                )
                 self.mgr._create_daemon(
-                    'osd', osd_id, host,
+                    daemon_spec,
                     osd_uuid_map=osd_uuid_map)
 
         if created:
@@ -120,19 +129,19 @@ class OSDService(CephadmService):
             host_ds_map.append((host, drive_selection))
         return host_ds_map
 
-    def driveselection_to_ceph_volume(self, drive_group: DriveGroupSpec,
+    def driveselection_to_ceph_volume(self,
                                       drive_selection: DriveSelection,
                                       osd_id_claims: Optional[List[str]] = None,
                                       preview: bool = False) -> Optional[str]:
-        logger.debug(f"Translating DriveGroup <{drive_group}> to ceph-volume command")
-        cmd: Optional[str] = translate.to_ceph_volume(drive_group, drive_selection,
+        logger.debug(f"Translating DriveGroup <{drive_selection.spec}> to ceph-volume command")
+        cmd: Optional[str] = translate.to_ceph_volume(drive_selection,
                                                       osd_id_claims, preview=preview).run()
         logger.debug(f"Resulting ceph-volume cmd: {cmd}")
         return cmd
 
     def get_previews(self, host) -> List[Dict[str, Any]]:
         # Find OSDSpecs that match host.
-        osdspecs = self.mgr.resolve_osdspecs_for_host(host)
+        osdspecs = self.resolve_osdspecs_for_host(host)
         return self.generate_previews(osdspecs, host)
 
     def generate_previews(self, osdspecs: List[DriveGroupSpec], for_host: str) -> List[Dict[str, Any]]:
@@ -161,7 +170,7 @@ class OSDService(CephadmService):
         for osdspec in osdspecs:
 
             # populate osd_id_claims
-            osdspec.osd_id_claims = self.find_destroyed_osds()
+            osd_id_claims = self.find_destroyed_osds()
 
             # prepare driveselection
             for host, ds in self.prepare_drivegroup(osdspec):
@@ -169,9 +178,8 @@ class OSDService(CephadmService):
                     continue
 
                 # driveselection for host
-                cmd = self.driveselection_to_ceph_volume(osdspec,
-                                                         ds,
-                                                         osdspec.osd_id_claims.get(host, []),
+                cmd = self.driveselection_to_ceph_volume(ds,
+                                                         osd_id_claims.get(host, []),
                                                          preview=True)
                 if not cmd:
                     logger.debug("No data_devices, skipping DriveGroup: {}".format(
@@ -187,6 +195,29 @@ class OSDService(CephadmService):
                                     'host': host})
         return ret_all
 
+    def resolve_hosts_for_osdspecs(self,
+                                   specs: Optional[List[DriveGroupSpec]] = None
+                                   ) -> List[str]:
+        osdspecs = []
+        if specs:
+            osdspecs = [cast(DriveGroupSpec, spec) for spec in specs]
+        if not osdspecs:
+            self.mgr.log.debug("No OSDSpecs found")
+            return []
+        return sum([spec.placement.filter_matching_hosts(self.mgr._get_hosts) for spec in osdspecs], [])
+
+    def resolve_osdspecs_for_host(self, host: str, specs: Optional[List[DriveGroupSpec]] = None):
+        matching_specs = []
+        self.mgr.log.debug(f"Finding OSDSpecs for host: <{host}>")
+        if not specs:
+            specs = [cast(DriveGroupSpec, spec) for (sn, spec) in self.mgr.spec_store.spec_preview.items()
+                     if spec.service_type == 'osd']
+        for spec in specs:
+            if host in spec.placement.filter_matching_hosts(self.mgr._get_hosts):
+                self.mgr.log.debug(f"Found OSDSpecs for host: <{host}> -> <{spec}>")
+                matching_specs.append(spec)
+        return matching_specs
+
     def _run_ceph_volume_command(self, host: str,
                                  cmd: str, env_vars: Optional[List[str]] = None
                                  ) -> Tuple[List[str], List[str], int]:
@@ -250,139 +281,148 @@ class OSDService(CephadmService):
         return osd_host_map
 
 
-class OSDRemoval(object):
-    def __init__(self,
-                 osd_id: str,
-                 replace: bool,
-                 force: bool,
-                 nodename: str,
-                 fullname: str,
-                 start_at: datetime.datetime,
-                 pg_count: int):
-        self.osd_id = osd_id
-        self.replace = replace
-        self.force = force
-        self.nodename = nodename
-        self.fullname = fullname
-        self.started_at = start_at
-        self.pg_count = pg_count
-
-    # needed due to changing 'started_at' attr
-    def __eq__(self, other):
-        return self.osd_id == other.osd_id
-
-    def __hash__(self):
-        return hash(self.osd_id)
-
-    def __repr__(self):
-        return ('<OSDRemoval>(osd_id={}, replace={}, force={}, nodename={}'
-                ', fullname={}, started_at={}, pg_count={})').format(
-            self.osd_id, self.replace, self.force, self.nodename,
-            self.fullname, self.started_at, self.pg_count)
-
-    @property
-    def pg_count_str(self) -> str:
-        return 'n/a' if self.pg_count < 0 else str(self.pg_count)
-
-
 class RemoveUtil(object):
     def __init__(self, mgr):
         self.mgr = mgr
-        self.to_remove_osds: Set[OSDRemoval] = set()
-        self.osd_removal_report: Dict[OSDRemoval, Union[int,str]] = dict()
-
-    @property
-    def report(self) -> Set[OSDRemoval]:
-        return self.to_remove_osds.copy()
 
-    def queue_osds_for_removal(self, osds: Set[OSDRemoval]):
-        self.to_remove_osds.update(osds)
-
-    def _remove_osds_bg(self) -> None:
+    def process_removal_queue(self) -> None:
         """
         Performs actions in the _serve() loop to remove an OSD
         when criteria is met.
         """
+
+        # make sure that we don't run on OSDs that are not in the cluster anymore.
+        self.cleanup()
+
         logger.debug(
-            f"{len(self.to_remove_osds)} OSDs are scheduled for removal: {list(self.to_remove_osds)}")
-        self._update_osd_removal_status()
-        remove_osds: set = self.to_remove_osds.copy()
-        for osd in remove_osds:
+            f"{self.mgr.to_remove_osds.queue_size()} OSDs are scheduled "
+            f"for removal: {self.mgr.to_remove_osds.all_osds()}")
+
+        # find osds that are ok-to-stop and not yet draining
+        ok_to_stop_osds = self.find_osd_stop_threshold(self.mgr.to_remove_osds.idling_osds())
+        if ok_to_stop_osds:
+            # start draining those
+            _ = [osd.start_draining() for osd in ok_to_stop_osds]
+
+        # Check all osds for their state and take action (remove, purge etc)
+        to_remove_osds = self.mgr.to_remove_osds.all_osds()
+        new_queue = set()
+        for osd in to_remove_osds:
             if not osd.force:
-                self.drain_osd(osd.osd_id)
                 # skip criteria
-                if not self.is_empty(osd.osd_id):
+                if not osd.is_empty:
                     logger.info(f"OSD <{osd.osd_id}> is not empty yet. Waiting a bit more")
+                    new_queue.add(osd)
                     continue
 
-            if not self.ok_to_destroy([osd.osd_id]):
+            if not osd.safe_to_destroy():
                 logger.info(
                     f"OSD <{osd.osd_id}> is not safe-to-destroy yet. Waiting a bit more")
+                new_queue.add(osd)
                 continue
 
             # abort criteria
-            if not self.down_osd([osd.osd_id]):
+            if not osd.down():
                 # also remove it from the remove_osd list and set a health_check warning?
                 raise orchestrator.OrchestratorError(
                     f"Could not set OSD <{osd.osd_id}> to 'down'")
 
             if osd.replace:
-                if not self.destroy_osd(osd.osd_id):
-                    # also remove it from the remove_osd list and set a health_check warning?
+                if not osd.destroy():
                     raise orchestrator.OrchestratorError(
                         f"Could not destroy OSD <{osd.osd_id}>")
             else:
-                if not self.purge_osd(osd.osd_id):
-                    # also remove it from the remove_osd list and set a health_check warning?
+                if not osd.purge():
                     raise orchestrator.OrchestratorError(f"Could not purge OSD <{osd.osd_id}>")
 
+            if not osd.exists:
+                continue
             self.mgr._remove_daemon(osd.fullname, osd.nodename)
             logger.info(f"Successfully removed OSD <{osd.osd_id}> on {osd.nodename}")
             logger.debug(f"Removing {osd.osd_id} from the queue.")
-            self.to_remove_osds.remove(osd)
 
-    def _update_osd_removal_status(self):
-        """
-        Generate a OSD report that can be printed to the CLI
-        """
-        logger.debug("Update OSD removal status")
-        for osd in self.to_remove_osds:
-            osd.pg_count = self.get_pg_count(str(osd.osd_id))
-        logger.debug(f"OSD removal status: {self.to_remove_osds}")
+        # self.mgr.to_remove_osds could change while this is processing (osds get added from the CLI)
+        # The new set is: 'an intersection of all osds that are still not empty/removed (new_queue) and
+        # osds that were added while this method was executed'
+        self.mgr.to_remove_osds.intersection_update(new_queue)
+        self.save_to_store()
+
+    def cleanup(self):
+        # OSDs can always be cleaned up manually. This ensures that we run on existing OSDs
+        not_in_cluster_osds = self.mgr.to_remove_osds.not_in_cluster()
+        [self.mgr.to_remove_osds.remove(osd) for osd in not_in_cluster_osds]
+
+    def get_osds_in_cluster(self) -> List[str]:
+        osd_map = self.mgr.get_osdmap()
+        return [str(x.get('osd')) for x in osd_map.dump().get('osds', [])]
+
+    def osd_df(self) -> dict:
+        base_cmd = 'osd df'
+        ret, out, err = self.mgr.mon_command({
+            'prefix': base_cmd,
+            'format': 'json'
+        })
+        return json.loads(out)
+
+    def get_pg_count(self, osd_id: int, osd_df: Optional[dict] = None) -> int:
+        if not osd_df:
+            osd_df = self.osd_df()
+        osd_nodes = osd_df.get('nodes', [])
+        for osd_node in osd_nodes:
+            if osd_node.get('id') == int(osd_id):
+                return osd_node.get('pgs', -1)
+        return -1
 
-    def drain_osd(self, osd_id: str) -> bool:
+    def find_osd_stop_threshold(self, osds: List["OSD"]) -> Optional[List["OSD"]]:
         """
-        Uses `osd_support` module to schedule a drain operation of an OSD
+        Cut osd_id list in half until it's ok-to-stop
+
+        :param osds: list of osd_ids
+        :return: list of ods_ids that can be stopped at once
         """
+        if not osds:
+            return []
+        while not self.ok_to_stop(osds):
+            if len(osds) <= 1:
+                # can't even stop one OSD, aborting
+                self.mgr.log.info("Can't even stop one OSD. Cluster is probably busy. Retrying later..")
+                return []
+
+            # This potentially prolongs the global wait time.
+            self.mgr.event.wait(1)
+            # splitting osd_ids in half until ok_to_stop yields success
+            # maybe popping ids off one by one is better here..depends on the cluster size I guess..
+            # There's a lot of room for micro adjustments here
+            osds = osds[len(osds) // 2:]
+        return osds
+
+       # todo start draining
+       #  return all([osd.start_draining() for osd in osds])
+
+    def ok_to_stop(self, osds: List["OSD"]) -> bool:
         cmd_args = {
-            'prefix': 'osd drain',
-            'osd_ids': [int(osd_id)]
+            'prefix': "osd ok-to-stop",
+            'ids': [str(osd.osd_id) for osd in osds]
         }
         return self._run_mon_cmd(cmd_args)
 
-    def get_pg_count(self, osd_id: str) -> int:
-        """ Queries for PG count of an OSD """
-        self.mgr.log.debug("Querying for drain status")
+    def set_osd_flag(self, osds: List["OSD"], flag: str) -> bool:
+        base_cmd = f"osd {flag}"
+        self.mgr.log.debug(f"running cmd: {base_cmd} on ids {osds}")
         ret, out, err = self.mgr.mon_command({
-            'prefix': 'osd drain status',
+            'prefix': base_cmd,
+            'ids': [str(osd.osd_id) for osd in osds]
         })
         if ret != 0:
-            self.mgr.log.error(f"Calling osd drain status failed with {err}")
-            raise OrchestratorError("Could not query `osd drain status`")
-        out = json.loads(out)
-        for o in out:
-            if str(o.get('osd_id', '')) == str(osd_id):
-                return int(o.get('pgs', -1))
-        return -1
-
-    def is_empty(self, osd_id: str) -> bool:
-        """ Checks if an OSD is empty """
-        return self.get_pg_count(osd_id) == 0
+            self.mgr.log.error(f"Could not set <{flag}> flag for osds: {osds}. <{err}>")
+            return False
+        self.mgr.log.info(f"OSDs <{osds}> are now <{flag}>")
+        return True
 
-    def ok_to_destroy(self, osd_ids: List[int]) -> bool:
+    def safe_to_destroy(self, osd_ids: List[int]) -> bool:
         """ Queries the safe-to-destroy flag for OSDs """
         cmd_args = {'prefix': 'osd safe-to-destroy',
-                    'ids': osd_ids}
+                    'ids': [str(x) for x in osd_ids]}
         return self._run_mon_cmd(cmd_args)
 
     def destroy_osd(self, osd_id: int) -> bool:
@@ -392,14 +432,6 @@ class RemoveUtil(object):
                     'yes_i_really_mean_it': True}
         return self._run_mon_cmd(cmd_args)
 
-    def down_osd(self, osd_ids: List[int]) -> bool:
-        """ Sets `out` flag to OSDs """
-        cmd_args = {
-            'prefix': 'osd down',
-            'ids': osd_ids,
-        }
-        return self._run_mon_cmd(cmd_args)
-
     def purge_osd(self, osd_id: int) -> bool:
         """ Purges an OSD from the cluster (forcefully) """
         cmd_args = {
@@ -409,14 +441,6 @@ class RemoveUtil(object):
         }
         return self._run_mon_cmd(cmd_args)
 
-    def out_osd(self, osd_ids: List[int]) -> bool:
-        """ Sets `down` flag to OSDs """
-        cmd_args = {
-            'prefix': 'osd out',
-            'ids': osd_ids,
-        }
-        return self._run_mon_cmd(cmd_args)
-
     def _run_mon_cmd(self, cmd_args: dict) -> bool:
         """
         Generic command to run mon_command and evaluate/log the results
@@ -428,3 +452,237 @@ class RemoveUtil(object):
             return False
         self.mgr.log.debug(f"cmd: {cmd_args.get('prefix')} returns: {out}")
         return True
+
+    def save_to_store(self):
+        osd_queue = [osd.to_json() for osd in self.mgr.to_remove_osds.all_osds()]
+        logger.debug(f"Saving {osd_queue} to store")
+        self.mgr.set_store('osd_remove_queue', json.dumps(osd_queue))
+
+    def load_from_store(self):
+        for k, v in self.mgr.get_store_prefix('osd_remove_queue').items():
+            for osd in json.loads(v):
+                logger.debug(f"Loading osd ->{osd} from store")
+                osd_obj = OSD.from_json(json.loads(osd), ctx=self)
+                self.mgr.to_remove_osds.add(osd_obj)
+
+
+class NotFoundError(Exception):
+    pass
+
+
+class OSD:
+
+    def __init__(self,
+                 osd_id: int,
+                 remove_util: RemoveUtil,
+                 drain_started_at: Optional[datetime] = None,
+                 process_started_at: Optional[datetime] = None,
+                 drain_stopped_at: Optional[datetime] = None,
+                 drain_done_at: Optional[datetime] = None,
+                 draining: bool = False,
+                 started: bool = False,
+                 stopped: bool = False,
+                 replace: bool = False,
+                 force: bool = False,
+                 hostname: Optional[str] = None,
+                 fullname: Optional[str] = None,
+                 ):
+        # the ID of the OSD
+        self.osd_id = osd_id
+
+        # when did process (not the actual draining) start
+        self.process_started_at = process_started_at
+
+        # when did the drain start
+        self.drain_started_at = drain_started_at
+
+        # when did the drain stop
+        self.drain_stopped_at = drain_stopped_at
+
+        # when did the drain finish
+        self.drain_done_at = drain_done_at
+
+        # did the draining start
+        self.draining = draining
+
+        # was the operation started
+        self.started = started
+
+        # was the operation stopped
+        self.stopped = stopped
+
+        # If this is a replace or remove operation
+        self.replace = replace
+        # If we wait for the osd to be drained
+        self.force = force
+        # The name of the node
+        self.nodename = hostname
+        # The full name of the osd
+        self.fullname = fullname
+
+        # mgr obj to make mgr/mon calls
+        self.rm_util = remove_util
+
+    def start(self) -> None:
+        if self.started:
+            logger.debug(f"Already started draining {self}")
+            return None
+        self.started = True
+        self.stopped = False
+
+    def start_draining(self) -> bool:
+        if self.stopped:
+            logger.debug(f"Won't start draining {self}. OSD draining is stopped.")
+            return False
+        self.rm_util.set_osd_flag([self], 'out')
+        self.drain_started_at = datetime.utcnow()
+        self.draining = True
+        logger.debug(f"Started draining {self}.")
+        return True
+
+    def stop_draining(self) -> bool:
+        self.rm_util.set_osd_flag([self], 'in')
+        self.drain_stopped_at = datetime.utcnow()
+        self.draining = False
+        logger.debug(f"Stopped draining {self}.")
+        return True
+
+    def stop(self) -> None:
+        if self.stopped:
+            logger.debug(f"Already stopped draining {self}")
+            return None
+        self.started = False
+        self.stopped = True
+        self.stop_draining()
+
+    @property
+    def is_draining(self) -> bool:
+        """
+        Consider an OSD draining when it is
+        actively draining but not yet empty
+        """
+        return self.draining and not self.is_empty
+
+    @property
+    def is_ok_to_stop(self) -> bool:
+        return self.rm_util.ok_to_stop([self])
+
+    @property
+    def is_empty(self) -> bool:
+        if self.get_pg_count() == 0:
+            if not self.drain_done_at:
+                self.drain_done_at = datetime.utcnow()
+                self.draining = False
+            return True
+        return False
+
+    def safe_to_destroy(self) -> bool:
+        return self.rm_util.safe_to_destroy([self.osd_id])
+
+    def down(self) -> bool:
+        return self.rm_util.set_osd_flag([self], 'down')
+
+    def destroy(self) -> bool:
+        return self.rm_util.destroy_osd(self.osd_id)
+
+    def purge(self) -> bool:
+        return self.rm_util.purge_osd(self.osd_id)
+
+    def get_pg_count(self) -> int:
+        return self.rm_util.get_pg_count(self.osd_id)
+
+    @property
+    def exists(self) -> bool:
+        return str(self.osd_id) in self.rm_util.get_osds_in_cluster()
+
+    def drain_status_human(self):
+        default_status = 'not started'
+        status = 'started' if self.started and not self.draining else default_status
+        status = 'draining' if self.draining else status
+        status = 'done, waiting for purge' if self.drain_done_at and not self.draining else status
+        return status
+
+    def pg_count_str(self):
+        return 'n/a' if self.get_pg_count() < 0 else str(self.get_pg_count())
+
+    def to_json(self) -> dict:
+        out = dict()
+        out['osd_id'] = self.osd_id
+        out['started'] = self.started
+        out['draining'] = self.draining
+        out['stopped'] = self.stopped
+        out['replace'] = self.replace
+        out['force'] = self.force
+        out['nodename'] = self.nodename  # type: ignore
+
+        for k in ['drain_started_at', 'drain_stopped_at', 'drain_done_at', 'process_started_at']:
+            if getattr(self, k):
+                out[k] = getattr(self, k).strftime(DATEFMT)
+            else:
+                out[k] = getattr(self, k)
+        return out
+
+    @classmethod
+    def from_json(cls, inp: Optional[Dict[str, Any]], ctx: Optional[RemoveUtil] = None) -> Optional["OSD"]:
+        if not inp:
+            return None
+        for date_field in ['drain_started_at', 'drain_stopped_at', 'drain_done_at', 'process_started_at']:
+            if inp.get(date_field):
+                inp.update({date_field: datetime.strptime(inp.get(date_field, ''), DATEFMT)})
+        inp.update({'remove_util': ctx})
+        return cls(**inp)
+
+    def __hash__(self):
+        return hash(self.osd_id)
+
+    def __eq__(self, other: object) -> bool:
+        if not isinstance(other, OSD):
+            return NotImplemented
+        return self.osd_id == other.osd_id
+
+    def __repr__(self) -> str:
+        return f"<OSD>(osd_id={self.osd_id}, is_draining={self.is_draining})"
+
+
+class OSDQueue(Set):
+
+    def __init__(self):
+        super().__init__()
+
+    def as_osd_ids(self) -> List[int]:
+        return [osd.osd_id for osd in self]
+
+    def queue_size(self) -> int:
+        return len(self)
+
+    def draining_osds(self) -> List["OSD"]:
+        return [osd for osd in self if osd.is_draining]
+
+    def idling_osds(self) -> List["OSD"]:
+        return [osd for osd in self if not osd.is_draining and not osd.is_empty]
+
+    def empty_osds(self) -> List["OSD"]:
+        return [osd for osd in self if osd.is_empty]
+
+    def all_osds(self) -> List["OSD"]:
+        return [osd for osd in self]
+
+    def not_in_cluster(self) -> List["OSD"]:
+        return [osd for osd in self if not osd.exists]
+
+    def enqueue(self, osd: "OSD") -> None:
+        if not osd.exists:
+            raise NotFoundError()
+        self.add(osd)
+        osd.start()
+
+    def rm(self, osd: "OSD") -> None:
+        if not osd.exists:
+            raise NotFoundError()
+        osd.stop()
+        try:
+            logger.debug(f'Removing {osd} from the queue.')
+            self.remove(osd)
+        except KeyError:
+            logger.debug(f"Could not find {osd} in queue.")
+            raise KeyError
index 69d5e73bbecc598651a36c07fb40d20656e42dc4..03c1479721b82b64327c8b409ed6ed7827638a24 100644 (file)
@@ -5,12 +5,20 @@ global:
   resolve_timeout: 5m
 
 route:
-  group_by: ['alertname']
-  group_wait: 10s
-  group_interval: 10s
-  repeat_interval: 1h
-  receiver: 'ceph-dashboard'
+  receiver: 'default'
+  routes:
+    - group_by: ['alertname']
+      group_wait: 10s
+      group_interval: 10s
+      repeat_interval: 1h
+      receiver: 'ceph-dashboard'
+
 receivers:
+- name: 'default'
+  webhook_configs:
+{% for url in default_webhook_urls %}
+  - url: '{{ url }}'
+{% endfor %}
 - name: 'ceph-dashboard'
   webhook_configs:
 {% for url in dashboard_urls %}
index 381dbb87a1485d34f854afca8347f5262bd138c0..5fe78320ee90e0efe70168859bc85a71de33eb79 100644 (file)
@@ -7,8 +7,6 @@ NFS_CORE_PARAM {
 
 MDCACHE {
         Dir_Chunk = 0;
-        NParts = 1;
-        Cache_Size = 1;
 }
 
 EXPORT_DEFAULTS {
index 42bc8a25e1ef75e3fff4b044b743f41da3a1b52d..ca15d4e3976a3b37f76ba17daabaf7f0e69c6ea3 100644 (file)
@@ -1,5 +1,11 @@
+import datetime
 import time
 import fnmatch
+from contextlib import contextmanager
+
+from ceph.deployment.service_spec import PlacementSpec, ServiceSpec
+from cephadm.module import CEPH_DATEFMT
+
 try:
     from typing import Any
 except ImportError:
@@ -7,11 +13,11 @@ except ImportError:
 import pytest
 
 from cephadm import CephadmOrchestrator
-from orchestrator import raise_if_exception, Completion
+from cephadm.services.osd import RemoveUtil, OSD
+from orchestrator import raise_if_exception, Completion, HostSpec
 from tests import mock
 
 
-
 def get_ceph_option(_, key):
     return __file__
 
@@ -28,23 +34,58 @@ def match_glob(val, pat):
         assert pat in val
 
 
-def mon_command(*args, **kwargs):
-    return 0, '', ''
-
-
-@pytest.yield_fixture()
-def cephadm_module():
+@contextmanager
+def with_cephadm_module(module_options=None, store=None):
+    """
+    :param module_options: Set opts as if they were set before module.__init__ is called
+    :param store: Set the store before module.__init__ is called
+    """
     with mock.patch("cephadm.module.CephadmOrchestrator.get_ceph_option", get_ceph_option),\
-            mock.patch("cephadm.module.CephadmOrchestrator.remote"),\
-            mock.patch("cephadm.module.CephadmOrchestrator.send_command"), \
-            mock.patch("cephadm.module.CephadmOrchestrator.mon_command", mon_command):
+            mock.patch("cephadm.services.osd.RemoveUtil._run_mon_cmd"), \
+            mock.patch("cephadm.module.CephadmOrchestrator.get_osdmap"), \
+            mock.patch("cephadm.services.osd.OSDService.get_osdspec_affinity", return_value='test_spec'), \
+            mock.patch("cephadm.module.CephadmOrchestrator.remote"):
 
         m = CephadmOrchestrator.__new__ (CephadmOrchestrator)
+        if module_options is not None:
+            for k, v in module_options.items():
+                m._ceph_set_module_option('cephadm', k, v)
+        if store is None:
+            store = {}
+        if '_ceph_get/mon_map' not in store:
+            m.mock_store_set('_ceph_get', 'mon_map', {
+                'modified': datetime.datetime.utcnow().strftime(CEPH_DATEFMT),
+                'fsid': 'foobar',
+            })
+        for k, v in store.items():
+            m._ceph_set_store(k, v)
+
         m.__init__('cephadm', 0, 0)
         m._cluster_fsid = "fsid"
         yield m
 
 
+@pytest.yield_fixture()
+def cephadm_module():
+    with with_cephadm_module({}) as m:
+        yield m
+
+
+@pytest.yield_fixture()
+def rm_util():
+    with with_cephadm_module({}) as m:
+        r = RemoveUtil.__new__(RemoveUtil)
+        r.__init__(m)
+        yield r
+
+
+@pytest.yield_fixture()
+def osd_obj():
+    with mock.patch("cephadm.services.osd.RemoveUtil"):
+        o = OSD(0, mock.MagicMock())
+        yield o
+
+
 def wait(m, c):
     # type: (CephadmOrchestrator, Completion) -> Any
     m.process([c])
@@ -70,3 +111,36 @@ def wait(m, c):
                 return c.result
             time.sleep(0.1)
     assert False, "timeout" + str(c._state)
+
+
+@contextmanager
+def with_host(m:CephadmOrchestrator, name):
+    # type: (CephadmOrchestrator, str) -> None
+    wait(m, m.add_host(HostSpec(hostname=name)))
+    yield
+    wait(m, m.remove_host(name))
+
+
+def assert_rm_service(cephadm, srv_name):
+    assert wait(cephadm, cephadm.remove_service(srv_name)) == f'Removed service {srv_name}'
+    cephadm._apply_all_services()
+
+
+@contextmanager
+def with_service(cephadm_module: CephadmOrchestrator, spec: ServiceSpec, meth, host: str):
+    if spec.placement.is_empty():
+        spec.placement = PlacementSpec(hosts=[host], count=1)
+    c = meth(cephadm_module, spec)
+    assert wait(cephadm_module, c) == f'Scheduled {spec.service_name()} update...'
+    specs = [d.spec for d in wait(cephadm_module, cephadm_module.describe_service())]
+    assert spec in specs
+
+    cephadm_module._apply_all_services()
+
+    dds = wait(cephadm_module, cephadm_module.list_daemons())
+    names = {dd.service_name() for dd in dds}
+    assert spec.service_name() in names, dds
+
+    yield
+
+    assert_rm_service(cephadm_module, spec.service_name())
\ No newline at end of file
index f64d8a0ce904d9ae074aa722f2f321c16df4ec6b..d1072d4f250b58cadb19628d9efd281fc86278c4 100644 (file)
@@ -1,11 +1,12 @@
 import datetime
 import json
 from contextlib import contextmanager
+from unittest.mock import ANY
 
 import pytest
 
 from ceph.deployment.drive_group import DriveGroupSpec, DeviceSelection
-from cephadm.services.osd import OSDRemoval
+from cephadm.services.osd import OSD, OSDQueue
 
 try:
     from typing import Any, List
@@ -21,9 +22,9 @@ from ceph.deployment.inventory import Devices, Device
 from orchestrator import ServiceDescription, DaemonDescription, InventoryHost, \
     HostSpec, OrchestratorError
 from tests import mock
-from .fixtures import cephadm_module, wait, _run_cephadm, mon_command, match_glob
-from cephadm.module import CephadmOrchestrator
-
+from .fixtures import cephadm_module, wait, _run_cephadm, match_glob, with_host, \
+    with_cephadm_module, with_service, assert_rm_service
+from cephadm.module import CephadmOrchestrator, CEPH_DATEFMT
 
 """
 TODOs:
@@ -33,12 +34,6 @@ TODOs:
 """
 
 
-def assert_rm_service(cephadm, srv_name):
-    assert wait(cephadm, cephadm.remove_service(srv_name)) == [
-        f'Removed service {srv_name}']
-    cephadm._apply_all_services()
-
-
 def assert_rm_daemon(cephadm: CephadmOrchestrator, prefix, host):
     dds: List[DaemonDescription] = wait(cephadm, cephadm.list_daemons(host=host))
     d_names = [dd.name() for dd in dds if dd.name().startswith(prefix)]
@@ -48,14 +43,25 @@ def assert_rm_daemon(cephadm: CephadmOrchestrator, prefix, host):
     match_glob(out, f"Removed {d_names}* from host '{host}'")
 
 
-class TestCephadm(object):
+@contextmanager
+def with_daemon(cephadm_module: CephadmOrchestrator, spec: ServiceSpec, meth, host: str):
+    spec.placement = PlacementSpec(hosts=[host], count=1)
+
+    c = meth(cephadm_module, spec)
+    [out] = wait(cephadm_module, c)
+    match_glob(out, f"Deployed {spec.service_name()}.* on host '{host}'")
 
-    @contextmanager
-    def _with_host(self, m, name):
-        # type: (CephadmOrchestrator, str) -> None
-        wait(m, m.add_host(HostSpec(hostname=name)))
-        yield
-        wait(m, m.remove_host(name))
+    dds = cephadm_module.cache.get_daemons_by_service(spec.service_name())
+    for dd in dds:
+        if dd.hostname == host:
+            yield dd.daemon_id
+            assert_rm_daemon(cephadm_module, spec.service_name(), host)
+            return
+
+    assert False, 'Daemon not found'
+
+
+class TestCephadm(object):
 
     def test_get_unique_name(self, cephadm_module):
         # type: (CephadmOrchestrator) -> None
@@ -70,14 +76,14 @@ class TestCephadm(object):
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
     def test_host(self, cephadm_module):
         assert wait(cephadm_module, cephadm_module.get_hosts()) == []
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             assert wait(cephadm_module, cephadm_module.get_hosts()) == [HostSpec('test', 'test')]
 
             # Be careful with backward compatibility when changing things here:
-            assert json.loads(cephadm_module._store['inventory']) == \
+            assert json.loads(cephadm_module.get_store('inventory')) == \
                    {"test": {"hostname": "test", "addr": "test", "labels": [], "status": ""}}
 
-            with self._with_host(cephadm_module, 'second'):
+            with with_host(cephadm_module, 'second'):
                 assert wait(cephadm_module, cephadm_module.get_hosts()) == [
                     HostSpec('test', 'test'),
                     HostSpec('second', 'second')
@@ -87,69 +93,67 @@ class TestCephadm(object):
         assert wait(cephadm_module, cephadm_module.get_hosts()) == []
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
+    @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _,__,___: None)
     def test_service_ls(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             c = cephadm_module.list_daemons(refresh=True)
             assert wait(cephadm_module, c) == []
 
-            ps = PlacementSpec(hosts=['test'], count=1)
-            c = cephadm_module.add_mds(ServiceSpec('mds', 'name', placement=ps))
-            [out] = wait(cephadm_module, c)
-            match_glob(out, "Deployed mds.name.* on host 'test'")
-
-            c = cephadm_module.list_daemons()
+            with with_daemon(cephadm_module, ServiceSpec('mds', 'name'), CephadmOrchestrator.add_mds, 'test'):
 
-            def remove_id(dd):
-                out = dd.to_json()
-                del out['daemon_id']
-                return out
-
-            assert [remove_id(dd) for dd in wait(cephadm_module, c)] == [
-                {
-                    'daemon_type': 'mds',
-                    'hostname': 'test',
-                    'status': 1,
-                    'status_desc': 'starting'}
-            ]
+                c = cephadm_module.list_daemons()
 
-            ps = PlacementSpec(hosts=['test'], count=1)
-            spec = ServiceSpec('rgw', 'r.z', placement=ps)
-            c = cephadm_module.apply_rgw(spec)
-            assert wait(cephadm_module, c) == 'Scheduled rgw.r.z update...'
+                def remove_id_events(dd):
+                    out = dd.to_json()
+                    del out['daemon_id']
+                    del out['events']
+                    return out
 
-            c = cephadm_module.describe_service()
-            out = [o.to_json() for o in wait(cephadm_module, c)]
-            expected = [
-                {
-                    'placement': {'hosts': [{'hostname': 'test', 'name': '', 'network': ''}]},
-                    'service_id': 'name',
-                    'service_name': 'mds.name',
-                    'service_type': 'mds',
-                    'status': {'running': 1, 'size': 0},
-                    'unmanaged': True
-                },
-                {
-                    'placement': {
-                        'count': 1,
-                        'hosts': [{'hostname': 'test', 'name': '', 'network': ''}]
-                    },
-                    'rgw_realm': 'r',
-                    'rgw_zone': 'z',
-                    'service_id': 'r.z',
-                    'service_name': 'rgw.r.z',
-                    'service_type': 'rgw',
-                    'status': {'running': 0, 'size': 1}
-                }
-            ]
-            assert out == expected
-            assert [ServiceDescription.from_json(o).to_json() for o in expected] == expected
+                assert [remove_id_events(dd) for dd in wait(cephadm_module, c)] == [
+                    {
+                        'daemon_type': 'mds',
+                        'hostname': 'test',
+                        'status': 1,
+                        'status_desc': 'starting',
+                        'is_active': False}
+                ]
 
-            assert_rm_service(cephadm_module, 'rgw.r.z')
-            assert_rm_daemon(cephadm_module, 'mds.name', 'test')
+                with with_service(cephadm_module, ServiceSpec('rgw', 'r.z'), CephadmOrchestrator.apply_rgw, 'test'):
+
+                    c = cephadm_module.describe_service()
+                    out = [dict(o.to_json()) for o in wait(cephadm_module, c)]
+                    expected = [
+                        {
+                            'placement': {'hosts': [{'hostname': 'test', 'name': '', 'network': ''}]},
+                            'service_id': 'name',
+                            'service_name': 'mds.name',
+                            'service_type': 'mds',
+                            'status': {'running': 1, 'size': 0},
+                            'unmanaged': True
+                        },
+                        {
+                            'placement': {
+                                'count': 1,
+                                'hosts': [{'hostname': 'test', 'name': '', 'network': ''}]
+                            },
+                            'spec': {
+                                'rgw_realm': 'r',
+                                'rgw_zone': 'z',
+                            },
+                            'service_id': 'r.z',
+                            'service_name': 'rgw.r.z',
+                            'service_type': 'rgw',
+                            'status': {'created': mock.ANY, 'running': 1, 'size': 1},
+                        }
+                    ]
+                    for o in out:
+                        if 'events' in o:
+                            del o['events']  # delete it, as it contains a timestamp
+                    assert out == expected
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
     def test_device_ls(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             c = cephadm_module.get_inventory()
             assert wait(cephadm_module, c) == [InventoryHost('test')]
 
@@ -165,23 +169,83 @@ class TestCephadm(object):
             )
         ])
     ))
-    def test_daemon_action(self, cephadm_module):
+    def test_list_daemons(self, cephadm_module: CephadmOrchestrator):
         cephadm_module.service_cache_timeout = 10
-        with self._with_host(cephadm_module, 'test'):
-            c = cephadm_module.list_daemons(refresh=True)
-            wait(cephadm_module, c)
-            c = cephadm_module.daemon_action('redeploy', 'rgw', 'myrgw.foobar')
-            assert wait(cephadm_module, c) == ["Deployed rgw.myrgw.foobar on host 'test'"]
+        with with_host(cephadm_module, 'test'):
+            cephadm_module._refresh_host_daemons('test')
+            c = cephadm_module.list_daemons()
+            assert wait(cephadm_module, c)[0].name() == 'rgw.myrgw.foobar'
+
+    @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
+    @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _,__,___: None)
+    def test_daemon_action(self, cephadm_module: CephadmOrchestrator):
+        cephadm_module.service_cache_timeout = 10
+        with with_host(cephadm_module, 'test'):
+            with with_daemon(cephadm_module, RGWSpec(service_id='myrgw.foobar'), CephadmOrchestrator.add_rgw, 'test') as daemon_id:
+
+                c = cephadm_module.daemon_action('redeploy', 'rgw.' + daemon_id)
+                assert wait(cephadm_module, c) == f"Deployed rgw.{daemon_id} on host 'test'"
+
+                for what in ('start', 'stop', 'restart'):
+                    c = cephadm_module.daemon_action(what, 'rgw.' + daemon_id)
+                    assert wait(cephadm_module, c) == what + f" rgw.{daemon_id} from host 'test'"
+
+                # Make sure, _check_daemons does a redeploy due to monmap change:
+                cephadm_module._store['_ceph_get/mon_map'] = {
+                    'modified': datetime.datetime.utcnow().strftime(CEPH_DATEFMT),
+                    'fsid': 'foobar',
+                }
+                cephadm_module.notify('mon_map', None)
+
+                cephadm_module._check_daemons()
+
+    @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
+    @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _,__,___: None)
+    def test_daemon_action_fail(self, cephadm_module: CephadmOrchestrator):
+        cephadm_module.service_cache_timeout = 10
+        with with_host(cephadm_module, 'test'):
+            with with_daemon(cephadm_module, RGWSpec(service_id='myrgw.foobar'), CephadmOrchestrator.add_rgw, 'test') as daemon_id:
+                with mock.patch('ceph_module.BaseMgrModule._ceph_send_command') as _ceph_send_command:
+
+                    _ceph_send_command.side_effect = Exception("myerror")
+
+                    # Make sure, _check_daemons does a redeploy due to monmap change:
+                    cephadm_module.mock_store_set('_ceph_get', 'mon_map', {
+                        'modified': datetime.datetime.utcnow().strftime(CEPH_DATEFMT),
+                        'fsid': 'foobar',
+                    })
+                    cephadm_module.notify('mon_map', None)
+
+                    cephadm_module._check_daemons()
 
-            for what in ('start', 'stop', 'restart'):
-                c = cephadm_module.daemon_action(what, 'rgw', 'myrgw.foobar')
-                assert wait(cephadm_module, c) == [what + " rgw.myrgw.foobar from host 'test'"]
+                    evs = [e.message for e in cephadm_module.events.get_for_daemon(f'rgw.{daemon_id}')]
+
+                    assert 'myerror' in ''.join(evs)
+
+    @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+    def test_daemon_check_post(self, cephadm_module: CephadmOrchestrator):
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, ServiceSpec(service_type='grafana'), CephadmOrchestrator.apply_grafana, 'test'):
+
+                # Make sure, _check_daemons does a redeploy due to monmap change:
+                cephadm_module.mock_store_set('_ceph_get', 'mon_map', {
+                    'modified': datetime.datetime.utcnow().strftime(CEPH_DATEFMT),
+                    'fsid': 'foobar',
+                })
+                cephadm_module.notify('mon_map', None)
+                cephadm_module.mock_store_set('_ceph_get', 'mgr_map', {
+                    'modules': ['dashboard']
+                })
+
+                with mock.patch("cephadm.module.CephadmOrchestrator.mon_command") as _mon_cmd:
+
+                    cephadm_module._check_daemons()
+                    _mon_cmd.assert_any_call({'prefix': 'dashboard set-grafana-api-url', 'value': 'https://test:3000'})
 
-            assert_rm_daemon(cephadm_module, 'rgw.myrgw.foobar', 'test')
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
     def test_mon_add(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             ps = PlacementSpec(hosts=['test:0.0.0.0=a'], count=1)
             c = cephadm_module.add_mon(ServiceSpec('mon', placement=ps))
             assert wait(cephadm_module, c) == ["Deployed mon.a on host 'test'"]
@@ -193,7 +257,7 @@ class TestCephadm(object):
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
     def test_mgr_update(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             ps = PlacementSpec(hosts=['test:0.0.0.0=a'], count=1)
             r = cephadm_module._apply_service(ServiceSpec('mgr', placement=ps))
             assert r
@@ -254,7 +318,7 @@ class TestCephadm(object):
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm")
     def test_apply_osd_save(self, _run_cephadm, cephadm_module: CephadmOrchestrator):
         _run_cephadm.return_value = ('{}', '', 0)
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
 
             spec = DriveGroupSpec(
                 service_id='foo',
@@ -266,7 +330,7 @@ class TestCephadm(object):
                 )
             )
 
-            c = cephadm_module.apply_drivegroups([spec])
+            c = cephadm_module.apply([spec])
             assert wait(cephadm_module, c) == ['Scheduled osd.foo update...']
 
             inventory = Devices([
@@ -285,24 +349,24 @@ class TestCephadm(object):
             _run_cephadm.assert_any_call(
                 'test', 'osd', 'ceph-volume',
                 ['--config-json', '-', '--', 'lvm', 'prepare', '--bluestore', '--data', '/dev/sdb', '--no-systemd'],
-                env_vars=[], error_ok=True, stdin='{"config": "", "keyring": ""}')
+                env_vars=['CEPH_VOLUME_OSDSPEC_AFFINITY=foo'], error_ok=True, stdin='{"config": "", "keyring": ""}')
             _run_cephadm.assert_called_with('test', 'osd', 'ceph-volume', ['--', 'lvm', 'list', '--format', 'json'])
 
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     @mock.patch("cephadm.module.SpecStore.save")
     def test_apply_osd_save_placement(self, _save_spec, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             json_spec = {'service_type': 'osd', 'placement': {'host_pattern': 'test'}, 'service_id': 'foo', 'data_devices': {'all': True}}
             spec = ServiceSpec.from_json(json_spec)
             assert isinstance(spec, DriveGroupSpec)
-            c = cephadm_module.apply_drivegroups([spec])
+            c = cephadm_module.apply([spec])
             assert wait(cephadm_module, c) == ['Scheduled osd.foo update...']
             _save_spec.assert_called_with(spec)
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     def test_create_osds(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             dg = DriveGroupSpec(placement=PlacementSpec(host_pattern='test'), data_devices=DeviceSelection(paths=['']))
             c = cephadm_module.create_osds(dg)
             out = wait(cephadm_module, c)
@@ -310,7 +374,7 @@ class TestCephadm(object):
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     def test_prepare_drivegroup(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             dg = DriveGroupSpec(placement=PlacementSpec(host_pattern='test'), data_devices=DeviceSelection(paths=['']))
             out = cephadm_module.osd_service.prepare_drivegroup(dg)
             assert len(out) == 1
@@ -333,11 +397,11 @@ class TestCephadm(object):
     )
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     def test_driveselection_to_ceph_volume(self, cephadm_module, devices, preview, exp_command):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             dg = DriveGroupSpec(service_id='test.spec', placement=PlacementSpec(host_pattern='test'), data_devices=DeviceSelection(paths=devices))
             ds = DriveSelection(dg, Devices([Device(path) for path in devices]))
             preview = preview
-            out = cephadm_module.osd_service.driveselection_to_ceph_volume(dg, ds, [], preview)
+            out = cephadm_module.osd_service.driveselection_to_ceph_volume(ds, [], preview)
             assert out in exp_command
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm(
@@ -352,29 +416,38 @@ class TestCephadm(object):
             )
         ])
     ))
+    @mock.patch("cephadm.services.osd.OSD.exists", True)
     @mock.patch("cephadm.services.osd.RemoveUtil.get_pg_count", lambda _, __: 0)
     def test_remove_osds(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
-            c = cephadm_module.list_daemons(refresh=True)
+        with with_host(cephadm_module, 'test'):
+            cephadm_module._refresh_host_daemons('test')
+            c = cephadm_module.list_daemons()
             wait(cephadm_module, c)
 
             c = cephadm_module.remove_daemons(['osd.0'])
             out = wait(cephadm_module, c)
             assert out == ["Removed osd.0 from host 'test'"]
 
-            osd_removal_op = OSDRemoval(0, False, False, 'test', 'osd.0', datetime.datetime.utcnow(), -1)
-            cephadm_module.rm_util.queue_osds_for_removal({osd_removal_op})
-            cephadm_module.rm_util._remove_osds_bg()
-            assert cephadm_module.rm_util.to_remove_osds == set()
+            cephadm_module.to_remove_osds.enqueue(OSD(osd_id=0,
+                                                      replace=False,
+                                                      force=False,
+                                                      hostname='test',
+                                                      fullname='osd.0',
+                                                      process_started_at=datetime.datetime.utcnow(),
+                                                      remove_util=cephadm_module.rm_util
+                                                      ))
+            cephadm_module.rm_util.process_removal_queue()
+            assert cephadm_module.to_remove_osds == OSDQueue()
 
             c = cephadm_module.remove_osds_status()
             out = wait(cephadm_module, c)
-            assert out == set()
+            assert out == []
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+    @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _,__,___: None)
     def test_rgw_update(self, cephadm_module):
-        with self._with_host(cephadm_module, 'host1'):
-            with self._with_host(cephadm_module, 'host2'):
+        with with_host(cephadm_module, 'host1'):
+            with with_host(cephadm_module, 'host2'):
                 ps = PlacementSpec(hosts=['host1'], count=1)
                 c = cephadm_module.add_rgw(RGWSpec(rgw_realm='realm', rgw_zone='zone1', placement=ps))
                 [out] = wait(cephadm_module, c)
@@ -400,8 +473,9 @@ class TestCephadm(object):
         ])
     ))
     def test_remove_daemon(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
-            c = cephadm_module.list_daemons(refresh=True)
+        with with_host(cephadm_module, 'test'):
+            cephadm_module._refresh_host_daemons('test')
+            c = cephadm_module.list_daemons()
             wait(cephadm_module, c)
             c = cephadm_module.remove_daemons(['rgw.myrgw.myhost.myid'])
             out = wait(cephadm_module, c)
@@ -421,20 +495,16 @@ class TestCephadm(object):
         ]
     )
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+    @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _,__,___: None)
     def test_daemon_add(self, spec: ServiceSpec, meth, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
-            spec.placement = PlacementSpec(hosts=['test'], count=1)
-
-            c = meth(cephadm_module, spec)
-            [out] = wait(cephadm_module, c)
-            match_glob(out, f"Deployed {spec.service_name()}.* on host 'test'")
-
-            assert_rm_daemon(cephadm_module, spec.service_name(), 'test')
+        with with_host(cephadm_module, 'test'):
+            with with_daemon(cephadm_module, spec, meth, 'test'):
+                pass
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     @mock.patch("cephadm.module.CephadmOrchestrator.rados", mock.MagicMock())
     def test_nfs(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             ps = PlacementSpec(hosts=['test'], count=1)
             spec = NFSServiceSpec(
                     service_id='name',
@@ -455,7 +525,7 @@ class TestCephadm(object):
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     @mock.patch("cephadm.module.CephadmOrchestrator.rados", mock.MagicMock())
     def test_iscsi(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             ps = PlacementSpec(hosts=['test'], count=1)
             spec = IscsiServiceSpec(
                     service_id='name',
@@ -476,7 +546,7 @@ class TestCephadm(object):
 
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
     def test_blink_device_light(self, cephadm_module):
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             c = cephadm_module.blink_device_light('ident', True, [('test', '', '')])
             assert wait(cephadm_module, c) == ['Set ident light for test: on']
 
@@ -526,22 +596,41 @@ class TestCephadm(object):
         ]
     )
     @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+    @mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _,__,___: None)
     def test_apply_save(self, spec: ServiceSpec, meth, cephadm_module: CephadmOrchestrator):
-        with self._with_host(cephadm_module, 'test'):
-            if not spec.placement:
-                spec.placement = PlacementSpec(hosts=['test'], count=1)
-            c = meth(cephadm_module, spec)
-            assert wait(cephadm_module, c) == f'Scheduled {spec.service_name()} update...'
-            assert [d.spec for d in wait(cephadm_module, cephadm_module.describe_service())] == [spec]
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, spec, meth, 'test'):
+                pass
 
+    @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+    @mock.patch("cephadm.services.cephadmservice.CephadmService.ok_to_stop")
+    def test_daemon_ok_to_stop(self, ok_to_stop, cephadm_module: CephadmOrchestrator):
+        spec = ServiceSpec(
+            'mds',
+            service_id='fsname',
+            placement=PlacementSpec(hosts=['host1', 'host2'])
+        )
+        with with_host(cephadm_module, 'host1'), with_host(cephadm_module, 'host2'):
+            c = cephadm_module.apply_mds(spec)
+            out = wait(cephadm_module, c)
+            match_glob(out, "Scheduled mds.fsname update...")
             cephadm_module._apply_all_services()
 
-            dds = wait(cephadm_module, cephadm_module.list_daemons())
-            for dd in dds:
-                assert dd.service_name() == spec.service_name()
+            [daemon] = cephadm_module.cache.daemons['host1'].keys()
+
+            spec.placement.set_hosts(['host2'])
 
+            ok_to_stop.side_effect = False
 
-            assert_rm_service(cephadm_module, spec.service_name())
+            c = cephadm_module.apply_mds(spec)
+            out = wait(cephadm_module, c)
+            match_glob(out, "Scheduled mds.fsname update...")
+            cephadm_module._apply_all_services()
+
+            ok_to_stop.assert_called_with([daemon[4:]])
+
+            assert_rm_daemon(cephadm_module, spec.service_name(), 'host1')  # verifies ok-to-stop
+            assert_rm_daemon(cephadm_module, spec.service_name(), 'host2')
 
 
     @mock.patch("cephadm.module.CephadmOrchestrator._get_connection")
@@ -549,11 +638,11 @@ class TestCephadm(object):
     def test_offline(self, _check, _get_connection, cephadm_module):
         _check.return_value = '{}', '', 0
         _get_connection.return_value = mock.Mock(), mock.Mock()
-        with self._with_host(cephadm_module, 'test'):
+        with with_host(cephadm_module, 'test'):
             _get_connection.side_effect = HostNotFound
             code, out, err = cephadm_module.check_host('test')
             assert out == ''
-            assert 'Failed to connect to test (test)' in err
+            assert "Host 'test' not found" in err
 
             out = wait(cephadm_module, cephadm_module.get_hosts())[0].to_json()
             assert out == HostSpec('test', 'test', status='Offline').to_json()
@@ -594,7 +683,7 @@ class TestCephadm(object):
             return '{}', None, 0
         with mock.patch("remoto.Connection", side_effect=[Connection(), Connection(), Connection()]):
             with mock.patch("remoto.process.check", _check):
-                with self._with_host(cephadm_module, 'test'):
+                with with_host(cephadm_module, 'test'):
                     code, out, err = cephadm_module.check_host('test')
                     # First should succeed.
                     assert err is None
@@ -604,3 +693,91 @@ class TestCephadm(object):
                     # code will blow up here triggering the BOOM!
                     code, out, err = cephadm_module.check_host('test')
                     assert err is None
+
+    @mock.patch("cephadm.module.CephadmOrchestrator._get_connection")
+    @mock.patch("remoto.process.check")
+    def test_etc_ceph(self, _check, _get_connection, cephadm_module):
+        _get_connection.return_value = mock.Mock(), mock.Mock()
+        _check.return_value = '{}', '', 0
+
+        assert cephadm_module.manage_etc_ceph_ceph_conf is False
+
+        with with_host(cephadm_module, 'test'):
+            assert not cephadm_module.cache.host_needs_new_etc_ceph_ceph_conf('test')
+
+        with with_host(cephadm_module, 'test'):
+            cephadm_module.set_module_option('manage_etc_ceph_ceph_conf', True)
+            cephadm_module.config_notify()
+            assert cephadm_module.manage_etc_ceph_ceph_conf == True
+
+            cephadm_module._refresh_hosts_and_daemons()
+            _check.assert_called_with(ANY, ['dd', 'of=/etc/ceph/ceph.conf'], stdin=b'')
+
+            assert not cephadm_module.cache.host_needs_new_etc_ceph_ceph_conf('test')
+
+            cephadm_module.cache.last_etc_ceph_ceph_conf = {}
+            cephadm_module.cache.load()
+
+            assert not cephadm_module.cache.host_needs_new_etc_ceph_ceph_conf('test')
+
+            # Make sure, _check_daemons does a redeploy due to monmap change:
+            cephadm_module.mock_store_set('_ceph_get', 'mon_map', {
+                'modified': datetime.datetime.utcnow().strftime(CEPH_DATEFMT),
+                'fsid': 'foobar',
+            })
+            cephadm_module.notify('mon_map', mock.MagicMock())
+            assert cephadm_module.cache.host_needs_new_etc_ceph_ceph_conf('test')
+            cephadm_module.cache.last_etc_ceph_ceph_conf = {}
+            cephadm_module.cache.load()
+            assert cephadm_module.cache.host_needs_new_etc_ceph_ceph_conf('test')
+
+
+    def test_etc_ceph_init(self):
+        with with_cephadm_module({'manage_etc_ceph_ceph_conf': True}) as m:
+            assert m.manage_etc_ceph_ceph_conf is True
+
+    @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm")
+    def test_registry_login(self, _run_cephadm, cephadm_module: CephadmOrchestrator):
+        def check_registry_credentials(url, username, password):
+            assert cephadm_module.get_module_option('registry_url') == url
+            assert cephadm_module.get_module_option('registry_username') == username
+            assert cephadm_module.get_module_option('registry_password') == password
+
+        _run_cephadm.return_value = '{}', '', 0
+        with with_host(cephadm_module, 'test'):
+            # test successful login with valid args
+            code, out, err = cephadm_module.registry_login('test-url', 'test-user', 'test-password')
+            assert out == 'registry login scheduled'
+            assert err == ''
+            check_registry_credentials('test-url', 'test-user', 'test-password')
+            
+            # test bad login attempt with invalid args
+            code, out, err = cephadm_module.registry_login('bad-args')
+            assert err == ("Invalid arguments. Please provide arguments <url> <username> <password> "
+                            "or -i <login credentials json file>")
+            check_registry_credentials('test-url', 'test-user', 'test-password')
+            
+            # test bad login using invalid json file
+            code, out, err = cephadm_module.registry_login(None, None, None, '{"bad-json": "bad-json"}')
+            assert err == ("json provided for custom registry login did not include all necessary fields. "
+                            "Please setup json file as\n"
+                            "{\n"
+                              " \"url\": \"REGISTRY_URL\",\n"
+                              " \"username\": \"REGISTRY_USERNAME\",\n"
+                              " \"password\": \"REGISTRY_PASSWORD\"\n"
+                            "}\n")
+            check_registry_credentials('test-url', 'test-user', 'test-password')
+            
+            # test  good login using valid json file
+            good_json = ("{\"url\": \"" + "json-url" + "\", \"username\": \"" + "json-user" + "\", "
+                        " \"password\": \"" + "json-pass" + "\"}")
+            code, out, err = cephadm_module.registry_login(None, None, None, good_json)
+            assert out == 'registry login scheduled'
+            assert err == ''
+            check_registry_credentials('json-url', 'json-user', 'json-pass')
+            
+            # test bad login where args are valid but login command fails
+            _run_cephadm.return_value = '{}', 'error', 1
+            code, out, err = cephadm_module.registry_login('fail-url', 'fail-user', 'fail-password')
+            assert err == 'Host test failed to login to fail-url as fail-user with given password'
+            check_registry_credentials('json-url', 'json-user', 'json-pass')
diff --git a/ceph/src/pybind/mgr/cephadm/tests/test_migration.py b/ceph/src/pybind/mgr/cephadm/tests/test_migration.py
new file mode 100644 (file)
index 0000000..5c91707
--- /dev/null
@@ -0,0 +1,144 @@
+import json
+from datetime import datetime
+
+from ceph.deployment.service_spec import PlacementSpec, ServiceSpec, HostPlacementSpec
+from cephadm import CephadmOrchestrator
+from cephadm.inventory import SPEC_STORE_PREFIX, DATEFMT
+from cephadm.tests.fixtures import _run_cephadm, cephadm_module, wait, with_host
+from tests import mock
+
+@mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
+@mock.patch("cephadm.services.cephadmservice.RgwService.create_realm_zonegroup_zone", lambda _,__,___: None)
+def test_migrate_scheduler(cephadm_module: CephadmOrchestrator):
+    with with_host(cephadm_module, 'host1'):
+        with with_host(cephadm_module, 'host2'):
+
+            # emulate the old scheduler:
+            c = cephadm_module.apply_rgw(
+                ServiceSpec('rgw', 'r.z', placement=PlacementSpec(host_pattern='*', count=2))
+            )
+            assert wait(cephadm_module, c) == 'Scheduled rgw.r.z update...'
+
+            cephadm_module._apply_all_services()
+            out = {o.hostname for o in wait(cephadm_module, cephadm_module.list_daemons())}
+            assert out == {'host1', 'host2'}
+
+            c = cephadm_module.apply_rgw(
+                ServiceSpec('rgw', 'r.z', placement=PlacementSpec(host_pattern='host1', count=2))
+            )
+            assert wait(cephadm_module, c) == 'Scheduled rgw.r.z update...'
+
+            cephadm_module.migration_current = 0
+            cephadm_module.migration.migrate()
+
+            # assert we need all daemons.
+            assert cephadm_module.migration_current == 0
+
+            # Sorry, for this hack, but I need to make sure, Migration thinks,
+            # we have updated all daemons already.
+            cephadm_module.cache.last_daemon_update['host1'] = datetime.now()
+            cephadm_module.cache.last_daemon_update['host2'] = datetime.now()
+
+            cephadm_module.migration.migrate()
+            assert cephadm_module.migration_current == 2
+
+            out = [o.spec.placement for o in wait(cephadm_module, cephadm_module.describe_service())]
+            assert out == [PlacementSpec(count=2, hosts=[HostPlacementSpec(hostname='host1', network='', name=''), HostPlacementSpec(hostname='host2', network='', name='')])]
+
+
+@mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
+def test_migrate_service_id_mon_one(cephadm_module: CephadmOrchestrator):
+    with with_host(cephadm_module, 'host1'):
+        cephadm_module.set_store(SPEC_STORE_PREFIX + 'mon.wrong',
+            json.dumps({
+                'spec': {
+                    'service_type': 'mon',
+                    'service_id': 'wrong',
+                    'placement': {
+                        'hosts': ['host1']
+                    }
+                },
+                'created': datetime.utcnow().strftime(DATEFMT),
+            }, sort_keys=True),
+        )
+
+        cephadm_module.spec_store.load()
+
+        assert len(cephadm_module.spec_store.specs) == 1
+        assert cephadm_module.spec_store.specs['mon.wrong'].service_name() == 'mon'
+
+        cephadm_module.migration_current = 1
+        cephadm_module.migration.migrate()
+        assert cephadm_module.migration_current == 2
+
+        assert len(cephadm_module.spec_store.specs) == 1
+        assert cephadm_module.spec_store.specs['mon'] == ServiceSpec(
+            service_type='mon',
+            unmanaged=True,
+            placement=PlacementSpec(hosts=['host1'])
+        )
+
+@mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
+def test_migrate_service_id_mon_two(cephadm_module: CephadmOrchestrator):
+    with with_host(cephadm_module, 'host1'):
+        cephadm_module.set_store(SPEC_STORE_PREFIX + 'mon',
+            json.dumps({
+                'spec': {
+                    'service_type': 'mon',
+                    'placement': {
+                        'count': 5,
+                    }
+                },
+                'created': datetime.utcnow().strftime(DATEFMT),
+            }, sort_keys=True),
+        )
+        cephadm_module.set_store(SPEC_STORE_PREFIX + 'mon.wrong',
+            json.dumps({
+                'spec': {
+                    'service_type': 'mon',
+                    'service_id': 'wrong',
+                    'placement': {
+                        'hosts': ['host1']
+                    }
+                },
+                'created': datetime.utcnow().strftime(DATEFMT),
+            }, sort_keys=True),
+        )
+
+        cephadm_module.spec_store.load()
+
+        assert len(cephadm_module.spec_store.specs) == 2
+        assert cephadm_module.spec_store.specs['mon.wrong'].service_name() == 'mon'
+        assert cephadm_module.spec_store.specs['mon'].service_name() == 'mon'
+
+        cephadm_module.migration_current = 1
+        cephadm_module.migration.migrate()
+        assert cephadm_module.migration_current == 2
+
+        assert len(cephadm_module.spec_store.specs) == 1
+        assert cephadm_module.spec_store.specs['mon'] == ServiceSpec(
+            service_type='mon',
+            unmanaged=True,
+            placement=PlacementSpec(count=5)
+        )
+
+@mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('[]'))
+def test_migrate_service_id_mds_one(cephadm_module: CephadmOrchestrator):
+    with with_host(cephadm_module, 'host1'):
+        cephadm_module.set_store(SPEC_STORE_PREFIX + 'mds',
+            json.dumps({
+                'spec': {
+                    'service_type': 'mds',
+                    'placement': {
+                        'hosts': ['host1']
+                    }
+                },
+                'created': datetime.utcnow().strftime(DATEFMT),
+            }, sort_keys=True),
+        )
+
+        cephadm_module.spec_store.load()
+
+        # there is nothing to migrate, as the spec is gone now.
+        assert len(cephadm_module.spec_store.specs) == 0
+
diff --git a/ceph/src/pybind/mgr/cephadm/tests/test_osd_removal.py b/ceph/src/pybind/mgr/cephadm/tests/test_osd_removal.py
new file mode 100644 (file)
index 0000000..0b4b0cd
--- /dev/null
@@ -0,0 +1,219 @@
+from cephadm.services.osd import RemoveUtil, OSDQueue, OSD
+import pytest
+from .fixtures import rm_util, osd_obj
+from tests import mock
+from datetime import datetime
+
+
+class MockOSD:
+
+    def __init__(self, osd_id):
+        self.osd_id = osd_id
+
+class TestOSDRemoval:
+
+    @pytest.mark.parametrize(
+        "osd_id, osd_df, expected",
+        [
+            # missing 'nodes' key
+            (1, dict(nodes=[]), -1),
+            # missing 'pgs' key
+            (1, dict(nodes=[dict(id=1)]), -1),
+            # id != osd_id
+            (1, dict(nodes=[dict(id=999, pgs=1)]), -1),
+            # valid
+            (1, dict(nodes=[dict(id=1, pgs=1)]), 1),
+        ]
+    )
+    def test_get_pg_count(self, rm_util, osd_id, osd_df, expected):
+        with mock.patch("cephadm.services.osd.RemoveUtil.osd_df", return_value=osd_df):
+            assert rm_util.get_pg_count(osd_id) == expected
+
+    @pytest.mark.parametrize(
+        "osds, ok_to_stop, expected",
+        [
+            # no osd_ids provided
+            ([], [False], []),
+            # all osds are ok_to_stop
+            ([1, 2], [True], [1, 2]),
+            # osds are ok_to_stop after the second iteration
+            ([1, 2], [False, True], [2]),
+            # osds are never ok_to_stop, (taking the sample size `(len(osd_ids))` into account),
+            # expected to get False
+            ([1, 2], [False, False], []),
+        ]
+    )
+    def test_find_stop_threshold(self, rm_util, osds, ok_to_stop, expected):
+        with mock.patch("cephadm.services.osd.RemoveUtil.ok_to_stop", side_effect=ok_to_stop):
+            assert rm_util.find_osd_stop_threshold(osds) == expected
+
+    def test_process_removal_queue(self, rm_util):
+        # TODO: !
+        # rm_util.process_removal_queue()
+        pass
+
+    def test_ok_to_stop(self, rm_util):
+        rm_util.ok_to_stop([MockOSD(1)])
+        rm_util._run_mon_cmd.assert_called_with({'prefix': 'osd ok-to-stop', 'ids': ['1']})
+
+    def test_safe_to_destroy(self, rm_util):
+        rm_util.safe_to_destroy([1])
+        rm_util._run_mon_cmd.assert_called_with({'prefix': 'osd safe-to-destroy', 'ids': ['1']})
+
+    def test_destroy_osd(self, rm_util):
+        rm_util.destroy_osd(1)
+        rm_util._run_mon_cmd.assert_called_with({'prefix': 'osd destroy-actual', 'id': 1, 'yes_i_really_mean_it': True})
+
+    def test_purge_osd(self, rm_util):
+        rm_util.purge_osd(1)
+        rm_util._run_mon_cmd.assert_called_with({'prefix': 'osd purge-actual', 'id': 1, 'yes_i_really_mean_it': True})
+
+
+class TestOSD:
+
+    def test_start(self, osd_obj):
+        assert osd_obj.started is False
+        osd_obj.start()
+        assert osd_obj.started is True
+        assert osd_obj.stopped is False
+
+    def test_start_draining(self, osd_obj):
+        assert osd_obj.draining is False
+        assert osd_obj.drain_started_at is None
+        ret = osd_obj.start_draining()
+        osd_obj.rm_util.set_osd_flag.assert_called_with([osd_obj], 'out')
+        assert isinstance(osd_obj.drain_started_at, datetime)
+        assert osd_obj.draining is True
+        assert ret is True
+
+    def test_start_draining_stopped(self, osd_obj):
+        osd_obj.stopped = True
+        ret = osd_obj.start_draining()
+        assert osd_obj.drain_started_at is None
+        assert ret is False
+        assert osd_obj.draining is False
+
+    def test_stop_draining(self, osd_obj):
+        ret = osd_obj.stop_draining()
+        osd_obj.rm_util.set_osd_flag.assert_called_with([osd_obj], 'in')
+        assert isinstance(osd_obj.drain_stopped_at, datetime)
+        assert osd_obj.draining is False
+        assert ret is True
+
+    @mock.patch('cephadm.services.osd.OSD.stop_draining')
+    def test_stop(self, stop_draining_mock, osd_obj):
+        ret = osd_obj.stop()
+        assert osd_obj.started is False
+        assert osd_obj.stopped is True
+        stop_draining_mock.assert_called_once()
+
+    @pytest.mark.parametrize(
+        "draining, empty, expected",
+        [
+            # must be !draining! and !not empty! to yield True
+            (True, not True, True),
+            # not draining and not empty
+            (False, not True, False),
+            # not draining and empty
+            (False, True, False),
+            # draining and empty
+            (True, True, False),
+        ]
+    )
+    def test_is_draining(self, osd_obj, draining, empty, expected):
+        with mock.patch("cephadm.services.osd.OSD.is_empty", new_callable=mock.PropertyMock(return_value=empty)):
+            osd_obj.draining = draining
+            assert osd_obj.is_draining is expected
+
+    @mock.patch("cephadm.services.osd.RemoveUtil.ok_to_stop")
+    def test_is_ok_to_stop(self, _, osd_obj):
+        ret = osd_obj.is_ok_to_stop
+        osd_obj.rm_util.ok_to_stop.assert_called_once()
+
+    @pytest.mark.parametrize(
+        "pg_count, expected",
+        [
+            (0, True),
+            (1, False),
+            (9999, False),
+            (-1, False),
+        ]
+    )
+    def test_is_empty(self, osd_obj, pg_count, expected):
+        with mock.patch("cephadm.services.osd.OSD.get_pg_count", return_value=pg_count):
+            assert osd_obj.is_empty is expected
+
+    @mock.patch("cephadm.services.osd.RemoveUtil.safe_to_destroy")
+    def test_safe_to_destroy(self, _, osd_obj):
+        ret = osd_obj.safe_to_destroy()
+        osd_obj.rm_util.safe_to_destroy.assert_called_once()
+
+    @mock.patch("cephadm.services.osd.RemoveUtil.set_osd_flag")
+    def test_down(self, _, osd_obj):
+        ret = osd_obj.down()
+        osd_obj.rm_util.set_osd_flag.assert_called_with([osd_obj], 'down')
+
+    @mock.patch("cephadm.services.osd.RemoveUtil.destroy_osd")
+    def test_destroy_osd(self, _, osd_obj):
+        ret = osd_obj.destroy()
+        osd_obj.rm_util.destroy_osd.assert_called_once()
+
+    @mock.patch("cephadm.services.osd.RemoveUtil.purge_osd")
+    def test_purge(self, _, osd_obj):
+        ret = osd_obj.purge()
+        osd_obj.rm_util.purge_osd.assert_called_once()
+
+    @mock.patch("cephadm.services.osd.RemoveUtil.get_pg_count")
+    def test_pg_count(self, _, osd_obj):
+        ret = osd_obj.get_pg_count()
+        osd_obj.rm_util.get_pg_count.assert_called_once()
+
+    def test_drain_status_human_not_started(self, osd_obj):
+        assert osd_obj.drain_status_human() == 'not started'
+
+    def test_drain_status_human_started(self, osd_obj):
+        osd_obj.started = True
+        assert osd_obj.drain_status_human() == 'started'
+
+    def test_drain_status_human_draining(self, osd_obj):
+        osd_obj.started = True
+        osd_obj.draining = True
+        assert osd_obj.drain_status_human() == 'draining'
+
+    def test_drain_status_human_done(self, osd_obj):
+        osd_obj.started = True
+        osd_obj.draining = False
+        osd_obj.drain_done_at = datetime.utcnow()
+        assert osd_obj.drain_status_human() == 'done, waiting for purge'
+
+
+class TestOSDQueue:
+
+    def test_queue_size(self, osd_obj):
+        q = OSDQueue()
+        assert q.queue_size() == 0
+        q.add(osd_obj)
+        assert q.queue_size() == 1
+
+    @mock.patch("cephadm.services.osd.OSD.start")
+    @mock.patch("cephadm.services.osd.OSD.exists")
+    def test_enqueue(self, exist, start, osd_obj):
+        q = OSDQueue()
+        q.enqueue(osd_obj)
+        osd_obj.start.assert_called_once()
+
+    @mock.patch("cephadm.services.osd.OSD.stop")
+    @mock.patch("cephadm.services.osd.OSD.exists")
+    def test_rm_raise(self, exist, stop, osd_obj):
+        q = OSDQueue()
+        with pytest.raises(KeyError):
+            q.rm(osd_obj)
+            osd_obj.stop.assert_called_once()
+
+    @mock.patch("cephadm.services.osd.OSD.stop")
+    @mock.patch("cephadm.services.osd.OSD.exists")
+    def test_rm(self, exist, stop, osd_obj):
+        q = OSDQueue()
+        q.add(osd_obj)
+        q.rm(osd_obj)
+        osd_obj.stop.assert_called_once()
index bc6a8b6b8fdb09484824cfec2417b1302efa67a4..76807f8fccad7591c35d018f78ae5df281689cbe 100644 (file)
 from typing import NamedTuple, List
 import pytest
 
+from ceph.deployment.hostspec import HostSpec
 from ceph.deployment.service_spec import ServiceSpec, PlacementSpec, ServiceSpecValidationError
 
 from cephadm.module import HostAssignment
-from orchestrator import DaemonDescription, OrchestratorValidationError
+from orchestrator import DaemonDescription, OrchestratorValidationError, OrchestratorError, HostSpec
+
+
+def wrapper(func):
+    # some odd thingy to revert the order or arguments
+    def inner(*args):
+        def inner2(expected):
+            func(expected, *args)
+        return inner2
+    return inner
+
+
+@wrapper
+def none(expected):
+    assert expected == []
+
+
+@wrapper
+def one_of(expected, *hosts):
+    if not isinstance(expected, list):
+        assert False, str(expected)
+    assert len(expected) == 1, f'one_of failed len({expected}) != 1'
+    assert expected[0] in hosts
+
+
+@wrapper
+def two_of(expected, *hosts):
+    if not isinstance(expected, list):
+        assert False, str(expected)
+    assert len(expected) == 2, f'one_of failed len({expected}) != 2'
+    matches = 0
+    for h in hosts:
+        matches += int(h in expected)
+    if matches != 2:
+        assert False, f'two of {hosts} not in {expected}'
+
+
+@wrapper
+def exactly(expected, *hosts):
+    assert expected == list(hosts)
+
+
+@wrapper
+def error(expected, kind, match):
+    assert isinstance(expected, kind), (str(expected), match)
+    assert str(expected) == match, (str(expected), match)
+
+
+@wrapper
+def _or(expected, *inners):
+    def catch(inner):
+        try:
+            inner(expected)
+        except AssertionError as e:
+            return e
+    result = [catch(i) for i in inners]
+    if None not in result:
+        assert False, f"_or failed: {expected}"
+
+
+def _always_true(_): pass
+
+
+def k(s):
+    return [e for e in s.split(' ') if e]
+
+
+def get_result(key, results):
+    def match(one):
+        for o, k in zip(one, key):
+            if o != k and o != '*':
+                return False
+        return True
+    return [v for k, v in results
+     if match(k)][0]
+
+def mk_spec_and_host(spec_section, hosts, explicit_key, explicit, count):
+
+
+    if spec_section == 'hosts':
+        mk_spec = lambda: ServiceSpec('mon', placement=PlacementSpec(
+                    hosts=explicit,
+                    count=count,
+                ))
+        mk_hosts = lambda _: hosts
+    elif spec_section == 'label':
+        mk_spec = lambda: ServiceSpec('mon', placement=PlacementSpec(
+            label='mylabel',
+            count=count,
+        ))
+        mk_hosts = lambda l: [e for e in explicit if e in hosts] if l == 'mylabel' else hosts
+    elif spec_section == 'host_pattern':
+        pattern = {
+            'e': 'notfound',
+            '1': '1',
+            '12': '[1-2]',
+            '123': '*',
+        }[explicit_key]
+        mk_spec = lambda: ServiceSpec('mon', placement=PlacementSpec(
+                    host_pattern=pattern,
+                    count=count,
+                ))
+        mk_hosts = lambda _: hosts
+    else:
+        assert False
+    def _get_hosts_wrapper(label=None, as_hostspec=False):
+        hosts = mk_hosts(label)
+        if as_hostspec:
+            return list(map(HostSpec, hosts))
+        return hosts
+
+    return mk_spec, _get_hosts_wrapper
+
+
+def run_scheduler_test(results, mk_spec, get_hosts_func, get_daemons_func, key_elems):
+    key = ' '.join('N' if e is None else str(e) for e in key_elems)
+    try:
+        assert_res = get_result(k(key), results)
+    except IndexError:
+        try:
+            spec = mk_spec()
+            host_res = HostAssignment(
+                spec=spec,
+                get_hosts_func=get_hosts_func,
+                get_daemons_func=get_daemons_func).place()
+            if isinstance(host_res, list):
+                e = ', '.join(repr(h.hostname) for h in host_res)
+                assert False, f'`(k("{key}"), exactly({e})),` not found'
+            assert False, f'`(k("{key}"), ...),` not found'
+        except OrchestratorError as e:
+            assert False, f'`(k("{key}"), error({type(e).__name__}, {repr(str(e))})),` not found'
+
+    for _ in range(10):  # scheduler has a random component
+        try:
+            spec = mk_spec()
+            host_res = HostAssignment(
+                spec=spec,
+                get_hosts_func=get_hosts_func,
+                get_daemons_func=get_daemons_func).place()
+
+            assert_res(sorted([h.hostname for h in host_res]))
+        except Exception as e:
+            assert_res(e)
+
+
+# * first match from the top wins
+# * where e=[], *=any
+#
+#       + list of known hosts available for scheduling (host_key)
+#       |   + hosts used for explict placement (explicit_key)
+#       |   |   + count
+#       |   |   | + section (host, label, pattern)
+#       |   |   | |     + expected result
+#       |   |   | |     |
+test_explicit_scheduler_results = [
+    (k("*   *   0 *"), error(ServiceSpecValidationError, 'num/count must be > 1')),
+    (k("*   e   N l"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mon>: No matching hosts for label mylabel')),
+    (k("*   e   N p"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mon>: No matching hosts')),
+    (k("*   e   N h"), error(OrchestratorValidationError, 'placement spec is empty: no hosts, no label, no pattern, no count')),
+    (k("*   e   * *"), none),
+    (k("1   12  * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mon> on 2: Unknown hosts")),
+    (k("1   123 * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mon> on 2, 3: Unknown hosts")),
+    (k("1   *   * *"), exactly('1')),
+    (k("12  1   * *"), exactly('1')),
+    (k("12  12  1 *"), one_of('1', '2')),
+    (k("12  12  * *"), exactly('1', '2')),
+    (k("12  123 * h"), error(OrchestratorValidationError, "Cannot place <ServiceSpec for service_name=mon> on 3: Unknown hosts")),
+    (k("12  123 1 *"), one_of('1', '2', '3')),
+    (k("12  123 * *"), two_of('1', '2', '3')),
+    (k("123 1   * *"), exactly('1')),
+    (k("123 12  1 *"), one_of('1', '2')),
+    (k("123 12  * *"), exactly('1', '2')),
+    (k("123 123 1 *"), one_of('1', '2', '3')),
+    (k("123 123 2 *"), two_of('1', '2', '3')),
+    (k("123 123 * *"), exactly('1', '2', '3')),
+]
+
+@pytest.mark.parametrize("spec_section_key,spec_section",
+    [
+        ('h', 'hosts'),
+        ('l', 'label'),
+        ('p', 'host_pattern'),
+    ])
+@pytest.mark.parametrize("count",
+    [
+        None,
+        0,
+        1,
+        2,
+        3,
+    ])
+@pytest.mark.parametrize("explicit_key, explicit",
+    [
+        ('e', []),
+        ('1', ['1']),
+        ('12', ['1', '2']),
+        ('123', ['1', '2', '3']),
+    ])
+@pytest.mark.parametrize("host_key, hosts",
+    [
+        ('1', ['1']),
+        ('12', ['1', '2']),
+        ('123', ['1', '2', '3']),
+    ])
+def test_explicit_scheduler(host_key, hosts,
+                            explicit_key, explicit,
+                            count,
+                            spec_section_key, spec_section):
+
+    mk_spec, mk_hosts = mk_spec_and_host(spec_section, hosts, explicit_key, explicit, count)
+    run_scheduler_test(
+        results=test_explicit_scheduler_results,
+        mk_spec=mk_spec,
+        get_hosts_func=mk_hosts,
+        get_daemons_func=lambda _: [],
+        key_elems=(host_key, explicit_key, count, spec_section_key)
+    )
+
+
+# * first match from the top wins
+# * where e=[], *=any
+#
+#       + list of known hosts available for scheduling (host_key)
+#       |   + hosts used for explict placement (explicit_key)
+#       |   |   + count
+#       |   |   | + existing daemons
+#       |   |   | |     + section (host, label, pattern)
+#       |   |   | |     |   + expected result
+#       |   |   | |     |   |
+test_scheduler_daemons_results = [
+    (k("*   1   * *   *"), exactly('1')),
+    (k("1   123 * *   h"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mon> on 2, 3: Unknown hosts')),
+    (k("1   123 * *   *"), exactly('1')),
+    (k("12  123 * *   h"), error(OrchestratorValidationError, 'Cannot place <ServiceSpec for service_name=mon> on 3: Unknown hosts')),
+    (k("12  123 N *   *"), exactly('1', '2')),
+    (k("12  123 1 *   *"), one_of('1', '2')),
+    (k("12  123 2 *   *"), exactly('1', '2')),
+    (k("12  123 3 *   *"), exactly('1', '2')),
+    (k("123 123 N *   *"), exactly('1', '2', '3')),
+    (k("123 123 1 e   *"), one_of('1', '2', '3')),
+    (k("123 123 1 1   *"), exactly('1')),
+    (k("123 123 1 3   *"), exactly('3')),
+    (k("123 123 1 12  *"), one_of('1', '2')),
+    (k("123 123 1 112 *"), one_of('1', '2')),
+    (k("123 123 1 23  *"), one_of('2', '3')),
+    (k("123 123 1 123 *"), one_of('1', '2', '3')),
+    (k("123 123 2 e   *"), two_of('1', '2', '3')),
+    (k("123 123 2 1   *"), _or(exactly('1', '2'), exactly('1', '3'))),
+    (k("123 123 2 3   *"), _or(exactly('1', '3'), exactly('2', '3'))),
+    (k("123 123 2 12  *"), exactly('1', '2')),
+    (k("123 123 2 112 *"), exactly('1', '2')),
+    (k("123 123 2 23  *"), exactly('2', '3')),
+    (k("123 123 2 123 *"), two_of('1', '2', '3')),
+    (k("123 123 3 *   *"), exactly('1', '2', '3')),
+]
+
+
+@pytest.mark.parametrize("spec_section_key,spec_section",
+    [
+        ('h', 'hosts'),
+        ('l', 'label'),
+        ('p', 'host_pattern'),
+    ])
+@pytest.mark.parametrize("daemons_key, daemons",
+    [
+        ('e', []),
+        ('1', ['1']),
+        ('3', ['3']),
+        ('12', ['1', '2']),
+        ('112', ['1', '1', '2']),  # deal with existing co-located daemons
+        ('23', ['2', '3']),
+        ('123', ['1', '2', '3']),
+    ])
+@pytest.mark.parametrize("count",
+    [
+        None,
+        1,
+        2,
+        3,
+    ])
+@pytest.mark.parametrize("explicit_key, explicit",
+    [
+        ('1', ['1']),
+        ('123', ['1', '2', '3']),
+    ])
+@pytest.mark.parametrize("host_key, hosts",
+    [
+        ('1', ['1']),
+        ('12', ['1', '2']),
+        ('123', ['1', '2', '3']),
+    ])
+def test_scheduler_daemons(host_key, hosts,
+                           explicit_key, explicit,
+                           count,
+                           daemons_key, daemons,
+                           spec_section_key, spec_section):
+    mk_spec, mk_hosts = mk_spec_and_host(spec_section, hosts, explicit_key, explicit, count)
+    dds = [
+        DaemonDescription('mon', d, d)
+        for d in daemons
+    ]
+    run_scheduler_test(
+        results=test_scheduler_daemons_results,
+        mk_spec=mk_spec,
+        get_hosts_func=mk_hosts,
+        get_daemons_func=lambda _: dds,
+        key_elems=(host_key, explicit_key, count, daemons_key, spec_section_key)
+    )
+
+
+## =========================
 
 
 class NodeAssignmentTest(NamedTuple):
@@ -53,7 +364,7 @@ class NodeAssignmentTest(NamedTuple):
                 DaemonDescription('mon', 'a', 'host1'),
                 DaemonDescription('mon', 'b', 'host2'),
             ],
-            ['host1', 'host2', 'host3']
+            ['host3']
         ),
         # count 1 + partial host list
         NodeAssignmentTest(
@@ -74,7 +385,7 @@ class NodeAssignmentTest(NamedTuple):
             [
                 DaemonDescription('mon', 'a', 'host1'),
             ],
-            ['host1', 'host3']
+            ['host3']
         ),
         # count + partial host list + existing (deterministic)
         NodeAssignmentTest(
@@ -84,7 +395,7 @@ class NodeAssignmentTest(NamedTuple):
             [
                 DaemonDescription('mon', 'a', 'host1'),
             ],
-            ['host1', 'host2']
+            ['host1']
         ),
         # count + partial host list + existing (deterministic)
         NodeAssignmentTest(
@@ -94,7 +405,7 @@ class NodeAssignmentTest(NamedTuple):
             [
                 DaemonDescription('mon', 'a', 'host2'),
             ],
-            ['host1', 'host2']
+            ['host1']
         ),
         # label only
         NodeAssignmentTest(
@@ -114,9 +425,22 @@ class NodeAssignmentTest(NamedTuple):
         ),
     ])
 def test_node_assignment(service_type, placement, hosts, daemons, expected):
+    def get_hosts_func(label=None, as_hostspec=False):
+        if as_hostspec:
+            return [HostSpec(h) for h in hosts]
+        return hosts
+
+    service_id = None
+    if service_type == 'rgw':
+        service_id = 'realm.zone'
+
+    spec = ServiceSpec(service_type=service_type,
+                       service_id=service_id,
+                       placement=placement)
+
     hosts = HostAssignment(
-        spec=ServiceSpec(service_type, placement=placement),
-        get_hosts_func=lambda label=None, as_hostspec=False: hosts,
+        spec=spec,
+        get_hosts_func=get_hosts_func,
         get_daemons_func=lambda _: daemons).place()
     assert sorted([h.hostname for h in hosts]) == sorted(expected)
 
@@ -131,16 +455,6 @@ class NodeAssignmentTest2(NamedTuple):
 
 @pytest.mark.parametrize("service_type,placement,hosts,daemons,expected_len,in_set",
     [
-        # empty
-        NodeAssignmentTest2(
-            'mon',
-            PlacementSpec(),
-            'host1 host2 host3'.split(),
-            [],
-            1,
-            ['host1', 'host2', 'host3'],
-        ),
-
         # just count
         NodeAssignmentTest2(
             'mon',
@@ -187,7 +501,7 @@ class NodeAssignmentTest2(NamedTuple):
             PlacementSpec(count=2, hosts=['host3']),
             'host1 host2 host3'.split(),
             [],
-            2,
+            1,
             ['host1', 'host2', 'host3']
         ),
         # label + count
@@ -202,9 +516,14 @@ class NodeAssignmentTest2(NamedTuple):
     ])
 def test_node_assignment2(service_type, placement, hosts,
                           daemons, expected_len, in_set):
+    def get_hosts_func(label=None, as_hostspec=False):
+        if as_hostspec:
+            return [HostSpec(h) for h in hosts]
+        return hosts
+
     hosts = HostAssignment(
         spec=ServiceSpec(service_type, placement=placement),
-        get_hosts_func=lambda label=None, as_hostspec=False: hosts,
+        get_hosts_func=get_hosts_func,
         get_daemons_func=lambda _: daemons).place()
     assert len(hosts) == expected_len
     for h in [h.hostname for h in hosts]:
@@ -218,7 +537,7 @@ def test_node_assignment2(service_type, placement, hosts,
             PlacementSpec(count=3, hosts='host3'.split()),
             'host1 host2 host3'.split(),
             [],
-            3,
+            1,
             ['host3']
         ),
         # count + partial host list
@@ -227,15 +546,20 @@ def test_node_assignment2(service_type, placement, hosts,
             PlacementSpec(count=2, hosts=['host3']),
             'host1 host2 host3'.split(),
             [],
-            2,
+            1,
             ['host3']
         ),
     ])
 def test_node_assignment3(service_type, placement, hosts,
                           daemons, expected_len, must_have):
+    def get_hosts_func(label=None, as_hostspec=False):
+        if as_hostspec:
+            return [HostSpec(h) for h in hosts]
+        return hosts
+
     hosts = HostAssignment(
         spec=ServiceSpec(service_type, placement=placement),
-        get_hosts_func=lambda label=None, as_hostspec=False: hosts,
+        get_hosts_func=get_hosts_func,
         get_daemons_func=lambda _: daemons).place()
     assert len(hosts) == expected_len
     for h in must_have:
@@ -271,7 +595,7 @@ class NodeAssignmentTestBadSpec(NamedTuple):
             PlacementSpec(hosts=['unknownhost']),
             ['knownhost'],
             [],
-            "Cannot place <ServiceSpec for service_name=mon> on {'unknownhost'}: Unknown hosts"
+            "Cannot place <ServiceSpec for service_name=mon> on unknownhost: Unknown hosts"
         ),
         # unknown host pattern
         NodeAssignmentTestBadSpec(
@@ -291,9 +615,166 @@ class NodeAssignmentTestBadSpec(NamedTuple):
         ),
     ])
 def test_bad_specs(service_type, placement, hosts, daemons, expected):
+    def get_hosts_func(label=None, as_hostspec=False):
+        if as_hostspec:
+            return [HostSpec(h) for h in hosts]
+        return hosts
     with pytest.raises(OrchestratorValidationError) as e:
         hosts = HostAssignment(
             spec=ServiceSpec(service_type, placement=placement),
-            get_hosts_func=lambda label=None, as_hostspec=False: hosts,
+            get_hosts_func=get_hosts_func,
             get_daemons_func=lambda _: daemons).place()
     assert str(e.value) == expected
+
+class ActiveAssignmentTest(NamedTuple):
+    service_type: str
+    placement: PlacementSpec
+    hosts: List[str]
+    daemons: List[DaemonDescription]
+    expected: List[List[str]]
+
+
+@pytest.mark.parametrize("service_type,placement,hosts,daemons,expected",
+                         [
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=2),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1', is_active=True),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3'),
+                                 ],
+                                 [['host1', 'host2'], ['host1', 'host3']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=2),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1'),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3', is_active=True),
+                                 ],
+                                 [['host1', 'host3'], ['host2', 'host3']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=1),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1'),
+                                     DaemonDescription('mgr', 'b', 'host2', is_active=True),
+                                     DaemonDescription('mgr', 'c', 'host3'),
+                                 ],
+                                 [['host2']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=1),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1'),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3', is_active=True),
+                                 ],
+                                 [['host3']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=1),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1', is_active=True),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3', is_active=True),
+                                 ],
+                                 [['host1'], ['host3']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=2),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1'),
+                                     DaemonDescription('mgr', 'b', 'host2', is_active=True),
+                                     DaemonDescription('mgr', 'c', 'host3', is_active=True),
+                                 ],
+                                 [['host2', 'host3']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=1),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1', is_active=True),
+                                     DaemonDescription('mgr', 'b', 'host2', is_active=True),
+                                     DaemonDescription('mgr', 'c', 'host3', is_active=True),
+                                 ],
+                                 [['host1'], ['host2'], ['host3']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=1),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1', is_active=True),
+                                     DaemonDescription('mgr', 'a2', 'host1'),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3'),
+                                 ],
+                                 [['host1']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=1),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1', is_active=True),
+                                     DaemonDescription('mgr', 'a2', 'host1', is_active=True),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3'),
+                                 ],
+                                 [['host1']]
+                             ),
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=2),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1', is_active=True),
+                                     DaemonDescription('mgr', 'a2', 'host1'),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3', is_active=True),
+                                 ],
+                                 [['host1', 'host3']]
+                             ),
+                             # Explicit placement should override preference for active daemon
+                             ActiveAssignmentTest(
+                                 'mgr',
+                                 PlacementSpec(count=1, hosts=['host1']),
+                                 'host1 host2 host3'.split(),
+                                 [
+                                     DaemonDescription('mgr', 'a', 'host1'),
+                                     DaemonDescription('mgr', 'b', 'host2'),
+                                     DaemonDescription('mgr', 'c', 'host3', is_active=True),
+                                 ],
+                                 [['host1']]
+                             ),
+
+                         ])
+def test_active_assignment(service_type, placement, hosts, daemons, expected):
+    def get_hosts_func(label=None, as_hostspec=False):
+        if as_hostspec:
+            return [HostSpec(h) for h in hosts]
+        return hosts
+
+    spec = ServiceSpec(service_type=service_type,
+                       service_id=None,
+                       placement=placement)
+
+    hosts = HostAssignment(
+        spec=spec,
+        get_hosts_func=get_hosts_func,
+        get_daemons_func=lambda _: daemons).place()
+    assert sorted([h.hostname for h in hosts]) in expected
index de0f9ea059c8537352bffce55816decbda352163..9857e6fe4dc23bc6843631598f6c572c9bde38c8 100644 (file)
@@ -1,6 +1,6 @@
 from unittest.mock import MagicMock
 
-from cephadm.services.cephadmservice import CephadmService
+from cephadm.services.monitoring import GrafanaService
 
 
 class FakeMgr:
@@ -23,7 +23,7 @@ class TestCephadmService:
         # pylint: disable=protected-access
         mgr = FakeMgr()
         service_url = 'http://svc:1000'
-        service = CephadmService(mgr)
+        service = GrafanaService(mgr)
         service._set_service_url_on_dashboard('svc', 'get-cmd', 'set-cmd', service_url)
         assert mgr.config == service_url
 
index ea4e8c8f73425c98dde26bf22d2c07d6503009bd..2fa190a814fb98403371370c185326498fbec263 100644 (file)
@@ -3,16 +3,14 @@ import json
 import pytest
 
 from ceph.deployment.service_spec import ServiceSpec, NFSServiceSpec, RGWSpec, \
-    ServiceSpecValidationError, IscsiServiceSpec, PlacementSpec
+    IscsiServiceSpec, AlertManagerSpec
 
 from orchestrator import DaemonDescription, OrchestratorError
 
 
-def test_spec_octopus():
-    # https://tracker.ceph.com/issues/44934
-    # Those are real user data from early octopus.
-    # Please do not modify those JSON values.
-    specs_text = """[
+@pytest.mark.parametrize(
+    "spec_json",
+    json.loads("""[
 {
   "placement": {
     "count": 1
@@ -70,10 +68,48 @@ def test_spec_octopus():
   "rgw_realm": "default-rgw-realm",
   "rgw_zone": "eu-central-1",
   "subcluster": "1"
+},
+{
+  "service_type": "osd",
+  "service_id": "osd_spec_default",
+  "placement": {
+    "host_pattern": "*"
+  },
+  "data_devices": {
+    "model": "MC-55-44-XZ"
+  },
+  "db_devices": {
+    "model": "SSD-123-foo"
+  },
+  "wal_devices": {
+    "model": "NVME-QQQQ-987"
+  }
 }
 ]
-"""
-    dds_text = """[
+""")
+)
+def test_spec_octopus(spec_json):
+    # https://tracker.ceph.com/issues/44934
+    # Those are real user data from early octopus.
+    # Please do not modify those JSON values.
+
+    spec = ServiceSpec.from_json(spec_json)
+    # just some verification that we can sill read old octopus specs
+    def convert_to_old_style_json(j):
+        j_c = dict(j.copy())
+        j_c.pop('service_name', None)
+        if 'spec' in j_c:
+            spec = j_c.pop('spec')
+            j_c.update(spec)
+        j_c.pop('objectstore', None)
+        j_c.pop('filter_logic', None)
+        return j_c
+    assert spec_json == convert_to_old_style_json(spec.to_json())
+
+
+@pytest.mark.parametrize(
+    "dd_json",
+    json.loads("""[
     {
         "hostname": "ceph-001",
         "container_id": "d94d7969094d",
@@ -86,7 +122,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.725856",
         "created": "2020-04-02T19:23:08.829543",
-        "started": "2020-04-03T07:29:16.932838" 
+        "started": "2020-04-03T07:29:16.932838",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -100,7 +137,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.725903",
         "created": "2020-04-02T19:23:11.390694",
-        "started": "2020-04-03T07:29:16.910897" 
+        "started": "2020-04-03T07:29:16.910897",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -114,7 +152,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.725950",
         "created": "2020-04-02T19:23:52.025088",
-        "started": "2020-04-03T07:29:16.847972" 
+        "started": "2020-04-03T07:29:16.847972",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -128,7 +167,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.725807",
         "created": "2020-04-02T19:22:18.648584",
-        "started": "2020-04-03T07:29:16.856153" 
+        "started": "2020-04-03T07:29:16.856153",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -142,7 +182,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.725715",
         "created": "2020-04-02T19:22:13.863300",
-        "started": "2020-04-03T07:29:17.206024" 
+        "started": "2020-04-03T07:29:17.206024",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -156,7 +197,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.725996",
         "created": "2020-04-02T19:23:53.880197",
-        "started": "2020-04-03T07:29:16.880044" 
+        "started": "2020-04-03T07:29:16.880044",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -170,7 +212,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.726088",
         "created": "2020-04-02T20:35:02.991435",
-        "started": "2020-04-03T07:29:19.373956" 
+        "started": "2020-04-03T07:29:19.373956",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -184,7 +227,8 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.726134",
         "created": "2020-04-02T20:35:17.142272",
-        "started": "2020-04-03T07:29:19.374002" 
+        "started": "2020-04-03T07:29:19.374002",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
@@ -198,30 +242,24 @@ def test_spec_octopus():
         "status_desc": "running",
         "last_refresh": "2020-04-03T15:31:48.726042",
         "created": "2020-04-02T19:24:10.281163",
-        "started": "2020-04-03T07:29:16.926292" 
+        "started": "2020-04-03T07:29:16.926292",
+        "is_active": false 
     },
     {
         "hostname": "ceph-001",
         "daemon_id": "default-rgw-realm.eu-central-1.1.ceph-001.ytywjo",
         "daemon_type": "rgw",
         "status": 1,
-        "status_desc": "starting" 
+        "status_desc": "starting",
+        "is_active": false 
     }
-]"""
-    specs_json = json.loads(specs_text)
-    dds_json = json.loads(dds_text)
-    specs = [ServiceSpec.from_json(j) for j in specs_json]
-    dds = [DaemonDescription.from_json(j) for j in dds_json]
-
-    # just some verification that we can sill read old octopus specs
-    def remove_service_name(j):
-        if 'service_name' in j:
-            j_c = j.copy()
-            del j_c['service_name']
-            return j_c
-        return j
-    assert specs_json == [remove_service_name(s.to_json()) for s in specs]
-    assert dds_json == [d.to_json() for d in dds]
+]""")
+)
+def test_dd_octopus(dd_json):
+    # https://tracker.ceph.com/issues/44934
+    # Those are real user data from early octopus.
+    # Please do not modify those JSON values.
+    assert dd_json == DaemonDescription.from_json(dd_json).to_json()
 
 
 @pytest.mark.parametrize("spec,dd,valid",
@@ -489,3 +527,15 @@ def test_daemon_description_service_name(spec: ServiceSpec,
         with pytest.raises(OrchestratorError):
             dd.service_name()
 
+
+def test_alertmanager_spec_1():
+    spec = AlertManagerSpec()
+    assert spec.service_type == 'alertmanager'
+    assert isinstance(spec.user_data, dict)
+    assert len(spec.user_data.keys()) == 0
+
+
+def test_alertmanager_spec_2():
+    spec = AlertManagerSpec(user_data={'default_webhook_urls': ['foo']})
+    assert isinstance(spec.user_data, dict)
+    assert 'default_webhook_urls' in spec.user_data.keys()
diff --git a/ceph/src/pybind/mgr/cephadm/tests/test_upgrade.py b/ceph/src/pybind/mgr/cephadm/tests/test_upgrade.py
new file mode 100644 (file)
index 0000000..44e340c
--- /dev/null
@@ -0,0 +1,53 @@
+import json
+from unittest import mock
+
+from ceph.deployment.service_spec import ServiceSpec
+from cephadm import CephadmOrchestrator
+from .fixtures import _run_cephadm, wait, cephadm_module, with_host, with_service
+
+@mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+def test_upgrade_start(cephadm_module: CephadmOrchestrator):
+    with with_host(cephadm_module, 'test'):
+        assert wait(cephadm_module, cephadm_module.upgrade_start('image_id', None)) == 'Initiating upgrade to image_id'
+
+        assert wait(cephadm_module, cephadm_module.upgrade_status()).target_image == 'image_id'
+
+        assert wait(cephadm_module, cephadm_module.upgrade_pause()) == 'Paused upgrade to image_id'
+
+        assert wait(cephadm_module, cephadm_module.upgrade_resume()) == 'Resumed upgrade to image_id'
+
+        assert wait(cephadm_module, cephadm_module.upgrade_stop()) == 'Stopped upgrade to image_id'
+
+
+@mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+def test_upgrade_run(cephadm_module: CephadmOrchestrator):
+    with with_host(cephadm_module, 'test'):
+        cephadm_module.check_mon_command({
+            'prefix': 'config set',
+            'name': 'container_image',
+            'value': 'from_image',
+            'who': 'global',
+        })
+        with with_service(cephadm_module, ServiceSpec('mgr'), CephadmOrchestrator.apply_mgr, 'test'):
+            assert wait(cephadm_module, cephadm_module.upgrade_start('to_image', None)) == 'Initiating upgrade to to_image'
+
+            assert wait(cephadm_module, cephadm_module.upgrade_status()).target_image == 'to_image'
+
+            def _versions_mock(cmd):
+                return json.dumps({
+                    'mgr': {
+                        'myversion': 1
+                    }
+                })
+
+            cephadm_module._mon_command_mock_versions = _versions_mock
+
+            cephadm_module.upgrade._do_upgrade()
+
+            _, image, _ = cephadm_module.check_mon_command({
+                'prefix': 'config get',
+                'who': 'global',
+                'key': 'container_image',
+            })
+
+            assert image == 'to_image'
diff --git a/ceph/src/pybind/mgr/cephadm/tests/test_utils.py b/ceph/src/pybind/mgr/cephadm/tests/test_utils.py
new file mode 100644 (file)
index 0000000..9ae6d61
--- /dev/null
@@ -0,0 +1,34 @@
+import pytest
+
+from orchestrator import OrchestratorError
+from cephadm.utils import name_to_auth_entity
+
+def test_name_to_auth_entity(fs):
+
+    for daemon_type in ['rgw', 'rbd-mirror', 'nfs', "iscsi"]:
+        assert "client.%s.id1" % (daemon_type) == name_to_auth_entity(daemon_type, "id1", "host")
+        assert "client.%s.id1" % (daemon_type) == name_to_auth_entity(daemon_type, "id1", "")
+        assert "client.%s.id1" % (daemon_type) == name_to_auth_entity(daemon_type, "id1")
+
+    assert "client.crash.host" == name_to_auth_entity("crash", "id1", "host")
+    with pytest.raises(OrchestratorError):
+        t = name_to_auth_entity("crash", "id1", "")
+        t = name_to_auth_entity("crash", "id1")
+
+    assert "mon." == name_to_auth_entity("mon", "id1", "host")
+    assert "mon." == name_to_auth_entity("mon", "id1", "")
+    assert "mon." == name_to_auth_entity("mon", "id1")
+
+    assert "mgr.id1" == name_to_auth_entity("mgr", "id1", "host")
+    assert "mgr.id1" == name_to_auth_entity("mgr", "id1", "")
+    assert "mgr.id1" == name_to_auth_entity("mgr", "id1")
+
+    for daemon_type in ["osd", "mds", "client"]:
+        assert "%s.id1" % daemon_type == name_to_auth_entity(daemon_type, "id1", "host")
+        assert "%s.id1" % daemon_type == name_to_auth_entity(daemon_type, "id1", "")
+        assert "%s.id1" % daemon_type == name_to_auth_entity(daemon_type, "id1")
+
+    with pytest.raises(OrchestratorError):
+         name_to_auth_entity("whatever", "id1", "host")
+         name_to_auth_entity("whatever", "id1", "")
+         name_to_auth_entity("whatever", "id1")
index cdf432b62c50cb1dbe79caaef06536be5ecb5cad..0e72e0a7109233af43bfb2aa8feab32d56374bb5 100644 (file)
@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Optional
 
 import orchestrator
 from cephadm.utils import name_to_config_section
-from orchestrator import OrchestratorError
+from orchestrator import OrchestratorError, DaemonDescription
 
 if TYPE_CHECKING:
     from .module import CephadmOrchestrator
@@ -18,24 +18,56 @@ CEPH_UPGRADE_ORDER = ['mgr', 'mon', 'crash', 'osd', 'mds', 'rgw', 'rbd-mirror']
 
 logger = logging.getLogger(__name__)
 
+
+class UpgradeState:
+    def __init__(self,
+                 target_name: str,
+                 progress_id: str,
+                 target_id: Optional[str] = None,
+                 target_version: Optional[str] = None,
+                 error: Optional[str] = None,
+                 paused: Optional[bool] = None,
+                 ):
+        self.target_name: str = target_name
+        self.progress_id: str = progress_id
+        self.target_id: Optional[str] = target_id
+        self.target_version: Optional[str] = target_version
+        self.error: Optional[str] = error
+        self.paused: bool = paused or False
+
+    def to_json(self) -> dict:
+        return {
+            'target_name': self.target_name,
+            'progress_id': self.progress_id,
+            'target_id': self.target_id,
+            'target_version': self.target_version,
+            'error': self.error,
+            'paused': self.paused,
+        }
+
+    @classmethod
+    def from_json(cls, data) -> 'UpgradeState':
+        return cls(**data)
+
+
 class CephadmUpgrade:
     def __init__(self, mgr: "CephadmOrchestrator"):
         self.mgr = mgr
 
         t = self.mgr.get_store('upgrade_state')
         if t:
-            self.upgrade_state = json.loads(t)
+            self.upgrade_state: Optional[UpgradeState] = UpgradeState.from_json(json.loads(t))
         else:
             self.upgrade_state = None
 
     def upgrade_status(self) -> orchestrator.UpgradeStatusSpec:
         r = orchestrator.UpgradeStatusSpec()
         if self.upgrade_state:
-            r.target_image = self.upgrade_state.get('target_name')
+            r.target_image = self.upgrade_state.target_name
             r.in_progress = True
-            if self.upgrade_state.get('error'):
-                r.message = 'Error: ' + self.upgrade_state.get('error')
-            elif self.upgrade_state.get('paused'):
+            if self.upgrade_state.error:
+                r.message = 'Error: ' + self.upgrade_state.error
+            elif self.upgrade_state.paused:
                 r.message = 'Upgrade paused'
         return r
 
@@ -58,19 +90,19 @@ class CephadmUpgrade:
         else:
             raise OrchestratorError('must specify either image or version')
         if self.upgrade_state:
-            if self.upgrade_state.get('target_name') != target_name:
+            if self.upgrade_state.target_name != target_name:
                 raise OrchestratorError(
                     'Upgrade to %s (not %s) already in progress' %
-                (self.upgrade_state.get('target_name'), target_name))
-            if self.upgrade_state.get('paused'):
-                del self.upgrade_state['paused']
+                    (self.upgrade_state.target_name, target_name))
+            if self.upgrade_state.paused:
+                self.upgrade_state.paused = False
                 self._save_upgrade_state()
-                return 'Resumed upgrade to %s' % self.upgrade_state.get('target_name')
-            return 'Upgrade to %s in progress' % self.upgrade_state.get('target_name')
-        self.upgrade_state = {
-            'target_name': target_name,
-            'progress_id': str(uuid.uuid4()),
-        }
+                return 'Resumed upgrade to %s' % self.upgrade_state.target_name
+            return 'Upgrade to %s in progress' % self.upgrade_state.target_name
+        self.upgrade_state = UpgradeState(
+            target_name=target_name,
+            progress_id=str(uuid.uuid4())
+        )
         self._update_upgrade_progress(0.0)
         self._save_upgrade_state()
         self._clear_upgrade_health_checks()
@@ -80,29 +112,29 @@ class CephadmUpgrade:
     def upgrade_pause(self) -> str:
         if not self.upgrade_state:
             raise OrchestratorError('No upgrade in progress')
-        if self.upgrade_state.get('paused'):
-            return 'Upgrade to %s already paused' % self.upgrade_state.get('target_name')
-        self.upgrade_state['paused'] = True
+        if self.upgrade_state.paused:
+            return 'Upgrade to %s already paused' % self.upgrade_state.target_name
+        self.upgrade_state.paused = True
         self._save_upgrade_state()
-        return 'Paused upgrade to %s' % self.upgrade_state.get('target_name')
+        return 'Paused upgrade to %s' % self.upgrade_state.target_name
 
     def upgrade_resume(self) -> str:
         if not self.upgrade_state:
             raise OrchestratorError('No upgrade in progress')
-        if not self.upgrade_state.get('paused'):
-            return 'Upgrade to %s not paused' % self.upgrade_state.get('target_name')
-        del self.upgrade_state['paused']
+        if not self.upgrade_state.paused:
+            return 'Upgrade to %s not paused' % self.upgrade_state.target_name
+        self.upgrade_state.paused = False
         self._save_upgrade_state()
         self.mgr.event.set()
-        return 'Resumed upgrade to %s' % self.upgrade_state.get('target_name')
+        return 'Resumed upgrade to %s' % self.upgrade_state.target_name
 
     def upgrade_stop(self) -> str:
         if not self.upgrade_state:
             return 'No upgrade in progress'
-        target_name = self.upgrade_state.get('target_name')
-        if 'progress_id' in self.upgrade_state:
+        target_name = self.upgrade_state.target_name
+        if self.upgrade_state.progress_id:
             self.mgr.remote('progress', 'complete',
-                           self.upgrade_state['progress_id'])
+                            self.upgrade_state.progress_id)
         self.upgrade_state = None
         self._save_upgrade_state()
         self._clear_upgrade_health_checks()
@@ -114,34 +146,27 @@ class CephadmUpgrade:
         Returns false, if nothing was done.
         :return:
         """
-        if self.upgrade_state and not self.upgrade_state.get('paused'):
+        if self.upgrade_state and not self.upgrade_state.paused:
             self._do_upgrade()
             return True
         return False
 
-    def _wait_for_ok_to_stop(self, s) -> bool:
+    def _wait_for_ok_to_stop(self, s: DaemonDescription) -> bool:
         # only wait a little bit; the service might go away for something
         tries = 4
         while tries > 0:
-            if s.daemon_type not in ['mon', 'osd', 'mds']:
-                logger.info('Upgrade: It is presumed safe to stop %s.%s' %
-                              (s.daemon_type, s.daemon_id))
-                return True
-            ret, out, err = self.mgr.mon_command({
-                'prefix': '%s ok-to-stop' % s.daemon_type,
-                'ids': [s.daemon_id],
-            })
-            if not self.upgrade_state or self.upgrade_state.get('paused'):
+            if not self.upgrade_state or self.upgrade_state.paused:
                 return False
-            if ret:
-                logger.info('Upgrade: It is NOT safe to stop %s.%s' %
-                              (s.daemon_type, s.daemon_id))
-                time.sleep(15)
-                tries -= 1
-            else:
-                logger.info('Upgrade: It is safe to stop %s.%s' %
-                              (s.daemon_type, s.daemon_id))
+
+            r = self.mgr.cephadm_services[s.daemon_type].ok_to_stop([s.daemon_id])
+
+            if not r.retval:
+                logger.info(f'Upgrade: {r.stdout}')
                 return True
+            logger.error('Upgrade: {r.stderr}')
+
+            time.sleep(15)
+            tries -= 1
         return False
 
     def _clear_upgrade_health_checks(self) -> None:
@@ -153,23 +178,32 @@ class CephadmUpgrade:
 
     def _fail_upgrade(self, alert_id, alert) -> None:
         logger.error('Upgrade: Paused due to %s: %s' % (alert_id,
-                                                          alert['summary']))
-        self.upgrade_state['error'] = alert_id + ': ' + alert['summary']
-        self.upgrade_state['paused'] = True
+                                                        alert['summary']))
+        if not self.upgrade_state:
+            assert False, 'No upgrade in progress'
+
+        self.upgrade_state.error = alert_id + ': ' + alert['summary']
+        self.upgrade_state.paused = True
         self._save_upgrade_state()
         self.mgr.health_checks[alert_id] = alert
         self.mgr.set_health_checks(self.mgr.health_checks)
 
     def _update_upgrade_progress(self, progress) -> None:
-        if 'progress_id' not in self.upgrade_state:
-            self.upgrade_state['progress_id'] = str(uuid.uuid4())
+        if not self.upgrade_state:
+            assert False, 'No upgrade in progress'
+
+        if not self.upgrade_state.progress_id:
+            self.upgrade_state.progress_id = str(uuid.uuid4())
             self._save_upgrade_state()
-        self.mgr.remote('progress', 'update', self.upgrade_state['progress_id'],
-                        ev_msg='Upgrade to %s' % self.upgrade_state['target_name'],
+        self.mgr.remote('progress', 'update', self.upgrade_state.progress_id,
+                        ev_msg='Upgrade to %s' % self.upgrade_state.target_name,
                         ev_progress=progress)
 
     def _save_upgrade_state(self) -> None:
-        self.mgr.set_store('upgrade_state', json.dumps(self.upgrade_state))
+        if not self.upgrade_state:
+            self.mgr.set_store('upgrade_state', None)
+            return
+        self.mgr.set_store('upgrade_state', json.dumps(self.upgrade_state.to_json()))
 
     def _do_upgrade(self):
         # type: () -> None
@@ -177,8 +211,8 @@ class CephadmUpgrade:
             logger.debug('_do_upgrade no state, exiting')
             return
 
-        target_name = self.upgrade_state.get('target_name')
-        target_id = self.upgrade_state.get('target_id', None)
+        target_name = self.upgrade_state.target_name
+        target_id = self.upgrade_state.target_id
         if not target_id:
             # need to learn the container hash
             logger.info('Upgrade: First pull of %s' % target_name)
@@ -192,12 +226,12 @@ class CephadmUpgrade:
                     'detail': [str(e)],
                 })
                 return
-            self.upgrade_state['target_id'] = target_id
-            self.upgrade_state['target_version'] = target_version
+            self.upgrade_state.target_id = target_id
+            self.upgrade_state.target_version = target_version
             self._save_upgrade_state()
-        target_version = self.upgrade_state.get('target_version')
+        target_version = self.upgrade_state.target_version
         logger.info('Upgrade: Target is %s with id %s' % (target_name,
-                                                            target_id))
+                                                          target_id))
 
         # get all distinct container_image settings
         image_settings = {}
@@ -230,19 +264,19 @@ class CephadmUpgrade:
                 if daemon_type == 'mgr' and \
                    d.daemon_id == self.mgr.get_mgr_id():
                     logger.info('Upgrade: Need to upgrade myself (mgr.%s)' %
-                                  self.mgr.get_mgr_id())
+                                self.mgr.get_mgr_id())
                     need_upgrade_self = True
                     continue
 
                 # make sure host has latest container image
                 out, err, code = self.mgr._run_cephadm(
-                    d.hostname, None, 'inspect-image', [],
+                    d.hostname, '', 'inspect-image', [],
                     image=target_name, no_fsid=True, error_ok=True)
                 if code or json.loads(''.join(out)).get('image_id') != target_id:
                     logger.info('Upgrade: Pulling %s on %s' % (target_name,
-                                                                 d.hostname))
+                                                               d.hostname))
                     out, err, code = self.mgr._run_cephadm(
-                        d.hostname, None, 'pull', [],
+                        d.hostname, '', 'pull', [],
                         image=target_name, no_fsid=True, error_ok=True)
                     if code:
                         self._fail_upgrade('UPGRADE_FAILED_PULL', {
@@ -256,8 +290,9 @@ class CephadmUpgrade:
                         return
                     r = json.loads(''.join(out))
                     if r.get('image_id') != target_id:
-                        logger.info('Upgrade: image %s pull on %s got new image %s (not %s), restarting' % (target_name, d.hostname, r['image_id'], target_id))
-                        self.upgrade_state['target_id'] = r['image_id']
+                        logger.info('Upgrade: image %s pull on %s got new image %s (not %s), restarting' % (
+                            target_name, d.hostname, r['image_id'], target_id))
+                        self.upgrade_state.target_id = r['image_id']
                         self._save_upgrade_state()
                         return
 
@@ -265,23 +300,19 @@ class CephadmUpgrade:
 
                 if not d.container_image_id:
                     if d.container_image_name == target_name:
-                        logger.debug('daemon %s has unknown container_image_id but has correct image name' % (d.name()))
+                        logger.debug(
+                            'daemon %s has unknown container_image_id but has correct image name' % (d.name()))
                         continue
                 if not self._wait_for_ok_to_stop(d):
                     return
                 logger.info('Upgrade: Redeploying %s.%s' %
-                              (d.daemon_type, d.daemon_id))
-                ret, out, err = self.mgr.check_mon_command({
-                    'prefix': 'config set',
-                    'name': 'container_image',
-                    'value': target_name,
-                    'who': name_to_config_section(daemon_type + '.' + d.daemon_id),
-                })
+                            (d.daemon_type, d.daemon_id))
                 self.mgr._daemon_action(
                     d.daemon_type,
                     d.daemon_id,
                     d.hostname,
-                    'redeploy'
+                    'redeploy',
+                    image=target_name
                 )
                 return
 
@@ -301,7 +332,7 @@ class CephadmUpgrade:
                     return
 
                 logger.info('Upgrade: there are %d other already-upgraded '
-                              'standby mgrs, failing over' % num)
+                            'standby mgrs, failing over' % num)
 
                 self._update_upgrade_progress(done / len(daemons))
 
@@ -317,10 +348,10 @@ class CephadmUpgrade:
                     self.mgr.set_health_checks(self.mgr.health_checks)
 
             # make sure 'ceph versions' agrees
-            ret, out, err = self.mgr.check_mon_command({
+            ret, out_ver, err = self.mgr.check_mon_command({
                 'prefix': 'versions',
             })
-            j = json.loads(out)
+            j = json.loads(out_ver)
             for version, count in j.get(daemon_type, {}).items():
                 if version != target_version:
                     logger.warning(
@@ -330,7 +361,7 @@ class CephadmUpgrade:
             # push down configs
             if image_settings.get(daemon_type) != target_name:
                 logger.info('Upgrade: Setting container_image for all %s...' %
-                              daemon_type)
+                            daemon_type)
                 ret, out, err = self.mgr.check_mon_command({
                     'prefix': 'config set',
                     'name': 'container_image',
@@ -343,7 +374,7 @@ class CephadmUpgrade:
                     to_clean.append(section)
             if to_clean:
                 logger.debug('Upgrade: Cleaning up container_image for %s...' %
-                               to_clean)
+                             to_clean)
                 for section in to_clean:
                     ret, image, err = self.mgr.check_mon_command({
                         'prefix': 'config rm',
@@ -352,7 +383,7 @@ class CephadmUpgrade:
                     })
 
             logger.info('Upgrade: All %s daemons are up to date.' %
-                          daemon_type)
+                        daemon_type)
 
         # clean up
         logger.info('Upgrade: Finalizing container_image settings')
@@ -370,9 +401,9 @@ class CephadmUpgrade:
             })
 
         logger.info('Upgrade: Complete!')
-        if 'progress_id' in self.upgrade_state:
+        if self.upgrade_state.progress_id:
             self.mgr.remote('progress', 'complete',
-                        self.upgrade_state['progress_id'])
+                            self.upgrade_state.progress_id)
         self.upgrade_state = None
         self._save_upgrade_state()
         return
index 290011843e08da793ef6f1780e8b231c921e602d..ca8bb48c04c587af60acd201ef5f984db48b3ac7 100644 (file)
+import logging
 import re
-
+import json
+from enum import Enum
+from functools import wraps
+from typing import Optional, Callable, TypeVar, List, NewType, TYPE_CHECKING
 from orchestrator import OrchestratorError
 
-def name_to_config_section(name):
+if TYPE_CHECKING:
+    from cephadm import CephadmOrchestrator
+
+T = TypeVar('T')
+logger = logging.getLogger(__name__)
+
+ConfEntity = NewType('ConfEntity', str)
+AuthEntity = NewType('AuthEntity', str)
+
+
+class CephadmNoImage(Enum):
+    token = 1
+
+
+# Used for _run_cephadm used for check-host etc that don't require an --image parameter
+cephadmNoImage = CephadmNoImage.token
+
+
+def name_to_config_section(name: str) -> ConfEntity:
     """
     Map from daemon names to ceph entity names (as seen in config)
     """
     daemon_type = name.split('.', 1)[0]
     if daemon_type in ['rgw', 'rbd-mirror', 'nfs', 'crash', 'iscsi']:
-        return 'client.' + name
+        return ConfEntity('client.' + name)
     elif daemon_type in ['mon', 'osd', 'mds', 'mgr', 'client']:
-        return name
+        return ConfEntity(name)
     else:
-        return 'mon'
+        return ConfEntity('mon')
 
 
-def name_to_auth_entity(name) -> str:
+def name_to_auth_entity(daemon_type: str,
+                        daemon_id: str,
+                        host: str = "",
+                        ) -> AuthEntity:
     """
-    Map from daemon names to ceph entity names (as seen in config)
+    Map from daemon names/host to ceph entity names (as seen in config)
     """
-    daemon_type = name.split('.', 1)[0]
-    if daemon_type in ['rgw', 'rbd-mirror', 'nfs', 'crash', 'iscsi']:
-        return 'client.' + name
+    if daemon_type in ['rgw', 'rbd-mirror', 'nfs', "iscsi"]:
+        return AuthEntity('client.' + daemon_type + "." + daemon_id)
+    elif daemon_type == 'crash':
+        if host == "":
+            raise OrchestratorError("Host not provided to generate <crash> auth entity name")
+        return AuthEntity('client.' + daemon_type + "." + host)
     elif daemon_type == 'mon':
-        return 'mon.'
-    elif daemon_type in ['osd', 'mds', 'mgr', 'client']:
-        return name
+        return AuthEntity('mon.')
+    elif daemon_type == 'mgr':
+        return AuthEntity(daemon_type + "." + daemon_id)
+    elif daemon_type in ['osd', 'mds', 'client']:
+        return AuthEntity(daemon_type + "." + daemon_id)
     else:
         raise OrchestratorError("unknown auth entity name")
+
+
+def forall_hosts(f: Callable[..., T]) -> Callable[..., List[T]]:
+    @wraps(f)
+    def forall_hosts_wrapper(*args) -> List[T]:
+        from cephadm.module import CephadmOrchestrator
+
+        # Some weired logic to make calling functions with multiple arguments work.
+        if len(args) == 1:
+            vals = args[0]
+            self = None
+        elif len(args) == 2:
+            self, vals = args
+        else:
+            assert 'either f([...]) or self.f([...])'
+
+        def do_work(arg):
+            if not isinstance(arg, tuple):
+                arg = (arg, )
+            try:
+                if self:
+                    return f(self, *arg)
+                return f(*arg)
+            except Exception as e:
+                logger.exception(f'executing {f.__name__}({args}) failed.')
+                raise
+
+        assert CephadmOrchestrator.instance is not None
+        return CephadmOrchestrator.instance._worker_pool.map(do_work, vals)
+
+    return forall_hosts_wrapper
+
+
+def get_cluster_health(mgr: 'CephadmOrchestrator') -> str:
+    # check cluster health
+    ret, out, err = mgr.check_mon_command({
+        'prefix': 'health',
+        'format': 'json',
+    })
+    try:
+        j = json.loads(out)
+    except Exception as e:
+        raise OrchestratorError('failed to parse health status')
+
+    return j['status']
diff --git a/ceph/src/pybind/mgr/cephadm/vagrant.config.example.json b/ceph/src/pybind/mgr/cephadm/vagrant.config.example.json
new file mode 100644 (file)
index 0000000..5b18909
--- /dev/null
@@ -0,0 +1,13 @@
+/**
+ * To use a permenant config copy this file to "vagrant.config.json",
+ * edit it and remove this comment beacuase comments are not allowed
+ * in a valid JSON file.
+ */
+
+{
+  "mgrs": 1,
+  "mons": 1,
+  "osds": 1,
+  "disks": 2
+}
+
index 6ab0ded2559d1488341d47268b1282f62f9f0e74..66e42009be36005778abd39dbbd9bb303a5c3197 100644 (file)
@@ -121,10 +121,6 @@ to be visible in the rendered template.
 Running Unit Tests
 ~~~~~~~~~~~~~~~~~~
 
-Create ``unit-test-configuration.ts`` file based on
-``unit-test-configuration.ts.sample`` in directory
-``src/pybind/mgr/dashboard/frontend/src``.
-
 Run ``npm run test`` to execute the unit tests via `Jest
 <https://facebook.github.io/jest/>`_.
 
index 25a7f19f3c6370ccf35eb52b6f93046fbdc8b40b..30013bb777102eabc78ab3c194a1496461c00310 100644 (file)
@@ -6,7 +6,15 @@ ceph dashboard module
 from __future__ import absolute_import
 
 import os
-
+import cherrypy
+
+if 'COVERAGE_ENABLED' in os.environ:
+    import coverage  # pylint: disable=import-error
+    __cov = coverage.Coverage(config_file="{}/.coveragerc".format(os.path.dirname(__file__)),
+                              data_suffix=True)
+    __cov.start()
+    cherrypy.engine.subscribe('after_request', __cov.save)
+    cherrypy.engine.subscribe('stop', __cov.stop)
 
 if 'UNITTEST' not in os.environ:
     class _ModuleProxy(object):
index d482ee6de37cf8b81f256f848fb9958c0d8f331c..499fae94612ce4a2367417637aff0b234afb0a9e 100644 (file)
@@ -8,7 +8,7 @@ import os
 import cherrypy
 import cephfs
 
-from . import ApiController, RESTController, UiApiController
+from . import ApiController, ControllerDoc, RESTController, UiApiController
 from .. import mgr
 from ..exceptions import DashboardException
 from ..security import Scope
@@ -19,7 +19,7 @@ from ..tools import ViewCache
 
 @ApiController('/cephfs', Scope.CEPHFS)
 class CephFS(RESTController):
-    def __init__(self):
+    def __init__(self):  # pragma: no cover
         super(CephFS, self).__init__()
 
         # Stateful instances of CephFSClients, hold cached results.  Key to
@@ -179,7 +179,7 @@ class CephFS(RESTController):
                                                     info['name'],
                                                     "mds_server.handle_client_request")
                 else:
-                    activity = 0.0
+                    activity = 0.0  # pragma: no cover
 
                 self._append_mds_metadata(mds_versions, info['name'])
                 rank_table.append(
@@ -285,15 +285,15 @@ class CephFS(RESTController):
         # indepdendent of whether it's a kernel or userspace
         # client, so that the javascript doesn't have to grok that.
         for client in clients:
-            if "ceph_version" in client['client_metadata']:
+            if "ceph_version" in client['client_metadata']:  # pragma: no cover - no complexity
                 client['type'] = "userspace"
                 client['version'] = client['client_metadata']['ceph_version']
                 client['hostname'] = client['client_metadata']['hostname']
-            elif "kernel_version" in client['client_metadata']:
+            elif "kernel_version" in client['client_metadata']:  # pragma: no cover - no complexity
                 client['type'] = "kernel"
                 client['version'] = client['client_metadata']['kernel_version']
                 client['hostname'] = client['client_metadata']['hostname']
-            else:
+            else:  # pragma: no cover - no complexity there
                 client['type'] = "unknown"
                 client['version'] = ""
                 client['hostname'] = ""
@@ -334,7 +334,7 @@ class CephFS(RESTController):
         """
         try:
             return self._get_root_directory(self._cephfs_instance(fs_id))
-        except (cephfs.PermissionError, cephfs.ObjectNotFound):
+        except (cephfs.PermissionError, cephfs.ObjectNotFound):  # pragma: no cover
             return None
 
     def _get_root_directory(self, cfs):
@@ -365,7 +365,7 @@ class CephFS(RESTController):
         try:
             cfs = self._cephfs_instance(fs_id)
             paths = cfs.ls_dir(path, depth)
-        except (cephfs.PermissionError, cephfs.ObjectNotFound):
+        except (cephfs.PermissionError, cephfs.ObjectNotFound):  # pragma: no cover
             paths = []
         return paths
 
@@ -467,6 +467,7 @@ class CephFSClients(object):
 
 
 @UiApiController('/cephfs', Scope.CEPHFS)
+@ControllerDoc("Dashboard UI helper function; not part of the public API", "CephFSUi")
 class CephFsUi(CephFS):
     RESOURCE_ID = 'fs_id'
 
@@ -515,6 +516,6 @@ class CephFsUi(CephFS):
             paths = cfs.ls_dir(path, depth)
             if path == os.sep:
                 paths = [self._get_root_directory(cfs)] + paths
-        except (cephfs.PermissionError, cephfs.ObjectNotFound):
+        except (cephfs.PermissionError, cephfs.ObjectNotFound):  # pragma: no cover
             paths = []
         return paths
index 6a2ffd8f7709c064a28446a73bfe042530206c89..3aeef258aa3bbf862d5c9926909493c31866ff98 100644 (file)
@@ -3,7 +3,8 @@ from __future__ import absolute_import
 
 from cherrypy import NotFound
 
-from . import ApiController, RESTController, Endpoint, ReadPermission, UiApiController
+from . import ApiController, ControllerDoc, RESTController, Endpoint, ReadPermission, \
+    UiApiController
 from ..security import Scope
 from ..services.ceph_service import CephService
 from .. import mgr
@@ -35,6 +36,7 @@ class CrushRule(RESTController):
 
 
 @UiApiController('/crush_rule', Scope.POOL)
+@ControllerDoc("Dashboard UI helper function; not part of the public API", "CrushRuleUi")
 class CrushRuleUi(CrushRule):
     @Endpoint()
     @ReadPermission
index 1203db74e7f9a93e869b37bb2154c3c0cf41e024..84de247010c1bf1398073ef05f1031dde750b1d5 100644 (file)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
+from typing import Any, Dict, Union
 
 import logging
 import cherrypy
@@ -31,7 +32,7 @@ class Docs(BaseController):
                 if endpoint.is_api or all_endpoints:
                     list_of_ctrl.add(endpoint.ctrl)
 
-        tag_map = {}
+        tag_map: Dict[str, str] = {}
         for ctrl in list_of_ctrl:
             tag_name = ctrl.__name__
             tag_descr = ""
@@ -183,7 +184,7 @@ class Docs(BaseController):
 
     @classmethod
     def _gen_responses(cls, method, resp_object=None):
-        resp = {
+        resp: Dict[str, Dict[str, Union[str, Any]]] = {
             '400': {
                 "description": "Operation exception. Please check the "
                                "response body for details."
@@ -252,7 +253,7 @@ class Docs(BaseController):
         return parameters
 
     @classmethod
-    def _gen_paths(cls, all_endpoints, base_url):
+    def _gen_paths(cls, all_endpoints):
         method_order = ['get', 'post', 'put', 'delete']
         paths = {}
         for path, endpoints in sorted(list(ENDPOINT_MAP.items()),
@@ -308,7 +309,7 @@ class Docs(BaseController):
                     methods[method.lower()]['security'] = [{'jwt': []}]
 
             if not skip:
-                paths[path[len(base_url):]] = methods
+                paths[path] = methods
 
         return paths
 
@@ -320,7 +321,7 @@ class Docs(BaseController):
         host = host[host.index(':')+3:]
         logger.debug("Host: %s", host)
 
-        paths = self._gen_paths(all_endpoints, base_url)
+        paths = self._gen_paths(all_endpoints)
 
         if not base_url:
             base_url = "/"
@@ -363,11 +364,11 @@ class Docs(BaseController):
 
     @Endpoint(path="api.json")
     def api_json(self):
-        return self._gen_spec(False, "/api")
+        return self._gen_spec(False, "/")
 
     @Endpoint(path="api-all.json")
     def api_all_json(self):
-        return self._gen_spec(True, "/api")
+        return self._gen_spec(True, "/")
 
     def _swagger_ui_page(self, all_endpoints=False, token=None):
         base = cherrypy.request.base
index c4cc867220d6ca07f8a7d4c0d7500e09cde9530c..3c8ba61f9f8ab9387038d56a879d5e499d630a82 100644 (file)
@@ -3,7 +3,8 @@ from __future__ import absolute_import
 
 from cherrypy import NotFound
 
-from . import ApiController, RESTController, Endpoint, ReadPermission, UiApiController
+from . import ApiController, ControllerDoc, RESTController, Endpoint, ReadPermission, \
+    UiApiController
 from ..security import Scope
 from ..services.ceph_service import CephService
 from .. import mgr
@@ -36,6 +37,7 @@ class ErasureCodeProfile(RESTController):
 
 
 @UiApiController('/erasure_code_profile', Scope.POOL)
+@ControllerDoc("Dashboard UI helper function; not part of the public API", "ErasureCodeProfileUi")
 class ErasureCodeProfileUi(ErasureCodeProfile):
     @Endpoint()
     @ReadPermission
index 5995161bee1098d5e5eb4e929203b167db2ed636..db498c8aaad8983eeae721bb5a5afb97ce997a5d 100644 (file)
@@ -1,12 +1,16 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
+
 import copy
 
-from typing import List
+from typing import List, Dict
+
+import cherrypy
 
 from mgr_util import merge_dicts
 from orchestrator import HostSpec
-from . import ApiController, RESTController, Task
+from . import ApiController, RESTController, Task, Endpoint, ReadPermission, \
+    UiApiController, BaseController
 from .orchestrator import raise_if_no_orchestrator
 from .. import mgr
 from ..exceptions import DashboardException
@@ -22,7 +26,8 @@ def host_task(name, metadata, wait_for=10.0):
 
 def merge_hosts_by_hostname(ceph_hosts, orch_hosts):
     # type: (List[dict], List[HostSpec]) -> List[dict]
-    """Merge Ceph hosts with orchestrator hosts by hostnames.
+    """
+    Merge Ceph hosts with orchestrator hosts by hostnames.
 
     :param ceph_hosts: hosts returned from mgr
     :type ceph_hosts: list of dict
@@ -31,31 +36,31 @@ def merge_hosts_by_hostname(ceph_hosts, orch_hosts):
     :return list of dict
     """
     hosts = copy.deepcopy(ceph_hosts)
-    orch_hosts_map = {
-        host.hostname: {
-            'labels': host.labels
-        }
-        for host in orch_hosts
-    }
-
-    # Hosts in both Ceph and Orchestrator
+    orch_hosts_map = {host.hostname: host.to_json() for host in orch_hosts}
+
+    # Sort labels.
+    for hostname in orch_hosts_map:
+        orch_hosts_map[hostname]['labels'].sort()
+
+    # Hosts in both Ceph and Orchestrator.
     for host in hosts:
         hostname = host['hostname']
         if hostname in orch_hosts_map:
-            host['labels'] = orch_hosts_map[hostname]['labels']
+            host.update(orch_hosts_map[hostname])
             host['sources']['orchestrator'] = True
             orch_hosts_map.pop(hostname)
 
-    # Hosts only in Orchestrator
+    # Hosts only in Orchestrator.
     orch_hosts_only = [
-        dict(hostname=hostname,
-             ceph_version='',
-             labels=orch_hosts_map[hostname]['labels'],
-             services=[],
-             sources={
-                 'ceph': False,
-                 'orchestrator': True
-             }) for hostname in orch_hosts_map
+        merge_dicts(
+            {
+                'ceph_version': '',
+                'services': [],
+                'sources': {
+                    'ceph': False,
+                    'orchestrator': True
+                }
+            }, orch_hosts_map[hostname]) for hostname in orch_hosts_map
     ]
     hosts.extend(orch_hosts_only)
     return hosts
@@ -68,13 +73,17 @@ def get_hosts(from_ceph=True, from_orchestrator=True):
     ceph_hosts = []
     if from_ceph:
         ceph_hosts = [
-            merge_dicts(server, {
-                'labels': [],
-                'sources': {
-                    'ceph': True,
-                    'orchestrator': False
-                }
-            }) for server in mgr.list_servers()
+            merge_dicts(
+                server, {
+                    'addr': '',
+                    'labels': [],
+                    'service_type': '',
+                    'sources': {
+                        'ceph': True,
+                        'orchestrator': False
+                    },
+                    'status': ''
+                }) for server in mgr.list_servers()
         ]
     if from_orchestrator:
         orch = OrchClient.instance()
@@ -83,6 +92,18 @@ def get_hosts(from_ceph=True, from_orchestrator=True):
     return ceph_hosts
 
 
+def get_host(hostname: str) -> Dict:
+    """
+    Get a specific host from Ceph or Orchestrator (if available).
+    :param hostname: The name of the host to fetch.
+    :raises: cherrypy.HTTPError: If host not found.
+    """
+    for host in get_hosts():
+        if host['hostname'] == hostname:
+            return host
+    raise cherrypy.HTTPError(404)
+
+
 @ApiController('/host', Scope.HOSTS)
 class Host(RESTController):
     def list(self, sources=None):
@@ -96,7 +117,7 @@ class Host(RESTController):
     @raise_if_no_orchestrator
     @handle_orchestrator_error('host')
     @host_task('create', {'hostname': '{hostname}'})
-    def create(self, hostname):
+    def create(self, hostname):  # pragma: no cover - requires realtime env
         orch_client = OrchClient.instance()
         self._check_orchestrator_host_op(orch_client, hostname, True)
         orch_client.hosts.add(hostname)
@@ -104,12 +125,12 @@ class Host(RESTController):
     @raise_if_no_orchestrator
     @handle_orchestrator_error('host')
     @host_task('delete', {'hostname': '{hostname}'})
-    def delete(self, hostname):
+    def delete(self, hostname):  # pragma: no cover - requires realtime env
         orch_client = OrchClient.instance()
         self._check_orchestrator_host_op(orch_client, hostname, False)
         orch_client.hosts.remove(hostname)
 
-    def _check_orchestrator_host_op(self, orch_client, hostname, add_host=True):
+    def _check_orchestrator_host_op(self, orch_client, hostname, add_host=True):  # pragma:no cover
         """Check if we can adding or removing a host with orchestrator
 
         :param orch_client: Orchestrator client
@@ -145,3 +166,53 @@ class Host(RESTController):
         orch = OrchClient.instance()
         daemons = orch.services.list_daemons(None, hostname)
         return [d.to_json() for d in daemons]
+
+    @handle_orchestrator_error('host')
+    def get(self, hostname: str) -> Dict:
+        """
+        Get the specified host.
+        :raises: cherrypy.HTTPError: If host not found.
+        """
+        return get_host(hostname)
+
+    @raise_if_no_orchestrator
+    @handle_orchestrator_error('host')
+    def set(self, hostname: str, labels: List[str]):
+        """
+        Update the specified host.
+        Note, this is only supported when Ceph Orchestrator is enabled.
+        :param hostname: The name of the host to be processed.
+        :param labels: List of labels.
+        """
+        orch = OrchClient.instance()
+        host = get_host(hostname)
+        current_labels = set(host['labels'])
+        # Remove labels.
+        remove_labels = list(current_labels.difference(set(labels)))
+        for label in remove_labels:
+            orch.hosts.remove_label(hostname, label)
+        # Add labels.
+        add_labels = list(set(labels).difference(current_labels))
+        for label in add_labels:
+            orch.hosts.add_label(hostname, label)
+
+
+@UiApiController('/host', Scope.HOSTS)
+class HostUi(BaseController):
+    @Endpoint('GET')
+    @ReadPermission
+    @handle_orchestrator_error('host')
+    def labels(self) -> List[str]:
+        """
+        Get all host labels.
+        Note, host labels are only supported when Ceph Orchestrator is enabled.
+        If Ceph Orchestrator is not enabled, an empty list is returned.
+        :return: A list of all host labels.
+        """
+        labels = []
+        orch = OrchClient.instance()
+        if orch.available():
+            for host in orch.hosts.list():
+                labels.extend(host.labels)
+        labels.sort()
+        return list(set(labels))  # Filter duplicate labels.
index bcf94416a1e57b409eb363698b20647ad071ad2e..81a54ce61e77400f1ed82f6ac6c4038064769370 100644 (file)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=too-many-branches
+# pylint: disable=too-many-lines
 from __future__ import absolute_import
 
 from copy import deepcopy
@@ -329,6 +330,8 @@ class IscsiTarget(RESTController):
         deleted_portal_names = list(old_portal_names - new_portal_names)
         validate_rest_api(deleted_portal_names)
         IscsiTarget._validate(new_target_iqn, target_controls, portals, disks, groups, settings)
+        IscsiTarget._validate_delete(gateway, target_iqn, config, new_target_iqn, target_controls,
+                                     disks, clients, groups)
         config = IscsiTarget._delete(target_iqn, config, 0, 50, new_target_iqn, target_controls,
                                      portals, disks, clients, groups)
         IscsiTarget._create(new_target_iqn, target_controls, acl_enabled, auth, portals, disks,
@@ -369,13 +372,21 @@ class IscsiTarget(RESTController):
                                                                              group_id)
             TaskManager.current_task().inc_progress(task_progress_inc)
         deleted_clients = []
-        for client_iqn in list(target_config['clients'].keys()):
+        deleted_client_luns = []
+        for client_iqn, client_config in target_config['clients'].items():
             if IscsiTarget._client_deletion_required(target, new_target_iqn, new_target_controls,
                                                      new_clients, client_iqn,
-                                                     new_groups, deleted_groups):
+                                                     deleted_groups):
                 deleted_clients.append(client_iqn)
                 IscsiClient.instance(gateway_name=gateway_name).delete_client(target_iqn,
                                                                               client_iqn)
+            else:
+                for image_id in list(client_config.get('luns', {}).keys()):
+                    if IscsiTarget._client_lun_deletion_required(target, client_iqn, image_id,
+                                                                 new_clients):
+                        deleted_client_luns.append((client_iqn, image_id))
+                        IscsiClient.instance(gateway_name=gateway_name).delete_client_lun(
+                            target_iqn, client_iqn, image_id)
             TaskManager.current_task().inc_progress(task_progress_inc)
         for image_id in target_config['disks']:
             if IscsiTarget._target_lun_deletion_required(target, new_target_iqn,
@@ -386,7 +397,8 @@ class IscsiTarget(RESTController):
                 for client_iqn in not_deleted_clients:
                     client_image_ids = target_config['clients'][client_iqn]['luns'].keys()
                     for client_image_id in client_image_ids:
-                        if image_id == client_image_id:
+                        if image_id == client_image_id and \
+                                (client_iqn, client_image_id) not in deleted_client_luns:
                             IscsiClient.instance(gateway_name=gateway_name).delete_client_lun(
                                 target_iqn, client_iqn, client_image_id)
                 IscsiClient.instance(gateway_name=gateway_name).delete_target_lun(target_iqn,
@@ -429,7 +441,7 @@ class IscsiTarget(RESTController):
         for client_iqn in new_group['members']:
             if IscsiTarget._client_deletion_required(target, new_target_iqn, new_target_controls,
                                                      new_clients, client_iqn,
-                                                     new_groups, []):
+                                                     []):
                 return True
         # Check if any disk inside this group has changed
         for disk in new_group['disks']:
@@ -449,25 +461,32 @@ class IscsiTarget(RESTController):
 
     @staticmethod
     def _client_deletion_required(target, new_target_iqn, new_target_controls,
-                                  new_clients, client_iqn, new_groups, deleted_groups):
+                                  new_clients, client_iqn, deleted_groups):
         if IscsiTarget._target_deletion_required(target, new_target_iqn, new_target_controls):
             return True
-        new_client = deepcopy(IscsiTarget._get_client(new_clients, client_iqn))
+        new_client = IscsiTarget._get_client(new_clients, client_iqn)
         if not new_client:
             return True
-        # Disks inherited from groups must be considered
-        for group in new_groups:
-            if client_iqn in group['members']:
-                new_client['luns'] += group['disks']
-        old_client = IscsiTarget._get_client(target['clients'], client_iqn)
-        if new_client != old_client:
-            return True
         # Check if client belongs to a groups that has been deleted
         for group in target['groups']:
             if group['group_id'] in deleted_groups and client_iqn in group['members']:
                 return True
         return False
 
+    @staticmethod
+    def _client_lun_deletion_required(target, client_iqn, image_id, new_clients):
+        new_client = IscsiTarget._get_client(new_clients, client_iqn)
+        if not new_client:
+            return True
+        new_lun = IscsiTarget._get_disk(new_client.get('luns', []), image_id)
+        if not new_lun:
+            return True
+        old_client = IscsiTarget._get_client(target['clients'], client_iqn)
+        if not old_client:
+            return False
+        old_lun = IscsiTarget._get_disk(old_client.get('luns', []), image_id)
+        return new_lun != old_lun
+
     @staticmethod
     def _get_disk(disks, image_id):
         for disk in disks:
@@ -625,6 +644,33 @@ class IscsiTarget(RESTController):
                                      code='pool_does_not_exist',
                                      component='iscsi')
 
+    @staticmethod
+    def _validate_delete(gateway, target_iqn, config, new_target_iqn=None, new_target_controls=None,
+                         new_disks=None, new_clients=None, new_groups=None):
+        new_target_controls = new_target_controls or {}
+        new_disks = new_disks or []
+        new_clients = new_clients or []
+        new_groups = new_groups or []
+
+        target_config = config['targets'][target_iqn]
+        target = IscsiTarget._config_to_target(target_iqn, config)
+        deleted_groups = []
+        for group_id in list(target_config['groups'].keys()):
+            if IscsiTarget._group_deletion_required(target, new_target_iqn, new_target_controls,
+                                                    new_groups, group_id, new_clients,
+                                                    new_disks):
+                deleted_groups.append(group_id)
+        for client_iqn in list(target_config['clients'].keys()):
+            if IscsiTarget._client_deletion_required(target, new_target_iqn, new_target_controls,
+                                                     new_clients, client_iqn, deleted_groups):
+                client_info = IscsiClient.instance(gateway_name=gateway).get_clientinfo(target_iqn,
+                                                                                        client_iqn)
+                if client_info.get('state', {}).get('LOGGED_IN', []):
+                    raise DashboardException(msg="Client '{}' cannot be deleted until it's logged "
+                                             "out".format(client_iqn),
+                                             code='client_logged_in',
+                                             component='iscsi')
+
     @staticmethod
     def _update_targetauth(config, target_iqn, auth, gateway_name):
         # Target level authentication was introduced in ceph-iscsi config v11
@@ -647,11 +693,11 @@ class IscsiTarget(RESTController):
                                                                              targetauth_action)
 
     @staticmethod
-    def _is_auth_equal(target_auth, auth):
-        return auth['user'] == target_auth['username'] and \
-               auth['password'] == target_auth['password'] and \
-               auth['mutual_user'] == target_auth['mutual_username'] and \
-               auth['mutual_password'] == target_auth['mutual_password']
+    def _is_auth_equal(auth_config, auth):
+        return auth['user'] == auth_config['username'] and \
+            auth['password'] == auth_config['password'] and \
+            auth['mutual_user'] == auth_config['mutual_username'] and \
+            auth['mutual_password'] == auth_config['mutual_password']
 
     @staticmethod
     def _create(target_iqn, target_controls, acl_enabled,
@@ -729,6 +775,9 @@ class IscsiTarget(RESTController):
                 if not target_config or client_iqn not in target_config['clients']:
                     IscsiClient.instance(gateway_name=gateway_name).create_client(target_iqn,
                                                                                   client_iqn)
+                if not target_config or client_iqn not in target_config['clients'] or \
+                        not IscsiTarget._is_auth_equal(target_config['clients'][client_iqn]['auth'],
+                                                       client['auth']):
                     user = client['auth']['user']
                     password = client['auth']['password']
                     m_user = client['auth']['mutual_user']
index 6b8613497103fd1a5303587122f3ad08caae97b1..0d4cc5222560c54a9708a654212d11cd35dea42d 100644 (file)
@@ -158,12 +158,13 @@ class MgrModules(RESTController):
                 else:
                     option['default_value'] = str_to_bool(
                         option['default_value'])
-            elif option['type'] == 'float':
+            elif option['type'] in ['float', 'uint', 'int', 'size', 'secs']:
+                cls = {
+                    'float': float
+                }.get(option['type'], int)
                 for name in ['default_value', 'min', 'max']:
-                    if option[name]:  # Skip empty entries
-                        option[name] = float(option[name])
-            elif option['type'] in ['uint', 'int', 'size', 'secs']:
-                for name in ['default_value', 'min', 'max']:
-                    if option[name]:  # Skip empty entries
-                        option[name] = int(option[name])
+                    if option[name] == 'None':  # This is Python None
+                        option[name] = None
+                    elif option[name]:  # Skip empty entries
+                        option[name] = cls(option[name])
         return options
index 18a2a3bf029c60b09f397a1fa80aaa94db211228..1219f78b95c238611f72f61f1cfe60bb8bcd9934 100644 (file)
@@ -181,7 +181,7 @@ class NFSGaneshaExports(RESTController):
         ganesha_conf = GaneshaConf.instance(cluster_id)
 
         if not ganesha_conf.has_export(export_id):
-            raise cherrypy.HTTPError(404)
+            raise cherrypy.HTTPError(404)  # pragma: no cover - the handling is too obvious
 
         if fsal['name'] not in Ganesha.fsals_available():
             raise NFSException("Cannot make modifications to this export. "
@@ -227,8 +227,7 @@ class NFSGaneshaExports(RESTController):
         ganesha_conf = GaneshaConf.instance(cluster_id)
 
         if not ganesha_conf.has_export(export_id):
-            raise cherrypy.HTTPError(404)
-
+            raise cherrypy.HTTPError(404)  # pragma: no cover - the handling is too obvious
         export = ganesha_conf.remove_export(export_id)
         if reload_daemons:
             ganesha_conf.reload_daemons(export.daemons)
@@ -280,7 +279,7 @@ class NFSGaneshaUi(BaseController):
         return Ganesha.fsals_available()
 
     @Endpoint('GET', '/lsdir')
-    def lsdir(self, root_dir=None, depth=1):
+    def lsdir(self, root_dir=None, depth=1):  # pragma: no cover
         if root_dir is None:
             root_dir = "/"
         depth = int(depth)
index c9172b83942809e70220865c080fee473ee802bf..a7fda9f85081c7706c2c77143f7320e11d6a30fc 100644 (file)
@@ -57,7 +57,7 @@ def raise_if_no_orchestrator(method):
     def inner(self, *args, **kwargs):
         orch = OrchClient.instance()
         if not orch.available():
-            raise DashboardException(code='orchestrator_status_unavailable',
+            raise DashboardException(code='orchestrator_status_unavailable',  # pragma: no cover
                                      msg='Orchestrator is unavailable',
                                      component='orchestrator',
                                      http_status_code=503)
@@ -78,7 +78,7 @@ class Orchestrator(RESTController):
     @raise_if_no_orchestrator
     @handle_orchestrator_error('osd')
     @orchestrator_task('identify_device', ['{hostname}', '{device}'])
-    def identify_device(self, hostname, device, duration):
+    def identify_device(self, hostname, device, duration):  # pragma: no cover
         # type: (str, str, int) -> None
         """
         Identify a device by switching on the device light for N seconds.
@@ -110,7 +110,7 @@ class OrchestratorInventory(RESTController):
         for inventory_host in inventory_hosts:
             host_osds = device_osd_map.get(inventory_host['name'])
             for device in inventory_host['devices']:
-                if host_osds:
+                if host_osds:  # pragma: no cover
                     dev_name = os.path.basename(device['path'])
                     device['osd_ids'] = sorted(host_osds.get(dev_name, []))
                 else:
index 4327f2e92fa9d1352f41809e5e4d4765d64ea081..2731ad0ffcd179e797749c7da6872aed68b9e24c 100644 (file)
@@ -19,7 +19,7 @@ from ..services.orchestrator import OrchClient
 from ..tools import str_to_bool
 try:
     from typing import Dict, List, Any, Union  # noqa: F401 pylint: disable=unused-import
-except ImportError:
+except ImportError:  # pragma: no cover
     pass  # For typing only
 
 
@@ -58,7 +58,7 @@ class Osd(RESTController):
             osd['stats_history'] = {}
             osd_spec = str(osd_id)
             if 'osd' not in osd:
-                continue
+                continue  # pragma: no cover - simple early continue
             for stat in ['osd.op_w', 'osd.op_in_bytes', 'osd.op_r', 'osd.op_out_bytes']:
                 prop = stat.split('.')[1]
                 rates = CephService.get_rates('osd', osd_spec, stat)
@@ -105,10 +105,10 @@ class Osd(RESTController):
         try:
             histogram = CephService.send_command(
                 'osd', srv_spec=svc_id, prefix='perf histogram dump')
-        except SendCommandError as e:
-            if 'osd down' in str(e):
+        except SendCommandError as e:  # pragma: no cover - the handling is too obvious
+            if 'osd down' in str(e):  # pragma: no cover - no complexity there
                 histogram = str(e)
-            else:
+            else:  # pragma: no cover - no complexity there
                 raise
 
         return {
@@ -117,7 +117,7 @@ class Osd(RESTController):
             'histogram': histogram,
         }
 
-    def set(self, svc_id, device_class):
+    def set(self, svc_id, device_class):  # pragma: no cover
         old_device_class = CephService.send_command('mon', 'osd crush get-device-class',
                                                     ids=[svc_id])
         old_device_class = old_device_class[0]['device_class']
@@ -157,16 +157,28 @@ class Osd(RESTController):
     @raise_if_no_orchestrator
     @handle_orchestrator_error('osd')
     @osd_task('delete', {'svc_id': '{svc_id}'})
-    def delete(self, svc_id, force=None):
+    def delete(self, svc_id, preserve_id=None, force=None):  # pragma: no cover
+        replace = False
+        check = False
+        try:
+            if preserve_id is not None:
+                replace = str_to_bool(preserve_id)
+            if force is not None:
+                check = not str_to_bool(force)
+        except ValueError:
+            raise DashboardException(
+                component='osd', http_status_code=400, msg='Invalid parameter(s)')
+
         orch = OrchClient.instance()
-        if not force:
+        if check:
             logger.info('Check for removing osd.%s...', svc_id)
             check = self._check_delete([svc_id])
             if not check['safe']:
                 logger.error('Unable to remove osd.%s: %s', svc_id, check['message'])
                 raise DashboardException(component='osd', msg=check['message'])
-        logger.info('Start removing osd.%s...', svc_id)
-        orch.osds.remove([svc_id])
+
+        logger.info('Start removing osd.%s (replace: %s)...', svc_id, replace)
+        orch.osds.remove([svc_id], replace)
         while True:
             removal_osds = orch.osds.removing_status()
             logger.info('Current removing OSDs %s', removal_osds)
index 945a82a177a498adc8b65c549de18e5d17f7372e..a1f2e6d916ad2e6b377cc74651ff5cf2b7d7f648 100644 (file)
@@ -1,10 +1,12 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
+from typing import Any, cast, Dict, Iterable, List, Optional, Union
 
 import time
 import cherrypy
 
-from . import ApiController, RESTController, Endpoint, ReadPermission, Task, UiApiController
+from . import ApiController, ControllerDoc, RESTController, Endpoint, ReadPermission, Task, \
+    UiApiController
 from .. import mgr
 from ..security import Scope
 from ..services.ceph_service import CephService
@@ -27,7 +29,7 @@ class Pool(RESTController):
 
         crush_rules = {r['rule_id']: r["rule_name"] for r in mgr.get('osd_map_crush')['rules']}
 
-        res = {}
+        res: Dict[Union[int, str], Union[str, List[Any]]] = {}
         for attr in attrs:
             if attr not in pool:
                 continue
@@ -60,16 +62,14 @@ class Pool(RESTController):
         return self._pool_list(attrs, stats)
 
     @classmethod
-    def _get(cls, pool_name, attrs=None, stats=False):
-        # type: (str, str, bool) -> dict
+    def _get(cls, pool_name: str, attrs: Optional[str] = None, stats: bool = False) -> dict:
         pools = cls._pool_list(attrs, stats)
         pool = [p for p in pools if p['pool_name'] == pool_name]
         if not pool:
             raise cherrypy.NotFound('No such pool')
         return pool[0]
 
-    def get(self, pool_name, attrs=None, stats=False):
-        # type: (str, str, bool) -> dict
+    def get(self, pool_name: str, attrs: Optional[str] = None, stats: bool = False) -> dict:
         pool = self._get(pool_name, attrs, stats)
         pool['configuration'] = RbdConfiguration(pool_name).list()
         return pool
@@ -114,7 +114,7 @@ class Pool(RESTController):
                                          yes_i_really_mean_it=True)
             if update_existing:
                 original_app_metadata = set(
-                    current_pool.get('application_metadata'))
+                    cast(Iterable[Any], current_pool.get('application_metadata')))
             else:
                 original_app_metadata = set()
 
@@ -207,6 +207,7 @@ class Pool(RESTController):
 
 
 @UiApiController('/pool', Scope.POOL)
+@ControllerDoc("Dashboard UI helper function; not part of the public API", "PoolUi")
 class PoolUi(Pool):
     @Endpoint()
     @ReadPermission
@@ -230,8 +231,8 @@ class PoolUi(Pool):
                     if o['name'] == conf_name][0]
 
         profiles = CephService.get_erasure_code_profiles()
-        used_rules = {}
-        used_profiles = {}
+        used_rules: Dict[str, List[str]] = {}
+        used_profiles: Dict[str, List[str]] = {}
         pool_names = []
         for p in self._pool_list():
             name = p['pool_name']
@@ -262,4 +263,5 @@ class PoolUi(Pool):
             "erasure_code_profiles": profiles,
             "used_rules": used_rules,
             "used_profiles": used_profiles,
+            'nodes': mgr.get('osd_map_tree')['nodes']
         }
index fc7d5190ed29d36951cf7a4d434436adcb443a54..a0dc444dcabff7d497f294c3ed1b9972352a8a8c 100644 (file)
@@ -5,7 +5,6 @@ import logging
 import json
 
 import cherrypy
-
 from . import ApiController, BaseController, RESTController, Endpoint, \
     ReadPermission
 from ..exceptions import DashboardException
@@ -18,7 +17,7 @@ from ..tools import json_str_to_object, str_to_bool
 
 try:
     from typing import List
-except ImportError:
+except ImportError:  # pragma: no cover
     pass  # Just for type checking
 
 logger = logging.getLogger('controllers.rgw')
@@ -33,7 +32,7 @@ class Rgw(BaseController):
         try:
             instance = RgwClient.admin_instance()
             # Check if the service is online.
-            if not instance.is_service_online():
+            if not instance.is_service_online():  # pragma: no cover - no complexity there
                 msg = 'Failed to connect to the Object Gateway\'s Admin Ops API.'
                 raise RequestException(msg)
             # Ensure the API user ID is known by the RGW.
@@ -42,7 +41,7 @@ class Rgw(BaseController):
                     instance.userid)
                 raise RequestException(msg)
             # Ensure the system flag is set for the API user ID.
-            if not instance.is_system_user():
+            if not instance.is_system_user():  # pragma: no cover - no complexity there
                 msg = 'The system flag is not set for user "{}".'.format(
                     instance.userid)
                 raise RequestException(msg)
@@ -229,7 +228,7 @@ class RgwBucket(RgwRESTController):
                                   lock_retention_period_days,
                                   lock_retention_period_years)
             return result
-        except RequestException as e:
+        except RequestException as e:  # pragma: no cover - handling is too obvious
             raise DashboardException(e, http_status_code=500, component='rgw')
 
     def set(self, bucket, bucket_id, uid, versioning_state=None,
@@ -380,7 +379,7 @@ class RgwUser(RgwRESTController):
                                              'Object Gateway'.format(uid))
             # Finally redirect request to the RGW proxy.
             return self.proxy('DELETE', 'user', {'uid': uid}, json_response=False)
-        except (DashboardException, RequestException) as e:
+        except (DashboardException, RequestException) as e:  # pragma: no cover
             raise DashboardException(e, component='rgw')
 
     # pylint: disable=redefined-builtin
index 9cde5e9ec12d4cb491e3752450b1fe093a55f062..5235992a1741ae28ba3320c593bda55ebd48e8b1 100644 (file)
@@ -30,8 +30,8 @@ class Settings(RESTController):
 
         try:
             yield result
-        except AttributeError:
-            raise cherrypy.NotFound(result)
+        except AttributeError:  # pragma: no cover - handling is too obvious
+            raise cherrypy.NotFound(result)  # pragma: no cover - handling is too obvious
 
     @staticmethod
     def _to_native(setting):
@@ -98,7 +98,7 @@ class StandardSettings(RESTController):
             settings.
         :rtype: dict
         """
-        return {
+        return {  # pragma: no cover - no complexity there
             'user_pwd_expiration_span':
             SettingsModule.USER_PWD_EXPIRATION_SPAN,
             'user_pwd_expiration_warning_1':
index 25374867bc38b9f3fb405996b806acc530b49d45..3b181cb4d4e4eed49e898342766578e46d83414b 100644 (file)
@@ -21,8 +21,8 @@ class Summary(BaseController):
     def _rbd_mirroring(self):
         try:
             _, data = get_daemons_and_pools()
-        except ViewCacheNoDataException:
-            return {}
+        except ViewCacheNoDataException:  # pragma: no cover
+            return {}  # pragma: no cover
 
         daemons = data.get('daemons', [])
         pools = data.get('pools', {})
@@ -30,18 +30,18 @@ class Summary(BaseController):
         warnings = 0
         errors = 0
         for daemon in daemons:
-            if daemon['health_color'] == 'error':
+            if daemon['health_color'] == 'error':  # pragma: no cover
                 errors += 1
-            elif daemon['health_color'] == 'warning':
+            elif daemon['health_color'] == 'warning':  # pragma: no cover
                 warnings += 1
         for _, pool in pools.items():
-            if pool['health_color'] == 'error':
+            if pool['health_color'] == 'error':  # pragma: no cover
                 errors += 1
-            elif pool['health_color'] == 'warning':
+            elif pool['health_color'] == 'warning':  # pragma: no cover
                 warnings += 1
         return {'warnings': warnings, 'errors': errors}
 
-    def _task_permissions(self, name):
+    def _task_permissions(self, name):  # pragma: no cover
         result = True
         if name == 'pool/create':
             result = self._has_permissions(Permission.CREATE, Scope.POOL)
index f65464537ac4355c940fc5dd2eafba05906a5085..6796ff5be5d523aaa33568d0cfc0548b0cfcd834 100644 (file)
@@ -21,6 +21,7 @@ export class UsersPageHelper extends PageHelper {
 
     // Enter max buckets
     this.selectOption('max_buckets_mode', 'Custom');
+    cy.get('#max_buckets').should('exist').should('have.value', '1000');
     cy.get('#max_buckets').click().clear().type(maxbuckets);
 
     // Click the create button and wait for user to be made
@@ -102,7 +103,7 @@ export class UsersPageHelper extends PageHelper {
     const uname = '000invalid_edit_user';
     // creating this user to edit for the test
     this.navigateTo('create');
-    this.create(uname, 'xxx', 'xxx@xxx', '1');
+    this.create(uname, 'xxx', 'xxx@xxx', '50');
 
     this.navigateEdit(name);
 
@@ -120,7 +121,10 @@ export class UsersPageHelper extends PageHelper {
     cy.contains('#display_name + .invalid-feedback', 'This field is required.');
 
     // put negative max buckets to make field invalid
-    this.expectSelectOption('max_buckets_mode', 'Custom');
+    this.selectOption('max_buckets_mode', 'Disabled');
+    cy.get('#max_buckets').should('not.exist');
+    this.selectOption('max_buckets_mode', 'Custom');
+    cy.get('#max_buckets').should('exist').should('have.value', '50');
     cy.get('#max_buckets').clear().type('-5').blur().should('have.class', 'ng-invalid');
     cy.contains('#max_buckets + .invalid-feedback', 'The entered value must be >= 1.');
 
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/1.4a38b529302ffa3f0c24.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/1.4a38b529302ffa3f0c24.js
new file mode 100644 (file)
index 0000000..82a4b9b
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"+26A":function(l,n,e){"use strict";e.d(n,"a",(function(){return d}));var t=e("s7LF"),i=e("LvDl"),u=e("GyhO"),s=e("cp0P"),a=e("NJ9Y"),o=(e("XED3"),e("QFaf")),r=e("kvvV");e("kn/O");class d{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.pools=[],this.directions=[{key:"rx-tx",desc:"Bidirectional"},{key:"rx",desc:"Unidirectional (receive-only)"}],this.createForm()}createForm(){this.importBootstrapForm=new o.a({siteName:new t.i("",{validators:[t.B.required]}),direction:new t.i("rx-tx",{}),pools:new t.k({},{validators:[this.validatePools()]}),token:new t.i("",{validators:[t.B.required,this.validateToken()]})})}ngOnInit(){this.rbdMirroringService.getSiteName().subscribe(l=>{this.importBootstrapForm.get("siteName").setValue(l.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(l=>{this.pools=l.content_data.pools.reduce((l,n)=>(l.push({name:n.name,mirror_mode:n.mirror_mode}),l),[]);const n=this.importBootstrapForm.get("pools");i.each(this.pools,l=>{const e=l.name,i="disabled"===l.mirror_mode,u=n.controls[e];u?i&&u.disabled?u.enable():!i&&u.enabled&&(u.disable(),u.setValue(!0)):n.addControl(e,new t.i({value:!i,disabled:!i}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return l=>{let n=0;return i.each(l.controls,l=>{!0===l.value&&++n}),n>0?null:{requirePool:!0}}}validateToken(){return l=>{try{if(JSON.parse(atob(l.value)))return null}catch(n){}return{invalidToken:!0}}}import(){const l=[],n=[],e=this.importBootstrapForm.get("pools");i.each(e.controls,(e,t)=>{!0===e.value&&(l.push(t),e.disabled||n.push(t))});const t={mirror_mode:"image"};let o=Object(u.a)(this.rbdMirroringService.setSiteName(this.importBootstrapForm.getValue("siteName")),Object(s.a)(n.map(l=>this.rbdMirroringService.updatePool(l,t))));o=l.reduce((l,n)=>Object(u.a)(l,this.rbdMirroringService.importBootstrapToken(n,this.importBootstrapForm.getValue("direction"),this.importBootstrapForm.getValue("token"))),o).pipe(Object(a.a)());const d=()=>{this.rbdMirroringService.refresh(),this.importBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new r.a("rbd/mirroring/bootstrap/import",{}),call:o}).subscribe(void 0,d,()=>{d(),this.modalRef.hide()})}}},"0BYw":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("SVse"),a=e("EEJc"),o=e("ajRT"),r=e("mXUL"),d=e("IZUe"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("daK0"),v=e("LqlI"),b=e("aexS"),C=e("9nlD"),S=e("Ekvf"),_=e("F83c"),R=e("GiVz");e.d(n,"a",(function(){return q}));var y=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","pool"],["id","pool"],["name","pool"],["placeholder","Pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"pool"),l(n,6,0,"pool")}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](-1,null,["-- No rbd pools available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](-1,null,["-- Select a pool --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)}),(function(l,n){l(n,3,0,n.context.$implicit.pool_name)}))}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,1).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,k)),t["ɵdid"](8,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,I)),t["ɵdid"](10,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,E)),t["ɵdid"](12,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,N)),t["ɵdid"](14,278528,null,0,s.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,3,0,"pool"),l(n,6,0,"pool"),l(n,8,0,null===e.pools),l(n,10,0,null!==e.pools&&0===e.pools.length),l(n,12,0,null!==e.pools&&e.pools.length>0),l(n,14,0,e.pools)}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function T(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function D(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Namespace already exists."]))],null,null)}function P(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,50,"cd-modal",[],null,null,null,a.c,a.b)),t["ɵdid"](1,49152,null,0,o.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Create Namespace"])),(l()(),t["ɵeld"](4,0,null,1,46,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,45,"form",[["name","namespaceForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,32,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,12,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](13,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pool"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pool"])),(l()(),t["ɵeld"](18,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](20,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,F)),t["ɵdid"](22,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,T)),t["ɵdid"](24,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](25,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](26,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](29,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","namespace"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Name"])),(l()(),t["ɵeld"](31,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](32,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","namespace"],["id","namespace"],["name","namespace"],["placeholder","Namespace name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,33)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,33).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,33)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,33)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](33,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](35,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](37,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](38,4210688,null,0,d.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](39,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,V)),t["ɵdid"](41,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,D)),t["ɵdid"](43,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](44,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](45,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](46,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submit()&&t),t}),c.b,c.a)),t["ɵdid"](47,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Create Namespace"])),(l()(),t["ɵeld"](49,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,p.b,p.a)),t["ɵdid"](50,49152,null,0,h.a,[s.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.namespaceForm),l(n,10,0,e.namespaceForm),l(n,13,0),l(n,20,0,!e.poolPermission.read),l(n,22,0,e.poolPermission.read),l(n,24,0,e.namespaceForm.showError("pool",t["ɵnov"](n,7),"required")),l(n,26,0),l(n,35,0,"namespace"),l(n,38,0,""),l(n,39,0,"namespace"),l(n,41,0,e.namespaceForm.showError("namespace",t["ɵnov"](n,7),"required")),l(n,43,0,e.namespaceForm.showError("namespace",t["ɵnov"](n,7),"namespaceExists")),l(n,47,0,e.namespaceForm),l(n,50,0,"Close",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,12,0,t["ɵnov"](n,13).hasErrors,t["ɵnov"](n,13).hasSuccess),l(n,25,0,t["ɵnov"](n,26).hasErrors,t["ɵnov"](n,26).hasSuccess),l(n,32,0,t["ɵnov"](n,37).ngClassUntouched,t["ɵnov"](n,37).ngClassTouched,t["ɵnov"](n,37).ngClassPristine,t["ɵnov"](n,37).ngClassDirty,t["ɵnov"](n,37).ngClassValid,t["ɵnov"](n,37).ngClassInvalid,t["ɵnov"](n,37).ngClassPending,t["ɵnov"](n,39).validClass,t["ɵnov"](n,39).invalidClass)}))}function x(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-namespace-form-modal",[],null,null,null,P,y)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a,S.a,_.a,R.a],null,null)],(function(l,n){l(n,1,0)}),null)}var q=t["ɵccf"]("cd-rbd-namespace-form-modal",f.a,x,{},{},[])},"0rTx":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("s7LF"),a=e("+gVj"),o=e("mXUL"),r=e("IZUe"),d=e("SVse"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("2GqK"),v=e("F83c"),b=e("LqlI"),C=e("2EZI"),S=e("kn/O");e.d(n,"a",(function(){return k}));var _=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,47,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Restore Image"])),(l()(),t["ɵeld"](4,0,null,1,43,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,42,"form",[["class","form"],["name","restoreForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,s.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,29,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,12,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To restore"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](17,null,["","@",""])),(l()(),t["ɵted"](-1,null,[",  "])),(l()(),t["ɵeld"](19,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["type the image's new name and click"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](22,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Restore Image"])),(l()(),t["ɵted"](-1,null,[". "])),(l()(),t["ɵeld"](25,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](26,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](29,0,null,0,1,"label",[["class","col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["New Name"])),(l()(),t["ɵeld"](31,0,null,0,7,"input",[["autocomplete","off"],["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,32)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,32).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,32)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,32)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](32,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.e]),t["ɵdid"](34,671744,[[1,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](36,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](37,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](38,16384,null,0,a.h,[[3,s.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,R)),t["ɵdid"](40,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](41,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](42,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](43,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.restore()&&t),t}),c.b,c.a)),t["ɵdid"](44,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Restore Image"])),(l()(),t["ɵeld"](46,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,p.b,p.a)),t["ɵdid"](47,49152,null,0,h.a,[d.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.restoreForm),l(n,10,0,e.restoreForm),l(n,26,0),l(n,34,0,"name"),l(n,37,0,""),l(n,38,0,"name"),l(n,40,0,e.restoreForm.showError("name",t["ɵnov"](n,7),"required")),l(n,44,0,e.restoreForm),l(n,47,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,17,0,e.imageSpec,e.imageId),l(n,25,0,t["ɵnov"](n,26).hasErrors,t["ɵnov"](n,26).hasSuccess),l(n,31,0,t["ɵnov"](n,36).ngClassUntouched,t["ɵnov"](n,36).ngClassTouched,t["ɵnov"](n,36).ngClassPristine,t["ɵnov"](n,36).ngClassDirty,t["ɵnov"](n,36).ngClassValid,t["ɵnov"](n,36).ngClassInvalid,t["ɵnov"](n,36).ngClassPending,t["ɵnov"](n,38).validClass,t["ɵnov"](n,38).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-trash-restore-modal",[],null,null,null,y,_)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a,S.a],null,null)],(function(l,n){l(n,1,0)}),null)}var k=t["ɵccf"]("cd-rbd-trash-restore-modal",f.a,w,{},{},[])},"2GqK":function(l,n,e){"use strict";e.d(n,"a",(function(){return u})),e("F83c"),e("2EZI");var t=e("kvvV"),i=e("jVDg");e("kn/O");class u{constructor(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t}ngOnInit(){this.imageSpec=new i.a(this.poolName,this.namespace,this.imageName).toString(),this.restoreForm=this.fb.group({name:this.imageName})}restore(){const l=this.restoreForm.getValue("name"),n=new i.a(this.poolName,this.namespace,this.imageId);this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/restore",{image_id_spec:n.toString(),new_image_name:l}),call:this.rbdService.restoreTrash(n,l)}).subscribe(void 0,()=>{this.restoreForm.setErrors({cdSubmitButton:!0})},()=>{this.modalRef.hide()})}}},"2JDI":function(l,n,e){"use strict";e.d(n,"a",(function(){return a}));var t=e("wd/R"),i=(e("F83c"),e("2EZI"),e("1Ni5")),u=e("kvvV"),s=e("jVDg");e("kn/O");class a{constructor(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t,this.minDate=new Date,this.bsConfig={dateInputFormat:"YYYY-MM-DD HH:mm:ss",containerClass:"theme-default"},this.createForm()}createForm(){this.moveForm=this.fb.group({expiresAt:["",[i.a.custom("format",l=>!(""===l||t(l,"YYYY-MM-DD HH:mm:ss").isValid())),i.a.custom("expired",l=>t().isAfter(l))]]})}ngOnInit(){this.imageSpec=new s.a(this.poolName,this.namespace,this.imageName),this.imageSpecStr=this.imageSpec.toString(),this.pattern=`${this.poolName}/${this.imageName}`}moveImage(){let l=0;const n=this.moveForm.getValue("expiresAt");n&&(l=t(n).diff(t(),"seconds",!0)),l<0&&(l=0),this.taskWrapper.wrapTaskAroundCall({task:new u.a("rbd/trash/move",{image_spec:this.imageSpecStr}),call:this.rbdService.moveTrash(this.imageSpec,l)}).subscribe(void 0,void 0,()=>{this.modalRef.hide()})}}},"3IYD":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("SVse"),u=e("8xTl"),s=e("EEJc"),a=e("ajRT"),o=e("s7LF"),r=e("+gVj"),d=e("mXUL"),c=e("IZUe"),m=e("gp3X"),p=e("sb0X"),h=e("KVJa"),g=e("Z21x"),f=e("sne2"),v=e("Fd71"),b=e("LqlI"),C=e("F83c"),S=e("VXsX"),_=e("9nlD"),R=e("GiVz");e.d(n,"a",(function(){return E}));var y=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function k(l){return t["ɵvid"](0,[t["ɵpid"](0,i.TitleCasePipe,[]),t["ɵpid"](0,u.a,[]),(l()(),t["ɵeld"](2,0,null,null,39,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](3,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),t["ɵted"](5,null,[""," ",""])),t["ɵppd"](6,1),t["ɵppd"](7,1),(l()(),t["ɵeld"](8,0,null,1,33,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](9,0,null,null,32,"form",[["name","snapshotForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,11).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,11).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,14).onSubmit()&&i),i}),null,null)),t["ɵdid"](10,16384,null,0,o.G,[],null,null),t["ɵdid"](11,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,o.d,null,[o.l]),t["ɵdid"](13,16384,null,0,o.s,[[4,o.d]],null,null),t["ɵdid"](14,16384,null,0,r.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](15,0,null,null,17,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](16,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](17,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](20,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","snapshotName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Name"])),(l()(),t["ɵeld"](22,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](23,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","snapshotName"],["id","snapshotName"],["name","snapshotName"],["placeholder","Snapshot name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,24)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,24).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,24)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,24)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](24,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](26,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](28,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](29,4210688,null,0,c.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](30,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](32,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](33,0,null,null,8,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](34,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](35,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submit()&&t),t}),m.b,m.a)),t["ɵdid"](36,114688,null,0,p.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](37,0,[""," ",""])),t["ɵppd"](38,1),t["ɵppd"](39,1),(l()(),t["ɵeld"](40,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,h.b,h.a)),t["ɵdid"](41,49152,null,0,g.a,[i.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.modalRef),l(n,11,0,e.snapshotForm),l(n,14,0,e.snapshotForm),l(n,17,0),l(n,26,0,"snapshotName"),l(n,29,0,""),l(n,30,0,"snapshotName"),l(n,32,0,e.snapshotForm.showError("snapshotName",t["ɵnov"](n,11),"required")),l(n,36,0,e.snapshotForm),l(n,41,0,"Close",e.modalRef.hide)}),(function(l,n){var e=n.component,i=t["ɵunv"](n,5,0,l(n,6,0,t["ɵnov"](n,0),e.action)),u=t["ɵunv"](n,5,1,l(n,7,0,t["ɵnov"](n,1),e.resource));l(n,5,0,i,u),l(n,9,0,t["ɵnov"](n,13).ngClassUntouched,t["ɵnov"](n,13).ngClassTouched,t["ɵnov"](n,13).ngClassPristine,t["ɵnov"](n,13).ngClassDirty,t["ɵnov"](n,13).ngClassValid,t["ɵnov"](n,13).ngClassInvalid,t["ɵnov"](n,13).ngClassPending),l(n,16,0,t["ɵnov"](n,17).hasErrors,t["ɵnov"](n,17).hasSuccess),l(n,23,0,t["ɵnov"](n,28).ngClassUntouched,t["ɵnov"](n,28).ngClassTouched,t["ɵnov"](n,28).ngClassPristine,t["ɵnov"](n,28).ngClassDirty,t["ɵnov"](n,28).ngClassValid,t["ɵnov"](n,28).ngClassInvalid,t["ɵnov"](n,28).ngClassPending,t["ɵnov"](n,30).validClass,t["ɵnov"](n,30).invalidClass);var s=t["ɵunv"](n,37,0,l(n,38,0,t["ɵnov"](n,0),e.action)),a=t["ɵunv"](n,37,1,l(n,39,0,t["ɵnov"](n,1),e.resource));l(n,37,0,s,a)}))}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-snapshot-form-modal",[],null,null,null,k,y)),t["ɵdid"](1,114688,null,0,v.a,[b.a,C.a,S.a,_.a,R.a,f.b],null,null)],(function(l,n){l(n,1,0)}),null)}var E=t["ɵccf"]("cd-rbd-snapshot-form-modal",v.a,I,{},{},[])},"3ris":function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("yYhs"),i=e("LvDl"),u=(e("uIqm"),e("oxzT"));e("iExv"),e("uYzU");class s{constructor(l,n,e){this.i18n=l,this.iscsiBackstorePipe=n,this.booleanTextPipe=e,this.icons=u.a,this.metadata={},this.nodes=[],this.treeOptions={useVirtualScroll:!0,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}}}set content(l){this.detailTable=l,l&&l.updateColumns()}ngOnInit(){this.columns=[{prop:"displayName",name:this.i18n("Name"),flexGrow:1,cellTemplate:this.highlightTpl},{prop:"current",name:this.i18n("Current"),flexGrow:1,cellTemplate:this.highlightTpl},{prop:"default",name:this.i18n("Default"),flexGrow:1,cellTemplate:this.highlightTpl}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.generateTree()),this.data=void 0}generateTree(){const l=i.cloneDeep(this.selectedItem.target_controls);this.cephIscsiConfigVersion>10&&i.extend(l,i.cloneDeep(this.selectedItem.auth)),this.metadata={root:l};const n={target:{expanded:i.join(this.selectedItem.cdExecuting?[u.a.large,u.a.spinner,u.a.spin]:[u.a.large,u.a.bullseye]," ")},initiators:{expanded:i.join([u.a.large,u.a.user]," "),leaf:i.join([u.a.user]," ")},groups:{expanded:i.join([u.a.large,u.a.users]," "),leaf:i.join([u.a.users]," ")},disks:{expanded:i.join([u.a.large,u.a.disk]," "),leaf:i.join([u.a.disk]," ")},portals:{expanded:i.join([u.a.large,u.a.server]," "),leaf:i.join([u.a.server]," ")}},e=[];i.forEach(this.selectedItem.disks,l=>{const t="disk_"+l.pool+"_"+l.image;this.metadata[t]={controls:l.controls,backstore:l.backstore},["wwn","lun"].forEach(n=>{n in l&&(this.metadata[t][n]=l[n])}),e.push({name:`${l.pool}/${l.image}`,cdId:t,cdIcon:n.disks.leaf})});const t=[];i.forEach(this.selectedItem.portals,l=>{t.push({name:`${l.host}:${l.ip}`,cdIcon:n.portals.leaf})});const s=[];i.forEach(this.selectedItem.clients,l=>{const e=i.cloneDeep(l.auth);l.info&&(i.extend(e,l.info),delete e.state,i.forEach(Object.keys(l.info.state),n=>{e[n.toLowerCase()]=l.info.state[n]})),this.metadata["client_"+l.client_iqn]=e;const t=[];l.luns.forEach(l=>{t.push({name:`${l.pool}/${l.image}`,cdId:"disk_"+l.pool+"_"+l.image,cdIcon:n.disks.leaf})});let u="";l.info&&(u=Object.keys(l.info.state).includes("LOGGED_IN")?"logged_in":"logged_out"),s.push({name:l.client_iqn,status:u,cdId:"client_"+l.client_iqn,children:t,cdIcon:n.initiators.leaf})});const a=[];i.forEach(this.selectedItem.groups,l=>{const e=[];l.disks.forEach(l=>{e.push({name:`${l.pool}/${l.image}`,cdId:"disk_"+l.pool+"_"+l.image,cdIcon:n.disks.leaf})});const t=[];l.members.forEach(l=>{t.push({name:l,cdId:"client_"+l})}),a.push({name:l.group_id,cdIcon:n.groups.leaf,children:[{name:"Disks",children:e,cdIcon:n.disks.expanded},{name:"Initiators",children:t,cdIcon:n.initiators.expanded}]})}),this.nodes=[{name:this.selectedItem.target_iqn,cdId:"root",isExpanded:!0,cdIcon:n.target.expanded,children:[{name:"Disks",isExpanded:!0,children:e,cdIcon:n.disks.expanded},{name:"Portals",isExpanded:!0,children:t,cdIcon:n.portals.expanded},{name:"Initiators",isExpanded:!0,children:s,cdIcon:n.initiators.expanded},{name:"Groups",isExpanded:!0,children:a,cdIcon:n.groups.expanded}]}]}format(l){return"boolean"==typeof l?this.booleanTextPipe.transform(l):l}onNodeSelected(l,n){if(t.a.ACTIVATE(l,n,!0),n.data.cdId){this.title=n.data.name;const l=this.metadata[n.data.cdId]||{};"root"===n.data.cdId?(this.columns[2].isHidden=!1,this.data=i.map(this.settings.target_default_controls,(n,e)=>({displayName:e,default:n=this.format(n),current:i.isUndefined(l[e])?n:this.format(l[e])})),this.cephIscsiConfigVersion>10&&["user","password","mutual_user","mutual_password"].forEach(n=>{this.data.push({displayName:n,default:null,current:l[n]})})):n.data.cdId.toString().startsWith("disk_")?(this.columns[2].isHidden=!1,this.data=i.map(this.settings.disk_default_controls[l.backstore],(n,e)=>({displayName:e,default:n=this.format(n),current:i.isUndefined(l.controls[e])?n:this.format(l.controls[e])})),this.data.push({displayName:"backstore",default:this.iscsiBackstorePipe.transform(this.settings.default_backstore),current:this.iscsiBackstorePipe.transform(l.backstore)}),["wwn","lun"].forEach(n=>{n in l&&this.data.push({displayName:n,default:void 0,current:l[n]})})):(this.columns[2].isHidden=!0,this.data=i.map(l,(l,n)=>({displayName:n,default:void 0,current:this.format(l)})))}else this.data=void 0;this.detailTable&&this.detailTable.updateColumns()}onUpdateData(){this.tree.treeModel.expandAll()}}},"5GyT":function(l,n,e){"use strict";e.d(n,"a",(function(){return v})),e.d(n,"b",(function(){return f}));var t=e("LvDl"),i=(e("F83c"),e("+fVR")),u=e("OLbh"),s=e("0+/T"),a=(e("sne2"),e("uIqm"),e("x38r")),o=e("oxzT"),r=e("yJti"),d=e("vCyI"),c=e("kvvV"),m=e("jVDg"),p=(e("Fgil"),e("o4+5"),e("aexS"),e("VTlA"),e("kn/O"),e("EgGo")),h=e("2JDI"),g=e("u0yg");const f=new p.a("block/rbd");class v extends i.a{constructor(l,n,e,t,i,u,s,a,r,c){super(),this.authStorageService=l,this.rbdService=n,this.dimlessBinaryPipe=e,this.dimlessPipe=t,this.modalService=i,this.taskWrapper=u,this.taskListService=s,this.i18n=a,this.urlBuilder=r,this.actionLabels=c,this.selection=new d.a,this.builders={"rbd/create":l=>this.createRbdFromTask(l.pool_name,l.namespace,l.image_name),"rbd/delete":l=>this.createRbdFromTaskImageSpec(l.image_spec),"rbd/clone":l=>this.createRbdFromTask(l.child_pool_name,l.child_namespace,l.child_image_name),"rbd/copy":l=>this.createRbdFromTask(l.dest_pool_name,l.dest_namespace,l.dest_image_name)},this.permission=this.authStorageService.getPermissions().rbdImage;const p=()=>this.selection.first()&&new m.a(this.selection.first().pool_name,this.selection.first().namespace,this.selection.first().name).toStringEncoded();this.tableActions=[{permission:"create",icon:o.a.add,routerLink:()=>this.urlBuilder.getCreate(),canBePrimary:l=>!l.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:o.a.edit,routerLink:()=>this.urlBuilder.getEdit(p()),name:this.actionLabels.EDIT},{permission:"create",canBePrimary:l=>l.hasSingleSelection,disable:l=>!l.hasSingleSelection||l.first().cdExecuting,icon:o.a.copy,routerLink:()=>`/block/rbd/copy/${p()}`,name:this.actionLabels.COPY},{permission:"update",disable:l=>!l.hasSingleSelection||l.first().cdExecuting||!l.first().parent,icon:o.a.flatten,click:()=>this.flattenRbdModal(),name:this.actionLabels.FLATTEN},{permission:"delete",icon:o.a.destroy,click:()=>this.deleteRbdModal(),name:this.actionLabels.DELETE,disable:l=>!this.selection.first()||!this.selection.hasSingleSelection||this.hasClonedSnapshots(l.first()),disableDesc:()=>this.getDeleteDisableDesc()},{permission:"delete",icon:o.a.trash,click:()=>this.trashRbdModal(),name:this.actionLabels.TRASH,disable:l=>!l.first()||!l.hasSingleSelection||l.first().image_format===g.a.V1}]}createRbdFromTaskImageSpec(l){const n=m.a.fromString(l);return this.createRbdFromTask(n.poolName,n.namespace,n.imageName)}createRbdFromTask(l,n,e){const t=new g.b;return t.id="-1",t.unique_id="-1",t.name=e,t.namespace=n,t.pool_name=l,t.image_format=g.a.V2,t}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:2,cellTransformation:a.a.executing},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:2},{name:this.i18n("Namespace"),prop:"namespace",flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Objects"),prop:"num_objs",flexGrow:1,cellClass:"text-right",pipe:this.dimlessPipe},{name:this.i18n("Object size"),prop:"obj_size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Total provisioned"),prop:"total_disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Parent"),prop:"parent",flexGrow:2,cellTemplate:this.parentTpl}],this.taskListService.init(()=>this.rbdService.list(),l=>this.prepareResponse(l),l=>this.images=l,()=>this.onFetchError(),l=>["rbd/clone","rbd/copy","rbd/create","rbd/delete","rbd/edit","rbd/flatten","rbd/trash/move"].includes(l.name),(l,n)=>{let e;switch(n.name){case"rbd/copy":e=new m.a(n.metadata.dest_pool_name,n.metadata.dest_namespace,n.metadata.dest_image_name).toString();break;case"rbd/clone":e=new m.a(n.metadata.child_pool_name,n.metadata.child_namespace,n.metadata.child_image_name).toString();break;case"rbd/create":e=new m.a(n.metadata.pool_name,n.metadata.namespace,n.metadata.image_name).toString();break;default:e=n.metadata.image_spec}return e===new m.a(l.pool_name,l.namespace,l.name).toString()},this.builders)}onFetchError(){this.table.reset(),this.viewCacheStatusList=[{status:r.a.ValueException}]}prepareResponse(l){let n=[];const e={};l.forEach(l=>{t.isUndefined(e[l.status])&&(e[l.status]=[]),e[l.status].push(l.pool_name),n=n.concat(l.value)});const i=[];return t.forEach(e,(l,n)=>{i.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=i,n}updateSelection(l){this.selection=l}deleteRbdModal(){const l=this.selection.first().pool_name,n=this.selection.first().namespace,e=this.selection.first().name,t=new m.a(l,n,e);this.modalRef=this.modalService.show(s.a,{initialState:{itemDescription:"RBD",itemNames:[t],bodyTemplate:this.deleteTpl,bodyContext:{hasSnapshots:this.hasSnapshots(),snapshots:this.listProtectedSnapshots()},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/delete",{image_spec:t.toString()}),call:this.rbdService.delete(t)})}})}trashRbdModal(){const l={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,hasSnapshots:this.hasSnapshots()};this.modalRef=this.modalService.show(h.a,{initialState:l})}flattenRbd(l){this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/flatten",{image_spec:l.toString()}),call:this.rbdService.flatten(l)}).subscribe(void 0,void 0,()=>{this.modalRef.hide()})}flattenRbdModal(){const l=this.selection.first().pool_name,n=this.selection.first().namespace,e=this.selection.first().name,t=this.selection.first().parent,i=new m.a(t.pool_name,t.pool_namespace,t.image_name),s=new m.a(l,n,e),a={titleText:"RBD flatten",buttonText:"Flatten",bodyTpl:this.flattenTpl,bodyData:{parent:`${i}@${t.snap_name}`,child:s.toString()},onSubmit:()=>{this.flattenRbd(s)}};this.modalRef=this.modalService.show(u.a,{initialState:a})}hasSnapshots(){return(this.selection.first().snapshots||[]).length>0}hasClonedSnapshots(l){return(l.snapshots||[]).some(l=>l.children&&l.children.length>0)}listProtectedSnapshots(){return this.selection.first().snapshots.reduce((l,n)=>(n.is_protected&&l.push(n.name),l),[])}getDeleteDisableDesc(){const l=this.selection.first();return l&&this.hasClonedSnapshots(l)?this.i18n("This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD."):""}}},BH9v:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("aXbf");class s{constructor(l,n){this.control=l,this.formatter=n}setValue(l){const n=this.formatter.toMilliseconds(l);this.control.control.setValue(`${n} ms`)}ngOnInit(){this.setValue(this.control.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.control.value))}onUpdate(l){this.setValue(l)}}var a=e("+gVj"),o=e("LvDl"),r=e("IzCI");class d{constructor(l,n,e,i){this.elementRef=l,this.control=n,this.dimlessBinaryPerSecondPipe=e,this.formatter=i,this.ngModelChange=new t.EventEmitter,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.el.value))}setValue(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");const n=this.formatter.toBytes(l,0),e=this.round(n);this.el.value=this.dimlessBinaryPerSecondPipe.transform(e),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(l){if(null!==l&&0!==l){if(!o.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!o.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!o.isUndefined(this.roundPower)){const n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l}onBlur(l){this.setValue(l)}}class c{constructor(l,n){this.formatter=l,this.ngControl=n}setValue(l){const n=this.formatter.toIops(l);this.ngControl.control.setValue(`${n} IOPS`)}ngOnInit(){this.setValue(this.ngControl.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.ngControl.value))}onUpdate(l){this.setValue(l)}}var m=e("mXUL"),p=e("4HWh"),h=e("p4Cf"),g=e("SVse");e("rFfW"),e("o8EM"),e.d(n,"a",(function(){return f})),e.d(n,"b",(function(){return y}));var f=t["ɵcrt"]({encapsulation:0,styles:[[".collapsible[_ngcontent-%COMP%]{cursor:pointer;-moz-user-select:none;user-select:none}"]],data:{}});function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,7,"input",[["cdMilliseconds",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,2)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,2)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,2)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,7).onUpdate(e.target.value)&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](4,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,81920,null,0,s,[i.q,u.a],{ngDataReady:[0,"ngDataReady"]},null),t["ɵdid"](8,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady),l(n,8,0,n.parent.context.$implicit.name)}),(function(l,n){l(n,1,1,[n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,8).validClass,t["ɵnov"](n,8).invalidClass])}))}function b(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,7,"input",[["cdDimlessBinaryPerSecond",""],["class","form-control"],["defaultUnit","b"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,2)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,2)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,2)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,7).onBlur(e.target.value)&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](4,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,81920,null,0,d,[t.ElementRef,i.q,r.a,u.a],{ngDataReady:[0,"ngDataReady"],defaultUnit:[1,"defaultUnit"]},null),t["ɵdid"](8,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady,"b"),l(n,8,0,n.parent.context.$implicit.name)}),(function(l,n){l(n,1,1,[n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,8).validClass,t["ɵnov"](n,8).invalidClass])}))}function C(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,7,"input",[["cdIops",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,2)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,2)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,2)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,7).onUpdate(e.target.value)&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](4,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,81920,null,0,c,[u.a,i.q],{ngDataReady:[0,"ngDataReady"]},null),t["ɵdid"](8,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady),l(n,8,0,n.parent.context.$implicit.name)}),(function(l,n){l(n,1,1,[n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,8).validClass,t["ɵnov"](n,8).invalidClass])}))}function S(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The mininum value is 0"]))],null,null)}function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,m.b,m.a)),t["ɵdid"](1,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](5,null,["",""])),(l()(),t["ɵeld"](6,0,null,null,2,"cd-helper",[],null,null,null,p.b,p.a)),t["ɵdid"](7,49152,null,0,h.a,[],null,null),(l()(),t["ɵted"](8,0,["",""])),(l()(),t["ɵeld"](9,0,null,0,20,"div",[],[[8,"className",0]],null,null,null,null)),(l()(),t["ɵeld"](10,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["ɵeld"](11,0,null,null,7,null,null,null,null,null,null,null)),t["ɵdid"](12,16384,null,0,g.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,v)),t["ɵdid"](14,278528,null,0,g.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,g.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,b)),t["ɵdid"](16,278528,null,0,g.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,g.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,C)),t["ɵdid"](18,278528,null,0,g.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,g.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵeld"](19,0,null,null,8,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),t["ɵeld"](20,0,null,null,7,"button",[["class","btn btn-light"],["data-toggle","button"],["title","Remove the local configuration value. The parent configuration value will be inherited and used instead."],["type","button"]],null,[[null,"click"]],(function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.reset(l.context.$implicit.name)&&t),t}),null,null)),t["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](22,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["ɵpod"](23,{active:0}),(l()(),t["ɵeld"](24,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),t["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](26,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵpad"](27,1),(l()(),t["ɵand"](16777216,null,null,1,null,S)),t["ɵdid"](29,16384,null,0,g.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,12,0,n.context.$implicit.type),l(n,14,0,e.configurationType.milliseconds),l(n,16,0,e.configurationType.bps),l(n,18,0,e.configurationType.iops);var i=l(n,23,0,e.isDisabled(n.context.$implicit.name));l(n,22,0,"btn btn-light",i);var u=l(n,27,0,e.icons.erase);l(n,26,0,u),l(n,29,0,e.form.showError("configuration."+n.context.$implicit.name,t["ɵnov"](n.parent.parent,0),"min"))}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).hasErrors,t["ɵnov"](n,1).hasSuccess),l(n,4,0,n.context.$implicit.name),l(n,5,0,n.context.$implicit.displayName),l(n,8,0,n.context.$implicit.description),l(n,9,0,t["ɵinlineInterpolate"](1,"cd-col-form-input ",n.parent.context.$implicit.heading,""))}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,5,"h3",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["ɵeld"](2,0,null,null,4,"span",[["class","collapsible"]],null,[[null,"click"]],(function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.toggleSectionVisibility(l.context.$implicit.class)&&t),t}),null,null)),(l()(),t["ɵted"](3,null,[" "," "])),(l()(),t["ɵeld"](4,0,null,null,2,"i",[["aria-hidden","true"]],null,null,null,null,null)),t["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](6,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(l()(),t["ɵeld"](7,0,null,null,2,"div",[],[[8,"className",0],[8,"hidden",0]],null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,_)),t["ɵdid"](9,278528,null,0,g.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,6,0,e.sectionVisibility[n.context.$implicit.class]?e.icons.minusCircle:e.icons.addCircle),l(n,9,0,n.context.$implicit.options)}),(function(l,n){var e=n.component;l(n,3,0,n.context.$implicit.heading),l(n,7,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.class,""),!e.sectionVisibility[n.context.$implicit.class])}))}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,[["cfgFormGroup",1]],null,8,"fieldset",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,1).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,1).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,4).onSubmit()&&i),i}),null,null)),t["ɵdid"](1,540672,null,0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](3,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](4,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["RBD Configuration"])),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](8,278528,null,0,g.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.form.get("configuration")),l(n,4,0,e.form.get("configuration")),l(n,8,0,e.rbdConfigurationService.sections)}),(function(l,n){l(n,0,0,t["ɵnov"](n,3).ngClassUntouched,t["ɵnov"](n,3).ngClassTouched,t["ɵnov"](n,3).ngClassPristine,t["ɵnov"](n,3).ngClassDirty,t["ɵnov"](n,3).ngClassValid,t["ɵnov"](n,3).ngClassInvalid,t["ɵnov"](n,3).ngClassPending)}))}},E7j4:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("EEJc"),a=e("ajRT"),o=e("mXUL"),r=e("IZUe"),d=e("SVse"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("+26A"),v=e("LqlI"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return F}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.key),l(n,2,0,n.context.$implicit.key)}),(function(l,n){l(n,3,0,n.context.$implicit.desc)}))}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.checked)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.c,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.c]),t["ɵdid"](4,671744,[[5,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](9,null,["",""]))],(function(l,n){l(n,4,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,7,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""))}),(function(l,n){l(n,1,1,[t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,7).validClass,t["ɵnov"](n,7).invalidClass]),l(n,8,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,9,0,n.context.$implicit.name)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["At least one pool is required."]))],null,null)}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The token is invalid."]))],null,null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,87,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](1,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Import Bootstrap Token"])),(l()(),t["ɵeld"](4,0,null,1,83,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,82,"form",[["class","form"],["name","importBootstrapForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,69,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,5,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To import a bootstrap token which was created by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, provide the generated token, and click "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Import"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](18,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](19,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](22,0,null,0,1,"label",[["class","col-form-label required"],["for","siteName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name"])),(l()(),t["ɵeld"](24,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","siteName"],["id","siteName"],["name","siteName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,26)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,26).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,26)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,26)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](25,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](26,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](28,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](30,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](31,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,_)),t["ɵdid"](33,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](34,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](35,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](38,0,null,0,2,"label",[["class","col-form-label"],["for","direction"]],null,null,null,null,null)),(l()(),t["ɵeld"](39,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Direction"])),(l()(),t["ɵeld"](41,0,null,0,8,"select",[["class","form-control custom-select"],["formControlName","direction"],["id","direction"],["name","direction"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,42).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,42).onTouched()&&i),i}),null,null)),t["ɵdid"](42,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](44,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](46,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](47,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](49,278528,null,0,d.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵeld"](50,0,null,null,12,"div",[["class","form-group"],["formGroupName","pools"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](51,212992,null,0,i.m,[[3,i.d],[8,null],[8,null]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.d,null,[i.m]),t["ɵdid"](53,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](54,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](57,0,null,0,1,"label",[["class","col-form-label required"],["for","pools"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pools"])),(l()(),t["ɵand"](16777216,null,0,1,null,y)),t["ɵdid"](60,278528,null,0,d.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,w)),t["ɵdid"](62,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](63,0,null,null,17,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](64,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](67,0,null,0,1,"label",[["class","col-form-label required"],["for","token"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Token"])),(l()(),t["ɵeld"](69,0,null,0,7,"textarea",[["class","form-control resize-vertical"],["formControlName","token"],["id","token"],["placeholder","Generated token..."]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,70)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,70).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,70)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,70)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](70,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](72,671744,[[7,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](74,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](75,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵted"](-1,null,["          "])),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](78,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,I)),t["ɵdid"](80,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](81,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](82,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](83,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.import()&&t),t}),c.b,c.a)),t["ɵdid"](84,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Import"])),(l()(),t["ɵeld"](86,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,p.b,p.a)),t["ɵdid"](87,49152,null,0,h.a,[d.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.importBootstrapForm),l(n,10,0,e.importBootstrapForm),l(n,19,0),l(n,25,0,""),l(n,28,0,"siteName"),l(n,31,0,"siteName"),l(n,33,0,e.importBootstrapForm.showError("siteName",t["ɵnov"](n,7),"required")),l(n,35,0),l(n,44,0,"direction"),l(n,47,0,"direction"),l(n,49,0,e.directions),l(n,51,0,"pools"),l(n,54,0),l(n,60,0,e.pools),l(n,62,0,e.importBootstrapForm.showError("pools",t["ɵnov"](n,7),"requirePool")),l(n,64,0),l(n,72,0,"token"),l(n,75,0,"token"),l(n,78,0,e.importBootstrapForm.showError("token",t["ɵnov"](n,7),"required")),l(n,80,0,e.importBootstrapForm.showError("token",t["ɵnov"](n,7),"invalidToken")),l(n,84,0,e.importBootstrapForm),l(n,87,0,"Close",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,18,0,t["ɵnov"](n,19).hasErrors,t["ɵnov"](n,19).hasSuccess),l(n,24,0,t["ɵnov"](n,30).ngClassUntouched,t["ɵnov"](n,30).ngClassTouched,t["ɵnov"](n,30).ngClassPristine,t["ɵnov"](n,30).ngClassDirty,t["ɵnov"](n,30).ngClassValid,t["ɵnov"](n,30).ngClassInvalid,t["ɵnov"](n,30).ngClassPending,t["ɵnov"](n,31).validClass,t["ɵnov"](n,31).invalidClass),l(n,34,0,t["ɵnov"](n,35).hasErrors,t["ɵnov"](n,35).hasSuccess),l(n,41,0,t["ɵnov"](n,46).ngClassUntouched,t["ɵnov"](n,46).ngClassTouched,t["ɵnov"](n,46).ngClassPristine,t["ɵnov"](n,46).ngClassDirty,t["ɵnov"](n,46).ngClassValid,t["ɵnov"](n,46).ngClassInvalid,t["ɵnov"](n,46).ngClassPending,t["ɵnov"](n,47).validClass,t["ɵnov"](n,47).invalidClass),l(n,50,0,t["ɵnov"](n,53).ngClassUntouched,t["ɵnov"](n,53).ngClassTouched,t["ɵnov"](n,53).ngClassPristine,t["ɵnov"](n,53).ngClassDirty,t["ɵnov"](n,53).ngClassValid,t["ɵnov"](n,53).ngClassInvalid,t["ɵnov"](n,53).ngClassPending,t["ɵnov"](n,54).hasErrors,t["ɵnov"](n,54).hasSuccess),l(n,63,0,t["ɵnov"](n,64).hasErrors,t["ɵnov"](n,64).hasSuccess),l(n,69,0,t["ɵnov"](n,74).ngClassUntouched,t["ɵnov"](n,74).ngClassTouched,t["ɵnov"](n,74).ngClassPristine,t["ɵnov"](n,74).ngClassDirty,t["ɵnov"](n,74).ngClassValid,t["ɵnov"](n,74).ngClassInvalid,t["ɵnov"](n,74).ngClassPending,t["ɵnov"](n,75).validClass,t["ɵnov"](n,75).invalidClass)}))}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-bootstrap-import-modal",[],null,null,null,E,S)),t["ɵdid"](1,245760,null,0,f.a,[v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var F=t["ɵccf"]("cd-bootstrap-import-modal",f.a,N,{},{},[])},EFGL:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("SVse"),u=e("IzCI"),s=e("aXbf"),a=e("dEH0"),o=e("BQkM"),r=e("25BL"),d=e("uIqm");e("aAWM"),e("o8EM"),e("GiVz"),e.d(n,"a",(function(){return c})),e.d(n,"b",(function(){return _}));var c=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function m(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Global"]))],null,null)}function p(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Image"]))],null,null)}function h(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pool"]))],null,null)}function g(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,7,"div",[],null,null,null,null,null)),t["ɵdid"](1,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,m)),t["ɵdid"](3,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,p)),t["ɵdid"](5,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,h)),t["ɵdid"](7,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],(function(l,n){l(n,1,0,n.context.value),l(n,3,0,"global"),l(n,5,0,"image"),l(n,7,0,"pool")}),null)}function f(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)}))}function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,1),n.parent.context.value));l(n,1,0,e)}))}function b(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,2),n.parent.context.value));l(n,1,0,e)}))}function C(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function S(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[],null,null,null,null,null)),t["ɵdid"](1,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,f)),t["ɵdid"](3,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,v)),t["ɵdid"](5,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,b)),t["ɵdid"](7,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,C)),t["ɵdid"](9,16384,null,0,i.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],null,null)],(function(l,n){var e=n.component;l(n,1,0,n.context.row.type),l(n,3,0,e.typeField.bps),l(n,5,0,e.typeField.milliseconds),l(n,7,0,e.typeField.iops)}),null)}function _(l){return t["ɵvid"](0,[t["ɵpid"](0,u.a,[s.a]),t["ɵpid"](0,a.a,[]),t["ɵpid"](0,o.a,[]),t["ɵqud"](402653184,1,{configurationSourceTpl:0}),t["ɵqud"](402653184,2,{configurationValueTpl:0}),t["ɵqud"](402653184,3,{poolConfTable:0}),(l()(),t["ɵeld"](6,0,null,null,1,"cd-table",[["identifier","name"]],null,null,null,r.b,r.a)),t["ɵdid"](7,2867200,[[3,4],["poolConfTable",4]],0,d.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"]},null),(l()(),t["ɵand"](0,[[1,2],["configurationSourceTpl",2]],null,0,null,g)),(l()(),t["ɵand"](0,[[2,2],["configurationValueTpl",2]],null,0,null,S))],(function(l,n){var e=n.component;l(n,7,0,e.data,e.poolConfigurationColumns,"name")}),null)}},Ekvf:function(l,n,e){"use strict";e.d(n,"a",(function(){return d}));var t=e("mrSG"),i=e("IheW"),u=e("lJxs"),s=e("xTzq"),a=e("o8EM"),o=e("8Y7J"),r=e("pL04");let d=(()=>{let l=class{constructor(l,n){this.http=l,this.rbdConfigurationService=n,this.apiPath="api/pool"}create(l){return this.http.post(this.apiPath,l,{observe:"response"})}update(l){let n;return l.hasOwnProperty("srcpool")?(n=l.srcpool,delete l.srcpool):(n=l.pool,delete l.pool),this.http.put(`${this.apiPath}/${encodeURIComponent(n)}`,l,{observe:"response"})}delete(l){return this.http.delete(`${this.apiPath}/${l}`,{observe:"response"})}get(l){return this.http.get(`${this.apiPath}/${l}`)}getList(){return this.http.get(`${this.apiPath}?stats=true`)}getConfiguration(l){return this.http.get(`${this.apiPath}/${l}/configuration`).pipe(Object(u.a)(l=>l.map(l=>Object.assign(l,this.rbdConfigurationService.getOptionByName(l.name)))))}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}list(l=[]){const n=l.join(",");return this.http.get(`${this.apiPath}?attrs=${n}`).toPromise().then(l=>l)}};return l.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new l(o["ɵɵinject"](i.c),o["ɵɵinject"](a.a))},token:l,providedIn:r.a}),l=t.__decorate([s.a,t.__metadata("design:paramtypes",[i.c,a.a])],l),l})()},F83c:function(l,n,e){"use strict";e.d(n,"a",(function(){return m}));var t=e("mrSG"),i=e("IheW"),u=e("LvDl"),s=e("lJxs"),a=e("xTzq"),o=e("jVDg"),r=e("o8EM"),d=e("8Y7J"),c=e("pL04");let m=(()=>{let l=class{constructor(l,n){this.http=l,this.rbdConfigurationService=n}isRBDPool(l){return-1!==u.indexOf(l.application_metadata,"rbd")&&!l.pool_name.includes("/")}create(l){return this.http.post("api/block/image",l,{observe:"response"})}delete(l){return this.http.delete(`api/block/image/${l.toStringEncoded()}`,{observe:"response"})}update(l,n){return this.http.put(`api/block/image/${l.toStringEncoded()}`,n,{observe:"response"})}get(l){return this.http.get(`api/block/image/${l.toStringEncoded()}`)}list(){return this.http.get("api/block/image").pipe(Object(s.a)(l=>l.map(l=>(l.value.map(l=>l.configuration?(l.configuration.map(l=>Object.assign(l,this.rbdConfigurationService.getOptionByName(l.name))),l):l),l))))}copy(l,n){return this.http.post(`api/block/image/${l.toStringEncoded()}/copy`,n,{observe:"response"})}flatten(l){return this.http.post(`api/block/image/${l.toStringEncoded()}/flatten`,null,{observe:"response"})}defaultFeatures(){return this.http.get("api/block/image/default_features")}createSnapshot(l,n){const e={snapshot_name:n};return this.http.post(`api/block/image/${l.toStringEncoded()}/snap`,e,{observe:"response"})}renameSnapshot(l,n,e){const t={new_snap_name:e};return this.http.put(`api/block/image/${l.toStringEncoded()}/snap/${n}`,t,{observe:"response"})}protectSnapshot(l,n,e){const t={is_protected:e};return this.http.put(`api/block/image/${l.toStringEncoded()}/snap/${n}`,t,{observe:"response"})}rollbackSnapshot(l,n){return this.http.post(`api/block/image/${l.toStringEncoded()}/snap/${n}/rollback`,null,{observe:"response"})}cloneSnapshot(l,n,e){return this.http.post(`api/block/image/${l.toStringEncoded()}/snap/${n}/clone`,e,{observe:"response"})}deleteSnapshot(l,n){return this.http.delete(`api/block/image/${l.toStringEncoded()}/snap/${n}`,{observe:"response"})}listTrash(){return this.http.get("api/block/image/trash/")}createNamespace(l,n){return this.http.post(`api/block/pool/${l}/namespace`,{namespace:n},{observe:"response"})}listNamespaces(l){return this.http.get(`api/block/pool/${l}/namespace/`)}deleteNamespace(l,n){return this.http.delete(`api/block/pool/${l}/namespace/${n}`,{observe:"response"})}moveTrash(l,n){return this.http.post(`api/block/image/${l.toStringEncoded()}/move_trash`,{delay:n},{observe:"response"})}purgeTrash(l){return this.http.post(`api/block/image/trash/purge/?pool_name=${l}`,null,{observe:"response"})}restoreTrash(l,n){return this.http.post(`api/block/image/trash/${l.toStringEncoded()}/restore`,{new_image_name:n},{observe:"response"})}removeTrash(l,n=!1){return this.http.delete(`api/block/image/trash/${l.toStringEncoded()}/?force=${n}`,{observe:"response"})}};return l.ngInjectableDef=d["ɵɵdefineInjectable"]({factory:function(){return new l(d["ɵɵinject"](i.c),d["ɵɵinject"](r.a))},token:l,providedIn:c.a}),t.__decorate([t.__param(1,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String]),t.__metadata("design:returntype",void 0)],l.prototype,"createSnapshot",null),t.__decorate([t.__param(2,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String,String]),t.__metadata("design:returntype",void 0)],l.prototype,"renameSnapshot",null),t.__decorate([t.__param(2,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String,Boolean]),t.__metadata("design:returntype",void 0)],l.prototype,"protectSnapshot",null),t.__decorate([t.__param(1,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String]),t.__metadata("design:returntype",void 0)],l.prototype,"restoreTrash",null),l=t.__decorate([a.a,t.__metadata("design:paramtypes",[i.c,r.a])],l),l})()},Fd71:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("s7LF"),i=e("XNiG"),u=(e("F83c"),e("sne2"),e("QFaf")),s=e("kvvV"),a=e("jVDg");e("9nlD"),e("VXsX");class o{constructor(l,n,e,t,i,u){this.modalRef=l,this.rbdService=n,this.taskManagerService=e,this.notificationService=t,this.i18n=i,this.actionLabels=u,this.editing=!1,this.action=this.actionLabels.CREATE,this.resource=this.i18n("RBD Snapshot"),this.createForm()}createForm(){this.snapshotForm=new u.a({snapshotName:new t.i("",{validators:[t.B.required]})})}ngOnInit(){this.onSubmit=new i.a}setSnapName(l){this.snapName=l,this.snapshotForm.get("snapshotName").setValue(l)}setEditing(l=!0){this.editing=l,this.action=this.editing?this.actionLabels.RENAME:this.actionLabels.CREATE}editAction(){const l=this.snapshotForm.getValue("snapshotName"),n=new a.a(this.poolName,this.namespace,this.imageName),e=new s.a;e.name="rbd/snap/edit",e.metadata={image_spec:n.toString(),snapshot_name:l},this.rbdService.renameSnapshot(n,this.snapName,l).toPromise().then(()=>{this.taskManagerService.subscribe(e.name,e.metadata,l=>{this.notificationService.notifyTask(l)}),this.modalRef.hide(),this.onSubmit.next(this.snapName)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}createAction(){const l=this.snapshotForm.getValue("snapshotName"),n=new a.a(this.poolName,this.namespace,this.imageName),e=new s.a;e.name="rbd/snap/create",e.metadata={image_spec:n.toString(),snapshot_name:l},this.rbdService.createSnapshot(n,l).toPromise().then(()=>{this.taskManagerService.subscribe(e.name,e.metadata,l=>{this.notificationService.notifyTask(l)}),this.modalRef.hide(),this.onSubmit.next(l)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}submit(){this.editing?this.editAction():this.createAction()}}},I4Qz:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("s7LF"),a=e("+gVj"),o=e("SVse"),r=e("mXUL"),d=e("ienR"),c=e("z/SZ"),m=e("gp3X"),p=e("sb0X"),h=e("KVJa"),g=e("Z21x"),f=e("sne2"),v=e("2JDI"),b=e("F83c"),C=e("LqlI"),S=e("2EZI"),_=e("kn/O");e.d(n,"a",(function(){return N}));var R=t["ɵcrt"]({encapsulation:0,styles:[[".bs-datepicker-head bs-datepicker-navigation-view{display:flex;justify-content:space-between}"]],data:{}});function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"div",[["class","alert alert-warning"],["role","alert"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This image contains snapshot(s), which will prevent it from being removed after moved to trash."]))],null,null)}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,['Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".']))],null,null)}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Protection has already expired. Please pick a future date or leave it empty."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,48,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Move an image to trash"])),(l()(),t["ɵeld"](4,0,null,1,44,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,43,"form",[["class","form"],["name","moveForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,s.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,30,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,y)),t["ɵdid"](13,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](14,0,null,null,7,"p",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To move "])),(l()(),t["ɵeld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](17,null,["",""])),(l()(),t["ɵted"](-1,null,[" to trash, click "])),(l()(),t["ɵeld"](19,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Move Image"])),(l()(),t["ɵted"](-1,null,[". Optionally, you can pick an expiration date."])),(l()(),t["ɵeld"](22,0,null,null,19,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](23,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](26,0,null,0,1,"label",[["class","col-form-label"],["for","expires"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Protection expires at"])),(l()(),t["ɵeld"](28,16777216,null,0,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","expiresAt"],["placeholder","NOT PROTECTED"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,29)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,29).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,29)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,29)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,31).onChange(e)&&i),"keyup.esc"===n&&(i=!1!==t["ɵnov"](l,31).hide()&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,31).onBlur()&&i),i}),null,null)),t["ɵdid"](29,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵdid"](30,737280,null,0,d.c,[d.a,t.ElementRef,t.Renderer2,t.ViewContainerRef,c.a],{bsConfig:[0,"bsConfig"],minDate:[1,"minDate"]},null),t["ɵdid"](31,16384,null,0,d.f,[d.c,d.l,t.Renderer2,t.ElementRef,t.ChangeDetectorRef],null,null),t["ɵprd"](1024,null,s.o,(function(l){return[l]}),[d.f]),t["ɵprd"](1024,null,s.p,(function(l,n){return[l,n]}),[s.e,d.f]),t["ɵdid"](34,671744,[[1,4]],0,s.j,[[3,s.d],[6,s.o],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](36,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](37,16384,null,0,a.h,[[3,s.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,w)),t["ɵdid"](39,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](41,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](42,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](43,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](44,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.moveImage()&&t),t}),m.b,m.a)),t["ɵdid"](45,114688,null,0,p.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Move Image"])),(l()(),t["ɵeld"](47,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,h.b,h.a)),t["ɵdid"](48,49152,null,0,g.a,[o.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.moveForm),l(n,10,0,e.moveForm),l(n,13,0,e.hasSnapshots),l(n,23,0),l(n,30,0,e.bsConfig,e.minDate),l(n,34,0,"expiresAt"),l(n,37,0,"expiresAt"),l(n,39,0,e.moveForm.showError("expiresAt",t["ɵnov"](n,7),"format")),l(n,41,0,e.moveForm.showError("expiresAt",t["ɵnov"](n,7),"expired")),l(n,45,0,e.moveForm),l(n,48,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,17,0,e.imageSpecStr),l(n,22,0,t["ɵnov"](n,23).hasErrors,t["ɵnov"](n,23).hasSuccess),l(n,28,0,t["ɵnov"](n,36).ngClassUntouched,t["ɵnov"](n,36).ngClassTouched,t["ɵnov"](n,36).ngClassPristine,t["ɵnov"](n,36).ngClassDirty,t["ɵnov"](n,36).ngClassValid,t["ɵnov"](n,36).ngClassInvalid,t["ɵnov"](n,36).ngClassPending,t["ɵnov"](n,37).validClass,t["ɵnov"](n,37).invalidClass)}))}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-trash-move-modal",[],null,null,null,I,R)),t["ɵdid"](1,114688,null,0,v.a,[b.a,C.a,S.a,_.a],null,null)],(function(l,n){l(n,1,0)}),null)}var N=t["ɵccf"]("cd-rbd-trash-move-modal",v.a,E,{},{},[])},JBea:function(l,n,e){"use strict";e.d(n,"a",(function(){return t})),e("lArG");class t{constructor(){}}},"JIi+":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("978R"),u=e("z/SZ"),s=e("2uy1"),a=e("SVse"),o=e("pKUh"),r=e("2ZVE"),d=e("25BL"),c=e("uIqm"),m=e("NUGo"),p=e("S7zO"),h=e("VTlA"),g=e("ufoC"),f=e("mSOc"),v=e("wd/R"),b=e("LRne"),C=e("F83c"),S=e("OLbh"),_=e("0+/T"),R=e("sne2"),y=e("x38r"),w=e("vCyI"),k=e("QTAa"),I=e("kvvV"),E=e("jVDg"),N=e("a0VL"),F=e("Fgil"),T=e("aexS"),V=e("9nlD"),D=e("VXsX"),P=e("Fd71"),x=e("LvDl"),q=e("oxzT");class B{constructor(l,n,e){this.i18n=l,this.create={permission:"create",icon:q.a.add,name:n.CREATE},this.rename={permission:"update",icon:q.a.edit,name:n.RENAME},this.protect={permission:"update",icon:q.a.lock,visible:l=>l.hasSingleSelection&&!l.first().is_protected,name:n.PROTECT},this.unprotect={permission:"update",icon:q.a.unlock,visible:l=>l.hasSingleSelection&&l.first().is_protected,name:n.UNPROTECT},this.clone={permission:"create",canBePrimary:l=>l.hasSingleSelection,disable:l=>!l.hasSingleSelection||l.first().cdExecuting||!x.isUndefined(this.getCloneDisableDesc(e)),disableDesc:()=>this.getCloneDisableDesc(e),icon:q.a.clone,name:n.CLONE},this.copy={permission:"create",canBePrimary:l=>l.hasSingleSelection,disable:l=>!l.hasSingleSelection||l.first().cdExecuting,icon:q.a.copy,name:n.COPY},this.rollback={permission:"update",icon:q.a.undo,name:n.ROLLBACK},this.deleteSnap={permission:"delete",icon:q.a.destroy,disable:l=>{const n=l.first();return!l.hasSingleSelection||n.cdExecuting||n.is_protected},name:n.DELETE},this.ordering=[this.create,this.rename,this.protect,this.unprotect,this.clone,this.copy,this.rollback,this.deleteSnap]}getCloneDisableDesc(l){if(!l.includes("layering"))return this.i18n("Parent image must support Layering")}}class O{}class M{constructor(l,n,e,t,i,u,s,a,o,r,d){this.authStorageService=l,this.modalService=n,this.dimlessBinaryPipe=e,this.cdDatePipe=t,this.rbdService=i,this.taskManagerService=u,this.notificationService=s,this.summaryService=a,this.taskListService=o,this.i18n=r,this.actionLabels=d,this.snapshots=[],this.selection=new w.a,this.builders={"rbd/snap/create":l=>{const n=new O;return n.name=l.snapshot_name,n}},this.permission=this.authStorageService.getPermissions().rbdImage}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",cellTransformation:y.a.executing,flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("State"),prop:"is_protected",flexGrow:1,cellTransformation:y.a.badge,customTemplateConfig:{map:{true:{value:this.i18n("PROTECTED"),class:"badge-success"},false:{value:this.i18n("UNPROTECTED"),class:"badge-info"}}}},{name:this.i18n("Created"),prop:"timestamp",flexGrow:1,pipe:this.cdDatePipe}]}ngOnChanges(){const l=new E.a(this.poolName,this.namespace,this.rbdName),n=new B(this.i18n,this.actionLabels,this.featuresName);n.create.click=()=>this.openCreateSnapshotModal(),n.rename.click=()=>this.openEditSnapshotModal(),n.protect.click=()=>this.toggleProtection(),n.unprotect.click=()=>this.toggleProtection();const e=()=>this.selection.first()&&`${l.toStringEncoded()}/${encodeURIComponent(this.selection.first().name)}`;n.clone.routerLink=()=>`/block/rbd/clone/${e()}`,n.copy.routerLink=()=>`/block/rbd/copy/${e()}`,n.rollback.click=()=>this.rollbackModal(),n.deleteSnap.click=()=>this.deleteSnapshotModal(),this.tableActions=n.ordering,this.taskListService.init(()=>Object(b.a)(this.snapshots),null,l=>this.data=l,()=>this.data=this.snapshots,n=>["rbd/snap/create","rbd/snap/delete","rbd/snap/edit","rbd/snap/rollback"].includes(n.name)&&l.toString()===n.metadata.image_spec,(l,n)=>l.name===n.metadata.snapshot_name,this.builders)}openSnapshotModal(l,n=null){this.modalRef=this.modalService.show(P.a),this.modalRef.content.poolName=this.poolName,this.modalRef.content.imageName=this.rbdName,this.modalRef.content.namespace=this.namespace,n?this.modalRef.content.setEditing():n=`${this.rbdName}_${v().toISOString(!0)}`,this.modalRef.content.setSnapName(n),this.modalRef.content.onSubmit.subscribe(n=>{const e=new k.a;e.name=l,e.metadata={image_name:this.rbdName,pool_name:this.poolName,snapshot_name:n},this.summaryService.addRunningTask(e),this.ngOnChanges()})}openCreateSnapshotModal(){this.openSnapshotModal("rbd/snap/create")}openEditSnapshotModal(){this.openSnapshotModal("rbd/snap/edit",this.selection.first().name)}toggleProtection(){const l=this.selection.first().name,n=this.selection.first().is_protected,e=new I.a;e.name="rbd/snap/edit";const t=new E.a(this.poolName,this.namespace,this.rbdName);e.metadata={image_spec:t.toString(),snapshot_name:l},this.rbdService.protectSnapshot(t,l,!n).toPromise().then(()=>{const l=new k.a;l.name=e.name,l.metadata=e.metadata,this.summaryService.addRunningTask(l),this.ngOnChanges(),this.taskManagerService.subscribe(e.name,e.metadata,l=>{this.notificationService.notifyTask(l)})})}_asyncTask(l,n,e){const t=new I.a;t.name=n,t.metadata={image_spec:new E.a(this.poolName,this.namespace,this.rbdName).toString(),snapshot_name:e};const i=new E.a(this.poolName,this.namespace,this.rbdName);this.rbdService[l](i,e).toPromise().then(()=>{const l=new k.a;l.name=t.name,l.metadata=t.metadata,this.summaryService.addRunningTask(l),this.modalRef.hide(),this.ngOnChanges(),this.taskManagerService.subscribe(l.name,l.metadata,l=>{this.notificationService.notifyTask(l)})}).catch(()=>{this.modalRef.content.stopLoadingSpinner()})}rollbackModal(){const l=this.selection.selected[0].name,n=new E.a(this.poolName,this.namespace,this.rbdName).toString(),e={titleText:this.i18n("RBD snapshot rollback"),buttonText:this.i18n("Rollback"),bodyTpl:this.rollbackTpl,bodyData:{snapName:`${n}@${l}`},onSubmit:()=>{this._asyncTask("rollbackSnapshot","rbd/snap/rollback",l)}};this.modalRef=this.modalService.show(S.a,{initialState:e})}deleteSnapshotModal(){const l=this.selection.selected[0].name;this.modalRef=this.modalService.show(_.a,{initialState:{itemDescription:this.i18n("RBD snapshot"),itemNames:[l],submitAction:()=>this._asyncTask("deleteSnapshot","rbd/snap/delete",l)}})}updateSelection(l){this.selection=l}}var A=e("LqlI"),L=e("GiVz"),j=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function $(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["You are about to rollback"])),(l()(),t["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](3,null,[" ",""])),(l()(),t["ɵted"](-1,null,[".\n"]))],null,(function(l,n){l(n,3,0,n.context.$implicit.snapName)}))}function G(l){return t["ɵvid"](0,[t["ɵqud"](671088640,1,{nameTpl:0}),t["ɵqud"](402653184,2,{rollbackTpl:0}),(l()(),t["ɵeld"](2,0,null,null,3,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(l,n,e){var t=!0;return"updateSelection"===n&&(t=!1!==l.component.updateSelection(e)&&t),t}),d.b,d.a)),t["ɵdid"](3,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),t["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,m.b,m.a)),t["ɵdid"](5,114688,null,0,p.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["ɵand"](0,[[2,2],["rollbackTpl",2]],null,0,null,$))],(function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex","single"),l(n,5,0,e.permission,e.selection,e.tableActions)}),null)}var U=e("EFGL"),X=e("aAWM"),z=e("aXbf"),W=e("o8EM"),J=e("nSDx"),Y=e("o4+5"),K=e("JBea");e.d(n,"b",(function(){return Z})),e.d(n,"c",(function(){return cl})),e.d(n,"a",(function(){return pl}));var Z=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function H(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Only available for RBD images with "])),(l()(),t["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["fast-diff"])),(l()(),t["ɵted"](-1,null,[" enabled"]))],null,null)}function Q(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(l()(),t["ɵted"](2,null,["",""]))],null,(function(l,n){l(n,2,0,n.context.$implicit)}))}function ll(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,16777216,null,null,2,"span",[["class","form-text text-muted"],["placement","right"]],null,null,null,null,null)),t["ɵdid"](2,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["ɵted"](-1,null,["N/A"]))],(function(l,n){l(n,2,0,t["ɵnov"](n.parent.parent,5),"right")}),null)}function nl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,[" "," "])),t["ɵppd"](2,1)],null,(function(l,n){var e=n.component,i=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,2),e.selection.disk_usage));l(n,1,0,i)}))}function el(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,16777216,null,null,2,"span",[["class","form-text text-muted"],["placement","right"]],null,null,null,null,null)),t["ɵdid"](2,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["ɵted"](-1,null,["N/A"]))],(function(l,n){l(n,2,0,t["ɵnov"](n.parent.parent,5),"right")}),null)}function tl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,[" "," "])),t["ɵppd"](2,1)],null,(function(l,n){var e=n.component,i=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,2),e.selection.total_disk_usage));l(n,1,0,i)}))}function il(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["/",""]))],null,(function(l,n){l(n,1,0,n.component.selection.parent.pool_namespace)}))}function ul(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),(l()(),t["ɵand"](16777216,null,null,1,null,il)),t["ɵdid"](3,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵted"](4,null,["/","@",""]))],(function(l,n){l(n,3,0,n.component.selection.parent.pool_namespace)}),(function(l,n){var e=n.component;l(n,1,0,e.selection.parent.pool_name),l(n,4,0,e.selection.parent.image_name,e.selection.parent.snap_name)}))}function sl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["-"]))],null,null)}function al(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,110,"tabset",[],[[2,"tab-container",null]],null,null,o.b,o.a)),t["ɵdid"](1,180224,null,0,r.e,[r.f,t.Renderer2,t.ElementRef],null,null),(l()(),t["ɵeld"](2,0,null,0,99,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](3,212992,null,0,r.b,[r.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵeld"](4,0,null,null,97,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,96,"tbody",[],null,null,null,null,null)),(l()(),t["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](7,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Name"])),(l()(),t["ɵeld"](9,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),t["ɵted"](10,null,["",""])),(l()(),t["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pool"])),(l()(),t["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](15,null,["",""])),(l()(),t["ɵeld"](16,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Data Pool"])),(l()(),t["ɵeld"](19,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](20,null,["",""])),t["ɵppd"](21,1),(l()(),t["ɵeld"](22,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](23,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Created"])),(l()(),t["ɵeld"](25,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](26,null,["",""])),t["ɵppd"](27,1),(l()(),t["ɵeld"](28,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](29,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Size"])),(l()(),t["ɵeld"](31,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](32,null,["",""])),t["ɵppd"](33,1),(l()(),t["ɵeld"](34,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](35,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Objects"])),(l()(),t["ɵeld"](37,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](38,null,["",""])),t["ɵppd"](39,1),(l()(),t["ɵeld"](40,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](41,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Object size"])),(l()(),t["ɵeld"](43,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](44,null,["",""])),t["ɵppd"](45,1),(l()(),t["ɵeld"](46,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](47,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Features"])),(l()(),t["ɵeld"](49,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,Q)),t["ɵdid"](51,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵeld"](52,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](53,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Provisioned"])),(l()(),t["ɵeld"](55,0,null,null,4,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,ll)),t["ɵdid"](57,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,nl)),t["ɵdid"](59,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](60,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](61,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Total provisioned"])),(l()(),t["ɵeld"](63,0,null,null,4,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,el)),t["ɵdid"](65,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,tl)),t["ɵdid"](67,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](68,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](69,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Striping unit"])),(l()(),t["ɵeld"](71,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](72,null,["",""])),t["ɵppd"](73,1),(l()(),t["ɵeld"](74,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](75,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Striping count"])),(l()(),t["ɵeld"](77,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](78,null,["",""])),(l()(),t["ɵeld"](79,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](80,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Parent"])),(l()(),t["ɵeld"](82,0,null,null,4,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,ul)),t["ɵdid"](84,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,sl)),t["ɵdid"](86,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](87,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](88,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Block name prefix"])),(l()(),t["ɵeld"](90,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](91,null,["",""])),(l()(),t["ɵeld"](92,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](93,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Order"])),(l()(),t["ɵeld"](95,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](96,null,["",""])),(l()(),t["ɵeld"](97,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](98,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Format Version"])),(l()(),t["ɵeld"](100,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](101,null,["",""])),(l()(),t["ɵeld"](102,0,null,0,4,"tab",[["heading","Snapshots"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](103,212992,null,0,r.b,[r.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵeld"](104,0,null,null,2,"cd-rbd-snapshot-list",[],null,null,null,G,j)),t["ɵprd"](131584,null,h.a,h.a,[g.a,f.a]),t["ɵdid"](106,638976,null,0,M,[T.a,A.b,F.a,N.a,C.a,D.a,V.a,f.a,h.a,L.a,R.b],{snapshots:[0,"snapshots"],featuresName:[1,"featuresName"],poolName:[2,"poolName"],namespace:[3,"namespace"],rbdName:[4,"rbdName"]},null),(l()(),t["ɵeld"](107,0,null,0,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](108,212992,null,0,r.b,[r.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵeld"](109,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,U.b,U.a)),t["ɵdid"](110,638976,null,0,X.a,[z.a,W.a,L.a],{data:[0,"data"]},null)],(function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,51,0,e.selection.features_name),l(n,57,0,-1===(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,59,0,-1!==(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,65,0,-1===(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,67,0,-1!==(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,84,0,e.selection.parent),l(n,86,0,!e.selection.parent),l(n,103,0,"Snapshots"),l(n,106,0,e.selection.snapshots,e.selection.features_name,e.selection.pool_name,e.selection.namespace,e.selection.name),l(n,108,0,"Configuration"),l(n,110,0,e.selection.configuration)}),(function(l,n){var e=n.component;l(n,0,0,t["ɵnov"](n,1).clazz),l(n,2,0,t["ɵnov"](n,3).id,t["ɵnov"](n,3).active,t["ɵnov"](n,3).addClass,t["ɵnov"](n,3).role,t["ɵnov"](n,3).ariaLabelledby),l(n,10,0,e.selection.name),l(n,15,0,e.selection.pool_name);var i=t["ɵunv"](n,20,0,l(n,21,0,t["ɵnov"](n.parent,0),e.selection.data_pool));l(n,20,0,i);var u=t["ɵunv"](n,26,0,l(n,27,0,t["ɵnov"](n.parent,1),e.selection.timestamp));l(n,26,0,u);var s=t["ɵunv"](n,32,0,l(n,33,0,t["ɵnov"](n.parent,2),e.selection.size));l(n,32,0,s);var a=t["ɵunv"](n,38,0,l(n,39,0,t["ɵnov"](n.parent,3),e.selection.num_objs));l(n,38,0,a);var o=t["ɵunv"](n,44,0,l(n,45,0,t["ɵnov"](n.parent,2),e.selection.obj_size));l(n,44,0,o);var r=t["ɵunv"](n,72,0,l(n,73,0,t["ɵnov"](n.parent,2),e.selection.stripe_unit));l(n,72,0,r),l(n,78,0,e.selection.stripe_count),l(n,91,0,e.selection.block_name_prefix),l(n,96,0,e.selection.order),l(n,101,0,e.selection.image_format),l(n,102,0,t["ɵnov"](n,103).id,t["ɵnov"](n,103).active,t["ɵnov"](n,103).addClass,t["ɵnov"](n,103).role,t["ɵnov"](n,103).ariaLabelledby),l(n,107,0,t["ɵnov"](n,108).id,t["ɵnov"](n,108).active,t["ɵnov"](n,108).addClass,t["ɵnov"](n,108).role,t["ɵnov"](n,108).ariaLabelledby)}))}function ol(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,16777216,null,null,2,"strong",[["tooltip","This setting overrides the global value"]],null,null,null,null,null)),t["ɵdid"](2,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"]},null),(l()(),t["ɵted"](-1,null,["Image"])),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,2,0,"This setting overrides the global value")}),null)}function rl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,16777216,null,null,2,"span",[["tooltip","This is the global value. No value for this option has been set for this image."]],null,null,null,null,null)),t["ɵdid"](1,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"]},null),(l()(),t["ɵted"](-1,null,["Global"])),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"This is the global value. No value for this option has been set for this image.")}),null)}function dl(l){return t["ɵvid"](0,[(l()(),t["ɵand"](16777216,null,null,1,null,ol)),t["ɵdid"](1,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),t["ɵand"](0,[["global",2]],null,0,null,rl))],(function(l,n){l(n,1,0,n.context.value-0,t["ɵnov"](n,2))}),null)}function cl(l){return t["ɵvid"](0,[t["ɵpid"](0,J.a,[]),t["ɵpid"](0,N.a,[a.DatePipe]),t["ɵpid"](0,F.a,[z.a]),t["ɵpid"](0,Y.a,[z.a]),t["ɵqud"](402653184,1,{poolConfigurationSourceTpl:0}),(l()(),t["ɵand"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,H)),(l()(),t["ɵand"](16777216,null,null,1,null,al)),t["ɵdid"](7,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,[[1,2],["poolConfigurationSourceTpl",2]],null,0,null,dl))],(function(l,n){l(n,7,0,n.component.selection)}),null)}function ml(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-details",[],null,null,null,cl,Z)),t["ɵdid"](1,49152,null,0,K.a,[],null,null)],null,null)}var pl=t["ɵccf"]("cd-rbd-details",K.a,ml,{selection:"selection",images:"images"},{},[])},L4us:function(l,n,e){"use strict";var t=e("s7LF"),i=(e("XED3"),e("QFaf")),u=e("kvvV");e("kn/O");class s{}e.d(n,"a",(function(){return a}));class a{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.bsConfig={containerClass:"theme-default"},this.createForm()}createForm(){this.editPeerForm=new i.a({clusterName:new t.i("",{validators:[t.B.required,this.validateClusterName]}),clientID:new t.i("",{validators:[t.B.required,this.validateClientID]}),monAddr:new t.i("",{validators:[this.validateMonAddr]}),key:new t.i("",{validators:[this.validateKey]})})}ngOnInit(){this.pattern=`${this.poolName}/${this.peerUUID}`,"edit"===this.mode&&this.rbdMirroringService.getPeer(this.poolName,this.peerUUID).subscribe(l=>{this.setResponse(l)})}validateClusterName(l){if(!l.value.match(/^[\w\-_]*$/))return{invalidClusterName:{value:l.value}}}validateClientID(l){if(!l.value.match(/^(?!client\.)[\w\-_.]*$/))return{invalidClientID:{value:l.value}}}validateMonAddr(l){if(!l.value.match(/^[,; ]*([\w.\-_\[\]]+(:[\d]+)?[,; ]*)*$/))return{invalidMonAddr:{value:l.value}}}validateKey(l){try{if(""===l.value||atob(l.value))return null}catch(n){}return{invalidKey:{value:l.value}}}setResponse(l){this.response=l,this.editPeerForm.get("clusterName").setValue(l.cluster_name),this.editPeerForm.get("clientID").setValue(l.client_id),this.editPeerForm.get("monAddr").setValue(l.mon_host),this.editPeerForm.get("key").setValue(l.key)}update(){const l=new s;let n;l.cluster_name=this.editPeerForm.getValue("clusterName"),l.client_id=this.editPeerForm.getValue("clientID"),l.mon_host=this.editPeerForm.getValue("monAddr"),l.key=this.editPeerForm.getValue("key"),n=this.taskWrapper.wrapTaskAroundCall("edit"===this.mode?{task:new u.a("rbd/mirroring/peer/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePeer(this.poolName,this.peerUUID,l)}:{task:new u.a("rbd/mirroring/peer/add",{pool_name:this.poolName}),call:this.rbdMirroringService.addPeer(this.poolName,l)}),n.subscribe(void 0,()=>this.editPeerForm.setErrors({cdSubmitButton:!0}),()=>{this.rbdMirroringService.refresh(),this.modalRef.hide()})}}},MyVl:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("LvDl"),s=e("jtHE"),a=e("cp0P"),o=e("SxV6"),r=e("eIep"),d=(e("Ekvf"),e("F83c"),e("sne2"),e("oxzT")),c=e("QFaf"),m=e("PhyI"),p=e("kvvV"),h=e("jVDg"),g=(e("Fgil"),e("aexS"),e("aXbf"),e("kn/O"),e("u0yg"));class f{constructor(){this.features=[]}}class v{constructor(){this.features=[]}}var b=e("lArG");class C extends b.a{constructor(){super(...arguments),this.features=[]}}class S{constructor(){this.features=[]}}var _=function(l){return l.editing="editing",l.cloning="cloning",l.copying="copying",l}({});e.d(n,"a",(function(){return R}));class R{constructor(l,n,e,i,u,a,o,r,c,m){this.authStorageService=l,this.route=n,this.poolService=e,this.rbdService=i,this.formatter=u,this.taskWrapper=a,this.dimlessBinaryPipe=o,this.i18n=r,this.actionLabels=c,this.router=m,this.namespaces=[],this.namespacesByPoolCache={},this.pools=null,this.allPools=null,this.dataPools=null,this.allDataPools=null,this.featuresList=[],this.initializeConfigData=new t.EventEmitter,this.advancedEnabled=!1,this.rbdFormMode=_,this.defaultObjectSize="4 MiB",this.objectSizes=["4 KiB","8 KiB","16 KiB","32 KiB","64 KiB","128 KiB","256 KiB","512 KiB","1 MiB","2 MiB","4 MiB","8 MiB","16 MiB","32 MiB"],this.rbdImage=new s.a(1),this.icons=d.a,this.poolPermission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("RBD"),this.features={"deep-flatten":{desc:this.i18n("Deep flatten"),requires:null,allowEnable:!1,allowDisable:!0},layering:{desc:this.i18n("Layering"),requires:null,allowEnable:!1,allowDisable:!1},"exclusive-lock":{desc:this.i18n("Exclusive lock"),requires:null,allowEnable:!0,allowDisable:!0},"object-map":{desc:this.i18n("Object map (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},journaling:{desc:this.i18n("Journaling (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},"fast-diff":{desc:this.i18n("Fast diff (interlocked with object-map)"),requires:"object-map",allowEnable:!0,allowDisable:!0,interlockedWith:"object-map",initDisabled:!0}},this.featuresList=this.objToArray(this.features),this.createForm()}objToArray(l){return u.map(l,(l,n)=>Object.assign(l,{key:n}))}createForm(){this.rbdForm=new c.a({parent:new i.i(""),name:new i.i("",{validators:[i.B.required,i.B.pattern(/^[^@/]+?$/)]}),pool:new i.i(null,{validators:[i.B.required]}),namespace:new i.i(null),useDataPool:new i.i(!1),dataPool:new i.i(null),size:new i.i(null,{updateOn:"blur"}),obj_size:new i.i(this.defaultObjectSize),features:new c.a(this.featuresList.reduce((l,n)=>(l[n.key]=new i.i({value:!1,disabled:!!n.initDisabled}),l),{})),stripingUnit:new i.i(null),stripingCount:new i.i(null,{updateOn:"blur"})},this.validateRbdForm(this.formatter))}disableForEdit(){this.rbdForm.get("parent").disable(),this.rbdForm.get("pool").disable(),this.rbdForm.get("namespace").disable(),this.rbdForm.get("useDataPool").disable(),this.rbdForm.get("dataPool").disable(),this.rbdForm.get("obj_size").disable(),this.rbdForm.get("stripingUnit").disable(),this.rbdForm.get("stripingCount").disable(),this.rbdImage.subscribe(l=>{l.image_format===g.a.V1&&(this.rbdForm.get("deep-flatten").disable(),this.rbdForm.get("layering").disable(),this.rbdForm.get("exclusive-lock").disable())})}disableForClone(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}disableForCopy(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}ngOnInit(){let l;this.router.url.startsWith("/block/rbd/edit")?(this.mode=this.rbdFormMode.editing,this.action=this.actionLabels.EDIT,this.disableForEdit()):this.router.url.startsWith("/block/rbd/clone")?(this.mode=this.rbdFormMode.cloning,this.disableForClone(),this.action=this.actionLabels.CLONE):this.router.url.startsWith("/block/rbd/copy")?(this.mode=this.rbdFormMode.copying,this.action=this.actionLabels.COPY,this.disableForCopy()):this.action=this.actionLabels.CREATE,function(l){l.RbdServiceGet="rbdService.get",l.PoolServiceList="poolService.list"}(l||(l={}));const n={};this.mode===this.rbdFormMode.editing||this.mode===this.rbdFormMode.cloning||this.mode===this.rbdFormMode.copying?this.route.params.subscribe(e=>{const t=h.a.fromString(decodeURIComponent(e.image_spec));e.snap&&(this.snapName=decodeURIComponent(e.snap)),n[l.RbdServiceGet]=this.rbdService.get(t)}):this.rbdService.defaultFeatures().subscribe(l=>{this.setFeatures(l)}),this.mode!==this.rbdFormMode.editing&&this.poolPermission.read&&(n[l.PoolServiceList]=this.poolService.list(["pool_name","type","flags_names","application_metadata"])),Object(a.a)(n).subscribe(n=>{if(n[l.PoolServiceList]){const e=[],t=[];for(const i of n[l.PoolServiceList])this.rbdService.isRBDPool(i)&&("replicated"===i.type?(e.push(i),t.push(i)):"erasure"===i.type&&-1!==i.flags_names.indexOf("ec_overwrites")&&t.push(i));if(this.pools=e,this.allPools=e,this.dataPools=t,this.allDataPools=t,1===this.pools.length){const l=this.pools[0].pool_name;this.rbdForm.get("pool").setValue(l),this.onPoolChange(l)}}if(n[l.RbdServiceGet]){const e=n[l.RbdServiceGet];this.setResponse(e,this.snapName),this.rbdImage.next(e)}}),u.each(this.features,l=>{this.rbdForm.get("features").get(l.key).valueChanges.subscribe(n=>this.featureFormUpdate(l.key,n))})}onPoolChange(l){const n=this.allDataPools?this.allDataPools.filter(n=>n.pool_name!==l):[];this.rbdForm.getValue("dataPool")===l&&this.rbdForm.get("dataPool").setValue(null),this.dataPools=n,this.namespaces=null,l in this.namespacesByPoolCache?this.namespaces=this.namespacesByPoolCache[l]:this.rbdService.listNamespaces(l).subscribe(n=>{n=n.map(l=>l.namespace),this.namespacesByPoolCache[l]=n,this.namespaces=n}),this.rbdForm.get("namespace").setValue(null)}onUseDataPoolChange(){this.rbdForm.getValue("useDataPool")||(this.rbdForm.get("dataPool").setValue(null),this.onDataPoolChange(null))}onDataPoolChange(l){const n=this.allPools.filter(n=>n.pool_name!==l);this.rbdForm.getValue("pool")===l&&this.rbdForm.get("pool").setValue(null),this.pools=n}validateRbdForm(l){return n=>{const e=n.get("useDataPool"),t=n.get("dataPool");let i=null;e.value&&null==t.value&&(i={required:!0}),t.setErrors(i);const u=n.get("size"),s=n.get("obj_size"),a=l.toBytes(null!=s.value?s.value:this.defaultObjectSize),o=n.get("stripingCount"),r=null!=o.value?o.value:1;let d=null;null===u.value?d={required:!0}:r*a>l.toBytes(u.value)&&(d={invalidSizeObject:!0}),u.setErrors(d);const c=n.get("stripingUnit");let m=null;null===c.value&&null!==o.value?m={required:!0}:null!==c.value&&l.toBytes(c.value)>a&&(m={invalidStripingUnit:!0}),c.setErrors(m);let p=null;return null===o.value&&null!==c.value?p={required:!0}:r<1&&(p={min:!0}),o.setErrors(p),null}}getDependendChildFeatures(l){return u.filter(this.features,n=>n.requires===l)||[]}deepBoxCheck(l,n){this.getDependendChildFeatures(l).forEach(l=>{const e=this.rbdForm.get(l.key);n?e.enable({emitEvent:!1}):(e.disable({emitEvent:!1}),e.setValue(!1,{emitEvent:!1}),this.deepBoxCheck(l.key,n));const t=this.rbdForm.get("features");this.mode===this.rbdFormMode.editing&&t.get(l.key).enabled&&((-1===this.response.features_name.indexOf(l.key)||l.allowDisable)&&(-1!==this.response.features_name.indexOf(l.key)||l.allowEnable)||t.get(l.key).disable())})}interlockCheck(l,n){const e=this.featuresList.find(n=>n.key===l);if(this.response){const l=null!=e.interlockedWith,n=this.featuresList.find(l=>l.interlockedWith===e.key),t=!!this.response.features_name.find(l=>l===e.key);if(l){if(t!==!!this.response.features_name.find(l=>l===e.interlockedWith))return}else if(n&&!!this.response.features_name.find(l=>l===n.key)!==t)return}n?u.filter(this.features,n=>n.interlockedWith===l).forEach(l=>this.rbdForm.get(l.key).setValue(!0,{emitEvent:!1})):e.interlockedWith&&this.rbdForm.get("features").get(e.interlockedWith).setValue(!1)}featureFormUpdate(l,n){if(n){const n=this.features[l].requires;if(n&&!this.rbdForm.getValue(n))return void this.rbdForm.get(`features.${l}`).setValue(!1)}this.deepBoxCheck(l,n),this.interlockCheck(l,n)}setFeatures(l){const n=this.rbdForm.get("features");u.forIn(this.features,e=>{-1!==l.indexOf(e.key)&&n.get(e.key).setValue(!0),this.featureFormUpdate(e.key,n.get(e.key).value)})}setResponse(l,n){this.response=l;const e=new h.a(l.pool_name,l.namespace,l.name).toString();if(this.mode===this.rbdFormMode.cloning)this.rbdForm.get("parent").setValue(`${e}@${n}`);else if(this.mode===this.rbdFormMode.copying)n?this.rbdForm.get("parent").setValue(`${e}@${n}`):this.rbdForm.get("parent").setValue(`${e}`);else if(l.parent){const n=l.parent;this.rbdForm.get("parent").setValue(`${n.pool_name}/${n.image_name}@${n.snap_name}`)}this.mode===this.rbdFormMode.editing&&this.rbdForm.get("name").setValue(l.name),this.rbdForm.get("pool").setValue(l.pool_name),this.onPoolChange(l.pool_name),this.rbdForm.get("namespace").setValue(l.namespace),l.data_pool&&(this.rbdForm.get("useDataPool").setValue(!0),this.rbdForm.get("dataPool").setValue(l.data_pool)),this.rbdForm.get("size").setValue(this.dimlessBinaryPipe.transform(l.size)),this.rbdForm.get("obj_size").setValue(this.dimlessBinaryPipe.transform(l.obj_size)),this.setFeatures(l.features_name),this.rbdForm.get("stripingUnit").setValue(this.dimlessBinaryPipe.transform(l.stripe_unit)),this.rbdForm.get("stripingCount").setValue(l.stripe_count),this.initializeConfigData.emit({initialData:this.response.configuration,sourceType:m.a.image})}createRequest(){const l=new C;return l.pool_name=this.rbdForm.getValue("pool"),l.namespace=this.rbdForm.getValue("namespace"),l.name=this.rbdForm.getValue("name"),l.size=this.formatter.toBytes(this.rbdForm.getValue("size")),l.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),l.stripe_count=this.rbdForm.getValue("stripingCount"),l.data_pool=this.rbdForm.getValue("dataPool"),l.configuration=this.getDirtyConfigurationValues(),l}createAction(){const l=this.createRequest();return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/create",{pool_name:l.pool_name,namespace:l.namespace,image_name:l.name}),call:this.rbdService.create(l)})}editRequest(){const l=new S;return l.name=this.rbdForm.getValue("name"),l.size=this.formatter.toBytes(this.rbdForm.getValue("size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.configuration=this.getDirtyConfigurationValues(),l}cloneRequest(){const l=new f;return l.child_pool_name=this.rbdForm.getValue("pool"),l.child_namespace=this.rbdForm.getValue("namespace"),l.child_image_name=this.rbdForm.getValue("name"),l.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),l.stripe_count=this.rbdForm.getValue("stripingCount"),l.data_pool=this.rbdForm.getValue("dataPool"),l.configuration=this.getDirtyConfigurationValues(!0,m.a.image),l}editAction(){const l=new h.a(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/edit",{image_spec:l.toString()}),call:this.rbdService.update(l,this.editRequest())})}cloneAction(){const l=this.cloneRequest(),n=new h.a(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/clone",{parent_image_spec:n.toString(),parent_snap_name:this.snapName,child_pool_name:l.child_pool_name,child_namespace:l.child_namespace,child_image_name:l.child_image_name}),call:this.rbdService.cloneSnapshot(n,this.snapName,l)})}copyRequest(){const l=new v;return this.snapName&&(l.snapshot_name=this.snapName),l.dest_pool_name=this.rbdForm.getValue("pool"),l.dest_namespace=this.rbdForm.getValue("namespace"),l.dest_image_name=this.rbdForm.getValue("name"),l.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),l.stripe_count=this.rbdForm.getValue("stripingCount"),l.data_pool=this.rbdForm.getValue("dataPool"),l.configuration=this.getDirtyConfigurationValues(!0,m.a.image),l}copyAction(){const l=this.copyRequest(),n=new h.a(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/copy",{src_image_spec:n.toString(),dest_pool_name:l.dest_pool_name,dest_namespace:l.dest_namespace,dest_image_name:l.dest_image_name}),call:this.rbdService.copy(n,l)})}submit(){this.mode||this.rbdImage.next("create"),this.rbdImage.pipe(Object(o.a)(),Object(r.a)(()=>this.mode===this.rbdFormMode.editing?this.editAction():this.mode===this.rbdFormMode.cloning?this.cloneAction():this.mode===this.rbdFormMode.copying?this.copyAction():this.createAction())).subscribe(()=>{},()=>this.rbdForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/block/rbd"]))}}},PhyI:function(l,n,e){"use strict";e.d(n,"a",(function(){return t})),e.d(n,"b",(function(){return i}));var t=function(l){return l[l.global=0]="global",l[l.pool=1]="pool",l[l.image=2]="image",l}({}),i=function(l){return l[l.bps=0]="bps",l[l.iops=1]="iops",l[l.milliseconds=2]="milliseconds",l}({})},QUzE:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("EEJc"),a=e("ajRT"),o=e("mXUL"),r=e("IZUe"),d=e("SVse"),c=e("gp3X"),m=e("sb0X"),p=e("OcYo"),h=e("EApP"),g=e("GiVz"),f=e("KVJa"),v=e("Z21x"),b=e("sne2"),C=e("SuaG"),S=e("LqlI"),_=e("XED3"),R=e("kn/O");e.d(n,"a",(function(){return F}));var y=t["ɵcrt"]({encapsulation:0,styles:[[".form-group.ng-invalid[_ngcontent-%COMP%]   .invalid-feedback[_ngcontent-%COMP%]{display:block}"]],data:{}});function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.checked)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.c,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.c]),t["ɵdid"](4,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](9,null,["",""]))],(function(l,n){l(n,4,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,7,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""))}),(function(l,n){l(n,1,1,[t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,7).validClass,t["ɵnov"](n,7).invalidClass]),l(n,8,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,9,0,n.context.$implicit.name)}))}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["At least one pool is required."]))],null,null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,73,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](1,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Create Bootstrap Token"])),(l()(),t["ɵeld"](4,0,null,1,69,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,68,"form",[["class","form"],["name","createBootstrapForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,58,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,5,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To create a bootstrap token which can be imported by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, and click  "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Generate"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](18,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](19,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](22,0,null,0,1,"label",[["class","col-form-label required"],["for","siteName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name"])),(l()(),t["ɵeld"](24,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","siteName"],["id","siteName"],["name","siteName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,26)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,26).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,26)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,26)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](25,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](26,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](28,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](30,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](31,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,w)),t["ɵdid"](33,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](34,0,null,null,12,"div",[["class","form-group"],["formGroupName","pools"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](35,212992,null,0,i.m,[[3,i.d],[8,null],[8,null]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.d,null,[i.m]),t["ɵdid"](37,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](38,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](41,0,null,0,1,"label",[["class","col-form-label required"],["for","pools"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pools"])),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](44,278528,null,0,d.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,I)),t["ɵdid"](46,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](47,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](48,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.generate()&&t),t}),c.b,c.a)),t["ɵdid"](49,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Generate"])),(l()(),t["ɵeld"](51,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](52,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](55,0,null,0,2,"label",[["class","col-form-label"],["for","token"]],null,null,null,null,null)),(l()(),t["ɵeld"](56,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Token"])),(l()(),t["ɵeld"](58,0,null,0,7,"textarea",[["class","form-control resize-vertical"],["formControlName","token"],["id","token"],["placeholder","Generated token..."],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,59)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,59).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,59)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,59)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](59,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](61,671744,[[5,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](63,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](64,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵted"](-1,null,["          "])),(l()(),t["ɵeld"](66,0,null,null,3,"button",[["aria-label","Copy to Clipboard"],["cdCopy2ClipboardButton","token"],["class","btn btn-primary mb-3 float-right"],["title","Copy to Clipboard"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,67).onClick()&&i),i}),null,null)),t["ɵdid"](67,81920,null,0,p.a,[t.ElementRef,t.Renderer2,h.j,g.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["ɵeld"](68,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Copy to Clipboard"])),(l()(),t["ɵeld"](70,0,null,null,3,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](71,0,null,null,2,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](72,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,f.b,f.a)),t["ɵdid"](73,49152,null,0,v.a,[d.Location,b.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.createBootstrapForm),l(n,10,0,e.createBootstrapForm),l(n,19,0),l(n,25,0,""),l(n,28,0,"siteName"),l(n,31,0,"siteName"),l(n,33,0,e.createBootstrapForm.showError("siteName",t["ɵnov"](n,7),"required")),l(n,35,0,"pools"),l(n,38,0),l(n,44,0,e.pools),l(n,46,0,e.createBootstrapForm.showError("pools",t["ɵnov"](n,7),"requirePool")),l(n,49,0,e.createBootstrapForm),l(n,52,0),l(n,61,0,"token"),l(n,64,0,"token"),l(n,67,0,"token"),l(n,73,0,"Close",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,18,0,t["ɵnov"](n,19).hasErrors,t["ɵnov"](n,19).hasSuccess),l(n,24,0,t["ɵnov"](n,30).ngClassUntouched,t["ɵnov"](n,30).ngClassTouched,t["ɵnov"](n,30).ngClassPristine,t["ɵnov"](n,30).ngClassDirty,t["ɵnov"](n,30).ngClassValid,t["ɵnov"](n,30).ngClassInvalid,t["ɵnov"](n,30).ngClassPending,t["ɵnov"](n,31).validClass,t["ɵnov"](n,31).invalidClass),l(n,34,0,t["ɵnov"](n,37).ngClassUntouched,t["ɵnov"](n,37).ngClassTouched,t["ɵnov"](n,37).ngClassPristine,t["ɵnov"](n,37).ngClassDirty,t["ɵnov"](n,37).ngClassValid,t["ɵnov"](n,37).ngClassInvalid,t["ɵnov"](n,37).ngClassPending,t["ɵnov"](n,38).hasErrors,t["ɵnov"](n,38).hasSuccess),l(n,51,0,t["ɵnov"](n,52).hasErrors,t["ɵnov"](n,52).hasSuccess),l(n,58,0,t["ɵnov"](n,63).ngClassUntouched,t["ɵnov"](n,63).ngClassTouched,t["ɵnov"](n,63).ngClassPristine,t["ɵnov"](n,63).ngClassDirty,t["ɵnov"](n,63).ngClassValid,t["ɵnov"](n,63).ngClassInvalid,t["ɵnov"](n,63).ngClassPending,t["ɵnov"](n,64).validClass,t["ɵnov"](n,64).invalidClass)}))}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-bootstrap-create-modal",[],null,null,null,E,y)),t["ɵdid"](1,245760,null,0,C.a,[S.a,_.a,R.a],null,null)],(function(l,n){l(n,1,0)}),null)}var F=t["ɵccf"]("cd-bootstrap-create-modal",C.a,N,{},{},[])},RIVN:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("C6Ij"),u=e("AWcq"),s=e("NUGo"),a=e("S7zO"),o=e("SVse");class r{transform(l){return"warning"===l?"badge badge-warning":"error"===l?"badge badge-danger":"success"===l?"badge badge-success":"badge badge-info"}}var d=e("25BL"),c=e("uIqm"),m=e("XED3"),p=e("85J/");class h{constructor(l,n,e){this.rbdMirroringService=l,this.cephShortVersionPipe=n,this.i18n=e}ngOnInit(){this.columns=[{prop:"instance_id",name:this.i18n("Instance"),flexGrow:2},{prop:"id",name:this.i18n("ID"),flexGrow:2},{prop:"server_hostname",name:this.i18n("Hostname"),flexGrow:2},{prop:"version",name:this.i18n("Version"),pipe:this.cephShortVersionPipe,flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(l=>{this.data=l.content_data.daemons})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}var g=e("GiVz"),f=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),t["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵppd"](3,1),(l()(),t["ɵted"](4,null,["",""]))],(function(l,n){var e=t["ɵunv"](n,2,0,l(n,3,0,t["ɵnov"](n.parent,0),n.context.row.health_color));l(n,2,0,e)}),(function(l,n){l(n,4,0,n.context.value)}))}function b(l){return t["ɵvid"](0,[t["ɵpid"](0,r,[]),t["ɵqud"](402653184,1,{healthTmpl:0}),(l()(),t["ɵeld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](3,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["ɵand"](0,[[1,2],["healthTmpl",2]],null,0,null,v))],(function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",-1)}),null)}var C=e("HDdC"),S=e("0+/T"),_=e("oxzT"),R=e("vCyI"),y=e("kvvV"),w=e("aexS"),k=e("kn/O"),I=e("aa9H"),E=e("L4us");class N{constructor(l,n,e,t,i){this.authStorageService=l,this.rbdMirroringService=n,this.modalService=e,this.taskWrapper=t,this.i18n=i,this.selection=new R.a,this.data=[],this.permission=this.authStorageService.getPermissions().rbdMirroring;const u={permission:"update",icon:_.a.edit,click:()=>this.editModeModal(),name:this.i18n("Edit Mode"),canBePrimary:()=>!0},s={permission:"create",icon:_.a.add,name:this.i18n("Add Peer"),click:()=>this.editPeersModal("add"),disable:()=>!this.selection.first()||"disabled"===this.selection.first().mirror_mode,visible:()=>!this.getPeerUUID(),canBePrimary:()=>!1},a={permission:"update",icon:_.a.exchange,name:this.i18n("Edit Peer"),click:()=>this.editPeersModal("edit"),visible:()=>!!this.getPeerUUID()},o={permission:"delete",icon:_.a.destroy,name:this.i18n("Delete Peer"),click:()=>this.deletePeersModal(),visible:()=>!!this.getPeerUUID()};this.tableActions=[u,s,a,o]}ngOnInit(){this.columns=[{prop:"name",name:this.i18n("Name"),flexGrow:2},{prop:"mirror_mode",name:this.i18n("Mode"),flexGrow:2},{prop:"leader_id",name:this.i18n("Leader"),flexGrow:2},{prop:"image_local_count",name:this.i18n("# Local"),flexGrow:2},{prop:"image_remote_count",name:this.i18n("# Remote"),flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(l=>{this.data=l.content_data.pools})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}editModeModal(){const l={poolName:this.selection.first().name};this.modalRef=this.modalService.show(I.a,{initialState:l})}editPeersModal(l){const n={poolName:this.selection.first().name,mode:l};"edit"===l&&(n.peerUUID=this.getPeerUUID()),this.modalRef=this.modalService.show(E.a,{initialState:n})}deletePeersModal(){const l=this.selection.first().name,n=this.getPeerUUID();this.modalRef=this.modalService.show(S.a,{initialState:{itemDescription:this.i18n("mirror peer"),itemNames:[`${l} (${n})`],submitActionObservable:()=>new C.a(e=>{this.taskWrapper.wrapTaskAroundCall({task:new y.a("rbd/mirroring/peer/delete",{pool_name:l}),call:this.rbdMirroringService.deletePeer(l,n)}).subscribe(void 0,l=>e.error(l),()=>{this.rbdMirroringService.refresh(),e.complete()})})}})}getPeerUUID(){const l=this.selection.first(),n=this.data.find(n=>l&&l.name===n.name);if(n&&n.peer_uuids)return n.peer_uuids[0]}updateSelection(l){this.selection=l}}var F=e("LqlI"),T=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),t["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵppd"](3,1),(l()(),t["ɵted"](4,null,["",""]))],(function(l,n){var e=t["ɵunv"](n,2,0,l(n,3,0,t["ɵnov"](n.parent,0),n.context.row.health_color));l(n,2,0,e)}),(function(l,n){l(n,4,0,n.context.value)}))}function D(l){return t["ɵvid"](0,[t["ɵpid"](0,r,[]),t["ɵqud"](402653184,1,{healthTmpl:0}),(l()(),t["ɵeld"](2,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],(function(l,n,e){var t=!0,i=l.component;return"fetchData"===n&&(t=!1!==i.refresh()&&t),"updateSelection"===n&&(t=!1!==i.updateSelection(e)&&t),t}),d.b,d.a)),t["ɵdid"](3,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),t["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,s.b,s.a)),t["ɵdid"](5,114688,null,0,a.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["ɵand"](0,[[1,2],["healthTmpl",2]],null,0,null,V))],(function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",-1,"name","true","single"),l(n,5,0,e.permission,e.selection,e.tableActions)}),null)}var P=e("7qid"),x=e("38Bd"),q=e("pKUh"),B=e("2ZVE");class O{constructor(l,n){this.rbdMirroringService=l,this.i18n=n,this.image_error={data:[],columns:{}},this.image_syncing={data:[],columns:{}},this.image_ready={data:[],columns:{}}}ngOnInit(){this.image_error.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Issue"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.image_syncing.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"progress",name:this.i18n("Progress"),cellTemplate:this.progressTmpl,flexGrow:2},{prop:"state",name:this.i18n("State"),cellTemplate:this.syncTmpl,flexGrow:1}],this.image_ready.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Description"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(l=>{this.image_error.data=l.content_data.image_error,this.image_syncing.data=l.content_data.image_syncing,this.image_ready.data=l.content_data.image_ready})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}var M=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function A(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](1,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(l,n){var e=n.component;l(n,1,0,e.image_error.data,e.image_error.columns,"flex",-1)}),null)}function L(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](1,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(l,n){var e=n.component;l(n,1,0,e.image_syncing.data,e.image_syncing.columns,"flex",-1)}),null)}function j(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](1,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(l,n){var e=n.component;l(n,1,0,e.image_ready.data,e.image_ready.columns,"flex",-1)}),null)}function $(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),t["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵppd"](3,1),(l()(),t["ɵted"](4,null,["",""]))],(function(l,n){var e=t["ɵunv"](n,2,0,l(n,3,0,t["ɵnov"](n.parent,0),n.context.row.state_color));l(n,2,0,e)}),(function(l,n){l(n,4,0,n.context.value)}))}function G(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-info"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Syncing"]))],null,null)}function U(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"progressbar",[["type","info"]],[[1,"max",0],[2,"progress",null]],null,null,P.b,P.a)),t["ɵdid"](1,49152,null,0,x.b,[x.c],{type:[0,"type"],value:[1,"value"]},null)],(function(l,n){l(n,1,0,"info",n.context.value)}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).max,t["ɵnov"](n,1).addClass)}))}function X(l){return t["ɵvid"](0,[t["ɵpid"](0,r,[]),t["ɵqud"](402653184,1,{stateTmpl:0}),t["ɵqud"](402653184,2,{syncTmpl:0}),t["ɵqud"](402653184,3,{progressTmpl:0}),(l()(),t["ɵeld"](4,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,q.b,q.a)),t["ɵdid"](5,180224,[["tabset",4]],0,B.e,[B.f,t.Renderer2,t.ElementRef],null,null),(l()(),t["ɵeld"](6,0,null,0,3,"tab",[["heading","Issues"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](7,212992,null,0,B.b,[B.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,A)),t["ɵdid"](9,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](10,0,null,0,3,"tab",[["heading","Syncing"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](11,212992,null,0,B.b,[B.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,L)),t["ɵdid"](13,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](14,0,null,0,3,"tab",[["heading","Ready"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](15,212992,null,0,B.b,[B.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,j)),t["ɵdid"](17,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,[[1,2],["stateTmpl",2]],null,0,null,$)),(l()(),t["ɵand"](0,[[2,2],["syncTmpl",2]],null,0,null,G)),(l()(),t["ɵand"](0,[[3,2],["progressTmpl",2]],null,0,null,U))],(function(l,n){l(n,7,0,"Issues"),l(n,9,0,null==t["ɵnov"](n,5).tabs[0]?null:t["ɵnov"](n,5).tabs[0].active),l(n,11,0,"Syncing"),l(n,13,0,null==t["ɵnov"](n,5).tabs[1]?null:t["ɵnov"](n,5).tabs[1].active),l(n,15,0,"Ready"),l(n,17,0,null==t["ɵnov"](n,5).tabs[2]?null:t["ɵnov"](n,5).tabs[2].active)}),(function(l,n){l(n,4,0,t["ɵnov"](n,5).clazz),l(n,6,0,t["ɵnov"](n,7).id,t["ɵnov"](n,7).active,t["ɵnov"](n,7).addClass,t["ɵnov"](n,7).role,t["ɵnov"](n,7).ariaLabelledby),l(n,10,0,t["ɵnov"](n,11).id,t["ɵnov"](n,11).active,t["ɵnov"](n,11).addClass,t["ɵnov"](n,11).role,t["ɵnov"](n,11).ariaLabelledby),l(n,14,0,t["ɵnov"](n,15).id,t["ɵnov"](n,15).active,t["ɵnov"](n,15).addClass,t["ɵnov"](n,15).role,t["ɵnov"](n,15).ariaLabelledby)}))}var z=e("cxJu");e.d(n,"a",(function(){return K}));var W=t["ɵcrt"]({encapsulation:0,styles:[["cd-mirroring cd-table-actions.float-right ul{right:0!important;left:auto!important}"]],data:{}});function J(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,i.b,i.a)),t["ɵdid"](1,114688,null,0,u.a,[],{status:[0,"status"]},null),(l()(),t["ɵeld"](2,0,null,null,7,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](3,0,null,null,6,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](4,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name:"])),(l()(),t["ɵted"](7,null,[" ",""])),(l()(),t["ɵeld"](8,0,null,null,1,"cd-table-actions",[["class","table-actions float-right"]],null,null,null,s.b,s.a)),t["ɵdid"](9,114688,null,0,a.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["ɵeld"](10,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](11,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Daemons"])),(l()(),t["ɵeld"](14,0,null,null,1,"cd-mirroring-daemons",[],null,null,null,b,f)),t["ɵdid"](15,245760,null,0,h,[m.a,p.a,g.a],null,null),(l()(),t["ɵeld"](16,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["ɵeld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pools"])),(l()(),t["ɵeld"](19,0,null,null,1,"cd-mirroring-pools",[],null,null,null,D,T)),t["ɵdid"](20,245760,null,0,N,[w.a,m.a,F.b,k.a,g.a],null,null),(l()(),t["ɵeld"](21,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](22,0,null,null,4,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](23,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Images"])),(l()(),t["ɵeld"](25,0,null,null,1,"cd-mirroring-images",[],null,null,null,X,M)),t["ɵdid"](26,245760,null,0,O,[m.a,g.a],null,null)],(function(l,n){var e=n.component;l(n,1,0,e.status),l(n,9,0,e.permission,e.selection,e.tableActions),l(n,15,0),l(n,20,0),l(n,26,0)}),(function(l,n){l(n,7,0,n.component.siteName)}))}function Y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-mirroring",[],null,null,null,J,W)),t["ɵdid"](1,245760,null,0,z.a,[w.a,m.a,F.b,g.a],null,null)],(function(l,n){l(n,1,0)}),null)}var K=t["ɵccf"]("cd-mirroring",z.a,Y,{},{},[])},Sofw:function(l,n,e){"use strict";e.d(n,"a",(function(){return a}));var t=e("s7LF"),i=(e("my5R"),e("mtw6")),u=e("QFaf"),s=e("1Ni5");e("aexS"),e("9nlD");class a{constructor(l,n,e,t,i){this.authStorageService=l,this.bsModalRef=n,this.iscsiService=e,this.notificationService=t,this.i18n=i,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.permission=this.authStorageService.getPermissions().iscsi}ngOnInit(){this.hasPermission=this.permission.update,this.createForm(),this.iscsiService.getDiscovery().subscribe(l=>{this.discoveryForm.patchValue(l)})}createForm(){this.discoveryForm=new u.a({user:new t.i({value:"",disabled:!this.hasPermission}),password:new t.i({value:"",disabled:!this.hasPermission}),mutual_user:new t.i({value:"",disabled:!this.hasPermission}),mutual_password:new t.i({value:"",disabled:!this.hasPermission})}),s.a.validateIf(this.discoveryForm.get("user"),()=>this.discoveryForm.getValue("password")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),s.a.validateIf(this.discoveryForm.get("password"),()=>this.discoveryForm.getValue("user")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),s.a.validateIf(this.discoveryForm.get("mutual_user"),()=>this.discoveryForm.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_password")]),s.a.validateIf(this.discoveryForm.get("mutual_password"),()=>this.discoveryForm.getValue("mutual_user"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user")])}submitAction(){this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(()=>{this.notificationService.show(i.a.success,this.i18n("Updated discovery authentication")),this.bsModalRef.hide()},()=>{this.discoveryForm.setErrors({cdSubmitButton:!0})})}}},SuaG:function(l,n,e){"use strict";e.d(n,"a",(function(){return c}));var t=e("s7LF"),i=e("LvDl"),u=e("GyhO"),s=e("cp0P"),a=e("vkgz"),o=e("NJ9Y"),r=(e("XED3"),e("QFaf")),d=e("kvvV");e("kn/O");class c{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.pools=[],this.createForm()}createForm(){this.createBootstrapForm=new r.a({siteName:new t.i("",{validators:[t.B.required]}),pools:new t.k({},{validators:[this.validatePools()]}),token:new t.i("",{})})}ngOnInit(){this.createBootstrapForm.get("siteName").setValue(this.siteName),this.rbdMirroringService.getSiteName().subscribe(l=>{this.createBootstrapForm.get("siteName").setValue(l.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(l=>{this.pools=l.content_data.pools.reduce((l,n)=>(l.push({name:n.name,mirror_mode:n.mirror_mode}),l),[]);const n=this.createBootstrapForm.get("pools");i.each(this.pools,l=>{const e=l.name,i="disabled"===l.mirror_mode,u=n.controls[e];u?i&&u.disabled?u.enable():!i&&u.enabled&&(u.disable(),u.setValue(!0)):n.addControl(e,new t.i({value:!i,disabled:!i}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return l=>{let n=0;return i.each(l.controls,l=>{!0===l.value&&++n}),n>0?null:{requirePool:!0}}}generate(){this.createBootstrapForm.get("token").setValue("");let l="";const n=[],e=this.createBootstrapForm.get("pools");i.each(e.controls,(e,t)=>{!0===e.value&&(l=t,e.disabled||n.push(t))});const t={mirror_mode:"image"},r=Object(u.a)(this.rbdMirroringService.setSiteName(this.createBootstrapForm.getValue("siteName")),Object(s.a)(n.map(l=>this.rbdMirroringService.updatePool(l,t))),this.rbdMirroringService.createBootstrapToken(l).pipe(Object(a.a)(l=>this.createBootstrapForm.get("token").setValue(l.token)))).pipe(Object(o.a)()),c=()=>{this.rbdMirroringService.refresh(),this.createBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new d.a("rbd/mirroring/bootstrap/create",{}),call:r}).subscribe(void 0,c,c)}}},VBM6:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("SVse"),a=e("s7LF"),o=e("+gVj"),r=e("mXUL"),d=e("IZUe"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("L4us"),v=e("LqlI"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return P}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Edit"]))],null,null)}function R(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Add"]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Edit"]))],null,null)}function w(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Add"]))],null,null)}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The cluster name is not valid."]))],null,null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The CephX ID is not valid."]))],null,null)}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The monitory address is not valid."]))],null,null)}function T(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["CephX key must be base64 encoded."]))],null,null)}function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,106,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,7,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](3,0,null,null,5,null,null,null,null,null,null,null)),t["ɵdid"](4,16384,null,0,s.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,_)),t["ɵdid"](6,278528,null,0,s.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](8,16384,null,0,s.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],null,null),(l()(),t["ɵted"](-1,null,[" pool mirror peer"])),(l()(),t["ɵeld"](10,0,null,1,96,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](11,0,null,null,95,"form",[["class","form"],["name","editPeerForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,13).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,13).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,16).onSubmit()&&i),i}),null,null)),t["ɵdid"](12,16384,null,0,a.G,[],null,null),t["ɵdid"](13,540672,[["formDir",4]],0,a.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,a.d,null,[a.l]),t["ɵdid"](15,16384,null,0,a.s,[[4,a.d]],null,null),t["ɵdid"](16,16384,null,0,o.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](17,0,null,null,82,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](18,0,null,null,14,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](19,0,null,null,13,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](20,0,null,null,5,null,null,null,null,null,null,null)),t["ɵdid"](21,16384,null,0,s.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,y)),t["ɵdid"](23,278528,null,0,s.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](25,16384,null,0,s.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],null,null),(l()(),t["ɵted"](-1,null,[" the pool mirror peer attributes for pool "])),(l()(),t["ɵeld"](27,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](28,null,["",""])),(l()(),t["ɵted"](-1,null,[" and click "])),(l()(),t["ɵeld"](30,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Submit"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](33,0,null,null,17,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](34,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](37,0,null,0,1,"label",[["class","col-form-label required"],["for","clusterName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Cluster Name"])),(l()(),t["ɵeld"](39,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","clusterName"],["id","clusterName"],["name","clusterName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,41)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,41).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,41)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,41)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](40,4210688,null,0,d.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](41,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](43,671744,[[1,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](45,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](46,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](48,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,I)),t["ɵdid"](50,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](51,0,null,null,16,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](52,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](55,0,null,0,1,"label",[["class","col-form-label required"],["for","clientID"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["CephX ID"])),(l()(),t["ɵeld"](57,0,null,0,6,"input",[["class","form-control"],["formControlName","clientID"],["id","clientID"],["name","clientID"],["placeholder","CephX ID..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,58)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,58).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,58)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,58)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](58,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](60,671744,[[3,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](62,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](63,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,E)),t["ɵdid"](65,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,N)),t["ɵdid"](67,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](68,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](69,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](72,0,null,0,2,"label",[["class","col-form-label"],["for","monAddr"]],null,null,null,null,null)),(l()(),t["ɵeld"](73,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Monitor Addresses"])),(l()(),t["ɵeld"](75,0,null,0,6,"input",[["class","form-control"],["formControlName","monAddr"],["id","monAddr"],["name","monAddr"],["placeholder","Comma-delimited addresses..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,76)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,76).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,76)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,76)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](76,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](78,671744,[[5,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](80,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](81,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,F)),t["ɵdid"](83,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](84,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](85,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](88,0,null,0,2,"label",[["class","col-form-label"],["for","key"]],null,null,null,null,null)),(l()(),t["ɵeld"](89,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["CephX Key"])),(l()(),t["ɵeld"](91,0,null,0,6,"input",[["class","form-control"],["formControlName","key"],["id","key"],["name","key"],["placeholder","Base64-encoded key..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,92)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,92).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,92)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,92)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](92,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](94,671744,[[7,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](96,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](97,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,T)),t["ɵdid"](99,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](100,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](101,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](102,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t}),c.b,c.a)),t["ɵdid"](103,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Submit"])),(l()(),t["ɵeld"](105,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,p.b,p.a)),t["ɵdid"](106,49152,null,0,h.a,[s.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,4,0,e.mode),l(n,6,0,"edit"),l(n,13,0,e.editPeerForm),l(n,16,0,e.editPeerForm),l(n,21,0,e.mode),l(n,23,0,"edit"),l(n,34,0),l(n,40,0,""),l(n,43,0,"clusterName"),l(n,46,0,"clusterName"),l(n,48,0,e.editPeerForm.showError("clusterName",t["ɵnov"](n,13),"required")),l(n,50,0,e.editPeerForm.showError("clusterName",t["ɵnov"](n,13),"invalidClusterName")),l(n,52,0),l(n,60,0,"clientID"),l(n,63,0,"clientID"),l(n,65,0,e.editPeerForm.showError("clientID",t["ɵnov"](n,13),"required")),l(n,67,0,e.editPeerForm.showError("clientID",t["ɵnov"](n,13),"invalidClientID")),l(n,69,0),l(n,78,0,"monAddr"),l(n,81,0,"monAddr"),l(n,83,0,e.editPeerForm.showError("monAddr",t["ɵnov"](n,13),"invalidMonAddr")),l(n,85,0),l(n,94,0,"key"),l(n,97,0,"key"),l(n,99,0,e.editPeerForm.showError("key",t["ɵnov"](n,13),"invalidKey")),l(n,103,0,e.editPeerForm),l(n,106,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,11,0,t["ɵnov"](n,15).ngClassUntouched,t["ɵnov"](n,15).ngClassTouched,t["ɵnov"](n,15).ngClassPristine,t["ɵnov"](n,15).ngClassDirty,t["ɵnov"](n,15).ngClassValid,t["ɵnov"](n,15).ngClassInvalid,t["ɵnov"](n,15).ngClassPending),l(n,28,0,e.poolName),l(n,33,0,t["ɵnov"](n,34).hasErrors,t["ɵnov"](n,34).hasSuccess),l(n,39,0,t["ɵnov"](n,45).ngClassUntouched,t["ɵnov"](n,45).ngClassTouched,t["ɵnov"](n,45).ngClassPristine,t["ɵnov"](n,45).ngClassDirty,t["ɵnov"](n,45).ngClassValid,t["ɵnov"](n,45).ngClassInvalid,t["ɵnov"](n,45).ngClassPending,t["ɵnov"](n,46).validClass,t["ɵnov"](n,46).invalidClass),l(n,51,0,t["ɵnov"](n,52).hasErrors,t["ɵnov"](n,52).hasSuccess),l(n,57,0,t["ɵnov"](n,62).ngClassUntouched,t["ɵnov"](n,62).ngClassTouched,t["ɵnov"](n,62).ngClassPristine,t["ɵnov"](n,62).ngClassDirty,t["ɵnov"](n,62).ngClassValid,t["ɵnov"](n,62).ngClassInvalid,t["ɵnov"](n,62).ngClassPending,t["ɵnov"](n,63).validClass,t["ɵnov"](n,63).invalidClass),l(n,68,0,t["ɵnov"](n,69).hasErrors,t["ɵnov"](n,69).hasSuccess),l(n,75,0,t["ɵnov"](n,80).ngClassUntouched,t["ɵnov"](n,80).ngClassTouched,t["ɵnov"](n,80).ngClassPristine,t["ɵnov"](n,80).ngClassDirty,t["ɵnov"](n,80).ngClassValid,t["ɵnov"](n,80).ngClassInvalid,t["ɵnov"](n,80).ngClassPending,t["ɵnov"](n,81).validClass,t["ɵnov"](n,81).invalidClass),l(n,84,0,t["ɵnov"](n,85).hasErrors,t["ɵnov"](n,85).hasSuccess),l(n,91,0,t["ɵnov"](n,96).ngClassUntouched,t["ɵnov"](n,96).ngClassTouched,t["ɵnov"](n,96).ngClassPristine,t["ɵnov"](n,96).ngClassDirty,t["ɵnov"](n,96).ngClassValid,t["ɵnov"](n,96).ngClassInvalid,t["ɵnov"](n,96).ngClassPending,t["ɵnov"](n,97).validClass,t["ɵnov"](n,97).invalidClass)}))}function D(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-pool-edit-peer-modal",[],null,null,null,V,S)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var P=t["ɵccf"]("cd-pool-edit-peer-modal",f.a,D,{},{},[])},WkyA:function(l,n,e){"use strict";e.d(n,"a",(function(){return t}));class t{constructor(){}}},WxU5:function(l,n,e){"use strict";e.d(n,"a",(function(){return i})),e("Ekvf"),e("F83c"),e("2EZI");var t=e("kvvV");e("aexS"),e("kn/O");class i{constructor(l,n,e,t,i,u){this.authStorageService=l,this.rbdService=n,this.modalRef=e,this.fb=t,this.poolService=i,this.taskWrapper=u,this.poolPermission=this.authStorageService.getPermissions().pool}createForm(){this.purgeForm=this.fb.group({poolName:""})}ngOnInit(){this.poolPermission.read&&this.poolService.list(["pool_name","application_metadata"]).then(l=>{this.pools=l.filter(l=>l.application_metadata.includes("rbd")).map(l=>l.pool_name)}),this.createForm()}purge(){const l=this.purgeForm.getValue("poolName")||"";this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/purge",{pool_name:l}),call:this.rbdService.purgeTrash(l)}).subscribe(void 0,()=>{this.purgeForm.setErrors({cdSubmitButton:!0})},()=>{this.modalRef.hide()})}}},XED3:function(l,n,e){"use strict";e.d(n,"a",(function(){return c}));var t=e("mrSG"),i=e("IheW"),u=e("2Vo4"),s=e("pLZG"),a=e("xTzq"),o=e("lOp/"),r=e("8Y7J"),d=e("pL04");let c=(()=>{let l=class{constructor(l,n){this.http=l,this.timerService=n,this.REFRESH_INTERVAL=3e4,this.summaryDataSource=new u.a(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/block/mirroring/summary")}retrieveSummaryObserver(){return l=>{this.summaryDataSource.next(l)}}subscribeSummary(l,n){return this.summaryData$.pipe(Object(s.a)(l=>!!l)).subscribe(l,n)}getPool(l){return this.http.get(`api/block/mirroring/pool/${l}`)}updatePool(l,n){return this.http.put(`api/block/mirroring/pool/${l}`,n,{observe:"response"})}getSiteName(){return this.http.get("api/block/mirroring/site_name")}setSiteName(l){return this.http.put("api/block/mirroring/site_name",{site_name:l},{observe:"response"})}createBootstrapToken(l){return this.http.post(`api/block/mirroring/pool/${l}/bootstrap/token`,{})}importBootstrapToken(l,n,e){return this.http.post(`api/block/mirroring/pool/${l}/bootstrap/peer`,{direction:n,token:e},{observe:"response"})}getPeer(l,n){return this.http.get(`api/block/mirroring/pool/${l}/peer/${n}`)}addPeer(l,n){return this.http.post(`api/block/mirroring/pool/${l}/peer`,n,{observe:"response"})}updatePeer(l,n,e){return this.http.put(`api/block/mirroring/pool/${l}/peer/${n}`,e,{observe:"response"})}deletePeer(l,n){return this.http.delete(`api/block/mirroring/pool/${l}/peer/${n}`,{observe:"response"})}};return l.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new l(r["ɵɵinject"](i.c),r["ɵɵinject"](o.a))},token:l,providedIn:d.a}),t.__decorate([t.__param(0,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[String]),t.__metadata("design:returntype",void 0)],l.prototype,"setSiteName",null),t.__decorate([t.__param(1,a.b),t.__param(2,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[String,String,String]),t.__metadata("design:returntype",void 0)],l.prototype,"importBootstrapToken",null),l=t.__decorate([a.a,t.__metadata("design:paramtypes",[i.c,o.a])],l),l})()},Z4cD:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("s7LF"),i=e("LvDl"),u=(e("my5R"),e("QFaf"));class s{constructor(l,n){this.modalRef=l,this.iscsiService=n}ngOnInit(){const l={backstore:new t.i(this.imagesSettings[this.image].backstore),lun:new t.i(this.imagesSettings[this.image].lun),wwn:new t.i(this.imagesSettings[this.image].wwn)};i.forEach(this.backstores,n=>{const e=this.imagesSettings[this.image][n]||{};i.forIn(this.disk_default_controls[n],(n,i)=>{l[i]=new t.i(e[i])})}),this.settingsForm=new u.a(l)}getDiskControlLimits(l,n){return this.disk_controls_limits?this.disk_controls_limits[l][n]:{type:"int"}}save(){const l=this.settingsForm.controls.backstore.value,n=this.settingsForm.controls.lun.value,e=this.settingsForm.controls.wwn.value,t={};i.forIn(this.settingsForm.controls,(n,e)=>{""!==n.value&&null!==n.value&&e in this.disk_default_controls[this.settingsForm.value.backstore]&&(t[e]=n.value,i.forEach(this.backstores,t=>{t!==l&&e in(this.imagesSettings[this.image][t]||{})&&(this.imagesSettings[this.image][t][e]=n.value)}))}),this.imagesSettings[this.image].backstore=l,this.imagesSettings[this.image].lun=n,this.imagesSettings[this.image].wwn=e,this.imagesSettings[this.image][l]=t,this.imagesSettings=Object.assign({},this.imagesSettings),this.control.updateValueAndValidity({emitEvent:!1}),this.modalRef.hide()}}},Z5tW:function(l,n,e){"use strict";e.d(n,"a",(function(){return d}));var t=e("LvDl"),i=e("cp0P"),u=(e("Ekvf"),e("F83c"),e("0+/T")),s=(e("sne2"),e("oxzT")),a=e("mtw6"),o=e("vCyI"),r=(e("aexS"),e("9nlD"),e("daK0"));class d{constructor(l,n,e,i,u,a,r){this.authStorageService=l,this.rbdService=n,this.poolService=e,this.modalService=i,this.notificationService=u,this.i18n=a,this.actionLabels=r,this.selection=new o.a,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"create",icon:s.a.add,click:()=>this.createModal(),name:this.actionLabels.CREATE},{permission:"delete",icon:s.a.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE,disable:()=>!this.selection.first()||!t.isUndefined(this.getDeleteDisableDesc()),disableDesc:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:this.i18n("Namespace"),prop:"namespace",flexGrow:1},{name:this.i18n("Pool"),prop:"pool",flexGrow:1},{name:this.i18n("Total images"),prop:"num_images",flexGrow:1}],this.refresh()}refresh(){this.poolService.list(["pool_name","type","application_metadata"]).then(l=>{l=l.filter(l=>this.rbdService.isRBDPool(l)&&"replicated"===l.type);const n=[];l.forEach(l=>{n.push(this.rbdService.listNamespaces(l.pool_name))}),n.length>0?Object(i.a)(n).subscribe(n=>{const e=[];for(let t=0;t<n.length;t++){const i=l[t].pool_name;n[t].forEach(l=>{e.push({id:`${i}/${l.namespace}`,pool:i,namespace:l.namespace,num_images:l.num_images})})}this.namespaces=e}):this.namespaces=[]})}updateSelection(l){this.selection=l}createModal(){this.modalRef=this.modalService.show(r.a),this.modalRef.content.onSubmit.subscribe(()=>{this.refresh()})}deleteModal(){const l=this.selection.first().pool,n=this.selection.first().namespace;this.modalRef=this.modalService.show(u.a,{initialState:{itemDescription:"Namespace",itemNames:[`${l}/${n}`],submitAction:()=>this.rbdService.deleteNamespace(l,n).subscribe(()=>{this.notificationService.show(a.a.success,this.i18n("Deleted namespace '{{pool}}/{{namespace}}'",{pool:l,namespace:n})),this.modalRef.hide(),this.refresh()},()=>{this.modalRef.content.stopLoadingSpinner()})}})}getDeleteDisableDesc(){const l=this.selection.first();if(l&&l.num_images>0)return this.i18n("Namespace contains images")}}},a6qe:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("s7LF"),i=e("LvDl"),u=(e("my5R"),e("QFaf"));class s{constructor(l,n){this.modalRef=l,this.iscsiService=n}ngOnInit(){const l={};i.forIn(this.target_default_controls,(n,e)=>{l[e]=new t.i(this.target_controls.value[e])}),this.settingsForm=new u.a(l)}save(){const l={};i.forIn(this.settingsForm.controls,(n,e)=>{""!==n.value&&null!==n.value&&(l[e]=n.value)}),this.target_controls.setValue(l),this.modalRef.hide()}getTargetControlLimits(l){return this.target_controls_limits?this.target_controls_limits[l]:["Yes","No"].includes(this.target_default_controls[l])?{type:"bool"}:{type:"int"}}}},aAWM:function(l,n,e){"use strict";e("uIqm");var t=e("PhyI");class i{transform(l){return{0:"global",1:"pool",2:"image"}[l]}}e("aXbf"),e("o8EM"),e.d(n,"a",(function(){return u}));class u{constructor(l,n,e){this.formatterService=l,this.rbdConfigurationService=n,this.i18n=e,this.sourceField=t.a,this.typeField=t.b}ngOnInit(){this.poolConfigurationColumns=[{prop:"displayName",name:this.i18n("Name")},{prop:"description",name:this.i18n("Description")},{prop:"name",name:this.i18n("Key")},{prop:"source",name:this.i18n("Source"),cellTemplate:this.configurationSourceTpl,pipe:new i},{prop:"value",name:this.i18n("Value"),cellTemplate:this.configurationValueTpl}]}ngOnChanges(){this.data&&(this.data=this.data.filter(l=>this.rbdConfigurationService.getOptionFields().map(l=>l.name).includes(l.name)))}}},aa9H:function(l,n,e){"use strict";var t=e("s7LF"),i=(e("XED3"),e("QFaf")),u=e("kvvV");e("kn/O");class s{}e.d(n,"a",(function(){return a}));class a{constructor(l,n,e,t){this.modalRef=l,this.i18n=n,this.rbdMirroringService=e,this.taskWrapper=t,this.bsConfig={containerClass:"theme-default"},this.peerExists=!1,this.mirrorModes=[{id:"disabled",name:this.i18n("Disabled")},{id:"pool",name:this.i18n("Pool")},{id:"image",name:this.i18n("Image")}],this.createForm()}createForm(){this.editModeForm=new i.a({mirrorMode:new t.i("",{validators:[t.B.required,this.validateMode.bind(this)]})})}ngOnInit(){this.pattern=`${this.poolName}`,this.rbdMirroringService.getPool(this.poolName).subscribe(l=>{this.setResponse(l)}),this.subs=this.rbdMirroringService.subscribeSummary(l=>{this.peerExists=!1;const n=l.content_data.pools.find(l=>this.poolName===l.name);this.peerExists=n&&n.peer_uuids.length})}ngOnDestroy(){this.subs.unsubscribe()}validateMode(l){return"disabled"===l.value&&this.peerExists?{cannotDisable:{value:l.value}}:null}setResponse(l){this.editModeForm.get("mirrorMode").setValue(l.mirror_mode)}update(){const l=new s;l.mirror_mode=this.editModeForm.getValue("mirrorMode"),this.taskWrapper.wrapTaskAroundCall({task:new u.a("rbd/mirroring/pool/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePool(this.poolName,l)}).subscribe(void 0,()=>this.editModeForm.setErrors({cdSubmitButton:!0}),()=>{this.rbdMirroringService.refresh(),this.modalRef.hide()})}}},bUo2:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("gp3X"),u=e("sb0X"),s=e("EEJc"),a=e("ajRT"),o=e("s7LF"),r=e("+gVj"),d=e("mXUL"),c=e("SVse"),m=e("D4zM"),p=e("OcYo"),h=e("EApP"),g=e("GiVz"),f=e("KVJa"),v=e("Z21x"),b=e("sne2"),C=e("Sofw"),S=e("aexS"),_=e("LqlI"),R=e("my5R"),y=e("9nlD");e.d(n,"a",(function(){return B}));var w=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function T(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function D(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function P(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submitAction()&&t),t}),i.b,i.a)),t["ɵdid"](1,114688,null,0,u.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Submit"]))],(function(l,n){l(n,1,0,n.component.discoveryForm)}),null)}function x(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,102,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](1,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Discovery Authentication"])),(l()(),t["ɵeld"](4,0,null,1,98,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,97,"form",[["name","discoveryForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,o.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,o.d,null,[o.l]),t["ɵdid"](9,16384,null,0,o.s,[[4,o.d]],null,null),t["ɵdid"](10,16384,null,0,r.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,85,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](13,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["User"])),(l()(),t["ɵeld"](18,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](19,0,null,null,6,"input",[["autocomplete","off"],["class","form-control"],["formControlName","user"],["id","user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,20)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,20).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,20)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,20)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](20,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](22,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](24,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](25,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,k)),t["ɵdid"](27,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,I)),t["ɵdid"](29,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](30,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](31,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](34,0,null,0,1,"label",[["class","cd-col-form-label"],["for","password"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Password"])),(l()(),t["ɵeld"](36,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](37,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["ɵeld"](38,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,39)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,39).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,39)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,39)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](39,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](41,671744,[[3,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](43,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](44,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](45,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),t["ɵeld"](46,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,47).onClick()&&i),i}),null,null)),t["ɵdid"](47,81920,null,0,m.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["ɵeld"](48,0,null,null,1,"button",[["cdCopy2ClipboardButton","password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,49).onClick()&&i),i}),null,null)),t["ɵdid"](49,81920,null,0,p.a,[t.ElementRef,t.Renderer2,h.j,g.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,E)),t["ɵdid"](51,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,N)),t["ɵdid"](53,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](54,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](55,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](58,0,null,0,2,"label",[["class","cd-col-form-label"],["for","mutual_user"]],null,null,null,null,null)),(l()(),t["ɵeld"](59,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Mutual User"])),(l()(),t["ɵeld"](61,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](62,0,null,null,6,"input",[["autocomplete","off"],["class","form-control"],["formControlName","mutual_user"],["id","mutual_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,63)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,63).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,63)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,63)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](63,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](65,671744,[[5,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](67,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](68,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,F)),t["ɵdid"](70,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,T)),t["ɵdid"](72,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](73,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](74,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](77,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mutual_password"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Mutual Password"])),(l()(),t["ɵeld"](79,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](80,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["ɵeld"](81,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","mutual_password"],["id","mutual_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,82)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,82).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,82)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,82)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](82,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](84,671744,[[7,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](86,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](87,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](88,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),t["ɵeld"](89,0,null,null,1,"button",[["cdPasswordButton","mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,90).onClick()&&i),i}),null,null)),t["ɵdid"](90,81920,null,0,m.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["ɵeld"](91,0,null,null,1,"button",[["cdCopy2ClipboardButton","mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,92).onClick()&&i),i}),null,null)),t["ɵdid"](92,81920,null,0,p.a,[t.ElementRef,t.Renderer2,h.j,g.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,V)),t["ɵdid"](94,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,D)),t["ɵdid"](96,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](97,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](98,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,P)),t["ɵdid"](100,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](101,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,f.b,f.a)),t["ɵdid"](102,49152,null,0,v.a,[c.Location,b.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.bsModalRef),l(n,7,0,e.discoveryForm),l(n,10,0,e.discoveryForm),l(n,13,0),l(n,22,0,"user"),l(n,25,0,"user"),l(n,27,0,e.discoveryForm.showError("user",t["ɵnov"](n,7),"required")),l(n,29,0,e.discoveryForm.showError("user",t["ɵnov"](n,7),"pattern")),l(n,31,0),l(n,41,0,"password"),l(n,44,0,"password"),l(n,47,0,"password"),l(n,49,0,"password"),l(n,51,0,e.discoveryForm.showError("password",t["ɵnov"](n,7),"required")),l(n,53,0,e.discoveryForm.showError("password",t["ɵnov"](n,7),"pattern")),l(n,55,0),l(n,65,0,"mutual_user"),l(n,68,0,"mutual_user"),l(n,70,0,e.discoveryForm.showError("mutual_user",t["ɵnov"](n,7),"required")),l(n,72,0,e.discoveryForm.showError("mutual_user",t["ɵnov"](n,7),"pattern")),l(n,74,0),l(n,84,0,"mutual_password"),l(n,87,0,"mutual_password"),l(n,90,0,"mutual_password"),l(n,92,0,"mutual_password"),l(n,94,0,e.discoveryForm.showError("mutual_password",t["ɵnov"](n,7),"required")),l(n,96,0,e.discoveryForm.showError("mutual_password",t["ɵnov"](n,7),"pattern")),l(n,100,0,e.hasPermission),l(n,102,0,"Cancel",e.bsModalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,12,0,t["ɵnov"](n,13).hasErrors,t["ɵnov"](n,13).hasSuccess),l(n,19,0,t["ɵnov"](n,24).ngClassUntouched,t["ɵnov"](n,24).ngClassTouched,t["ɵnov"](n,24).ngClassPristine,t["ɵnov"](n,24).ngClassDirty,t["ɵnov"](n,24).ngClassValid,t["ɵnov"](n,24).ngClassInvalid,t["ɵnov"](n,24).ngClassPending,t["ɵnov"](n,25).validClass,t["ɵnov"](n,25).invalidClass),l(n,30,0,t["ɵnov"](n,31).hasErrors,t["ɵnov"](n,31).hasSuccess),l(n,38,0,t["ɵnov"](n,43).ngClassUntouched,t["ɵnov"](n,43).ngClassTouched,t["ɵnov"](n,43).ngClassPristine,t["ɵnov"](n,43).ngClassDirty,t["ɵnov"](n,43).ngClassValid,t["ɵnov"](n,43).ngClassInvalid,t["ɵnov"](n,43).ngClassPending,t["ɵnov"](n,44).validClass,t["ɵnov"](n,44).invalidClass),l(n,54,0,t["ɵnov"](n,55).hasErrors,t["ɵnov"](n,55).hasSuccess),l(n,62,0,t["ɵnov"](n,67).ngClassUntouched,t["ɵnov"](n,67).ngClassTouched,t["ɵnov"](n,67).ngClassPristine,t["ɵnov"](n,67).ngClassDirty,t["ɵnov"](n,67).ngClassValid,t["ɵnov"](n,67).ngClassInvalid,t["ɵnov"](n,67).ngClassPending,t["ɵnov"](n,68).validClass,t["ɵnov"](n,68).invalidClass),l(n,73,0,t["ɵnov"](n,74).hasErrors,t["ɵnov"](n,74).hasSuccess),l(n,81,0,t["ɵnov"](n,86).ngClassUntouched,t["ɵnov"](n,86).ngClassTouched,t["ɵnov"](n,86).ngClassPristine,t["ɵnov"](n,86).ngClassDirty,t["ɵnov"](n,86).ngClassValid,t["ɵnov"](n,86).ngClassInvalid,t["ɵnov"](n,86).ngClassPending,t["ɵnov"](n,87).validClass,t["ɵnov"](n,87).invalidClass)}))}function q(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-discovery-modal",[],null,null,null,x,w)),t["ɵdid"](1,114688,null,0,C.a,[S.a,_.a,R.a,y.a,g.a],null,null)],(function(l,n){l(n,1,0)}),null)}var B=t["ɵccf"]("cd-iscsi-target-discovery-modal",C.a,q,{},{},[])},chpi:function(l,n,e){"use strict";e.d(n,"a",(function(){return h}));var t=e("LvDl"),i=e("wd/R"),u=(e("F83c"),e("0+/T")),s=(e("sne2"),e("uIqm"),e("x38r")),a=e("oxzT"),o=e("yJti"),r=e("vCyI"),d=e("kvvV"),c=e("jVDg"),m=(e("a0VL"),e("aexS"),e("VTlA"),e("kn/O"),e("WxU5")),p=e("2GqK");class h{constructor(l,n,e,t,i,u,s,o){this.authStorageService=l,this.rbdService=n,this.modalService=e,this.cdDatePipe=t,this.taskListService=i,this.taskWrapper=u,this.i18n=s,this.actionLabels=o,this.icons=a.a,this.executingTasks=[],this.selection=new r.a,this.disablePurgeBtn=!0,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"update",icon:a.a.undo,click:()=>this.restoreModal(),name:this.actionLabels.RESTORE},{permission:"delete",icon:a.a.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:1,cellTransformation:s.a.executing},{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:1},{name:this.i18n("Namespace"),prop:"namespace",flexGrow:1},{name:this.i18n("Status"),prop:"deferment_end_time",flexGrow:1,cellTemplate:this.expiresTpl},{name:this.i18n("Deleted At"),prop:"deletion_time",flexGrow:1,pipe:this.cdDatePipe}],this.taskListService.init(()=>this.rbdService.listTrash(),l=>this.prepareResponse(l),l=>this.images=l,()=>this.onFetchError(),l=>["rbd/trash/remove","rbd/trash/restore"].includes(l.name),(l,n)=>new c.a(l.pool_name,l.namespace,l.id).toString()===n.metadata.image_id_spec,void 0)}prepareResponse(l){let n=[];const e={};l.forEach(l=>{t.isUndefined(e[l.status])&&(e[l.status]=[]),e[l.status].push(l.pool_name),n=n.concat(l.value),this.disablePurgeBtn=!n.length});const u=[];return t.forEach(e,(l,n)=>{u.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=u,n.forEach(l=>{l.cdIsExpired=i().isAfter(l.deferment_end_time)}),n}onFetchError(){this.table.reset(),this.viewCacheStatusList=[{status:o.a.ValueException}]}updateSelection(l){this.selection=l}restoreModal(){const l={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,imageId:this.selection.first().id};this.modalRef=this.modalService.show(p.a,{initialState:l})}deleteModal(){const l=this.selection.first().pool_name,n=this.selection.first().namespace,e=this.selection.first().id,t=this.selection.first().deferment_end_time,i=new c.a(l,n,e);this.modalRef=this.modalService.show(u.a,{initialState:{itemDescription:"RBD",itemNames:[i],bodyTemplate:this.deleteTpl,bodyContext:{$implicit:t},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new d.a("rbd/trash/remove",{image_id_spec:i.toString()}),call:this.rbdService.removeTrash(i,!0)})}})}isExpired(l){return i().isAfter(l)}purgeModal(){this.modalService.show(m.a)}}},cxJu:function(l,n,e){"use strict";e.d(n,"a",(function(){return r}));var t=e("quSY"),i=(e("XED3"),e("oxzT")),u=e("vCyI"),s=(e("aexS"),e("SuaG")),a=e("+26A"),o=e("puGn");class r{constructor(l,n,e,s){this.authStorageService=l,this.rbdMirroringService=n,this.modalService=e,this.i18n=s,this.selection=new u.a,this.peersExist=!0,this.subs=new t.a,this.permission=this.authStorageService.getPermissions().rbdMirroring;const a={permission:"update",icon:i.a.edit,click:()=>this.editSiteNameModal(),name:this.i18n("Edit Site Name"),canBePrimary:()=>!0,disable:()=>!1},o={permission:"update",icon:i.a.upload,click:()=>this.createBootstrapModal(),name:this.i18n("Create Bootstrap Token"),disable:()=>!1},r={permission:"update",icon:i.a.download,click:()=>this.importBootstrapModal(),name:this.i18n("Import Bootstrap Token"),disable:()=>this.peersExist};this.tableActions=[a,o,r]}ngOnInit(){this.subs.add(this.rbdMirroringService.startPolling()),this.subs.add(this.rbdMirroringService.subscribeSummary(l=>{this.status=l.content_data.status,this.siteName=l.site_name,this.peersExist=!!l.content_data.pools.find(l=>l.peer_uuids.length>0)}))}ngOnDestroy(){this.subs.unsubscribe()}editSiteNameModal(){this.modalRef=this.modalService.show(o.a,{initialState:{siteName:this.siteName}})}createBootstrapModal(){this.modalRef=this.modalService.show(s.a,{initialState:{siteName:this.siteName}})}importBootstrapModal(){this.modalRef=this.modalService.show(a.a,{initialState:{siteName:this.siteName}})}}},daK0:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("s7LF"),i=e("XNiG"),u=(e("Ekvf"),e("F83c"),e("mtw6")),s=e("QFaf"),a=e("kvvV");e("aexS"),e("9nlD");class o{constructor(l,n,e,t,i,u){this.modalRef=l,this.authStorageService=n,this.notificationService=e,this.poolService=t,this.rbdService=i,this.i18n=u,this.pools=null,this.editing=!1,this.poolPermission=this.authStorageService.getPermissions().pool,this.createForm()}createForm(){this.namespaceForm=new s.a({pool:new t.i(""),namespace:new t.i("")},this.validator(),this.asyncValidator())}validator(){return l=>{const n=l.get("pool"),e=l.get("namespace");let t=null;n.value||(t={required:!0}),n.setErrors(t);let i=null;return e.value||(i={required:!0}),e.setErrors(i),null}}asyncValidator(){return l=>new Promise(n=>{const e=l.get("pool"),t=l.get("namespace");this.rbdService.listNamespaces(e.value).subscribe(l=>{if(l.some(l=>l.namespace===t.value)){const l={namespaceExists:!0};t.setErrors(l),n(l)}else n(null)})})}ngOnInit(){this.onSubmit=new i.a,this.poolPermission.read&&this.poolService.list(["pool_name","type","application_metadata"]).then(l=>{const n=[];for(const e of l)this.rbdService.isRBDPool(e)&&"replicated"===e.type&&n.push(e);if(this.pools=n,1===this.pools.length){const l=this.pools[0].pool_name;this.namespaceForm.get("pool").setValue(l)}})}submit(){const l=this.namespaceForm.getValue("pool"),n=this.namespaceForm.getValue("namespace"),e=new a.a;e.name="rbd/namespace/create",e.metadata={pool:l,namespace:n},this.rbdService.createNamespace(l,n).toPromise().then(()=>{this.notificationService.show(u.a.success,this.i18n("Created namespace '{{pool}}/{{namespace}}'",{pool:l,namespace:n})),this.modalRef.hide(),this.onSubmit.next()}).catch(()=>{this.namespaceForm.setErrors({cdSubmitButton:!0})})}}},"e/kN":function(l,n,e){"use strict";e.d(n,"a",(function(){return c}));var t=e("LvDl"),i=(e("my5R"),e("+fVR")),u=e("0+/T"),s=(e("sne2"),e("uIqm"),e("x38r")),a=e("oxzT"),o=e("vCyI"),r=e("kvvV"),d=(e("G1/K"),e("aexS"),e("VTlA"),e("kn/O"),e("Sofw"));class c extends i.a{constructor(l,n,e,i,u,s,r,d){super(),this.authStorageService=l,this.i18n=n,this.iscsiService=e,this.taskListService=i,this.notAvailablePipe=u,this.modalService=s,this.taskWrapper=r,this.actionLabels=d,this.available=void 0,this.selection=new o.a,this.targets=[],this.icons=a.a,this.builders={"iscsi/target/create":l=>({target_iqn:l.target_iqn})},this.permission=this.authStorageService.getPermissions().iscsi,this.tableActions=[{permission:"create",icon:a.a.add,routerLink:()=>"/block/iscsi/targets/create",name:this.actionLabels.CREATE},{permission:"update",icon:a.a.edit,routerLink:()=>`/block/iscsi/targets/edit/${this.selection.first().target_iqn}`,name:this.actionLabels.EDIT,disable:()=>!this.selection.first()||!t.isUndefined(this.getEditDisableDesc()),disableDesc:()=>this.getEditDisableDesc()},{permission:"delete",icon:a.a.destroy,click:()=>this.deleteIscsiTargetModal(),name:this.actionLabels.DELETE,disable:()=>!this.selection.first()||!t.isUndefined(this.getDeleteDisableDesc()),disableDesc:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:this.i18n("Target"),prop:"target_iqn",flexGrow:2,cellTransformation:s.a.executing},{name:this.i18n("Portals"),prop:"cdPortals",flexGrow:2},{name:this.i18n("Images"),prop:"cdImages",flexGrow:2},{name:this.i18n("# Sessions"),prop:"info.num_sessions",pipe:this.notAvailablePipe,flexGrow:1}],this.iscsiService.status().subscribe(l=>{this.available=l.available,l.available?(this.iscsiService.version().subscribe(l=>{this.cephIscsiConfigVersion=l.ceph_iscsi_config_version,this.taskListService.init(()=>this.iscsiService.listTargets(),l=>this.prepareResponse(l),l=>this.targets=l,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)}),this.iscsiService.settings().subscribe(l=>{this.settings=l})):this.status=l.message})}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}getEditDisableDesc(){const l=this.selection.first();return l&&l.cdExecuting?l.cdExecuting:l&&t.isUndefined(l.info)?this.i18n("Unavailable gateway(s)"):void 0}getDeleteDisableDesc(){const l=this.selection.first();return l&&l.cdExecuting?l.cdExecuting:l&&t.isUndefined(l.info)?this.i18n("Unavailable gateway(s)"):l&&l.info&&l.info.num_sessions?this.i18n("Target has active sessions"):void 0}prepareResponse(l){return l.forEach(l=>{l.cdPortals=l.portals.map(l=>`${l.host}:${l.ip}`),l.cdImages=l.disks.map(l=>`${l.pool}/${l.image}`)}),l}onFetchError(){this.table.reset()}itemFilter(l,n){return l.target_iqn===n.metadata.target_iqn}taskFilter(l){return["iscsi/target/create","iscsi/target/edit","iscsi/target/delete"].includes(l.name)}updateSelection(l){this.selection=l}deleteIscsiTargetModal(){const l=this.selection.first().target_iqn;this.modalRef=this.modalService.show(u.a,{initialState:{itemDescription:this.i18n("iSCSI target"),itemNames:[l],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new r.a("iscsi/target/delete",{target_iqn:l}),call:this.iscsiService.deleteTarget(l)})}})}configureDiscoveryAuth(){this.modalService.show(d.a,{})}}},eF8U:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("SVse"),a=e("mXUL");e("jMP8"),e.d(n,"a",(function(){return o})),e.d(n,"b",(function(){return v}));var o=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function r(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function d(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,11,"select",[["class","form-control custom-select"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,1).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](7,0,null,null,2,"option",[],null,null,null,null,null)),t["ɵdid"](8,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](9,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,r)),t["ɵdid"](11,278528,null,0,s.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.setting),l(n,6,0,e.setting),l(n,8,0,null),l(n,9,0,null),l(n,11,0,e.limits.values)}),(function(l,n){var e=n.component;l(n,0,1,[t["ɵinlineInterpolate"](1,"",e.setting,""),t["ɵinlineInterpolate"](1,"",e.setting,""),t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass])}))}function c(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.value)&&i),"input"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵdid"](2,16384,null,0,i.w,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),t["ɵdid"](4,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,e.setting),l(n,7,0,e.setting)}),(function(l,n){l(n,0,0,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,7).validClass,t["ɵnov"](n,7).invalidClass)}))}function m(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.setting),l(n,6,0,e.setting)}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function p(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,23,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),t["ɵeld"](2,0,null,null,10,"div",[["class","custom-control custom-radio custom-control-inline"]],null,null,null,null,null)),(l()(),t["ɵeld"](3,0,null,null,7,"input",[["class","custom-control-input"],["type","radio"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,4)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,4).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,4)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,4)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,5).onChange()&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,5).onTouched()&&i),i}),null,null)),t["ɵdid"](4,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵdid"](5,212992,null,0,i.x,[t.Renderer2,t.ElementRef,i.D,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.x]),t["ɵdid"](7,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](9,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](10,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](11,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](-1,null,["Yes"])),(l()(),t["ɵeld"](13,0,null,null,10,"div",[["class","custom-control custom-radio custom-control-inline"]],null,null,null,null,null)),(l()(),t["ɵeld"](14,0,null,null,7,"input",[["class","custom-control-input"],["type","radio"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,15)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,15).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,15)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,15)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,16).onChange()&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,16).onTouched()&&i),i}),null,null)),t["ɵdid"](15,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵdid"](16,212992,null,0,i.x,[t.Renderer2,t.ElementRef,i.D,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.x]),t["ɵdid"](18,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](20,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](21,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](22,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](-1,null,["No"]))],(function(l,n){var e=n.component;l(n,5,0,e.setting,!0),l(n,7,0,e.setting),l(n,10,0,e.setting),l(n,16,0,e.setting,!1),l(n,18,0,e.setting),l(n,21,0,e.setting)}),(function(l,n){var e=n.component;l(n,3,0,e.setting+"True",t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending,t["ɵnov"](n,10).validClass,t["ɵnov"](n,10).invalidClass),l(n,11,0,e.setting+"True"),l(n,14,0,e.setting+"False",t["ɵnov"](n,20).ngClassUntouched,t["ɵnov"](n,20).ngClassTouched,t["ɵnov"](n,20).ngClassPristine,t["ɵnov"](n,20).ngClassDirty,t["ɵnov"](n,20).ngClassValid,t["ɵnov"](n,20).ngClassInvalid,t["ɵnov"](n,20).ngClassPending,t["ɵnov"](n,21).validClass,t["ɵnov"](n,21).invalidClass),l(n,22,0,e.setting+"False")}))}function h(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,c)),t["ɵdid"](2,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,m)),t["ɵdid"](4,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,p)),t["ɵdid"](6,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,2,0,"int"===e.limits.type),l(n,4,0,"str"===e.limits.type),l(n,6,0,"bool"===e.limits.type)}),null)}function g(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](2,null,["Must be greater than or equal to ","."]))],null,(function(l,n){l(n,2,0,n.component.limits.min)}))}function f(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](2,null,["Must be less than or equal to ","."]))],null,(function(l,n){l(n,2,0,n.component.limits.max)}))}function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,17,"div",[["class","form-group"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,1).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,1).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,4).onSubmit()&&i),i}),a.b,a.a)),t["ɵdid"](1,540672,null,0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](3,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](4,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),t["ɵdid"](5,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](8,0,null,0,1,"label",[["class","col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](9,null,["",""])),(l()(),t["ɵand"](16777216,null,0,1,null,d)),t["ɵdid"](11,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,h)),t["ɵdid"](13,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,g)),t["ɵdid"](15,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,f)),t["ɵdid"](17,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.settingsForm),l(n,4,0,e.settingsForm),l(n,5,0),l(n,11,0,"enum"===e.limits.type),l(n,13,0,"enum"!==e.limits.type),l(n,15,0,e.settingsForm.showError(e.setting,e.formDir,"min")),l(n,17,0,e.settingsForm.showError(e.setting,e.formDir,"max"))}),(function(l,n){var e=n.component;l(n,0,0,t["ɵnov"](n,3).ngClassUntouched,t["ɵnov"](n,3).ngClassTouched,t["ɵnov"](n,3).ngClassPristine,t["ɵnov"](n,3).ngClassDirty,t["ɵnov"](n,3).ngClassValid,t["ɵnov"](n,3).ngClassInvalid,t["ɵnov"](n,3).ngClassPending,t["ɵnov"](n,5).hasErrors,t["ɵnov"](n,5).hasSuccess),l(n,8,0,t["ɵinlineInterpolate"](1,"",e.setting,"")),l(n,9,0,e.setting)}))}},gr3l:function(l,n,e){"use strict";e.d(n,"a",(function(){return h}));var t=e("s7LF"),i=e("LvDl"),u=e("cp0P"),s=(e("my5R"),e("F83c"),e("DNAf")),a=e("a96k"),o=(e("sne2"),e("oxzT")),r=e("QFaf"),d=e("1Ni5"),c=e("kvvV"),m=(e("kn/O"),e("Z4cD")),p=e("a6qe");class h{constructor(l,n,e,t,i,u,a,r){this.iscsiService=l,this.modalService=n,this.rbdService=e,this.router=t,this.route=i,this.i18n=u,this.taskWrapper=a,this.actionLabels=r,this.api_version=0,this.minimum_gateways=1,this.icons=o.a,this.isEdit=!1,this.portalsSelections=[],this.imagesInitiatorSelections=[],this.groupDiskSelections=[],this.groupMembersSelections=[],this.imagesSettings={},this.messages={portals:new s.a({noOptions:this.i18n("There are no portals available.")},this.i18n),images:new s.a({noOptions:this.i18n("There are no images available.")},this.i18n),initiatorImage:new s.a({noOptions:this.i18n("There are no images available. Please make sure you add an image to the target.")},this.i18n),groupInitiator:new s.a({noOptions:this.i18n("There are no initiators available. Please make sure you add an initiator to the target.")},this.i18n)},this.IQN_REGEX=/^iqn\.(19|20)\d\d-(0[1-9]|1[0-2])\.\D{2,3}(\.[A-Za-z0-9-]+)+(:[A-Za-z0-9-\.]+)*$/,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.resource=this.i18n("target")}ngOnInit(){const l=[this.iscsiService.listTargets(),this.rbdService.list(),this.iscsiService.portals(),this.iscsiService.settings(),this.iscsiService.version()];this.router.url.startsWith("/block/iscsi/targets/edit")&&(this.isEdit=!0,this.route.params.subscribe(n=>{this.target_iqn=decodeURIComponent(n.target_iqn),l.push(this.iscsiService.getTarget(this.target_iqn))})),this.action=this.isEdit?this.actionLabels.EDIT:this.actionLabels.CREATE,Object(u.a)(l).subscribe(l=>{const n=i(l[0]).filter(l=>l.target_iqn!==this.target_iqn).flatMap(l=>l.disks).map(l=>`${l.pool}/${l.image}`).value();"api_version"in l[3]&&(this.api_version=l[3].api_version),this.minimum_gateways=l[3].config.minimum_gateways,this.target_default_controls=l[3].target_default_controls,this.target_controls_limits=l[3].target_controls_limits,this.disk_default_controls=l[3].disk_default_controls,this.disk_controls_limits=l[3].disk_controls_limits,this.backstores=l[3].backstores,this.default_backstore=l[3].default_backstore,this.unsupported_rbd_features=l[3].unsupported_rbd_features,this.required_rbd_features=l[3].required_rbd_features,this.imagesAll=i(l[1]).flatMap(l=>l.value).filter(l=>!l.namespace&&-1===n.indexOf(`${l.pool_name}/${l.name}`)&&0!==this.getValidBackstores(l).length).value(),this.imagesSelections=this.imagesAll.map(l=>new a.a(!1,`${l.pool_name}/${l.name}`,""));const e=[];l[2].forEach(l=>{l.ip_addresses.forEach(n=>{e.push(new a.a(!1,l.name+":"+n,""))})}),this.portalsSelections=[...e],this.cephIscsiConfigVersion=l[4].ceph_iscsi_config_version,this.createForm(),l[5]&&this.resolveModel(l[5])})}createForm(){if(this.targetForm=new r.a({target_iqn:new t.i("iqn.2001-07.com.ceph:"+Date.now(),{validators:[t.B.required,t.B.pattern(this.IQN_REGEX)]}),target_controls:new t.i({}),portals:new t.i([],{validators:[d.a.custom("minGateways",l=>i.uniq(l.map(l=>l.split(":")[0])).length<Math.max(1,this.minimum_gateways))]}),disks:new t.i([],{validators:[d.a.custom("dupLunId",l=>{const n=this.getLunIds(l);return n.length!==i.uniq(n).length}),d.a.custom("dupWwn",l=>{const n=this.getWwns(l);return n.length!==i.uniq(n).length})]}),initiators:new t.f([]),groups:new t.f([]),acl_enabled:new t.i(!1)}),this.cephIscsiConfigVersion>10){const l=new r.a({user:new t.i(""),password:new t.i(""),mutual_user:new t.i(""),mutual_password:new t.i("")});this.setAuthValidator(l),this.targetForm.addControl("auth",l)}}resolveModel(l){this.targetForm.patchValue({target_iqn:l.target_iqn,target_controls:l.target_controls,acl_enabled:l.acl_enabled}),this.cephIscsiConfigVersion>10&&this.targetForm.patchValue({auth:l.auth});const n=[];i.forEach(l.portals,l=>{n.push(`${l.host}:${l.ip}`)}),this.targetForm.patchValue({portals:n});const e=[];i.forEach(l.disks,l=>{const n=`${l.pool}/${l.image}`;e.push(n),this.imagesSettings[n]={backstore:l.backstore},this.imagesSettings[n][l.backstore]=l.controls,"lun"in l&&(this.imagesSettings[n].lun=l.lun),"wwn"in l&&(this.imagesSettings[n].wwn=l.wwn),this.onImageSelection({option:{name:n,selected:!0}})}),this.targetForm.patchValue({disks:e}),i.forEach(l.clients,l=>{const n=this.addInitiator();l.luns=i.map(l.luns,l=>`${l.pool}/${l.image}`),n.patchValue(l)}),i.forEach(l.groups,l=>{const n=this.addGroup();l.disks=i.map(l.disks,l=>`${l.pool}/${l.image}`),n.patchValue(l),i.forEach(l.members,l=>{this.onGroupMemberSelection({option:new a.a(!0,l,"")})})})}hasAdvancedSettings(l){return Object.values(l).length>0}get portals(){return this.targetForm.get("portals")}onPortalSelection(){this.portals.setValue(this.portals.value)}removePortal(l,n){return this.portalsSelections.forEach(l=>{l.name===n&&(l.selected=!1)}),this.portals.value.splice(l,1),this.portals.setValue(this.portals.value),!1}get disks(){return this.targetForm.get("disks")}removeImage(l,n){return this.imagesSelections.forEach(l=>{l.name===n&&(l.selected=!1)}),this.disks.value.splice(l,1),this.removeImageRefs(n),this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1}),!1}removeImageRefs(l){this.initiators.controls.forEach(n=>{const e=n.value.luns.filter(n=>n!==l);n.get("luns").setValue(e)}),this.groups.controls.forEach(n=>{const e=n.value.disks.filter(n=>n!==l);n.get("disks").setValue(e)}),i.forEach(this.imagesInitiatorSelections,(n,e)=>{this.imagesInitiatorSelections[e]=n.filter(n=>n.name!==l)}),i.forEach(this.groupDiskSelections,(n,e)=>{this.groupDiskSelections[e]=n.filter(n=>n.name!==l)})}getDefaultBackstore(l){let n=this.default_backstore;const e=this.getImageById(l);return this.validFeatures(e,this.default_backstore)||this.backstores.forEach(l=>{l!==this.default_backstore&&this.validFeatures(e,l)&&(n=l)}),n}isLunIdInUse(l,n){const e=this.disks.value.filter(l=>l!==n);return this.getLunIds(e).includes(l)}getLunIds(l){return i.map(l,l=>this.imagesSettings[l].lun)}nextLunId(l){const n=this.disks.value.filter(n=>n!==l),e=this.getLunIds(n);let t=0;for(;e.includes(t);)t++;return t}getWwns(l){return i.map(l,l=>this.imagesSettings[l].wwn).filter(l=>i.isString(l)&&""!==l)}onImageSelection(l){const n=l.option;if(n.selected){if(this.imagesSettings[n.name])this.isLunIdInUse(this.imagesSettings[n.name].lun,n.name)&&(this.imagesSettings[n.name].lun=this.nextLunId(n.name));else{const l=this.getDefaultBackstore(n.name);this.imagesSettings[n.name]={backstore:l,lun:this.nextLunId(n.name)},this.imagesSettings[n.name][l]={}}i.forEach(this.imagesInitiatorSelections,(l,e)=>{l.push(new a.a(!1,n.name,"")),this.imagesInitiatorSelections[e]=[...l]}),i.forEach(this.groupDiskSelections,(l,e)=>{l.push(new a.a(!1,n.name,"")),this.groupDiskSelections[e]=[...l]})}else this.removeImageRefs(n.name);this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1})}get initiators(){return this.targetForm.get("initiators")}addInitiator(){const l=new r.a({client_iqn:new t.i("",{validators:[t.B.required,d.a.custom("notUnique",l=>{const n=this.initiators.controls.reduce((function(l,n){return l.concat(n.value.client_iqn)}),[]);return n.indexOf(l)!==n.lastIndexOf(l)}),t.B.pattern(this.IQN_REGEX)]}),auth:new r.a({user:new t.i(""),password:new t.i(""),mutual_user:new t.i(""),mutual_password:new t.i("")}),luns:new t.i([]),cdIsInGroup:new t.i(!1)});this.setAuthValidator(l),this.initiators.push(l),i.forEach(this.groupMembersSelections,(l,n)=>{l.push(new a.a(!1,"","")),this.groupMembersSelections[n]=[...l]});const n=i.map(this.targetForm.getValue("disks"),l=>new a.a(!1,l,""));return this.imagesInitiatorSelections.push(n),l}setAuthValidator(l){d.a.validateIf(l.get("user"),()=>l.getValue("password")||l.getValue("mutual_user")||l.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[l.get("password"),l.get("mutual_user"),l.get("mutual_password")]),d.a.validateIf(l.get("password"),()=>l.getValue("user")||l.getValue("mutual_user")||l.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[l.get("user"),l.get("mutual_user"),l.get("mutual_password")]),d.a.validateIf(l.get("mutual_user"),()=>l.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[l.get("user"),l.get("password"),l.get("mutual_password")]),d.a.validateIf(l.get("mutual_password"),()=>l.getValue("mutual_user"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[l.get("user"),l.get("password"),l.get("mutual_user")])}removeInitiator(l){const n=this.initiators.value[l];this.initiators.removeAt(l),i.forEach(this.groupMembersSelections,(n,e)=>{n.splice(l,1),this.groupMembersSelections[e]=[...n]}),this.groups.controls.forEach(l=>{const e=l.value.members.filter(l=>l!==n.client_iqn);l.get("members").setValue(e)}),this.imagesInitiatorSelections.splice(l,1)}updatedInitiatorSelector(){this.initiators.controls.forEach(l=>{l.get("client_iqn").updateValueAndValidity({emitEvent:!1})}),i.forEach(this.groupMembersSelections,(l,n)=>{i.forEach(l,(l,n)=>{const e=l.name;l.name=this.initiators.controls[n].value.client_iqn,this.groups.controls.forEach(n=>{const t=n.value.members,i=t.indexOf(e);-1!==i&&(t[i]=l.name),n.get("members").setValue(t)})}),this.groupMembersSelections[n]=[...this.groupMembersSelections[n]]})}removeInitiatorImage(l,n,e,t){const i=l.getValue("luns");return i.splice(n,1),l.patchValue({luns:i}),this.imagesInitiatorSelections[e].forEach(l=>{l.name===t&&(l.selected=!1)}),!1}get groups(){return this.targetForm.get("groups")}addGroup(){const l=new r.a({group_id:new t.i("",{validators:[t.B.required]}),members:new t.i([]),disks:new t.i([])});this.groups.push(l);const n=i.map(this.targetForm.getValue("disks"),l=>new a.a(!1,l,""));this.groupDiskSelections.push(n);const e=i.map(this.initiators.value,l=>new a.a(!1,l.client_iqn,"",!l.cdIsInGroup));return this.groupMembersSelections.push(e),l}removeGroup(l){this.groups.removeAt(l),this.groupDiskSelections.splice(l,1)}onGroupMemberSelection(l){const n=l.option;let e;this.initiators.controls.forEach((l,t)=>{l.value.client_iqn===n.name&&(l.patchValue({luns:[]}),l.get("cdIsInGroup").setValue(n.selected),e=t)}),i.forEach(this.groupMembersSelections,l=>{l[e].enabled=!n.selected})}removeGroupInitiator(l,n,e){const t=l.getValue("members")[n];l.getValue("members").splice(n,1),this.groupMembersSelections[e].forEach(l=>{l.name===t&&(l.selected=!1)}),this.groupMembersSelections[e]=[...this.groupMembersSelections[e]],this.onGroupMemberSelection({option:new a.a(!1,t,"")})}removeGroupDisk(l,n,e){const t=l.getValue("disks")[n];l.getValue("disks").splice(n,1),this.groupDiskSelections[e].forEach(l=>{l.name===t&&(l.selected=!1)}),this.groupDiskSelections[e]=[...this.groupDiskSelections[e]]}submit(){const l=i.cloneDeep(this.targetForm.value),n={target_iqn:this.targetForm.getValue("target_iqn"),target_controls:this.targetForm.getValue("target_controls"),acl_enabled:this.targetForm.getValue("acl_enabled"),portals:[],disks:[],clients:[],groups:[]};if(this.cephIscsiConfigVersion>10){const l=this.targetForm.get("auth");l.getValue("user")||l.get("user").setValue(""),l.getValue("password")||l.get("password").setValue(""),l.getValue("mutual_user")||l.get("mutual_user").setValue(""),l.getValue("mutual_password")||l.get("mutual_password").setValue("");const e=this.targetForm.getValue("acl_enabled");n.auth={user:e?"":l.getValue("user"),password:e?"":l.getValue("password"),mutual_user:e?"":l.getValue("mutual_user"),mutual_password:e?"":l.getValue("mutual_password")}}let e;l.disks.forEach(l=>{const e=l.split("/"),t=this.imagesSettings[l].backstore;n.disks.push({pool:e[0],image:e[1],backstore:t,controls:this.imagesSettings[l][t],lun:this.imagesSettings[l].lun,wwn:this.imagesSettings[l].wwn})}),l.portals.forEach(l=>{const e=l.indexOf(":");n.portals.push({host:l.substring(0,e),ip:l.substring(e+1)})}),n.acl_enabled&&(l.initiators.forEach(l=>{l.auth.user||(l.auth.user=""),l.auth.password||(l.auth.password=""),l.auth.mutual_user||(l.auth.mutual_user=""),l.auth.mutual_password||(l.auth.mutual_password=""),delete l.cdIsInGroup;const n=[];l.luns.forEach(l=>{const e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.luns=n}),n.clients=l.initiators),n.acl_enabled&&(l.groups.forEach(l=>{const n=[];l.disks.forEach(l=>{const e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.disks=n}),n.groups=l.groups),this.isEdit?(n.new_target_iqn=n.target_iqn,n.target_iqn=this.target_iqn,e=this.taskWrapper.wrapTaskAroundCall({task:new c.a("iscsi/target/edit",{target_iqn:n.target_iqn}),call:this.iscsiService.updateTarget(this.target_iqn,n)})):e=this.taskWrapper.wrapTaskAroundCall({task:new c.a("iscsi/target/create",{target_iqn:n.target_iqn}),call:this.iscsiService.createTarget(n)}),e.subscribe(void 0,()=>{this.targetForm.setErrors({cdSubmitButton:!0})},()=>this.router.navigate(["/block/iscsi/targets"]))}targetSettingsModal(){const l={target_controls:this.targetForm.get("target_controls"),target_default_controls:this.target_default_controls,target_controls_limits:this.target_controls_limits};this.modalRef=this.modalService.show(p.a,{initialState:l})}imageSettingsModal(l){const n={imagesSettings:this.imagesSettings,image:l,api_version:this.api_version,disk_default_controls:this.disk_default_controls,disk_controls_limits:this.disk_controls_limits,backstores:this.getValidBackstores(this.getImageById(l)),control:this.targetForm.get("disks")};this.modalRef=this.modalService.show(m.a,{initialState:n})}validFeatures(l,n){const e=l.features,t=this.required_rbd_features[n];return(e&t)===t&&0==(e&this.unsupported_rbd_features[n])}getImageById(l){return this.imagesAll.find(n=>l===`${n.pool_name}/${n.name}`)}getValidBackstores(l){return this.backstores.filter(n=>this.validFeatures(l,n))}}},jMP8:function(l,n,e){"use strict";e.d(n,"a",(function(){return i}));var t=e("s7LF");e("QFaf");class i{ngOnInit(){const l=[];"min"in this.limits&&l.push(t.B.min(this.limits.min)),"max"in this.limits&&l.push(t.B.max(this.limits.max)),this.settingsForm.get(this.setting).setValidators(l)}}},"k/xb":function(l,n,e){"use strict";e.d(n,"a",(function(){return i})),e.d(n,"b",(function(){return S})),e.d(n,"c",(function(){return u})),e.d(n,"d",(function(){return s})),e.d(n,"j",(function(){return a})),e.d(n,"k",(function(){return o})),e.d(n,"l",(function(){return r})),e.d(n,"m",(function(){return d})),e.d(n,"n",(function(){return c})),e.d(n,"o",(function(){return m})),e.d(n,"p",(function(){return p})),e.d(n,"q",(function(){return h})),e.d(n,"e",(function(){return g})),e.d(n,"f",(function(){return f})),e.d(n,"g",(function(){return v})),e.d(n,"h",(function(){return b})),e.d(n,"i",(function(){return C}));var t=e("sne2");e("Vhfg"),e("gr3l"),e("e/kN"),e("roDX"),e("cxJu"),e("MyVl"),e("5GyT"),e("Z5tW"),e("WkyA"),e("chpi");class i{}const u={breadcrumbs:"Images"},s={breadcrumbs:"Namespaces"},a={breadcrumbs:"Trash"},o={breadcrumbs:"Overall Performance"},r={breadcrumbs:t.a.CREATE},d={breadcrumbs:t.a.EDIT},c={breadcrumbs:t.a.CLONE},m={breadcrumbs:t.a.COPY},p={breadcrumbs:t.a.COPY},h={breadcrumbs:"Mirroring"},g={breadcrumbs:"iSCSI"},f={breadcrumbs:"Overview"},v={breadcrumbs:"Targets"},b={breadcrumbs:t.a.CREATE},C={breadcrumbs:t.a.EDIT};class S{}},kccj:function(l,n,e){"use strict";e.d(n,"a",(function(){return t}));class t{}},l7Jr:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("mXUL"),u=e("+gVj"),s=e("eF8U"),a=e("jMP8"),o=e("EEJc"),r=e("ajRT"),d=e("s7LF"),c=e("SVse"),m=e("gp3X"),p=e("sb0X"),h=e("KVJa"),g=e("Z21x"),f=e("sne2"),v=e("a6qe"),b=e("LqlI"),C=e("my5R");e.d(n,"a",(function(){return w}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](1,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](4,0,null,0,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"cd-iscsi-setting",[],null,null,null,s.b,s.a)),t["ɵdid"](6,114688,null,0,a.a,[],{settingsForm:[0,"settingsForm"],formDir:[1,"formDir"],setting:[2,"setting"],limits:[3,"limits"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,6,0,e.settingsForm,t["ɵnov"](n.parent,7),n.context.$implicit.key,e.getTargetControlLimits(n.context.$implicit.key))}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).hasErrors,t["ɵnov"](n,1).hasSuccess)}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,23,"cd-modal",[],null,null,null,o.c,o.b)),t["ɵdid"](1,49152,null,0,r.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Advanced Settings"])),(l()(),t["ɵeld"](4,0,null,1,19,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,18,"form",[["name","settingsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,d.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,d.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,d.d,null,[d.l]),t["ɵdid"](9,16384,null,0,d.s,[[4,d.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["ɵand"](16777216,null,null,2,null,_)),t["ɵdid"](15,278528,null,0,c.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["ɵpid"](0,c.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["ɵeld"](17,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](18,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](19,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.save()&&t),t}),m.b,m.a)),t["ɵdid"](20,114688,null,0,p.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Confirm"])),(l()(),t["ɵeld"](22,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,h.b,h.a)),t["ɵdid"](23,49152,null,0,g.a,[c.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.settingsForm),l(n,10,0,e.settingsForm),l(n,15,0,t["ɵunv"](n,15,0,t["ɵnov"](n,16).transform(e.settingsForm.controls))),l(n,20,0,e.settingsForm),l(n,23,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending)}))}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-iqn-settings-modal",[],null,null,null,R,S)),t["ɵdid"](1,114688,null,0,v.a,[b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var w=t["ɵccf"]("cd-iscsi-target-iqn-settings-modal",v.a,y,{},{},[])},lArG:function(l,n,e){"use strict";e.d(n,"a",(function(){return t}));class t{}},"lz+O":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("SVse"),a=e("EEJc"),o=e("ajRT"),r=e("mXUL"),d=e("gp3X"),c=e("sb0X"),m=e("KVJa"),p=e("Z21x"),h=e("sne2"),g=e("WxU5"),f=e("aexS"),v=e("F83c"),b=e("LqlI"),C=e("2EZI"),S=e("Ekvf"),_=e("kn/O");e.d(n,"a",(function(){return N}));var R=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","poolName"],["placeholder","Pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"poolName"),l(n,6,0,"poolName")}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","poolName"],["id","poolName"],["name","poolName"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,1).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](7,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),t["ɵdid"](8,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](9,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](-1,null,["All"])),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](12,278528,null,0,s.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,3,0,"poolName"),l(n,6,0,"poolName"),l(n,8,0,""),l(n,9,0,""),l(n,12,0,e.pools)}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,41,"cd-modal",[],null,null,null,a.c,a.b)),t["ɵdid"](1,49152,null,0,o.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Purge Trash"])),(l()(),t["ɵeld"](4,0,null,1,37,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,36,"form",[["class","form"],["name","purgeForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,23,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,12,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To purge, select one or"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["All"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](19,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["pools and click"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](22,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Purge Trash"])),(l()(),t["ɵted"](-1,null,[".  "])),(l()(),t["ɵeld"](25,0,null,null,9,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](26,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](29,0,null,0,1,"label",[["class","col-form-label mx-auto"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pool:"])),(l()(),t["ɵand"](16777216,null,0,1,null,y)),t["ɵdid"](32,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](34,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](35,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](36,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](37,0,null,null,2,"cd-submit-button",[["id","purgeFormButton"]],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.purge()&&t),t}),d.b,d.a)),t["ɵdid"](38,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Purge Trash"])),(l()(),t["ɵeld"](40,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["ɵdid"](41,49152,null,0,p.a,[s.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.purgeForm),l(n,10,0,e.purgeForm),l(n,26,0),l(n,32,0,!e.poolPermission.read),l(n,34,0,e.poolPermission.read),l(n,38,0,e.purgeForm),l(n,41,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,25,0,t["ɵnov"](n,26).hasErrors,t["ɵnov"](n,26).hasSuccess)}))}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-trash-purge-modal",[],null,null,null,I,R)),t["ɵdid"](1,114688,null,0,g.a,[f.a,v.a,b.a,C.a,S.a,_.a],null,null)],(function(l,n){l(n,1,0)}),null)}var N=t["ɵccf"]("cd-rbd-trash-purge-modal",g.a,E,{},{},[])},my5R:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("mrSG"),i=e("IheW"),u=e("xTzq"),s=e("8Y7J"),a=e("pL04");let o=(()=>{let l=class{constructor(l){this.http=l}listTargets(){return this.http.get("api/iscsi/target")}getTarget(l){return this.http.get(`api/iscsi/target/${l}`)}updateTarget(l,n){return this.http.put(`api/iscsi/target/${l}`,n,{observe:"response"})}status(){return this.http.get("ui-api/iscsi/status")}settings(){return this.http.get("ui-api/iscsi/settings")}version(){return this.http.get("ui-api/iscsi/version")}portals(){return this.http.get("ui-api/iscsi/portals")}createTarget(l){return this.http.post("api/iscsi/target",l,{observe:"response"})}deleteTarget(l){return this.http.delete(`api/iscsi/target/${l}`,{observe:"response"})}getDiscovery(){return this.http.get("api/iscsi/discoveryauth")}updateDiscovery(l){return this.http.put("api/iscsi/discoveryauth",l)}overview(){return this.http.get("ui-api/iscsi/overview")}};return l.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new l(s["ɵɵinject"](i.c))},token:l,providedIn:a.a}),l=t.__decorate([u.a,t.__metadata("design:paramtypes",[i.c])],l),l})()},nP0W:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("EEJc"),s=e("ajRT"),a=e("+gVj"),o=e("mXUL"),r=e("SVse"),d=e("gp3X"),c=e("sb0X"),m=e("KVJa"),p=e("Z21x"),h=e("sne2"),g=e("aa9H"),f=e("LqlI"),v=e("GiVz"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return k}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.id),l(n,2,0,n.context.$implicit.id)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Peer clusters must be removed prior to disabling mirror."]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,45,"cd-modal",[],null,null,null,u.c,u.b)),t["ɵdid"](1,49152,null,0,s.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Edit pool mirror mode"])),(l()(),t["ɵeld"](4,0,null,1,41,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,40,"form",[["class","form"],["name","editModeForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,27,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,8,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To edit the mirror mode for pool  "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](16,null,["",""])),(l()(),t["ɵted"](-1,null,[", select a new mode from the list and click  "])),(l()(),t["ɵeld"](18,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Update"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](21,0,null,null,17,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](22,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](25,0,null,0,2,"label",[["class","col-form-label"],["for","mirrorMode"]],null,null,null,null,null)),(l()(),t["ɵeld"](26,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Mode"])),(l()(),t["ɵeld"](28,0,null,0,8,"select",[["class","form-control custom-select"],["formControlName","mirrorMode"],["id","mirrorMode"],["name","mirrorMode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,29).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,29).onTouched()&&i),i}),null,null)),t["ɵdid"](29,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](31,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](33,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](34,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,_)),t["ɵdid"](36,278528,null,0,r.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,R)),t["ɵdid"](38,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](39,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](40,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](41,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t}),d.b,d.a)),t["ɵdid"](42,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Update"])),(l()(),t["ɵeld"](44,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["ɵdid"](45,49152,null,0,p.a,[r.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.editModeForm),l(n,10,0,e.editModeForm),l(n,22,0),l(n,31,0,"mirrorMode"),l(n,34,0,"mirrorMode"),l(n,36,0,e.mirrorModes),l(n,38,0,e.editModeForm.showError("mirrorMode",t["ɵnov"](n,7),"cannotDisable")),l(n,42,0,e.editModeForm),l(n,45,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,16,0,e.poolName),l(n,21,0,t["ɵnov"](n,22).hasErrors,t["ɵnov"](n,22).hasSuccess),l(n,28,0,t["ɵnov"](n,33).ngClassUntouched,t["ɵnov"](n,33).ngClassTouched,t["ɵnov"](n,33).ngClassPristine,t["ɵnov"](n,33).ngClassDirty,t["ɵnov"](n,33).ngClassValid,t["ɵnov"](n,33).ngClassInvalid,t["ɵnov"](n,33).ngClassPending,t["ɵnov"](n,34).validClass,t["ɵnov"](n,34).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-pool-edit-mode-modal",[],null,null,null,y,S)),t["ɵdid"](1,245760,null,0,g.a,[f.a,v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var k=t["ɵccf"]("cd-pool-edit-mode-modal",g.a,w,{},{},[])},nhAp:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("mXUL"),u=e("+gVj"),s=e("s7LF"),a=e("SVse"),o=e("eF8U"),r=e("jMP8"),d=e("uYzU"),c=e("EEJc"),m=e("ajRT"),p=e("gp3X"),h=e("sb0X"),g=e("KVJa"),f=e("Z21x"),v=e("sne2"),b=e("Z4cD"),C=e("LqlI"),S=e("my5R");e.d(n,"a",(function(){return T}));var _=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,33,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Identifier"])),(l()(),t["ɵeld"](3,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](4,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](7,0,null,0,12,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](8,0,null,null,1,"label",[["class","col-form-label required"],["for","lun"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["lun"])),(l()(),t["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","lun"],["id","lun"],["name","lun"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,11)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,11).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,11)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,11)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,12).onChange(e.target.value)&&i),"input"===n&&(i=!1!==t["ɵnov"](l,12).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,12).onTouched()&&i),i}),null,null)),t["ɵdid"](11,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵdid"](12,16384,null,0,s.w,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,s.p,(function(l,n){return[l,n]}),[s.e,s.w]),t["ɵdid"](14,671744,[[1,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](16,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](17,16384,null,0,u.h,[[3,s.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](19,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](20,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](21,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](24,0,null,0,9,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](25,0,null,null,1,"label",[["class","col-form-label"],["for","wwn"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["wwn"])),(l()(),t["ɵeld"](27,0,null,null,6,"input",[["class","form-control"],["formControlName","wwn"],["id","wwn"],["name","wwn"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,28)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,28).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,28)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,28)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](28,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.e]),t["ɵdid"](30,671744,[[3,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](32,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](33,16384,null,0,u.h,[[3,s.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0),l(n,14,0,"lun"),l(n,17,0,"lun"),l(n,19,0,e.settingsForm.showError("lun",t["ɵnov"](n.parent,12),"required")),l(n,21,0),l(n,30,0,"wwn"),l(n,33,0,"wwn")}),(function(l,n){l(n,3,0,t["ɵnov"](n,4).hasErrors,t["ɵnov"](n,4).hasSuccess),l(n,10,0,t["ɵnov"](n,16).ngClassUntouched,t["ɵnov"](n,16).ngClassTouched,t["ɵnov"](n,16).ngClassPristine,t["ɵnov"](n,16).ngClassDirty,t["ɵnov"](n,16).ngClassValid,t["ɵnov"](n,16).ngClassInvalid,t["ɵnov"](n,16).ngClassPending,t["ɵnov"](n,17).validClass,t["ɵnov"](n,17).invalidClass),l(n,20,0,t["ɵnov"](n,21).hasErrors,t["ɵnov"](n,21).hasSuccess),l(n,27,0,t["ɵnov"](n,32).ngClassUntouched,t["ɵnov"](n,32).ngClassTouched,t["ɵnov"](n,32).ngClassPristine,t["ɵnov"](n,32).ngClassDirty,t["ɵnov"](n,32).ngClassValid,t["ɵnov"](n,32).ngClassInvalid,t["ɵnov"](n,32).ngClassPending,t["ɵnov"](n,33).validClass,t["ɵnov"](n,33).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,s.v,[t.ElementRef,t.Renderer2,[2,s.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,s.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""])),t["ɵppd"](4,1)],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){var e=t["ɵunv"](n,3,0,l(n,4,0,t["ɵnov"](n.parent,0),n.context.$implicit));l(n,3,0,e)}))}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](1,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](4,0,null,0,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"cd-iscsi-setting",[],null,null,null,o.b,o.a)),t["ɵdid"](6,114688,null,0,r.a,[],{settingsForm:[0,"settingsForm"],formDir:[1,"formDir"],setting:[2,"setting"],limits:[3,"limits"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,6,0,e.settingsForm,t["ɵnov"](n.parent.parent.parent,12),n.context.$implicit.key,e.getDiskControlLimits(n.parent.parent.context.$implicit,n.context.$implicit.key))}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).hasErrors,t["ɵnov"](n,1).hasSuccess)}))}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,2,null,k)),t["ɵdid"](2,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["ɵpid"](0,a.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){var e=n.component;l(n,2,0,t["ɵunv"](n,2,0,t["ɵnov"](n,3).transform(e.disk_default_controls[n.parent.context.$implicit])))}),null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,I)),t["ɵdid"](2,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,2,0,n.component.settingsForm.value.backstore===n.context.$implicit)}),null)}function N(l){return t["ɵvid"](0,[t["ɵpid"](0,d.a,[]),(l()(),t["ɵeld"](1,0,null,null,46,"cd-modal",[],null,null,null,c.c,c.b)),t["ɵdid"](2,49152,null,0,m.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](3,0,null,0,5,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Configure"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](7,0,null,null,1,"small",[],null,null,null,null,null)),(l()(),t["ɵted"](8,null,["",""])),(l()(),t["ɵeld"](9,0,null,1,38,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](10,0,null,null,37,"form",[["class","form"],["name","settingsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,12).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,12).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,15).onSubmit()&&i),i}),null,null)),t["ɵdid"](11,16384,null,0,s.G,[],null,null),t["ɵdid"](12,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](14,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](15,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](16,0,null,null,24,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](17,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["ɵand"](16777216,null,null,1,null,y)),t["ɵdid"](20,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](21,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Settings"])),(l()(),t["ɵeld"](23,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](24,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](27,0,null,0,11,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](28,0,null,null,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Backstore"])),(l()(),t["ɵeld"](30,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","backstore"],["id","backstore"],["name","backstore"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,31).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,31).onTouched()&&i),i}),null,null)),t["ɵdid"](31,16384,null,0,s.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.A]),t["ɵdid"](33,671744,[[5,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](35,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](36,16384,null,0,u.h,[[3,s.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](38,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,E)),t["ɵdid"](40,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵeld"](41,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](42,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](43,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.save()&&t),t}),p.b,p.a)),t["ɵdid"](44,114688,null,0,h.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Confirm"])),(l()(),t["ɵeld"](46,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,g.b,g.a)),t["ɵdid"](47,49152,null,0,f.a,[a.Location,v.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,2,0,e.modalRef),l(n,12,0,e.settingsForm),l(n,15,0,e.settingsForm),l(n,20,0,e.api_version>=1),l(n,24,0),l(n,33,0,"backstore"),l(n,36,0,"backstore"),l(n,38,0,e.backstores),l(n,40,0,e.backstores),l(n,44,0,e.settingsForm),l(n,47,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,8,0,n.component.image),l(n,10,0,t["ɵnov"](n,14).ngClassUntouched,t["ɵnov"](n,14).ngClassTouched,t["ɵnov"](n,14).ngClassPristine,t["ɵnov"](n,14).ngClassDirty,t["ɵnov"](n,14).ngClassValid,t["ɵnov"](n,14).ngClassInvalid,t["ɵnov"](n,14).ngClassPending),l(n,23,0,t["ɵnov"](n,24).hasErrors,t["ɵnov"](n,24).hasSuccess),l(n,30,0,t["ɵnov"](n,35).ngClassUntouched,t["ɵnov"](n,35).ngClassTouched,t["ɵnov"](n,35).ngClassPristine,t["ɵnov"](n,35).ngClassDirty,t["ɵnov"](n,35).ngClassValid,t["ɵnov"](n,35).ngClassInvalid,t["ɵnov"](n,35).ngClassPending,t["ɵnov"](n,36).validClass,t["ɵnov"](n,36).invalidClass)}))}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-image-settings-modal",[],null,null,null,N,_)),t["ɵdid"](1,114688,null,0,b.a,[C.a,S.a],null,null)],(function(l,n){l(n,1,0)}),null)}var T=t["ɵccf"]("cd-iscsi-target-image-settings-modal",b.a,F,{},{},[])},o8EM:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("PhyI"),i=e("8Y7J"),u=e("GiVz");let s=(()=>{class l{constructor(l){this.i18n=l,this.sections=[{heading:this.i18n("Quality of Service"),class:"quality-of-service",options:[{name:"rbd_qos_bps_limit",displayName:this.i18n("BPS Limit"),description:this.i18n("The desired limit of IO bytes per second."),type:t.b.bps},{name:"rbd_qos_iops_limit",displayName:this.i18n("IOPS Limit"),description:this.i18n("The desired limit of IO operations per second."),type:t.b.iops},{name:"rbd_qos_read_bps_limit",displayName:this.i18n("Read BPS Limit"),description:this.i18n("The desired limit of read bytes per second."),type:t.b.bps},{name:"rbd_qos_read_iops_limit",displayName:this.i18n("Read IOPS Limit"),description:this.i18n("The desired limit of read operations per second."),type:t.b.iops},{name:"rbd_qos_write_bps_limit",displayName:this.i18n("Write BPS Limit"),description:this.i18n("The desired limit of write bytes per second."),type:t.b.bps},{name:"rbd_qos_write_iops_limit",displayName:this.i18n("Write IOPS Limit"),description:this.i18n("The desired limit of write operations per second."),type:t.b.iops},{name:"rbd_qos_bps_burst",displayName:this.i18n("BPS Burst"),description:this.i18n("The desired burst limit of IO bytes."),type:t.b.bps},{name:"rbd_qos_iops_burst",displayName:this.i18n("IOPS Burst"),description:this.i18n("The desired burst limit of IO operations."),type:t.b.iops},{name:"rbd_qos_read_bps_burst",displayName:this.i18n("Read BPS Burst"),description:this.i18n("The desired burst limit of read bytes."),type:t.b.bps},{name:"rbd_qos_read_iops_burst",displayName:this.i18n("Read IOPS Burst"),description:this.i18n("The desired burst limit of read operations."),type:t.b.iops},{name:"rbd_qos_write_bps_burst",displayName:this.i18n("Write BPS Burst"),description:this.i18n("The desired burst limit of write bytes."),type:t.b.bps},{name:"rbd_qos_write_iops_burst",displayName:this.i18n("Write IOPS Burst"),description:this.i18n("The desired burst limit of write operations."),type:t.b.iops}]}]}static getOptionsFromSections(l){return l.map(l=>l.options).reduce((l,n)=>l.concat(n))}filterConfigOptionsByName(n){return l.getOptionsFromSections(this.sections).filter(l=>l.name===n)}getOptionValueByName(l,n,e=""){const t=this.filterConfigOptionsByName(l);return 1===t.length?t.pop()[n]:e}getWritableSections(){return this.sections.map(l=>(l.options=l.options.filter(l=>!l.readOnly),l))}getOptionFields(){return l.getOptionsFromSections(this.sections)}getWritableOptionFields(){return l.getOptionsFromSections(this.getWritableSections())}getOptionByName(l){return this.filterConfigOptionsByName(l).pop()}getDisplayName(l){return this.getOptionValueByName(l,"displayName")}getDescription(l){return this.getOptionValueByName(l,"description")}}return l.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new l(i["ɵɵinject"](u.a))},token:l,providedIn:"root"}),l})()},puGn:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("s7LF"),i=(e("XED3"),e("QFaf")),u=e("kvvV");e("kn/O");class s{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.createForm()}createForm(){this.editSiteNameForm=new i.a({siteName:new t.i("",{})})}ngOnInit(){this.editSiteNameForm.get("siteName").setValue(this.siteName),this.rbdMirroringService.getSiteName().subscribe(l=>{this.editSiteNameForm.get("siteName").setValue(l.site_name)})}update(){this.taskWrapper.wrapTaskAroundCall({task:new u.a("rbd/mirroring/site_name/edit",{}),call:this.rbdMirroringService.setSiteName(this.editSiteNameForm.getValue("siteName"))}).subscribe(void 0,()=>this.editSiteNameForm.setErrors({cdSubmitButton:!0}),()=>{this.rbdMirroringService.refresh(),this.modalRef.hide()})}}},rFfW:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("8Y7J"),i=e("s7LF"),u=e("oxzT"),s=e("QFaf"),a=e("PhyI");e("aXbf"),e("o8EM");class o{constructor(l,n){this.formatterService=l,this.rbdConfigurationService=n,this.changes=new t.EventEmitter,this.icons=u.a,this.ngDataReady=new t.EventEmitter,this.configurationType=a.b,this.sectionVisibility={}}ngOnInit(){const l=this.createConfigurationFormGroup();this.form.addControl("configuration",l),l.valueChanges.subscribe(()=>{this.changes.emit(this.getDirtyValues.bind(this))}),this.initializeData&&this.initializeData.subscribe(l=>{this.initialData=l.initialData;const n=l.sourceType;this.rbdConfigurationService.getWritableOptionFields().forEach(e=>{const t=l.initialData.filter(l=>l.name===e.name).pop();t&&t.source===n&&this.form.get(`configuration.${e.name}`).setValue(t.value)}),this.ngDataReady.emit()}),this.rbdConfigurationService.getWritableSections().forEach(l=>this.sectionVisibility[l.class]=!1)}getDirtyValues(l=!1,n){if(l&&!n)throw new Error("ProgrammingError: If local values shall be included, a proper localFieldType argument has to be provided, too");const e={};return this.rbdConfigurationService.getWritableOptionFields().forEach(t=>{const i=this.form.get("configuration").get(t.name);this.initialData&&this.initialData[t.name]===i.value||(i.dirty||l&&i.source===n)&&(e[t.name]=null===i.value?i.value:t.type===a.b.bps?this.formatterService.toBytes(i.value):t.type===a.b.milliseconds?this.formatterService.toMilliseconds(i.value):t.type===a.b.iops?this.formatterService.toIops(i.value):i.value)}),e}createConfigurationFormGroup(){const l=new s.a({});return this.rbdConfigurationService.getWritableOptionFields().forEach(n=>{let e;if(n.type!==a.b.milliseconds&&n.type!==a.b.iops&&n.type!==a.b.bps)throw new Error(`Type ${n.type} is unknown, you may need to add it to RbdConfiguration class`);e=new i.i(0,i.B.min(0)),l.addControl(n.name,e)}),l}reset(l){const n=this.form.get("configuration").get(l);n.disabled?(n.setValue(n.previousValue||0),n.enable(),n.previousValue||n.markAsPristine()):(n.previousValue=n.value,n.setValue(null),n.markAsDirty(),n.disable())}isDisabled(l){return this.form.get("configuration").get(l).disabled}toggleSectionVisibility(l){this.sectionVisibility[l]=!this.sectionVisibility[l]}}},roDX:function(l,n,e){"use strict";e.d(n,"a",(function(){return i})),e("my5R");var t=e("x38r");e("o4+5"),e("uYzU");class i{constructor(l,n,e,t){this.iscsiService=l,this.dimlessPipe=n,this.iscsiBackstorePipe=e,this.i18n=t,this.gateways=[],this.images=[]}ngOnInit(){this.gatewaysColumns=[{name:this.i18n("Name"),prop:"name"},{name:this.i18n("State"),prop:"state",flexGrow:1,cellTransformation:t.a.badge,customTemplateConfig:{map:{up:{class:"badge-success"},down:{class:"badge-danger"}}}},{name:this.i18n("# Targets"),prop:"num_targets"},{name:this.i18n("# Sessions"),prop:"num_sessions"}],this.imagesColumns=[{name:this.i18n("Pool"),prop:"pool"},{name:this.i18n("Image"),prop:"image"},{name:this.i18n("Backstore"),prop:"backstore",pipe:this.iscsiBackstorePipe},{name:this.i18n("Read Bytes"),prop:"stats_history.rd_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Write Bytes"),prop:"stats_history.wr_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Read Ops"),prop:"stats.rd",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("Write Ops"),prop:"stats.wr",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("A/O Since"),prop:"optimized_since",cellTemplate:this.iscsiRelativeDateTpl}]}refresh(){this.iscsiService.overview().subscribe(l=>{this.gateways=l.gateways,this.images=l.images,this.images.map(l=>(l.stats_history&&(l.stats_history.rd_bytes=l.stats_history.rd_bytes.map(l=>l[1]),l.stats_history.wr_bytes=l.stats_history.wr_bytes.map(l=>l[1])),l.cdIsBinary=!0,l))})}}},u0yg:function(l,n,e){"use strict";e.d(n,"b",(function(){return t})),e.d(n,"a",(function(){return i}));class t{}var i=function(l){return l[l.V1=1]="V1",l[l.V2=2]="V2",l}({})},u2XS:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("SVse"),u=e("25BL"),s=e("uIqm"),a=e("LOMR"),o=e("MP8s"),r=e("fxL3"),d=e("gk6K"),c=e("3ris"),m=e("GiVz"),p=e("uYzU"),h=e("iExv");e.d(n,"b",(function(){return g})),e.d(n,"c",(function(){return _})),e.d(n,"a",(function(){return y}));var g=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function f(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](2,null,["",""])),(l()(),t["ɵted"](-1,null,["   "])),(l()(),t["ɵeld"](4,0,null,null,6,"span",[["class","badge"]],null,null,null,null,null)),t["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["ɵpad"](7,1),t["ɵpad"](8,1),t["ɵpod"](9,{"badge-success":0,"badge-danger":1}),(l()(),t["ɵted"](10,null,[" "," "]))],(function(l,n){var e=l(n,9,0,l(n,7,0,"logged_in").includes(n.context.$implicit.data.status),l(n,8,0,"logged_out").includes(n.context.$implicit.data.status));l(n,6,0,"badge",e)}),(function(l,n){l(n,0,0,n.context.$implicit.data.cdIcon),l(n,2,0,n.context.$implicit.data.name),l(n,10,0,n.context.$implicit.data.status)}))}function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"div",[["class","col-6 metadata"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](2,null,["",""])),(l()(),t["ɵeld"](3,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,u.b,u.a)),t["ɵdid"](4,2867200,[[2,4],["detailTable",4]],0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],limit:[3,"limit"]},null)],(function(l,n){var e=n.component;l(n,4,0,e.data,e.columns,"flex",0)}),(function(l,n){l(n,2,0,n.component.title)}))}function b(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function C(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function S(l){return t["ɵvid"](0,[(l()(),t["ɵand"](16777216,null,null,1,null,b)),t["ɵdid"](1,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,C)),t["ɵdid"](3,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,void 0===n.context.row.default||n.context.row.default===n.context.row.current),l(n,3,0,void 0!==n.context.row.default&&n.context.row.default!==n.context.row.current)}),null)}function _(l){return t["ɵvid"](0,[t["ɵqud"](402653184,1,{highlightTpl:0}),t["ɵqud"](671088640,2,{content:0}),t["ɵqud"](671088640,3,{tree:0}),(l()(),t["ɵeld"](3,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](4,0,null,null,10,"div",[["class","col-6"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["iSCSI Topology"])),(l()(),t["ɵeld"](7,0,null,null,7,"tree-root",[],null,[[null,"updateData"],["body","keydown"],["body","mousedown"]],(function(l,n,e){var i=!0,u=l.component;return"body:keydown"===n&&(i=!1!==t["ɵnov"](l,9).onKeydown(e)&&i),"body:mousedown"===n&&(i=!1!==t["ɵnov"](l,9).onMousedown(e)&&i),"updateData"===n&&(i=!1!==u.onUpdateData()&&i),i}),a.b,a.a)),t["ɵprd"](131584,null,o.a,o.a,[]),t["ɵdid"](9,573440,[[3,4],["tree",4]],4,r.a,[o.a,d.a],{nodes:[0,"nodes"],options:[1,"options"]},{updateData:"updateData"}),t["ɵqud"](603979776,4,{loadingTemplate:0}),t["ɵqud"](603979776,5,{treeNodeTemplate:0}),t["ɵqud"](603979776,6,{treeNodeWrapperTemplate:0}),t["ɵqud"](603979776,7,{treeNodeFullTemplate:0}),(l()(),t["ɵand"](0,[[5,2],["treeNodeTemplate",2]],null,0,null,f)),(l()(),t["ɵand"](16777216,null,null,1,null,v)),t["ɵdid"](16,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,[[1,2],["highlightTpl",2]],null,0,null,S))],(function(l,n){var e=n.component;l(n,9,0,e.nodes,e.treeOptions),l(n,16,0,e.data)}),null)}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-details",[],null,null,null,_,g)),t["ɵdid"](1,638976,null,0,c.a,[m.a,p.a,h.a],null,null)],(function(l,n){l(n,1,0)}),null)}var y=t["ɵccf"]("cd-iscsi-target-details",c.a,R,{selection:"selection",settings:"settings",cephIscsiConfigVersion:"cephIscsiConfigVersion"},{},[])},xvu0:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("s7LF"),a=e("+gVj"),o=e("mXUL"),r=e("IZUe"),d=e("gp3X"),c=e("sb0X"),m=e("KVJa"),p=e("Z21x"),h=e("SVse"),g=e("sne2"),f=e("puGn"),v=e("LqlI"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return y}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,38,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Edit site name"])),(l()(),t["ɵeld"](4,0,null,1,34,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,33,"form",[["class","form"],["name","editSiteNameForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,s.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,20,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,5,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Edit the site name and click  "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Update"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](18,0,null,null,13,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](19,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](22,0,null,0,1,"label",[["class","col-form-label required"],["for","siteName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name"])),(l()(),t["ɵeld"](24,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","siteName"],["id","siteName"],["name","siteName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,26)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,26).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,26)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,26)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](25,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](26,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.e]),t["ɵdid"](28,671744,[[1,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](30,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](31,16384,null,0,a.h,[[3,s.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](32,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](33,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](34,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t}),d.b,d.a)),t["ɵdid"](35,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Update"])),(l()(),t["ɵeld"](37,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["ɵdid"](38,49152,null,0,p.a,[h.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.editSiteNameForm),l(n,10,0,e.editSiteNameForm),l(n,19,0),l(n,25,0,""),l(n,28,0,"siteName"),l(n,31,0,"siteName"),l(n,35,0,e.editSiteNameForm),l(n,38,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,18,0,t["ɵnov"](n,19).hasErrors,t["ɵnov"](n,19).hasSuccess),l(n,24,0,t["ɵnov"](n,30).ngClassUntouched,t["ɵnov"](n,30).ngClassTouched,t["ɵnov"](n,30).ngClassPristine,t["ɵnov"](n,30).ngClassDirty,t["ɵnov"](n,30).ngClassValid,t["ɵnov"](n,30).ngClassInvalid,t["ɵnov"](n,30).ngClassPending,t["ɵnov"](n,31).validClass,t["ɵnov"](n,31).invalidClass)}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-edit-site-mode-modal",[],null,null,null,_,S)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var y=t["ɵccf"]("cd-edit-site-mode-modal",f.a,R,{},{},[])}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/2.5b0a7ba1cfec198ba8ed.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/2.5b0a7ba1cfec198ba8ed.js
deleted file mode 100644 (file)
index 6bfe099..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"+26A":function(l,n,e){"use strict";e.d(n,"a",(function(){return d}));var t=e("s7LF"),i=e("LvDl"),u=e("GyhO"),s=e("cp0P"),a=e("NJ9Y"),o=(e("XED3"),e("QFaf")),r=e("kvvV");e("kn/O");class d{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.pools=[],this.directions=[{key:"rx-tx",desc:"Bidirectional"},{key:"rx",desc:"Unidirectional (receive-only)"}],this.createForm()}createForm(){this.importBootstrapForm=new o.a({siteName:new t.i("",{validators:[t.B.required]}),direction:new t.i("rx-tx",{}),pools:new t.k({},{validators:[this.validatePools()]}),token:new t.i("",{validators:[t.B.required,this.validateToken()]})})}ngOnInit(){this.rbdMirroringService.getSiteName().subscribe(l=>{this.importBootstrapForm.get("siteName").setValue(l.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(l=>{if(!l)return;this.pools=l.content_data.pools.reduce((l,n)=>(l.push({name:n.name,mirror_mode:n.mirror_mode}),l),[]);const n=this.importBootstrapForm.get("pools");i.each(this.pools,l=>{const e=l.name,i="disabled"===l.mirror_mode,u=n.controls[e];u?i&&u.disabled?u.enable():!i&&u.enabled&&(u.disable(),u.setValue(!0)):n.addControl(e,new t.i({value:!i,disabled:!i}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return l=>{let n=0;return i.each(l.controls,l=>{!0===l.value&&++n}),n>0?null:{requirePool:!0}}}validateToken(){return l=>{try{if(JSON.parse(atob(l.value)))return null}catch(n){}return{invalidToken:!0}}}import(){const l=[],n=[],e=this.importBootstrapForm.get("pools");i.each(e.controls,(e,t)=>{!0===e.value&&(l.push(t),e.disabled||n.push(t))});const t={mirror_mode:"image"};let o=Object(u.a)(this.rbdMirroringService.setSiteName(this.importBootstrapForm.getValue("siteName")),Object(s.a)(n.map(l=>this.rbdMirroringService.updatePool(l,t))));o=l.reduce((l,n)=>Object(u.a)(l,this.rbdMirroringService.importBootstrapToken(n,this.importBootstrapForm.getValue("direction"),this.importBootstrapForm.getValue("token"))),o).pipe(Object(a.a)());const d=()=>{this.rbdMirroringService.refresh(),this.importBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new r.a("rbd/mirroring/bootstrap/import",{}),call:o}).subscribe(void 0,d,()=>{d(),this.modalRef.hide()})}}},"0BYw":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("SVse"),a=e("EEJc"),o=e("ajRT"),r=e("mXUL"),d=e("IZUe"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("daK0"),v=e("LqlI"),b=e("aexS"),C=e("9nlD"),S=e("Ekvf"),_=e("F83c"),R=e("GiVz");e.d(n,"a",(function(){return q}));var y=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","pool"],["id","pool"],["name","pool"],["placeholder","Pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"pool"),l(n,6,0,"pool")}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](-1,null,["-- No rbd pools available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](-1,null,["-- Select a pool --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)}),(function(l,n){l(n,3,0,n.context.$implicit.pool_name)}))}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,1).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,k)),t["ɵdid"](8,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,I)),t["ɵdid"](10,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,E)),t["ɵdid"](12,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,N)),t["ɵdid"](14,278528,null,0,s.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,3,0,"pool"),l(n,6,0,"pool"),l(n,8,0,null===e.pools),l(n,10,0,null!==e.pools&&0===e.pools.length),l(n,12,0,null!==e.pools&&e.pools.length>0),l(n,14,0,e.pools)}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function T(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function D(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Namespace already exists."]))],null,null)}function P(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,50,"cd-modal",[],null,null,null,a.c,a.b)),t["ɵdid"](1,49152,null,0,o.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Create Namespace"])),(l()(),t["ɵeld"](4,0,null,1,46,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,45,"form",[["name","namespaceForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,32,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,12,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](13,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pool"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pool"])),(l()(),t["ɵeld"](18,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](20,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,F)),t["ɵdid"](22,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,T)),t["ɵdid"](24,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](25,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](26,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](29,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","namespace"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Name"])),(l()(),t["ɵeld"](31,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](32,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","namespace"],["id","namespace"],["name","namespace"],["placeholder","Namespace name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,33)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,33).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,33)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,33)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](33,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](35,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](37,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](38,4210688,null,0,d.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](39,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,V)),t["ɵdid"](41,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,D)),t["ɵdid"](43,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](44,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](45,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](46,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submit()&&t),t}),c.b,c.a)),t["ɵdid"](47,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Create Namespace"])),(l()(),t["ɵeld"](49,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,p.b,p.a)),t["ɵdid"](50,49152,null,0,h.a,[s.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.namespaceForm),l(n,10,0,e.namespaceForm),l(n,13,0),l(n,20,0,!e.poolPermission.read),l(n,22,0,e.poolPermission.read),l(n,24,0,e.namespaceForm.showError("pool",t["ɵnov"](n,7),"required")),l(n,26,0),l(n,35,0,"namespace"),l(n,38,0,""),l(n,39,0,"namespace"),l(n,41,0,e.namespaceForm.showError("namespace",t["ɵnov"](n,7),"required")),l(n,43,0,e.namespaceForm.showError("namespace",t["ɵnov"](n,7),"namespaceExists")),l(n,47,0,e.namespaceForm),l(n,50,0,"Close",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,12,0,t["ɵnov"](n,13).hasErrors,t["ɵnov"](n,13).hasSuccess),l(n,25,0,t["ɵnov"](n,26).hasErrors,t["ɵnov"](n,26).hasSuccess),l(n,32,0,t["ɵnov"](n,37).ngClassUntouched,t["ɵnov"](n,37).ngClassTouched,t["ɵnov"](n,37).ngClassPristine,t["ɵnov"](n,37).ngClassDirty,t["ɵnov"](n,37).ngClassValid,t["ɵnov"](n,37).ngClassInvalid,t["ɵnov"](n,37).ngClassPending,t["ɵnov"](n,39).validClass,t["ɵnov"](n,39).invalidClass)}))}function x(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-namespace-form-modal",[],null,null,null,P,y)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a,S.a,_.a,R.a],null,null)],(function(l,n){l(n,1,0)}),null)}var q=t["ɵccf"]("cd-rbd-namespace-form-modal",f.a,x,{},{},[])},"0rTx":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("s7LF"),a=e("+gVj"),o=e("mXUL"),r=e("IZUe"),d=e("SVse"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("2GqK"),v=e("F83c"),b=e("LqlI"),C=e("2EZI"),S=e("kn/O");e.d(n,"a",(function(){return k}));var _=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,47,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Restore Image"])),(l()(),t["ɵeld"](4,0,null,1,43,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,42,"form",[["class","form"],["name","restoreForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,s.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,29,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,12,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To restore"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](17,null,["","@",""])),(l()(),t["ɵted"](-1,null,[",  "])),(l()(),t["ɵeld"](19,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["type the image's new name and click"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](22,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Restore Image"])),(l()(),t["ɵted"](-1,null,[". "])),(l()(),t["ɵeld"](25,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](26,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](29,0,null,0,1,"label",[["class","col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["New Name"])),(l()(),t["ɵeld"](31,0,null,0,7,"input",[["autocomplete","off"],["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,32)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,32).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,32)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,32)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](32,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.e]),t["ɵdid"](34,671744,[[1,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](36,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](37,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](38,16384,null,0,a.h,[[3,s.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,R)),t["ɵdid"](40,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](41,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](42,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](43,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.restore()&&t),t}),c.b,c.a)),t["ɵdid"](44,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Restore Image"])),(l()(),t["ɵeld"](46,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,p.b,p.a)),t["ɵdid"](47,49152,null,0,h.a,[d.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.restoreForm),l(n,10,0,e.restoreForm),l(n,26,0),l(n,34,0,"name"),l(n,37,0,""),l(n,38,0,"name"),l(n,40,0,e.restoreForm.showError("name",t["ɵnov"](n,7),"required")),l(n,44,0,e.restoreForm),l(n,47,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,17,0,e.imageSpec,e.imageId),l(n,25,0,t["ɵnov"](n,26).hasErrors,t["ɵnov"](n,26).hasSuccess),l(n,31,0,t["ɵnov"](n,36).ngClassUntouched,t["ɵnov"](n,36).ngClassTouched,t["ɵnov"](n,36).ngClassPristine,t["ɵnov"](n,36).ngClassDirty,t["ɵnov"](n,36).ngClassValid,t["ɵnov"](n,36).ngClassInvalid,t["ɵnov"](n,36).ngClassPending,t["ɵnov"](n,38).validClass,t["ɵnov"](n,38).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-trash-restore-modal",[],null,null,null,y,_)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a,S.a],null,null)],(function(l,n){l(n,1,0)}),null)}var k=t["ɵccf"]("cd-rbd-trash-restore-modal",f.a,w,{},{},[])},"2GqK":function(l,n,e){"use strict";e.d(n,"a",(function(){return u})),e("F83c"),e("2EZI");var t=e("kvvV"),i=e("jVDg");e("kn/O");class u{constructor(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t}ngOnInit(){this.imageSpec=new i.a(this.poolName,this.namespace,this.imageName).toString(),this.restoreForm=this.fb.group({name:this.imageName})}restore(){const l=this.restoreForm.getValue("name"),n=new i.a(this.poolName,this.namespace,this.imageId);this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/restore",{image_id_spec:n.toString(),new_image_name:l}),call:this.rbdService.restoreTrash(n,l)}).subscribe(void 0,()=>{this.restoreForm.setErrors({cdSubmitButton:!0})},()=>{this.modalRef.hide()})}}},"2JDI":function(l,n,e){"use strict";e.d(n,"a",(function(){return a}));var t=e("wd/R"),i=(e("F83c"),e("2EZI"),e("1Ni5")),u=e("kvvV"),s=e("jVDg");e("kn/O");class a{constructor(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t,this.minDate=new Date,this.bsConfig={dateInputFormat:"YYYY-MM-DD HH:mm:ss",containerClass:"theme-default"},this.createForm()}createForm(){this.moveForm=this.fb.group({expiresAt:["",[i.a.custom("format",l=>!(""===l||t(l,"YYYY-MM-DD HH:mm:ss").isValid())),i.a.custom("expired",l=>t().isAfter(l))]]})}ngOnInit(){this.imageSpec=new s.a(this.poolName,this.namespace,this.imageName),this.imageSpecStr=this.imageSpec.toString(),this.pattern=`${this.poolName}/${this.imageName}`}moveImage(){let l=0;const n=this.moveForm.getValue("expiresAt");n&&(l=t(n).diff(t(),"seconds",!0)),l<0&&(l=0),this.taskWrapper.wrapTaskAroundCall({task:new u.a("rbd/trash/move",{image_spec:this.imageSpecStr}),call:this.rbdService.moveTrash(this.imageSpec,l)}).subscribe(void 0,void 0,()=>{this.modalRef.hide()})}}},"3IYD":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("SVse"),u=e("8xTl"),s=e("EEJc"),a=e("ajRT"),o=e("s7LF"),r=e("+gVj"),d=e("mXUL"),c=e("IZUe"),m=e("gp3X"),p=e("sb0X"),h=e("KVJa"),g=e("Z21x"),f=e("sne2"),v=e("Fd71"),b=e("LqlI"),C=e("F83c"),S=e("VXsX"),_=e("9nlD"),R=e("GiVz");e.d(n,"a",(function(){return E}));var y=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function k(l){return t["ɵvid"](0,[t["ɵpid"](0,i.TitleCasePipe,[]),t["ɵpid"](0,u.a,[]),(l()(),t["ɵeld"](2,0,null,null,39,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](3,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),t["ɵted"](5,null,[""," ",""])),t["ɵppd"](6,1),t["ɵppd"](7,1),(l()(),t["ɵeld"](8,0,null,1,33,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](9,0,null,null,32,"form",[["name","snapshotForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,11).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,11).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,14).onSubmit()&&i),i}),null,null)),t["ɵdid"](10,16384,null,0,o.G,[],null,null),t["ɵdid"](11,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,o.d,null,[o.l]),t["ɵdid"](13,16384,null,0,o.s,[[4,o.d]],null,null),t["ɵdid"](14,16384,null,0,r.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](15,0,null,null,17,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](16,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](17,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](20,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","snapshotName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Name"])),(l()(),t["ɵeld"](22,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](23,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","snapshotName"],["id","snapshotName"],["name","snapshotName"],["placeholder","Snapshot name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,24)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,24).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,24)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,24)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](24,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](26,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](28,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](29,4210688,null,0,c.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](30,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](32,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](33,0,null,null,8,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](34,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](35,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submit()&&t),t}),m.b,m.a)),t["ɵdid"](36,114688,null,0,p.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](37,0,[""," ",""])),t["ɵppd"](38,1),t["ɵppd"](39,1),(l()(),t["ɵeld"](40,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,h.b,h.a)),t["ɵdid"](41,49152,null,0,g.a,[i.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.modalRef),l(n,11,0,e.snapshotForm),l(n,14,0,e.snapshotForm),l(n,17,0),l(n,26,0,"snapshotName"),l(n,29,0,""),l(n,30,0,"snapshotName"),l(n,32,0,e.snapshotForm.showError("snapshotName",t["ɵnov"](n,11),"required")),l(n,36,0,e.snapshotForm),l(n,41,0,"Close",e.modalRef.hide)}),(function(l,n){var e=n.component,i=t["ɵunv"](n,5,0,l(n,6,0,t["ɵnov"](n,0),e.action)),u=t["ɵunv"](n,5,1,l(n,7,0,t["ɵnov"](n,1),e.resource));l(n,5,0,i,u),l(n,9,0,t["ɵnov"](n,13).ngClassUntouched,t["ɵnov"](n,13).ngClassTouched,t["ɵnov"](n,13).ngClassPristine,t["ɵnov"](n,13).ngClassDirty,t["ɵnov"](n,13).ngClassValid,t["ɵnov"](n,13).ngClassInvalid,t["ɵnov"](n,13).ngClassPending),l(n,16,0,t["ɵnov"](n,17).hasErrors,t["ɵnov"](n,17).hasSuccess),l(n,23,0,t["ɵnov"](n,28).ngClassUntouched,t["ɵnov"](n,28).ngClassTouched,t["ɵnov"](n,28).ngClassPristine,t["ɵnov"](n,28).ngClassDirty,t["ɵnov"](n,28).ngClassValid,t["ɵnov"](n,28).ngClassInvalid,t["ɵnov"](n,28).ngClassPending,t["ɵnov"](n,30).validClass,t["ɵnov"](n,30).invalidClass);var s=t["ɵunv"](n,37,0,l(n,38,0,t["ɵnov"](n,0),e.action)),a=t["ɵunv"](n,37,1,l(n,39,0,t["ɵnov"](n,1),e.resource));l(n,37,0,s,a)}))}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-snapshot-form-modal",[],null,null,null,k,y)),t["ɵdid"](1,114688,null,0,v.a,[b.a,C.a,S.a,_.a,R.a,f.b],null,null)],(function(l,n){l(n,1,0)}),null)}var E=t["ɵccf"]("cd-rbd-snapshot-form-modal",v.a,I,{},{},[])},"3ris":function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("yYhs"),i=e("LvDl"),u=(e("uIqm"),e("oxzT"));e("iExv"),e("uYzU");class s{constructor(l,n,e){this.i18n=l,this.iscsiBackstorePipe=n,this.booleanTextPipe=e,this.icons=u.a,this.metadata={},this.nodes=[],this.treeOptions={useVirtualScroll:!0,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}}}set content(l){this.detailTable=l,l&&l.updateColumns()}ngOnInit(){this.columns=[{prop:"displayName",name:this.i18n("Name"),flexGrow:1,cellTemplate:this.highlightTpl},{prop:"current",name:this.i18n("Current"),flexGrow:1,cellTemplate:this.highlightTpl},{prop:"default",name:this.i18n("Default"),flexGrow:1,cellTemplate:this.highlightTpl}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.generateTree()),this.data=void 0}generateTree(){const l=i.cloneDeep(this.selectedItem.target_controls);this.cephIscsiConfigVersion>10&&i.extend(l,i.cloneDeep(this.selectedItem.auth)),this.metadata={root:l};const n={target:{expanded:i.join(this.selectedItem.cdExecuting?[u.a.large,u.a.spinner,u.a.spin]:[u.a.large,u.a.bullseye]," ")},initiators:{expanded:i.join([u.a.large,u.a.user]," "),leaf:i.join([u.a.user]," ")},groups:{expanded:i.join([u.a.large,u.a.users]," "),leaf:i.join([u.a.users]," ")},disks:{expanded:i.join([u.a.large,u.a.disk]," "),leaf:i.join([u.a.disk]," ")},portals:{expanded:i.join([u.a.large,u.a.server]," "),leaf:i.join([u.a.server]," ")}},e=[];i.forEach(this.selectedItem.disks,l=>{const t="disk_"+l.pool+"_"+l.image;this.metadata[t]={controls:l.controls,backstore:l.backstore},["wwn","lun"].forEach(n=>{n in l&&(this.metadata[t][n]=l[n])}),e.push({name:`${l.pool}/${l.image}`,cdId:t,cdIcon:n.disks.leaf})});const t=[];i.forEach(this.selectedItem.portals,l=>{t.push({name:`${l.host}:${l.ip}`,cdIcon:n.portals.leaf})});const s=[];i.forEach(this.selectedItem.clients,l=>{const e=i.cloneDeep(l.auth);l.info&&(i.extend(e,l.info),delete e.state,i.forEach(Object.keys(l.info.state),n=>{e[n.toLowerCase()]=l.info.state[n]})),this.metadata["client_"+l.client_iqn]=e;const t=[];l.luns.forEach(l=>{t.push({name:`${l.pool}/${l.image}`,cdId:"disk_"+l.pool+"_"+l.image,cdIcon:n.disks.leaf})});let u="";l.info&&(u=Object.keys(l.info.state).includes("LOGGED_IN")?"logged_in":"logged_out"),s.push({name:l.client_iqn,status:u,cdId:"client_"+l.client_iqn,children:t,cdIcon:n.initiators.leaf})});const a=[];i.forEach(this.selectedItem.groups,l=>{const e=[];l.disks.forEach(l=>{e.push({name:`${l.pool}/${l.image}`,cdId:"disk_"+l.pool+"_"+l.image,cdIcon:n.disks.leaf})});const t=[];l.members.forEach(l=>{t.push({name:l,cdId:"client_"+l})}),a.push({name:l.group_id,cdIcon:n.groups.leaf,children:[{name:"Disks",children:e,cdIcon:n.disks.expanded},{name:"Initiators",children:t,cdIcon:n.initiators.expanded}]})}),this.nodes=[{name:this.selectedItem.target_iqn,cdId:"root",isExpanded:!0,cdIcon:n.target.expanded,children:[{name:"Disks",isExpanded:!0,children:e,cdIcon:n.disks.expanded},{name:"Portals",isExpanded:!0,children:t,cdIcon:n.portals.expanded},{name:"Initiators",isExpanded:!0,children:s,cdIcon:n.initiators.expanded},{name:"Groups",isExpanded:!0,children:a,cdIcon:n.groups.expanded}]}]}format(l){return"boolean"==typeof l?this.booleanTextPipe.transform(l):l}onNodeSelected(l,n){if(t.a.ACTIVATE(l,n,!0),n.data.cdId){this.title=n.data.name;const l=this.metadata[n.data.cdId]||{};"root"===n.data.cdId?(this.columns[2].isHidden=!1,this.data=i.map(this.settings.target_default_controls,(n,e)=>({displayName:e,default:n=this.format(n),current:i.isUndefined(l[e])?n:this.format(l[e])})),this.cephIscsiConfigVersion>10&&["user","password","mutual_user","mutual_password"].forEach(n=>{this.data.push({displayName:n,default:null,current:l[n]})})):n.data.cdId.toString().startsWith("disk_")?(this.columns[2].isHidden=!1,this.data=i.map(this.settings.disk_default_controls[l.backstore],(n,e)=>({displayName:e,default:n=this.format(n),current:i.isUndefined(l.controls[e])?n:this.format(l.controls[e])})),this.data.push({displayName:"backstore",default:this.iscsiBackstorePipe.transform(this.settings.default_backstore),current:this.iscsiBackstorePipe.transform(l.backstore)}),["wwn","lun"].forEach(n=>{n in l&&this.data.push({displayName:n,default:void 0,current:l[n]})})):(this.columns[2].isHidden=!0,this.data=i.map(l,(l,n)=>({displayName:n,default:void 0,current:this.format(l)})))}else this.data=void 0;this.detailTable&&this.detailTable.updateColumns()}onUpdateData(){this.tree.treeModel.expandAll()}}},"5GyT":function(l,n,e){"use strict";var t=e("LvDl"),i=(e("F83c"),e("+fVR")),u=e("OLbh"),s=e("0+/T"),a=(e("sne2"),e("uIqm"),e("x38r")),o=e("oxzT"),r=e("yJti"),d=e("vCyI"),c=e("kvvV"),m=e("jVDg"),p=(e("Fgil"),e("o4+5"),e("aexS"),e("VTlA"),e("kn/O"),e("EgGo")),h=e("2JDI");class g{}e.d(n,"a",(function(){return v})),e.d(n,"b",(function(){return f}));const f=new p.a("block/rbd");class v extends i.a{constructor(l,n,e,t,i,u,s,a,r,c){super(),this.authStorageService=l,this.rbdService=n,this.dimlessBinaryPipe=e,this.dimlessPipe=t,this.modalService=i,this.taskWrapper=u,this.taskListService=s,this.i18n=a,this.urlBuilder=r,this.actionLabels=c,this.selection=new d.a,this.builders={"rbd/create":l=>this.createRbdFromTask(l.pool_name,l.namespace,l.image_name),"rbd/delete":l=>this.createRbdFromTaskImageSpec(l.image_spec),"rbd/clone":l=>this.createRbdFromTask(l.child_pool_name,l.child_namespace,l.child_image_name),"rbd/copy":l=>this.createRbdFromTask(l.dest_pool_name,l.dest_namespace,l.dest_image_name)},this.permission=this.authStorageService.getPermissions().rbdImage;const p=()=>this.selection.first()&&new m.a(this.selection.first().pool_name,this.selection.first().namespace,this.selection.first().name).toStringEncoded();this.tableActions=[{permission:"create",icon:o.a.add,routerLink:()=>this.urlBuilder.getCreate(),canBePrimary:l=>!l.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:o.a.edit,routerLink:()=>this.urlBuilder.getEdit(p()),name:this.actionLabels.EDIT},{permission:"create",canBePrimary:l=>l.hasSingleSelection,disable:l=>!l.hasSingleSelection||l.first().cdExecuting,icon:o.a.copy,routerLink:()=>`/block/rbd/copy/${p()}`,name:this.actionLabels.COPY},{permission:"update",disable:l=>!l.hasSingleSelection||l.first().cdExecuting||!l.first().parent,icon:o.a.flatten,click:()=>this.flattenRbdModal(),name:this.actionLabels.FLATTEN},{permission:"delete",icon:o.a.destroy,click:()=>this.deleteRbdModal(),name:this.actionLabels.DELETE,disable:l=>!this.selection.first()||!this.selection.hasSingleSelection||this.hasClonedSnapshots(l.first()),disableDesc:()=>this.getDeleteDisableDesc()},{permission:"delete",icon:o.a.trash,click:()=>this.trashRbdModal(),name:this.actionLabels.TRASH}]}createRbdFromTaskImageSpec(l){const n=m.a.fromString(l);return this.createRbdFromTask(n.poolName,n.namespace,n.imageName)}createRbdFromTask(l,n,e){const t=new g;return t.id="-1",t.name=e,t.namespace=n,t.pool_name=l,t}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:2,cellTransformation:a.a.executing},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:2},{name:this.i18n("Namespace"),prop:"namespace",flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Objects"),prop:"num_objs",flexGrow:1,cellClass:"text-right",pipe:this.dimlessPipe},{name:this.i18n("Object size"),prop:"obj_size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Total provisioned"),prop:"total_disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Parent"),prop:"parent",flexGrow:2,cellTemplate:this.parentTpl}],this.taskListService.init(()=>this.rbdService.list(),l=>this.prepareResponse(l),l=>this.images=l,()=>this.onFetchError(),l=>["rbd/clone","rbd/copy","rbd/create","rbd/delete","rbd/edit","rbd/flatten","rbd/trash/move"].includes(l.name),(l,n)=>{let e;switch(n.name){case"rbd/copy":e=new m.a(n.metadata.dest_pool_name,n.metadata.dest_namespace,n.metadata.dest_image_name).toString();break;case"rbd/clone":e=new m.a(n.metadata.child_pool_name,n.metadata.child_namespace,n.metadata.child_image_name).toString();break;case"rbd/create":e=new m.a(n.metadata.pool_name,n.metadata.namespace,n.metadata.image_name).toString();break;default:e=n.metadata.image_spec}return e===new m.a(l.pool_name,l.namespace,l.name).toString()},this.builders)}onFetchError(){this.table.reset(),this.viewCacheStatusList=[{status:r.a.ValueException}]}prepareResponse(l){let n=[];const e={};l.forEach(l=>{t.isUndefined(e[l.status])&&(e[l.status]=[]),e[l.status].push(l.pool_name),n=n.concat(l.value)});const i=[];return t.forEach(e,(l,n)=>{i.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=i,n}updateSelection(l){this.selection=l}deleteRbdModal(){const l=this.selection.first().pool_name,n=this.selection.first().namespace,e=this.selection.first().name,t=new m.a(l,n,e);this.modalRef=this.modalService.show(s.a,{initialState:{itemDescription:"RBD",itemNames:[t],bodyTemplate:this.deleteTpl,bodyContext:{hasSnapshots:this.hasSnapshots(),snapshots:this.listProtectedSnapshots()},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/delete",{image_spec:t.toString()}),call:this.rbdService.delete(t)})}})}trashRbdModal(){const l={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,hasSnapshots:this.hasSnapshots()};this.modalRef=this.modalService.show(h.a,{initialState:l})}flattenRbd(l){this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/flatten",{image_spec:l.toString()}),call:this.rbdService.flatten(l)}).subscribe(void 0,void 0,()=>{this.modalRef.hide()})}flattenRbdModal(){const l=this.selection.first().pool_name,n=this.selection.first().namespace,e=this.selection.first().name,t=this.selection.first().parent,i=new m.a(t.pool_name,t.pool_namespace,t.image_name),s=new m.a(l,n,e),a={titleText:"RBD flatten",buttonText:"Flatten",bodyTpl:this.flattenTpl,bodyData:{parent:`${i}@${t.snap_name}`,child:s.toString()},onSubmit:()=>{this.flattenRbd(s)}};this.modalRef=this.modalService.show(u.a,{initialState:a})}hasSnapshots(){return(this.selection.first().snapshots||[]).length>0}hasClonedSnapshots(l){return(l.snapshots||[]).some(l=>l.children&&l.children.length>0)}listProtectedSnapshots(){return this.selection.first().snapshots.reduce((l,n)=>(n.is_protected&&l.push(n.name),l),[])}getDeleteDisableDesc(){const l=this.selection.first();return l&&this.hasClonedSnapshots(l)?this.i18n("This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD."):""}}},BH9v:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("aXbf");class s{constructor(l,n){this.control=l,this.formatter=n}setValue(l){const n=this.formatter.toMilliseconds(l);this.control.control.setValue(`${n} ms`)}ngOnInit(){this.setValue(this.control.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.control.value))}onUpdate(l){this.setValue(l)}}var a=e("+gVj"),o=e("LvDl"),r=e("IzCI");class d{constructor(l,n,e,i){this.elementRef=l,this.control=n,this.dimlessBinaryPerSecondPipe=e,this.formatter=i,this.ngModelChange=new t.EventEmitter,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.el.value))}setValue(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");const n=this.formatter.toBytes(l,0),e=this.round(n);this.el.value=this.dimlessBinaryPerSecondPipe.transform(e),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(l){if(null!==l&&0!==l){if(!o.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!o.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!o.isUndefined(this.roundPower)){const n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l}onBlur(l){this.setValue(l)}}class c{constructor(l,n){this.formatter=l,this.ngControl=n}setValue(l){const n=this.formatter.toIops(l);this.ngControl.control.setValue(`${n} IOPS`)}ngOnInit(){this.setValue(this.ngControl.value),this.ngDataReady&&this.ngDataReady.subscribe(()=>this.setValue(this.ngControl.value))}onUpdate(l){this.setValue(l)}}var m=e("mXUL"),p=e("4HWh"),h=e("p4Cf"),g=e("SVse");e("rFfW"),e("o8EM"),e.d(n,"a",(function(){return f})),e.d(n,"b",(function(){return y}));var f=t["ɵcrt"]({encapsulation:0,styles:[[".collapsible[_ngcontent-%COMP%]{cursor:pointer;-moz-user-select:none;user-select:none}"]],data:{}});function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,7,"input",[["cdMilliseconds",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,2)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,2)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,2)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,7).onUpdate(e.target.value)&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](4,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,81920,null,0,s,[i.q,u.a],{ngDataReady:[0,"ngDataReady"]},null),t["ɵdid"](8,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady),l(n,8,0,n.parent.context.$implicit.name)}),(function(l,n){l(n,1,1,[n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,8).validClass,t["ɵnov"](n,8).invalidClass])}))}function b(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,7,"input",[["cdDimlessBinaryPerSecond",""],["class","form-control"],["defaultUnit","b"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,2)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,2)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,2)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,7).onBlur(e.target.value)&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](4,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,81920,null,0,d,[t.ElementRef,i.q,r.a,u.a],{ngDataReady:[0,"ngDataReady"],defaultUnit:[1,"defaultUnit"]},null),t["ɵdid"](8,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady,"b"),l(n,8,0,n.parent.context.$implicit.name)}),(function(l,n){l(n,1,1,[n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,8).validClass,t["ɵnov"](n,8).invalidClass])}))}function C(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,7,"input",[["cdIops",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,2)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,2)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,2)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,7).onUpdate(e.target.value)&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](4,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,81920,null,0,c,[u.a,i.q],{ngDataReady:[0,"ngDataReady"]},null),t["ɵdid"](8,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady),l(n,8,0,n.parent.context.$implicit.name)}),(function(l,n){l(n,1,1,[n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,8).validClass,t["ɵnov"](n,8).invalidClass])}))}function S(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The mininum value is 0"]))],null,null)}function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,m.b,m.a)),t["ɵdid"](1,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](5,null,["",""])),(l()(),t["ɵeld"](6,0,null,null,2,"cd-helper",[],null,null,null,p.b,p.a)),t["ɵdid"](7,49152,null,0,h.a,[],null,null),(l()(),t["ɵted"](8,0,["",""])),(l()(),t["ɵeld"](9,0,null,0,20,"div",[],[[8,"className",0]],null,null,null,null)),(l()(),t["ɵeld"](10,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["ɵeld"](11,0,null,null,7,null,null,null,null,null,null,null)),t["ɵdid"](12,16384,null,0,g.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,v)),t["ɵdid"](14,278528,null,0,g.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,g.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,b)),t["ɵdid"](16,278528,null,0,g.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,g.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,C)),t["ɵdid"](18,278528,null,0,g.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,g.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵeld"](19,0,null,null,8,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),t["ɵeld"](20,0,null,null,7,"button",[["class","btn btn-light"],["data-toggle","button"],["title","Remove the local configuration value. The parent configuration value will be inherited and used instead."],["type","button"]],null,[[null,"click"]],(function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.reset(l.context.$implicit.name)&&t),t}),null,null)),t["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](22,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["ɵpod"](23,{active:0}),(l()(),t["ɵeld"](24,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),t["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](26,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵpad"](27,1),(l()(),t["ɵand"](16777216,null,null,1,null,S)),t["ɵdid"](29,16384,null,0,g.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,12,0,n.context.$implicit.type),l(n,14,0,e.configurationType.milliseconds),l(n,16,0,e.configurationType.bps),l(n,18,0,e.configurationType.iops);var i=l(n,23,0,e.isDisabled(n.context.$implicit.name));l(n,22,0,"btn btn-light",i);var u=l(n,27,0,e.icons.erase);l(n,26,0,u),l(n,29,0,e.form.showError("configuration."+n.context.$implicit.name,t["ɵnov"](n.parent.parent,0),"min"))}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).hasErrors,t["ɵnov"](n,1).hasSuccess),l(n,4,0,n.context.$implicit.name),l(n,5,0,n.context.$implicit.displayName),l(n,8,0,n.context.$implicit.description),l(n,9,0,t["ɵinlineInterpolate"](1,"cd-col-form-input ",n.parent.context.$implicit.heading,""))}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,5,"h3",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["ɵeld"](2,0,null,null,4,"span",[["class","collapsible"]],null,[[null,"click"]],(function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.toggleSectionVisibility(l.context.$implicit.class)&&t),t}),null,null)),(l()(),t["ɵted"](3,null,[" "," "])),(l()(),t["ɵeld"](4,0,null,null,2,"i",[["aria-hidden","true"]],null,null,null,null,null)),t["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](6,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(l()(),t["ɵeld"](7,0,null,null,2,"div",[],[[8,"className",0],[8,"hidden",0]],null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,_)),t["ɵdid"](9,278528,null,0,g.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,6,0,e.sectionVisibility[n.context.$implicit.class]?e.icons.minusCircle:e.icons.addCircle),l(n,9,0,n.context.$implicit.options)}),(function(l,n){var e=n.component;l(n,3,0,n.context.$implicit.heading),l(n,7,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.class,""),!e.sectionVisibility[n.context.$implicit.class])}))}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,[["cfgFormGroup",1]],null,8,"fieldset",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,1).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,1).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,4).onSubmit()&&i),i}),null,null)),t["ɵdid"](1,540672,null,0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](3,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](4,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["RBD Configuration"])),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](8,278528,null,0,g.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.form.get("configuration")),l(n,4,0,e.form.get("configuration")),l(n,8,0,e.rbdConfigurationService.sections)}),(function(l,n){l(n,0,0,t["ɵnov"](n,3).ngClassUntouched,t["ɵnov"](n,3).ngClassTouched,t["ɵnov"](n,3).ngClassPristine,t["ɵnov"](n,3).ngClassDirty,t["ɵnov"](n,3).ngClassValid,t["ɵnov"](n,3).ngClassInvalid,t["ɵnov"](n,3).ngClassPending)}))}},E7j4:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("EEJc"),a=e("ajRT"),o=e("mXUL"),r=e("IZUe"),d=e("SVse"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("+26A"),v=e("LqlI"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return F}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.key),l(n,2,0,n.context.$implicit.key)}),(function(l,n){l(n,3,0,n.context.$implicit.desc)}))}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.checked)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.c,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.c]),t["ɵdid"](4,671744,[[5,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](9,null,["",""]))],(function(l,n){l(n,4,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,7,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""))}),(function(l,n){l(n,1,1,[t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,7).validClass,t["ɵnov"](n,7).invalidClass]),l(n,8,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,9,0,n.context.$implicit.name)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["At least one pool is required."]))],null,null)}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The token is invalid."]))],null,null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,87,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](1,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Import Bootstrap Token"])),(l()(),t["ɵeld"](4,0,null,1,83,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,82,"form",[["class","form"],["name","importBootstrapForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,69,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,5,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To import a bootstrap token which was created by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, provide the generated token, and click "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Import"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](18,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](19,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](22,0,null,0,1,"label",[["class","col-form-label required"],["for","siteName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name"])),(l()(),t["ɵeld"](24,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","siteName"],["id","siteName"],["name","siteName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,26)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,26).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,26)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,26)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](25,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](26,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](28,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](30,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](31,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,_)),t["ɵdid"](33,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](34,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](35,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](38,0,null,0,2,"label",[["class","col-form-label"],["for","direction"]],null,null,null,null,null)),(l()(),t["ɵeld"](39,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Direction"])),(l()(),t["ɵeld"](41,0,null,0,8,"select",[["class","form-control custom-select"],["formControlName","direction"],["id","direction"],["name","direction"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,42).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,42).onTouched()&&i),i}),null,null)),t["ɵdid"](42,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](44,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](46,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](47,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](49,278528,null,0,d.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵeld"](50,0,null,null,12,"div",[["class","form-group"],["formGroupName","pools"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](51,212992,null,0,i.m,[[3,i.d],[8,null],[8,null]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.d,null,[i.m]),t["ɵdid"](53,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](54,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](57,0,null,0,1,"label",[["class","col-form-label required"],["for","pools"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pools"])),(l()(),t["ɵand"](16777216,null,0,1,null,y)),t["ɵdid"](60,278528,null,0,d.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,w)),t["ɵdid"](62,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](63,0,null,null,17,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](64,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](67,0,null,0,1,"label",[["class","col-form-label required"],["for","token"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Token"])),(l()(),t["ɵeld"](69,0,null,0,7,"textarea",[["class","form-control resize-vertical"],["formControlName","token"],["id","token"],["placeholder","Generated token..."]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,70)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,70).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,70)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,70)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](70,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](72,671744,[[7,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](74,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](75,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵted"](-1,null,["          "])),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](78,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,I)),t["ɵdid"](80,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](81,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](82,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](83,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.import()&&t),t}),c.b,c.a)),t["ɵdid"](84,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Import"])),(l()(),t["ɵeld"](86,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,p.b,p.a)),t["ɵdid"](87,49152,null,0,h.a,[d.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.importBootstrapForm),l(n,10,0,e.importBootstrapForm),l(n,19,0),l(n,25,0,""),l(n,28,0,"siteName"),l(n,31,0,"siteName"),l(n,33,0,e.importBootstrapForm.showError("siteName",t["ɵnov"](n,7),"required")),l(n,35,0),l(n,44,0,"direction"),l(n,47,0,"direction"),l(n,49,0,e.directions),l(n,51,0,"pools"),l(n,54,0),l(n,60,0,e.pools),l(n,62,0,e.importBootstrapForm.showError("pools",t["ɵnov"](n,7),"requirePool")),l(n,64,0),l(n,72,0,"token"),l(n,75,0,"token"),l(n,78,0,e.importBootstrapForm.showError("token",t["ɵnov"](n,7),"required")),l(n,80,0,e.importBootstrapForm.showError("token",t["ɵnov"](n,7),"invalidToken")),l(n,84,0,e.importBootstrapForm),l(n,87,0,"Close",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,18,0,t["ɵnov"](n,19).hasErrors,t["ɵnov"](n,19).hasSuccess),l(n,24,0,t["ɵnov"](n,30).ngClassUntouched,t["ɵnov"](n,30).ngClassTouched,t["ɵnov"](n,30).ngClassPristine,t["ɵnov"](n,30).ngClassDirty,t["ɵnov"](n,30).ngClassValid,t["ɵnov"](n,30).ngClassInvalid,t["ɵnov"](n,30).ngClassPending,t["ɵnov"](n,31).validClass,t["ɵnov"](n,31).invalidClass),l(n,34,0,t["ɵnov"](n,35).hasErrors,t["ɵnov"](n,35).hasSuccess),l(n,41,0,t["ɵnov"](n,46).ngClassUntouched,t["ɵnov"](n,46).ngClassTouched,t["ɵnov"](n,46).ngClassPristine,t["ɵnov"](n,46).ngClassDirty,t["ɵnov"](n,46).ngClassValid,t["ɵnov"](n,46).ngClassInvalid,t["ɵnov"](n,46).ngClassPending,t["ɵnov"](n,47).validClass,t["ɵnov"](n,47).invalidClass),l(n,50,0,t["ɵnov"](n,53).ngClassUntouched,t["ɵnov"](n,53).ngClassTouched,t["ɵnov"](n,53).ngClassPristine,t["ɵnov"](n,53).ngClassDirty,t["ɵnov"](n,53).ngClassValid,t["ɵnov"](n,53).ngClassInvalid,t["ɵnov"](n,53).ngClassPending,t["ɵnov"](n,54).hasErrors,t["ɵnov"](n,54).hasSuccess),l(n,63,0,t["ɵnov"](n,64).hasErrors,t["ɵnov"](n,64).hasSuccess),l(n,69,0,t["ɵnov"](n,74).ngClassUntouched,t["ɵnov"](n,74).ngClassTouched,t["ɵnov"](n,74).ngClassPristine,t["ɵnov"](n,74).ngClassDirty,t["ɵnov"](n,74).ngClassValid,t["ɵnov"](n,74).ngClassInvalid,t["ɵnov"](n,74).ngClassPending,t["ɵnov"](n,75).validClass,t["ɵnov"](n,75).invalidClass)}))}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-bootstrap-import-modal",[],null,null,null,E,S)),t["ɵdid"](1,245760,null,0,f.a,[v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var F=t["ɵccf"]("cd-bootstrap-import-modal",f.a,N,{},{},[])},EFGL:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("SVse"),u=e("IzCI"),s=e("aXbf"),a=e("dEH0"),o=e("BQkM"),r=e("25BL"),d=e("uIqm");e("aAWM"),e("o8EM"),e("GiVz"),e.d(n,"a",(function(){return c})),e.d(n,"b",(function(){return _}));var c=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function m(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)}))}function p(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)}))}function h(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)}))}function g(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,7,"div",[],null,null,null,null,null)),t["ɵdid"](1,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,m)),t["ɵdid"](3,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,p)),t["ɵdid"](5,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,h)),t["ɵdid"](7,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],(function(l,n){l(n,1,0,n.context.value),l(n,3,0,"global"),l(n,5,0,"image"),l(n,7,0,"pool")}),null)}function f(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,1),n.parent.context.value));l(n,1,0,e)}))}function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,2),n.parent.context.value));l(n,1,0,e)}))}function b(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),t["ɵppd"](2,1)],null,(function(l,n){var e=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,3),n.parent.context.value));l(n,1,0,e)}))}function C(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function S(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[],null,null,null,null,null)),t["ɵdid"](1,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,f)),t["ɵdid"](3,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,v)),t["ɵdid"](5,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,b)),t["ɵdid"](7,278528,null,0,i.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,C)),t["ɵdid"](9,16384,null,0,i.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,i.NgSwitch],null,null)],(function(l,n){var e=n.component;l(n,1,0,n.context.row.type),l(n,3,0,e.typeField.bps),l(n,5,0,e.typeField.milliseconds),l(n,7,0,e.typeField.iops)}),null)}function _(l){return t["ɵvid"](0,[t["ɵpid"](0,i.TitleCasePipe,[]),t["ɵpid"](0,u.a,[s.a]),t["ɵpid"](0,a.a,[]),t["ɵpid"](0,o.a,[]),t["ɵqud"](402653184,1,{configurationSourceTpl:0}),t["ɵqud"](402653184,2,{configurationValueTpl:0}),t["ɵqud"](402653184,3,{poolConfTable:0}),(l()(),t["ɵeld"](7,0,null,null,1,"cd-table",[["identifier","name"]],null,null,null,r.b,r.a)),t["ɵdid"](8,2867200,[[3,4],["poolConfTable",4]],0,d.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"]},null),(l()(),t["ɵand"](0,[[1,2],["configurationSourceTpl",2]],null,0,null,g)),(l()(),t["ɵand"](0,[[2,2],["configurationValueTpl",2]],null,0,null,S))],(function(l,n){var e=n.component;l(n,8,0,e.data,e.poolConfigurationColumns,"name")}),null)}},Ekvf:function(l,n,e){"use strict";e.d(n,"a",(function(){return d}));var t=e("mrSG"),i=e("IheW"),u=e("lJxs"),s=e("xTzq"),a=e("o8EM"),o=e("8Y7J"),r=e("pL04");let d=(()=>{let l=class{constructor(l,n){this.http=l,this.rbdConfigurationService=n,this.apiPath="api/pool"}create(l){return this.http.post(this.apiPath,l,{observe:"response"})}update(l){let n;return l.hasOwnProperty("srcpool")?(n=l.srcpool,delete l.srcpool):(n=l.pool,delete l.pool),this.http.put(`${this.apiPath}/${encodeURIComponent(n)}`,l,{observe:"response"})}delete(l){return this.http.delete(`${this.apiPath}/${l}`,{observe:"response"})}get(l){return this.http.get(`${this.apiPath}/${l}`)}getList(){return this.http.get(`${this.apiPath}?stats=true`)}getConfiguration(l){return this.http.get(`${this.apiPath}/${l}/configuration`).pipe(Object(u.a)(l=>l.map(l=>Object.assign(l,this.rbdConfigurationService.getOptionByName(l.name)))))}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}list(l=[]){const n=l.join(",");return this.http.get(`${this.apiPath}?attrs=${n}`).toPromise().then(l=>l)}};return l.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new l(o["ɵɵinject"](i.c),o["ɵɵinject"](a.a))},token:l,providedIn:r.a}),l=t.__decorate([s.a,t.__metadata("design:paramtypes",[i.c,a.a])],l),l})()},F83c:function(l,n,e){"use strict";e.d(n,"a",(function(){return m}));var t=e("mrSG"),i=e("IheW"),u=e("LvDl"),s=e("lJxs"),a=e("xTzq"),o=e("jVDg"),r=e("o8EM"),d=e("8Y7J"),c=e("pL04");let m=(()=>{let l=class{constructor(l,n){this.http=l,this.rbdConfigurationService=n}isRBDPool(l){return-1!==u.indexOf(l.application_metadata,"rbd")&&!l.pool_name.includes("/")}create(l){return this.http.post("api/block/image",l,{observe:"response"})}delete(l){return this.http.delete(`api/block/image/${l.toStringEncoded()}`,{observe:"response"})}update(l,n){return this.http.put(`api/block/image/${l.toStringEncoded()}`,n,{observe:"response"})}get(l){return this.http.get(`api/block/image/${l.toStringEncoded()}`)}list(){return this.http.get("api/block/image").pipe(Object(s.a)(l=>l.map(l=>(l.value.map(l=>l.configuration?(l.configuration.map(l=>Object.assign(l,this.rbdConfigurationService.getOptionByName(l.name))),l):l),l))))}copy(l,n){return this.http.post(`api/block/image/${l.toStringEncoded()}/copy`,n,{observe:"response"})}flatten(l){return this.http.post(`api/block/image/${l.toStringEncoded()}/flatten`,null,{observe:"response"})}defaultFeatures(){return this.http.get("api/block/image/default_features")}createSnapshot(l,n){const e={snapshot_name:n};return this.http.post(`api/block/image/${l.toStringEncoded()}/snap`,e,{observe:"response"})}renameSnapshot(l,n,e){const t={new_snap_name:e};return this.http.put(`api/block/image/${l.toStringEncoded()}/snap/${n}`,t,{observe:"response"})}protectSnapshot(l,n,e){const t={is_protected:e};return this.http.put(`api/block/image/${l.toStringEncoded()}/snap/${n}`,t,{observe:"response"})}rollbackSnapshot(l,n){return this.http.post(`api/block/image/${l.toStringEncoded()}/snap/${n}/rollback`,null,{observe:"response"})}cloneSnapshot(l,n,e){return this.http.post(`api/block/image/${l.toStringEncoded()}/snap/${n}/clone`,e,{observe:"response"})}deleteSnapshot(l,n){return this.http.delete(`api/block/image/${l.toStringEncoded()}/snap/${n}`,{observe:"response"})}listTrash(){return this.http.get("api/block/image/trash/")}createNamespace(l,n){return this.http.post(`api/block/pool/${l}/namespace`,{namespace:n},{observe:"response"})}listNamespaces(l){return this.http.get(`api/block/pool/${l}/namespace/`)}deleteNamespace(l,n){return this.http.delete(`api/block/pool/${l}/namespace/${n}`,{observe:"response"})}moveTrash(l,n){return this.http.post(`api/block/image/${l.toStringEncoded()}/move_trash`,{delay:n},{observe:"response"})}purgeTrash(l){return this.http.post(`api/block/image/trash/purge/?pool_name=${l}`,null,{observe:"response"})}restoreTrash(l,n){return this.http.post(`api/block/image/trash/${l.toStringEncoded()}/restore`,{new_image_name:n},{observe:"response"})}removeTrash(l,n=!1){return this.http.delete(`api/block/image/trash/${l.toStringEncoded()}/?force=${n}`,{observe:"response"})}};return l.ngInjectableDef=d["ɵɵdefineInjectable"]({factory:function(){return new l(d["ɵɵinject"](i.c),d["ɵɵinject"](r.a))},token:l,providedIn:c.a}),t.__decorate([t.__param(1,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String]),t.__metadata("design:returntype",void 0)],l.prototype,"createSnapshot",null),t.__decorate([t.__param(2,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String,String]),t.__metadata("design:returntype",void 0)],l.prototype,"renameSnapshot",null),t.__decorate([t.__param(2,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String,Boolean]),t.__metadata("design:returntype",void 0)],l.prototype,"protectSnapshot",null),t.__decorate([t.__param(1,a.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[o.a,String]),t.__metadata("design:returntype",void 0)],l.prototype,"restoreTrash",null),l=t.__decorate([a.a,t.__metadata("design:paramtypes",[i.c,r.a])],l),l})()},Fd71:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("s7LF"),i=e("XNiG"),u=(e("F83c"),e("sne2"),e("QFaf")),s=e("kvvV"),a=e("jVDg");e("9nlD"),e("VXsX");class o{constructor(l,n,e,t,i,u){this.modalRef=l,this.rbdService=n,this.taskManagerService=e,this.notificationService=t,this.i18n=i,this.actionLabels=u,this.editing=!1,this.action=this.actionLabels.CREATE,this.resource=this.i18n("RBD Snapshot"),this.createForm()}createForm(){this.snapshotForm=new u.a({snapshotName:new t.i("",{validators:[t.B.required]})})}ngOnInit(){this.onSubmit=new i.a}setSnapName(l){this.snapName=l,this.snapshotForm.get("snapshotName").setValue(l)}setEditing(l=!0){this.editing=l,this.action=this.editing?this.actionLabels.RENAME:this.actionLabels.CREATE}editAction(){const l=this.snapshotForm.getValue("snapshotName"),n=new a.a(this.poolName,this.namespace,this.imageName),e=new s.a;e.name="rbd/snap/edit",e.metadata={image_spec:n.toString(),snapshot_name:l},this.rbdService.renameSnapshot(n,this.snapName,l).toPromise().then(()=>{this.taskManagerService.subscribe(e.name,e.metadata,l=>{this.notificationService.notifyTask(l)}),this.modalRef.hide(),this.onSubmit.next(this.snapName)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}createAction(){const l=this.snapshotForm.getValue("snapshotName"),n=new a.a(this.poolName,this.namespace,this.imageName),e=new s.a;e.name="rbd/snap/create",e.metadata={image_spec:n.toString(),snapshot_name:l},this.rbdService.createSnapshot(n,l).toPromise().then(()=>{this.taskManagerService.subscribe(e.name,e.metadata,l=>{this.notificationService.notifyTask(l)}),this.modalRef.hide(),this.onSubmit.next(l)}).catch(()=>{this.snapshotForm.setErrors({cdSubmitButton:!0})})}submit(){this.editing?this.editAction():this.createAction()}}},I4Qz:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("s7LF"),a=e("+gVj"),o=e("SVse"),r=e("mXUL"),d=e("ienR"),c=e("z/SZ"),m=e("gp3X"),p=e("sb0X"),h=e("KVJa"),g=e("Z21x"),f=e("sne2"),v=e("2JDI"),b=e("F83c"),C=e("LqlI"),S=e("2EZI"),_=e("kn/O");e.d(n,"a",(function(){return N}));var R=t["ɵcrt"]({encapsulation:0,styles:[[".bs-datepicker-head bs-datepicker-navigation-view{display:flex;justify-content:space-between}"]],data:{}});function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"div",[["class","alert alert-warning"],["role","alert"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This image contains snapshot(s), which will prevent it from being removed after moved to trash."]))],null,null)}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,['Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".']))],null,null)}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Protection has already expired. Please pick a future date or leave it empty."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,48,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Move an image to trash"])),(l()(),t["ɵeld"](4,0,null,1,44,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,43,"form",[["class","form"],["name","moveForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,s.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,30,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,y)),t["ɵdid"](13,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](14,0,null,null,7,"p",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To move "])),(l()(),t["ɵeld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](17,null,["",""])),(l()(),t["ɵted"](-1,null,[" to trash, click "])),(l()(),t["ɵeld"](19,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Move Image"])),(l()(),t["ɵted"](-1,null,[". Optionally, you can pick an expiration date."])),(l()(),t["ɵeld"](22,0,null,null,19,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](23,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](26,0,null,0,1,"label",[["class","col-form-label"],["for","expires"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Protection expires at"])),(l()(),t["ɵeld"](28,16777216,null,0,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","expiresAt"],["placeholder","NOT PROTECTED"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,29)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,29).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,29)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,29)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,31).onChange(e)&&i),"keyup.esc"===n&&(i=!1!==t["ɵnov"](l,31).hide()&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,31).onBlur()&&i),i}),null,null)),t["ɵdid"](29,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵdid"](30,737280,null,0,d.c,[d.a,t.ElementRef,t.Renderer2,t.ViewContainerRef,c.a],{bsConfig:[0,"bsConfig"],minDate:[1,"minDate"]},null),t["ɵdid"](31,16384,null,0,d.f,[d.c,d.l,t.Renderer2,t.ElementRef,t.ChangeDetectorRef],null,null),t["ɵprd"](1024,null,s.o,(function(l){return[l]}),[d.f]),t["ɵprd"](1024,null,s.p,(function(l,n){return[l,n]}),[s.e,d.f]),t["ɵdid"](34,671744,[[1,4]],0,s.j,[[3,s.d],[6,s.o],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](36,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](37,16384,null,0,a.h,[[3,s.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,w)),t["ɵdid"](39,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](41,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](42,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](43,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](44,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.moveImage()&&t),t}),m.b,m.a)),t["ɵdid"](45,114688,null,0,p.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Move Image"])),(l()(),t["ɵeld"](47,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,h.b,h.a)),t["ɵdid"](48,49152,null,0,g.a,[o.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.moveForm),l(n,10,0,e.moveForm),l(n,13,0,e.hasSnapshots),l(n,23,0),l(n,30,0,e.bsConfig,e.minDate),l(n,34,0,"expiresAt"),l(n,37,0,"expiresAt"),l(n,39,0,e.moveForm.showError("expiresAt",t["ɵnov"](n,7),"format")),l(n,41,0,e.moveForm.showError("expiresAt",t["ɵnov"](n,7),"expired")),l(n,45,0,e.moveForm),l(n,48,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,17,0,e.imageSpecStr),l(n,22,0,t["ɵnov"](n,23).hasErrors,t["ɵnov"](n,23).hasSuccess),l(n,28,0,t["ɵnov"](n,36).ngClassUntouched,t["ɵnov"](n,36).ngClassTouched,t["ɵnov"](n,36).ngClassPristine,t["ɵnov"](n,36).ngClassDirty,t["ɵnov"](n,36).ngClassValid,t["ɵnov"](n,36).ngClassInvalid,t["ɵnov"](n,36).ngClassPending,t["ɵnov"](n,37).validClass,t["ɵnov"](n,37).invalidClass)}))}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-trash-move-modal",[],null,null,null,I,R)),t["ɵdid"](1,114688,null,0,v.a,[b.a,C.a,S.a,_.a],null,null)],(function(l,n){l(n,1,0)}),null)}var N=t["ɵccf"]("cd-rbd-trash-move-modal",v.a,E,{},{},[])},JBea:function(l,n,e){"use strict";e.d(n,"a",(function(){return t})),e("lArG");class t{constructor(){}}},"JIi+":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("978R"),u=e("z/SZ"),s=e("2uy1"),a=e("SVse"),o=e("pKUh"),r=e("2ZVE"),d=e("25BL"),c=e("uIqm"),m=e("NUGo"),p=e("S7zO"),h=e("VTlA"),g=e("ufoC"),f=e("mSOc"),v=e("wd/R"),b=e("LRne"),C=e("F83c"),S=e("OLbh"),_=e("0+/T"),R=e("sne2"),y=e("x38r"),w=e("vCyI"),k=e("QTAa"),I=e("kvvV"),E=e("jVDg"),N=e("a0VL"),F=e("Fgil"),T=e("aexS"),V=e("9nlD"),D=e("VXsX"),P=e("Fd71"),x=e("LvDl"),q=e("oxzT");class B{constructor(l,n,e){this.i18n=l,this.create={permission:"create",icon:q.a.add,name:n.CREATE},this.rename={permission:"update",icon:q.a.edit,name:n.RENAME},this.protect={permission:"update",icon:q.a.lock,visible:l=>l.hasSingleSelection&&!l.first().is_protected,name:n.PROTECT},this.unprotect={permission:"update",icon:q.a.unlock,visible:l=>l.hasSingleSelection&&l.first().is_protected,name:n.UNPROTECT},this.clone={permission:"create",canBePrimary:l=>l.hasSingleSelection,disable:l=>!l.hasSingleSelection||l.first().cdExecuting||!x.isUndefined(this.getCloneDisableDesc(e)),disableDesc:()=>this.getCloneDisableDesc(e),icon:q.a.clone,name:n.CLONE},this.copy={permission:"create",canBePrimary:l=>l.hasSingleSelection,disable:l=>!l.hasSingleSelection||l.first().cdExecuting,icon:q.a.copy,name:n.COPY},this.rollback={permission:"update",icon:q.a.undo,name:n.ROLLBACK},this.deleteSnap={permission:"delete",icon:q.a.destroy,disable:l=>{const n=l.first();return!l.hasSingleSelection||n.cdExecuting||n.is_protected},name:n.DELETE},this.ordering=[this.create,this.rename,this.protect,this.unprotect,this.clone,this.copy,this.rollback,this.deleteSnap]}getCloneDisableDesc(l){if(!l.includes("layering"))return this.i18n("Parent image must support Layering")}}class O{}class M{constructor(l,n,e,t,i,u,s,a,o,r,d){this.authStorageService=l,this.modalService=n,this.dimlessBinaryPipe=e,this.cdDatePipe=t,this.rbdService=i,this.taskManagerService=u,this.notificationService=s,this.summaryService=a,this.taskListService=o,this.i18n=r,this.actionLabels=d,this.snapshots=[],this.selection=new w.a,this.builders={"rbd/snap/create":l=>{const n=new O;return n.name=l.snapshot_name,n}},this.permission=this.authStorageService.getPermissions().rbdImage}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",cellTransformation:y.a.executing,flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("State"),prop:"is_protected",flexGrow:1,cellTransformation:y.a.badge,customTemplateConfig:{map:{true:{value:this.i18n("PROTECTED"),class:"badge-success"},false:{value:this.i18n("UNPROTECTED"),class:"badge-info"}}}},{name:this.i18n("Created"),prop:"timestamp",flexGrow:1,pipe:this.cdDatePipe}]}ngOnChanges(){const l=new E.a(this.poolName,this.namespace,this.rbdName),n=new B(this.i18n,this.actionLabels,this.featuresName);n.create.click=()=>this.openCreateSnapshotModal(),n.rename.click=()=>this.openEditSnapshotModal(),n.protect.click=()=>this.toggleProtection(),n.unprotect.click=()=>this.toggleProtection();const e=()=>this.selection.first()&&`${l.toStringEncoded()}/${encodeURIComponent(this.selection.first().name)}`;n.clone.routerLink=()=>`/block/rbd/clone/${e()}`,n.copy.routerLink=()=>`/block/rbd/copy/${e()}`,n.rollback.click=()=>this.rollbackModal(),n.deleteSnap.click=()=>this.deleteSnapshotModal(),this.tableActions=n.ordering,this.taskListService.init(()=>Object(b.a)(this.snapshots),null,l=>this.data=l,()=>this.data=this.snapshots,n=>["rbd/snap/create","rbd/snap/delete","rbd/snap/edit","rbd/snap/rollback"].includes(n.name)&&l.toString()===n.metadata.image_spec,(l,n)=>l.name===n.metadata.snapshot_name,this.builders)}openSnapshotModal(l,n=null){this.modalRef=this.modalService.show(P.a),this.modalRef.content.poolName=this.poolName,this.modalRef.content.imageName=this.rbdName,this.modalRef.content.namespace=this.namespace,n?this.modalRef.content.setEditing():n=`${this.rbdName}_${v().toISOString(!0)}`,this.modalRef.content.setSnapName(n),this.modalRef.content.onSubmit.subscribe(n=>{const e=new k.a;e.name=l,e.metadata={image_name:this.rbdName,pool_name:this.poolName,snapshot_name:n},this.summaryService.addRunningTask(e),this.ngOnChanges()})}openCreateSnapshotModal(){this.openSnapshotModal("rbd/snap/create")}openEditSnapshotModal(){this.openSnapshotModal("rbd/snap/edit",this.selection.first().name)}toggleProtection(){const l=this.selection.first().name,n=this.selection.first().is_protected,e=new I.a;e.name="rbd/snap/edit";const t=new E.a(this.poolName,this.namespace,this.rbdName);e.metadata={image_spec:t.toString(),snapshot_name:l},this.rbdService.protectSnapshot(t,l,!n).toPromise().then(()=>{const l=new k.a;l.name=e.name,l.metadata=e.metadata,this.summaryService.addRunningTask(l),this.ngOnChanges(),this.taskManagerService.subscribe(e.name,e.metadata,l=>{this.notificationService.notifyTask(l)})})}_asyncTask(l,n,e){const t=new I.a;t.name=n,t.metadata={image_spec:new E.a(this.poolName,this.namespace,this.rbdName).toString(),snapshot_name:e};const i=new E.a(this.poolName,this.namespace,this.rbdName);this.rbdService[l](i,e).toPromise().then(()=>{const l=new k.a;l.name=t.name,l.metadata=t.metadata,this.summaryService.addRunningTask(l),this.modalRef.hide(),this.ngOnChanges(),this.taskManagerService.subscribe(l.name,l.metadata,l=>{this.notificationService.notifyTask(l)})}).catch(()=>{this.modalRef.content.stopLoadingSpinner()})}rollbackModal(){const l=this.selection.selected[0].name,n=new E.a(this.poolName,this.namespace,this.rbdName).toString(),e={titleText:this.i18n("RBD snapshot rollback"),buttonText:this.i18n("Rollback"),bodyTpl:this.rollbackTpl,bodyData:{snapName:`${n}@${l}`},onSubmit:()=>{this._asyncTask("rollbackSnapshot","rbd/snap/rollback",l)}};this.modalRef=this.modalService.show(S.a,{initialState:e})}deleteSnapshotModal(){const l=this.selection.selected[0].name;this.modalRef=this.modalService.show(_.a,{initialState:{itemDescription:this.i18n("RBD snapshot"),itemNames:[l],submitAction:()=>this._asyncTask("deleteSnapshot","rbd/snap/delete",l)}})}updateSelection(l){this.selection=l}}var A=e("LqlI"),L=e("GiVz"),j=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function $(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["You are about to rollback"])),(l()(),t["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](3,null,[" ",""])),(l()(),t["ɵted"](-1,null,[".\n"]))],null,(function(l,n){l(n,3,0,n.context.$implicit.snapName)}))}function G(l){return t["ɵvid"](0,[t["ɵqud"](671088640,1,{nameTpl:0}),t["ɵqud"](402653184,2,{rollbackTpl:0}),(l()(),t["ɵeld"](2,0,null,null,3,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(l,n,e){var t=!0;return"updateSelection"===n&&(t=!1!==l.component.updateSelection(e)&&t),t}),d.b,d.a)),t["ɵdid"](3,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),t["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,m.b,m.a)),t["ɵdid"](5,114688,null,0,p.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["ɵand"](0,[[2,2],["rollbackTpl",2]],null,0,null,$))],(function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex","single"),l(n,5,0,e.permission,e.selection,e.tableActions)}),null)}var U=e("EFGL"),X=e("aAWM"),z=e("aXbf"),W=e("o8EM"),J=e("nSDx"),Y=e("o4+5"),K=e("JBea");e.d(n,"b",(function(){return Z})),e.d(n,"c",(function(){return cl})),e.d(n,"a",(function(){return pl}));var Z=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function H(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Only available for RBD images with "])),(l()(),t["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["fast-diff"])),(l()(),t["ɵted"](-1,null,[" enabled"]))],null,null)}function Q(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(l()(),t["ɵted"](2,null,["",""]))],null,(function(l,n){l(n,2,0,n.context.$implicit)}))}function ll(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,16777216,null,null,2,"span",[["class","form-text text-muted"],["placement","right"]],null,null,null,null,null)),t["ɵdid"](2,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["ɵted"](-1,null,["N/A"]))],(function(l,n){l(n,2,0,t["ɵnov"](n.parent.parent,5),"right")}),null)}function nl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,[" "," "])),t["ɵppd"](2,1)],null,(function(l,n){var e=n.component,i=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,2),e.selection.disk_usage));l(n,1,0,i)}))}function el(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,16777216,null,null,2,"span",[["class","form-text text-muted"],["placement","right"]],null,null,null,null,null)),t["ɵdid"](2,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["ɵted"](-1,null,["N/A"]))],(function(l,n){l(n,2,0,t["ɵnov"](n.parent.parent,5),"right")}),null)}function tl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,[" "," "])),t["ɵppd"](2,1)],null,(function(l,n){var e=n.component,i=t["ɵunv"](n,1,0,l(n,2,0,t["ɵnov"](n.parent.parent,2),e.selection.total_disk_usage));l(n,1,0,i)}))}function il(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["/",""]))],null,(function(l,n){l(n,1,0,n.component.selection.parent.pool_namespace)}))}function ul(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""])),(l()(),t["ɵand"](16777216,null,null,1,null,il)),t["ɵdid"](3,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵted"](4,null,["/","@",""]))],(function(l,n){l(n,3,0,n.component.selection.parent.pool_namespace)}),(function(l,n){var e=n.component;l(n,1,0,e.selection.parent.pool_name),l(n,4,0,e.selection.parent.image_name,e.selection.parent.snap_name)}))}function sl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["-"]))],null,null)}function al(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,105,"tabset",[],[[2,"tab-container",null]],null,null,o.b,o.a)),t["ɵdid"](1,180224,null,0,r.e,[r.f,t.Renderer2,t.ElementRef],null,null),(l()(),t["ɵeld"](2,0,null,0,94,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](3,212992,null,0,r.b,[r.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵeld"](4,0,null,null,92,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,91,"tbody",[],null,null,null,null,null)),(l()(),t["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](7,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Name"])),(l()(),t["ɵeld"](9,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),t["ɵted"](10,null,["",""])),(l()(),t["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pool"])),(l()(),t["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](15,null,["",""])),(l()(),t["ɵeld"](16,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Data Pool"])),(l()(),t["ɵeld"](19,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](20,null,["",""])),t["ɵppd"](21,1),(l()(),t["ɵeld"](22,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](23,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Created"])),(l()(),t["ɵeld"](25,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](26,null,["",""])),t["ɵppd"](27,1),(l()(),t["ɵeld"](28,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](29,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Size"])),(l()(),t["ɵeld"](31,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](32,null,["",""])),t["ɵppd"](33,1),(l()(),t["ɵeld"](34,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](35,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Objects"])),(l()(),t["ɵeld"](37,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](38,null,["",""])),t["ɵppd"](39,1),(l()(),t["ɵeld"](40,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](41,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Object size"])),(l()(),t["ɵeld"](43,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](44,null,["",""])),t["ɵppd"](45,1),(l()(),t["ɵeld"](46,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](47,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Features"])),(l()(),t["ɵeld"](49,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,Q)),t["ɵdid"](51,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵeld"](52,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](53,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Provisioned"])),(l()(),t["ɵeld"](55,0,null,null,4,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,ll)),t["ɵdid"](57,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,nl)),t["ɵdid"](59,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](60,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](61,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Total provisioned"])),(l()(),t["ɵeld"](63,0,null,null,4,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,el)),t["ɵdid"](65,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,tl)),t["ɵdid"](67,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](68,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](69,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Striping unit"])),(l()(),t["ɵeld"](71,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](72,null,["",""])),t["ɵppd"](73,1),(l()(),t["ɵeld"](74,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](75,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Striping count"])),(l()(),t["ɵeld"](77,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](78,null,["",""])),(l()(),t["ɵeld"](79,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](80,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Parent"])),(l()(),t["ɵeld"](82,0,null,null,4,"td",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,ul)),t["ɵdid"](84,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,sl)),t["ɵdid"](86,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](87,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](88,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Block name prefix"])),(l()(),t["ɵeld"](90,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](91,null,["",""])),(l()(),t["ɵeld"](92,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["ɵeld"](93,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Order"])),(l()(),t["ɵeld"](95,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),t["ɵted"](96,null,["",""])),(l()(),t["ɵeld"](97,0,null,0,4,"tab",[["heading","Snapshots"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](98,212992,null,0,r.b,[r.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵeld"](99,0,null,null,2,"cd-rbd-snapshot-list",[],null,null,null,G,j)),t["ɵprd"](131584,null,h.a,h.a,[g.a,f.a]),t["ɵdid"](101,638976,null,0,M,[T.a,A.b,F.a,N.a,C.a,D.a,V.a,f.a,h.a,L.a,R.b],{snapshots:[0,"snapshots"],featuresName:[1,"featuresName"],poolName:[2,"poolName"],namespace:[3,"namespace"],rbdName:[4,"rbdName"]},null),(l()(),t["ɵeld"](102,0,null,0,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](103,212992,null,0,r.b,[r.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵeld"](104,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,U.b,U.a)),t["ɵdid"](105,638976,null,0,X.a,[z.a,W.a,L.a],{data:[0,"data"]},null)],(function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,51,0,e.selection.features_name),l(n,57,0,-1===(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,59,0,-1!==(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,65,0,-1===(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,67,0,-1!==(null==e.selection.features_name?null:e.selection.features_name.indexOf("fast-diff"))),l(n,84,0,e.selection.parent),l(n,86,0,!e.selection.parent),l(n,98,0,"Snapshots"),l(n,101,0,e.selection.snapshots,e.selection.features_name,e.selection.pool_name,e.selection.namespace,e.selection.name),l(n,103,0,"Configuration"),l(n,105,0,e.selection.configuration)}),(function(l,n){var e=n.component;l(n,0,0,t["ɵnov"](n,1).clazz),l(n,2,0,t["ɵnov"](n,3).id,t["ɵnov"](n,3).active,t["ɵnov"](n,3).addClass,t["ɵnov"](n,3).role,t["ɵnov"](n,3).ariaLabelledby),l(n,10,0,e.selection.name),l(n,15,0,e.selection.pool_name);var i=t["ɵunv"](n,20,0,l(n,21,0,t["ɵnov"](n.parent,0),e.selection.data_pool));l(n,20,0,i);var u=t["ɵunv"](n,26,0,l(n,27,0,t["ɵnov"](n.parent,1),e.selection.timestamp));l(n,26,0,u);var s=t["ɵunv"](n,32,0,l(n,33,0,t["ɵnov"](n.parent,2),e.selection.size));l(n,32,0,s);var a=t["ɵunv"](n,38,0,l(n,39,0,t["ɵnov"](n.parent,3),e.selection.num_objs));l(n,38,0,a);var o=t["ɵunv"](n,44,0,l(n,45,0,t["ɵnov"](n.parent,2),e.selection.obj_size));l(n,44,0,o);var r=t["ɵunv"](n,72,0,l(n,73,0,t["ɵnov"](n.parent,2),e.selection.stripe_unit));l(n,72,0,r),l(n,78,0,e.selection.stripe_count),l(n,91,0,e.selection.block_name_prefix),l(n,96,0,e.selection.order),l(n,97,0,t["ɵnov"](n,98).id,t["ɵnov"](n,98).active,t["ɵnov"](n,98).addClass,t["ɵnov"](n,98).role,t["ɵnov"](n,98).ariaLabelledby),l(n,102,0,t["ɵnov"](n,103).id,t["ɵnov"](n,103).active,t["ɵnov"](n,103).addClass,t["ɵnov"](n,103).role,t["ɵnov"](n,103).ariaLabelledby)}))}function ol(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,16777216,null,null,2,"strong",[["tooltip","This setting overrides the global value"]],null,null,null,null,null)),t["ɵdid"](2,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"]},null),(l()(),t["ɵted"](-1,null,["Image"])),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,2,0,"This setting overrides the global value")}),null)}function rl(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,16777216,null,null,2,"span",[["tooltip","This is the global value. No value for this option has been set for this image."]],null,null,null,null,null)),t["ɵdid"](1,212992,null,0,i.c,[t.ViewContainerRef,u.a,i.a,t.ElementRef,t.Renderer2,s.a],{tooltip:[0,"tooltip"]},null),(l()(),t["ɵted"](-1,null,["Global"])),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"This is the global value. No value for this option has been set for this image.")}),null)}function dl(l){return t["ɵvid"](0,[(l()(),t["ɵand"](16777216,null,null,1,null,ol)),t["ɵdid"](1,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),t["ɵand"](0,[["global",2]],null,0,null,rl))],(function(l,n){l(n,1,0,n.context.value-0,t["ɵnov"](n,2))}),null)}function cl(l){return t["ɵvid"](0,[t["ɵpid"](0,J.a,[]),t["ɵpid"](0,N.a,[a.DatePipe]),t["ɵpid"](0,F.a,[z.a]),t["ɵpid"](0,Y.a,[z.a]),t["ɵqud"](402653184,1,{poolConfigurationSourceTpl:0}),(l()(),t["ɵand"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,H)),(l()(),t["ɵand"](16777216,null,null,1,null,al)),t["ɵdid"](7,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,[[1,2],["poolConfigurationSourceTpl",2]],null,0,null,dl))],(function(l,n){l(n,7,0,n.component.selection)}),null)}function ml(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-details",[],null,null,null,cl,Z)),t["ɵdid"](1,49152,null,0,K.a,[],null,null)],null,null)}var pl=t["ɵccf"]("cd-rbd-details",K.a,ml,{selection:"selection",images:"images"},{},[])},L4us:function(l,n,e){"use strict";var t=e("s7LF"),i=(e("XED3"),e("QFaf")),u=e("kvvV");e("kn/O");class s{}e.d(n,"a",(function(){return a}));class a{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.bsConfig={containerClass:"theme-default"},this.createForm()}createForm(){this.editPeerForm=new i.a({clusterName:new t.i("",{validators:[t.B.required,this.validateClusterName]}),clientID:new t.i("",{validators:[t.B.required,this.validateClientID]}),monAddr:new t.i("",{validators:[this.validateMonAddr]}),key:new t.i("",{validators:[this.validateKey]})})}ngOnInit(){this.pattern=`${this.poolName}/${this.peerUUID}`,"edit"===this.mode&&this.rbdMirroringService.getPeer(this.poolName,this.peerUUID).subscribe(l=>{this.setResponse(l)})}validateClusterName(l){if(!l.value.match(/^[\w\-_]*$/))return{invalidClusterName:{value:l.value}}}validateClientID(l){if(!l.value.match(/^(?!client\.)[\w\-_.]*$/))return{invalidClientID:{value:l.value}}}validateMonAddr(l){if(!l.value.match(/^[,; ]*([\w.\-_\[\]]+(:[\d]+)?[,; ]*)*$/))return{invalidMonAddr:{value:l.value}}}validateKey(l){try{if(""===l.value||atob(l.value))return null}catch(n){}return{invalidKey:{value:l.value}}}setResponse(l){this.response=l,this.editPeerForm.get("clusterName").setValue(l.cluster_name),this.editPeerForm.get("clientID").setValue(l.client_id),this.editPeerForm.get("monAddr").setValue(l.mon_host),this.editPeerForm.get("key").setValue(l.key)}update(){const l=new s;let n;l.cluster_name=this.editPeerForm.getValue("clusterName"),l.client_id=this.editPeerForm.getValue("clientID"),l.mon_host=this.editPeerForm.getValue("monAddr"),l.key=this.editPeerForm.getValue("key"),n=this.taskWrapper.wrapTaskAroundCall("edit"===this.mode?{task:new u.a("rbd/mirroring/peer/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePeer(this.poolName,this.peerUUID,l)}:{task:new u.a("rbd/mirroring/peer/add",{pool_name:this.poolName}),call:this.rbdMirroringService.addPeer(this.poolName,l)}),n.subscribe(void 0,()=>this.editPeerForm.setErrors({cdSubmitButton:!0}),()=>{this.rbdMirroringService.refresh(),this.modalRef.hide()})}}},MyVl:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("LvDl"),s=e("jtHE"),a=e("cp0P"),o=e("SxV6"),r=e("eIep"),d=(e("Ekvf"),e("F83c"),e("sne2"),e("oxzT")),c=e("QFaf"),m=e("PhyI"),p=e("kvvV"),h=e("jVDg");e("Fgil"),e("aexS"),e("aXbf"),e("kn/O");class g{constructor(){this.features=[]}}class f{constructor(){this.features=[]}}var v=e("lArG");class b extends v.a{constructor(){super(...arguments),this.features=[]}}class C{constructor(){this.features=[]}}var S=function(l){return l.editing="editing",l.cloning="cloning",l.copying="copying",l}({});e.d(n,"a",(function(){return _}));class _{constructor(l,n,e,i,u,a,o,r,c,m){this.authStorageService=l,this.route=n,this.poolService=e,this.rbdService=i,this.formatter=u,this.taskWrapper=a,this.dimlessBinaryPipe=o,this.i18n=r,this.actionLabels=c,this.router=m,this.namespaces=[],this.namespacesByPoolCache={},this.pools=null,this.allPools=null,this.dataPools=null,this.allDataPools=null,this.featuresList=[],this.initializeConfigData=new t.EventEmitter,this.advancedEnabled=!1,this.rbdFormMode=S,this.defaultObjectSize="4 MiB",this.objectSizes=["4 KiB","8 KiB","16 KiB","32 KiB","64 KiB","128 KiB","256 KiB","512 KiB","1 MiB","2 MiB","4 MiB","8 MiB","16 MiB","32 MiB"],this.rbdImage=new s.a(1),this.icons=d.a,this.poolPermission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("RBD"),this.features={"deep-flatten":{desc:this.i18n("Deep flatten"),requires:null,allowEnable:!1,allowDisable:!0},layering:{desc:this.i18n("Layering"),requires:null,allowEnable:!1,allowDisable:!1},"exclusive-lock":{desc:this.i18n("Exclusive lock"),requires:null,allowEnable:!0,allowDisable:!0},"object-map":{desc:this.i18n("Object map (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},journaling:{desc:this.i18n("Journaling (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},"fast-diff":{desc:this.i18n("Fast diff (interlocked with object-map)"),requires:"object-map",allowEnable:!0,allowDisable:!0,interlockedWith:"object-map",initDisabled:!0}},this.featuresList=this.objToArray(this.features),this.createForm()}objToArray(l){return u.map(l,(l,n)=>Object.assign(l,{key:n}))}createForm(){this.rbdForm=new c.a({parent:new i.i(""),name:new i.i("",{validators:[i.B.required,i.B.pattern(/^[^@/]+?$/)]}),pool:new i.i(null,{validators:[i.B.required]}),namespace:new i.i(null),useDataPool:new i.i(!1),dataPool:new i.i(null),size:new i.i(null,{updateOn:"blur"}),obj_size:new i.i(this.defaultObjectSize),features:new c.a(this.featuresList.reduce((l,n)=>(l[n.key]=new i.i({value:!1,disabled:!!n.initDisabled}),l),{})),stripingUnit:new i.i(null),stripingCount:new i.i(null,{updateOn:"blur"})},this.validateRbdForm(this.formatter))}disableForEdit(){this.rbdForm.get("parent").disable(),this.rbdForm.get("pool").disable(),this.rbdForm.get("namespace").disable(),this.rbdForm.get("useDataPool").disable(),this.rbdForm.get("dataPool").disable(),this.rbdForm.get("obj_size").disable(),this.rbdForm.get("stripingUnit").disable(),this.rbdForm.get("stripingCount").disable()}disableForClone(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}disableForCopy(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()}ngOnInit(){let l;this.router.url.startsWith("/block/rbd/edit")?(this.mode=this.rbdFormMode.editing,this.action=this.actionLabels.EDIT,this.disableForEdit()):this.router.url.startsWith("/block/rbd/clone")?(this.mode=this.rbdFormMode.cloning,this.disableForClone(),this.action=this.actionLabels.CLONE):this.router.url.startsWith("/block/rbd/copy")?(this.mode=this.rbdFormMode.copying,this.action=this.actionLabels.COPY,this.disableForCopy()):this.action=this.actionLabels.CREATE,function(l){l.RbdServiceGet="rbdService.get",l.PoolServiceList="poolService.list"}(l||(l={}));const n={};this.mode===this.rbdFormMode.editing||this.mode===this.rbdFormMode.cloning||this.mode===this.rbdFormMode.copying?this.route.params.subscribe(e=>{const t=h.a.fromString(decodeURIComponent(e.image_spec));e.snap&&(this.snapName=decodeURIComponent(e.snap)),n[l.RbdServiceGet]=this.rbdService.get(t)}):this.rbdService.defaultFeatures().subscribe(l=>{this.setFeatures(l)}),this.mode!==this.rbdFormMode.editing&&this.poolPermission.read&&(n[l.PoolServiceList]=this.poolService.list(["pool_name","type","flags_names","application_metadata"])),Object(a.a)(n).subscribe(n=>{if(n[l.PoolServiceList]){const e=[],t=[];for(const i of n[l.PoolServiceList])this.rbdService.isRBDPool(i)&&("replicated"===i.type?(e.push(i),t.push(i)):"erasure"===i.type&&-1!==i.flags_names.indexOf("ec_overwrites")&&t.push(i));if(this.pools=e,this.allPools=e,this.dataPools=t,this.allDataPools=t,1===this.pools.length){const l=this.pools[0].pool_name;this.rbdForm.get("pool").setValue(l),this.onPoolChange(l)}}if(n[l.RbdServiceGet]){const e=n[l.RbdServiceGet];this.setResponse(e,this.snapName),this.rbdImage.next(e)}}),u.each(this.features,l=>{this.rbdForm.get("features").get(l.key).valueChanges.subscribe(n=>this.featureFormUpdate(l.key,n))})}onPoolChange(l){const n=this.allDataPools?this.allDataPools.filter(n=>n.pool_name!==l):[];this.rbdForm.getValue("dataPool")===l&&this.rbdForm.get("dataPool").setValue(null),this.dataPools=n,this.namespaces=null,l in this.namespacesByPoolCache?this.namespaces=this.namespacesByPoolCache[l]:this.rbdService.listNamespaces(l).subscribe(n=>{n=n.map(l=>l.namespace),this.namespacesByPoolCache[l]=n,this.namespaces=n}),this.rbdForm.get("namespace").setValue(null)}onUseDataPoolChange(){this.rbdForm.getValue("useDataPool")||(this.rbdForm.get("dataPool").setValue(null),this.onDataPoolChange(null))}onDataPoolChange(l){const n=this.allPools.filter(n=>n.pool_name!==l);this.rbdForm.getValue("pool")===l&&this.rbdForm.get("pool").setValue(null),this.pools=n}validateRbdForm(l){return n=>{const e=n.get("useDataPool"),t=n.get("dataPool");let i=null;e.value&&null==t.value&&(i={required:!0}),t.setErrors(i);const u=n.get("size"),s=n.get("obj_size"),a=l.toBytes(null!=s.value?s.value:this.defaultObjectSize),o=n.get("stripingCount"),r=null!=o.value?o.value:1;let d=null;null===u.value?d={required:!0}:r*a>l.toBytes(u.value)&&(d={invalidSizeObject:!0}),u.setErrors(d);const c=n.get("stripingUnit");let m=null;null===c.value&&null!==o.value?m={required:!0}:null!==c.value&&l.toBytes(c.value)>a&&(m={invalidStripingUnit:!0}),c.setErrors(m);let p=null;return null===o.value&&null!==c.value?p={required:!0}:r<1&&(p={min:!0}),o.setErrors(p),null}}getDependendChildFeatures(l){return u.filter(this.features,n=>n.requires===l)||[]}deepBoxCheck(l,n){this.getDependendChildFeatures(l).forEach(l=>{const e=this.rbdForm.get(l.key);n?e.enable({emitEvent:!1}):(e.disable({emitEvent:!1}),e.setValue(!1,{emitEvent:!1}),this.deepBoxCheck(l.key,n));const t=this.rbdForm.get("features");this.mode===this.rbdFormMode.editing&&t.get(l.key).enabled&&((-1===this.response.features_name.indexOf(l.key)||l.allowDisable)&&(-1!==this.response.features_name.indexOf(l.key)||l.allowEnable)||t.get(l.key).disable())})}interlockCheck(l,n){const e=this.featuresList.find(n=>n.key===l);if(this.response){const l=null!=e.interlockedWith,n=this.featuresList.find(l=>l.interlockedWith===e.key),t=!!this.response.features_name.find(l=>l===e.key);if(l){if(t!==!!this.response.features_name.find(l=>l===e.interlockedWith))return}else if(n&&!!this.response.features_name.find(l=>l===n.key)!==t)return}n?u.filter(this.features,n=>n.interlockedWith===l).forEach(l=>this.rbdForm.get(l.key).setValue(!0,{emitEvent:!1})):e.interlockedWith&&this.rbdForm.get("features").get(e.interlockedWith).setValue(!1)}featureFormUpdate(l,n){if(n){const n=this.features[l].requires;if(n&&!this.rbdForm.getValue(n))return void this.rbdForm.get(`features.${l}`).setValue(!1)}this.deepBoxCheck(l,n),this.interlockCheck(l,n)}setFeatures(l){const n=this.rbdForm.get("features");u.forIn(this.features,e=>{-1!==l.indexOf(e.key)&&n.get(e.key).setValue(!0),this.featureFormUpdate(e.key,n.get(e.key).value)})}setResponse(l,n){this.response=l;const e=new h.a(l.pool_name,l.namespace,l.name).toString();if(this.mode===this.rbdFormMode.cloning)this.rbdForm.get("parent").setValue(`${e}@${n}`);else if(this.mode===this.rbdFormMode.copying)n?this.rbdForm.get("parent").setValue(`${e}@${n}`):this.rbdForm.get("parent").setValue(`${e}`);else if(l.parent){const n=l.parent;this.rbdForm.get("parent").setValue(`${n.pool_name}/${n.image_name}@${n.snap_name}`)}this.mode===this.rbdFormMode.editing&&this.rbdForm.get("name").setValue(l.name),this.rbdForm.get("pool").setValue(l.pool_name),this.onPoolChange(l.pool_name),this.rbdForm.get("namespace").setValue(l.namespace),l.data_pool&&(this.rbdForm.get("useDataPool").setValue(!0),this.rbdForm.get("dataPool").setValue(l.data_pool)),this.rbdForm.get("size").setValue(this.dimlessBinaryPipe.transform(l.size)),this.rbdForm.get("obj_size").setValue(this.dimlessBinaryPipe.transform(l.obj_size)),this.setFeatures(l.features_name),this.rbdForm.get("stripingUnit").setValue(this.dimlessBinaryPipe.transform(l.stripe_unit)),this.rbdForm.get("stripingCount").setValue(l.stripe_count),this.initializeConfigData.emit({initialData:this.response.configuration,sourceType:m.a.image})}createRequest(){const l=new b;return l.pool_name=this.rbdForm.getValue("pool"),l.namespace=this.rbdForm.getValue("namespace"),l.name=this.rbdForm.getValue("name"),l.size=this.formatter.toBytes(this.rbdForm.getValue("size")),l.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),l.stripe_count=this.rbdForm.getValue("stripingCount"),l.data_pool=this.rbdForm.getValue("dataPool"),l.configuration=this.getDirtyConfigurationValues(),l}createAction(){const l=this.createRequest();return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/create",{pool_name:l.pool_name,namespace:l.namespace,image_name:l.name}),call:this.rbdService.create(l)})}editRequest(){const l=new C;return l.name=this.rbdForm.getValue("name"),l.size=this.formatter.toBytes(this.rbdForm.getValue("size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.configuration=this.getDirtyConfigurationValues(),l}cloneRequest(){const l=new g;return l.child_pool_name=this.rbdForm.getValue("pool"),l.child_namespace=this.rbdForm.getValue("namespace"),l.child_image_name=this.rbdForm.getValue("name"),l.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),l.stripe_count=this.rbdForm.getValue("stripingCount"),l.data_pool=this.rbdForm.getValue("dataPool"),l.configuration=this.getDirtyConfigurationValues(!0,m.a.image),l}editAction(){const l=new h.a(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/edit",{image_spec:l.toString()}),call:this.rbdService.update(l,this.editRequest())})}cloneAction(){const l=this.cloneRequest(),n=new h.a(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/clone",{parent_image_spec:n.toString(),parent_snap_name:this.snapName,child_pool_name:l.child_pool_name,child_namespace:l.child_namespace,child_image_name:l.child_image_name}),call:this.rbdService.cloneSnapshot(n,this.snapName,l)})}copyRequest(){const l=new f;return this.snapName&&(l.snapshot_name=this.snapName),l.dest_pool_name=this.rbdForm.getValue("pool"),l.dest_namespace=this.rbdForm.getValue("namespace"),l.dest_image_name=this.rbdForm.getValue("name"),l.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),u.forIn(this.features,n=>{this.rbdForm.getValue(n.key)&&l.features.push(n.key)}),l.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),l.stripe_count=this.rbdForm.getValue("stripingCount"),l.data_pool=this.rbdForm.getValue("dataPool"),l.configuration=this.getDirtyConfigurationValues(!0,m.a.image),l}copyAction(){const l=this.copyRequest(),n=new h.a(this.response.pool_name,this.response.namespace,this.response.name);return this.taskWrapper.wrapTaskAroundCall({task:new p.a("rbd/copy",{src_image_spec:n.toString(),dest_pool_name:l.dest_pool_name,dest_namespace:l.dest_namespace,dest_image_name:l.dest_image_name}),call:this.rbdService.copy(n,l)})}submit(){this.mode||this.rbdImage.next("create"),this.rbdImage.pipe(Object(o.a)(),Object(r.a)(()=>this.mode===this.rbdFormMode.editing?this.editAction():this.mode===this.rbdFormMode.cloning?this.cloneAction():this.mode===this.rbdFormMode.copying?this.copyAction():this.createAction())).subscribe(()=>{},()=>this.rbdForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/block/rbd"]))}}},PhyI:function(l,n,e){"use strict";e.d(n,"a",(function(){return t})),e.d(n,"b",(function(){return i}));var t=function(l){return l[l.global=0]="global",l[l.pool=1]="pool",l[l.image=2]="image",l}({}),i=function(l){return l[l.bps=0]="bps",l[l.iops=1]="iops",l[l.milliseconds=2]="milliseconds",l}({})},QUzE:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("EEJc"),a=e("ajRT"),o=e("mXUL"),r=e("IZUe"),d=e("SVse"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("SuaG"),v=e("LqlI"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return I}));var S=t["ɵcrt"]({encapsulation:0,styles:[[".form-group.ng-invalid[_ngcontent-%COMP%]   .invalid-feedback[_ngcontent-%COMP%]{display:block}"]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.checked)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),i}),null,null)),t["ɵdid"](2,16384,null,0,i.c,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.c]),t["ɵdid"](4,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](9,null,["",""]))],(function(l,n){l(n,4,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,7,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""))}),(function(l,n){l(n,1,1,[t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,""),t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,7).validClass,t["ɵnov"](n,7).invalidClass]),l(n,8,0,t["ɵinlineInterpolate"](1,"",n.context.$implicit.name,"")),l(n,9,0,n.context.$implicit.name)}))}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["At least one pool is required."]))],null,null)}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,69,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](1,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Create Bootstrap Token"])),(l()(),t["ɵeld"](4,0,null,1,65,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,64,"form",[["class","form"],["name","createBootstrapForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,54,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,5,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To create a bootstrap token which can be imported by a peer site cluster, provide the local site's name, select which pools will have mirroring enabled, and click  "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Generate"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](18,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](19,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](22,0,null,0,1,"label",[["class","col-form-label required"],["for","siteName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name"])),(l()(),t["ɵeld"](24,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","siteName"],["id","siteName"],["name","siteName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,26)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,26).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,26)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,26)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](25,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](26,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](28,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](30,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](31,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,_)),t["ɵdid"](33,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](34,0,null,null,12,"div",[["class","form-group"],["formGroupName","pools"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](35,212992,null,0,i.m,[[3,i.d],[8,null],[8,null]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.d,null,[i.m]),t["ɵdid"](37,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](38,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](41,0,null,0,1,"label",[["class","col-form-label required"],["for","pools"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pools"])),(l()(),t["ɵand"](16777216,null,0,1,null,R)),t["ɵdid"](44,278528,null,0,d.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,y)),t["ɵdid"](46,16384,null,0,d.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](47,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](48,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.generate()&&t),t}),c.b,c.a)),t["ɵdid"](49,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Generate"])),(l()(),t["ɵeld"](51,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](52,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](55,0,null,0,2,"label",[["class","col-form-label"],["for","token"]],null,null,null,null,null)),(l()(),t["ɵeld"](56,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Token"])),(l()(),t["ɵeld"](58,0,null,0,7,"textarea",[["class","form-control resize-vertical"],["formControlName","token"],["id","token"],["placeholder","Generated token..."],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,59)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,59).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,59)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,59)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](59,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](61,671744,[[5,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](63,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](64,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵted"](-1,null,["          "])),(l()(),t["ɵeld"](66,0,null,null,3,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](67,0,null,null,2,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](68,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,p.b,p.a)),t["ɵdid"](69,49152,null,0,h.a,[d.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.createBootstrapForm),l(n,10,0,e.createBootstrapForm),l(n,19,0),l(n,25,0,""),l(n,28,0,"siteName"),l(n,31,0,"siteName"),l(n,33,0,e.createBootstrapForm.showError("siteName",t["ɵnov"](n,7),"required")),l(n,35,0,"pools"),l(n,38,0),l(n,44,0,e.pools),l(n,46,0,e.createBootstrapForm.showError("pools",t["ɵnov"](n,7),"requirePool")),l(n,49,0,e.createBootstrapForm),l(n,52,0),l(n,61,0,"token"),l(n,64,0,"token"),l(n,69,0,"Close",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,18,0,t["ɵnov"](n,19).hasErrors,t["ɵnov"](n,19).hasSuccess),l(n,24,0,t["ɵnov"](n,30).ngClassUntouched,t["ɵnov"](n,30).ngClassTouched,t["ɵnov"](n,30).ngClassPristine,t["ɵnov"](n,30).ngClassDirty,t["ɵnov"](n,30).ngClassValid,t["ɵnov"](n,30).ngClassInvalid,t["ɵnov"](n,30).ngClassPending,t["ɵnov"](n,31).validClass,t["ɵnov"](n,31).invalidClass),l(n,34,0,t["ɵnov"](n,37).ngClassUntouched,t["ɵnov"](n,37).ngClassTouched,t["ɵnov"](n,37).ngClassPristine,t["ɵnov"](n,37).ngClassDirty,t["ɵnov"](n,37).ngClassValid,t["ɵnov"](n,37).ngClassInvalid,t["ɵnov"](n,37).ngClassPending,t["ɵnov"](n,38).hasErrors,t["ɵnov"](n,38).hasSuccess),l(n,51,0,t["ɵnov"](n,52).hasErrors,t["ɵnov"](n,52).hasSuccess),l(n,58,0,t["ɵnov"](n,63).ngClassUntouched,t["ɵnov"](n,63).ngClassTouched,t["ɵnov"](n,63).ngClassPristine,t["ɵnov"](n,63).ngClassDirty,t["ɵnov"](n,63).ngClassValid,t["ɵnov"](n,63).ngClassInvalid,t["ɵnov"](n,63).ngClassPending,t["ɵnov"](n,64).validClass,t["ɵnov"](n,64).invalidClass)}))}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-bootstrap-create-modal",[],null,null,null,w,S)),t["ɵdid"](1,245760,null,0,f.a,[v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var I=t["ɵccf"]("cd-bootstrap-create-modal",f.a,k,{},{},[])},RIVN:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("C6Ij"),u=e("AWcq"),s=e("NUGo"),a=e("S7zO"),o=e("SVse");class r{transform(l){return"warning"===l?"badge badge-warning":"error"===l?"badge badge-danger":"success"===l?"badge badge-success":"badge badge-info"}}var d=e("25BL"),c=e("uIqm"),m=e("XED3"),p=e("85J/");class h{constructor(l,n,e){this.rbdMirroringService=l,this.cephShortVersionPipe=n,this.i18n=e}ngOnInit(){this.columns=[{prop:"instance_id",name:this.i18n("Instance"),flexGrow:2},{prop:"id",name:this.i18n("ID"),flexGrow:2},{prop:"server_hostname",name:this.i18n("Hostname"),flexGrow:2},{prop:"version",name:this.i18n("Version"),pipe:this.cephShortVersionPipe,flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(l=>{l&&(this.data=l.content_data.daemons)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}var g=e("GiVz"),f=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),t["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵppd"](3,1),(l()(),t["ɵted"](4,null,["",""]))],(function(l,n){var e=t["ɵunv"](n,2,0,l(n,3,0,t["ɵnov"](n.parent,0),n.context.row.health_color));l(n,2,0,e)}),(function(l,n){l(n,4,0,n.context.value)}))}function b(l){return t["ɵvid"](0,[t["ɵpid"](0,r,[]),t["ɵqud"](402653184,1,{healthTmpl:0}),(l()(),t["ɵeld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](3,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["ɵand"](0,[[1,2],["healthTmpl",2]],null,0,null,v))],(function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",-1)}),null)}var C=e("HDdC"),S=e("0+/T"),_=e("oxzT"),R=e("vCyI"),y=e("kvvV"),w=e("aexS"),k=e("kn/O"),I=e("aa9H"),E=e("L4us");class N{constructor(l,n,e,t,i){this.authStorageService=l,this.rbdMirroringService=n,this.modalService=e,this.taskWrapper=t,this.i18n=i,this.selection=new R.a,this.data=[],this.permission=this.authStorageService.getPermissions().rbdMirroring;const u={permission:"update",icon:_.a.edit,click:()=>this.editModeModal(),name:this.i18n("Edit Mode"),canBePrimary:()=>!0},s={permission:"create",icon:_.a.add,name:this.i18n("Add Peer"),click:()=>this.editPeersModal("add"),disable:()=>!this.selection.first()||"disabled"===this.selection.first().mirror_mode,visible:()=>!this.getPeerUUID(),canBePrimary:()=>!1},a={permission:"update",icon:_.a.exchange,name:this.i18n("Edit Peer"),click:()=>this.editPeersModal("edit"),visible:()=>!!this.getPeerUUID()},o={permission:"delete",icon:_.a.destroy,name:this.i18n("Delete Peer"),click:()=>this.deletePeersModal(),visible:()=>!!this.getPeerUUID()};this.tableActions=[u,s,a,o]}ngOnInit(){this.columns=[{prop:"name",name:this.i18n("Name"),flexGrow:2},{prop:"mirror_mode",name:this.i18n("Mode"),flexGrow:2},{prop:"leader_id",name:this.i18n("Leader"),flexGrow:2},{prop:"image_local_count",name:this.i18n("# Local"),flexGrow:2},{prop:"image_remote_count",name:this.i18n("# Remote"),flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(l=>{l&&(this.data=l.content_data.pools)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}editModeModal(){const l={poolName:this.selection.first().name};this.modalRef=this.modalService.show(I.a,{initialState:l})}editPeersModal(l){const n={poolName:this.selection.first().name,mode:l};"edit"===l&&(n.peerUUID=this.getPeerUUID()),this.modalRef=this.modalService.show(E.a,{initialState:n})}deletePeersModal(){const l=this.selection.first().name,n=this.getPeerUUID();this.modalRef=this.modalService.show(S.a,{initialState:{itemDescription:this.i18n("mirror peer"),itemNames:[`${l} (${n})`],submitActionObservable:()=>new C.a(e=>{this.taskWrapper.wrapTaskAroundCall({task:new y.a("rbd/mirroring/peer/delete",{pool_name:l}),call:this.rbdMirroringService.deletePeer(l,n)}).subscribe(void 0,l=>e.error(l),()=>{this.rbdMirroringService.refresh(),e.complete()})})}})}getPeerUUID(){const l=this.selection.first(),n=this.data.find(n=>l&&l.name===n.name);if(n&&n.peer_uuids)return n.peer_uuids[0]}updateSelection(l){this.selection=l}}var F=e("LqlI"),T=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),t["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵppd"](3,1),(l()(),t["ɵted"](4,null,["",""]))],(function(l,n){var e=t["ɵunv"](n,2,0,l(n,3,0,t["ɵnov"](n.parent,0),n.context.row.health_color));l(n,2,0,e)}),(function(l,n){l(n,4,0,n.context.value)}))}function D(l){return t["ɵvid"](0,[t["ɵpid"](0,r,[]),t["ɵqud"](402653184,1,{healthTmpl:0}),(l()(),t["ɵeld"](2,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],(function(l,n,e){var t=!0,i=l.component;return"fetchData"===n&&(t=!1!==i.refresh()&&t),"updateSelection"===n&&(t=!1!==i.updateSelection(e)&&t),t}),d.b,d.a)),t["ɵdid"](3,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),t["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,s.b,s.a)),t["ɵdid"](5,114688,null,0,a.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["ɵand"](0,[[1,2],["healthTmpl",2]],null,0,null,V))],(function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",-1,"name","true","single"),l(n,5,0,e.permission,e.selection,e.tableActions)}),null)}var P=e("7qid"),x=e("38Bd"),q=e("pKUh"),B=e("2ZVE");class O{constructor(l,n){this.rbdMirroringService=l,this.i18n=n,this.image_error={data:[],columns:{}},this.image_syncing={data:[],columns:{}},this.image_ready={data:[],columns:{}}}ngOnInit(){this.image_error.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Issue"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.image_syncing.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"progress",name:this.i18n("Progress"),cellTemplate:this.progressTmpl,flexGrow:2},{prop:"state",name:this.i18n("State"),cellTemplate:this.syncTmpl,flexGrow:1}],this.image_ready.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Description"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(l=>{l&&(this.image_error.data=l.content_data.image_error,this.image_syncing.data=l.content_data.image_syncing,this.image_ready.data=l.content_data.image_ready)})}ngOnDestroy(){this.subs.unsubscribe()}refresh(){this.rbdMirroringService.refresh()}}var M=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function A(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](1,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(l,n){var e=n.component;l(n,1,0,e.image_error.data,e.image_error.columns,"flex",-1)}),null)}function L(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](1,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(l,n){var e=n.component;l(n,1,0,e.image_syncing.data,e.image_syncing.columns,"flex",-1)}),null)}function j(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t}),d.b,d.a)),t["ɵdid"](1,2867200,null,0,c.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(l,n){var e=n.component;l(n,1,0,e.image_ready.data,e.image_ready.columns,"flex",-1)}),null)}function $(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),t["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),t["ɵppd"](3,1),(l()(),t["ɵted"](4,null,["",""]))],(function(l,n){var e=t["ɵunv"](n,2,0,l(n,3,0,t["ɵnov"](n.parent,0),n.context.row.state_color));l(n,2,0,e)}),(function(l,n){l(n,4,0,n.context.value)}))}function G(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-info"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Syncing"]))],null,null)}function U(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"progressbar",[["type","info"]],[[1,"max",0],[2,"progress",null]],null,null,P.b,P.a)),t["ɵdid"](1,49152,null,0,x.b,[x.c],{type:[0,"type"],value:[1,"value"]},null)],(function(l,n){l(n,1,0,"info",n.context.value)}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).max,t["ɵnov"](n,1).addClass)}))}function X(l){return t["ɵvid"](0,[t["ɵpid"](0,r,[]),t["ɵqud"](402653184,1,{stateTmpl:0}),t["ɵqud"](402653184,2,{syncTmpl:0}),t["ɵqud"](402653184,3,{progressTmpl:0}),(l()(),t["ɵeld"](4,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,q.b,q.a)),t["ɵdid"](5,180224,[["tabset",4]],0,B.e,[B.f,t.Renderer2,t.ElementRef],null,null),(l()(),t["ɵeld"](6,0,null,0,3,"tab",[["heading","Issues"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](7,212992,null,0,B.b,[B.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,A)),t["ɵdid"](9,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](10,0,null,0,3,"tab",[["heading","Syncing"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](11,212992,null,0,B.b,[B.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,L)),t["ɵdid"](13,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](14,0,null,0,3,"tab",[["heading","Ready"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),t["ɵdid"](15,212992,null,0,B.b,[B.e,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,j)),t["ɵdid"](17,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,[[1,2],["stateTmpl",2]],null,0,null,$)),(l()(),t["ɵand"](0,[[2,2],["syncTmpl",2]],null,0,null,G)),(l()(),t["ɵand"](0,[[3,2],["progressTmpl",2]],null,0,null,U))],(function(l,n){l(n,7,0,"Issues"),l(n,9,0,null==t["ɵnov"](n,5).tabs[0]?null:t["ɵnov"](n,5).tabs[0].active),l(n,11,0,"Syncing"),l(n,13,0,null==t["ɵnov"](n,5).tabs[1]?null:t["ɵnov"](n,5).tabs[1].active),l(n,15,0,"Ready"),l(n,17,0,null==t["ɵnov"](n,5).tabs[2]?null:t["ɵnov"](n,5).tabs[2].active)}),(function(l,n){l(n,4,0,t["ɵnov"](n,5).clazz),l(n,6,0,t["ɵnov"](n,7).id,t["ɵnov"](n,7).active,t["ɵnov"](n,7).addClass,t["ɵnov"](n,7).role,t["ɵnov"](n,7).ariaLabelledby),l(n,10,0,t["ɵnov"](n,11).id,t["ɵnov"](n,11).active,t["ɵnov"](n,11).addClass,t["ɵnov"](n,11).role,t["ɵnov"](n,11).ariaLabelledby),l(n,14,0,t["ɵnov"](n,15).id,t["ɵnov"](n,15).active,t["ɵnov"](n,15).addClass,t["ɵnov"](n,15).role,t["ɵnov"](n,15).ariaLabelledby)}))}var z=e("cxJu");e.d(n,"a",(function(){return K}));var W=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function J(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,i.b,i.a)),t["ɵdid"](1,114688,null,0,u.a,[],{status:[0,"status"]},null),(l()(),t["ɵeld"](2,0,null,null,7,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](3,0,null,null,6,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](4,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name:"])),(l()(),t["ɵted"](7,null,[" ",""])),(l()(),t["ɵeld"](8,0,null,null,1,"cd-table-actions",[["class","table-actions float-right"]],null,null,null,s.b,s.a)),t["ɵdid"](9,114688,null,0,a.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["ɵeld"](10,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](11,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Daemons"])),(l()(),t["ɵeld"](14,0,null,null,1,"cd-mirroring-daemons",[],null,null,null,b,f)),t["ɵdid"](15,245760,null,0,h,[m.a,p.a,g.a],null,null),(l()(),t["ɵeld"](16,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["ɵeld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pools"])),(l()(),t["ɵeld"](19,0,null,null,1,"cd-mirroring-pools",[],null,null,null,D,T)),t["ɵdid"](20,245760,null,0,N,[w.a,m.a,F.b,k.a,g.a],null,null),(l()(),t["ɵeld"](21,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](22,0,null,null,4,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](23,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Images"])),(l()(),t["ɵeld"](25,0,null,null,1,"cd-mirroring-images",[],null,null,null,X,M)),t["ɵdid"](26,245760,null,0,O,[m.a,g.a],null,null)],(function(l,n){var e=n.component;l(n,1,0,e.status),l(n,9,0,e.permission,e.selection,e.tableActions),l(n,15,0),l(n,20,0),l(n,26,0)}),(function(l,n){l(n,7,0,n.component.siteName)}))}function Y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-mirroring",[],null,null,null,J,W)),t["ɵdid"](1,245760,null,0,z.a,[w.a,m.a,F.b,g.a],null,null)],(function(l,n){l(n,1,0)}),null)}var K=t["ɵccf"]("cd-mirroring",z.a,Y,{},{},[])},Sofw:function(l,n,e){"use strict";e.d(n,"a",(function(){return a}));var t=e("s7LF"),i=(e("my5R"),e("mtw6")),u=e("QFaf"),s=e("1Ni5");e("aexS"),e("9nlD");class a{constructor(l,n,e,t,i){this.authStorageService=l,this.bsModalRef=n,this.iscsiService=e,this.notificationService=t,this.i18n=i,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.permission=this.authStorageService.getPermissions().iscsi}ngOnInit(){this.hasPermission=this.permission.update,this.createForm(),this.iscsiService.getDiscovery().subscribe(l=>{this.discoveryForm.patchValue(l)})}createForm(){this.discoveryForm=new u.a({user:new t.i({value:"",disabled:!this.hasPermission}),password:new t.i({value:"",disabled:!this.hasPermission}),mutual_user:new t.i({value:"",disabled:!this.hasPermission}),mutual_password:new t.i({value:"",disabled:!this.hasPermission})}),s.a.validateIf(this.discoveryForm.get("user"),()=>this.discoveryForm.getValue("password")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),s.a.validateIf(this.discoveryForm.get("password"),()=>this.discoveryForm.getValue("user")||this.discoveryForm.getValue("mutual_user")||this.discoveryForm.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),s.a.validateIf(this.discoveryForm.get("mutual_user"),()=>this.discoveryForm.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_password")]),s.a.validateIf(this.discoveryForm.get("mutual_password"),()=>this.discoveryForm.getValue("mutual_user"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user")])}submitAction(){this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(()=>{this.notificationService.show(i.a.success,this.i18n("Updated discovery authentication")),this.bsModalRef.hide()},()=>{this.discoveryForm.setErrors({cdSubmitButton:!0})})}}},SuaG:function(l,n,e){"use strict";e.d(n,"a",(function(){return c}));var t=e("s7LF"),i=e("LvDl"),u=e("GyhO"),s=e("cp0P"),a=e("vkgz"),o=e("NJ9Y"),r=(e("XED3"),e("QFaf")),d=e("kvvV");e("kn/O");class c{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.pools=[],this.createForm()}createForm(){this.createBootstrapForm=new r.a({siteName:new t.i("",{validators:[t.B.required]}),pools:new t.k({},{validators:[this.validatePools()]}),token:new t.i("",{})})}ngOnInit(){this.createBootstrapForm.get("siteName").setValue(this.siteName),this.rbdMirroringService.getSiteName().subscribe(l=>{this.createBootstrapForm.get("siteName").setValue(l.site_name)}),this.subs=this.rbdMirroringService.subscribeSummary(l=>{if(!l)return;this.pools=l.content_data.pools.reduce((l,n)=>(l.push({name:n.name,mirror_mode:n.mirror_mode}),l),[]);const n=this.createBootstrapForm.get("pools");i.each(this.pools,l=>{const e=l.name,i="disabled"===l.mirror_mode,u=n.controls[e];u?i&&u.disabled?u.enable():!i&&u.enabled&&(u.disable(),u.setValue(!0)):n.addControl(e,new t.i({value:!i,disabled:!i}))})})}ngOnDestroy(){this.subs&&this.subs.unsubscribe()}validatePools(){return l=>{let n=0;return i.each(l.controls,l=>{!0===l.value&&++n}),n>0?null:{requirePool:!0}}}generate(){this.createBootstrapForm.get("token").setValue("");let l="";const n=[],e=this.createBootstrapForm.get("pools");i.each(e.controls,(e,t)=>{!0===e.value&&(l=t,e.disabled||n.push(t))});const t={mirror_mode:"image"},r=Object(u.a)(this.rbdMirroringService.setSiteName(this.createBootstrapForm.getValue("siteName")),Object(s.a)(n.map(l=>this.rbdMirroringService.updatePool(l,t))),this.rbdMirroringService.createBootstrapToken(l).pipe(Object(a.a)(l=>this.createBootstrapForm.get("token").setValue(l.token)))).pipe(Object(o.a)()),c=()=>{this.rbdMirroringService.refresh(),this.createBootstrapForm.setErrors({cdSubmitButton:!0})};this.taskWrapper.wrapTaskAroundCall({task:new d.a("rbd/mirroring/bootstrap/create",{}),call:r}).subscribe(void 0,c,c)}}},VBM6:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("SVse"),a=e("s7LF"),o=e("+gVj"),r=e("mXUL"),d=e("IZUe"),c=e("gp3X"),m=e("sb0X"),p=e("KVJa"),h=e("Z21x"),g=e("sne2"),f=e("L4us"),v=e("LqlI"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return P}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Edit"]))],null,null)}function R(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Add"]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Edit"]))],null,null)}function w(l){return t["ɵvid"](0,[(l()(),t["ɵted"](-1,null,["Add"]))],null,null)}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The cluster name is not valid."]))],null,null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The CephX ID is not valid."]))],null,null)}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["The monitory address is not valid."]))],null,null)}function T(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["CephX key must be base64 encoded."]))],null,null)}function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,106,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,7,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](3,0,null,null,5,null,null,null,null,null,null,null)),t["ɵdid"](4,16384,null,0,s.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,_)),t["ɵdid"](6,278528,null,0,s.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](8,16384,null,0,s.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],null,null),(l()(),t["ɵted"](-1,null,[" pool mirror peer"])),(l()(),t["ɵeld"](10,0,null,1,96,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](11,0,null,null,95,"form",[["class","form"],["name","editPeerForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,13).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,13).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,16).onSubmit()&&i),i}),null,null)),t["ɵdid"](12,16384,null,0,a.G,[],null,null),t["ɵdid"](13,540672,[["formDir",4]],0,a.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,a.d,null,[a.l]),t["ɵdid"](15,16384,null,0,a.s,[[4,a.d]],null,null),t["ɵdid"](16,16384,null,0,o.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](17,0,null,null,82,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](18,0,null,null,14,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](19,0,null,null,13,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](20,0,null,null,5,null,null,null,null,null,null,null)),t["ɵdid"](21,16384,null,0,s.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,y)),t["ɵdid"](23,278528,null,0,s.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](25,16384,null,0,s.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,s.NgSwitch],null,null),(l()(),t["ɵted"](-1,null,[" the pool mirror peer attributes for pool "])),(l()(),t["ɵeld"](27,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](28,null,["",""])),(l()(),t["ɵted"](-1,null,[" and click "])),(l()(),t["ɵeld"](30,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Submit"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](33,0,null,null,17,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](34,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](37,0,null,0,1,"label",[["class","col-form-label required"],["for","clusterName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Cluster Name"])),(l()(),t["ɵeld"](39,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","clusterName"],["id","clusterName"],["name","clusterName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,41)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,41).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,41)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,41)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](40,4210688,null,0,d.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](41,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](43,671744,[[1,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](45,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](46,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](48,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,I)),t["ɵdid"](50,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](51,0,null,null,16,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](52,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](55,0,null,0,1,"label",[["class","col-form-label required"],["for","clientID"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["CephX ID"])),(l()(),t["ɵeld"](57,0,null,0,6,"input",[["class","form-control"],["formControlName","clientID"],["id","clientID"],["name","clientID"],["placeholder","CephX ID..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,58)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,58).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,58)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,58)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](58,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](60,671744,[[3,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](62,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](63,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,E)),t["ɵdid"](65,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,N)),t["ɵdid"](67,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](68,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](69,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](72,0,null,0,2,"label",[["class","col-form-label"],["for","monAddr"]],null,null,null,null,null)),(l()(),t["ɵeld"](73,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Monitor Addresses"])),(l()(),t["ɵeld"](75,0,null,0,6,"input",[["class","form-control"],["formControlName","monAddr"],["id","monAddr"],["name","monAddr"],["placeholder","Comma-delimited addresses..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,76)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,76).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,76)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,76)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](76,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](78,671744,[[5,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](80,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](81,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,F)),t["ɵdid"](83,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](84,0,null,null,15,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](85,1163264,null,2,o.c,[t.ElementRef,o.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](88,0,null,0,2,"label",[["class","col-form-label"],["for","key"]],null,null,null,null,null)),(l()(),t["ɵeld"](89,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["CephX Key"])),(l()(),t["ɵeld"](91,0,null,0,6,"input",[["class","form-control"],["formControlName","key"],["id","key"],["name","key"],["placeholder","Base64-encoded key..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,92)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,92).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,92)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,92)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](92,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["ɵprd"](1024,null,a.p,(function(l){return[l]}),[a.e]),t["ɵdid"](94,671744,[[7,4]],0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,a.q,null,[a.j]),t["ɵdid"](96,16384,null,0,a.r,[[4,a.q]],null,null),t["ɵdid"](97,16384,null,0,o.h,[[3,a.d],o.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,T)),t["ɵdid"](99,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](100,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](101,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](102,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t}),c.b,c.a)),t["ɵdid"](103,114688,null,0,m.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Submit"])),(l()(),t["ɵeld"](105,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,p.b,p.a)),t["ɵdid"](106,49152,null,0,h.a,[s.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,4,0,e.mode),l(n,6,0,"edit"),l(n,13,0,e.editPeerForm),l(n,16,0,e.editPeerForm),l(n,21,0,e.mode),l(n,23,0,"edit"),l(n,34,0),l(n,40,0,""),l(n,43,0,"clusterName"),l(n,46,0,"clusterName"),l(n,48,0,e.editPeerForm.showError("clusterName",t["ɵnov"](n,13),"required")),l(n,50,0,e.editPeerForm.showError("clusterName",t["ɵnov"](n,13),"invalidClusterName")),l(n,52,0),l(n,60,0,"clientID"),l(n,63,0,"clientID"),l(n,65,0,e.editPeerForm.showError("clientID",t["ɵnov"](n,13),"required")),l(n,67,0,e.editPeerForm.showError("clientID",t["ɵnov"](n,13),"invalidClientID")),l(n,69,0),l(n,78,0,"monAddr"),l(n,81,0,"monAddr"),l(n,83,0,e.editPeerForm.showError("monAddr",t["ɵnov"](n,13),"invalidMonAddr")),l(n,85,0),l(n,94,0,"key"),l(n,97,0,"key"),l(n,99,0,e.editPeerForm.showError("key",t["ɵnov"](n,13),"invalidKey")),l(n,103,0,e.editPeerForm),l(n,106,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,11,0,t["ɵnov"](n,15).ngClassUntouched,t["ɵnov"](n,15).ngClassTouched,t["ɵnov"](n,15).ngClassPristine,t["ɵnov"](n,15).ngClassDirty,t["ɵnov"](n,15).ngClassValid,t["ɵnov"](n,15).ngClassInvalid,t["ɵnov"](n,15).ngClassPending),l(n,28,0,e.poolName),l(n,33,0,t["ɵnov"](n,34).hasErrors,t["ɵnov"](n,34).hasSuccess),l(n,39,0,t["ɵnov"](n,45).ngClassUntouched,t["ɵnov"](n,45).ngClassTouched,t["ɵnov"](n,45).ngClassPristine,t["ɵnov"](n,45).ngClassDirty,t["ɵnov"](n,45).ngClassValid,t["ɵnov"](n,45).ngClassInvalid,t["ɵnov"](n,45).ngClassPending,t["ɵnov"](n,46).validClass,t["ɵnov"](n,46).invalidClass),l(n,51,0,t["ɵnov"](n,52).hasErrors,t["ɵnov"](n,52).hasSuccess),l(n,57,0,t["ɵnov"](n,62).ngClassUntouched,t["ɵnov"](n,62).ngClassTouched,t["ɵnov"](n,62).ngClassPristine,t["ɵnov"](n,62).ngClassDirty,t["ɵnov"](n,62).ngClassValid,t["ɵnov"](n,62).ngClassInvalid,t["ɵnov"](n,62).ngClassPending,t["ɵnov"](n,63).validClass,t["ɵnov"](n,63).invalidClass),l(n,68,0,t["ɵnov"](n,69).hasErrors,t["ɵnov"](n,69).hasSuccess),l(n,75,0,t["ɵnov"](n,80).ngClassUntouched,t["ɵnov"](n,80).ngClassTouched,t["ɵnov"](n,80).ngClassPristine,t["ɵnov"](n,80).ngClassDirty,t["ɵnov"](n,80).ngClassValid,t["ɵnov"](n,80).ngClassInvalid,t["ɵnov"](n,80).ngClassPending,t["ɵnov"](n,81).validClass,t["ɵnov"](n,81).invalidClass),l(n,84,0,t["ɵnov"](n,85).hasErrors,t["ɵnov"](n,85).hasSuccess),l(n,91,0,t["ɵnov"](n,96).ngClassUntouched,t["ɵnov"](n,96).ngClassTouched,t["ɵnov"](n,96).ngClassPristine,t["ɵnov"](n,96).ngClassDirty,t["ɵnov"](n,96).ngClassValid,t["ɵnov"](n,96).ngClassInvalid,t["ɵnov"](n,96).ngClassPending,t["ɵnov"](n,97).validClass,t["ɵnov"](n,97).invalidClass)}))}function D(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-pool-edit-peer-modal",[],null,null,null,V,S)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var P=t["ɵccf"]("cd-pool-edit-peer-modal",f.a,D,{},{},[])},WkyA:function(l,n,e){"use strict";e.d(n,"a",(function(){return t}));class t{constructor(){}}},WxU5:function(l,n,e){"use strict";e.d(n,"a",(function(){return i})),e("Ekvf"),e("F83c"),e("2EZI");var t=e("kvvV");e("aexS"),e("kn/O");class i{constructor(l,n,e,t,i,u){this.authStorageService=l,this.rbdService=n,this.modalRef=e,this.fb=t,this.poolService=i,this.taskWrapper=u,this.poolPermission=this.authStorageService.getPermissions().pool}createForm(){this.purgeForm=this.fb.group({poolName:""})}ngOnInit(){this.poolPermission.read&&this.poolService.list(["pool_name","application_metadata"]).then(l=>{this.pools=l.filter(l=>l.application_metadata.includes("rbd")).map(l=>l.pool_name)}),this.createForm()}purge(){const l=this.purgeForm.getValue("poolName")||"";this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/purge",{pool_name:l}),call:this.rbdService.purgeTrash(l)}).subscribe(void 0,()=>{this.purgeForm.setErrors({cdSubmitButton:!0})},()=>{this.modalRef.hide()})}}},XED3:function(l,n,e){"use strict";e.d(n,"a",(function(){return d}));var t=e("mrSG"),i=e("IheW"),u=e("2Vo4"),s=e("xTzq"),a=e("lOp/"),o=e("8Y7J"),r=e("pL04");let d=(()=>{let l=class{constructor(l,n){this.http=l,this.timerService=n,this.REFRESH_INTERVAL=3e4,this.summaryDataSource=new u.a(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/block/mirroring/summary")}retrieveSummaryObserver(){return l=>{this.summaryDataSource.next(l)}}getCurrentSummary(){return this.summaryDataSource.getValue()}subscribeSummary(l,n){return this.summaryData$.subscribe(l,n)}getPool(l){return this.http.get(`api/block/mirroring/pool/${l}`)}updatePool(l,n){return this.http.put(`api/block/mirroring/pool/${l}`,n,{observe:"response"})}getSiteName(){return this.http.get("api/block/mirroring/site_name")}setSiteName(l){return this.http.put("api/block/mirroring/site_name",{site_name:l},{observe:"response"})}createBootstrapToken(l){return this.http.post(`api/block/mirroring/pool/${l}/bootstrap/token`,{})}importBootstrapToken(l,n,e){return this.http.post(`api/block/mirroring/pool/${l}/bootstrap/peer`,{direction:n,token:e},{observe:"response"})}getPeer(l,n){return this.http.get(`api/block/mirroring/pool/${l}/peer/${n}`)}addPeer(l,n){return this.http.post(`api/block/mirroring/pool/${l}/peer`,n,{observe:"response"})}updatePeer(l,n,e){return this.http.put(`api/block/mirroring/pool/${l}/peer/${n}`,e,{observe:"response"})}deletePeer(l,n){return this.http.delete(`api/block/mirroring/pool/${l}/peer/${n}`,{observe:"response"})}};return l.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new l(o["ɵɵinject"](i.c),o["ɵɵinject"](a.a))},token:l,providedIn:r.a}),t.__decorate([t.__param(0,s.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[String]),t.__metadata("design:returntype",void 0)],l.prototype,"setSiteName",null),t.__decorate([t.__param(1,s.b),t.__param(2,s.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[String,String,String]),t.__metadata("design:returntype",void 0)],l.prototype,"importBootstrapToken",null),l=t.__decorate([s.a,t.__metadata("design:paramtypes",[i.c,a.a])],l),l})()},Z4cD:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("s7LF"),i=e("LvDl"),u=(e("my5R"),e("QFaf"));class s{constructor(l,n){this.modalRef=l,this.iscsiService=n}ngOnInit(){const l={backstore:new t.i(this.imagesSettings[this.image].backstore),lun:new t.i(this.imagesSettings[this.image].lun),wwn:new t.i(this.imagesSettings[this.image].wwn)};i.forEach(this.backstores,n=>{const e=this.imagesSettings[this.image][n]||{};i.forIn(this.disk_default_controls[n],(n,i)=>{l[i]=new t.i(e[i])})}),this.settingsForm=new u.a(l)}getDiskControlLimits(l,n){return this.disk_controls_limits?this.disk_controls_limits[l][n]:{type:"int"}}save(){const l=this.settingsForm.controls.backstore.value,n=this.settingsForm.controls.lun.value,e=this.settingsForm.controls.wwn.value,t={};i.forIn(this.settingsForm.controls,(n,e)=>{""!==n.value&&null!==n.value&&e in this.disk_default_controls[this.settingsForm.value.backstore]&&(t[e]=n.value,i.forEach(this.backstores,t=>{t!==l&&e in(this.imagesSettings[this.image][t]||{})&&(this.imagesSettings[this.image][t][e]=n.value)}))}),this.imagesSettings[this.image].backstore=l,this.imagesSettings[this.image].lun=n,this.imagesSettings[this.image].wwn=e,this.imagesSettings[this.image][l]=t,this.imagesSettings=Object.assign({},this.imagesSettings),this.control.updateValueAndValidity({emitEvent:!1}),this.modalRef.hide()}}},Z5tW:function(l,n,e){"use strict";e.d(n,"a",(function(){return d}));var t=e("LvDl"),i=e("cp0P"),u=(e("Ekvf"),e("F83c"),e("0+/T")),s=(e("sne2"),e("oxzT")),a=e("mtw6"),o=e("vCyI"),r=(e("aexS"),e("9nlD"),e("daK0"));class d{constructor(l,n,e,i,u,a,r){this.authStorageService=l,this.rbdService=n,this.poolService=e,this.modalService=i,this.notificationService=u,this.i18n=a,this.actionLabels=r,this.selection=new o.a,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"create",icon:s.a.add,click:()=>this.createModal(),name:this.actionLabels.CREATE},{permission:"delete",icon:s.a.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE,disable:()=>!this.selection.first()||!t.isUndefined(this.getDeleteDisableDesc()),disableDesc:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:this.i18n("Namespace"),prop:"namespace",flexGrow:1},{name:this.i18n("Pool"),prop:"pool",flexGrow:1},{name:this.i18n("Total images"),prop:"num_images",flexGrow:1}],this.refresh()}refresh(){this.poolService.list(["pool_name","type","application_metadata"]).then(l=>{l=l.filter(l=>this.rbdService.isRBDPool(l)&&"replicated"===l.type);const n=[];l.forEach(l=>{n.push(this.rbdService.listNamespaces(l.pool_name))}),n.length>0?Object(i.a)(n).subscribe(n=>{const e=[];for(let t=0;t<n.length;t++){const i=l[t].pool_name;n[t].forEach(l=>{e.push({id:`${i}/${l.namespace}`,pool:i,namespace:l.namespace,num_images:l.num_images})})}this.namespaces=e}):this.namespaces=[]})}updateSelection(l){this.selection=l}createModal(){this.modalRef=this.modalService.show(r.a),this.modalRef.content.onSubmit.subscribe(()=>{this.refresh()})}deleteModal(){const l=this.selection.first().pool,n=this.selection.first().namespace;this.modalRef=this.modalService.show(u.a,{initialState:{itemDescription:"Namespace",itemNames:[`${l}/${n}`],submitAction:()=>this.rbdService.deleteNamespace(l,n).subscribe(()=>{this.notificationService.show(a.a.success,this.i18n("Deleted namespace '{{pool}}/{{namespace}}'",{pool:l,namespace:n})),this.modalRef.hide(),this.refresh()},()=>{this.modalRef.content.stopLoadingSpinner()})}})}getDeleteDisableDesc(){const l=this.selection.first();if(l&&l.num_images>0)return this.i18n("Namespace contains images")}}},a6qe:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("s7LF"),i=e("LvDl"),u=(e("my5R"),e("QFaf"));class s{constructor(l,n){this.modalRef=l,this.iscsiService=n}ngOnInit(){const l={};i.forIn(this.target_default_controls,(n,e)=>{l[e]=new t.i(this.target_controls.value[e])}),this.settingsForm=new u.a(l)}save(){const l={};i.forIn(this.settingsForm.controls,(n,e)=>{""!==n.value&&null!==n.value&&(l[e]=n.value)}),this.target_controls.setValue(l),this.modalRef.hide()}getTargetControlLimits(l){return this.target_controls_limits?this.target_controls_limits[l]:["Yes","No"].includes(this.target_default_controls[l])?{type:"bool"}:{type:"int"}}}},aAWM:function(l,n,e){"use strict";e("uIqm");var t=e("PhyI");class i{transform(l){return{0:"global",1:"pool",2:"image"}[l]}}e("aXbf"),e("o8EM"),e.d(n,"a",(function(){return u}));class u{constructor(l,n,e){this.formatterService=l,this.rbdConfigurationService=n,this.i18n=e,this.sourceField=t.a,this.typeField=t.b}ngOnInit(){this.poolConfigurationColumns=[{prop:"displayName",name:this.i18n("Name")},{prop:"description",name:this.i18n("Description")},{prop:"name",name:this.i18n("Key")},{prop:"source",name:this.i18n("Source"),cellTemplate:this.configurationSourceTpl,pipe:new i},{prop:"value",name:this.i18n("Value"),cellTemplate:this.configurationValueTpl}]}ngOnChanges(){this.data&&(this.data=this.data.filter(l=>this.rbdConfigurationService.getOptionFields().map(l=>l.name).includes(l.name)))}}},aa9H:function(l,n,e){"use strict";var t=e("s7LF"),i=(e("XED3"),e("QFaf")),u=e("kvvV");e("kn/O");class s{}e.d(n,"a",(function(){return a}));class a{constructor(l,n,e,t){this.modalRef=l,this.i18n=n,this.rbdMirroringService=e,this.taskWrapper=t,this.bsConfig={containerClass:"theme-default"},this.peerExists=!1,this.mirrorModes=[{id:"disabled",name:this.i18n("Disabled")},{id:"pool",name:this.i18n("Pool")},{id:"image",name:this.i18n("Image")}],this.createForm()}createForm(){this.editModeForm=new i.a({mirrorMode:new t.i("",{validators:[t.B.required,this.validateMode.bind(this)]})})}ngOnInit(){this.pattern=`${this.poolName}`,this.rbdMirroringService.getPool(this.poolName).subscribe(l=>{this.setResponse(l)}),this.subs=this.rbdMirroringService.subscribeSummary(l=>{if(this.peerExists=!1,!l)return;const n=l.content_data.pools.find(l=>this.poolName===l.name);this.peerExists=n&&n.peer_uuids.length})}ngOnDestroy(){this.subs.unsubscribe()}validateMode(l){return"disabled"===l.value&&this.peerExists?{cannotDisable:{value:l.value}}:null}setResponse(l){this.editModeForm.get("mirrorMode").setValue(l.mirror_mode)}update(){const l=new s;l.mirror_mode=this.editModeForm.getValue("mirrorMode"),this.taskWrapper.wrapTaskAroundCall({task:new u.a("rbd/mirroring/pool/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePool(this.poolName,l)}).subscribe(void 0,()=>this.editModeForm.setErrors({cdSubmitButton:!0}),()=>{this.rbdMirroringService.refresh(),this.modalRef.hide()})}}},bUo2:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("gp3X"),u=e("sb0X"),s=e("EEJc"),a=e("ajRT"),o=e("s7LF"),r=e("+gVj"),d=e("mXUL"),c=e("SVse"),m=e("D4zM"),p=e("OcYo"),h=e("EApP"),g=e("GiVz"),f=e("KVJa"),v=e("Z21x"),b=e("sne2"),C=e("Sofw"),S=e("aexS"),_=e("LqlI"),R=e("my5R"),y=e("9nlD");e.d(n,"a",(function(){return B}));var w=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function N(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function T(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function V(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function D(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function P(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submitAction()&&t),t}),i.b,i.a)),t["ɵdid"](1,114688,null,0,u.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Submit"]))],(function(l,n){l(n,1,0,n.component.discoveryForm)}),null)}function x(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,102,"cd-modal",[],null,null,null,s.c,s.b)),t["ɵdid"](1,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Discovery Authentication"])),(l()(),t["ɵeld"](4,0,null,1,98,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,97,"form",[["name","discoveryForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,o.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,o.d,null,[o.l]),t["ɵdid"](9,16384,null,0,o.s,[[4,o.d]],null,null),t["ɵdid"](10,16384,null,0,r.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,85,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](13,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["User"])),(l()(),t["ɵeld"](18,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](19,0,null,null,6,"input",[["class","form-control"],["formControlName","user"],["id","user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,20)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,20).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,20)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,20)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](20,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](22,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](24,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](25,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,k)),t["ɵdid"](27,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,I)),t["ɵdid"](29,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](30,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](31,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](34,0,null,0,1,"label",[["class","cd-col-form-label"],["for","password"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Password"])),(l()(),t["ɵeld"](36,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](37,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["ɵeld"](38,0,null,null,6,"input",[["class","form-control"],["formControlName","password"],["id","password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,39)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,39).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,39)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,39)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](39,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](41,671744,[[3,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](43,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](44,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](45,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),t["ɵeld"](46,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,47).onClick()&&i),i}),null,null)),t["ɵdid"](47,81920,null,0,m.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["ɵeld"](48,0,null,null,1,"button",[["cdCopy2ClipboardButton","password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,49).onClick()&&i),i}),null,null)),t["ɵdid"](49,81920,null,0,p.a,[t.ElementRef,t.Renderer2,h.j,g.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,E)),t["ɵdid"](51,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,N)),t["ɵdid"](53,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](54,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](55,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](58,0,null,0,2,"label",[["class","cd-col-form-label"],["for","mutual_user"]],null,null,null,null,null)),(l()(),t["ɵeld"](59,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Mutual User"])),(l()(),t["ɵeld"](61,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](62,0,null,null,6,"input",[["class","form-control"],["formControlName","mutual_user"],["id","mutual_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,63)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,63).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,63)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,63)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](63,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](65,671744,[[5,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](67,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](68,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,F)),t["ɵdid"](70,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,T)),t["ɵdid"](72,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](73,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),t["ɵdid"](74,1163264,null,2,r.c,[t.ElementRef,r.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](77,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mutual_password"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Mutual Password"])),(l()(),t["ɵeld"](79,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),t["ɵeld"](80,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["ɵeld"](81,0,null,null,6,"input",[["class","form-control"],["formControlName","mutual_password"],["id","mutual_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,82)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,82).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,82)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,82)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](82,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),t["ɵdid"](84,671744,[[7,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,o.q,null,[o.j]),t["ɵdid"](86,16384,null,0,o.r,[[4,o.q]],null,null),t["ɵdid"](87,16384,null,0,r.h,[[3,o.d],r.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](88,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),t["ɵeld"](89,0,null,null,1,"button",[["cdPasswordButton","mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,90).onClick()&&i),i}),null,null)),t["ɵdid"](90,81920,null,0,m.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["ɵeld"](91,0,null,null,1,"button",[["cdCopy2ClipboardButton","mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var i=!0;return"click"===n&&(i=!1!==t["ɵnov"](l,92).onClick()&&i),i}),null,null)),t["ɵdid"](92,81920,null,0,p.a,[t.ElementRef,t.Renderer2,h.j,g.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,V)),t["ɵdid"](94,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,D)),t["ɵdid"](96,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](97,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](98,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,P)),t["ɵdid"](100,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](101,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,f.b,f.a)),t["ɵdid"](102,49152,null,0,v.a,[c.Location,b.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.bsModalRef),l(n,7,0,e.discoveryForm),l(n,10,0,e.discoveryForm),l(n,13,0),l(n,22,0,"user"),l(n,25,0,"user"),l(n,27,0,e.discoveryForm.showError("user",t["ɵnov"](n,7),"required")),l(n,29,0,e.discoveryForm.showError("user",t["ɵnov"](n,7),"pattern")),l(n,31,0),l(n,41,0,"password"),l(n,44,0,"password"),l(n,47,0,"password"),l(n,49,0,"password"),l(n,51,0,e.discoveryForm.showError("password",t["ɵnov"](n,7),"required")),l(n,53,0,e.discoveryForm.showError("password",t["ɵnov"](n,7),"pattern")),l(n,55,0),l(n,65,0,"mutual_user"),l(n,68,0,"mutual_user"),l(n,70,0,e.discoveryForm.showError("mutual_user",t["ɵnov"](n,7),"required")),l(n,72,0,e.discoveryForm.showError("mutual_user",t["ɵnov"](n,7),"pattern")),l(n,74,0),l(n,84,0,"mutual_password"),l(n,87,0,"mutual_password"),l(n,90,0,"mutual_password"),l(n,92,0,"mutual_password"),l(n,94,0,e.discoveryForm.showError("mutual_password",t["ɵnov"](n,7),"required")),l(n,96,0,e.discoveryForm.showError("mutual_password",t["ɵnov"](n,7),"pattern")),l(n,100,0,e.hasPermission),l(n,102,0,"Cancel",e.bsModalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,12,0,t["ɵnov"](n,13).hasErrors,t["ɵnov"](n,13).hasSuccess),l(n,19,0,t["ɵnov"](n,24).ngClassUntouched,t["ɵnov"](n,24).ngClassTouched,t["ɵnov"](n,24).ngClassPristine,t["ɵnov"](n,24).ngClassDirty,t["ɵnov"](n,24).ngClassValid,t["ɵnov"](n,24).ngClassInvalid,t["ɵnov"](n,24).ngClassPending,t["ɵnov"](n,25).validClass,t["ɵnov"](n,25).invalidClass),l(n,30,0,t["ɵnov"](n,31).hasErrors,t["ɵnov"](n,31).hasSuccess),l(n,38,0,t["ɵnov"](n,43).ngClassUntouched,t["ɵnov"](n,43).ngClassTouched,t["ɵnov"](n,43).ngClassPristine,t["ɵnov"](n,43).ngClassDirty,t["ɵnov"](n,43).ngClassValid,t["ɵnov"](n,43).ngClassInvalid,t["ɵnov"](n,43).ngClassPending,t["ɵnov"](n,44).validClass,t["ɵnov"](n,44).invalidClass),l(n,54,0,t["ɵnov"](n,55).hasErrors,t["ɵnov"](n,55).hasSuccess),l(n,62,0,t["ɵnov"](n,67).ngClassUntouched,t["ɵnov"](n,67).ngClassTouched,t["ɵnov"](n,67).ngClassPristine,t["ɵnov"](n,67).ngClassDirty,t["ɵnov"](n,67).ngClassValid,t["ɵnov"](n,67).ngClassInvalid,t["ɵnov"](n,67).ngClassPending,t["ɵnov"](n,68).validClass,t["ɵnov"](n,68).invalidClass),l(n,73,0,t["ɵnov"](n,74).hasErrors,t["ɵnov"](n,74).hasSuccess),l(n,81,0,t["ɵnov"](n,86).ngClassUntouched,t["ɵnov"](n,86).ngClassTouched,t["ɵnov"](n,86).ngClassPristine,t["ɵnov"](n,86).ngClassDirty,t["ɵnov"](n,86).ngClassValid,t["ɵnov"](n,86).ngClassInvalid,t["ɵnov"](n,86).ngClassPending,t["ɵnov"](n,87).validClass,t["ɵnov"](n,87).invalidClass)}))}function q(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-discovery-modal",[],null,null,null,x,w)),t["ɵdid"](1,114688,null,0,C.a,[S.a,_.a,R.a,y.a,g.a],null,null)],(function(l,n){l(n,1,0)}),null)}var B=t["ɵccf"]("cd-iscsi-target-discovery-modal",C.a,q,{},{},[])},chpi:function(l,n,e){"use strict";e.d(n,"a",(function(){return h}));var t=e("LvDl"),i=e("wd/R"),u=(e("F83c"),e("0+/T")),s=(e("sne2"),e("uIqm"),e("x38r")),a=e("oxzT"),o=e("yJti"),r=e("vCyI"),d=e("kvvV"),c=e("jVDg"),m=(e("a0VL"),e("aexS"),e("VTlA"),e("kn/O"),e("WxU5")),p=e("2GqK");class h{constructor(l,n,e,t,i,u,s,o){this.authStorageService=l,this.rbdService=n,this.modalService=e,this.cdDatePipe=t,this.taskListService=i,this.taskWrapper=u,this.i18n=s,this.actionLabels=o,this.icons=a.a,this.executingTasks=[],this.selection=new r.a,this.disablePurgeBtn=!0,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"update",icon:a.a.undo,click:()=>this.restoreModal(),name:this.actionLabels.RESTORE},{permission:"delete",icon:a.a.destroy,click:()=>this.deleteModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:1,cellTransformation:s.a.executing},{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:1},{name:this.i18n("Namespace"),prop:"namespace",flexGrow:1},{name:this.i18n("Status"),prop:"deferment_end_time",flexGrow:1,cellTemplate:this.expiresTpl},{name:this.i18n("Deleted At"),prop:"deletion_time",flexGrow:1,pipe:this.cdDatePipe}],this.taskListService.init(()=>this.rbdService.listTrash(),l=>this.prepareResponse(l),l=>this.images=l,()=>this.onFetchError(),l=>["rbd/trash/remove","rbd/trash/restore"].includes(l.name),(l,n)=>new c.a(l.pool_name,l.namespace,l.id).toString()===n.metadata.image_id_spec,void 0)}prepareResponse(l){let n=[];const e={};l.forEach(l=>{t.isUndefined(e[l.status])&&(e[l.status]=[]),e[l.status].push(l.pool_name),n=n.concat(l.value),this.disablePurgeBtn=!n.length});const u=[];return t.forEach(e,(l,n)=>{u.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=u,n.forEach(l=>{l.cdIsExpired=i().isAfter(l.deferment_end_time)}),n}onFetchError(){this.table.reset(),this.viewCacheStatusList=[{status:o.a.ValueException}]}updateSelection(l){this.selection=l}restoreModal(){const l={poolName:this.selection.first().pool_name,namespace:this.selection.first().namespace,imageName:this.selection.first().name,imageId:this.selection.first().id};this.modalRef=this.modalService.show(p.a,{initialState:l})}deleteModal(){const l=this.selection.first().pool_name,n=this.selection.first().namespace,e=this.selection.first().id,t=this.selection.first().deferment_end_time,i=new c.a(l,n,e);this.modalRef=this.modalService.show(u.a,{initialState:{itemDescription:"RBD",itemNames:[i],bodyTemplate:this.deleteTpl,bodyContext:{$implicit:t},submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new d.a("rbd/trash/remove",{image_id_spec:i.toString()}),call:this.rbdService.removeTrash(i,!0)})}})}isExpired(l){return i().isAfter(l)}purgeModal(){this.modalService.show(m.a)}}},cxJu:function(l,n,e){"use strict";e.d(n,"a",(function(){return r}));var t=e("quSY"),i=(e("XED3"),e("oxzT")),u=e("vCyI"),s=(e("aexS"),e("SuaG")),a=e("+26A"),o=e("puGn");class r{constructor(l,n,e,s){this.authStorageService=l,this.rbdMirroringService=n,this.modalService=e,this.i18n=s,this.selection=new u.a,this.peersExist=!0,this.subs=new t.a,this.permission=this.authStorageService.getPermissions().rbdMirroring;const a={permission:"update",icon:i.a.edit,click:()=>this.editSiteNameModal(),name:this.i18n("Edit Site Name"),canBePrimary:()=>!0,disable:()=>!1},o={permission:"update",icon:i.a.upload,click:()=>this.createBootstrapModal(),name:this.i18n("Create Bootstrap Token"),disable:()=>!1},r={permission:"update",icon:i.a.download,click:()=>this.importBootstrapModal(),name:this.i18n("Import Bootstrap Token"),disable:()=>this.peersExist};this.tableActions=[a,o,r]}ngOnInit(){this.subs.add(this.rbdMirroringService.startPolling()),this.subs.add(this.rbdMirroringService.subscribeSummary(l=>{l&&(this.status=l.content_data.status,this.siteName=l.site_name,this.peersExist=!!l.content_data.pools.find(l=>l.peer_uuids.length>0))}))}ngOnDestroy(){this.subs.unsubscribe()}editSiteNameModal(){this.modalRef=this.modalService.show(o.a,{initialState:{siteName:this.siteName}})}createBootstrapModal(){this.modalRef=this.modalService.show(s.a,{initialState:{siteName:this.siteName}})}importBootstrapModal(){this.modalRef=this.modalService.show(a.a,{initialState:{siteName:this.siteName}})}}},daK0:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("s7LF"),i=e("XNiG"),u=(e("Ekvf"),e("F83c"),e("mtw6")),s=e("QFaf"),a=e("kvvV");e("aexS"),e("9nlD");class o{constructor(l,n,e,t,i,u){this.modalRef=l,this.authStorageService=n,this.notificationService=e,this.poolService=t,this.rbdService=i,this.i18n=u,this.pools=null,this.editing=!1,this.poolPermission=this.authStorageService.getPermissions().pool,this.createForm()}createForm(){this.namespaceForm=new s.a({pool:new t.i(""),namespace:new t.i("")},this.validator(),this.asyncValidator())}validator(){return l=>{const n=l.get("pool"),e=l.get("namespace");let t=null;n.value||(t={required:!0}),n.setErrors(t);let i=null;return e.value||(i={required:!0}),e.setErrors(i),null}}asyncValidator(){return l=>new Promise(n=>{const e=l.get("pool"),t=l.get("namespace");this.rbdService.listNamespaces(e.value).subscribe(l=>{if(l.some(l=>l.namespace===t.value)){const l={namespaceExists:!0};t.setErrors(l),n(l)}else n(null)})})}ngOnInit(){this.onSubmit=new i.a,this.poolPermission.read&&this.poolService.list(["pool_name","type","application_metadata"]).then(l=>{const n=[];for(const e of l)this.rbdService.isRBDPool(e)&&"replicated"===e.type&&n.push(e);if(this.pools=n,1===this.pools.length){const l=this.pools[0].pool_name;this.namespaceForm.get("pool").setValue(l)}})}submit(){const l=this.namespaceForm.getValue("pool"),n=this.namespaceForm.getValue("namespace"),e=new a.a;e.name="rbd/namespace/create",e.metadata={pool:l,namespace:n},this.rbdService.createNamespace(l,n).toPromise().then(()=>{this.notificationService.show(u.a.success,this.i18n("Created namespace '{{pool}}/{{namespace}}'",{pool:l,namespace:n})),this.modalRef.hide(),this.onSubmit.next()}).catch(()=>{this.namespaceForm.setErrors({cdSubmitButton:!0})})}}},"e/kN":function(l,n,e){"use strict";e.d(n,"a",(function(){return c}));var t=e("LvDl"),i=(e("my5R"),e("+fVR")),u=e("0+/T"),s=(e("sne2"),e("uIqm"),e("x38r")),a=e("oxzT"),o=e("vCyI"),r=e("kvvV"),d=(e("+0ag"),e("G1/K"),e("aexS"),e("mSOc"),e("VTlA"),e("kn/O"),e("Sofw"));class c extends i.a{constructor(l,n,e,i,u,s,r,d,c,m){super(),this.authStorageService=l,this.i18n=n,this.iscsiService=e,this.taskListService=i,this.cephReleaseNamePipe=u,this.notAvailablePipe=s,this.summaryservice=r,this.modalService=d,this.taskWrapper=c,this.actionLabels=m,this.available=void 0,this.selection=new o.a,this.targets=[],this.icons=a.a,this.builders={"iscsi/target/create":l=>({target_iqn:l.target_iqn})},this.permission=this.authStorageService.getPermissions().iscsi,this.tableActions=[{permission:"create",icon:a.a.add,routerLink:()=>"/block/iscsi/targets/create",name:this.actionLabels.CREATE},{permission:"update",icon:a.a.edit,routerLink:()=>`/block/iscsi/targets/edit/${this.selection.first().target_iqn}`,name:this.actionLabels.EDIT,disable:()=>!this.selection.first()||!t.isUndefined(this.getDeleteDisableDesc()),disableDesc:()=>this.getEditDisableDesc()},{permission:"delete",icon:a.a.destroy,click:()=>this.deleteIscsiTargetModal(),name:this.actionLabels.DELETE,disable:()=>!this.selection.first()||!t.isUndefined(this.getDeleteDisableDesc()),disableDesc:()=>this.getDeleteDisableDesc()}]}ngOnInit(){this.columns=[{name:this.i18n("Target"),prop:"target_iqn",flexGrow:2,cellTransformation:s.a.executing},{name:this.i18n("Portals"),prop:"cdPortals",flexGrow:2},{name:this.i18n("Images"),prop:"cdImages",flexGrow:2},{name:this.i18n("# Sessions"),prop:"info.num_sessions",pipe:this.notAvailablePipe,flexGrow:1}],this.iscsiService.status().subscribe(l=>{if(this.available=l.available,l.available)this.iscsiService.version().subscribe(l=>{this.cephIscsiConfigVersion=l.ceph_iscsi_config_version,this.taskListService.init(()=>this.iscsiService.listTargets(),l=>this.prepareResponse(l),l=>this.targets=l,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)}),this.iscsiService.settings().subscribe(l=>{this.settings=l});else{const n=this.summaryservice.getCurrentSummary(),e=this.cephReleaseNamePipe.transform(n.version);this.docsUrl=`http://docs.ceph.com/docs/${e}/mgr/dashboard/#enabling-iscsi-management`,this.status=l.message}})}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}getEditDisableDesc(){const l=this.selection.first();return l&&l.cdExecuting?l.cdExecuting:l&&t.isUndefined(l.info)?this.i18n("Unavailable gateway(s)"):void 0}getDeleteDisableDesc(){const l=this.selection.first();return l&&l.cdExecuting?l.cdExecuting:l&&t.isUndefined(l.info)?this.i18n("Unavailable gateway(s)"):l&&l.info&&l.info.num_sessions?this.i18n("Target has active sessions"):void 0}prepareResponse(l){return l.forEach(l=>{l.cdPortals=l.portals.map(l=>`${l.host}:${l.ip}`),l.cdImages=l.disks.map(l=>`${l.pool}/${l.image}`)}),l}onFetchError(){this.table.reset()}itemFilter(l,n){return l.target_iqn===n.metadata.target_iqn}taskFilter(l){return["iscsi/target/create","iscsi/target/edit","iscsi/target/delete"].includes(l.name)}updateSelection(l){this.selection=l}deleteIscsiTargetModal(){const l=this.selection.first().target_iqn;this.modalRef=this.modalService.show(u.a,{initialState:{itemDescription:this.i18n("iSCSI target"),itemNames:[l],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new r.a("iscsi/target/delete",{target_iqn:l}),call:this.iscsiService.deleteTarget(l)})}})}configureDiscoveryAuth(){this.modalService.show(d.a,{})}}},eF8U:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("SVse"),a=e("mXUL");e("jMP8"),e.d(n,"a",(function(){return o})),e.d(n,"b",(function(){return v}));var o=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function r(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function d(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,11,"select",[["class","form-control custom-select"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,1).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](7,0,null,null,2,"option",[],null,null,null,null,null)),t["ɵdid"](8,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),t["ɵdid"](9,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,r)),t["ɵdid"](11,278528,null,0,s.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.setting),l(n,6,0,e.setting),l(n,8,0,null),l(n,9,0,null),l(n,11,0,e.limits.values)}),(function(l,n){var e=n.component;l(n,0,1,[t["ɵinlineInterpolate"](1,"",e.setting,""),t["ɵinlineInterpolate"](1,"",e.setting,""),t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass])}))}function c(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.value)&&i),"input"===n&&(i=!1!==t["ɵnov"](l,2).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,2).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵdid"](2,16384,null,0,i.w,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),t["ɵdid"](4,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](6,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](7,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0,e.setting),l(n,7,0,e.setting)}),(function(l,n){l(n,0,0,t["ɵnov"](n,6).ngClassUntouched,t["ɵnov"](n,6).ngClassTouched,t["ɵnov"](n,6).ngClassPristine,t["ɵnov"](n,6).ngClassDirty,t["ɵnov"](n,6).ngClassValid,t["ɵnov"](n,6).ngClassInvalid,t["ɵnov"](n,6).ngClassPending,t["ɵnov"](n,7).validClass,t["ɵnov"](n,7).invalidClass)}))}function m(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.setting),l(n,6,0,e.setting)}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function p(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,23,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),t["ɵeld"](2,0,null,null,10,"div",[["class","custom-control custom-radio custom-control-inline"]],null,null,null,null,null)),(l()(),t["ɵeld"](3,0,null,null,7,"input",[["class","custom-control-input"],["type","radio"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,4)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,4).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,4)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,4)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,5).onChange()&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,5).onTouched()&&i),i}),null,null)),t["ɵdid"](4,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵdid"](5,212992,null,0,i.x,[t.Renderer2,t.ElementRef,i.D,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.x]),t["ɵdid"](7,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](9,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](10,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](11,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](-1,null,["Yes"])),(l()(),t["ɵeld"](13,0,null,null,10,"div",[["class","custom-control custom-radio custom-control-inline"]],null,null,null,null,null)),(l()(),t["ɵeld"](14,0,null,null,7,"input",[["class","custom-control-input"],["type","radio"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,15)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,15).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,15)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,15)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,16).onChange()&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,16).onTouched()&&i),i}),null,null)),t["ɵdid"](15,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵdid"](16,212992,null,0,i.x,[t.Renderer2,t.ElementRef,i.D,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.x]),t["ɵdid"](18,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](20,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](21,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](22,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](-1,null,["No"]))],(function(l,n){var e=n.component;l(n,5,0,e.setting,!0),l(n,7,0,e.setting),l(n,10,0,e.setting),l(n,16,0,e.setting,!1),l(n,18,0,e.setting),l(n,21,0,e.setting)}),(function(l,n){var e=n.component;l(n,3,0,e.setting+"True",t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending,t["ɵnov"](n,10).validClass,t["ɵnov"](n,10).invalidClass),l(n,11,0,e.setting+"True"),l(n,14,0,e.setting+"False",t["ɵnov"](n,20).ngClassUntouched,t["ɵnov"](n,20).ngClassTouched,t["ɵnov"](n,20).ngClassPristine,t["ɵnov"](n,20).ngClassDirty,t["ɵnov"](n,20).ngClassValid,t["ɵnov"](n,20).ngClassInvalid,t["ɵnov"](n,20).ngClassPending,t["ɵnov"](n,21).validClass,t["ɵnov"](n,21).invalidClass),l(n,22,0,e.setting+"False")}))}function h(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,c)),t["ɵdid"](2,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,m)),t["ɵdid"](4,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,p)),t["ɵdid"](6,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,2,0,"int"===e.limits.type),l(n,4,0,"str"===e.limits.type),l(n,6,0,"bool"===e.limits.type)}),null)}function g(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](2,null,["Must be greater than or equal to ","."]))],null,(function(l,n){l(n,2,0,n.component.limits.min)}))}function f(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](2,null,["Must be less than or equal to ","."]))],null,(function(l,n){l(n,2,0,n.component.limits.max)}))}function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,17,"div",[["class","form-group"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,1).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,1).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,4).onSubmit()&&i),i}),a.b,a.a)),t["ɵdid"](1,540672,null,0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](3,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](4,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),t["ɵdid"](5,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](8,0,null,0,1,"label",[["class","col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["ɵted"](9,null,["",""])),(l()(),t["ɵand"](16777216,null,0,1,null,d)),t["ɵdid"](11,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,h)),t["ɵdid"](13,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,g)),t["ɵdid"](15,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,f)),t["ɵdid"](17,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.settingsForm),l(n,4,0,e.settingsForm),l(n,5,0),l(n,11,0,"enum"===e.limits.type),l(n,13,0,"enum"!==e.limits.type),l(n,15,0,e.settingsForm.showError(e.setting,e.formDir,"min")),l(n,17,0,e.settingsForm.showError(e.setting,e.formDir,"max"))}),(function(l,n){var e=n.component;l(n,0,0,t["ɵnov"](n,3).ngClassUntouched,t["ɵnov"](n,3).ngClassTouched,t["ɵnov"](n,3).ngClassPristine,t["ɵnov"](n,3).ngClassDirty,t["ɵnov"](n,3).ngClassValid,t["ɵnov"](n,3).ngClassInvalid,t["ɵnov"](n,3).ngClassPending,t["ɵnov"](n,5).hasErrors,t["ɵnov"](n,5).hasSuccess),l(n,8,0,t["ɵinlineInterpolate"](1,"",e.setting,"")),l(n,9,0,e.setting)}))}},gr3l:function(l,n,e){"use strict";e.d(n,"a",(function(){return h}));var t=e("s7LF"),i=e("LvDl"),u=e("cp0P"),s=(e("my5R"),e("F83c"),e("DNAf")),a=e("a96k"),o=(e("sne2"),e("oxzT")),r=e("QFaf"),d=e("1Ni5"),c=e("kvvV"),m=(e("kn/O"),e("Z4cD")),p=e("a6qe");class h{constructor(l,n,e,t,i,u,a,r){this.iscsiService=l,this.modalService=n,this.rbdService=e,this.router=t,this.route=i,this.i18n=u,this.taskWrapper=a,this.actionLabels=r,this.api_version=0,this.minimum_gateways=1,this.icons=o.a,this.isEdit=!1,this.portalsSelections=[],this.imagesInitiatorSelections=[],this.groupDiskSelections=[],this.groupMembersSelections=[],this.imagesSettings={},this.messages={portals:new s.a({noOptions:this.i18n("There are no portals available.")},this.i18n),images:new s.a({noOptions:this.i18n("There are no images available.")},this.i18n),initiatorImage:new s.a({noOptions:this.i18n("There are no images available. Please make sure you add an image to the target.")},this.i18n),groupInitiator:new s.a({noOptions:this.i18n("There are no initiators available. Please make sure you add an initiator to the target.")},this.i18n)},this.IQN_REGEX=/^iqn\.(19|20)\d\d-(0[1-9]|1[0-2])\.\D{2,3}(\.[A-Za-z0-9-]+)+(:[A-Za-z0-9-\.]+)*$/,this.USER_REGEX=/^[\w\.:@_-]{8,64}$/,this.PASSWORD_REGEX=/^[\w@\-_\/]{12,16}$/,this.resource=this.i18n("target")}ngOnInit(){const l=[this.iscsiService.listTargets(),this.rbdService.list(),this.iscsiService.portals(),this.iscsiService.settings(),this.iscsiService.version()];this.router.url.startsWith("/block/iscsi/targets/edit")&&(this.isEdit=!0,this.route.params.subscribe(n=>{this.target_iqn=decodeURIComponent(n.target_iqn),l.push(this.iscsiService.getTarget(this.target_iqn))})),this.action=this.isEdit?this.actionLabels.EDIT:this.actionLabels.CREATE,Object(u.a)(l).subscribe(l=>{const n=i(l[0]).filter(l=>l.target_iqn!==this.target_iqn).flatMap(l=>l.disks).map(l=>`${l.pool}/${l.image}`).value();"api_version"in l[3]&&(this.api_version=l[3].api_version),this.minimum_gateways=l[3].config.minimum_gateways,this.target_default_controls=l[3].target_default_controls,this.target_controls_limits=l[3].target_controls_limits,this.disk_default_controls=l[3].disk_default_controls,this.disk_controls_limits=l[3].disk_controls_limits,this.backstores=l[3].backstores,this.default_backstore=l[3].default_backstore,this.unsupported_rbd_features=l[3].unsupported_rbd_features,this.required_rbd_features=l[3].required_rbd_features,this.imagesAll=i(l[1]).flatMap(l=>l.value).filter(l=>!l.namespace&&-1===n.indexOf(`${l.pool_name}/${l.name}`)&&0!==this.getValidBackstores(l).length).value(),this.imagesSelections=this.imagesAll.map(l=>new a.a(!1,`${l.pool_name}/${l.name}`,""));const e=[];l[2].forEach(l=>{l.ip_addresses.forEach(n=>{e.push(new a.a(!1,l.name+":"+n,""))})}),this.portalsSelections=[...e],this.cephIscsiConfigVersion=l[4].ceph_iscsi_config_version,this.createForm(),l[5]&&this.resolveModel(l[5])})}createForm(){if(this.targetForm=new r.a({target_iqn:new t.i("iqn.2001-07.com.ceph:"+Date.now(),{validators:[t.B.required,t.B.pattern(this.IQN_REGEX)]}),target_controls:new t.i({}),portals:new t.i([],{validators:[d.a.custom("minGateways",l=>i.uniq(l.map(l=>l.split(":")[0])).length<Math.max(1,this.minimum_gateways))]}),disks:new t.i([],{validators:[d.a.custom("dupLunId",l=>{const n=this.getLunIds(l);return n.length!==i.uniq(n).length}),d.a.custom("dupWwn",l=>{const n=this.getWwns(l);return n.length!==i.uniq(n).length})]}),initiators:new t.f([]),groups:new t.f([]),acl_enabled:new t.i(!1)}),this.cephIscsiConfigVersion>10){const l=new r.a({user:new t.i(""),password:new t.i(""),mutual_user:new t.i(""),mutual_password:new t.i("")});this.setAuthValidator(l),this.targetForm.addControl("auth",l)}}resolveModel(l){this.targetForm.patchValue({target_iqn:l.target_iqn,target_controls:l.target_controls,acl_enabled:l.acl_enabled}),this.cephIscsiConfigVersion>10&&this.targetForm.patchValue({auth:l.auth});const n=[];i.forEach(l.portals,l=>{n.push(`${l.host}:${l.ip}`)}),this.targetForm.patchValue({portals:n});const e=[];i.forEach(l.disks,l=>{const n=`${l.pool}/${l.image}`;e.push(n),this.imagesSettings[n]={backstore:l.backstore},this.imagesSettings[n][l.backstore]=l.controls,"lun"in l&&(this.imagesSettings[n].lun=l.lun),"wwn"in l&&(this.imagesSettings[n].wwn=l.wwn),this.onImageSelection({option:{name:n,selected:!0}})}),this.targetForm.patchValue({disks:e}),i.forEach(l.clients,l=>{const n=this.addInitiator();l.luns=i.map(l.luns,l=>`${l.pool}/${l.image}`),n.patchValue(l)}),i.forEach(l.groups,l=>{const n=this.addGroup();l.disks=i.map(l.disks,l=>`${l.pool}/${l.image}`),n.patchValue(l),i.forEach(l.members,l=>{this.onGroupMemberSelection({option:new a.a(!0,l,"")})})})}hasAdvancedSettings(l){return Object.values(l).length>0}get portals(){return this.targetForm.get("portals")}onPortalSelection(){this.portals.setValue(this.portals.value)}removePortal(l,n){return this.portalsSelections.forEach(l=>{l.name===n&&(l.selected=!1)}),this.portals.value.splice(l,1),this.portals.setValue(this.portals.value),!1}get disks(){return this.targetForm.get("disks")}removeImage(l,n){return this.imagesSelections.forEach(l=>{l.name===n&&(l.selected=!1)}),this.disks.value.splice(l,1),this.removeImageRefs(n),this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1}),!1}removeImageRefs(l){this.initiators.controls.forEach(n=>{const e=n.value.luns.filter(n=>n!==l);n.get("luns").setValue(e)}),this.groups.controls.forEach(n=>{const e=n.value.disks.filter(n=>n!==l);n.get("disks").setValue(e)}),i.forEach(this.imagesInitiatorSelections,(n,e)=>{this.imagesInitiatorSelections[e]=n.filter(n=>n.name!==l)}),i.forEach(this.groupDiskSelections,(n,e)=>{this.groupDiskSelections[e]=n.filter(n=>n.name!==l)})}getDefaultBackstore(l){let n=this.default_backstore;const e=this.getImageById(l);return this.validFeatures(e,this.default_backstore)||this.backstores.forEach(l=>{l!==this.default_backstore&&this.validFeatures(e,l)&&(n=l)}),n}isLunIdInUse(l,n){const e=this.disks.value.filter(l=>l!==n);return this.getLunIds(e).includes(l)}getLunIds(l){return i.map(l,l=>this.imagesSettings[l].lun)}nextLunId(l){const n=this.disks.value.filter(n=>n!==l),e=this.getLunIds(n);let t=0;for(;e.includes(t);)t++;return t}getWwns(l){return i.map(l,l=>this.imagesSettings[l].wwn).filter(l=>i.isString(l)&&""!==l)}onImageSelection(l){const n=l.option;if(n.selected){if(this.imagesSettings[n.name])this.isLunIdInUse(this.imagesSettings[n.name].lun,n.name)&&(this.imagesSettings[n.name].lun=this.nextLunId(n.name));else{const l=this.getDefaultBackstore(n.name);this.imagesSettings[n.name]={backstore:l,lun:this.nextLunId(n.name)},this.imagesSettings[n.name][l]={}}i.forEach(this.imagesInitiatorSelections,(l,e)=>{l.push(new a.a(!1,n.name,"")),this.imagesInitiatorSelections[e]=[...l]}),i.forEach(this.groupDiskSelections,(l,e)=>{l.push(new a.a(!1,n.name,"")),this.groupDiskSelections[e]=[...l]})}else this.removeImageRefs(n.name);this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1})}get initiators(){return this.targetForm.get("initiators")}addInitiator(){const l=new r.a({client_iqn:new t.i("",{validators:[t.B.required,d.a.custom("notUnique",l=>{const n=this.initiators.controls.reduce((function(l,n){return l.concat(n.value.client_iqn)}),[]);return n.indexOf(l)!==n.lastIndexOf(l)}),t.B.pattern(this.IQN_REGEX)]}),auth:new r.a({user:new t.i(""),password:new t.i(""),mutual_user:new t.i(""),mutual_password:new t.i("")}),luns:new t.i([]),cdIsInGroup:new t.i(!1)});this.setAuthValidator(l),this.initiators.push(l),i.forEach(this.groupMembersSelections,(l,n)=>{l.push(new a.a(!1,"","")),this.groupMembersSelections[n]=[...l]});const n=i.map(this.targetForm.getValue("disks"),l=>new a.a(!1,l,""));return this.imagesInitiatorSelections.push(n),l}setAuthValidator(l){d.a.validateIf(l.get("user"),()=>l.getValue("password")||l.getValue("mutual_user")||l.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[l.get("password"),l.get("mutual_user"),l.get("mutual_password")]),d.a.validateIf(l.get("password"),()=>l.getValue("user")||l.getValue("mutual_user")||l.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[l.get("user"),l.get("mutual_user"),l.get("mutual_password")]),d.a.validateIf(l.get("mutual_user"),()=>l.getValue("mutual_password"),[t.B.required],[t.B.pattern(this.USER_REGEX)],[l.get("user"),l.get("password"),l.get("mutual_password")]),d.a.validateIf(l.get("mutual_password"),()=>l.getValue("mutual_user"),[t.B.required],[t.B.pattern(this.PASSWORD_REGEX)],[l.get("user"),l.get("password"),l.get("mutual_user")])}removeInitiator(l){const n=this.initiators.value[l];this.initiators.removeAt(l),i.forEach(this.groupMembersSelections,(n,e)=>{n.splice(l,1),this.groupMembersSelections[e]=[...n]}),this.groups.controls.forEach(l=>{const e=l.value.members.filter(l=>l!==n.client_iqn);l.get("members").setValue(e)}),this.imagesInitiatorSelections.splice(l,1)}updatedInitiatorSelector(){this.initiators.controls.forEach(l=>{l.get("client_iqn").updateValueAndValidity({emitEvent:!1})}),i.forEach(this.groupMembersSelections,(l,n)=>{i.forEach(l,(l,n)=>{const e=l.name;l.name=this.initiators.controls[n].value.client_iqn,this.groups.controls.forEach(n=>{const t=n.value.members,i=t.indexOf(e);-1!==i&&(t[i]=l.name),n.get("members").setValue(t)})}),this.groupMembersSelections[n]=[...this.groupMembersSelections[n]]})}removeInitiatorImage(l,n,e,t){const i=l.getValue("luns");return i.splice(n,1),l.patchValue({luns:i}),this.imagesInitiatorSelections[e].forEach(l=>{l.name===t&&(l.selected=!1)}),!1}get groups(){return this.targetForm.get("groups")}addGroup(){const l=new r.a({group_id:new t.i("",{validators:[t.B.required]}),members:new t.i([]),disks:new t.i([])});this.groups.push(l);const n=i.map(this.targetForm.getValue("disks"),l=>new a.a(!1,l,""));this.groupDiskSelections.push(n);const e=i.map(this.initiators.value,l=>new a.a(!1,l.client_iqn,"",!l.cdIsInGroup));return this.groupMembersSelections.push(e),l}removeGroup(l){this.groups.removeAt(l),this.groupDiskSelections.splice(l,1)}onGroupMemberSelection(l){const n=l.option;let e;this.initiators.controls.forEach((l,t)=>{l.value.client_iqn===n.name&&(l.patchValue({luns:[]}),l.get("cdIsInGroup").setValue(n.selected),e=t)}),i.forEach(this.groupMembersSelections,l=>{l[e].enabled=!n.selected})}removeGroupInitiator(l,n,e){const t=l.getValue("members")[n];l.getValue("members").splice(n,1),this.groupMembersSelections[e].forEach(l=>{l.name===t&&(l.selected=!1)}),this.groupMembersSelections[e]=[...this.groupMembersSelections[e]],this.onGroupMemberSelection({option:new a.a(!1,t,"")})}removeGroupDisk(l,n,e){const t=l.getValue("disks")[n];l.getValue("disks").splice(n,1),this.groupDiskSelections[e].forEach(l=>{l.name===t&&(l.selected=!1)}),this.groupDiskSelections[e]=[...this.groupDiskSelections[e]]}submit(){const l=i.cloneDeep(this.targetForm.value),n={target_iqn:this.targetForm.getValue("target_iqn"),target_controls:this.targetForm.getValue("target_controls"),acl_enabled:this.targetForm.getValue("acl_enabled"),portals:[],disks:[],clients:[],groups:[]};if(this.cephIscsiConfigVersion>10){const l=this.targetForm.get("auth");l.getValue("user")||l.get("user").setValue(""),l.getValue("password")||l.get("password").setValue(""),l.getValue("mutual_user")||l.get("mutual_user").setValue(""),l.getValue("mutual_password")||l.get("mutual_password").setValue("");const e=this.targetForm.getValue("acl_enabled");n.auth={user:e?"":l.getValue("user"),password:e?"":l.getValue("password"),mutual_user:e?"":l.getValue("mutual_user"),mutual_password:e?"":l.getValue("mutual_password")}}let e;l.disks.forEach(l=>{const e=l.split("/"),t=this.imagesSettings[l].backstore;n.disks.push({pool:e[0],image:e[1],backstore:t,controls:this.imagesSettings[l][t],lun:this.imagesSettings[l].lun,wwn:this.imagesSettings[l].wwn})}),l.portals.forEach(l=>{const e=l.indexOf(":");n.portals.push({host:l.substring(0,e),ip:l.substring(e+1)})}),n.acl_enabled&&(l.initiators.forEach(l=>{l.auth.user||(l.auth.user=""),l.auth.password||(l.auth.password=""),l.auth.mutual_user||(l.auth.mutual_user=""),l.auth.mutual_password||(l.auth.mutual_password=""),delete l.cdIsInGroup;const n=[];l.luns.forEach(l=>{const e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.luns=n}),n.clients=l.initiators),n.acl_enabled&&(l.groups.forEach(l=>{const n=[];l.disks.forEach(l=>{const e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.disks=n}),n.groups=l.groups),this.isEdit?(n.new_target_iqn=n.target_iqn,n.target_iqn=this.target_iqn,e=this.taskWrapper.wrapTaskAroundCall({task:new c.a("iscsi/target/edit",{target_iqn:n.target_iqn}),call:this.iscsiService.updateTarget(this.target_iqn,n)})):e=this.taskWrapper.wrapTaskAroundCall({task:new c.a("iscsi/target/create",{target_iqn:n.target_iqn}),call:this.iscsiService.createTarget(n)}),e.subscribe(void 0,()=>{this.targetForm.setErrors({cdSubmitButton:!0})},()=>this.router.navigate(["/block/iscsi/targets"]))}targetSettingsModal(){const l={target_controls:this.targetForm.get("target_controls"),target_default_controls:this.target_default_controls,target_controls_limits:this.target_controls_limits};this.modalRef=this.modalService.show(p.a,{initialState:l})}imageSettingsModal(l){const n={imagesSettings:this.imagesSettings,image:l,api_version:this.api_version,disk_default_controls:this.disk_default_controls,disk_controls_limits:this.disk_controls_limits,backstores:this.getValidBackstores(this.getImageById(l)),control:this.targetForm.get("disks")};this.modalRef=this.modalService.show(m.a,{initialState:n})}validFeatures(l,n){const e=l.features,t=this.required_rbd_features[n];return(e&t)===t&&0==(e&this.unsupported_rbd_features[n])}getImageById(l){return this.imagesAll.find(n=>l===`${n.pool_name}/${n.name}`)}getValidBackstores(l){return this.backstores.filter(n=>this.validFeatures(l,n))}}},jMP8:function(l,n,e){"use strict";e.d(n,"a",(function(){return i}));var t=e("s7LF");e("QFaf");class i{ngOnInit(){const l=[];"min"in this.limits&&l.push(t.B.min(this.limits.min)),"max"in this.limits&&l.push(t.B.max(this.limits.max)),this.settingsForm.get(this.setting).setValidators(l)}}},"k/xb":function(l,n,e){"use strict";e.d(n,"a",(function(){return i})),e.d(n,"b",(function(){return S})),e.d(n,"c",(function(){return u})),e.d(n,"d",(function(){return s})),e.d(n,"j",(function(){return a})),e.d(n,"k",(function(){return o})),e.d(n,"l",(function(){return r})),e.d(n,"m",(function(){return d})),e.d(n,"n",(function(){return c})),e.d(n,"o",(function(){return m})),e.d(n,"p",(function(){return p})),e.d(n,"q",(function(){return h})),e.d(n,"e",(function(){return g})),e.d(n,"f",(function(){return f})),e.d(n,"g",(function(){return v})),e.d(n,"h",(function(){return b})),e.d(n,"i",(function(){return C}));var t=e("sne2");e("Vhfg"),e("gr3l"),e("e/kN"),e("roDX"),e("cxJu"),e("MyVl"),e("5GyT"),e("Z5tW"),e("WkyA"),e("chpi");class i{}const u={breadcrumbs:"Images"},s={breadcrumbs:"Namespaces"},a={breadcrumbs:"Trash"},o={breadcrumbs:"Overall Performance"},r={breadcrumbs:t.a.CREATE},d={breadcrumbs:t.a.EDIT},c={breadcrumbs:t.a.CLONE},m={breadcrumbs:t.a.COPY},p={breadcrumbs:t.a.COPY},h={breadcrumbs:"Mirroring"},g={breadcrumbs:"iSCSI"},f={breadcrumbs:"Overview"},v={breadcrumbs:"Targets"},b={breadcrumbs:t.a.CREATE},C={breadcrumbs:t.a.EDIT};class S{}},kccj:function(l,n,e){"use strict";e.d(n,"a",(function(){return t}));class t{}},l7Jr:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("mXUL"),u=e("+gVj"),s=e("eF8U"),a=e("jMP8"),o=e("EEJc"),r=e("ajRT"),d=e("s7LF"),c=e("SVse"),m=e("gp3X"),p=e("sb0X"),h=e("KVJa"),g=e("Z21x"),f=e("sne2"),v=e("a6qe"),b=e("LqlI"),C=e("my5R");e.d(n,"a",(function(){return w}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](1,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](4,0,null,0,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"cd-iscsi-setting",[],null,null,null,s.b,s.a)),t["ɵdid"](6,114688,null,0,a.a,[],{settingsForm:[0,"settingsForm"],formDir:[1,"formDir"],setting:[2,"setting"],limits:[3,"limits"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,6,0,e.settingsForm,t["ɵnov"](n.parent,7),n.context.$implicit.key,e.getTargetControlLimits(n.context.$implicit.key))}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).hasErrors,t["ɵnov"](n,1).hasSuccess)}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,23,"cd-modal",[],null,null,null,o.c,o.b)),t["ɵdid"](1,49152,null,0,r.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Advanced Settings"])),(l()(),t["ɵeld"](4,0,null,1,19,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,18,"form",[["name","settingsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,d.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,d.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,d.d,null,[d.l]),t["ɵdid"](9,16384,null,0,d.s,[[4,d.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["ɵand"](16777216,null,null,2,null,_)),t["ɵdid"](15,278528,null,0,c.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["ɵpid"](0,c.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["ɵeld"](17,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](18,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](19,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.save()&&t),t}),m.b,m.a)),t["ɵdid"](20,114688,null,0,p.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Confirm"])),(l()(),t["ɵeld"](22,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,h.b,h.a)),t["ɵdid"](23,49152,null,0,g.a,[c.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.settingsForm),l(n,10,0,e.settingsForm),l(n,15,0,t["ɵunv"](n,15,0,t["ɵnov"](n,16).transform(e.settingsForm.controls))),l(n,20,0,e.settingsForm),l(n,23,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending)}))}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-iqn-settings-modal",[],null,null,null,R,S)),t["ɵdid"](1,114688,null,0,v.a,[b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var w=t["ɵccf"]("cd-iscsi-target-iqn-settings-modal",v.a,y,{},{},[])},lArG:function(l,n,e){"use strict";e.d(n,"a",(function(){return t}));class t{}},"lz+O":function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("+gVj"),s=e("SVse"),a=e("EEJc"),o=e("ajRT"),r=e("mXUL"),d=e("gp3X"),c=e("sb0X"),m=e("KVJa"),p=e("Z21x"),h=e("sne2"),g=e("WxU5"),f=e("aexS"),v=e("F83c"),b=e("LqlI"),C=e("2EZI"),S=e("Ekvf"),_=e("kn/O");e.d(n,"a",(function(){return N}));var R=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","poolName"],["placeholder","Pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,1)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,1)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,1)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"poolName"),l(n,6,0,"poolName")}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","poolName"],["id","poolName"],["name","poolName"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,1).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,1).onTouched()&&i),i}),null,null)),t["ɵdid"](1,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](3,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](6,16384,null,0,u.h,[[3,i.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](7,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),t["ɵdid"](8,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](9,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](-1,null,["All"])),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](12,278528,null,0,s.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,3,0,"poolName"),l(n,6,0,"poolName"),l(n,8,0,""),l(n,9,0,""),l(n,12,0,e.pools)}),(function(l,n){l(n,0,0,t["ɵnov"](n,5).ngClassUntouched,t["ɵnov"](n,5).ngClassTouched,t["ɵnov"](n,5).ngClassPristine,t["ɵnov"](n,5).ngClassDirty,t["ɵnov"](n,5).ngClassValid,t["ɵnov"](n,5).ngClassInvalid,t["ɵnov"](n,5).ngClassPending,t["ɵnov"](n,6).validClass,t["ɵnov"](n,6).invalidClass)}))}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,41,"cd-modal",[],null,null,null,a.c,a.b)),t["ɵdid"](1,49152,null,0,o.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Purge Trash"])),(l()(),t["ɵeld"](4,0,null,1,37,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,36,"form",[["class","form"],["name","purgeForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,23,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,12,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To purge, select one or"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["All"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](19,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["pools and click"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](22,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Purge Trash"])),(l()(),t["ɵted"](-1,null,[".  "])),(l()(),t["ɵeld"](25,0,null,null,9,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,r.b,r.a)),t["ɵdid"](26,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](29,0,null,0,1,"label",[["class","col-form-label mx-auto"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Pool:"])),(l()(),t["ɵand"](16777216,null,0,1,null,y)),t["ɵdid"](32,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,k)),t["ɵdid"](34,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](35,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](36,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](37,0,null,null,2,"cd-submit-button",[["id","purgeFormButton"]],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.purge()&&t),t}),d.b,d.a)),t["ɵdid"](38,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Purge Trash"])),(l()(),t["ɵeld"](40,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["ɵdid"](41,49152,null,0,p.a,[s.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.purgeForm),l(n,10,0,e.purgeForm),l(n,26,0),l(n,32,0,!e.poolPermission.read),l(n,34,0,e.poolPermission.read),l(n,38,0,e.purgeForm),l(n,41,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,25,0,t["ɵnov"](n,26).hasErrors,t["ɵnov"](n,26).hasSuccess)}))}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-rbd-trash-purge-modal",[],null,null,null,I,R)),t["ɵdid"](1,114688,null,0,g.a,[f.a,v.a,b.a,C.a,S.a,_.a],null,null)],(function(l,n){l(n,1,0)}),null)}var N=t["ɵccf"]("cd-rbd-trash-purge-modal",g.a,E,{},{},[])},my5R:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("mrSG"),i=e("IheW"),u=e("xTzq"),s=e("8Y7J"),a=e("pL04");let o=(()=>{let l=class{constructor(l){this.http=l}listTargets(){return this.http.get("api/iscsi/target")}getTarget(l){return this.http.get(`api/iscsi/target/${l}`)}updateTarget(l,n){return this.http.put(`api/iscsi/target/${l}`,n,{observe:"response"})}status(){return this.http.get("ui-api/iscsi/status")}settings(){return this.http.get("ui-api/iscsi/settings")}version(){return this.http.get("ui-api/iscsi/version")}portals(){return this.http.get("ui-api/iscsi/portals")}createTarget(l){return this.http.post("api/iscsi/target",l,{observe:"response"})}deleteTarget(l){return this.http.delete(`api/iscsi/target/${l}`,{observe:"response"})}getDiscovery(){return this.http.get("api/iscsi/discoveryauth")}updateDiscovery(l){return this.http.put("api/iscsi/discoveryauth",l)}overview(){return this.http.get("ui-api/iscsi/overview")}};return l.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new l(s["ɵɵinject"](i.c))},token:l,providedIn:a.a}),l=t.__decorate([u.a,t.__metadata("design:paramtypes",[i.c])],l),l})()},nP0W:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("s7LF"),u=e("EEJc"),s=e("ajRT"),a=e("+gVj"),o=e("mXUL"),r=e("SVse"),d=e("gp3X"),c=e("sb0X"),m=e("KVJa"),p=e("Z21x"),h=e("sne2"),g=e("aa9H"),f=e("LqlI"),v=e("GiVz"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return k}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,i.v,[t.ElementRef,t.Renderer2,[2,i.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,i.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.id),l(n,2,0,n.context.$implicit.id)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Peer clusters must be removed prior to disabling mirror."]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,45,"cd-modal",[],null,null,null,u.c,u.b)),t["ɵdid"](1,49152,null,0,s.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Edit pool mirror mode"])),(l()(),t["ɵeld"](4,0,null,1,41,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,40,"form",[["class","form"],["name","editModeForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,i.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,i.d,null,[i.l]),t["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,27,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,8,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["To edit the mirror mode for pool  "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](16,null,["",""])),(l()(),t["ɵted"](-1,null,[", select a new mode from the list and click  "])),(l()(),t["ɵeld"](18,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Update"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](21,0,null,null,17,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](22,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](25,0,null,0,2,"label",[["class","col-form-label"],["for","mirrorMode"]],null,null,null,null,null)),(l()(),t["ɵeld"](26,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Mode"])),(l()(),t["ɵeld"](28,0,null,0,8,"select",[["class","form-control custom-select"],["formControlName","mirrorMode"],["id","mirrorMode"],["name","mirrorMode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,29).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,29).onTouched()&&i),i}),null,null)),t["ɵdid"](29,16384,null,0,i.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),t["ɵdid"](31,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,i.q,null,[i.j]),t["ɵdid"](33,16384,null,0,i.r,[[4,i.q]],null,null),t["ɵdid"](34,16384,null,0,a.h,[[3,i.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,_)),t["ɵdid"](36,278528,null,0,r.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,0,1,null,R)),t["ɵdid"](38,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](39,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](40,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](41,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t}),d.b,d.a)),t["ɵdid"](42,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Update"])),(l()(),t["ɵeld"](44,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["ɵdid"](45,49152,null,0,p.a,[r.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.editModeForm),l(n,10,0,e.editModeForm),l(n,22,0),l(n,31,0,"mirrorMode"),l(n,34,0,"mirrorMode"),l(n,36,0,e.mirrorModes),l(n,38,0,e.editModeForm.showError("mirrorMode",t["ɵnov"](n,7),"cannotDisable")),l(n,42,0,e.editModeForm),l(n,45,0,"Cancel",e.modalRef.hide)}),(function(l,n){var e=n.component;l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,16,0,e.poolName),l(n,21,0,t["ɵnov"](n,22).hasErrors,t["ɵnov"](n,22).hasSuccess),l(n,28,0,t["ɵnov"](n,33).ngClassUntouched,t["ɵnov"](n,33).ngClassTouched,t["ɵnov"](n,33).ngClassPristine,t["ɵnov"](n,33).ngClassDirty,t["ɵnov"](n,33).ngClassValid,t["ɵnov"](n,33).ngClassInvalid,t["ɵnov"](n,33).ngClassPending,t["ɵnov"](n,34).validClass,t["ɵnov"](n,34).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-pool-edit-mode-modal",[],null,null,null,y,S)),t["ɵdid"](1,245760,null,0,g.a,[f.a,v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var k=t["ɵccf"]("cd-pool-edit-mode-modal",g.a,w,{},{},[])},nhAp:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("mXUL"),u=e("+gVj"),s=e("s7LF"),a=e("SVse"),o=e("eF8U"),r=e("jMP8"),d=e("uYzU"),c=e("EEJc"),m=e("ajRT"),p=e("gp3X"),h=e("sb0X"),g=e("KVJa"),f=e("Z21x"),v=e("sne2"),b=e("Z4cD"),C=e("LqlI"),S=e("my5R");e.d(n,"a",(function(){return T}));var _=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["This field is required."]))],null,null)}function y(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,33,"span",[],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Identifier"])),(l()(),t["ɵeld"](3,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](4,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](7,0,null,0,12,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](8,0,null,null,1,"label",[["class","col-form-label required"],["for","lun"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["lun"])),(l()(),t["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","lun"],["id","lun"],["name","lun"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,11)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,11).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,11)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,11)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==t["ɵnov"](l,12).onChange(e.target.value)&&i),"input"===n&&(i=!1!==t["ɵnov"](l,12).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,12).onTouched()&&i),i}),null,null)),t["ɵdid"](11,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵdid"](12,16384,null,0,s.w,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,s.p,(function(l,n){return[l,n]}),[s.e,s.w]),t["ɵdid"](14,671744,[[1,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](16,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](17,16384,null,0,u.h,[[3,s.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,R)),t["ɵdid"](19,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](20,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](21,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,3,{FormControlNames:1}),t["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),t["ɵeld"](24,0,null,0,9,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](25,0,null,null,1,"label",[["class","col-form-label"],["for","wwn"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["wwn"])),(l()(),t["ɵeld"](27,0,null,null,6,"input",[["class","form-control"],["formControlName","wwn"],["id","wwn"],["name","wwn"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,28)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,28).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,28)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,28)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](28,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.e]),t["ɵdid"](30,671744,[[3,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](32,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](33,16384,null,0,u.h,[[3,s.d],u.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){var e=n.component;l(n,4,0),l(n,14,0,"lun"),l(n,17,0,"lun"),l(n,19,0,e.settingsForm.showError("lun",t["ɵnov"](n.parent,12),"required")),l(n,21,0),l(n,30,0,"wwn"),l(n,33,0,"wwn")}),(function(l,n){l(n,3,0,t["ɵnov"](n,4).hasErrors,t["ɵnov"](n,4).hasSuccess),l(n,10,0,t["ɵnov"](n,16).ngClassUntouched,t["ɵnov"](n,16).ngClassTouched,t["ɵnov"](n,16).ngClassPristine,t["ɵnov"](n,16).ngClassDirty,t["ɵnov"](n,16).ngClassValid,t["ɵnov"](n,16).ngClassInvalid,t["ɵnov"](n,16).ngClassPending,t["ɵnov"](n,17).validClass,t["ɵnov"](n,17).invalidClass),l(n,20,0,t["ɵnov"](n,21).hasErrors,t["ɵnov"](n,21).hasSuccess),l(n,27,0,t["ɵnov"](n,32).ngClassUntouched,t["ɵnov"](n,32).ngClassTouched,t["ɵnov"](n,32).ngClassPristine,t["ɵnov"](n,32).ngClassDirty,t["ɵnov"](n,32).ngClassValid,t["ɵnov"](n,32).ngClassInvalid,t["ɵnov"](n,32).ngClassPending,t["ɵnov"](n,33).validClass,t["ɵnov"](n,33).invalidClass)}))}function w(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"option",[],null,null,null,null,null)),t["ɵdid"](1,147456,null,0,s.v,[t.ElementRef,t.Renderer2,[2,s.A]],{value:[0,"value"]},null),t["ɵdid"](2,147456,null,0,s.F,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["ɵted"](3,null,["",""])),t["ɵppd"](4,1)],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){var e=t["ɵunv"](n,3,0,l(n,4,0,t["ɵnov"](n.parent,0),n.context.$implicit));l(n,3,0,e)}))}function k(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,6,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](1,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,7,{FormControlNames:1}),t["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),t["ɵeld"](4,0,null,0,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"cd-iscsi-setting",[],null,null,null,o.b,o.a)),t["ɵdid"](6,114688,null,0,r.a,[],{settingsForm:[0,"settingsForm"],formDir:[1,"formDir"],setting:[2,"setting"],limits:[3,"limits"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,6,0,e.settingsForm,t["ɵnov"](n.parent.parent.parent,12),n.context.$implicit.key,e.getDiskControlLimits(n.parent.parent.context.$implicit,n.context.$implicit.key))}),(function(l,n){l(n,0,0,t["ɵnov"](n,1).hasErrors,t["ɵnov"](n,1).hasSuccess)}))}function I(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,2,null,k)),t["ɵdid"](2,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["ɵpid"](0,a.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){var e=n.component;l(n,2,0,t["ɵunv"](n,2,0,t["ɵnov"](n,3).transform(e.disk_default_controls[n.parent.context.$implicit])))}),null)}function E(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),t["ɵand"](16777216,null,null,1,null,I)),t["ɵdid"](2,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,2,0,n.component.settingsForm.value.backstore===n.context.$implicit)}),null)}function N(l){return t["ɵvid"](0,[t["ɵpid"](0,d.a,[]),(l()(),t["ɵeld"](1,0,null,null,46,"cd-modal",[],null,null,null,c.c,c.b)),t["ɵdid"](2,49152,null,0,m.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](3,0,null,0,5,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Configure"])),(l()(),t["ɵted"](-1,null,["  "])),(l()(),t["ɵeld"](7,0,null,null,1,"small",[],null,null,null,null,null)),(l()(),t["ɵted"](8,null,["",""])),(l()(),t["ɵeld"](9,0,null,1,38,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](10,0,null,null,37,"form",[["class","form"],["name","settingsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,12).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,12).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,15).onSubmit()&&i),i}),null,null)),t["ɵdid"](11,16384,null,0,s.G,[],null,null),t["ɵdid"](12,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](14,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](15,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](16,0,null,null,24,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](17,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["ɵand"](16777216,null,null,1,null,y)),t["ɵdid"](20,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵeld"](21,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Settings"])),(l()(),t["ɵeld"](23,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,i.b,i.a)),t["ɵdid"](24,1163264,null,2,u.c,[t.ElementRef,u.g],null,null),t["ɵqud"](603979776,5,{FormControlNames:1}),t["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),t["ɵeld"](27,0,null,0,11,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["ɵeld"](28,0,null,null,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Backstore"])),(l()(),t["ɵeld"](30,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","backstore"],["id","backstore"],["name","backstore"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==t["ɵnov"](l,31).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,31).onTouched()&&i),i}),null,null)),t["ɵdid"](31,16384,null,0,s.A,[t.Renderer2,t.ElementRef],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.A]),t["ɵdid"](33,671744,[[5,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](35,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](36,16384,null,0,u.h,[[3,s.d],u.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,w)),t["ɵdid"](38,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,E)),t["ɵdid"](40,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["ɵeld"](41,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](42,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](43,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.save()&&t),t}),p.b,p.a)),t["ɵdid"](44,114688,null,0,h.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Confirm"])),(l()(),t["ɵeld"](46,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,g.b,g.a)),t["ɵdid"](47,49152,null,0,f.a,[a.Location,v.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,2,0,e.modalRef),l(n,12,0,e.settingsForm),l(n,15,0,e.settingsForm),l(n,20,0,e.api_version>=1),l(n,24,0),l(n,33,0,"backstore"),l(n,36,0,"backstore"),l(n,38,0,e.backstores),l(n,40,0,e.backstores),l(n,44,0,e.settingsForm),l(n,47,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,8,0,n.component.image),l(n,10,0,t["ɵnov"](n,14).ngClassUntouched,t["ɵnov"](n,14).ngClassTouched,t["ɵnov"](n,14).ngClassPristine,t["ɵnov"](n,14).ngClassDirty,t["ɵnov"](n,14).ngClassValid,t["ɵnov"](n,14).ngClassInvalid,t["ɵnov"](n,14).ngClassPending),l(n,23,0,t["ɵnov"](n,24).hasErrors,t["ɵnov"](n,24).hasSuccess),l(n,30,0,t["ɵnov"](n,35).ngClassUntouched,t["ɵnov"](n,35).ngClassTouched,t["ɵnov"](n,35).ngClassPristine,t["ɵnov"](n,35).ngClassDirty,t["ɵnov"](n,35).ngClassValid,t["ɵnov"](n,35).ngClassInvalid,t["ɵnov"](n,35).ngClassPending,t["ɵnov"](n,36).validClass,t["ɵnov"](n,36).invalidClass)}))}function F(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-image-settings-modal",[],null,null,null,N,_)),t["ɵdid"](1,114688,null,0,b.a,[C.a,S.a],null,null)],(function(l,n){l(n,1,0)}),null)}var T=t["ɵccf"]("cd-iscsi-target-image-settings-modal",b.a,F,{},{},[])},o8EM:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("PhyI"),i=e("8Y7J"),u=e("GiVz");let s=(()=>{class l{constructor(l){this.i18n=l,this.sections=[{heading:this.i18n("Quality of Service"),class:"quality-of-service",options:[{name:"rbd_qos_bps_limit",displayName:this.i18n("BPS Limit"),description:this.i18n("The desired limit of IO bytes per second."),type:t.b.bps},{name:"rbd_qos_iops_limit",displayName:this.i18n("IOPS Limit"),description:this.i18n("The desired limit of IO operations per second."),type:t.b.iops},{name:"rbd_qos_read_bps_limit",displayName:this.i18n("Read BPS Limit"),description:this.i18n("The desired limit of read bytes per second."),type:t.b.bps},{name:"rbd_qos_read_iops_limit",displayName:this.i18n("Read IOPS Limit"),description:this.i18n("The desired limit of read operations per second."),type:t.b.iops},{name:"rbd_qos_write_bps_limit",displayName:this.i18n("Write BPS Limit"),description:this.i18n("The desired limit of write bytes per second."),type:t.b.bps},{name:"rbd_qos_write_iops_limit",displayName:this.i18n("Write IOPS Limit"),description:this.i18n("The desired limit of write operations per second."),type:t.b.iops},{name:"rbd_qos_bps_burst",displayName:this.i18n("BPS Burst"),description:this.i18n("The desired burst limit of IO bytes."),type:t.b.bps},{name:"rbd_qos_iops_burst",displayName:this.i18n("IOPS Burst"),description:this.i18n("The desired burst limit of IO operations."),type:t.b.iops},{name:"rbd_qos_read_bps_burst",displayName:this.i18n("Read BPS Burst"),description:this.i18n("The desired burst limit of read bytes."),type:t.b.bps},{name:"rbd_qos_read_iops_burst",displayName:this.i18n("Read IOPS Burst"),description:this.i18n("The desired burst limit of read operations."),type:t.b.iops},{name:"rbd_qos_write_bps_burst",displayName:this.i18n("Write BPS Burst"),description:this.i18n("The desired burst limit of write bytes."),type:t.b.bps},{name:"rbd_qos_write_iops_burst",displayName:this.i18n("Write IOPS Burst"),description:this.i18n("The desired burst limit of write operations."),type:t.b.iops}]}]}static getOptionsFromSections(l){return l.map(l=>l.options).reduce((l,n)=>l.concat(n))}filterConfigOptionsByName(n){return l.getOptionsFromSections(this.sections).filter(l=>l.name===n)}getOptionValueByName(l,n,e=""){const t=this.filterConfigOptionsByName(l);return 1===t.length?t.pop()[n]:e}getWritableSections(){return this.sections.map(l=>(l.options=l.options.filter(l=>!l.readOnly),l))}getOptionFields(){return l.getOptionsFromSections(this.sections)}getWritableOptionFields(){return l.getOptionsFromSections(this.getWritableSections())}getOptionByName(l){return this.filterConfigOptionsByName(l).pop()}getDisplayName(l){return this.getOptionValueByName(l,"displayName")}getDescription(l){return this.getOptionValueByName(l,"description")}}return l.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new l(i["ɵɵinject"](u.a))},token:l,providedIn:"root"}),l})()},puGn:function(l,n,e){"use strict";e.d(n,"a",(function(){return s}));var t=e("s7LF"),i=(e("XED3"),e("QFaf")),u=e("kvvV");e("kn/O");class s{constructor(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.createForm()}createForm(){this.editSiteNameForm=new i.a({siteName:new t.i("",{})})}ngOnInit(){this.editSiteNameForm.get("siteName").setValue(this.siteName),this.rbdMirroringService.getSiteName().subscribe(l=>{this.editSiteNameForm.get("siteName").setValue(l.site_name)})}update(){this.taskWrapper.wrapTaskAroundCall({task:new u.a("rbd/mirroring/site_name/edit",{}),call:this.rbdMirroringService.setSiteName(this.editSiteNameForm.getValue("siteName"))}).subscribe(void 0,()=>this.editSiteNameForm.setErrors({cdSubmitButton:!0}),()=>{this.rbdMirroringService.refresh(),this.modalRef.hide()})}}},rFfW:function(l,n,e){"use strict";e.d(n,"a",(function(){return o}));var t=e("8Y7J"),i=e("s7LF"),u=e("oxzT"),s=e("QFaf"),a=e("PhyI");e("aXbf"),e("o8EM");class o{constructor(l,n){this.formatterService=l,this.rbdConfigurationService=n,this.changes=new t.EventEmitter,this.icons=u.a,this.ngDataReady=new t.EventEmitter,this.configurationType=a.b,this.sectionVisibility={}}ngOnInit(){const l=this.createConfigurationFormGroup();this.form.addControl("configuration",l),l.valueChanges.subscribe(()=>{this.changes.emit(this.getDirtyValues.bind(this))}),this.initializeData&&this.initializeData.subscribe(l=>{this.initialData=l.initialData;const n=l.sourceType;this.rbdConfigurationService.getWritableOptionFields().forEach(e=>{const t=l.initialData.filter(l=>l.name===e.name).pop();t&&t.source===n&&this.form.get(`configuration.${e.name}`).setValue(t.value)}),this.ngDataReady.emit()}),this.rbdConfigurationService.getWritableSections().forEach(l=>this.sectionVisibility[l.class]=!1)}getDirtyValues(l=!1,n){if(l&&!n)throw new Error("ProgrammingError: If local values shall be included, a proper localFieldType argument has to be provided, too");const e={};return this.rbdConfigurationService.getWritableOptionFields().forEach(t=>{const i=this.form.get("configuration").get(t.name);this.initialData&&this.initialData[t.name]===i.value||(i.dirty||l&&i.source===n)&&(e[t.name]=null===i.value?i.value:t.type===a.b.bps?this.formatterService.toBytes(i.value):t.type===a.b.milliseconds?this.formatterService.toMilliseconds(i.value):t.type===a.b.iops?this.formatterService.toIops(i.value):i.value)}),e}createConfigurationFormGroup(){const l=new s.a({});return this.rbdConfigurationService.getWritableOptionFields().forEach(n=>{let e;if(n.type!==a.b.milliseconds&&n.type!==a.b.iops&&n.type!==a.b.bps)throw new Error(`Type ${n.type} is unknown, you may need to add it to RbdConfiguration class`);e=new i.i(0,i.B.min(0)),l.addControl(n.name,e)}),l}reset(l){const n=this.form.get("configuration").get(l);n.disabled?(n.setValue(n.previousValue||0),n.enable(),n.previousValue||n.markAsPristine()):(n.previousValue=n.value,n.setValue(null),n.markAsDirty(),n.disable())}isDisabled(l){return this.form.get("configuration").get(l).disabled}toggleSectionVisibility(l){this.sectionVisibility[l]=!this.sectionVisibility[l]}}},roDX:function(l,n,e){"use strict";e.d(n,"a",(function(){return i})),e("my5R");var t=e("x38r");e("o4+5"),e("uYzU");class i{constructor(l,n,e,t){this.iscsiService=l,this.dimlessPipe=n,this.iscsiBackstorePipe=e,this.i18n=t,this.gateways=[],this.images=[]}ngOnInit(){this.gatewaysColumns=[{name:this.i18n("Name"),prop:"name"},{name:this.i18n("State"),prop:"state",flexGrow:1,cellTransformation:t.a.badge,customTemplateConfig:{map:{up:{class:"badge-success"},down:{class:"badge-danger"}}}},{name:this.i18n("# Targets"),prop:"num_targets"},{name:this.i18n("# Sessions"),prop:"num_sessions"}],this.imagesColumns=[{name:this.i18n("Pool"),prop:"pool"},{name:this.i18n("Image"),prop:"image"},{name:this.i18n("Backstore"),prop:"backstore",pipe:this.iscsiBackstorePipe},{name:this.i18n("Read Bytes"),prop:"stats_history.rd_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Write Bytes"),prop:"stats_history.wr_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Read Ops"),prop:"stats.rd",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("Write Ops"),prop:"stats.wr",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("A/O Since"),prop:"optimized_since",cellTemplate:this.iscsiRelativeDateTpl}]}refresh(){this.iscsiService.overview().subscribe(l=>{this.gateways=l.gateways,this.images=l.images,this.images.map(l=>(l.stats_history&&(l.stats_history.rd_bytes=l.stats_history.rd_bytes.map(l=>l[1]),l.stats_history.wr_bytes=l.stats_history.wr_bytes.map(l=>l[1])),l.cdIsBinary=!0,l))})}}},u2XS:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("SVse"),u=e("25BL"),s=e("uIqm"),a=e("LOMR"),o=e("MP8s"),r=e("fxL3"),d=e("gk6K"),c=e("3ris"),m=e("GiVz"),p=e("uYzU"),h=e("iExv");e.d(n,"b",(function(){return g})),e.d(n,"c",(function(){return _})),e.d(n,"a",(function(){return y}));var g=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function f(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](2,null,["",""])),(l()(),t["ɵted"](-1,null,["   "])),(l()(),t["ɵeld"](4,0,null,null,6,"span",[["class","badge"]],null,null,null,null,null)),t["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2]),t["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["ɵpad"](7,1),t["ɵpad"](8,1),t["ɵpod"](9,{"badge-success":0,"badge-danger":1}),(l()(),t["ɵted"](10,null,[" "," "]))],(function(l,n){var e=l(n,9,0,l(n,7,0,"logged_in").includes(n.context.$implicit.data.status),l(n,8,0,"logged_out").includes(n.context.$implicit.data.status));l(n,6,0,"badge",e)}),(function(l,n){l(n,0,0,n.context.$implicit.data.cdIcon),l(n,2,0,n.context.$implicit.data.name),l(n,10,0,n.context.$implicit.data.status)}))}function v(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,4,"div",[["class","col-6 metadata"]],null,null,null,null,null)),(l()(),t["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](2,null,["",""])),(l()(),t["ɵeld"](3,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,u.b,u.a)),t["ɵdid"](4,2867200,[[2,4],["detailTable",4]],0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],limit:[3,"limit"]},null)],(function(l,n){var e=n.component;l(n,4,0,e.data,e.columns,"flex",0)}),(function(l,n){l(n,2,0,n.component.title)}))}function b(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function C(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function S(l){return t["ɵvid"](0,[(l()(),t["ɵand"](16777216,null,null,1,null,b)),t["ɵdid"](1,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](16777216,null,null,1,null,C)),t["ɵdid"](3,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,void 0===n.context.row.default||n.context.row.default===n.context.row.current),l(n,3,0,void 0!==n.context.row.default&&n.context.row.default!==n.context.row.current)}),null)}function _(l){return t["ɵvid"](0,[t["ɵqud"](402653184,1,{highlightTpl:0}),t["ɵqud"](671088640,2,{content:0}),t["ɵqud"](671088640,3,{tree:0}),(l()(),t["ɵeld"](3,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["ɵeld"](4,0,null,null,10,"div",[["class","col-6"]],null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["iSCSI Topology"])),(l()(),t["ɵeld"](7,0,null,null,7,"tree-root",[],null,[[null,"updateData"],["body","keydown"],["body","mousedown"]],(function(l,n,e){var i=!0,u=l.component;return"body:keydown"===n&&(i=!1!==t["ɵnov"](l,9).onKeydown(e)&&i),"body:mousedown"===n&&(i=!1!==t["ɵnov"](l,9).onMousedown(e)&&i),"updateData"===n&&(i=!1!==u.onUpdateData()&&i),i}),a.b,a.a)),t["ɵprd"](131584,null,o.a,o.a,[]),t["ɵdid"](9,573440,[[3,4],["tree",4]],4,r.a,[o.a,d.a],{nodes:[0,"nodes"],options:[1,"options"]},{updateData:"updateData"}),t["ɵqud"](603979776,4,{loadingTemplate:0}),t["ɵqud"](603979776,5,{treeNodeTemplate:0}),t["ɵqud"](603979776,6,{treeNodeWrapperTemplate:0}),t["ɵqud"](603979776,7,{treeNodeFullTemplate:0}),(l()(),t["ɵand"](0,[[5,2],["treeNodeTemplate",2]],null,0,null,f)),(l()(),t["ɵand"](16777216,null,null,1,null,v)),t["ɵdid"](16,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["ɵand"](0,[[1,2],["highlightTpl",2]],null,0,null,S))],(function(l,n){var e=n.component;l(n,9,0,e.nodes,e.treeOptions),l(n,16,0,e.data)}),null)}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-iscsi-target-details",[],null,null,null,_,g)),t["ɵdid"](1,638976,null,0,c.a,[m.a,p.a,h.a],null,null)],(function(l,n){l(n,1,0)}),null)}var y=t["ɵccf"]("cd-iscsi-target-details",c.a,R,{selection:"selection",settings:"settings",cephIscsiConfigVersion:"cephIscsiConfigVersion"},{},[])},xvu0:function(l,n,e){"use strict";var t=e("8Y7J"),i=e("EEJc"),u=e("ajRT"),s=e("s7LF"),a=e("+gVj"),o=e("mXUL"),r=e("IZUe"),d=e("gp3X"),c=e("sb0X"),m=e("KVJa"),p=e("Z21x"),h=e("SVse"),g=e("sne2"),f=e("puGn"),v=e("LqlI"),b=e("XED3"),C=e("kn/O");e.d(n,"a",(function(){return y}));var S=t["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,38,"cd-modal",[],null,null,null,i.c,i.b)),t["ɵdid"](1,49152,null,0,u.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Edit site name"])),(l()(),t["ɵeld"](4,0,null,1,34,null,null,null,null,null,null,null)),(l()(),t["ɵeld"](5,0,null,null,33,"form",[["class","form"],["name","editSiteNameForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==t["ɵnov"](l,7).onSubmit(e)&&i),"reset"===n&&(i=!1!==t["ɵnov"](l,7).onReset()&&i),"submit"===n&&(i=!1!==t["ɵnov"](l,10).onSubmit()&&i),i}),null,null)),t["ɵdid"](6,16384,null,0,s.G,[],null,null),t["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["ɵprd"](2048,null,s.d,null,[s.l]),t["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),t["ɵdid"](10,16384,null,0,a.d,[],{formGroup:[0,"formGroup"]},null),(l()(),t["ɵeld"](11,0,null,null,20,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["ɵeld"](12,0,null,null,5,"p",[],null,null,null,null,null)),(l()(),t["ɵeld"](13,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Edit the site name and click  "])),(l()(),t["ɵeld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Update"])),(l()(),t["ɵted"](-1,null,["."])),(l()(),t["ɵeld"](18,0,null,null,13,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,o.b,o.a)),t["ɵdid"](19,1163264,null,2,a.c,[t.ElementRef,a.g],null,null),t["ɵqud"](603979776,1,{FormControlNames:1}),t["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),t["ɵeld"](22,0,null,0,1,"label",[["class","col-form-label required"],["for","siteName"]],null,null,null,null,null)),(l()(),t["ɵted"](-1,null,["Site Name"])),(l()(),t["ɵeld"](24,0,null,0,7,"input",[["autofocus",""],["class","form-control"],["formControlName","siteName"],["id","siteName"],["name","siteName"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==t["ɵnov"](l,26)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==t["ɵnov"](l,26).onTouched()&&i),"compositionstart"===n&&(i=!1!==t["ɵnov"](l,26)._compositionStart()&&i),"compositionend"===n&&(i=!1!==t["ɵnov"](l,26)._compositionEnd(e.target.value)&&i),i}),null,null)),t["ɵdid"](25,4210688,null,0,r.a,[t.ElementRef],{autofocus:[0,"autofocus"]},null),t["ɵdid"](26,16384,null,0,s.e,[t.Renderer2,t.ElementRef,[2,s.b]],null,null),t["ɵprd"](1024,null,s.p,(function(l){return[l]}),[s.e]),t["ɵdid"](28,671744,[[1,4]],0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.E]],{name:[0,"name"]},null),t["ɵprd"](2048,null,s.q,null,[s.j]),t["ɵdid"](30,16384,null,0,s.r,[[4,s.q]],null,null),t["ɵdid"](31,16384,null,0,a.h,[[3,s.d],a.a],{formControlName:[0,"formControlName"]},null),(l()(),t["ɵeld"](32,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["ɵeld"](33,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["ɵeld"](34,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t}),d.b,d.a)),t["ɵdid"](35,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["ɵted"](-1,0,["Update"])),(l()(),t["ɵeld"](37,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["ɵdid"](38,49152,null,0,p.a,[h.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],(function(l,n){var e=n.component;l(n,1,0,e.modalRef),l(n,7,0,e.editSiteNameForm),l(n,10,0,e.editSiteNameForm),l(n,19,0),l(n,25,0,""),l(n,28,0,"siteName"),l(n,31,0,"siteName"),l(n,35,0,e.editSiteNameForm),l(n,38,0,"Cancel",e.modalRef.hide)}),(function(l,n){l(n,5,0,t["ɵnov"](n,9).ngClassUntouched,t["ɵnov"](n,9).ngClassTouched,t["ɵnov"](n,9).ngClassPristine,t["ɵnov"](n,9).ngClassDirty,t["ɵnov"](n,9).ngClassValid,t["ɵnov"](n,9).ngClassInvalid,t["ɵnov"](n,9).ngClassPending),l(n,18,0,t["ɵnov"](n,19).hasErrors,t["ɵnov"](n,19).hasSuccess),l(n,24,0,t["ɵnov"](n,30).ngClassUntouched,t["ɵnov"](n,30).ngClassTouched,t["ɵnov"](n,30).ngClassPristine,t["ɵnov"](n,30).ngClassDirty,t["ɵnov"](n,30).ngClassValid,t["ɵnov"](n,30).ngClassInvalid,t["ɵnov"](n,30).ngClassPending,t["ɵnov"](n,31).validClass,t["ɵnov"](n,31).invalidClass)}))}function R(l){return t["ɵvid"](0,[(l()(),t["ɵeld"](0,0,null,null,1,"cd-edit-site-mode-modal",[],null,null,null,_,S)),t["ɵdid"](1,114688,null,0,f.a,[v.a,b.a,C.a],null,null)],(function(l,n){l(n,1,0)}),null)}var y=t["ɵccf"]("cd-edit-site-mode-modal",f.a,R,{},{},[])}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/5.d6b08e1c042ba6fccdd6.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/5.d6b08e1c042ba6fccdd6.js
new file mode 100644 (file)
index 0000000..aaced57
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{J6Oi:function(l,n,u){"use strict";u.r(n);var e=u("8Y7J"),a=u("k/xb"),t=u("MdoF"),o=u("ES0t"),d=u("Xg1U"),i=u("z5nN"),s=u("iutN"),r=u("pMnS"),c=u("EEJc"),p=u("PEr+"),m=u("a40w"),g=u("hfeG"),f=u("QUzE"),v=u("E7j4"),C=u("xvu0"),b=u("RIVN"),h=u("nP0W"),I=u("VBM6"),R=u("atuK"),N=u("JIi+"),w=u("0BYw"),E=u("3IYD"),T=u("I4Qz"),y=u("0rTx"),V=u("lz+O"),x=u("u2XS"),q=u("nhAp"),k=u("l7Jr"),_=u("bUo2"),D=u("SVse"),F=u("yT6U"),P=u("4DD9"),S=u("iExv"),A=u("GiVz"),O=u("85J/"),j=u("+0ag"),U=u("aXbf"),B=u("Fgil"),$=u("IzCI"),M=u("o4+5"),L=u("Dwqy"),z=u("uYzU"),G=u("FFMq"),K=u("E2fk"),Z=u("a0VL"),J=u("nSDx"),W=u("SB+Q"),Q=u("TYzs"),Y=u("BQkM"),X=u("dEH0"),H=u("G1/K"),ll=u("8xTl"),nl=u("TJUb"),ul=u("efK2"),el=u("s7LF"),al=u("CNMR"),tl=u("KOzp"),ol=u("2uy1"),dl=u("z/SZ"),il=u("38Bd"),sl=u("978R"),rl=u("LqlI"),cl=u("w9WL"),pl=u("FE24"),ml=u("aexS"),gl=u("Avrn"),fl=u("iInd"),vl=u("2ZVE"),Cl=u("ienR"),bl=u("gk6K"),hl=u("9Xeq"),Il=u("hrfs"),Rl=u("yGOH"),Nl=u("+gVj"),wl=u("bxSN"),El=u("WF9J"),Tl=u("V/fk"),yl=u("ChqD"),Vl=u("pL04"),xl=u("PCNd"),ql=u("kccj"),kl=u("yYhs"),_l=u("C6Ij"),Dl=u("AWcq"),Fl=u("pKUh");class Pl{constructor(l,n){this.authStorageService=l,this.router=n,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnInit(){this.url=this.router.url}navigateTo(l){this.router.navigate([l])}}var Sl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Al(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd/performance")&&e),e}),null,null)),e["ɵdid"](1,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"})],(function(l,n){l(n,1,0,"Overall Performance","/block/rbd/performance"===n.component.url)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function Ol(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Fl.b,Fl.a)),e["ɵdid"](1,180224,null,0,vl.e,[vl.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,1,"tab",[["heading","Images"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd")&&e),e}),null,null)),e["ɵdid"](3,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](4,0,null,0,1,"tab",[["heading","Namespaces"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd/namespaces")&&e),e}),null,null)),e["ɵdid"](5,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](6,0,null,0,1,"tab",[["heading","Trash"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd/trash")&&e),e}),null,null)),e["ɵdid"](7,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵand"](16777216,null,0,1,null,Al)),e["ɵdid"](9,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Images","/block/rbd"===u.url),l(n,5,0,"Namespaces","/block/rbd/namespaces"===u.url),l(n,7,0,"Trash","/block/rbd/trash"===u.url),l(n,9,0,u.grafanaPermission.read)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,4,0,e["ɵnov"](n,5).id,e["ɵnov"](n,5).active,e["ɵnov"](n,5).addClass,e["ɵnov"](n,5).role,e["ɵnov"](n,5).ariaLabelledby),l(n,6,0,e["ɵnov"](n,7).id,e["ɵnov"](n,7).active,e["ɵnov"](n,7).addClass,e["ɵnov"](n,7).role,e["ɵnov"](n,7).ariaLabelledby)}))}var jl=u("25BL"),Ul=u("uIqm"),Bl=u("NUGo"),$l=u("S7zO"),Ml=u("JBea"),Ll=u("VTlA"),zl=u("ufoC"),Gl=u("mSOc"),Kl=u("EgGo"),Zl=u("5GyT"),Jl=u("F83c"),Wl=u("kn/O"),Ql=u("sne2"),Yl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Xl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,_l.b,_l.a)),e["ɵdid"](1,114688,null,0,Dl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],(function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)}),null)}function Hl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,0,"div",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(l,n){l(n,0,0,"Only available for RBD images with <strong>fast-diff</strong> enabled")}))}function ln(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["/",""]))],null,(function(l,n){l(n,1,0,n.parent.parent.context.value.pool_namespace)}))}function nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,ln)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵted"](4,null,["/","@",""]))],(function(l,n){l(n,3,0,n.parent.context.value.pool_namespace)}),(function(l,n){l(n,1,0,n.parent.context.value.pool_name),l(n,4,0,n.parent.context.value.image_name,n.parent.context.value.snap_name)}))}function un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function en(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,nn)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,un)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,n.context.value),l(n,3,0,!n.context.value)}),null)}function an(l){return e["ɵvid"](0,[(l()(),e["ɵted"](-1,null,[" You are about to flatten "])),(l()(),e["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](2,null,["",""])),(l()(),e["ɵted"](-1,null,[". "])),(l()(),e["ɵeld"](4,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" All blocks will be copied from parent "])),(l()(),e["ɵeld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](8,null,["",""])),(l()(),e["ɵted"](-1,null,[" to child "])),(l()(),e["ɵeld"](10,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](11,null,["",""])),(l()(),e["ɵted"](-1,null,[".\n"]))],null,(function(l,n){l(n,2,0,n.context.$implicit.child),l(n,8,0,n.context.$implicit.parent),l(n,11,0,n.context.$implicit.child)}))}function tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.context.$implicit)}))}function on(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The following snapshots are currently protected and will be removed:"])),(l()(),e["ɵeld"](3,0,null,null,2,"ul",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,tn)),e["ɵdid"](5,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,5,0,n.parent.parent.context.snapshots)}),null)}function dn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"div",[["class","alert alert-warning"],["role","alert"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Deleting this image will also delete all its snapshots."])),(l()(),e["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,on)),e["ɵdid"](5,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,5,0,n.parent.context.snapshots.length>0)}),null)}function sn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,dn)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,n.context.hasSnapshots)}),null)}function rn(l){return e["ɵvid"](0,[e["ɵqud"](402653184,1,{table:0}),e["ɵqud"](671088640,2,{usageTpl:0}),e["ɵqud"](402653184,3,{parentTpl:0}),e["ɵqud"](671088640,4,{nameTpl:0}),e["ɵqud"](402653184,5,{flattenTpl:0}),e["ɵqud"](402653184,6,{deleteTpl:0}),(l()(),e["ɵeld"](6,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](7,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,Xl)),e["ɵdid"](9,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](10,0,null,null,5,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","unique_id"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(l,n,u){var e=!0,a=l.component;return"setExpandedRow"===n&&(e=!1!==a.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==a.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](11,2867200,[[1,4],["table",4]],0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"],searchableObjects:[7,"searchableObjects"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](12,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](13,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](14,0,null,3,1,"cd-rbd-details",[["cdTableDetail",""]],null,null,null,N.c,N.b)),e["ɵdid"](15,49152,null,0,Ml.a,[],{selection:[0,"selection"]},null),(l()(),e["ɵand"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,Hl)),(l()(),e["ɵand"](0,[[3,2],["parentTpl",2]],null,0,null,en)),(l()(),e["ɵand"](0,[[5,2],["flattenTpl",2]],null,0,null,an)),(l()(),e["ɵand"](0,[[6,2],["deleteTpl",2]],null,0,null,sn))],(function(l,n){var u=n.component;l(n,7,0),l(n,9,0,u.viewCacheStatusList),l(n,11,0,u.images,u.columns,"flex",!0,"unique_id","true","single",!0),l(n,13,0,u.permission,u.selection,u.tableActions),l(n,15,0,u.expandedRow)}),null)}function cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"cd-rbd-list",[],null,null,null,rn,Yl)),e["ɵprd"](131584,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵprd"](256,null,Kl.a,Zl.b,[]),e["ɵdid"](3,114688,null,0,Zl.a,[ml.a,Jl.a,B.a,M.a,rl.b,Wl.a,Ll.a,A.a,Kl.a,Ql.b],null,null)],(function(l,n){l(n,3,0)}),null)}var pn=e["ɵccf"]("cd-rbd-list",Zl.a,cn,{},{},[]),mn=u("Z5tW"),gn=u("Ekvf"),fn=u("9nlD"),vn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](1,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵeld"](2,0,null,null,4,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],(function(l,n,u){var e=!0,a=l.component;return"fetchData"===n&&(e=!1!==a.refresh()&&e),"updateSelection"===n&&(e=!1!==a.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](3,2867200,null,0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["ɵeld"](4,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](6,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,3,0,u.namespaces,u.columns,"flex","id","true","single"),l(n,6,0,u.permission,u.selection,u.tableActions)}),null)}function bn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rbd-namespace-list",[],null,null,null,Cn,vn)),e["ɵprd"](135680,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵdid"](2,114688,null,0,mn.a,[ml.a,Jl.a,gn.a,rl.b,fn.a,A.a,Ql.b],null,null)],(function(l,n){l(n,2,0)}),null)}var hn=e["ɵccf"]("cd-rbd-namespace-list",mn.a,bn,{},{},[]),In=u("chpi"),Rn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,_l.b,_l.a)),e["ɵdid"](1,114688,null,0,Dl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],(function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)}),null)}function wn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"button",[["class","btn btn-light"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.purgeModal()&&e),e}),null,null)),(l()(),e["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](3,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](4,1),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Purge Trash"]))],(function(l,n){var u=l(n,4,0,n.component.icons.destroy);l(n,3,0,u)}),(function(l,n){l(n,0,0,n.component.disablePurgeBtn)}))}function En(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Expired at"]))],null,null)}function Tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Protected until"]))],null,null)}function yn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,En)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Tn)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵted"](4,null,[" ","\n"])),e["ɵppd"](5,1)],(function(l,n){l(n,1,0,n.context.row.cdIsExpired),l(n,3,0,!n.context.row.cdIsExpired)}),(function(l,n){var u=e["ɵunv"](n,4,0,l(n,5,0,e["ɵnov"](n.parent,0),n.context.value));l(n,4,0,u)}))}function Vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"p",[["class","text-danger"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,3,"strong",[],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["ɵted"](3,null,["This image is protected until ","."])),e["ɵppd"](4,1)],null,(function(l,n){var u=e["ɵunv"](n,3,0,l(n,4,0,e["ɵnov"](n.parent.parent,0),n.parent.context.$implicit));l(n,3,0,u)}))}function xn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Vn)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,!n.component.isExpired(n.context.$implicit))}),null)}function qn(l){return e["ɵvid"](0,[e["ɵpid"](0,Z.a,[D.DatePipe]),e["ɵqud"](402653184,1,{table:0}),e["ɵqud"](402653184,2,{expiresTpl:0}),e["ɵqud"](402653184,3,{deleteTpl:0}),(l()(),e["ɵeld"](4,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](5,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,Nn)),e["ɵdid"](7,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](8,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](9,2867200,[[1,4]],0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["ɵeld"](10,0,null,1,4,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](12,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,wn)),e["ɵdid"](14,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,[[2,2],["expiresTpl",2]],null,0,null,yn)),(l()(),e["ɵand"](0,[[3,2],["deleteTpl",2]],null,0,null,xn))],(function(l,n){var u=n.component;l(n,5,0),l(n,7,0,u.viewCacheStatusList),l(n,9,0,u.images,u.columns,"flex","id","true","single"),l(n,12,0,u.permission,u.selection,u.tableActions),l(n,14,0,u.permission.delete)}),null)}function kn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rbd-trash-list",[],null,null,null,qn,Rn)),e["ɵprd"](131584,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵdid"](2,114688,null,0,In.a,[ml.a,Jl.a,rl.b,Z.a,Ll.a,Wl.a,A.a,Ql.b],null,null)],(function(l,n){l(n,2,0)}),null)}var _n=e["ɵccf"]("cd-rbd-trash-list",In.a,kn,{},{},[]),Dn=u("a278"),Fn=u("insk"),Pn=u("cUpR"),Sn=u("20UP"),An=u("WkyA"),On=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function jn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](1,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","41FrpeUiz"]],null,null,null,Dn.b,Dn.a)),e["ɵdid"](3,638976,null,0,Fn.a,[Pn.b,Sn.a,A.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0),l(n,3,0,"rbd-overview?","two","41FrpeUiz")}),null)}function Un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-performance",[],null,null,null,jn,On)),e["ɵdid"](1,49152,null,0,An.a,[],null,null)],null,null)}var Bn=e["ɵccf"]("cd-rbd-performance",An.a,Un,{},{},[]),$n=u("mXUL"),Mn=u("4HWh"),Ln=u("p4Cf"),zn=u("IZUe"),Gn=u("EmSq"),Kn=u("BH9v"),Zn=u("rFfW"),Jn=u("o8EM"),Wn=u("gp3X"),Qn=u("sb0X"),Yn=u("KVJa"),Xn=u("Z21x"),Hn=u("MyVl"),lu=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,2,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," from"])),e["ɵppd"](6,1),(l()(),e["ɵeld"](7,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","parent"],["id","parent"],["name","parent"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,9).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,9)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](9,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](11,671744,[[1,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](13,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](14,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,0,"hr",[],null,null,null,null,null))],(function(l,n){l(n,1,0),l(n,11,0,"parent"),l(n,14,0,"parent")}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess);var a=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n.parent,0),u.action));l(n,5,0,a),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function uu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["'/' and '@' are not allowed."]))],null,null)}function au(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","pool"],["id","pool"],["name","pool"],["placeholder","Pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,1)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](3,671744,[[5,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"pool"),l(n,6,0,"pool")}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function ou(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- No rbd pools available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function du(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a pool --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function iu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)}),(function(l,n){l(n,3,0,n.context.$implicit.pool_name)}))}function su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](3,671744,[[5,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,tu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ou)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,du)),e["ɵdid"](12,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,iu)),e["ɵdid"](14,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"pool"),l(n,6,0,"pool"),l(n,8,0,null===u.pools),l(n,10,0,null!==u.pools&&0===u.pools.length),l(n,12,0,null!==u.pools&&u.pools.length>0),l(n,14,0,u.pools)}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function cu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,4,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,2)],(function(l,n){var u=n.component;l(n,1,0);var e=l(n,8,0,u.icons.spinner,u.icons.spin);l(n,7,0,e)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess)}))}function pu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","namespace"],["id","namespace"],["name","namespace"],["placeholder","Namespace..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,1)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](3,671744,[[9,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"namespace"),l(n,6,0,"namespace")}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function mu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function gu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- No namespaces available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function fu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a namespace --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function vu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Cu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","namespace"],["id","namespace"],["name","namespace"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](3,671744,[[9,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,mu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,gu)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,fu)),e["ɵdid"](12,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vu)),e["ɵdid"](14,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"namespace"),l(n,6,0,"namespace"),l(n,8,0,null===u.pools),l(n,10,0,null!==u.pools&&0===u.pools.length),l(n,12,0,null!==u.pools&&u.pools.length>0),l(n,14,0,u.namespaces)}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function bu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,10,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","pool"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" Namespace "])),(l()(),e["ɵeld"](6,0,null,0,4,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,pu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Cu)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,8,0,"editing"===u.mode||!u.poolPermission.read),l(n,10,0,"editing"!==u.mode&&u.poolPermission.read)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess)}))}function hu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"],["placeholder","Data pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,1)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](3,671744,[[13,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"dataPool"),l(n,6,0,"dataPool")}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function Iu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- No data pools available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a data pool -- "]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function wu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)}),(function(l,n){l(n,3,0,n.context.$implicit.pool_name)}))}function Eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0,t=l.component;return"change"===n&&(a=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"change"===n&&(a=!1!==t.onDataPoolChange(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](3,671744,[[13,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Iu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ru)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Nu)),e["ɵdid"](12,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,wu)),e["ɵdid"](14,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"dataPool"),l(n,6,0,"dataPool"),l(n,8,0,null===u.dataPools),l(n,10,0,null!==u.dataPools&&0===u.dataPools.length),l(n,12,0,null!==u.dataPools&&u.dataPools.length>0),l(n,14,0,u.dataPools)}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function Tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function yu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,7,"label",[["class","cd-col-form-label"],["for","dataPool"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,4,"span",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpod"](8,{required:0}),(l()(),e["ɵted"](-1,null,["Data pool"])),(l()(),e["ɵeld"](10,0,null,null,1,"cd-helper",[["html","Dedicated pool that stores the object-data of the RBD."]],null,null,null,Mn.b,Mn.a)),e["ɵdid"](11,49152,null,0,Ln.a,[],{html:[0,"html"]},null),(l()(),e["ɵeld"](12,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,hu)),e["ɵdid"](14,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Eu)),e["ɵdid"](16,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Tu)),e["ɵdid"](18,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var a=l(n,8,0,"editing"!==u.mode);l(n,7,0,a),l(n,11,0,"Dedicated pool that stores the object-data of the RBD."),l(n,14,0,"editing"===u.mode||!u.poolPermission.read),l(n,16,0,"editing"!==u.mode&&u.poolPermission.read),l(n,18,0,u.rbdForm.showError("dataPool",e["ɵnov"](n.parent,5),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess)}))}function Vu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function xu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["You have to increase the size."]))],null,null)}function qu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-helper",[],null,null,null,Mn.b,Mn.a)),e["ɵdid"](1,49152,null,0,Ln.a,[],{html:[0,"html"]},null)],(function(l,n){l(n,1,0,e["ɵinlineInterpolate"](1,"",n.parent.context.$implicit.helperHtml,""))}),null)}function ku(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,2).onChange(u.target.checked)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,2).onTouched()&&a),a}),null,null)),e["ɵdid"](2,16384,null,0,el.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.c]),e["ɵdid"](4,671744,[[17,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](6,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](7,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,qu)),e["ɵdid"](11,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,7,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,11,0,n.context.$implicit.helperHtml)}),(function(l,n){l(n,1,1,[e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,""),e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,""),e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass]),l(n,8,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,9,0,n.context.$implicit.desc)}))}function _u(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"a",[["class","float-right margin-right-md"],["href",""]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(l.component.advancedEnabled=!0,e=!1),e}),null,null)),(l()(),e["ɵted"](-1,null,["Advanced..."]))],null,null)}function Du(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Fu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Pu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required because stripe count is defined!"]))],null,null)}function Su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Stripe unit is greater than object size."]))],null,null)}function Au(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required because stripe unit is defined!"]))],null,null)}function Ou(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Stripe count must be greater than 0."]))],null,null)}function ju(l){return e["ɵvid"](0,[e["ɵpid"](0,D.TitleCasePipe,[]),e["ɵpid"](0,ll.a,[]),(l()(),e["ɵeld"](2,0,null,null,187,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,186,"form",[["name","rbdForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var a=!0;return"submit"===n&&(a=!1!==e["ɵnov"](l,5).onSubmit(u)&&a),"reset"===n&&(a=!1!==e["ɵnov"](l,5).onReset()&&a),"submit"===n&&(a=!1!==e["ɵnov"](l,8).onSubmit()&&a),a}),null,null)),e["ɵdid"](4,16384,null,0,el.G,[],null,null),e["ɵdid"](5,540672,[["formDir",4]],0,el.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,el.d,null,[el.l]),e["ɵdid"](7,16384,null,0,el.s,[[4,el.d]],null,null),e["ɵdid"](8,16384,null,0,Nl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](9,0,null,null,180,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](11,null,[""," ",""])),e["ɵppd"](12,1),e["ɵppd"](13,1),(l()(),e["ɵeld"](14,0,null,null,166,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,nu)),e["ɵdid"](16,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](17,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](18,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](21,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](23,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](24,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,25)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,25).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,25)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,25)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](25,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](27,671744,[[3,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](29,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](30,4210688,null,0,zn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](31,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,uu)),e["ɵdid"](33,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,eu)),e["ɵdid"](35,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](36,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onPoolChange(u.target.value)&&e),e}),$n.b,$n.a)),e["ɵdid"](37,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](40,0,null,0,4,"label",[["class","cd-col-form-label"],["for","pool"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](42,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](43,{required:0}),(l()(),e["ɵted"](-1,null,["Pool"])),(l()(),e["ɵeld"](45,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,au)),e["ɵdid"](47,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,su)),e["ɵdid"](49,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ru)),e["ɵdid"](51,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,cu)),e["ɵdid"](53,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bu)),e["ɵdid"](55,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](56,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](57,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](60,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](62,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","useDataPool"],["id","useDataPool"],["name","useDataPool"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0,t=l.component;return"change"===n&&(a=!1!==e["ɵnov"](l,63).onChange(u.target.checked)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,63).onTouched()&&a),"change"===n&&(a=!1!==t.onUseDataPoolChange()&&a),a}),null,null)),e["ɵdid"](63,16384,null,0,el.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.c]),e["ɵdid"](65,671744,[[11,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](67,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](68,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](69,0,null,null,1,"label",[["class","custom-control-label"],["for","useDataPool"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Use a dedicated data pool"])),(l()(),e["ɵand"](16777216,null,null,1,null,yu)),e["ɵdid"](72,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](73,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](74,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](77,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Size"])),(l()(),e["ɵeld"](79,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](80,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","GiB"],["formControlName","size"],["id","size"],["name","size"],["placeholder","e.g., 10GiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,81)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,81).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,81)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,81)._compositionEnd(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,86).onBlur(u.target.value)&&a),a}),null,null)),e["ɵdid"](81,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](83,671744,[[15,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](85,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](86,81920,null,0,Gn.a,[e.ElementRef,el.q,B.a,U.a],{defaultUnit:[0,"defaultUnit"]},null),e["ɵdid"](87,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Vu)),e["ɵdid"](89,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,xu)),e["ɵdid"](91,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](92,0,null,null,11,"div",[["class","form-group row"],["formGroupName","features"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](93,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](95,16384,null,0,el.s,[[4,el.d]],null,null),e["ɵdid"](96,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](99,0,null,0,1,"label",[["class","cd-col-form-label"],["for","features"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Features"])),(l()(),e["ɵeld"](101,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,ku)),e["ɵdid"](103,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](104,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](105,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,_u)),e["ɵdid"](107,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](108,0,null,null,72,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),e["ɵeld"](109,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Advanced"])),(l()(),e["ɵeld"](111,0,null,null,67,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](112,0,null,null,1,"h3",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Striping"])),(l()(),e["ɵeld"](114,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](115,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](118,0,null,0,1,"label",[["class","cd-col-form-label"],["for","size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Object size"])),(l()(),e["ɵeld"](120,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](121,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","obj_size"],["id","obj_size"],["name","obj_size"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,122).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,122).onTouched()&&a),a}),null,null)),e["ɵdid"](122,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](124,671744,[[19,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](126,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](127,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Du)),e["ɵdid"](129,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](130,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](131,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](134,0,null,0,4,"label",[["class","cd-col-form-label"],["for","stripingUnit"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](136,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](137,{required:0}),(l()(),e["ɵted"](-1,null,["Stripe unit"])),(l()(),e["ɵeld"](139,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](140,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","stripingUnit"],["id","stripingUnit"],["name","stripingUnit"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,141).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,141).onTouched()&&a),a}),null,null)),e["ɵdid"](141,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](143,671744,[[21,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](145,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](146,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](147,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](148,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](149,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select stripe unit --"])),(l()(),e["ɵand"](16777216,null,null,1,null,Fu)),e["ɵdid"](152,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Pu)),e["ɵdid"](154,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Su)),e["ɵdid"](156,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](157,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](158,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](161,0,null,0,4,"label",[["class","cd-col-form-label"],["for","stripingCount"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](163,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](164,{required:0}),(l()(),e["ɵted"](-1,null,["Stripe count"])),(l()(),e["ɵeld"](166,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](167,0,null,null,7,"input",[["class","form-control"],["formControlName","stripingCount"],["id","stripingCount"],["name","stripingCount"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,168)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,168).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,168)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,168)._compositionEnd(u.target.value)&&a),"change"===n&&(a=!1!==e["ɵnov"](l,169).onChange(u.target.value)&&a),"input"===n&&(a=!1!==e["ɵnov"](l,169).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,169).onTouched()&&a),a}),null,null)),e["ɵdid"](168,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵdid"](169,16384,null,0,el.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l,n){return[l,n]}),[el.e,el.w]),e["ɵdid"](171,671744,[[23,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](173,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](174,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Au)),e["ɵdid"](176,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ou)),e["ɵdid"](178,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](179,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],(function(l,n,u){var e=!0;return"changes"===n&&(e=!1!==(l.component.getDirtyConfigurationValues=u)&&e),e}),Kn.b,Kn.a)),e["ɵdid"](180,114688,null,0,Zn.a,[U.a,Jn.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),e["ɵeld"](181,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](182,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](183,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Wn.b,Wn.a)),e["ɵdid"](184,114688,null,0,Qn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](185,0,[""," ",""])),e["ɵppd"](186,1),e["ɵppd"](187,1),(l()(),e["ɵeld"](188,0,null,null,1,"cd-back-button",[],null,null,null,Yn.b,Yn.a)),e["ɵdid"](189,49152,null,0,Xn.a,[D.Location,Ql.b],null,null)],(function(l,n){var u=n.component;l(n,5,0,u.rbdForm),l(n,8,0,u.rbdForm),l(n,16,0,u.rbdForm.getValue("parent")),l(n,18,0),l(n,27,0,"name"),l(n,30,0,""),l(n,31,0,"name"),l(n,33,0,u.rbdForm.showError("name",e["ɵnov"](n,5),"required")),l(n,35,0,u.rbdForm.showError("name",e["ɵnov"](n,5),"pattern")),l(n,37,0);var a=l(n,43,0,"editing"!==u.mode);l(n,42,0,"cd-col-form-label",a),l(n,47,0,"editing"===u.mode||!u.poolPermission.read),l(n,49,0,"editing"!==u.mode&&u.poolPermission.read),l(n,51,0,u.rbdForm.showError("pool",e["ɵnov"](n,5),"required")),l(n,53,0,"editing"!==u.mode&&u.rbdForm.getValue("pool")&&null===u.namespaces),l(n,55,0,"editing"===u.mode&&u.rbdForm.getValue("namespace")||"editing"!==u.mode&&(u.namespaces&&u.namespaces.length>0||!u.poolPermission.read)),l(n,57,0),l(n,65,0,"useDataPool"),l(n,68,0,"useDataPool"),l(n,72,0,u.rbdForm.getValue("useDataPool")),l(n,74,0),l(n,83,0,"size"),l(n,86,0,"GiB"),l(n,87,0,"size"),l(n,89,0,u.rbdForm.showError("size",e["ɵnov"](n,5),"required")),l(n,91,0,u.rbdForm.showError("size",e["ɵnov"](n,5),"invalidSizeObject")),l(n,93,0,"features"),l(n,96,0),l(n,103,0,u.featuresList),l(n,107,0,!u.advancedEnabled),l(n,115,0),l(n,124,0,"obj_size"),l(n,127,0,"obj_size"),l(n,129,0,u.objectSizes),l(n,131,0);var t=l(n,137,0,u.rbdForm.getValue("stripingCount"));l(n,136,0,"cd-col-form-label",t),l(n,143,0,"stripingUnit"),l(n,146,0,"stripingUnit"),l(n,148,0,null),l(n,149,0,null),l(n,152,0,u.objectSizes),l(n,154,0,u.rbdForm.showError("stripingUnit",e["ɵnov"](n,5),"required")),l(n,156,0,u.rbdForm.showError("stripingUnit",e["ɵnov"](n,5),"invalidStripingUnit")),l(n,158,0);var o=l(n,164,0,u.rbdForm.getValue("stripingUnit"));l(n,163,0,"cd-col-form-label",o),l(n,171,0,"stripingCount"),l(n,174,0,"stripingCount"),l(n,176,0,u.rbdForm.showError("stripingCount",e["ɵnov"](n,5),"required")),l(n,178,0,u.rbdForm.showError("stripingCount",e["ɵnov"](n,5),"min")),l(n,180,0,u.rbdForm,u.initializeConfigData),l(n,184,0,e["ɵnov"](n,5))}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,7).ngClassUntouched,e["ɵnov"](n,7).ngClassTouched,e["ɵnov"](n,7).ngClassPristine,e["ɵnov"](n,7).ngClassDirty,e["ɵnov"](n,7).ngClassValid,e["ɵnov"](n,7).ngClassInvalid,e["ɵnov"](n,7).ngClassPending);var a=e["ɵunv"](n,11,0,l(n,12,0,e["ɵnov"](n,0),u.action)),t=e["ɵunv"](n,11,1,l(n,13,0,e["ɵnov"](n,1),u.resource));l(n,11,0,a,t),l(n,17,0,e["ɵnov"](n,18).hasErrors,e["ɵnov"](n,18).hasSuccess),l(n,24,0,e["ɵnov"](n,29).ngClassUntouched,e["ɵnov"](n,29).ngClassTouched,e["ɵnov"](n,29).ngClassPristine,e["ɵnov"](n,29).ngClassDirty,e["ɵnov"](n,29).ngClassValid,e["ɵnov"](n,29).ngClassInvalid,e["ɵnov"](n,29).ngClassPending,e["ɵnov"](n,31).validClass,e["ɵnov"](n,31).invalidClass),l(n,36,0,e["ɵnov"](n,37).hasErrors,e["ɵnov"](n,37).hasSuccess),l(n,56,0,e["ɵnov"](n,57).hasErrors,e["ɵnov"](n,57).hasSuccess),l(n,62,0,e["ɵnov"](n,67).ngClassUntouched,e["ɵnov"](n,67).ngClassTouched,e["ɵnov"](n,67).ngClassPristine,e["ɵnov"](n,67).ngClassDirty,e["ɵnov"](n,67).ngClassValid,e["ɵnov"](n,67).ngClassInvalid,e["ɵnov"](n,67).ngClassPending,e["ɵnov"](n,68).validClass,e["ɵnov"](n,68).invalidClass),l(n,73,0,e["ɵnov"](n,74).hasErrors,e["ɵnov"](n,74).hasSuccess),l(n,80,0,e["ɵnov"](n,85).ngClassUntouched,e["ɵnov"](n,85).ngClassTouched,e["ɵnov"](n,85).ngClassPristine,e["ɵnov"](n,85).ngClassDirty,e["ɵnov"](n,85).ngClassValid,e["ɵnov"](n,85).ngClassInvalid,e["ɵnov"](n,85).ngClassPending,e["ɵnov"](n,87).validClass,e["ɵnov"](n,87).invalidClass),l(n,92,0,e["ɵnov"](n,95).ngClassUntouched,e["ɵnov"](n,95).ngClassTouched,e["ɵnov"](n,95).ngClassPristine,e["ɵnov"](n,95).ngClassDirty,e["ɵnov"](n,95).ngClassValid,e["ɵnov"](n,95).ngClassInvalid,e["ɵnov"](n,95).ngClassPending,e["ɵnov"](n,96).hasErrors,e["ɵnov"](n,96).hasSuccess),l(n,108,0,!u.advancedEnabled),l(n,114,0,e["ɵnov"](n,115).hasErrors,e["ɵnov"](n,115).hasSuccess),l(n,121,0,e["ɵnov"](n,126).ngClassUntouched,e["ɵnov"](n,126).ngClassTouched,e["ɵnov"](n,126).ngClassPristine,e["ɵnov"](n,126).ngClassDirty,e["ɵnov"](n,126).ngClassValid,e["ɵnov"](n,126).ngClassInvalid,e["ɵnov"](n,126).ngClassPending,e["ɵnov"](n,127).validClass,e["ɵnov"](n,127).invalidClass),l(n,130,0,e["ɵnov"](n,131).hasErrors,e["ɵnov"](n,131).hasSuccess),l(n,140,0,e["ɵnov"](n,145).ngClassUntouched,e["ɵnov"](n,145).ngClassTouched,e["ɵnov"](n,145).ngClassPristine,e["ɵnov"](n,145).ngClassDirty,e["ɵnov"](n,145).ngClassValid,e["ɵnov"](n,145).ngClassInvalid,e["ɵnov"](n,145).ngClassPending,e["ɵnov"](n,146).validClass,e["ɵnov"](n,146).invalidClass),l(n,157,0,e["ɵnov"](n,158).hasErrors,e["ɵnov"](n,158).hasSuccess),l(n,167,0,e["ɵnov"](n,173).ngClassUntouched,e["ɵnov"](n,173).ngClassTouched,e["ɵnov"](n,173).ngClassPristine,e["ɵnov"](n,173).ngClassDirty,e["ɵnov"](n,173).ngClassValid,e["ɵnov"](n,173).ngClassInvalid,e["ɵnov"](n,173).ngClassPending,e["ɵnov"](n,174).validClass,e["ɵnov"](n,174).invalidClass);var o=e["ɵunv"](n,185,0,l(n,186,0,e["ɵnov"](n,0),u.action)),d=e["ɵunv"](n,185,1,l(n,187,0,e["ɵnov"](n,1),u.resource));l(n,185,0,o,d)}))}function Uu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-form",[],null,null,null,ju,lu)),e["ɵdid"](1,114688,null,0,Hn.a,[ml.a,fl.a,gn.a,Jl.a,U.a,Wl.a,B.a,A.a,Ql.b,fl.m],null,null)],(function(l,n){l(n,1,0)}),null)}var Bu=e["ɵccf"]("cd-rbd-form",Hn.a,Uu,{},{},[]),$u=u("JxMD"),Mu=u("dgut");class Lu{constructor(l){this.router=l}ngOnInit(){this.url=this.router.url}navigateTo(l){this.router.navigate([l])}}var zu=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Gu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Fl.b,Fl.a)),e["ɵdid"](1,180224,null,0,vl.e,[vl.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,1,"tab",[["heading","Overview"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/overview")&&e),e}),null,null)),e["ɵdid"](3,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](4,0,null,0,1,"tab",[["heading","Targets"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/targets")&&e),e}),null,null)),e["ɵdid"](5,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"})],(function(l,n){var u=n.component;l(n,3,0,"Overview","/block/iscsi/overview"===u.url),l(n,5,0,"Targets","/block/iscsi/targets"===u.url)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,4,0,e["ɵnov"](n,5).id,e["ɵnov"](n,5).active,e["ɵnov"](n,5).addClass,e["ɵnov"](n,5).role,e["ɵnov"](n,5).ariaLabelledby)}))}var Ku=u("roDX"),Zu=u("my5R"),Ju=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Wu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"cd-sparkline",[],null,null,null,$u.b,$u.a)),e["ɵdid"](2,638976,null,0,Mu.a,[B.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],(function(l,n){l(n,2,0,n.parent.context.value,n.parent.context.row.cdIsBinary)}),null)}function Qu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" n/a "]))],null,null)}function Yu(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Wu)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Qu)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)}),null)}function Xu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," /s "]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function Hu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" n/a "]))],null,null)}function le(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Xu)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Hu)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)}),null)}function ne(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,u)}))}function ue(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" n/a "]))],null,null)}function ee(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,ne)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ue)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)}),null)}function ae(l){return e["ɵvid"](0,[e["ɵpid"](0,L.a,[]),e["ɵqud"](402653184,1,{iscsiSparklineTpl:0}),e["ɵqud"](402653184,2,{iscsiPerSecondTpl:0}),e["ɵqud"](402653184,3,{iscsiRelativeDateTpl:0}),(l()(),e["ɵeld"](4,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,Gu,zu)),e["ɵdid"](5,114688,null,0,Lu,[fl.m],null,null),(l()(),e["ɵeld"](6,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Gateways"])),(l()(),e["ɵeld"](8,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],(function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.refresh()&&e),e}),jl.b,jl.a)),e["ɵdid"](9,2867200,null,0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"}),(l()(),e["ɵeld"](10,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](12,0,null,null,1,"cd-table",[],null,null,null,jl.b,jl.a)),e["ɵdid"](13,2867200,null,0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(l()(),e["ɵand"](0,[[1,2],["iscsiSparklineTpl",2]],null,0,null,Yu)),(l()(),e["ɵand"](0,[[2,2],["iscsiPerSecondTpl",2]],null,0,null,le)),(l()(),e["ɵand"](0,[[3,2],["iscsiRelativeDateTpl",2]],null,0,null,ee))],(function(l,n){var u=n.component;l(n,5,0),l(n,9,0,u.gateways,u.gatewaysColumns),l(n,13,0,u.images,u.imagesColumns)}),null)}function te(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-iscsi",[],null,null,null,ae,Ju)),e["ɵdid"](1,114688,null,0,Ku.a,[Zu.a,M.a,z.a,A.a],null,null)],(function(l,n){l(n,1,0)}),null)}var oe=e["ɵccf"]("cd-iscsi",Ku.a,te,{},{},[]),de=u("DqMs"),ie=u("/NlG"),se=u("i4WA"),re=u("6qls"),ce=u("tz6c"),pe=u("3ris"),me=u("e/kN"),ge=e["ɵcrt"]({encapsulation:0,styles:[["tabset.tabset>ul{border-bottom:0;float:left;display:block;margin-right:20px;border-right:1px solid #ddd;padding-right:15px}"]],data:{}});function fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Available information:"])),(l()(),e["ɵeld"](4,0,null,null,1,"pre",[],null,null,null,null,null)),(l()(),e["ɵted"](5,null,["",""]))],null,(function(l,n){l(n,5,0,n.component.status)}))}function ve(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["title","iSCSI Targets not available"],["type","info"]],null,null,null,de.b,de.a)),e["ɵdid"](1,114688,null,0,ie.a,[A.a],{title:[0,"title"],type:[1,"type"]},null),(l()(),e["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Please consult the "])),(l()(),e["ɵeld"](4,0,null,null,1,"cd-doc",[["section","iscsi"]],null,null,null,se.b,se.a)),e["ɵdid"](5,114688,null,0,re.a,[ce.a,A.a],{section:[0,"section"]},null),(l()(),e["ɵted"](-1,null,[" on how to configure and enable the iSCSI Targets management functionality."])),(l()(),e["ɵand"](16777216,null,0,1,null,fe)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,"iSCSI Targets not available","info"),l(n,5,0,"iscsi"),l(n,8,0,u.status)}),null)}function Ce(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-iscsi-target-details",[["cdTableDetail",""]],null,null,null,x.c,x.b)),e["ɵdid"](1,638976,null,0,pe.a,[A.a,z.a,S.a],{selection:[0,"selection"],settings:[1,"settings"],cephIscsiConfigVersion:[2,"cephIscsiConfigVersion"]},null)],(function(l,n){var u=n.component;l(n,1,0,u.expandedRow,u.settings,u.cephIscsiConfigVersion)}),null)}function be(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,13,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","target_iqn"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(l,n,u){var e=!0,a=l.component;return"setExpandedRow"===n&&(e=!1!==a.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==a.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](1,2867200,[[1,4],["table",4]],0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](2,0,null,1,9,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](4,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](5,0,null,null,6,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.configureDiscoveryAuth()&&e),e}),null,null)),(l()(),e["ɵeld"](6,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](8,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](9,1),(l()(),e["ɵeld"](10,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Discovery authentication"])),(l()(),e["ɵand"](16777216,null,3,1,null,Ce)),e["ɵdid"](13,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,u.targets,u.columns,"flex",!0,"target_iqn","true","single"),l(n,4,0,u.permission,u.selection,u.tableActions);var e=l(n,9,0,u.icons.key);l(n,8,0,e),l(n,13,0,u.expandedRow)}),null)}function he(l){return e["ɵvid"](0,[e["ɵqud"](671088640,1,{table:0}),(l()(),e["ɵeld"](1,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,Gu,zu)),e["ɵdid"](2,114688,null,0,Lu,[fl.m],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,ve)),e["ɵdid"](4,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,be)),e["ɵdid"](6,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,2,0),l(n,4,0,!1===u.available),l(n,6,0,!0===u.available)}),null)}function Ie(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-iscsi-target-list",[],null,null,null,he,ge)),e["ɵprd"](131584,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵdid"](2,245760,null,0,me.a,[ml.a,A.a,Zu.a,Ll.a,H.a,rl.b,Wl.a,Ql.b],null,null)],(function(l,n){l(n,2,0)}),null)}var Re=e["ɵccf"]("cd-iscsi-target-list",me.a,Ie,{},{},[]),Ne=u("D4zM"),we=u("OcYo"),Ee=u("EApP"),Te=u("WiuZ"),ye=u("wnGv"),Ve=u("LvDl");class xe{constructor(l){this.ngControl=l}onInput(l){this.setValue(l)}setValue(l){l=Ve.isString(l)?l.trim():l,this.ngControl.control.setValue(l)}}var qe=u("gr3l"),ke=e["ɵcrt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function _e(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function De(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["IQN has wrong pattern."]))],null,null)}function Fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'"])),(l()(),e["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309"])),(l()(),e["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,1,"a",[["href","https://en.wikipedia.org/wiki/ISCSI#Addressing"],["target","_blank"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["More information"]))],null,null)}function Pe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This target has modified advanced settings."]))],null,null)}function Se(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removePortal(l.context.index,l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function Ae(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["At least "," gateways are required."]))],null,(function(l,n){l(n,1,0,n.component.minimum_gateways)}))}function Oe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["lun: ",""]))],null,(function(l,n){l(n,1,0,n.component.imagesSettings[n.parent.context.$implicit].lun)}))}function je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["ɵted"](1,null,["Backstore: ",". "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,a=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent,2),u.imagesSettings[n.parent.context.$implicit].backstore));l(n,1,0,a)}))}function Ue(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This image has modified settings."]))],null,null)}function Be(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,20,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,14,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Oe)),e["ɵdid"](5,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](6,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.imageSettingsModal(l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](7,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](9,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](10,1),(l()(),e["ɵeld"](11,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeImage(l.context.index,l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](12,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](14,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](15,1),(l()(),e["ɵeld"](16,0,null,null,4,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,je)),e["ɵdid"](18,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ue)),e["ɵdid"](20,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,5,0,u.api_version>=1);var e=l(n,10,0,u.icons.deepCheck);l(n,9,0,e);var a=l(n,15,0,u.icons.destroy);l(n,14,0,a),l(n,18,0,u.backstores.length>1),l(n,20,0,u.hasAdvancedSettings(u.imagesSettings[n.context.$implicit][u.imagesSettings[n.context.$implicit].backstore]))}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function $e(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Duplicated LUN numbers."]))],null,null)}function Me(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Duplicated WWN."]))],null,null)}function Le(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function Ge(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ke(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function Ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function We(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Qe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function Ye(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,91,"div",[["formGroupName","auth"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](1,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](3,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](4,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](5,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](8,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_user"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User"])),(l()(),e["ɵeld"](11,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,6,"input",[["autocomplete","off"],["class","form-control"],["formControlName","user"],["id","target_user"],["name","target_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,13)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,13).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,13)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,13)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](13,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](15,671744,[[9,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](17,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](18,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Le)),e["ɵdid"](20,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ze)),e["ɵdid"](22,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](23,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](24,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](27,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_password"]],null,null,null,null,null)),(l()(),e["ɵeld"](28,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password"])),(l()(),e["ɵeld"](30,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](31,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](32,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","target_password"],["name","target_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,33)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,33).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,33)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,33)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](33,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](35,671744,[[11,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](37,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](38,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](39,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](40,0,null,null,1,"button",[["cdPasswordButton","target_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,41).onClick()&&a),a}),null,null)),e["ɵdid"](41,81920,null,0,Ne.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](42,0,null,null,1,"button",[["cdCopy2ClipboardButton","target_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,43).onClick()&&a),a}),null,null)),e["ɵdid"](43,81920,null,0,we.a,[e.ElementRef,e.Renderer2,Ee.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ge)),e["ɵdid"](45,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ke)),e["ɵdid"](47,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](48,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](49,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](52,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_mutual_user"]],null,null,null,null,null)),(l()(),e["ɵeld"](53,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual User"])),(l()(),e["ɵeld"](55,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](56,0,null,null,6,"input",[["autocomplete","off"],["class","form-control"],["formControlName","mutual_user"],["id","target_mutual_user"],["name","target_mutual_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,57)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,57).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,57)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,57)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](57,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](59,671744,[[13,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](61,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](62,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ze)),e["ɵdid"](64,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Je)),e["ɵdid"](66,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](67,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](68,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](71,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_mutual_password"]],null,null,null,null,null)),(l()(),e["ɵeld"](72,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual Password"])),(l()(),e["ɵeld"](74,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](75,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](76,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","mutual_password"],["id","target_mutual_password"],["name","target_mutual_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,77)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,77).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,77)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,77)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](77,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](79,671744,[[15,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](81,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](82,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](83,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](84,0,null,null,1,"button",[["cdPasswordButton","target_mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,85).onClick()&&a),a}),null,null)),e["ɵdid"](85,81920,null,0,Ne.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](86,0,null,null,1,"button",[["cdCopy2ClipboardButton","target_mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,87).onClick()&&a),a}),null,null)),e["ɵdid"](87,81920,null,0,we.a,[e.ElementRef,e.Renderer2,Ee.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,We)),e["ɵdid"](89,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Qe)),e["ɵdid"](91,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,"auth"),l(n,5,0),l(n,15,0,"user"),l(n,18,0,"user"),l(n,20,0,u.targetForm.showError("user",e["ɵnov"](n.parent,2),"required")),l(n,22,0,u.targetForm.showError("user",e["ɵnov"](n.parent,2),"pattern")),l(n,24,0),l(n,35,0,"password"),l(n,38,0,"password"),l(n,41,0,"target_password"),l(n,43,0,"target_password"),l(n,45,0,u.targetForm.showError("password",e["ɵnov"](n.parent,2),"required")),l(n,47,0,u.targetForm.showError("password",e["ɵnov"](n.parent,2),"pattern")),l(n,49,0),l(n,59,0,"mutual_user"),l(n,62,0,"mutual_user"),l(n,64,0,u.targetForm.showError("mutual_user",e["ɵnov"](n.parent,2),"required")),l(n,66,0,u.targetForm.showError("mutual_user",e["ɵnov"](n.parent,2),"pattern")),l(n,68,0),l(n,79,0,"mutual_password"),l(n,82,0,"mutual_password"),l(n,85,0,"target_mutual_password"),l(n,87,0,"target_mutual_password"),l(n,89,0,u.targetForm.showError("mutual_password",e["ɵnov"](n.parent,2),"required")),l(n,91,0,u.targetForm.showError("mutual_password",e["ɵnov"](n.parent,2),"pattern"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,3).ngClassUntouched,e["ɵnov"](n,3).ngClassTouched,e["ɵnov"](n,3).ngClassPristine,e["ɵnov"](n,3).ngClassDirty,e["ɵnov"](n,3).ngClassValid,e["ɵnov"](n,3).ngClassInvalid,e["ɵnov"](n,3).ngClassPending),l(n,4,0,e["ɵnov"](n,5).hasErrors,e["ɵnov"](n,5).hasSuccess),l(n,12,0,e["ɵnov"](n,17).ngClassUntouched,e["ɵnov"](n,17).ngClassTouched,e["ɵnov"](n,17).ngClassPristine,e["ɵnov"](n,17).ngClassDirty,e["ɵnov"](n,17).ngClassValid,e["ɵnov"](n,17).ngClassInvalid,e["ɵnov"](n,17).ngClassPending,e["ɵnov"](n,18).validClass,e["ɵnov"](n,18).invalidClass),l(n,23,0,e["ɵnov"](n,24).hasErrors,e["ɵnov"](n,24).hasSuccess),l(n,32,0,e["ɵnov"](n,37).ngClassUntouched,e["ɵnov"](n,37).ngClassTouched,e["ɵnov"](n,37).ngClassPristine,e["ɵnov"](n,37).ngClassDirty,e["ɵnov"](n,37).ngClassValid,e["ɵnov"](n,37).ngClassInvalid,e["ɵnov"](n,37).ngClassPending,e["ɵnov"](n,38).validClass,e["ɵnov"](n,38).invalidClass),l(n,48,0,e["ɵnov"](n,49).hasErrors,e["ɵnov"](n,49).hasSuccess),l(n,56,0,e["ɵnov"](n,61).ngClassUntouched,e["ɵnov"](n,61).ngClassTouched,e["ɵnov"](n,61).ngClassPristine,e["ɵnov"](n,61).ngClassDirty,e["ɵnov"](n,61).ngClassValid,e["ɵnov"](n,61).ngClassInvalid,e["ɵnov"](n,61).ngClassPending,e["ɵnov"](n,62).validClass,e["ɵnov"](n,62).invalidClass),l(n,67,0,e["ɵnov"](n,68).hasErrors,e["ɵnov"](n,68).hasSuccess),l(n,76,0,e["ɵnov"](n,81).ngClassUntouched,e["ɵnov"](n,81).ngClassTouched,e["ɵnov"](n,81).ngClassPristine,e["ɵnov"](n,81).ngClassDirty,e["ɵnov"](n,81).ngClassValid,e["ɵnov"](n,81).ngClassInvalid,e["ɵnov"](n,81).ngClassPending,e["ɵnov"](n,82).validClass,e["ɵnov"](n,82).invalidClass)}))}function Xe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiator IQN needs to be unique."]))],null,null)}function He(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function la(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["IQN has wrong pattern."]))],null,null)}function na(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ua(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function ea(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function aa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function ta(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function oa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function da(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ia(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function sa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiatorImage(l.parent.context.$implicit,l.context.index,l.parent.context.index,l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function ra(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiator belongs to a group. Images will be configure in the group."]))],null,null)}function ca(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,null,null,Te.b,Te.a)),e["ɵdid"](3,638976,null,0,ye.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["ɵeld"](4,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](7,1),(l()(),e["ɵeld"](8,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add image"]))],(function(l,n){var u=n.component,e=n.parent.context.$implicit.getValue("luns");l(n,3,0,"btn btn-light float-right",e,u.imagesInitiatorSelections[n.parent.context.index],u.messages.initiatorImage);var a=l(n,7,0,u.icons.add);l(n,6,0,a)}),null)}function pa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,136,"div",[["class","card mb-2"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](1,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](3,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](4,0,null,null,8,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiator"])),(l()(),e["ɵted"](7,null,[": "," "])),(l()(),e["ɵeld"](8,0,null,null,4,"button",[["class","close"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiator(l.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,123,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](15,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](18,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","client_iqn"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Client IQN"])),(l()(),e["ɵeld"](20,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,7,"input",[["cdTrim",""],["class","form-control"],["formControlName","client_iqn"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0,t=l.component;return"input"===n&&(a=!1!==e["ɵnov"](l,22)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,22).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,22)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,22)._compositionEnd(u.target.value)&&a),"input"===n&&(a=!1!==e["ɵnov"](l,27).onInput(u.target.value)&&a),"blur"===n&&(a=!1!==t.updatedInitiatorSelector()&&a),a}),null,null)),e["ɵdid"](22,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](24,671744,[[19,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](26,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](27,16384,null,0,xe,[el.q],null,null),e["ɵdid"](28,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Xe)),e["ɵdid"](30,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,He)),e["ɵdid"](32,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,la)),e["ɵdid"](34,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](35,0,null,null,88,null,null,null,null,null,null,null)),e["ɵdid"](36,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](38,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](39,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](40,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](43,0,null,0,1,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User"])),(l()(),e["ɵeld"](45,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](46,0,null,null,6,"input",[["autocomplete","off"],["class","form-control"],["formControlName","user"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,47)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,47).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,47)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,47)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](47,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](49,671744,[[21,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](51,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](52,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,na)),e["ɵdid"](54,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ua)),e["ɵdid"](56,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](57,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](58,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](61,0,null,0,1,"label",[["class","cd-col-form-label"],["for","password"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password"])),(l()(),e["ɵeld"](63,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](64,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](65,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["type","password"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,66)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,66).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,66)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,66)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](66,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](68,671744,[[23,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](70,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](71,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](72,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](73,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,74).onClick()&&a),a}),null,null)),e["ɵdid"](74,81920,null,0,Ne.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](75,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,76).onClick()&&a),a}),null,null)),e["ɵdid"](76,81920,null,0,we.a,[e.ElementRef,e.Renderer2,Ee.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ea)),e["ɵdid"](78,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,aa)),e["ɵdid"](80,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](81,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](82,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,25,{FormControlNames:1}),e["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),e["ɵeld"](85,0,null,0,2,"label",[["class","cd-col-form-label"],["for","mutual_user"]],null,null,null,null,null)),(l()(),e["ɵeld"](86,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual User"])),(l()(),e["ɵeld"](88,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](89,0,null,null,6,"input",[["autocomplete","off"],["class","form-control"],["formControlName","mutual_user"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,90)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,90).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,90)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,90)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](90,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](92,671744,[[25,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](94,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](95,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ta)),e["ɵdid"](97,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,oa)),e["ɵdid"](99,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](100,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](101,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,27,{FormControlNames:1}),e["ɵqud"](603979776,28,{messagesBlock:0}),(l()(),e["ɵeld"](104,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mutual_password"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual Password"])),(l()(),e["ɵeld"](106,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](107,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](108,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","mutual_password"],["type","password"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,109)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,109).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,109)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,109)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](109,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](111,671744,[[27,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](113,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](114,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](115,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](116,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,117).onClick()&&a),a}),null,null)),e["ɵdid"](117,81920,null,0,Ne.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](118,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,119).onClick()&&a),a}),null,null)),e["ɵdid"](119,81920,null,0,we.a,[e.ElementRef,e.Renderer2,Ee.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,da)),e["ɵdid"](121,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ia)),e["ɵdid"](123,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](124,0,null,null,12,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](125,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,29,{FormControlNames:1}),e["ɵqud"](603979776,30,{messagesBlock:0}),(l()(),e["ɵeld"](128,0,null,0,1,"label",[["class","cd-col-form-label"],["for","luns"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](130,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,sa)),e["ɵdid"](132,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ra)),e["ɵdid"](134,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ca)),e["ɵdid"](136,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,n.context.index);var a=l(n,12,0,u.icons.destroy);l(n,11,0,a),l(n,15,0),l(n,24,0,"client_iqn"),l(n,28,0,"client_iqn");var t=n.context.$implicit.showError("client_iqn",e["ɵnov"](n.parent.parent,2),"notUnique");l(n,30,0,t);var o=n.context.$implicit.showError("client_iqn",e["ɵnov"](n.parent.parent,2),"required");l(n,32,0,o);var d=n.context.$implicit.showError("client_iqn",e["ɵnov"](n.parent.parent,2),"pattern");l(n,34,0,d),l(n,36,0,"auth"),l(n,40,0),l(n,49,0,"user"),l(n,52,0,"user");var i=n.context.$implicit.showError("user",e["ɵnov"](n.parent.parent,2),"required");l(n,54,0,i);var s=n.context.$implicit.showError("user",e["ɵnov"](n.parent.parent,2),"pattern");l(n,56,0,s),l(n,58,0),l(n,68,0,"password"),l(n,71,0,"password"),l(n,74,0,"password"+n.context.index),l(n,76,0,"password"+n.context.index);var r=n.context.$implicit.showError("password",e["ɵnov"](n.parent.parent,2),"required");l(n,78,0,r);var c=n.context.$implicit.showError("password",e["ɵnov"](n.parent.parent,2),"pattern");l(n,80,0,c),l(n,82,0),l(n,92,0,"mutual_user"),l(n,95,0,"mutual_user");var p=n.context.$implicit.showError("mutual_user",e["ɵnov"](n.parent.parent,2),"required");l(n,97,0,p);var m=n.context.$implicit.showError("mutual_user",e["ɵnov"](n.parent.parent,2),"pattern");l(n,99,0,m),l(n,101,0),l(n,111,0,"mutual_password"),l(n,114,0,"mutual_password"),l(n,117,0,"mutual_password"+n.context.index),l(n,119,0,"mutual_password"+n.context.index);var g=n.context.$implicit.showError("mutual_password",e["ɵnov"](n.parent.parent,2),"required");l(n,121,0,g);var f=n.context.$implicit.showError("mutual_password",e["ɵnov"](n.parent.parent,2),"pattern");l(n,123,0,f),l(n,125,0);var v=n.context.$implicit.getValue("luns");l(n,132,0,v);var C=n.context.$implicit.getValue("cdIsInGroup");l(n,134,0,C);var b=!n.context.$implicit.getValue("cdIsInGroup");l(n,136,0,b)}),(function(l,n){l(n,0,0,e["ɵnov"](n,3).ngClassUntouched,e["ɵnov"](n,3).ngClassTouched,e["ɵnov"](n,3).ngClassPristine,e["ɵnov"](n,3).ngClassDirty,e["ɵnov"](n,3).ngClassValid,e["ɵnov"](n,3).ngClassInvalid,e["ɵnov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("client_iqn");l(n,7,0,u),l(n,14,0,e["ɵnov"](n,15).hasErrors,e["ɵnov"](n,15).hasSuccess),l(n,21,0,e["ɵnov"](n,26).ngClassUntouched,e["ɵnov"](n,26).ngClassTouched,e["ɵnov"](n,26).ngClassPristine,e["ɵnov"](n,26).ngClassDirty,e["ɵnov"](n,26).ngClassValid,e["ɵnov"](n,26).ngClassInvalid,e["ɵnov"](n,26).ngClassPending,e["ɵnov"](n,28).validClass,e["ɵnov"](n,28).invalidClass),l(n,39,0,e["ɵnov"](n,40).hasErrors,e["ɵnov"](n,40).hasSuccess),l(n,46,0,"user"+n.context.index,e["ɵnov"](n,51).ngClassUntouched,e["ɵnov"](n,51).ngClassTouched,e["ɵnov"](n,51).ngClassPristine,e["ɵnov"](n,51).ngClassDirty,e["ɵnov"](n,51).ngClassValid,e["ɵnov"](n,51).ngClassInvalid,e["ɵnov"](n,51).ngClassPending,e["ɵnov"](n,52).validClass,e["ɵnov"](n,52).invalidClass),l(n,57,0,e["ɵnov"](n,58).hasErrors,e["ɵnov"](n,58).hasSuccess),l(n,65,0,"password"+n.context.index,e["ɵnov"](n,70).ngClassUntouched,e["ɵnov"](n,70).ngClassTouched,e["ɵnov"](n,70).ngClassPristine,e["ɵnov"](n,70).ngClassDirty,e["ɵnov"](n,70).ngClassValid,e["ɵnov"](n,70).ngClassInvalid,e["ɵnov"](n,70).ngClassPending,e["ɵnov"](n,71).validClass,e["ɵnov"](n,71).invalidClass),l(n,81,0,e["ɵnov"](n,82).hasErrors,e["ɵnov"](n,82).hasSuccess),l(n,89,0,"mutual_user"+n.context.index,e["ɵnov"](n,94).ngClassUntouched,e["ɵnov"](n,94).ngClassTouched,e["ɵnov"](n,94).ngClassPristine,e["ɵnov"](n,94).ngClassDirty,e["ɵnov"](n,94).ngClassValid,e["ɵnov"](n,94).ngClassInvalid,e["ɵnov"](n,94).ngClassPending,e["ɵnov"](n,95).validClass,e["ɵnov"](n,95).invalidClass),l(n,100,0,e["ɵnov"](n,101).hasErrors,e["ɵnov"](n,101).hasSuccess),l(n,108,0,"mutual_password"+n.context.index,e["ɵnov"](n,113).ngClassUntouched,e["ɵnov"](n,113).ngClassTouched,e["ɵnov"](n,113).ngClassPristine,e["ɵnov"](n,113).ngClassDirty,e["ɵnov"](n,113).ngClassValid,e["ɵnov"](n,113).ngClassInvalid,e["ɵnov"](n,113).ngClassPending,e["ɵnov"](n,114).validClass,e["ɵnov"](n,114).invalidClass),l(n,124,0,e["ɵnov"](n,125).hasErrors,e["ɵnov"](n,125).hasSuccess)}))}function ma(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["No items added."]))],null,null)}function ga(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","initiators"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiators"])),(l()(),e["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"],["formArrayName","initiators"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](7,212992,null,0,el.g,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.g]),e["ɵdid"](9,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,pa)),e["ɵdid"](11,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](12,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,9,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,ma)),e["ɵdid"](15,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](16,0,null,null,6,"button",[["class","btn btn-light float-right"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(l.component.addInitiator(),e=!1),e}),null,null)),(l()(),e["ɵeld"](17,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](20,1),(l()(),e["ɵeld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add initiator"])),(l()(),e["ɵeld"](23,0,null,null,0,"hr",[],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,1,0),l(n,7,0,"initiators"),l(n,11,0,u.initiators.controls),l(n,15,0,0===u.initiators.controls.length);var e=l(n,20,0,u.icons.add);l(n,19,0,e)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,9).ngClassUntouched,e["ɵnov"](n,9).ngClassTouched,e["ɵnov"](n,9).ngClassPristine,e["ɵnov"](n,9).ngClassDirty,e["ɵnov"](n,9).ngClassValid,e["ɵnov"](n,9).ngClassInvalid,e["ɵnov"](n,9).ngClassPending)}))}function fa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupInitiator(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function va(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupDisk(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function Ca(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,69,"div",[["class","card mb-2"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](1,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](3,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](4,0,null,null,8,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Group"])),(l()(),e["ɵted"](7,null,[": "," "])),(l()(),e["ɵeld"](8,0,null,null,4,"button",[["class","close"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.groups.removeAt(l.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,56,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](15,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,33,{FormControlNames:1}),e["ɵqud"](603979776,34,{messagesBlock:0}),(l()(),e["ɵeld"](18,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","group_id"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](20,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,6,"input",[["class","form-control"],["formControlName","group_id"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,22)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,22).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,22)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,22)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](22,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](24,671744,[[33,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](26,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](27,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](28,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](29,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,35,{FormControlNames:1}),e["ɵqud"](603979776,36,{messagesBlock:0}),(l()(),e["ɵeld"](32,0,null,0,2,"label",[["class","cd-col-form-label"],["for","members"]],null,null,null,null,null)),(l()(),e["ɵeld"](33,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiators"])),(l()(),e["ɵeld"](35,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,fa)),e["ɵdid"](37,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](38,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](39,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](40,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onGroupMemberSelection(u)&&e),e}),Te.b,Te.a)),e["ɵdid"](41,638976,null,0,ye.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["ɵeld"](42,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](44,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](45,1),(l()(),e["ɵeld"](46,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add initiator"])),(l()(),e["ɵeld"](48,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](49,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](50,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,37,{FormControlNames:1}),e["ɵqud"](603979776,38,{messagesBlock:0}),(l()(),e["ɵeld"](53,0,null,0,2,"label",[["class","cd-col-form-label"],["for","disks"]],null,null,null,null,null)),(l()(),e["ɵeld"](54,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](56,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,va)),e["ɵdid"](58,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](59,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](60,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,null,null,Te.b,Te.a)),e["ɵdid"](62,638976,null,0,ye.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["ɵeld"](63,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](65,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](66,1),(l()(),e["ɵeld"](67,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add image"])),(l()(),e["ɵeld"](69,0,null,null,0,"hr",[],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,1,0,n.context.index);var e=l(n,12,0,u.icons.destroy);l(n,11,0,e),l(n,15,0),l(n,24,0,"group_id"),l(n,27,0,"group_id"),l(n,29,0);var a=n.context.$implicit.getValue("members");l(n,37,0,a);var t=n.context.$implicit.getValue("members");l(n,41,0,"btn btn-light float-right",t,u.groupMembersSelections[n.context.index],u.messages.groupInitiator);var o=l(n,45,0,u.icons.add);l(n,44,0,o),l(n,50,0);var d=n.context.$implicit.getValue("disks");l(n,58,0,d);var i=n.context.$implicit.getValue("disks");l(n,62,0,"btn btn-light float-right",i,u.groupDiskSelections[n.context.index],u.messages.initiatorImage);var s=l(n,66,0,u.icons.add);l(n,65,0,s)}),(function(l,n){l(n,0,0,e["ɵnov"](n,3).ngClassUntouched,e["ɵnov"](n,3).ngClassTouched,e["ɵnov"](n,3).ngClassPristine,e["ɵnov"](n,3).ngClassDirty,e["ɵnov"](n,3).ngClassValid,e["ɵnov"](n,3).ngClassInvalid,e["ɵnov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("group_id");l(n,7,0,u),l(n,14,0,e["ɵnov"](n,15).hasErrors,e["ɵnov"](n,15).hasSuccess),l(n,21,0,e["ɵnov"](n,26).ngClassUntouched,e["ɵnov"](n,26).ngClassTouched,e["ɵnov"](n,26).ngClassPristine,e["ɵnov"](n,26).ngClassDirty,e["ɵnov"](n,26).ngClassValid,e["ɵnov"](n,26).ngClassInvalid,e["ɵnov"](n,26).ngClassPending,e["ɵnov"](n,27).validClass,e["ɵnov"](n,27).invalidClass),l(n,28,0,e["ɵnov"](n,29).hasErrors,e["ɵnov"](n,29).hasSuccess),l(n,49,0,e["ɵnov"](n,50).hasErrors,e["ɵnov"](n,50).hasSuccess)}))}function ba(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["No items added."]))],null,null)}function ha(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,31,{FormControlNames:1}),e["ɵqud"](603979776,32,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","initiators"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Groups"])),(l()(),e["ɵeld"](6,0,null,0,16,"div",[["class","cd-col-form-input"],["formArrayName","groups"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](7,212992,null,0,el.g,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.g]),e["ɵdid"](9,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,Ca)),e["ɵdid"](11,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](12,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,9,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,ba)),e["ɵdid"](15,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](16,0,null,null,6,"button",[["class","btn btn-light float-right"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(l.component.addGroup(),e=!1),e}),null,null)),(l()(),e["ɵeld"](17,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](20,1),(l()(),e["ɵeld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add group"]))],(function(l,n){var u=n.component;l(n,1,0),l(n,7,0,"groups"),l(n,11,0,u.groups.controls),l(n,15,0,0===u.groups.controls.length);var e=l(n,20,0,u.icons.add);l(n,19,0,e)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,9).ngClassUntouched,e["ɵnov"](n,9).ngClassTouched,e["ɵnov"](n,9).ngClassPristine,e["ɵnov"](n,9).ngClassDirty,e["ɵnov"](n,9).ngClassValid,e["ɵnov"](n,9).ngClassInvalid,e["ɵnov"](n,9).ngClassPending)}))}function Ia(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,133,"form",[["name","targetForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var a=!0;return"submit"===n&&(a=!1!==e["ɵnov"](l,2).onSubmit(u)&&a),"reset"===n&&(a=!1!==e["ɵnov"](l,2).onReset()&&a),"submit"===n&&(a=!1!==e["ɵnov"](l,5).onSubmit()&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.G,[],null,null),e["ɵdid"](2,540672,[["formDir",4]],0,el.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,el.d,null,[el.l]),e["ɵdid"](4,16384,null,0,el.s,[[4,el.d]],null,null),e["ɵdid"](5,16384,null,0,Nl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](6,0,null,null,127,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](8,null,[""," ",""])),e["ɵppd"](9,1),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,113,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](13,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","target_iqn"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Target IQN"])),(l()(),e["ɵeld"](18,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,14,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](20,0,null,null,7,"input",[["cdTrim",""],["class","form-control"],["formControlName","target_iqn"],["id","target_iqn"],["name","target_iqn"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,21)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,21).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,21)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,21)._compositionEnd(u.target.value)&&a),"input"===n&&(a=!1!==e["ɵnov"](l,26).onInput(u.target.value)&&a),a}),null,null)),e["ɵdid"](21,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](23,671744,[[1,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](25,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](26,16384,null,0,xe,[el.q],null,null),e["ɵdid"](27,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](28,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](29,0,null,null,4,"button",[["class","btn btn-light"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.targetSettingsModal()&&e),e}),null,null)),(l()(),e["ɵeld"](30,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](32,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](33,1),(l()(),e["ɵand"](16777216,null,null,1,null,_e)),e["ɵdid"](35,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,De)),e["ɵdid"](37,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Fe)),e["ɵdid"](39,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Pe)),e["ɵdid"](41,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](42,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](43,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](44,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](47,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","portals"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Portals"])),(l()(),e["ɵeld"](49,0,null,0,22,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Se)),e["ɵdid"](51,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](52,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](53,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](54,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onPortalSelection(u)&&e),e}),Te.b,Te.a)),e["ɵdid"](55,638976,null,0,ye.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["ɵeld"](56,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](58,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](59,1),(l()(),e["ɵeld"](60,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add portal"])),(l()(),e["ɵeld"](62,0,null,null,6,"input",[["class","form-control"],["formControlName","portals"],["id","portals"],["name","portals"],["type","hidden"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,63)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,63).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,63)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,63)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](63,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](65,671744,[[3,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](67,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](68,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ae)),e["ɵdid"](70,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](71,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](72,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](73,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](76,0,null,0,1,"label",[["class","cd-col-form-label"],["for","disks"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](78,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Be)),e["ɵdid"](80,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](81,0,null,null,6,"input",[["class","form-control"],["formControlName","disks"],["id","disks"],["name","disks"],["type","hidden"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,82)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,82).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,82)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,82)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](82,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](84,671744,[[5,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](86,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](87,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,$e)),e["ɵdid"](89,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Me)),e["ɵdid"](91,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](92,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](93,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](94,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onImageSelection(u)&&e),e}),Te.b,Te.a)),e["ɵdid"](95,638976,null,0,ye.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["ɵeld"](96,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](98,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](99,1),(l()(),e["ɵeld"](100,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add image"])),(l()(),e["ɵeld"](102,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](103,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](104,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](107,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](108,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](109,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","acl_enabled"],["id","acl_enabled"],["name","acl_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,110).onChange(u.target.checked)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,110).onTouched()&&a),a}),null,null)),e["ɵdid"](110,16384,null,0,el.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.c]),e["ɵdid"](112,671744,[[7,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](114,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](115,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](116,0,null,null,1,"label",[["class","custom-control-label"],["for","acl_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["ACL authentication"])),(l()(),e["ɵeld"](118,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Ye)),e["ɵdid"](120,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ga)),e["ɵdid"](122,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ha)),e["ɵdid"](124,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](125,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](126,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](127,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Wn.b,Wn.a)),e["ɵdid"](128,114688,null,0,Qn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](129,0,[""," ",""])),e["ɵppd"](130,1),e["ɵppd"](131,1),(l()(),e["ɵeld"](132,0,null,null,1,"cd-back-button",[],null,null,null,Yn.b,Yn.a)),e["ɵdid"](133,49152,null,0,Xn.a,[D.Location,Ql.b],null,null)],(function(l,n){var u=n.component;l(n,2,0,u.targetForm),l(n,5,0,u.targetForm),l(n,13,0),l(n,23,0,"target_iqn"),l(n,27,0,"target_iqn");var a=l(n,33,0,u.icons.deepCheck);l(n,32,0,a),l(n,35,0,u.targetForm.showError("target_iqn",e["ɵnov"](n,2),"required")),l(n,37,0,u.targetForm.showError("target_iqn",e["ɵnov"](n,2),"pattern")),l(n,39,0,u.targetForm.showError("target_iqn",e["ɵnov"](n,2),"iqn")),l(n,41,0,u.hasAdvancedSettings(u.targetForm.getValue("target_controls"))),l(n,44,0),l(n,51,0,u.portals.value),l(n,55,0,"btn btn-light float-right",u.portals.value,u.portalsSelections,u.messages.portals);var t=l(n,59,0,u.icons.add);l(n,58,0,t),l(n,65,0,"portals"),l(n,68,0,"portals"),l(n,70,0,u.targetForm.showError("portals",e["ɵnov"](n,2),"minGateways")),l(n,73,0),l(n,80,0,u.targetForm.getValue("disks")),l(n,84,0,"disks"),l(n,87,0,"disks"),l(n,89,0,u.targetForm.showError("disks",e["ɵnov"](n,2),"dupLunId")),l(n,91,0,u.targetForm.showError("disks",e["ɵnov"](n,2),"dupWwn")),l(n,95,0,"btn btn-light float-right",u.disks.value,u.imagesSelections,u.messages.images);var o=l(n,99,0,u.icons.add);l(n,98,0,o),l(n,104,0),l(n,112,0,"acl_enabled"),l(n,115,0,"acl_enabled"),l(n,120,0,u.cephIscsiConfigVersion>10&&!u.targetForm.getValue("acl_enabled")),l(n,122,0,u.targetForm.getValue("acl_enabled")),l(n,124,0,u.targetForm.getValue("acl_enabled")),l(n,128,0,e["ɵnov"](n,2))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,4).ngClassUntouched,e["ɵnov"](n,4).ngClassTouched,e["ɵnov"](n,4).ngClassPristine,e["ɵnov"](n,4).ngClassDirty,e["ɵnov"](n,4).ngClassValid,e["ɵnov"](n,4).ngClassInvalid,e["ɵnov"](n,4).ngClassPending);var a=e["ɵunv"](n,8,0,l(n,9,0,e["ɵnov"](n.parent,0),u.action)),t=e["ɵunv"](n,8,1,l(n,10,0,e["ɵnov"](n.parent,1),u.resource));l(n,8,0,a,t),l(n,12,0,e["ɵnov"](n,13).hasErrors,e["ɵnov"](n,13).hasSuccess),l(n,20,0,e["ɵnov"](n,25).ngClassUntouched,e["ɵnov"](n,25).ngClassTouched,e["ɵnov"](n,25).ngClassPristine,e["ɵnov"](n,25).ngClassDirty,e["ɵnov"](n,25).ngClassValid,e["ɵnov"](n,25).ngClassInvalid,e["ɵnov"](n,25).ngClassPending,e["ɵnov"](n,27).validClass,e["ɵnov"](n,27).invalidClass),l(n,43,0,e["ɵnov"](n,44).hasErrors,e["ɵnov"](n,44).hasSuccess),l(n,62,0,e["ɵnov"](n,67).ngClassUntouched,e["ɵnov"](n,67).ngClassTouched,e["ɵnov"](n,67).ngClassPristine,e["ɵnov"](n,67).ngClassDirty,e["ɵnov"](n,67).ngClassValid,e["ɵnov"](n,67).ngClassInvalid,e["ɵnov"](n,67).ngClassPending,e["ɵnov"](n,68).validClass,e["ɵnov"](n,68).invalidClass),l(n,72,0,e["ɵnov"](n,73).hasErrors,e["ɵnov"](n,73).hasSuccess),l(n,81,0,e["ɵnov"](n,86).ngClassUntouched,e["ɵnov"](n,86).ngClassTouched,e["ɵnov"](n,86).ngClassPristine,e["ɵnov"](n,86).ngClassDirty,e["ɵnov"](n,86).ngClassValid,e["ɵnov"](n,86).ngClassInvalid,e["ɵnov"](n,86).ngClassPending,e["ɵnov"](n,87).validClass,e["ɵnov"](n,87).invalidClass),l(n,103,0,e["ɵnov"](n,104).hasErrors,e["ɵnov"](n,104).hasSuccess),l(n,109,0,e["ɵnov"](n,114).ngClassUntouched,e["ɵnov"](n,114).ngClassTouched,e["ɵnov"](n,114).ngClassPristine,e["ɵnov"](n,114).ngClassDirty,e["ɵnov"](n,114).ngClassValid,e["ɵnov"](n,114).ngClassInvalid,e["ɵnov"](n,114).ngClassPending,e["ɵnov"](n,115).validClass,e["ɵnov"](n,115).invalidClass);var o=e["ɵunv"](n,129,0,l(n,130,0,e["ɵnov"](n.parent,0),u.action)),d=e["ɵunv"](n,129,1,l(n,131,0,e["ɵnov"](n.parent,1),u.resource));l(n,129,0,o,d)}))}function Ra(l){return e["ɵvid"](0,[e["ɵpid"](0,D.TitleCasePipe,[]),e["ɵpid"](0,ll.a,[]),e["ɵpid"](0,z.a,[]),(l()(),e["ɵeld"](3,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Ia)),e["ɵdid"](5,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,5,0,n.component.targetForm)}),null)}function Na(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-iscsi-target-form",[],null,null,null,Ra,ke)),e["ɵdid"](1,114688,null,0,qe.a,[Zu.a,rl.b,Jl.a,fl.m,fl.a,A.a,Wl.a,Ql.b],null,null)],(function(l,n){l(n,1,0)}),null)}var wa=e["ɵccf"]("cd-iscsi-target-form",qe.a,Na,{},{},[]),Ea=u("Vhfg"),Ta=u("cxJu");u.d(n,"BlockModuleNgFactory",(function(){return ya})),u.d(n,"RoutedBlockModuleNgFactory",(function(){return Va}));var ya=e["ɵcmf"](a.a,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[t.a,o.a,d.a,i.a,i.b,s.a,r.a,c.a,p.a,m.a,g.a,f.a,v.a,C.a,b.a,h.a,I.a,R.a,R.c,R.b,R.d,N.a,w.a,E.a,T.a,y.a,V.a,x.a,q.a,k.a,_.a]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,D.NgLocalization,D.NgLocaleLocalization,[e.LOCALE_ID,[2,D["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,P.a,P.a,[]),e["ɵmpd"](4608,S.a,S.a,[A.a]),e["ɵmpd"](4608,D.DatePipe,D.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,B.a,B.a,[U.a]),e["ɵmpd"](4608,$.a,$.a,[U.a]),e["ɵmpd"](4608,M.a,M.a,[U.a]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[]),e["ɵmpd"](4608,K.a,K.a,[]),e["ɵmpd"](4608,Z.a,Z.a,[D.DatePipe]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,W.a,W.a,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,Y.a,Y.a,[]),e["ɵmpd"](4608,X.a,X.a,[]),e["ɵmpd"](4608,H.a,H.a,[A.a]),e["ɵmpd"](4608,ll.a,ll.a,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,ul.a,ul.a,[]),e["ɵmpd"](4608,el.D,el.D,[]),e["ɵmpd"](4608,el.h,el.h,[]),e["ɵmpd"](4608,al.b,al.b,[]),e["ɵmpd"](4608,tl.a,tl.a,[]),e["ɵmpd"](4608,ol.a,ol.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,dl.a,dl.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ol.a,e.ApplicationRef]),e["ɵmpd"](4608,il.c,il.c,[]),e["ɵmpd"](4608,sl.a,sl.a,[]),e["ɵmpd"](4608,rl.b,rl.b,[e.RendererFactory2,dl.a]),e["ɵmpd"](4608,cl.y,cl.y,[D.DOCUMENT]),e["ɵmpd"](4608,cl.r,cl.r,[]),e["ɵmpd"](4608,cl.a,cl.a,[]),e["ɵmpd"](4608,pl.f,pl.f,[]),e["ɵmpd"](4608,ml.a,ml.a,[]),e["ɵmpd"](4608,gl.a,gl.a,[fl.m,ml.a]),e["ɵmpd"](4608,vl.f,vl.f,[]),e["ɵmpd"](4608,Cl.t,Cl.t,[]),e["ɵmpd"](4608,Cl.v,Cl.v,[]),e["ɵmpd"](4608,Cl.a,Cl.a,[]),e["ɵmpd"](4608,Cl.h,Cl.h,[]),e["ɵmpd"](4608,Cl.d,Cl.d,[]),e["ɵmpd"](4608,Cl.j,Cl.j,[]),e["ɵmpd"](4608,Cl.l,Cl.l,[]),e["ɵmpd"](4608,Cl.u,Cl.u,[Cl.v,Cl.l]),e["ɵmpd"](4608,bl.a,bl.a,[]),e["ɵmpd"](1073742336,D.CommonModule,D.CommonModule,[]),e["ɵmpd"](1073742336,vl.d,vl.d,[]),e["ɵmpd"](1073742336,hl.a,hl.a,[]),e["ɵmpd"](1073742336,el.C,el.C,[]),e["ɵmpd"](1073742336,el.n,el.n,[]),e["ɵmpd"](1073742336,el.y,el.y,[]),e["ɵmpd"](1073742336,al.c,al.c,[]),e["ɵmpd"](1073742336,tl.d,tl.d,[]),e["ɵmpd"](1073742336,il.d,il.d,[]),e["ɵmpd"](1073742336,sl.d,sl.d,[]),e["ɵmpd"](1073742336,Il.b,Il.b,[]),e["ɵmpd"](1073742336,rl.e,rl.e,[]),e["ɵmpd"](1073742336,Rl.a,Rl.a,[]),e["ɵmpd"](1073742336,pl.e,pl.e,[]),e["ɵmpd"](1073742336,Nl.f,Nl.f,[]),e["ɵmpd"](1073742336,wl.ClickOutsideModule,wl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,El.b,El.b,[]),e["ɵmpd"](1073742336,fl.q,fl.q,[[2,fl.v],[2,fl.m]]),e["ɵmpd"](1073742336,Tl.a,Tl.a,[]),e["ɵmpd"](1073742336,cl.u,cl.u,[]),e["ɵmpd"](1073742336,yl.a,yl.a,[]),e["ɵmpd"](1073742336,Vl.a,Vl.a,[]),e["ɵmpd"](1073742336,xl.a,xl.a,[]),e["ɵmpd"](1073742336,ql.a,ql.a,[]),e["ɵmpd"](1073742336,Cl.g,Cl.g,[]),e["ɵmpd"](1073742336,kl.b,kl.b,[]),e["ɵmpd"](1073742336,a.a,a.a,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,pl.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})),Va=e["ɵcmf"](a.b,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[t.a,o.a,d.a,i.a,i.b,s.a,r.a,c.a,p.a,m.a,g.a,f.a,v.a,C.a,b.a,h.a,I.a,R.a,R.c,R.b,R.d,N.a,w.a,E.a,T.a,y.a,V.a,x.a,q.a,k.a,_.a,pn,hn,_n,Bn,Bu,oe,Re,wa]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,D.NgLocalization,D.NgLocaleLocalization,[e.LOCALE_ID,[2,D["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,P.a,P.a,[]),e["ɵmpd"](4608,S.a,S.a,[A.a]),e["ɵmpd"](4608,D.DatePipe,D.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,B.a,B.a,[U.a]),e["ɵmpd"](4608,$.a,$.a,[U.a]),e["ɵmpd"](4608,M.a,M.a,[U.a]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[]),e["ɵmpd"](4608,K.a,K.a,[]),e["ɵmpd"](4608,Z.a,Z.a,[D.DatePipe]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,W.a,W.a,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,Y.a,Y.a,[]),e["ɵmpd"](4608,X.a,X.a,[]),e["ɵmpd"](4608,H.a,H.a,[A.a]),e["ɵmpd"](4608,ll.a,ll.a,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,ul.a,ul.a,[]),e["ɵmpd"](4608,el.D,el.D,[]),e["ɵmpd"](4608,el.h,el.h,[]),e["ɵmpd"](4608,al.b,al.b,[]),e["ɵmpd"](4608,tl.a,tl.a,[]),e["ɵmpd"](4608,ol.a,ol.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,dl.a,dl.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ol.a,e.ApplicationRef]),e["ɵmpd"](4608,il.c,il.c,[]),e["ɵmpd"](4608,sl.a,sl.a,[]),e["ɵmpd"](4608,rl.b,rl.b,[e.RendererFactory2,dl.a]),e["ɵmpd"](4608,cl.y,cl.y,[D.DOCUMENT]),e["ɵmpd"](4608,cl.r,cl.r,[]),e["ɵmpd"](4608,cl.a,cl.a,[]),e["ɵmpd"](4608,pl.f,pl.f,[]),e["ɵmpd"](4608,ml.a,ml.a,[]),e["ɵmpd"](4608,gl.a,gl.a,[fl.m,ml.a]),e["ɵmpd"](4608,vl.f,vl.f,[]),e["ɵmpd"](4608,Cl.t,Cl.t,[]),e["ɵmpd"](4608,Cl.v,Cl.v,[]),e["ɵmpd"](4608,Cl.a,Cl.a,[]),e["ɵmpd"](4608,Cl.h,Cl.h,[]),e["ɵmpd"](4608,Cl.d,Cl.d,[]),e["ɵmpd"](4608,Cl.j,Cl.j,[]),e["ɵmpd"](4608,Cl.l,Cl.l,[]),e["ɵmpd"](4608,Cl.u,Cl.u,[Cl.v,Cl.l]),e["ɵmpd"](4608,bl.a,bl.a,[]),e["ɵmpd"](1073742336,D.CommonModule,D.CommonModule,[]),e["ɵmpd"](1073742336,vl.d,vl.d,[]),e["ɵmpd"](1073742336,hl.a,hl.a,[]),e["ɵmpd"](1073742336,el.C,el.C,[]),e["ɵmpd"](1073742336,el.n,el.n,[]),e["ɵmpd"](1073742336,el.y,el.y,[]),e["ɵmpd"](1073742336,al.c,al.c,[]),e["ɵmpd"](1073742336,tl.d,tl.d,[]),e["ɵmpd"](1073742336,il.d,il.d,[]),e["ɵmpd"](1073742336,sl.d,sl.d,[]),e["ɵmpd"](1073742336,Il.b,Il.b,[]),e["ɵmpd"](1073742336,rl.e,rl.e,[]),e["ɵmpd"](1073742336,Rl.a,Rl.a,[]),e["ɵmpd"](1073742336,pl.e,pl.e,[]),e["ɵmpd"](1073742336,Nl.f,Nl.f,[]),e["ɵmpd"](1073742336,wl.ClickOutsideModule,wl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,El.b,El.b,[]),e["ɵmpd"](1073742336,fl.q,fl.q,[[2,fl.v],[2,fl.m]]),e["ɵmpd"](1073742336,Tl.a,Tl.a,[]),e["ɵmpd"](1073742336,cl.u,cl.u,[]),e["ɵmpd"](1073742336,yl.a,yl.a,[]),e["ɵmpd"](1073742336,Vl.a,Vl.a,[]),e["ɵmpd"](1073742336,xl.a,xl.a,[]),e["ɵmpd"](1073742336,ql.a,ql.a,[]),e["ɵmpd"](1073742336,Cl.g,Cl.g,[]),e["ɵmpd"](1073742336,kl.b,kl.b,[]),e["ɵmpd"](1073742336,a.a,a.a,[]),e["ɵmpd"](1073742336,a.b,a.b,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,pl.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](1024,fl.k,(function(){return[[{path:"",redirectTo:"rbd",pathMatch:"full"},{path:"rbd",canActivate:[Ea.a],data:a.c,children:[{path:"",component:Zl.a},{path:"namespaces",component:mn.a,data:a.d},{path:"trash",component:In.a,data:a.j},{path:"performance",component:An.a,data:a.k},{path:"create",component:Hn.a,data:a.l},{path:"edit/:image_spec",component:Hn.a,data:a.m},{path:"clone/:image_spec/:snap",component:Hn.a,data:a.n},{path:"copy/:image_spec",component:Hn.a,data:a.o},{path:"copy/:image_spec/:snap",component:Hn.a,data:a.p}]},{path:"mirroring",component:Ta.a,canActivate:[Ea.a],data:a.q},{path:"iscsi",canActivate:[Ea.a],data:a.e,children:[{path:"",redirectTo:"overview",pathMatch:"full"},{path:"overview",component:Ku.a,data:a.f},{path:"targets",data:a.g,children:[{path:"",component:me.a},{path:"create",component:qe.a,data:a.h},{path:"edit/:target_iqn",component:qe.a,data:a.i}]}]}]]}),[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.1818f80c2e905e85a90f.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.1818f80c2e905e85a90f.js
new file mode 100644 (file)
index 0000000..35af65a
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{nOaW:function(l,n,e){"use strict";e.r(n);var u=e("8Y7J"),i=e("sne2"),t=e("s7LF"),a=e("LvDl"),o=e("IheW"),s=e("GiVz"),r=e("pL04");let d=(()=>{class l{constructor(l,n){this.http=l,this.i18n=n,this.apiPath="api/crush_rule",this.formTooltips={root:this.i18n("The name of the node under which data should be placed."),failure_domain:this.i18n("The type of CRUSH nodes across which we should separate replicas."),device_class:this.i18n("The device class data should be placed on.")}}create(l){return this.http.post(this.apiPath,l,{observe:"response"})}delete(l){return this.http.delete(`${this.apiPath}/${l}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return l.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new l(u["ɵɵinject"](o.c),u["ɵɵinject"](s.a))},token:l,providedIn:r.a}),l})(),c=(()=>{class l{constructor(l,n){this.http=l,this.i18n=n,this.apiPath="api/erasure_code_profile",this.formTooltips={k:this.i18n("Each object is split in data-chunks parts, each stored on a different OSD."),m:this.i18n("Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data."),plugins:{jerasure:{description:this.i18n("The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools."),technique:this.i18n("The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2."),packetSize:this.i18n("The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.")},lrc:{description:this.i18n("With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven."),l:this.i18n("Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set."),crushLocality:this.i18n("The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.")},isa:{description:this.i18n("The isa plugin encapsulates the ISA library. It only runs on Intel processors."),technique:this.i18n("The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.")},shec:{description:this.i18n("The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes."),c:this.i18n("The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.")}},crushRoot:this.i18n("The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default."),crushFailureDomain:this.i18n("Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host."),crushDeviceClass:this.i18n("Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map."),directory:this.i18n("Set the directory name from which the erasure code plugin is loaded.")}}list(){return this.http.get(this.apiPath)}create(l){return this.http.post(this.apiPath,l,{observe:"response"})}delete(l){return this.http.delete(`${this.apiPath}/${l}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return l.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new l(u["ɵɵinject"](o.c),u["ɵɵinject"](s.a))},token:l,providedIn:r.a}),l})();var m=e("Ekvf");class f{constructor(){this.nodes=[],this.idTree={},this.allDevices=[],this.buckets=[],this.failureDomains={},this.failureDomainKeys=[],this.devices=[],this.deviceCount=0}static searchFailureDomains(l,n){return this.getFailureDomains(this.search(l,n))}static search(l,n){const[e,u]=n.split("~"),i=l.find(l=>["name","id","type"].some(n=>l[n]===e));return i?(l=this.getSubNodes(i,this.createIdTreeFromNodes(l)),u&&(l=this.filterNodesByDeviceType(l,u)),l):[]}static createIdTreeFromNodes(l){const n={};return l.forEach(l=>{n[l.id]=l}),n}static getSubNodes(l,n){let e=[l];return l.children?(l.children.forEach(l=>{e=e.concat(this.getSubNodes(n[l],n))}),e):e}static filterNodesByDeviceType(l,n){let e,u=l.filter(l=>l.device_class&&l.device_class!==n).map(l=>l.id),i=u;do{e=!1,l=l.filter(l=>!u.includes(l.id));const n=[];l.forEach(l=>{l.children&&l.children.every(l=>u.includes(l))&&(n.push(l.id),e=!0)}),e&&(u=n,i=i.concat(n))}while(e);return(l=a.cloneDeep(l)).map(l=>l.children?(l.children=l.children.filter(l=>!i.includes(l)),l):l)}static getFailureDomains(l){const n={};return l.forEach(l=>{const e=l.type;n[e]||(n[e]=[]),n[e].push(l)}),n}initCrushNodeSelection(l,n,e,u){this.nodes=l,this.idTree=f.createIdTreeFromNodes(l),l.forEach(l=>{this.idTree[l.id]=l}),this.buckets=a.sortBy(l.filter(l=>l.children),"name"),this.controls={root:n,failure:e,device:u},this.preSelectRoot(),this.controls.root.valueChanges.subscribe(()=>this.onRootChange()),this.controls.failure.valueChanges.subscribe(()=>this.onFailureDomainChange()),this.controls.device.valueChanges.subscribe(()=>this.onDeviceChange())}preSelectRoot(){const l=this.nodes.find(l=>"root"===l.type);this.silentSet(this.controls.root,l),this.onRootChange()}silentSet(l,n){l.setValue(n,{emitEvent:!1})}onRootChange(){const l=f.getSubNodes(this.controls.root.value,this.idTree),n=f.getFailureDomains(l);Object.keys(n).forEach(l=>{n[l].length<=1&&delete n[l]}),this.failureDomains=n,this.failureDomainKeys=Object.keys(n).sort(),this.updateFailureDomain()}updateFailureDomain(){let l=this.getIncludedCustomValue(this.controls.failure,Object.keys(this.failureDomains));""===l&&(l=this.setMostCommonDomain(this.controls.failure)),this.updateDevices(l)}getIncludedCustomValue(l,n){return l.dirty&&n.includes(l.value)?l.value:""}setMostCommonDomain(l){let n={n:0,type:""};return Object.keys(this.failureDomains).forEach(l=>{const e=this.failureDomains[l].length;n.n<e&&(n={n:e,type:l})}),this.silentSet(l,n.type),n.type}onFailureDomainChange(){this.updateDevices()}updateDevices(l=this.controls.failure.value){const n=a.flatten(this.failureDomains[l].map(l=>f.getSubNodes(l,this.idTree)));this.allDevices=n.filter(l=>l.device_class).map(l=>l.device_class),this.devices=a.uniq(this.allDevices).sort();const e=1===this.devices.length?this.devices[0]:this.getIncludedCustomValue(this.controls.device,this.devices);this.silentSet(this.controls.device,e),this.onDeviceChange(e)}onDeviceChange(l=this.controls.device.value){this.deviceCount=""===l?this.allDevices.length:this.allDevices.filter(n=>n===l).length}}var g=e("0+/T"),p=e("a96k"),h=e("oxzT"),v=e("QFaf"),b=e("1Ni5"),C=e("PhyI"),R=e("kvvV"),I=e("Fgil"),E=e("aexS"),N=e("aXbf"),y=e("kn/O"),V=e("2EZI");class w extends f{constructor(l,n,e,i,t,a){super(),this.formBuilder=l,this.bsModalRef=n,this.taskWrapper=e,this.crushRuleService=i,this.i18n=t,this.actionLabels=a,this.submitAction=new u.EventEmitter,this.tooltips=this.crushRuleService.formTooltips,this.action=this.actionLabels.CREATE,this.resource=this.i18n("Crush Rule"),this.createForm()}createForm(){this.form=this.formBuilder.group({name:["",[t.B.required,t.B.pattern("[A-Za-z0-9_-]+"),b.a.custom("uniqueName",l=>this.names&&-1!==this.names.indexOf(l))]],root:null,failure_domain:"",device_class:""})}ngOnInit(){this.crushRuleService.getInfo().subscribe(({names:l,nodes:n})=>{this.initCrushNodeSelection(n,this.form.get("root"),this.form.get("failure_domain"),this.form.get("device_class")),this.names=l})}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const l=a.cloneDeep(this.form.value);l.root=l.root.name,""===l.device_class&&delete l.device_class,this.taskWrapper.wrapTaskAroundCall({task:new R.a("crushRule/create",l),call:this.crushRuleService.create(l)}).subscribe(void 0,()=>{this.form.setErrors({cdSubmitButton:!0})},()=>{this.bsModalRef.hide(),this.submitAction.emit(l)})}}class T{}class _ extends f{constructor(l,n,e,i,t,a){super(),this.formBuilder=l,this.bsModalRef=n,this.taskWrapper=e,this.ecpService=i,this.i18n=t,this.actionLabels=a,this.submitAction=new u.EventEmitter,this.tooltips=this.ecpService.formTooltips,this.PLUGIN={LRC:"lrc",SHEC:"shec",JERASURE:"jerasure",ISA:"isa"},this.plugin=this.PLUGIN.JERASURE,this.action=this.actionLabels.CREATE,this.resource=this.i18n("EC Profile"),this.createForm(),this.setJerasureDefaults()}createForm(){this.form=this.formBuilder.group({name:[null,[t.B.required,t.B.pattern("[A-Za-z0-9_-]+"),b.a.custom("uniqueName",l=>this.names&&-1!==this.names.indexOf(l))]],plugin:[this.PLUGIN.JERASURE,[t.B.required]],k:[4,[t.B.required,t.B.min(2),b.a.custom("max",()=>this.baseValueValidation(!0)),b.a.custom("unequal",l=>this.lrcDataValidation(l)),b.a.custom("kLowerM",l=>this.shecDataValidation(l))]],m:[2,[t.B.required,t.B.min(1),b.a.custom("max",()=>this.baseValueValidation())]],crushFailureDomain:"",crushRoot:null,crushDeviceClass:"",directory:"",technique:"reed_sol_van",packetSize:[2048,[t.B.min(1)]],l:[3,[t.B.required,t.B.min(1),b.a.custom("unequal",l=>this.lrcLocalityValidation(l))]],crushLocality:"",c:[2,[t.B.required,t.B.min(1),b.a.custom("cGreaterM",l=>this.shecDurabilityValidation(l))]]}),this.form.get("k").valueChanges.subscribe(()=>this.updateValidityOnChange(["m","l"])),this.form.get("m").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","l","c"])),this.form.get("l").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","m"])),this.form.get("plugin").valueChanges.subscribe(l=>this.onPluginChange(l))}baseValueValidation(l=!1){return this.validValidation(()=>this.getKMSum()>this.deviceCount&&this.form.getValue("k")>this.form.getValue("m")===l)}validValidation(l,n){return!((!this.form||n)&&this.plugin!==n)&&l()}getKMSum(){return this.form.getValue("k")+this.form.getValue("m")}lrcDataValidation(l){return this.validValidation(()=>{const n=this.form.getValue("m"),e=this.form.getValue("l"),u=l+n;return this.lrcMultiK=l/(u/e),l%(u/e)!=0},"lrc")}shecDataValidation(l){return this.validValidation(()=>this.form.getValue("m")>l,"shec")}lrcLocalityValidation(l){return this.validValidation(()=>{const n=this.getKMSum();return this.lrcGroups=l>0?n/l:0,l>0&&n%l!=0},"lrc")}shecDurabilityValidation(l){return this.validValidation(()=>{const n=this.form.getValue("m");return l>n},"shec")}updateValidityOnChange(l){l.forEach(l=>this.form.get(l).updateValueAndValidity({emitEvent:!1}))}onPluginChange(l){this.plugin=l,l===this.PLUGIN.JERASURE?this.setJerasureDefaults():l===this.PLUGIN.LRC?this.setLrcDefaults():l===this.PLUGIN.ISA?this.setIsaDefaults():l===this.PLUGIN.SHEC&&this.setShecDefaults(),this.updateValidityOnChange(["m"])}setJerasureDefaults(){this.setDefaults({k:4,m:2}),this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liberation","blaum_roth","liber8tion"]}setLrcDefaults(){this.setDefaults({k:4,m:2,l:3})}setIsaDefaults(){this.setDefaults({k:7,m:3}),this.techniques=["reed_sol_van","cauchy"]}setShecDefaults(){this.setDefaults({k:4,m:3,c:2})}setDefaults(l){Object.keys(l).forEach(n=>{const e=this.form.get(n),u=e.value;let i=e.pristine;"k"===n?i=[4,7].includes(u):"m"===n&&(i=[2,3].includes(u)),i&&this.form.get(n).setValue(l[n])})}ngOnInit(){this.ecpService.getInfo().subscribe(({plugins:l,names:n,directory:e,nodes:u})=>{this.initCrushNodeSelection(u,this.form.get("crushRoot"),this.form.get("crushFailureDomain"),this.form.get("crushDeviceClass")),this.plugins=l,this.names=n,this.form.silentSet("directory",e),this.preValidateNumericInputFields()})}preValidateNumericInputFields(){const l=["k","m","l","c"].map(l=>this.form.get(l));l.forEach(l=>{l.markAsTouched(),l.markAsDirty()}),l[1].updateValueAndValidity()}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const l=this.createJson();this.taskWrapper.wrapTaskAroundCall({task:new R.a("ecp/create",{name:l.name}),call:this.ecpService.create(l)}).subscribe(void 0,()=>{this.form.setErrors({cdSubmitButton:!0})},()=>{this.bsModalRef.hide(),this.submitAction.emit(l)})}createJson(){const l={technique:[this.PLUGIN.ISA,this.PLUGIN.JERASURE],packetSize:[this.PLUGIN.JERASURE],l:[this.PLUGIN.LRC],crushLocality:[this.PLUGIN.LRC],c:[this.PLUGIN.SHEC]},n=new T,e=this.form.getValue("plugin");return Object.keys(this.form.controls).filter(n=>{const u=l[n],i=this.form.getValue(n);return(u&&u.includes(e)||!u)&&i&&""!==i}).forEach(l=>{this.extendJson(l,n)}),n}extendJson(l,n){const e=this.form.getValue(l);n[{crushFailureDomain:"crush-failure-domain",crushRoot:"crush-root",crushDeviceClass:"crush-device-class",packetSize:"packetsize",crushLocality:"crush-locality"}[l]||l]="crushRoot"===l?e.name:e}}var S=e("DNAf");class D{constructor(l){this.erasureInfo=!1,this.crushInfo=!1,this.pgs=1,this.poolTypes=["erasure","replicated"],this.applications={selected:[],default:["cephfs","rbd","rgw"],available:[],validators:[t.B.pattern("[A-Za-z0-9_]+"),t.B.maxLength(128)],messages:new S.a({empty:l("No applications added"),selectionLimit:{text:l("Applications limit reached"),tooltip:l("A pool can only have up to four applications definitions.")},customValidations:{pattern:l("Allowed characters '_a-zA-Z0-9'"),maxlength:l("Maximum length is 128 characters")},filter:l("Filter or add applications"),add:l("Add application")},l)}}}class k{constructor(l,n,e,t,a,o,s,r,d,c,m,f,g){this.dimlessBinaryPipe=l,this.route=n,this.router=e,this.modalService=t,this.poolService=a,this.authStorageService=o,this.formatter=s,this.bsModalService=r,this.taskWrapper=d,this.ecpService=c,this.crushRuleService=m,this.i18n=f,this.actionLabels=g,this.editing=!1,this.isReplicated=!1,this.isErasure=!1,this.data=new D(this.i18n),this.externalPgChange=!1,this.current={rules:[]},this.initializeConfigData=new u.EventEmitter,this.currentConfigurationValues={},this.icons=h.a,this.crushUsage=void 0,this.ecpUsage=void 0,this.editing=this.router.url.startsWith(`/pool/${i.e.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("pool"),this.authenticate(),this.createForm()}authenticate(){this.permission=this.authStorageService.getPermissions().pool,(!this.permission.read||!this.permission.update&&this.editing||!this.permission.create&&!this.editing)&&this.router.navigate(["/404"])}createForm(){const l=new v.a({mode:new t.i("none"),algorithm:new t.i(""),minBlobSize:new t.i("",{updateOn:"blur"}),maxBlobSize:new t.i("",{updateOn:"blur"}),ratio:new t.i("",{updateOn:"blur"})});this.form=new v.a({name:new t.i("",{validators:[t.B.pattern(/^[.A-Za-z0-9_/-]+$/),t.B.required,b.a.custom("rbdPool",()=>this.form&&this.form.getValue("name").includes("/")&&this.data&&-1!==this.data.applications.selected.indexOf("rbd"))]}),poolType:new t.i("",{validators:[t.B.required]}),crushRule:new t.i(null,{validators:[b.a.custom("tooFewOsds",l=>this.info&&l&&this.info.osd_count<l.min_size),b.a.custom("required",l=>this.isReplicated&&this.info.crush_rules_replicated.length>0&&!l)]}),size:new t.i("",{updateOn:"blur"}),erasureProfile:new t.i(null),pgNum:new t.i("",{validators:[t.B.required,t.B.min(1)]}),pgAutoscaleMode:new t.i(null),ecOverwrites:new t.i(!1),compression:l,max_bytes:new t.i(""),max_objects:new t.i(0,{validators:[t.B.min(0)]})},[b.a.custom("form",()=>null)])}ngOnInit(){this.poolService.getInfo().subscribe(l=>{this.initInfo(l),this.editing?this.initEditMode():this.setAvailableApps(),this.listenToChanges(),this.setComplexValidators()})}initInfo(l){this.pgAutoscaleModes=l.pg_autoscale_modes,this.form.silentSet("pgAutoscaleMode",l.pg_autoscale_default_mode),this.form.silentSet("algorithm",l.bluestore_compression_algorithm),this.info=l,this.initEcp(l.erasure_code_profiles)}initEcp(l){this.setListControlStatus("erasureProfile",l),this.ecProfiles=l}setListControlStatus(l,n){const e=this.form.get(l),u=e.value;1!==n.length||u&&a.isEqual(u,n[0])?0===n.length&&u&&e.setValue(null):e.setValue(n[0]),n.length<=1?e.enabled&&e.disable():e.disabled&&e.enable()}initEditMode(){this.disableForEdit(),this.routeParamsSubscribe=this.route.params.subscribe(l=>this.poolService.get(l.name).subscribe(l=>{this.data.pool=l,this.initEditFormData(l)}))}disableForEdit(){["poolType","crushRule","size","erasureProfile","ecOverwrites"].forEach(l=>this.form.get(l).disable())}initEditFormData(l){this.initializeConfigData.emit({initialData:l.configuration,sourceType:C.a.pool}),this.poolTypeChange(l.type);const n=this.info.crush_rules_replicated.concat(this.info.crush_rules_erasure),e={name:l.pool_name,poolType:l.type,crushRule:n.find(n=>n.rule_name===l.crush_rule),size:l.size,erasureProfile:this.ecProfiles.find(n=>n.name===l.erasure_code_profile),pgAutoscaleMode:l.pg_autoscale_mode,pgNum:l.pg_num,ecOverwrites:l.flags_names.includes("ec_overwrites"),mode:l.options.compression_mode,algorithm:l.options.compression_algorithm,minBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_min_blob_size),maxBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_max_blob_size),ratio:l.options.compression_required_ratio,max_bytes:this.dimlessBinaryPipe.transform(l.quota_max_bytes),max_objects:l.quota_max_objects};Object.keys(e).forEach(l=>{const n=e[l];a.isUndefined(n)||""===n||this.form.silentSet(l,n)}),this.data.pgs=this.form.getValue("pgNum"),this.setAvailableApps(this.data.applications.default.concat(l.application_metadata)),this.data.applications.selected=l.application_metadata}setAvailableApps(l=this.data.applications.default){this.data.applications.available=a.uniq(l.sort()).map(l=>new p.a(!1,l,""))}listenToChanges(){this.listenToChangesDuringAddEdit(),this.editing||this.listenToChangesDuringAdd()}listenToChangesDuringAddEdit(){this.form.get("pgNum").valueChanges.subscribe(l=>{const n=l-this.data.pgs;1===Math.abs(n)&&2!==l?this.doPgPowerJump(n):this.data.pgs=l})}doPgPowerJump(l){const n=this.calculatePgPower()+l;this.setPgs(-1===l?Math.round(n):Math.floor(n))}calculatePgPower(l=this.form.getValue("pgNum")){return Math.log(l)/Math.log(2)}setPgs(l){const n=Math.pow(2,l<0?0:l);this.data.pgs=n,this.form.silentSet("pgNum",n)}listenToChangesDuringAdd(){this.form.get("poolType").valueChanges.subscribe(l=>{this.poolTypeChange(l)}),this.form.get("crushRule").valueChanges.subscribe(l=>{this.crushDeletionBtn&&this.crushDeletionBtn.isOpen&&this.crushDeletionBtn.hide(),l&&(this.setCorrectMaxSize(l),this.crushRuleIsUsedBy(l.rule_name),this.replicatedRuleChange(),this.pgCalc())}),this.form.get("size").valueChanges.subscribe(()=>{this.pgCalc()}),this.form.get("erasureProfile").valueChanges.subscribe(l=>{this.ecpDeletionBtn&&this.ecpDeletionBtn.isOpen&&this.ecpDeletionBtn.hide(),l&&(this.ecpIsUsedBy(l.name),this.pgCalc())}),this.form.get("mode").valueChanges.subscribe(()=>{["minBlobSize","maxBlobSize","ratio"].forEach(l=>{this.form.get(l).updateValueAndValidity({emitEvent:!1})})}),this.form.get("minBlobSize").valueChanges.subscribe(()=>{this.form.get("maxBlobSize").updateValueAndValidity({emitEvent:!1})}),this.form.get("maxBlobSize").valueChanges.subscribe(()=>{this.form.get("minBlobSize").updateValueAndValidity({emitEvent:!1})})}poolTypeChange(l){if("replicated"===l?this.setTypeBooleans(!0,!1):this.setTypeBooleans(!1,"erasure"===l),!l||!this.info)return void(this.current.rules=[]);const n=this.info["crush_rules_"+l]||[];this.current.rules=n,this.editing||(this.isReplicated&&this.setListControlStatus("crushRule",n),this.replicatedRuleChange(),this.pgCalc())}setTypeBooleans(l,n){this.isReplicated=l,this.isErasure=n}replicatedRuleChange(){if(!this.isReplicated)return;const l=this.form.get("size");let n=this.form.getValue("size")||3;const e=this.getMinSize(),u=this.getMaxSize();n<e?n=e:n>u&&(n=u),n!==l.value&&this.form.silentSet("size",n)}getMinSize(){if(!this.info||this.info.osd_count<1)return 0;const l=this.form.getValue("crushRule");return l?l.min_size:1}getMaxSize(){const l=this.form.getValue("crushRule");return this.info?l?l.usable_size:Math.min(this.info.osd_count,3):0}pgCalc(){const l=this.form.getValue("poolType");if(!this.info||this.form.get("pgNum").dirty||!l)return;const n=100*this.info.osd_count,e=this.isReplicated?this.replicatedPgCalc(n):this.erasurePgCalc(n);if(!e)return;const u=this.data.pgs;this.alignPgs(e),this.externalPgChange||(this.externalPgChange=u!==this.data.pgs)}setCorrectMaxSize(l=this.form.getValue("crushRule")){if(!l)return;const n=f.searchFailureDomains(this.info.nodes,l.steps[0].item_name)[l.steps[1].type];l.usable_size=Math.min(n?n.length:l.max_size,l.max_size)}replicatedPgCalc(l){const n=this.form.get("size"),e=n.value;return n.valid&&e>0?l/e:0}erasurePgCalc(l){const n=this.form.get("erasureProfile"),e=n.value;return(n.valid||n.disabled)&&e?l/(e.k+e.m):0}alignPgs(l=this.form.getValue("pgNum")){this.setPgs(Math.round(this.calculatePgPower(l<1?1:l)))}setComplexValidators(){this.editing?this.form.get("name").setValidators([this.form.get("name").validator,b.a.custom("uniqueName",l=>this.data.pool&&this.info&&-1!==this.info.pool_names.indexOf(l)&&this.info.pool_names.indexOf(l)!==this.info.pool_names.indexOf(this.data.pool.pool_name))]):(b.a.validateIf(this.form.get("size"),()=>this.isReplicated,[b.a.custom("min",l=>this.form.getValue("size")&&l<this.getMinSize()),b.a.custom("max",l=>this.form.getValue("size")&&this.getMaxSize()<l)]),this.form.get("name").setValidators([this.form.get("name").validator,b.a.custom("uniqueName",l=>this.info&&-1!==this.info.pool_names.indexOf(l))])),this.setCompressionValidators()}setCompressionValidators(){b.a.validateIf(this.form.get("minBlobSize"),()=>this.hasCompressionEnabled(),[t.B.min(0),b.a.custom("maximum",l=>this.oddBlobSize(l,this.form.getValue("maxBlobSize")))]),b.a.validateIf(this.form.get("maxBlobSize"),()=>this.hasCompressionEnabled(),[t.B.min(0),b.a.custom("minimum",l=>this.oddBlobSize(this.form.getValue("minBlobSize"),l))]),b.a.validateIf(this.form.get("ratio"),()=>this.hasCompressionEnabled(),[t.B.min(0),t.B.max(1)])}oddBlobSize(l,n){const e=this.formatter.toBytes(l),u=this.formatter.toBytes(n);return Boolean(e&&u&&e>=u)}hasCompressionEnabled(){return this.form.getValue("mode")&&"none"!==this.form.get("mode").value.toLowerCase()}describeCrushStep(l){return[l.op.replace("_"," "),l.item_name||"",l.type?l.num+" type "+l.type:""].join(" ")}addErasureCodeProfile(){this.addModal(_,l=>this.reloadECPs(l))}addModal(l,n){this.hideOpenTooltips(),this.bsModalService.show(l).content.submitAction.subscribe(l=>{n(l.name)})}hideOpenTooltips(){const l=l=>l&&l.isOpen&&l.hide();l(this.ecpDeletionBtn),l(this.crushDeletionBtn)}reloadECPs(l){this.reloadList({newItemName:l,getInfo:()=>this.ecpService.list(),initInfo:l=>this.initEcp(l),findNewItem:()=>this.ecProfiles.find(n=>n.name===l),controlName:"erasureProfile"})}reloadList({newItemName:l,getInfo:n,initInfo:e,findNewItem:u,controlName:i}){this.modalSubscription&&this.modalSubscription.unsubscribe(),n().subscribe(n=>{if(e(n),!l)return;const t=u();t&&this.form.get(i).setValue(t)})}deleteErasureCodeProfile(){this.deletionModal({value:this.form.getValue("erasureProfile"),usage:this.ecpUsage,deletionBtn:this.ecpDeletionBtn,dataName:"erasureInfo",getTabs:()=>this.ecpInfoTabs,tabPosition:1,nameAttribute:"name",itemDescription:this.i18n("erasure code profile"),reloadFn:()=>this.reloadECPs(),deleteFn:l=>this.ecpService.delete(l),taskName:"ecp/delete"})}deletionModal({value:l,usage:n,deletionBtn:e,dataName:u,getTabs:i,tabPosition:t,nameAttribute:a,itemDescription:o,reloadFn:s,deleteFn:r,taskName:d}){if(!l)return;if(n)return e.toggle(),this.data[u]=!0,void setTimeout(()=>{const l=i();l&&(l.tabs[t].active=!0)},50);const c=l[a];this.modalService.show(g.a,{initialState:{itemDescription:o,itemNames:[c],submitActionObservable:()=>{const l=r(c);return l.subscribe(()=>s()),this.taskWrapper.wrapTaskAroundCall({task:new R.a(d,{name:c}),call:l})}}})}addCrushRule(){this.addModal(w,l=>this.reloadCrushRules(l))}reloadCrushRules(l){this.reloadList({newItemName:l,getInfo:()=>this.poolService.getInfo(),initInfo:l=>{this.initInfo(l),this.poolTypeChange("replicated")},findNewItem:()=>this.info.crush_rules_replicated.find(n=>n.rule_name===l),controlName:"crushRule"})}deleteCrushRule(){this.deletionModal({value:this.form.getValue("crushRule"),usage:this.crushUsage,deletionBtn:this.crushDeletionBtn,dataName:"crushInfo",getTabs:()=>this.crushInfoTabs,tabPosition:2,nameAttribute:"rule_name",itemDescription:this.i18n("crush rule"),reloadFn:()=>this.reloadCrushRules(),deleteFn:l=>this.crushRuleService.delete(l),taskName:"crushRule/delete"})}crushRuleIsUsedBy(l){this.crushUsage=l?this.info.used_rules[l]:void 0}ecpIsUsedBy(l){this.ecpUsage=l?this.info.used_profiles[l]:void 0}submit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const l={pool:this.form.getValue("name")};this.assignFormFields(l,[{externalFieldName:"pool_type",formControlName:"poolType"},{externalFieldName:"pg_autoscale_mode",formControlName:"pgAutoscaleMode",editable:!0},{externalFieldName:"pg_num",formControlName:"pgNum",replaceFn:l=>"on"===this.form.getValue("pgAutoscaleMode")?1:l,editable:!0},this.isReplicated?{externalFieldName:"size",formControlName:"size"}:{externalFieldName:"erasure_code_profile",formControlName:"erasureProfile",attr:"name"},{externalFieldName:"rule_name",formControlName:"crushRule",replaceFn:l=>this.isReplicated?l&&l.rule_name:void 0},{externalFieldName:"quota_max_bytes",formControlName:"max_bytes",replaceFn:this.formatter.toBytes,editable:!0,resetValue:this.editing?0:void 0},{externalFieldName:"quota_max_objects",formControlName:"max_objects",editable:!0,resetValue:this.editing?0:void 0}]),this.info.is_all_bluestore&&(this.assignFormField(l,{externalFieldName:"flags",formControlName:"ecOverwrites",replaceFn:()=>this.isErasure?["ec_overwrites"]:void 0}),"none"!==this.form.getValue("mode")?this.assignFormFields(l,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:l=>this.hasCompressionEnabled()&&l},{externalFieldName:"compression_algorithm",formControlName:"algorithm",editable:!0},{externalFieldName:"compression_min_blob_size",formControlName:"minBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_max_blob_size",formControlName:"maxBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_required_ratio",formControlName:"ratio",editable:!0,resetValue:0}]):this.editing&&this.assignFormFields(l,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:()=>"unset"},{externalFieldName:"srcpool",formControlName:"name",editable:!0,replaceFn:()=>this.data.pool.pool_name}]));const n=this.data.applications.selected;(n.length>0||this.editing)&&(l.application_metadata=n),this.isReplicated&&!a.isEmpty(this.currentConfigurationValues)&&(l.configuration=this.currentConfigurationValues),this.triggerApiTask(l)}assignFormFields(l,n){n.forEach(n=>this.assignFormField(l,n))}assignFormField(l,{externalFieldName:n,formControlName:e,attr:u,replaceFn:i,editable:t,resetValue:o}){if(this.editing&&(!t||this.form.get(e).pristine))return;const s=this.form.getValue(e);let r=i?i(s):u?a.get(s,u):s;if(!s||!r){if(!t||a.isUndefined(o))return;r=o}l[n]=r}triggerApiTask(l){this.taskWrapper.wrapTaskAroundCall({task:new R.a("pool/"+(this.editing?i.e.EDIT:i.e.CREATE),{pool_name:l.hasOwnProperty("srcpool")?l.srcpool:l.pool}),call:this.poolService[this.editing?i.e.UPDATE:i.e.CREATE](l)}).subscribe(void 0,l=>{a.isObject(l.error)&&"34"===l.error.code&&this.form.get("pgNum").setErrors({34:!0}),this.form.setErrors({cdSubmitButton:!0})},()=>this.router.navigate(["/pool"]))}appSelection(){this.form.get("name").updateValueAndValidity({emitEvent:!1,onlySelf:!0})}}var q=e("MuvH"),x=e("+fVR"),F=e("uIqm"),P=e("x38r"),A=e("yJti"),B=e("vCyI"),O=e("o4+5"),z=e("VTlA"),L=e("EgGo"),j=e("d+Og");class U{constructor(l){this.pool_name=l}}const M=new L.a("pool");class G extends x.a{constructor(l,n,e,u,i,t,o,s,r,d,c){super(),this.poolService=l,this.taskWrapper=n,this.authStorageService=e,this.taskListService=u,this.modalService=i,this.i18n=t,this.pgCategoryService=o,this.dimlessPipe=s,this.urlBuilder=r,this.configurationService=d,this.actionLabels=c,this.selection=new B.a,this.executingTasks=[],this.cacheTiers=[],this.monAllowPoolDelete=!1,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:h.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:h.a.edit,routerLink:()=>this.urlBuilder.getEdit(encodeURIComponent(this.selection.first().pool_name)),name:this.actionLabels.EDIT},{permission:"delete",icon:h.a.destroy,click:()=>this.deletePoolModal(),name:this.actionLabels.DELETE,disable:()=>!this.selection.first()||!this.monAllowPoolDelete,disableDesc:()=>this.getDisableDesc()}],this.permissions.configOpt.read&&this.configurationService.get("mon_allow_pool_delete").subscribe(l=>{if(a.has(l,"value")){const n=a.find(l.value,l=>"mon"===l.section)||{value:!1};this.monAllowPoolDelete="true"===n.value}})}ngOnInit(){const l=(l,n,e)=>a.get(n,l)>a.get(e,l)?1:-1;this.columns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:4,cellTransformation:P.a.executing},{prop:"type",name:this.i18n("Type"),flexGrow:2},{prop:"application_metadata",name:this.i18n("Applications"),flexGrow:3},{prop:"pg_status",name:this.i18n("PG Status"),flexGrow:3,cellClass:({row:l,column:n,value:e})=>this.getPgStatusCellClass(l,n,e)},{prop:"size",name:this.i18n("Replica Size"),flexGrow:2,cellClass:"text-right"},{prop:"last_change",name:this.i18n("Last Change"),flexGrow:2,cellClass:"text-right"},{prop:"erasure_code_profile",name:this.i18n("Erasure Coded Profile"),flexGrow:2},{prop:"crush_rule",name:this.i18n("Crush Ruleset"),flexGrow:3},{name:this.i18n("Usage"),prop:"usage",cellTemplate:this.poolUsageTpl,flexGrow:3},{prop:"stats.rd_bytes.rates",name:this.i18n("Read bytes"),comparator:(n,e,u,i)=>l("stats.rd_bytes.latest",u,i),cellTransformation:P.a.sparkline,flexGrow:3},{prop:"stats.wr_bytes.rates",name:this.i18n("Write bytes"),comparator:(n,e,u,i)=>l("stats.wr_bytes.latest",u,i),cellTransformation:P.a.sparkline,flexGrow:3},{prop:"stats.rd.rate",name:this.i18n("Read ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:P.a.perSecond},{prop:"stats.wr.rate",name:this.i18n("Write ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:P.a.perSecond}],this.taskListService.init(()=>this.poolService.getList(),void 0,l=>this.pools=this.transformPoolsData(l),()=>{this.table.reset(),this.viewCacheStatusList=[{status:A.a.ValueException}]},l=>l.name.startsWith("pool/"),(l,n)=>n.metadata.pool_name===l.pool_name,{default:l=>new U(l.pool_name)})}updateSelection(l){this.selection=l}deletePoolModal(){const l=this.selection.first().pool_name;this.modalRef=this.modalService.show(g.a,{initialState:{itemDescription:"Pool",itemNames:[l],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new R.a(`pool/${i.e.DELETE}`,{pool_name:l}),call:this.poolService.delete(l)})}})}getPgStatusCellClass(l,n,e){return{"text-right":!0,[`pg-${this.pgCategoryService.getTypeByStates(e)}`]:!0}}transformPoolsData(l){const n=["bytes_used","max_avail","avail_raw","percent_used","rd_bytes","wr_bytes","rd","wr"],e={latest:0,rate:0,rates:[]};return a.forEach(l,l=>{l.pg_status=this.transformPgStatus(l.pg_status);const u={};a.forEach(n,n=>{u[n]=l.stats&&l.stats[n]?l.stats[n]:e}),l.stats=u,l.usage=u.percent_used.latest,l.cdExecuting||l.pg_num+l.pg_placement_num===l.pg_num_target+l.pg_placement_num_target||(l.cdExecuting="Updating"),["rd_bytes","wr_bytes"].forEach(n=>{l.stats[n].rates=l.stats[n].rates.map(l=>l[1])}),l.cdIsBinary=!0}),l}transformPgStatus(l){const n=[];return a.forEach(l,(l,e)=>{n.push(`${l} ${e}`)}),n.join(", ")}getSelectionTiers(){if(void 0!==this.expandedRow){const l=this.expandedRow.tiers;this.cacheTiers=this.pools.filter(n=>l.includes(n.pool))}}getDisableDesc(){if(!this.monAllowPoolDelete)return this.i18n("Pool deletion is disabled by the mon_allow_pool_delete configuration setting.")}setExpandedRow(l){super.setExpandedRow(l),this.getSelectionTiers()}}class ${}const K={breadcrumbs:i.a.CREATE},J={breadcrumbs:i.a.EDIT};class W{}var Z=e("iutN"),H=e("MdoF"),X=e("ES0t"),Y=e("Xg1U"),Q=e("z5nN"),ll=e("pMnS"),nl=e("EEJc"),el=e("PEr+"),ul=e("a40w"),il=e("hfeG"),tl=e("QUzE"),al=e("E7j4"),ol=e("xvu0"),sl=e("RIVN"),rl=e("nP0W"),dl=e("VBM6"),cl=e("atuK"),ml=e("JIi+"),fl=e("0BYw"),gl=e("3IYD"),pl=e("I4Qz"),hl=e("0rTx"),vl=e("lz+O"),bl=e("u2XS"),Cl=e("nhAp"),Rl=e("l7Jr"),Il=e("bUo2"),El=e("SVse"),Nl=e("8xTl"),yl=e("ajRT"),Vl=e("+gVj"),wl=e("mXUL"),Tl=e("IZUe"),_l=e("4HWh"),Sl=e("p4Cf"),Dl=e("gp3X"),kl=e("sb0X"),ql=e("KVJa"),xl=e("Z21x"),Fl=e("LqlI"),Pl=u["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Al(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Bl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The name can only consist of alphanumeric characters, dashes and underscores."]))],null,null)}function Ol(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The chosen erasure code profile name is already in use."]))],null,null)}function zl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Ll(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function jl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Ul(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Ml(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," ( "," ) "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit,n.component.failureDomains[n.context.$implicit].length)}))}function Gl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function $l(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Kl(l){return u["ɵvid"](0,[u["ɵpid"](0,El.TitleCasePipe,[]),u["ɵpid"](0,Nl.a,[]),(l()(),u["ɵeld"](2,0,null,null,115,"cd-modal",[],null,null,null,nl.c,nl.b)),u["ɵdid"](3,49152,null,0,yl.a,[],{modalRef:[0,"modalRef"]},null),(l()(),u["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),u["ɵted"](5,null,[""," ",""])),u["ɵppd"](6,1),u["ɵppd"](7,1),(l()(),u["ɵeld"](8,0,null,1,109,null,null,null,null,null,null,null)),(l()(),u["ɵeld"](9,0,null,null,108,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==u["ɵnov"](l,11).onSubmit(e)&&i),"reset"===n&&(i=!1!==u["ɵnov"](l,11).onReset()&&i),"submit"===n&&(i=!1!==u["ɵnov"](l,14).onSubmit()&&i),i}),null,null)),u["ɵdid"](10,16384,null,0,t.G,[],null,null),u["ɵdid"](11,540672,[["frm",4]],0,t.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["ɵprd"](2048,null,t.d,null,[t.l]),u["ɵdid"](13,16384,null,0,t.s,[[4,t.d]],null,null),u["ɵdid"](14,16384,null,0,Vl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),u["ɵeld"](15,0,null,null,94,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),u["ɵeld"](16,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](17,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,1,{FormControlNames:1}),u["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),u["ɵeld"](20,0,null,0,3,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),u["ɵeld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Name"])),(l()(),u["ɵeld"](23,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵeld"](24,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](25,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,27)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,27).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,27)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,27)._compositionEnd(e.target.value)&&i),i}),null,null)),u["ɵdid"](26,4210688,null,0,Tl.a,[u.ElementRef],{autofocus:[0,"autofocus"]},null),u["ɵdid"](27,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.e]),u["ɵdid"](29,671744,[[1,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](31,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](32,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Al)),u["ɵdid"](34,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Bl)),u["ɵdid"](36,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ol)),u["ɵdid"](38,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](39,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](40,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,3,{FormControlNames:1}),u["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),u["ɵeld"](43,0,null,0,5,"label",[["class","cd-col-form-label"],["for","root"]],null,null,null,null,null)),(l()(),u["ɵeld"](44,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Root"])),(l()(),u["ɵeld"](46,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](47,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](48,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵeld"](49,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](50,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","root"],["id","root"],["name","root"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,51).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,51).onTouched()&&i),i}),null,null)),u["ɵdid"](51,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](53,671744,[[3,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](55,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](56,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,zl)),u["ɵdid"](58,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ll)),u["ɵdid"](60,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,jl)),u["ɵdid"](62,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](63,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](64,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,5,{FormControlNames:1}),u["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),u["ɵeld"](67,0,null,0,5,"label",[["class","cd-col-form-label"],["for","failure_domain"]],null,null,null,null,null)),(l()(),u["ɵeld"](68,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Failure domain type"])),(l()(),u["ɵeld"](70,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](71,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](72,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵeld"](73,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](74,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","failure_domain"],["id","failure_domain"],["name","failure_domain"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,75).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,75).onTouched()&&i),i}),null,null)),u["ɵdid"](75,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](77,671744,[[5,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](79,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](80,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ul)),u["ɵdid"](82,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ml)),u["ɵdid"](84,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Gl)),u["ɵdid"](86,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](87,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](88,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,7,{FormControlNames:1}),u["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),u["ɵeld"](91,0,null,0,4,"label",[["class","cd-col-form-label"],["for","device_class"]],null,null,null,null,null)),(l()(),u["ɵeld"](92,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Device class"])),(l()(),u["ɵeld"](94,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](95,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](96,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](97,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","device_class"],["id","device_class"],["name","device_class"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,98).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,98).onTouched()&&i),i}),null,null)),u["ɵdid"](98,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](100,671744,[[7,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](102,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](103,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](104,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](105,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](106,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Let Ceph decide"])),(l()(),u["ɵand"](16777216,null,null,1,null,$l)),u["ɵdid"](109,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](110,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),u["ɵeld"](111,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.onSubmit()&&u),u}),Dl.b,Dl.a)),u["ɵdid"](112,114688,null,0,kl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["ɵted"](113,0,[""," ",""])),u["ɵppd"](114,1),u["ɵppd"](115,1),(l()(),u["ɵeld"](116,0,null,null,1,"cd-back-button",[],null,null,null,ql.b,ql.a)),u["ɵdid"](117,49152,null,0,xl.a,[El.Location,i.b],{back:[0,"back"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.bsModalRef),l(n,11,0,e.form),l(n,14,0,e.form),l(n,17,0),l(n,26,0,""),l(n,29,0,"name"),l(n,32,0,"name"),l(n,34,0,e.form.showError("name",u["ɵnov"](n,11),"required")),l(n,36,0,e.form.showError("name",u["ɵnov"](n,11),"pattern")),l(n,38,0,e.form.showError("name",u["ɵnov"](n,11),"uniqueName")),l(n,40,0),l(n,47,0,e.tooltips.root),l(n,53,0,"root"),l(n,56,0,"root"),l(n,58,0,!e.buckets),l(n,60,0,e.buckets),l(n,62,0,e.form.showError("root",u["ɵnov"](n,11),"required")),l(n,64,0),l(n,71,0,e.tooltips.failure_domain),l(n,77,0,"failure_domain"),l(n,80,0,"failure_domain"),l(n,82,0,!e.failureDomains),l(n,84,0,e.failureDomainKeys),l(n,86,0,e.form.showError("failure_domain",u["ɵnov"](n,11),"required")),l(n,88,0),l(n,95,0,e.tooltips.device_class),l(n,100,0,"device_class"),l(n,103,0,"device_class"),l(n,105,0,""),l(n,106,0,""),l(n,109,0,e.devices),l(n,112,0,u["ɵnov"](n,11)),l(n,117,0,e.bsModalRef.hide)}),(function(l,n){var e=n.component,i=u["ɵunv"](n,5,0,l(n,6,0,u["ɵnov"](n,0),e.action)),t=u["ɵunv"](n,5,1,l(n,7,0,u["ɵnov"](n,1),e.resource));l(n,5,0,i,t),l(n,9,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending),l(n,16,0,u["ɵnov"](n,17).hasErrors,u["ɵnov"](n,17).hasSuccess),l(n,25,0,u["ɵnov"](n,31).ngClassUntouched,u["ɵnov"](n,31).ngClassTouched,u["ɵnov"](n,31).ngClassPristine,u["ɵnov"](n,31).ngClassDirty,u["ɵnov"](n,31).ngClassValid,u["ɵnov"](n,31).ngClassInvalid,u["ɵnov"](n,31).ngClassPending,u["ɵnov"](n,32).validClass,u["ɵnov"](n,32).invalidClass),l(n,39,0,u["ɵnov"](n,40).hasErrors,u["ɵnov"](n,40).hasSuccess),l(n,50,0,u["ɵnov"](n,55).ngClassUntouched,u["ɵnov"](n,55).ngClassTouched,u["ɵnov"](n,55).ngClassPristine,u["ɵnov"](n,55).ngClassDirty,u["ɵnov"](n,55).ngClassValid,u["ɵnov"](n,55).ngClassInvalid,u["ɵnov"](n,55).ngClassPending,u["ɵnov"](n,56).validClass,u["ɵnov"](n,56).invalidClass),l(n,63,0,u["ɵnov"](n,64).hasErrors,u["ɵnov"](n,64).hasSuccess),l(n,74,0,u["ɵnov"](n,79).ngClassUntouched,u["ɵnov"](n,79).ngClassTouched,u["ɵnov"](n,79).ngClassPristine,u["ɵnov"](n,79).ngClassDirty,u["ɵnov"](n,79).ngClassValid,u["ɵnov"](n,79).ngClassInvalid,u["ɵnov"](n,79).ngClassPending,u["ɵnov"](n,80).validClass,u["ɵnov"](n,80).invalidClass),l(n,87,0,u["ɵnov"](n,88).hasErrors,u["ɵnov"](n,88).hasSuccess),l(n,97,0,u["ɵnov"](n,102).ngClassUntouched,u["ɵnov"](n,102).ngClassTouched,u["ɵnov"](n,102).ngClassPristine,u["ɵnov"](n,102).ngClassDirty,u["ɵnov"](n,102).ngClassValid,u["ɵnov"](n,102).ngClassInvalid,u["ɵnov"](n,102).ngClassPending,u["ɵnov"](n,103).validClass,u["ɵnov"](n,103).invalidClass);var a=u["ɵunv"](n,113,0,l(n,114,0,u["ɵnov"](n,0),e.action)),o=u["ɵunv"](n,113,1,l(n,115,0,u["ɵnov"](n,1),e.resource));l(n,113,0,a,o)}))}function Jl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-crush-rule-form-modal",[],null,null,null,Kl,Pl)),u["ɵdid"](1,114688,null,0,w,[V.a,Fl.a,y.a,d,s.a,i.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Wl=u["ɵccf"]("cd-crush-rule-form-modal",w,Jl,{},{submitAction:"submitAction"},[]),Zl=u["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Hl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Xl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The name can only consist of alphanumeric characters, dashes and underscores."]))],null,null)}function Yl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The chosen erasure code profile name is already in use."]))],null,null)}function Ql(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function ln(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function nn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function en(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function un(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 2."]))],null,null)}function tn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["Chunks (k+m) have exceeded the available OSDs of ","."]))],null,(function(l,n){l(n,1,0,n.component.deviceCount)}))}function an(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["For an equal distribution k has to be a multiple of (k+m)/l."]))],null,null)}function on(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["K has to be equal to or greater than m in order to recover data correctly through c."]))],null,null)}function sn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["Distribution factor: ",""]))],null,(function(l,n){l(n,1,0,n.component.lrcMultiK)}))}function rn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function dn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function cn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["Chunks (k+m) have exceeded the available OSDs of ","."]))],null,(function(l,n){l(n,1,0,n.component.deviceCount)}))}function mn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function fn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["C has to be equal to or lower than m as m defines the amount of chunks that can be used."]))],null,null)}function gn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,9,{FormControlNames:1}),u["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","c"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Durability estimator (c)"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","c"],["id","c"],["name","c"],["placeholder","Coding chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,11)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,11).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,11)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,11)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,12).onTouched()&&i),i}),null,null)),u["ɵdid"](11,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](12,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](14,671744,[[9,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](16,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](17,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,mn)),u["ɵdid"](19,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,fn)),u["ɵdid"](21,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.shec.c),l(n,14,0,"c"),l(n,17,0,"c"),l(n,19,0,e.form.showError("c",u["ɵnov"](n.parent,11),"min")),l(n,21,0,e.form.showError("c",u["ɵnov"](n.parent,11),"cGreaterM"))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,16).ngClassUntouched,u["ɵnov"](n,16).ngClassTouched,u["ɵnov"](n,16).ngClassPristine,u["ɵnov"](n,16).ngClassDirty,u["ɵnov"](n,16).ngClassValid,u["ɵnov"](n,16).ngClassInvalid,u["ɵnov"](n,16).ngClassPending,u["ɵnov"](n,17).validClass,u["ɵnov"](n,17).invalidClass)}))}function pn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function hn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function vn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Can't split up chunks (k+m) correctly with the current locality."]))],null,null)}function bn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,11,{FormControlNames:1}),u["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","l"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Locality (l)"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","l"],["id","l"],["name","l"],["placeholder","Coding chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,11)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,11).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,11)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,11)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,12).onTouched()&&i),i}),null,null)),u["ɵdid"](11,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](12,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](14,671744,[[11,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](16,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](17,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,pn)),u["ɵdid"](19,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,hn)),u["ɵdid"](21,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,vn)),u["ɵdid"](23,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](24,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](25,null,["Locality groups: ",""]))],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.lrc.l),l(n,14,0,"l"),l(n,17,0,"l"),l(n,19,0,e.form.showError("l",u["ɵnov"](n.parent,11),"required")),l(n,21,0,e.form.showError("l",u["ɵnov"](n.parent,11),"min")),l(n,23,0,e.form.showError("l",u["ɵnov"](n.parent,11),"unequal"))}),(function(l,n){var e=n.component;l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,16).ngClassUntouched,u["ɵnov"](n,16).ngClassTouched,u["ɵnov"](n,16).ngClassPristine,u["ɵnov"](n,16).ngClassDirty,u["ɵnov"](n,16).ngClassValid,u["ɵnov"](n,16).ngClassInvalid,u["ɵnov"](n,16).ngClassPending,u["ɵnov"](n,17).validClass,u["ɵnov"](n,17).invalidClass),l(n,25,0,e.lrcGroups)}))}function Cn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Rn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," ( "," ) "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit,n.component.failureDomains[n.context.$implicit].length)}))}function In(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function En(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["None"]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Nn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," ( "," ) "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit,n.component.failureDomains[n.context.$implicit].length)}))}function yn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,15,{FormControlNames:1}),u["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushLocality"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush Locality"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","crushLocality"],["id","crushLocality"],["name","crushLocality"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,11).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,11).onTouched()&&i),i}),null,null)),u["ɵdid"](11,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](13,671744,[[15,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](15,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](16,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,In)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,En)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Nn)),u["ɵdid"](22,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.lrc.crushLocality),l(n,13,0,"crushLocality"),l(n,16,0,"crushLocality"),l(n,18,0,!e.failureDomains),l(n,20,0,e.failureDomainKeys.length>0),l(n,22,0,e.failureDomainKeys)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,15).ngClassUntouched,u["ɵnov"](n,15).ngClassTouched,u["ɵnov"](n,15).ngClassPristine,u["ɵnov"](n,15).ngClassDirty,u["ɵnov"](n,15).ngClassValid,u["ɵnov"](n,15).ngClassInvalid,u["ɵnov"](n,15).ngClassPending,u["ɵnov"](n,16).validClass,u["ɵnov"](n,16).invalidClass)}))}function Vn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function wn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,17,{FormControlNames:1}),u["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","technique"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Technique"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","technique"],["id","technique"],["name","technique"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,11).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,11).onTouched()&&i),i}),null,null)),u["ɵdid"](11,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](13,671744,[[17,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](15,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](16,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Vn)),u["ɵdid"](18,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins[e.plugin].technique),l(n,13,0,"technique"),l(n,16,0,"technique"),l(n,18,0,e.techniques)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,15).ngClassUntouched,u["ɵnov"](n,15).ngClassTouched,u["ɵnov"](n,15).ngClassPristine,u["ɵnov"](n,15).ngClassDirty,u["ɵnov"](n,15).ngClassValid,u["ɵnov"](n,15).ngClassInvalid,u["ɵnov"](n,15).ngClassPending,u["ɵnov"](n,16).validClass,u["ɵnov"](n,16).invalidClass)}))}function Tn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function _n(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,19,{FormControlNames:1}),u["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","packetSize"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Packetsize"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","packetSize"],["id","packetSize"],["name","packetSize"],["placeholder","Packetsize..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,11)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,11).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,11)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,11)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,12).onTouched()&&i),i}),null,null)),u["ɵdid"](11,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](12,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](14,671744,[[19,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](16,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](17,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Tn)),u["ɵdid"](19,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.jerasure.packetSize),l(n,14,0,"packetSize"),l(n,17,0,"packetSize"),l(n,19,0,e.form.showError("packetSize",u["ɵnov"](n.parent,11),"min"))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,16).ngClassUntouched,u["ɵnov"](n,16).ngClassTouched,u["ɵnov"](n,16).ngClassPristine,u["ɵnov"](n,16).ngClassDirty,u["ɵnov"](n,16).ngClassValid,u["ɵnov"](n,16).ngClassInvalid,u["ɵnov"](n,16).ngClassPending,u["ɵnov"](n,17).validClass,u["ɵnov"](n,17).invalidClass)}))}function Sn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Dn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function kn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function qn(l){return u["ɵvid"](0,[u["ɵpid"](0,El.TitleCasePipe,[]),u["ɵpid"](0,Nl.a,[]),(l()(),u["ɵeld"](2,0,null,null,214,"cd-modal",[],null,null,null,nl.c,nl.b)),u["ɵdid"](3,49152,null,0,yl.a,[],{modalRef:[0,"modalRef"]},null),(l()(),u["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),u["ɵted"](5,null,[""," ",""])),u["ɵppd"](6,1),u["ɵppd"](7,1),(l()(),u["ɵeld"](8,0,null,1,208,null,null,null,null,null,null,null)),(l()(),u["ɵeld"](9,0,null,null,207,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==u["ɵnov"](l,11).onSubmit(e)&&i),"reset"===n&&(i=!1!==u["ɵnov"](l,11).onReset()&&i),"submit"===n&&(i=!1!==u["ɵnov"](l,14).onSubmit()&&i),i}),null,null)),u["ɵdid"](10,16384,null,0,t.G,[],null,null),u["ɵdid"](11,540672,[["frm",4]],0,t.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["ɵprd"](2048,null,t.d,null,[t.l]),u["ɵdid"](13,16384,null,0,t.s,[[4,t.d]],null,null),u["ɵdid"](14,16384,null,0,Vl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),u["ɵeld"](15,0,null,null,193,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),u["ɵeld"](16,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](17,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,1,{FormControlNames:1}),u["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),u["ɵeld"](20,0,null,0,1,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Name"])),(l()(),u["ɵeld"](22,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](23,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,25)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,25).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,25)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,25)._compositionEnd(e.target.value)&&i),i}),null,null)),u["ɵdid"](24,4210688,null,0,Tl.a,[u.ElementRef],{autofocus:[0,"autofocus"]},null),u["ɵdid"](25,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.e]),u["ɵdid"](27,671744,[[1,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](29,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](30,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Hl)),u["ɵdid"](32,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Xl)),u["ɵdid"](34,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Yl)),u["ɵdid"](36,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](37,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](38,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,3,{FormControlNames:1}),u["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),u["ɵeld"](41,0,null,0,4,"label",[["class","cd-col-form-label"],["for","plugin"]],null,null,null,null,null)),(l()(),u["ɵeld"](42,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Plugin"])),(l()(),u["ɵeld"](44,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](45,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](46,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](47,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","plugin"],["id","plugin"],["name","plugin"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,48).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,48).onTouched()&&i),i}),null,null)),u["ɵdid"](48,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](50,671744,[[3,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](52,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](53,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ql)),u["ɵdid"](55,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ln)),u["ɵdid"](57,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,nn)),u["ɵdid"](59,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](60,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](61,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,5,{FormControlNames:1}),u["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),u["ɵeld"](64,0,null,0,4,"label",[["class","cd-col-form-label"],["for","k"]],null,null,null,null,null)),(l()(),u["ɵeld"](65,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Data chunks (k)"])),(l()(),u["ɵeld"](67,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](68,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](69,0,null,0,20,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](70,0,null,null,7,"input",[["class","form-control"],["formControlName","k"],["id","k"],["name","k"],["ng-model","$ctrl.erasureCodeProfile.k"],["placeholder","Data chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,71)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,71).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,71)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,71)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,72).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,72).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,72).onTouched()&&i),i}),null,null)),u["ɵdid"](71,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](72,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](74,671744,[[5,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](76,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](77,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,en)),u["ɵdid"](79,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,un)),u["ɵdid"](81,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,tn)),u["ɵdid"](83,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,an)),u["ɵdid"](85,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,on)),u["ɵdid"](87,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,sn)),u["ɵdid"](89,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](90,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](91,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,7,{FormControlNames:1}),u["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),u["ɵeld"](94,0,null,0,4,"label",[["class","cd-col-form-label"],["for","m"]],null,null,null,null,null)),(l()(),u["ɵeld"](95,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Coding chunks (m)"])),(l()(),u["ɵeld"](97,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](98,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](99,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](100,0,null,null,7,"input",[["class","form-control"],["formControlName","m"],["id","m"],["name","m"],["placeholder","Coding chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,101)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,101).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,101)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,101)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,102).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,102).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,102).onTouched()&&i),i}),null,null)),u["ɵdid"](101,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](102,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](104,671744,[[7,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](106,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](107,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,rn)),u["ɵdid"](109,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,dn)),u["ɵdid"](111,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,cn)),u["ɵdid"](113,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,gn)),u["ɵdid"](115,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,bn)),u["ɵdid"](117,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](118,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](119,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,13,{FormControlNames:1}),u["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),u["ɵeld"](122,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushFailureDomain"]],null,null,null,null,null)),(l()(),u["ɵeld"](123,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush failure domain"])),(l()(),u["ɵeld"](125,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](126,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](127,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](128,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","crushFailureDomain"],["id","crushFailureDomain"],["name","crushFailureDomain"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,129).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,129).onTouched()&&i),i}),null,null)),u["ɵdid"](129,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](131,671744,[[13,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](133,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](134,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Cn)),u["ɵdid"](136,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Rn)),u["ɵdid"](138,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,yn)),u["ɵdid"](140,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,2,null,wn)),u["ɵdid"](142,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),u["ɵpad"](143,2),(l()(),u["ɵand"](16777216,null,null,1,null,_n)),u["ɵdid"](145,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](146,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](147,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,21,{FormControlNames:1}),u["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),u["ɵeld"](150,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushRoot"]],null,null,null,null,null)),(l()(),u["ɵeld"](151,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush root"])),(l()(),u["ɵeld"](153,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](154,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](155,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](156,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","crushRoot"],["id","crushRoot"],["name","crushRoot"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,157).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,157).onTouched()&&i),i}),null,null)),u["ɵdid"](157,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](159,671744,[[21,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](161,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](162,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Sn)),u["ɵdid"](164,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Dn)),u["ɵdid"](166,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](167,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](168,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,23,{FormControlNames:1}),u["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),u["ɵeld"](171,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushDeviceClass"]],null,null,null,null,null)),(l()(),u["ɵeld"](172,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush device class"])),(l()(),u["ɵeld"](174,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](175,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](176,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](177,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","crushDeviceClass"],["id","crushDeviceClass"],["name","crushDeviceClass"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,178).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,178).onTouched()&&i),i}),null,null)),u["ɵdid"](178,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](180,671744,[[23,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](182,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](183,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](184,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](185,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](186,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Let Ceph decide"])),(l()(),u["ɵand"](16777216,null,null,1,null,kn)),u["ɵdid"](189,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](190,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](191,null,["Available OSDs: ",""])),(l()(),u["ɵeld"](192,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](193,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,25,{FormControlNames:1}),u["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),u["ɵeld"](196,0,null,0,4,"label",[["class","cd-col-form-label"],["for","directory"]],null,null,null,null,null)),(l()(),u["ɵeld"](197,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Directory"])),(l()(),u["ɵeld"](199,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](200,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](201,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](202,0,null,null,6,"input",[["class","form-control"],["formControlName","directory"],["id","directory"],["name","directory"],["placeholder","Path..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,203)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,203).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,203)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,203)._compositionEnd(e.target.value)&&i),i}),null,null)),u["ɵdid"](203,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.e]),u["ɵdid"](205,671744,[[25,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](207,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](208,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](209,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),u["ɵeld"](210,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.onSubmit()&&u),u}),Dl.b,Dl.a)),u["ɵdid"](211,114688,null,0,kl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["ɵted"](212,0,[""," ",""])),u["ɵppd"](213,1),u["ɵppd"](214,1),(l()(),u["ɵeld"](215,0,null,null,1,"cd-back-button",[],null,null,null,ql.b,ql.a)),u["ɵdid"](216,49152,null,0,xl.a,[El.Location,i.b],{back:[0,"back"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.bsModalRef),l(n,11,0,e.form),l(n,14,0,e.form),l(n,17,0),l(n,24,0,""),l(n,27,0,"name"),l(n,30,0,"name"),l(n,32,0,e.form.showError("name",u["ɵnov"](n,11),"required")),l(n,34,0,e.form.showError("name",u["ɵnov"](n,11),"pattern")),l(n,36,0,e.form.showError("name",u["ɵnov"](n,11),"uniqueName")),l(n,38,0),l(n,45,0,e.tooltips.plugins[e.plugin].description),l(n,50,0,"plugin"),l(n,53,0,"plugin"),l(n,55,0,!e.plugins),l(n,57,0,e.plugins),l(n,59,0,e.form.showError("name",u["ɵnov"](n,11),"required")),l(n,61,0),l(n,68,0,e.tooltips.k),l(n,74,0,"k"),l(n,77,0,"k"),l(n,79,0,e.form.showError("k",u["ɵnov"](n,11),"required")),l(n,81,0,e.form.showError("k",u["ɵnov"](n,11),"min")),l(n,83,0,e.form.showError("k",u["ɵnov"](n,11),"max")),l(n,85,0,e.form.showError("k",u["ɵnov"](n,11),"unequal")),l(n,87,0,e.form.showError("k",u["ɵnov"](n,11),"kLowerM")),l(n,89,0,"lrc"===e.plugin),l(n,91,0),l(n,98,0,e.tooltips.m),l(n,104,0,"m"),l(n,107,0,"m"),l(n,109,0,e.form.showError("m",u["ɵnov"](n,11),"required")),l(n,111,0,e.form.showError("m",u["ɵnov"](n,11),"min")),l(n,113,0,e.form.showError("m",u["ɵnov"](n,11),"max")),l(n,115,0,"shec"===e.plugin),l(n,117,0,e.plugin===e.PLUGIN.LRC),l(n,119,0),l(n,126,0,e.tooltips.crushFailureDomain),l(n,131,0,"crushFailureDomain"),l(n,134,0,"crushFailureDomain"),l(n,136,0,!e.failureDomains),l(n,138,0,e.failureDomainKeys),l(n,140,0,e.plugin===e.PLUGIN.LRC);var i=l(n,143,0,e.PLUGIN.JERASURE,e.PLUGIN.ISA).includes(e.plugin);l(n,142,0,i),l(n,145,0,e.plugin===e.PLUGIN.JERASURE),l(n,147,0),l(n,154,0,e.tooltips.crushRoot),l(n,159,0,"crushRoot"),l(n,162,0,"crushRoot"),l(n,164,0,!e.buckets),l(n,166,0,e.buckets),l(n,168,0),l(n,175,0,e.tooltips.crushDeviceClass),l(n,180,0,"crushDeviceClass"),l(n,183,0,"crushDeviceClass"),l(n,185,0,""),l(n,186,0,""),l(n,189,0,e.devices),l(n,193,0),l(n,200,0,e.tooltips.directory),l(n,205,0,"directory"),l(n,208,0,"directory"),l(n,211,0,u["ɵnov"](n,11)),l(n,216,0,e.bsModalRef.hide)}),(function(l,n){var e=n.component,i=u["ɵunv"](n,5,0,l(n,6,0,u["ɵnov"](n,0),e.action)),t=u["ɵunv"](n,5,1,l(n,7,0,u["ɵnov"](n,1),e.resource));l(n,5,0,i,t),l(n,9,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending),l(n,16,0,u["ɵnov"](n,17).hasErrors,u["ɵnov"](n,17).hasSuccess),l(n,23,0,u["ɵnov"](n,29).ngClassUntouched,u["ɵnov"](n,29).ngClassTouched,u["ɵnov"](n,29).ngClassPristine,u["ɵnov"](n,29).ngClassDirty,u["ɵnov"](n,29).ngClassValid,u["ɵnov"](n,29).ngClassInvalid,u["ɵnov"](n,29).ngClassPending,u["ɵnov"](n,30).validClass,u["ɵnov"](n,30).invalidClass),l(n,37,0,u["ɵnov"](n,38).hasErrors,u["ɵnov"](n,38).hasSuccess),l(n,47,0,u["ɵnov"](n,52).ngClassUntouched,u["ɵnov"](n,52).ngClassTouched,u["ɵnov"](n,52).ngClassPristine,u["ɵnov"](n,52).ngClassDirty,u["ɵnov"](n,52).ngClassValid,u["ɵnov"](n,52).ngClassInvalid,u["ɵnov"](n,52).ngClassPending,u["ɵnov"](n,53).validClass,u["ɵnov"](n,53).invalidClass),l(n,60,0,u["ɵnov"](n,61).hasErrors,u["ɵnov"](n,61).hasSuccess),l(n,70,0,u["ɵnov"](n,76).ngClassUntouched,u["ɵnov"](n,76).ngClassTouched,u["ɵnov"](n,76).ngClassPristine,u["ɵnov"](n,76).ngClassDirty,u["ɵnov"](n,76).ngClassValid,u["ɵnov"](n,76).ngClassInvalid,u["ɵnov"](n,76).ngClassPending,u["ɵnov"](n,77).validClass,u["ɵnov"](n,77).invalidClass),l(n,90,0,u["ɵnov"](n,91).hasErrors,u["ɵnov"](n,91).hasSuccess),l(n,100,0,u["ɵnov"](n,106).ngClassUntouched,u["ɵnov"](n,106).ngClassTouched,u["ɵnov"](n,106).ngClassPristine,u["ɵnov"](n,106).ngClassDirty,u["ɵnov"](n,106).ngClassValid,u["ɵnov"](n,106).ngClassInvalid,u["ɵnov"](n,106).ngClassPending,u["ɵnov"](n,107).validClass,u["ɵnov"](n,107).invalidClass),l(n,118,0,u["ɵnov"](n,119).hasErrors,u["ɵnov"](n,119).hasSuccess),l(n,128,0,u["ɵnov"](n,133).ngClassUntouched,u["ɵnov"](n,133).ngClassTouched,u["ɵnov"](n,133).ngClassPristine,u["ɵnov"](n,133).ngClassDirty,u["ɵnov"](n,133).ngClassValid,u["ɵnov"](n,133).ngClassInvalid,u["ɵnov"](n,133).ngClassPending,u["ɵnov"](n,134).validClass,u["ɵnov"](n,134).invalidClass),l(n,146,0,u["ɵnov"](n,147).hasErrors,u["ɵnov"](n,147).hasSuccess),l(n,156,0,u["ɵnov"](n,161).ngClassUntouched,u["ɵnov"](n,161).ngClassTouched,u["ɵnov"](n,161).ngClassPristine,u["ɵnov"](n,161).ngClassDirty,u["ɵnov"](n,161).ngClassValid,u["ɵnov"](n,161).ngClassInvalid,u["ɵnov"](n,161).ngClassPending,u["ɵnov"](n,162).validClass,u["ɵnov"](n,162).invalidClass),l(n,167,0,u["ɵnov"](n,168).hasErrors,u["ɵnov"](n,168).hasSuccess),l(n,177,0,u["ɵnov"](n,182).ngClassUntouched,u["ɵnov"](n,182).ngClassTouched,u["ɵnov"](n,182).ngClassPristine,u["ɵnov"](n,182).ngClassDirty,u["ɵnov"](n,182).ngClassValid,u["ɵnov"](n,182).ngClassInvalid,u["ɵnov"](n,182).ngClassPending,u["ɵnov"](n,183).validClass,u["ɵnov"](n,183).invalidClass),l(n,191,0,e.deviceCount),l(n,192,0,u["ɵnov"](n,193).hasErrors,u["ɵnov"](n,193).hasSuccess),l(n,202,0,u["ɵnov"](n,207).ngClassUntouched,u["ɵnov"](n,207).ngClassTouched,u["ɵnov"](n,207).ngClassPristine,u["ɵnov"](n,207).ngClassDirty,u["ɵnov"](n,207).ngClassValid,u["ɵnov"](n,207).ngClassInvalid,u["ɵnov"](n,207).ngClassPending,u["ɵnov"](n,208).validClass,u["ɵnov"](n,208).invalidClass);var a=u["ɵunv"](n,212,0,l(n,213,0,u["ɵnov"](n,0),e.action)),o=u["ɵunv"](n,212,1,l(n,214,0,u["ɵnov"](n,1),e.resource));l(n,212,0,a,o)}))}function xn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-erasure-code-profile-form-modal",[],null,null,null,qn,Zl)),u["ɵdid"](1,114688,null,0,_,[V.a,Fl.a,y.a,c,s.a,i.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Fn=u["ɵccf"]("cd-erasure-code-profile-form-modal",_,xn,{},{submitAction:"submitAction"},[]),Pn=e("w9WL"),An=e("yT6U"),Bn=e("4DD9"),On=e("iExv"),zn=e("85J/"),Ln=e("+0ag"),jn=e("IzCI"),Un=e("Dwqy"),Mn=e("uYzU"),Gn=e("FFMq"),$n=e("E2fk"),Kn=e("a0VL"),Jn=e("nSDx"),Wn=e("SB+Q"),Zn=e("TYzs"),Hn=e("BQkM"),Xn=e("dEH0"),Yn=e("G1/K"),Qn=e("TJUb"),le=e("efK2"),ne=e("CNMR"),ee=e("KOzp"),ue=e("2uy1"),ie=e("z/SZ"),te=e("38Bd"),ae=e("978R"),oe=e("FE24"),se=e("Avrn"),re=e("iInd"),de=e("2ZVE"),ce=e("ienR"),me=e("gk6K"),fe=e("9Xeq"),ge=e("hrfs"),pe=e("yGOH"),he=e("bxSN"),ve=e("WF9J"),be=e("V/fk"),Ce=e("ChqD"),Re=e("PCNd"),Ie=e("kJI8"),Ee=e("kccj"),Ne=e("yYhs"),ye=e("k/xb"),Ve=e("C6Ij"),we=e("AWcq"),Te=e("xSw7"),_e=e("GgAd"),Se=e("a278"),De=e("insk"),ke=e("cUpR"),qe=e("20UP"),xe=e("pKUh"),Fe=e("25BL"),Pe=e("NUGo"),Ae=e("S7zO"),Be=e("EFGL"),Oe=e("aAWM"),ze=e("o8EM"),Le=e("sLuX"),je=e("FSuO");e("jKX/");class Ue{constructor(l,n){this.i18n=l,this.poolService=n,this.cacheTierColumns=[],this.cacheTierColumns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:3},{prop:"cache_mode",name:this.i18n("Cache Mode"),flexGrow:2},{prop:"cache_min_evict_age",name:this.i18n("Min Evict Age"),flexGrow:2},{prop:"cache_min_flush_age",name:this.i18n("Min Flush Age"),flexGrow:2},{prop:"target_max_bytes",name:this.i18n("Target Max Bytes"),flexGrow:2},{prop:"target_max_objects",name:this.i18n("Target Max Objects"),flexGrow:2}]}ngOnChanges(){this.selection&&this.poolService.getConfiguration(this.selection.pool_name).subscribe(l=>{this.selectedPoolConfiguration=l})}filterNonPoolData(l){return a.omit(l,["cdExecuting","cdIsBinary"])}}var Me=u["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ge(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","-xyV8KCiz"]],null,null,null,Se.b,Se.a)),u["ɵdid"](3,638976,null,0,De.a,[ke.b,qe.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){var e=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"ceph-pool-detail?var-pool_name="+e.selection.pool_name,"one","-xyV8KCiz")}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function $e(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,Be.b,Be.a)),u["ɵdid"](3,638976,null,0,Oe.a,[N.a,ze.a,s.a],{data:[0,"data"]},null)],(function(l,n){var e=n.component;l(n,1,0,"Configuration"),l(n,3,0,e.selectedPoolConfiguration)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function Ke(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Cache Tiers Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,Fe.b,Fe.a)),u["ɵdid"](3,2867200,null,0,F.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},null)],(function(l,n){var e=n.component;l(n,1,0,"Cache Tiers Details"),l(n,3,0,e.cacheTiers,e.cacheTierColumns,"flex",!1)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function Je(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,11,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,xe.b,xe.a)),u["ɵdid"](1,180224,[[1,4],["tabsetChild",4]],0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](3,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Le.b,Le.a)),u["ɵdid"](5,638976,null,0,je.a,[Kn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["ɵand"](16777216,null,0,1,null,Ge)),u["ɵdid"](7,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,0,1,null,$e)),u["ɵdid"](9,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,0,1,null,Ke)),u["ɵdid"](11,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,5,0,e.filterNonPoolData(e.selection),!1,!0),l(n,7,0,e.permissions.grafana.read),l(n,9,0,"replicated"===e.selection.type),l(n,11,0,(null==e.selection.tiers?null:e.selection.tiers.length)>0)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).clazz),l(n,2,0,u["ɵnov"](n,3).id,u["ɵnov"](n,3).active,u["ɵnov"](n,3).addClass,u["ɵnov"](n,3).role,u["ɵnov"](n,3).ariaLabelledby)}))}function We(l){return u["ɵvid"](0,[u["ɵqud"](671088640,1,{tabsetChild:0}),(l()(),u["ɵand"](16777216,null,null,1,null,Je)),u["ɵdid"](2,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,2,0,n.component.selection)}),null)}var Ze=e("ufoC"),He=e("mSOc"),Xe=u["ɵcrt"]({encapsulation:0,styles:[[".pg-clean{color:#0b0}  .pg-working{color:#2b99a8}  .pg-warning{color:#ffc200}  .pg-unknown{color:red}"]],data:{}});function Ye(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Ve.b,Ve.a)),u["ɵdid"](1,114688,null,0,we.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],(function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)}),null)}function Qe(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-usage-bar",[["decimals","2"]],null,null,null,Te.b,Te.a)),u["ɵdid"](1,573440,null,0,_e.a,[],{total:[0,"total"],used:[1,"used"],decimals:[2,"decimals"]},null)],(function(l,n){l(n,1,0,n.parent.context.row.stats.bytes_used.latest+n.parent.context.row.stats.avail_raw.latest,n.parent.context.row.stats.bytes_used.latest,"2")}),null)}function lu(l){return u["ɵvid"](0,[(l()(),u["ɵand"](16777216,null,null,1,null,Qe)),u["ɵdid"](1,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,null==n.context.row.stats?null:null==n.context.row.stats.avail_raw?null:n.context.row.stats.avail_raw.latest)}),null)}function nu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","z99hzWtmk"]],null,null,null,Se.b,Se.a)),u["ɵdid"](3,638976,null,0,De.a,[ke.b,qe.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"ceph-pools-overview?","two","z99hzWtmk")}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function eu(l){return u["ɵvid"](0,[u["ɵqud"](402653184,1,{table:0}),u["ɵqud"](402653184,2,{poolUsageTpl:0}),u["ɵqud"](671088640,3,{poolConfigurationSourceTpl:0}),(l()(),u["ɵeld"](3,0,null,null,14,"tabset",[],[[2,"tab-container",null]],null,null,xe.b,xe.a)),u["ɵdid"](4,180224,null,0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](5,0,null,0,10,"tab",[["heading","Pools List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](6,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ye)),u["ɵdid"](8,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](9,0,null,null,5,"cd-table",[["id","pool-list"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(l,n,e){var u=!0,i=l.component;return"setExpandedRow"===n&&(u=!1!==i.setExpandedRow(e)&&u),"updateSelection"===n&&(u=!1!==i.updateSelection(e)&&u),u}),Fe.b,Fe.a)),u["ɵdid"](10,2867200,[[1,4],["table",4]],0,F.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),u["ɵeld"](11,0,null,1,1,"cd-table-actions",[["class","table-actions"],["id","pool-list-actions"]],null,null,null,Pe.b,Pe.a)),u["ɵdid"](12,114688,null,0,Ae.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),u["ɵeld"](13,0,null,3,1,"cd-pool-details",[["cdTableDetail",""],["id","pool-list-details"]],null,null,null,We,Me)),u["ɵdid"](14,573440,null,0,Ue,[s.a,m.a],{selection:[0,"selection"],permissions:[1,"permissions"],cacheTiers:[2,"cacheTiers"]},null),(l()(),u["ɵand"](0,[[2,2],["poolUsageTpl",2]],null,0,null,lu)),(l()(),u["ɵand"](16777216,null,0,1,null,nu)),u["ɵdid"](17,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,6,0,"Pools List"),l(n,8,0,e.viewCacheStatusList),l(n,10,0,e.pools,e.columns,!0,"single"),l(n,12,0,e.permissions.pool,e.selection,e.tableActions),l(n,14,0,e.expandedRow,e.permissions,e.cacheTiers),l(n,17,0,e.permissions.grafana.read)}),(function(l,n){l(n,3,0,u["ɵnov"](n,4).clazz),l(n,5,0,u["ɵnov"](n,6).id,u["ɵnov"](n,6).active,u["ɵnov"](n,6).addClass,u["ɵnov"](n,6).role,u["ɵnov"](n,6).ariaLabelledby)}))}function uu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"cd-pool-list",[],null,null,null,eu,Xe)),u["ɵprd"](131584,null,z.a,z.a,[Ze.a,He.a]),u["ɵprd"](256,null,L.a,M,[]),u["ɵdid"](3,114688,null,0,G,[m.a,y.a,E.a,z.a,Fl.b,s.a,j.a,O.a,L.a,q.a,i.b],null,null)],(function(l,n){l(n,3,0)}),null)}var iu=u["ɵccf"]("cd-pool-list",G,uu,{},{},[]),tu=e("QC43"),au=e("XFyV"),ou=e("i4WA"),su=e("6qls"),ru=e("tz6c"),du=e("EmSq"),cu=e("pYKc"),mu=e("ppaS"),fu=e("BH9v"),gu=e("rFfW"),pu=u["ɵcrt"]({encapsulation:0,styles:[[".crush-rule-steps[_ngcontent-%COMP%]{margin-top:10px}"]],data:{}});function hu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,tu.b,tu.a)),u["ɵdid"](1,49152,null,0,au.a,[],null,null),(l()(),u["ɵted"](-1,0,["Loading..."]))],null,null)}function vu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function bu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The chosen Ceph pool name is already in use."]))],null,null)}function Cu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["It's not possible to create an RBD pool with '/' in the name. Please change the name or remove 'rbd' from the applications list."]))],null,null)}function Ru(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Pool name can only contain letters, numbers, '.', '-', '_' or '/'."]))],null,null)}function Iu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Eu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Nu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function yu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Vu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["At least one placement group is needed!"]))],null,null)}function wu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Your cluster can't handle this many PGs. Please recalculate the PG amount needed."]))],null,null)}function Tu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The current PGs settings were calculated for you, you should make sure the values suit your needs before submit."]))],null,null)}function _u(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,27,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,11,{FormControlNames:1}),u["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pgNum"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Placement groups"])),(l()(),u["ɵeld"](6,0,null,0,21,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,9,"input",[["class","form-control"],["formControlName","pgNum"],["id","pgNum"],["min","1"],["name","pgNum"],["required",""],["type","number"]],[[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"focus"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0,t=l.component;return"input"===n&&(i=!1!==u["ɵnov"](l,8)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,8).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,8)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,8)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,9).onTouched()&&i),"focus"===n&&(i=0!=(t.externalPgChange=!1)&&i),"blur"===n&&(i=!1!==t.alignPgs()&&i),i}),null,null)),u["ɵdid"](8,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](9,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵdid"](10,16384,null,0,t.z,[],{required:[0,"required"]},null),u["ɵprd"](1024,null,t.o,(function(l){return[l]}),[t.z]),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](13,671744,[[11,4]],0,t.j,[[3,t.d],[6,t.o],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](15,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](16,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,yu)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Vu)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,wu)),u["ɵdid"](22,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](23,0,null,null,2,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵeld"](24,0,null,null,1,"cd-doc",[["docText","Calculation help"],["section","pgs"]],null,null,null,ou.b,ou.a)),u["ɵdid"](25,114688,null,0,su.a,[ru.a,s.a],{section:[0,"section"],docText:[1,"docText"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Tu)),u["ɵdid"](27,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,10,0,""),l(n,13,0,"pgNum"),l(n,16,0,"pgNum"),l(n,18,0,e.form.showError("pgNum",u["ɵnov"](n.parent.parent,2),"required")),l(n,20,0,e.form.showError("pgNum",u["ɵnov"](n.parent.parent,2),"min")),l(n,22,0,e.form.showError("pgNum",u["ɵnov"](n.parent.parent,2),"34")),l(n,25,0,"pgs","Calculation help"),l(n,27,0,e.externalPgChange)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,7,0,u["ɵnov"](n,10).required?"":null,u["ɵnov"](n,15).ngClassUntouched,u["ɵnov"](n,15).ngClassTouched,u["ɵnov"](n,15).ngClassPristine,u["ɵnov"](n,15).ngClassDirty,u["ɵnov"](n,15).ngClassValid,u["ɵnov"](n,15).ngClassInvalid,u["ɵnov"](n,15).ngClassPending,u["ɵnov"](n,16).validClass,u["ɵnov"](n,16).invalidClass)}))}function Su(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,5,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,4,"ul",[["class","list-inline"]],null,null,null,null,null)),(l()(),u["ɵeld"](2,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](3,null,["Minimum: ",""])),(l()(),u["ɵeld"](4,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](5,null,["Maximum: ",""]))],null,(function(l,n){var e=n.component;l(n,3,0,e.getMinSize()),l(n,5,0,e.getMaxSize())}))}function Du(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["The size specified is out of range. A value from "," to "," is usable."]))],null,(function(l,n){var e=n.component;l(n,1,0,e.getMinSize(),e.getMaxSize())}))}function ku(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,13,{FormControlNames:1}),u["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","size"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Replicated size"])),(l()(),u["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","size"],["id","size"],["name","size"],["type","number"]],[[8,"max",0],[8,"min",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,8)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,8).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,8)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,8)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,9).onTouched()&&i),i}),null,null)),u["ɵdid"](8,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](9,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](11,671744,[[13,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](13,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Su)),u["ɵdid"](16,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Du)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,11,0,"size"),l(n,14,0,"size"),l(n,16,0,e.form.showError("size",u["ɵnov"](n.parent.parent,2))),l(n,18,0,e.form.showError("size",u["ɵnov"](n.parent.parent,2)))}),(function(l,n){var e=n.component;l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,7,1,[e.getMaxSize(),e.getMinSize(),u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass])}))}function qu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,15,{FormControlNames:1}),u["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Flags"])),(l()(),u["ɵeld"](6,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","ecOverwrites"],["id","ec-overwrites"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.checked)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,9).onTouched()&&i),i}),null,null)),u["ɵdid"](9,16384,null,0,t.c,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.c]),u["ɵdid"](11,671744,[[15,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](13,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](15,0,null,null,1,"label",[["class","custom-control-label"],["for","ec-overwrites"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["EC Overwrites"]))],(function(l,n){l(n,1,0),l(n,11,0,"ecOverwrites"),l(n,14,0,"ecOverwrites")}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass)}))}function xu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,22,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](2,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,9,{FormControlNames:1}),u["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),u["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"],["for","pgAutoscaleMode"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["PG Autoscale"])),(l()(),u["ɵeld"](7,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","pgAutoscaleMode"],["id","pgAutoscaleMode"],["name","pgAutoscaleMode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,9).onTouched()&&i),i}),null,null)),u["ɵdid"](9,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](11,671744,[[9,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](13,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Nu)),u["ɵdid"](16,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,_u)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ku)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,qu)),u["ɵdid"](22,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,2,0),l(n,11,0,"pgAutoscaleMode"),l(n,14,0,"pgAutoscaleMode"),l(n,16,0,e.pgAutoscaleModes),l(n,18,0,"on"!==e.form.getValue("pgAutoscaleMode")),l(n,20,0,e.isReplicated),l(n,22,0,e.info.is_all_bluestore&&e.isErasure)}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).hasErrors,u["ɵnov"](n,2).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass)}))}function Fu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Pu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- No erasure code profile available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Au(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- Select an erasure code profile --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Bu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function Ou(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.addErasureCodeProfile()&&u),u}),null,null)),(l()(),u["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](3,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](4,1)],(function(l,n){var e=l(n,4,0,n.component.icons.add);l(n,3,0,e)}),null)}function zu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","This profile can't be deleted as it is in use."],["triggers",""],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.deleteErasureCodeProfile()&&u),u}),null,null)),u["ɵdid"](1,212992,[[4,4],["ecpDeletionBtn",4]],0,ae.c,[u.ViewContainerRef,ie.a,ae.a,u.ElementRef,u.Renderer2,ue.a],{tooltip:[0,"tooltip"],triggers:[1,"triggers"]},null),(l()(),u["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](4,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](5,1),(l()(),u["ɵand"](0,null,null,0))],(function(l,n){var e=n.component;l(n,1,0,"This profile can't be deleted as it is in use.","");var u=l(n,5,0,e.icons.trash);l(n,4,0,u)}),null)}function Lu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Profile is not in use."]))],null,null)}function ju(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.context.$implicit)}))}function Uu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,2,"ul",[],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,ju)),u["ɵdid"](2,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,2,0,n.component.ecpUsage)}),null)}function Mu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,12,"span",[["class","form-text text-muted"],["id","ecp-info-block"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,11,"tabset",[],[[2,"tab-container",null]],null,null,xe.b,xe.a)),u["ɵdid"](2,180224,[[3,4],["ecpInfoTabs",4]],0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](3,0,null,0,4,"tab",[["class","ecp-info"],["heading","Profile"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](4,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](5,0,null,null,2,"cd-table-key-value",[],null,null,null,Le.b,Le.a)),u["ɵdid"](6,638976,null,0,je.a,[Kn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],hideKeys:[3,"hideKeys"]},null),u["ɵpad"](7,1),(l()(),u["ɵeld"](8,0,null,0,4,"tab",[["class","used-by-pools"],["heading","Used by pools"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](9,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵand"](0,[["ecpIsNotUsed",2]],null,0,null,Lu)),(l()(),u["ɵand"](16777216,null,null,1,null,Uu)),u["ɵdid"](12,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(l,n){var e=n.component;l(n,4,0,"Profile");var i=e.form.getValue("erasureProfile"),t=l(n,7,0,"name");l(n,6,0,i,!1,!0,t),l(n,9,0,"Used by pools"),l(n,12,0,e.ecpUsage,u["ɵnov"](n,10))}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).clazz),l(n,3,0,u["ɵnov"](n,4).id,u["ɵnov"](n,4).active,u["ɵnov"](n,4).addClass,u["ɵnov"](n,4).role,u["ɵnov"](n,4).ariaLabelledby),l(n,8,0,u["ɵnov"](n,9).id,u["ɵnov"](n,9).active,u["ɵnov"](n,9).addClass,u["ɵnov"](n,9).role,u["ɵnov"](n,9).ariaLabelledby)}))}function Gu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,37,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,19,{FormControlNames:1}),u["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","erasureProfile"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Erasure code profile"])),(l()(),u["ɵeld"](6,0,null,0,31,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,28,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","erasureProfile"],["id","erasureProfile"],["name","erasureProfile"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,9).onTouched()&&i),i}),null,null)),u["ɵdid"](9,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](11,671744,[[19,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](13,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Fu)),u["ɵdid"](16,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Pu)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Au)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Bu)),u["ɵdid"](22,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](23,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),u["ɵeld"](24,0,null,null,7,"button",[["class","btn btn-light"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0,i=l.component;return"click"===n&&(u=0!=(i.data.erasureInfo=!i.data.erasureInfo)&&u),u}),null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](26,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["ɵpod"](27,{active:0}),(l()(),u["ɵeld"](28,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](30,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](31,1),(l()(),u["ɵand"](16777216,null,null,1,null,Ou)),u["ɵdid"](33,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,zu)),u["ɵdid"](35,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Mu)),u["ɵdid"](37,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,11,0,"erasureProfile"),l(n,14,0,"erasureProfile"),l(n,16,0,!e.ecProfiles),l(n,18,0,e.ecProfiles&&0===e.ecProfiles.length),l(n,20,0,e.ecProfiles&&e.ecProfiles.length>0),l(n,22,0,e.ecProfiles);var u=l(n,27,0,e.data.erasureInfo);l(n,26,0,"btn btn-light",u);var i=l(n,31,0,e.icons.questionCircle);l(n,30,0,i),l(n,33,0,!e.editing),l(n,35,0,!e.editing),l(n,37,0,e.data.erasureInfo&&e.form.getValue("erasureProfile"))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass)}))}function $u(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,21,{FormControlNames:1}),u["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","crushRule"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush ruleset"])),(l()(),u["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["A new crush ruleset will be implicitly created."]))],(function(l,n){l(n,1,0)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess)}))}function Ku(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["There are no rules."])),(l()(),u["ɵted"](-1,null,["  "]))],null,null)}function Ju(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.rule_name)}))}function Wu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.addCrushRule()&&u),u}),null,null)),(l()(),u["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](3,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](4,1)],(function(l,n){var e=l(n,4,0,n.component.icons.add);l(n,3,0,e)}),null)}function Zu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","This rule can't be deleted as it is in use."],["triggers",""],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.deleteCrushRule()&&u),u}),null,null)),u["ɵdid"](1,212992,[[2,4],["crushDeletionBtn",4]],0,ae.c,[u.ViewContainerRef,ie.a,ae.a,u.ElementRef,u.Renderer2,ue.a],{tooltip:[0,"tooltip"],triggers:[1,"triggers"]},null),(l()(),u["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](4,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](5,1),(l()(),u["ɵand"](0,null,null,0))],(function(l,n){var e=n.component;l(n,1,0,"This rule can't be deleted as it is in use.","");var u=l(n,5,0,e.icons.trash);l(n,4,0,u)}),null)}function Hu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.describeCrushStep(n.context.$implicit))}))}function Xu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Rule is not in use."]))],null,null)}function Yu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.context.$implicit)}))}function Qu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,2,"ul",[],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,Yu)),u["ɵdid"](2,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,2,0,n.component.crushUsage)}),null)}function li(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,17,"span",[["class","form-text text-muted"],["id","crush-info-block"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,16,"tabset",[],[[2,"tab-container",null]],null,null,xe.b,xe.a)),u["ɵdid"](2,180224,[[1,4],["crushInfoTabs",4]],0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](3,0,null,0,4,"tab",[["class","crush-rule-info"],["heading","Crush rule"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](4,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](5,0,null,null,2,"cd-table-key-value",[],null,null,null,Le.b,Le.a)),u["ɵdid"](6,638976,null,0,je.a,[Kn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],hideKeys:[3,"hideKeys"]},null),u["ɵpad"](7,4),(l()(),u["ɵeld"](8,0,null,0,4,"tab",[["class","crush-rule-steps"],["heading","Crush steps"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](9,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](10,0,null,null,2,"ol",[],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,Hu)),u["ɵdid"](12,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](13,0,null,0,4,"tab",[["class","used-by-pools"],["heading","Used by pools"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](14,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵand"](0,[["ruleIsNotUsed",2]],null,0,null,Xu)),(l()(),u["ɵand"](16777216,null,null,1,null,Qu)),u["ɵdid"](17,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(l,n){var e=n.component;l(n,4,0,"Crush rule");var i=e.form.getValue("crushRule"),t=l(n,7,0,"steps","ruleset","type","rule_name");l(n,6,0,i,!1,!1,t),l(n,9,0,"Crush steps"),l(n,12,0,e.form.get("crushRule").value.steps),l(n,14,0,"Used by pools"),l(n,17,0,e.crushUsage,u["ɵnov"](n,15))}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).clazz),l(n,3,0,u["ɵnov"](n,4).id,u["ɵnov"](n,4).active,u["ɵnov"](n,4).addClass,u["ɵnov"](n,4).role,u["ɵnov"](n,4).ariaLabelledby),l(n,8,0,u["ɵnov"](n,9).id,u["ɵnov"](n,9).active,u["ɵnov"](n,9).addClass,u["ɵnov"](n,9).role,u["ɵnov"](n,9).ariaLabelledby),l(n,13,0,u["ɵnov"](n,14).id,u["ɵnov"](n,14).active,u["ɵnov"](n,14).addClass,u["ɵnov"](n,14).role,u["ɵnov"](n,14).ariaLabelledby)}))}function ni(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function ei(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The rule can't be used in the current cluster as it has too few OSDs to meet the minimum required OSD by this rule."]))],null,null)}function ui(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,33,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,26,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["ɵeld"](2,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","crushRule"],["id","crushRule"],["name","crushSet"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,3).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,3).onTouched()&&i),i}),null,null)),u["ɵdid"](3,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](5,671744,[[23,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](7,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](8,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](9,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](10,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](11,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- Select a crush rule --"])),(l()(),u["ɵand"](16777216,null,null,1,null,Ju)),u["ɵdid"](14,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](15,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),u["ɵeld"](16,0,null,null,7,"button",[["class","btn btn-light"],["id","crush-info-button"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0,i=l.component;return"click"===n&&(u=0!=(i.data.crushInfo=!i.data.crushInfo)&&u),u}),null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](18,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["ɵpod"](19,{active:0}),(l()(),u["ɵeld"](20,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](22,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](23,1),(l()(),u["ɵand"](16777216,null,null,1,null,Wu)),u["ɵdid"](25,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Zu)),u["ɵdid"](27,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,li)),u["ɵdid"](29,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ni)),u["ɵdid"](31,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ei)),u["ɵdid"](33,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,5,0,"crushRule"),l(n,8,0,"crushRule"),l(n,10,0,null),l(n,11,0,null),l(n,14,0,e.current.rules);var i=l(n,19,0,e.data.crushInfo);l(n,18,0,"btn btn-light",i);var t=l(n,23,0,e.icons.questionCircle);l(n,22,0,t),l(n,25,0,e.isReplicated&&!e.editing),l(n,27,0,e.isReplicated&&!e.editing),l(n,29,0,e.data.crushInfo&&e.form.getValue("crushRule")),l(n,31,0,e.form.showError("crushRule",u["ɵnov"](n.parent.parent.parent,2),"required")),l(n,33,0,e.form.showError("crushRule",u["ɵnov"](n.parent.parent.parent,2),"tooFewOsds"))}),(function(l,n){l(n,2,0,u["ɵnov"](n,7).ngClassUntouched,u["ɵnov"](n,7).ngClassTouched,u["ɵnov"](n,7).ngClassPristine,u["ɵnov"](n,7).ngClassDirty,u["ɵnov"](n,7).ngClassValid,u["ɵnov"](n,7).ngClassInvalid,u["ɵnov"](n,7).ngClassPending,u["ɵnov"](n,8).validClass,u["ɵnov"](n,8).invalidClass)}))}function ii(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,9,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,23,{FormControlNames:1}),u["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","crushRule"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush ruleset"])),(l()(),u["ɵeld"](6,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵand"](0,[["noRules",2]],null,0,null,Ku)),(l()(),u["ɵand"](16777216,null,null,1,null,ui)),u["ɵdid"](9,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,9,0,e.current.rules.length>0,u["ɵnov"](n,7))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess)}))}function ti(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["CRUSH"])),(l()(),u["ɵand"](16777216,null,null,1,null,Gu)),u["ɵdid"](4,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,$u)),u["ɵdid"](6,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ii)),u["ɵdid"](8,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,4,0,e.isErasure),l(n,6,0,e.isErasure&&!e.editing),l(n,8,0,e.isReplicated||e.editing)}),null)}function ai(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function oi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function si(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- No erasure compression algorithm available --"]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function ri(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function di(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be greater than 0"]))],null,null)}function ci(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be less than the maximum blob size"]))],null,null)}function mi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be greater than 0"]))],null,null)}function fi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be greater than the minimum blob size"]))],null,null)}function gi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be between 0.0 and 1.0"]))],null,null)}function pi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,75,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](2,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,27,{FormControlNames:1}),u["ɵqud"](603979776,28,{messagesBlock:0}),(l()(),u["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"],["for","algorithm"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Algorithm"])),(l()(),u["ɵeld"](7,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","algorithm"],["id","algorithm"],["name","algorithm"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,9).onTouched()&&i),i}),null,null)),u["ɵdid"](9,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](11,671744,[[27,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](13,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,oi)),u["ɵdid"](16,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,si)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ri)),u["ɵdid"](20,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](21,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](22,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,29,{FormControlNames:1}),u["ɵqud"](603979776,30,{messagesBlock:0}),(l()(),u["ɵeld"](25,0,null,0,1,"label",[["class","cd-col-form-label"],["for","minBlobSize"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Minimum blob size"])),(l()(),u["ɵeld"](27,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](28,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","minBlobSize"],["id","minBlobSize"],["min","0"],["name","minBlobSize"],["placeholder","e.g., 128KiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,29)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,29).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,29)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,29)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,33).onBlur(e.target.value)&&i),i}),null,null)),u["ɵdid"](29,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.e]),u["ɵdid"](31,671744,[[29,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](33,81920,null,0,du.a,[u.ElementRef,t.q,I.a,N.a],{defaultUnit:[0,"defaultUnit"]},null),u["ɵdid"](34,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](35,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,di)),u["ɵdid"](37,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ci)),u["ɵdid"](39,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](40,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](41,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,31,{FormControlNames:1}),u["ɵqud"](603979776,32,{messagesBlock:0}),(l()(),u["ɵeld"](44,0,null,0,1,"label",[["class","cd-col-form-label"],["for","maxBlobSize"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Maximum blob size"])),(l()(),u["ɵeld"](46,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](47,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","maxBlobSize"],["id","maxBlobSize"],["min","0"],["placeholder","e.g., 512KiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,48)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,48).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,48)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,48)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,52).onBlur(e.target.value)&&i),i}),null,null)),u["ɵdid"](48,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.e]),u["ɵdid"](50,671744,[[31,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](52,81920,null,0,du.a,[u.ElementRef,t.q,I.a,N.a],{defaultUnit:[0,"defaultUnit"]},null),u["ɵdid"](53,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](54,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,mi)),u["ɵdid"](56,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,fi)),u["ɵdid"](58,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](59,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](60,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,33,{FormControlNames:1}),u["ɵqud"](603979776,34,{messagesBlock:0}),(l()(),u["ɵeld"](63,0,null,0,1,"label",[["class","cd-col-form-label"],["for","ratio"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Ratio"])),(l()(),u["ɵeld"](65,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](66,0,null,null,7,"input",[["class","form-control"],["formControlName","ratio"],["id","ratio"],["max","1"],["min","0"],["name","ratio"],["placeholder","Compression ratio"],["step","0.1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,67)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,67).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,67)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,67)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,68).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,68).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,68).onTouched()&&i),i}),null,null)),u["ɵdid"](67,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](68,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](70,671744,[[33,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](72,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](73,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,gi)),u["ɵdid"](75,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,2,0),l(n,11,0,"algorithm"),l(n,14,0,"algorithm"),l(n,16,0,!e.info.compression_algorithms),l(n,18,0,e.info.compression_algorithms&&0===e.info.compression_algorithms.length),l(n,20,0,e.info.compression_algorithms),l(n,22,0),l(n,31,0,"minBlobSize"),l(n,33,0,"KiB"),l(n,35,0,"minBlobSize"),l(n,37,0,e.form.showError("minBlobSize",u["ɵnov"](n.parent.parent,2),"min")),l(n,39,0,e.form.showError("minBlobSize",u["ɵnov"](n.parent.parent,2),"maximum")),l(n,41,0),l(n,50,0,"maxBlobSize"),l(n,52,0,"KiB"),l(n,54,0,"maxBlobSize"),l(n,56,0,e.form.showError("maxBlobSize",u["ɵnov"](n.parent.parent,2),"min")),l(n,58,0,e.form.showError("maxBlobSize",u["ɵnov"](n.parent.parent,2),"minimum")),l(n,60,0),l(n,70,0,"ratio"),l(n,73,0,"ratio"),l(n,75,0,e.form.showError("ratio",u["ɵnov"](n.parent.parent,2),"min")||e.form.showError("ratio",u["ɵnov"](n.parent.parent,2),"max"))}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).hasErrors,u["ɵnov"](n,2).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass),l(n,21,0,u["ɵnov"](n,22).hasErrors,u["ɵnov"](n,22).hasSuccess),l(n,28,0,u["ɵnov"](n,34).ngClassUntouched,u["ɵnov"](n,34).ngClassTouched,u["ɵnov"](n,34).ngClassPristine,u["ɵnov"](n,34).ngClassDirty,u["ɵnov"](n,34).ngClassValid,u["ɵnov"](n,34).ngClassInvalid,u["ɵnov"](n,34).ngClassPending,u["ɵnov"](n,35).validClass,u["ɵnov"](n,35).invalidClass),l(n,40,0,u["ɵnov"](n,41).hasErrors,u["ɵnov"](n,41).hasSuccess),l(n,47,0,u["ɵnov"](n,53).ngClassUntouched,u["ɵnov"](n,53).ngClassTouched,u["ɵnov"](n,53).ngClassPristine,u["ɵnov"](n,53).ngClassDirty,u["ɵnov"](n,53).ngClassValid,u["ɵnov"](n,53).ngClassInvalid,u["ɵnov"](n,53).ngClassPending,u["ɵnov"](n,54).validClass,u["ɵnov"](n,54).invalidClass),l(n,59,0,u["ɵnov"](n,60).hasErrors,u["ɵnov"](n,60).hasSuccess),l(n,66,0,u["ɵnov"](n,72).ngClassUntouched,u["ɵnov"](n,72).ngClassTouched,u["ɵnov"](n,72).ngClassPristine,u["ɵnov"](n,72).ngClassDirty,u["ɵnov"](n,72).ngClassValid,u["ɵnov"](n,72).ngClassInvalid,u["ɵnov"](n,72).ngClassPending,u["ɵnov"](n,73).validClass,u["ɵnov"](n,73).invalidClass)}))}function hi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,23,"div",[["formGroupName","compression"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),u["ɵdid"](1,212992,null,0,t.m,[[3,t.d],[8,null],[8,null]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.d,null,[t.m]),u["ɵdid"](3,16384,null,0,t.s,[[4,t.d]],null,null),(l()(),u["ɵeld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Compression"])),(l()(),u["ɵeld"](6,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](7,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,25,{FormControlNames:1}),u["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),u["ɵeld"](10,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mode"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Mode"])),(l()(),u["ɵeld"](12,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](13,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","mode"],["id","mode"],["name","mode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,14).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,14).onTouched()&&i),i}),null,null)),u["ɵdid"](14,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](16,671744,[[25,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](18,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](19,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ai)),u["ɵdid"](21,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,pi)),u["ɵdid"](23,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0,"compression"),l(n,7,0),l(n,16,0,"mode"),l(n,19,0,"mode"),l(n,21,0,e.info.compression_modes),l(n,23,0,e.hasCompressionEnabled())}),(function(l,n){l(n,0,0,u["ɵnov"](n,3).ngClassUntouched,u["ɵnov"](n,3).ngClassTouched,u["ɵnov"](n,3).ngClassPristine,u["ɵnov"](n,3).ngClassDirty,u["ɵnov"](n,3).ngClassValid,u["ɵnov"](n,3).ngClassInvalid,u["ɵnov"](n,3).ngClassPending),l(n,6,0,u["ɵnov"](n,7).hasErrors,u["ɵnov"](n,7).hasSuccess),l(n,13,0,u["ɵnov"](n,18).ngClassUntouched,u["ɵnov"](n,18).ngClassTouched,u["ɵnov"](n,18).ngClassPristine,u["ɵnov"](n,18).ngClassDirty,u["ɵnov"](n,18).ngClassValid,u["ɵnov"](n,18).ngClassInvalid,u["ɵnov"](n,18).ngClassPending,u["ɵnov"](n,19).validClass,u["ɵnov"](n,19).invalidClass)}))}function vi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The value should be greater or equal to 0"]))],null,null)}function bi(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,134,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var i=!0;return"submit"===n&&(i=!1!==u["ɵnov"](l,2).onSubmit(e)&&i),"reset"===n&&(i=!1!==u["ɵnov"](l,2).onReset()&&i),"submit"===n&&(i=!1!==u["ɵnov"](l,5).onSubmit()&&i),i}),null,null)),u["ɵdid"](1,16384,null,0,t.G,[],null,null),u["ɵdid"](2,540672,[["formDir",4]],0,t.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["ɵprd"](2048,null,t.d,null,[t.l]),u["ɵdid"](4,16384,null,0,t.s,[[4,t.d]],null,null),u["ɵdid"](5,16384,null,0,Vl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),u["ɵeld"](6,0,null,null,128,"div",[["class","card"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),u["ɵted"](8,null,[""," ",""])),u["ɵppd"](9,1),u["ɵppd"](10,1),(l()(),u["ɵeld"](11,0,null,null,114,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),u["ɵeld"](12,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](13,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,5,{FormControlNames:1}),u["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),u["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Name"])),(l()(),u["ɵeld"](18,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](19,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,21)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,21).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,21)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,21)._compositionEnd(e.target.value)&&i),i}),null,null)),u["ɵdid"](20,4210688,null,0,Tl.a,[u.ElementRef],{autofocus:[0,"autofocus"]},null),u["ɵdid"](21,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.e]),u["ɵdid"](23,671744,[[5,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](25,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](26,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,vu)),u["ɵdid"](28,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,bu)),u["ɵdid"](30,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Cu)),u["ɵdid"](32,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ru)),u["ɵdid"](34,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](35,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](36,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,7,{FormControlNames:1}),u["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),u["ɵeld"](39,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","poolType"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Pool type"])),(l()(),u["ɵeld"](41,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](42,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","poolType"],["id","poolType"],["name","poolType"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var i=!0;return"change"===n&&(i=!1!==u["ɵnov"](l,43).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,43).onTouched()&&i),i}),null,null)),u["ɵdid"](43,16384,null,0,t.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.A]),u["ɵdid"](45,671744,[[7,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](47,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](48,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](49,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](50,147456,null,0,t.v,[u.ElementRef,u.Renderer2,[2,t.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](51,147456,null,0,t.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- Select a pool type --"])),(l()(),u["ɵand"](16777216,null,null,1,null,Iu)),u["ɵdid"](54,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Eu)),u["ɵdid"](56,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,xu)),u["ɵdid"](58,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](59,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](60,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,17,{FormControlNames:1}),u["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),u["ɵeld"](63,0,null,0,1,"label",[["class","cd-col-form-label"],["for","applications"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Applications"])),(l()(),u["ɵeld"](65,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](66,0,null,null,1,"cd-select-badges",[["id","applications"]],null,[[null,"selection"]],(function(l,n,e){var u=!0;return"selection"===n&&(u=!1!==l.component.appSelection()&&u),u}),cu.b,cu.a)),u["ɵdid"](67,49152,null,0,mu.a,[s.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"],selectionLimit:[3,"selectionLimit"],customBadges:[4,"customBadges"],customBadgeValidators:[5,"customBadgeValidators"]},{selection:"selection"}),(l()(),u["ɵand"](16777216,null,null,1,null,ti)),u["ɵdid"](69,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,hi)),u["ɵdid"](71,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](72,0,null,null,50,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](73,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Quotas"])),(l()(),u["ɵeld"](75,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](76,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,35,{FormControlNames:1}),u["ɵqud"](603979776,36,{messagesBlock:0}),(l()(),u["ɵeld"](79,0,null,0,9,"label",[["class","cd-col-form-label"],["for","max_bytes"]],null,null,null,null,null)),(l()(),u["ɵeld"](80,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Max bytes"])),(l()(),u["ɵeld"](82,0,null,null,6,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](83,49152,null,0,Sl.a,[],null,null),(l()(),u["ɵeld"](84,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Leave it blank or specify 0 to disable this quota."])),(l()(),u["ɵeld"](86,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),u["ɵeld"](87,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["A valid quota should be greater than 0."])),(l()(),u["ɵeld"](89,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](90,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","GiB"],["formControlName","max_bytes"],["id","max_bytes"],["name","max_bytes"],["placeholder","e.g., 10GiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,91)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,91).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,91)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,91)._compositionEnd(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,95).onBlur(e.target.value)&&i),i}),null,null)),u["ɵdid"](91,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵprd"](1024,null,t.p,(function(l){return[l]}),[t.e]),u["ɵdid"](93,671744,[[35,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](95,81920,null,0,du.a,[u.ElementRef,t.q,I.a,N.a],{defaultUnit:[0,"defaultUnit"]},null),u["ɵdid"](96,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](97,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](98,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](99,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,37,{FormControlNames:1}),u["ɵqud"](603979776,38,{messagesBlock:0}),(l()(),u["ɵeld"](102,0,null,0,9,"label",[["class","cd-col-form-label"],["for","max_objects"]],null,null,null,null,null)),(l()(),u["ɵeld"](103,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Max objects"])),(l()(),u["ɵeld"](105,0,null,null,6,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](106,49152,null,0,Sl.a,[],null,null),(l()(),u["ɵeld"](107,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Leave it blank or specify 0 to disable this quota."])),(l()(),u["ɵeld"](109,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),u["ɵeld"](110,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["A valid quota should be greater than 0."])),(l()(),u["ɵeld"](112,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](113,0,null,null,7,"input",[["class","form-control"],["formControlName","max_objects"],["id","max_objects"],["min","0"],["name","max_objects"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var i=!0;return"input"===n&&(i=!1!==u["ɵnov"](l,114)._handleInput(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,114).onTouched()&&i),"compositionstart"===n&&(i=!1!==u["ɵnov"](l,114)._compositionStart()&&i),"compositionend"===n&&(i=!1!==u["ɵnov"](l,114)._compositionEnd(e.target.value)&&i),"change"===n&&(i=!1!==u["ɵnov"](l,115).onChange(e.target.value)&&i),"input"===n&&(i=!1!==u["ɵnov"](l,115).onChange(e.target.value)&&i),"blur"===n&&(i=!1!==u["ɵnov"](l,115).onTouched()&&i),i}),null,null)),u["ɵdid"](114,16384,null,0,t.e,[u.Renderer2,u.ElementRef,[2,t.b]],null,null),u["ɵdid"](115,16384,null,0,t.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,t.p,(function(l,n){return[l,n]}),[t.e,t.w]),u["ɵdid"](117,671744,[[37,4]],0,t.j,[[3,t.d],[8,null],[8,null],[6,t.p],[2,t.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,t.q,null,[t.j]),u["ɵdid"](119,16384,null,0,t.r,[[4,t.q]],null,null),u["ɵdid"](120,16384,null,0,Vl.h,[[3,t.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,vi)),u["ɵdid"](122,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](123,0,null,null,2,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),u["ɵeld"](124,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],(function(l,n,e){var u=!0;return"changes"===n&&(u=!1!==(l.component.currentConfigurationValues=e())&&u),u}),fu.b,fu.a)),u["ɵdid"](125,114688,null,0,gu.a,[N.a,ze.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),u["ɵeld"](126,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),u["ɵeld"](127,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),u["ɵeld"](128,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.submit()&&u),u}),Dl.b,Dl.a)),u["ɵdid"](129,114688,null,0,kl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["ɵted"](130,0,[""," "," "])),u["ɵppd"](131,1),u["ɵppd"](132,1),(l()(),u["ɵeld"](133,0,null,null,1,"cd-back-button",[],null,null,null,ql.b,ql.a)),u["ɵdid"](134,49152,null,0,xl.a,[El.Location,i.b],null,null)],(function(l,n){var e=n.component;l(n,2,0,e.form),l(n,5,0,e.form),l(n,13,0),l(n,20,0,""),l(n,23,0,"name"),l(n,26,0,"name"),l(n,28,0,e.form.showError("name",u["ɵnov"](n,2),"required")),l(n,30,0,e.form.showError("name",u["ɵnov"](n,2),"uniqueName")),l(n,32,0,e.form.showError("name",u["ɵnov"](n,2),"rbdPool")),l(n,34,0,e.form.showError("name",u["ɵnov"](n,2),"pattern")),l(n,36,0),l(n,45,0,"poolType"),l(n,48,0,"poolType"),l(n,50,0,""),l(n,51,0,""),l(n,54,0,e.data.poolTypes),l(n,56,0,e.form.showError("poolType",u["ɵnov"](n,2),"required")),l(n,58,0,e.isReplicated||e.isErasure),l(n,60,0),l(n,67,0,e.data.applications.selected,e.data.applications.available,e.data.applications.messages,4,!0,e.data.applications.validators),l(n,69,0,e.isErasure||e.isReplicated),l(n,71,0,e.info.is_all_bluestore),l(n,76,0),l(n,93,0,"max_bytes"),l(n,95,0,"GiB"),l(n,97,0,"max_bytes"),l(n,99,0),l(n,117,0,"max_objects"),l(n,120,0,"max_objects"),l(n,122,0,e.form.showError("max_objects",u["ɵnov"](n,2),"min")),l(n,125,0,e.form,e.initializeConfigData),l(n,129,0,u["ɵnov"](n,2))}),(function(l,n){var e=n.component;l(n,0,0,u["ɵnov"](n,4).ngClassUntouched,u["ɵnov"](n,4).ngClassTouched,u["ɵnov"](n,4).ngClassPristine,u["ɵnov"](n,4).ngClassDirty,u["ɵnov"](n,4).ngClassValid,u["ɵnov"](n,4).ngClassInvalid,u["ɵnov"](n,4).ngClassPending);var i=u["ɵunv"](n,8,0,l(n,9,0,u["ɵnov"](n.parent,0),e.action)),t=u["ɵunv"](n,8,1,l(n,10,0,u["ɵnov"](n.parent,1),e.resource));l(n,8,0,i,t),l(n,12,0,u["ɵnov"](n,13).hasErrors,u["ɵnov"](n,13).hasSuccess),l(n,19,0,u["ɵnov"](n,25).ngClassUntouched,u["ɵnov"](n,25).ngClassTouched,u["ɵnov"](n,25).ngClassPristine,u["ɵnov"](n,25).ngClassDirty,u["ɵnov"](n,25).ngClassValid,u["ɵnov"](n,25).ngClassInvalid,u["ɵnov"](n,25).ngClassPending,u["ɵnov"](n,26).validClass,u["ɵnov"](n,26).invalidClass),l(n,35,0,u["ɵnov"](n,36).hasErrors,u["ɵnov"](n,36).hasSuccess),l(n,42,0,u["ɵnov"](n,47).ngClassUntouched,u["ɵnov"](n,47).ngClassTouched,u["ɵnov"](n,47).ngClassPristine,u["ɵnov"](n,47).ngClassDirty,u["ɵnov"](n,47).ngClassValid,u["ɵnov"](n,47).ngClassInvalid,u["ɵnov"](n,47).ngClassPending,u["ɵnov"](n,48).validClass,u["ɵnov"](n,48).invalidClass),l(n,59,0,u["ɵnov"](n,60).hasErrors,u["ɵnov"](n,60).hasSuccess),l(n,75,0,u["ɵnov"](n,76).hasErrors,u["ɵnov"](n,76).hasSuccess),l(n,90,0,u["ɵnov"](n,96).ngClassUntouched,u["ɵnov"](n,96).ngClassTouched,u["ɵnov"](n,96).ngClassPristine,u["ɵnov"](n,96).ngClassDirty,u["ɵnov"](n,96).ngClassValid,u["ɵnov"](n,96).ngClassInvalid,u["ɵnov"](n,96).ngClassPending,u["ɵnov"](n,97).validClass,u["ɵnov"](n,97).invalidClass),l(n,98,0,u["ɵnov"](n,99).hasErrors,u["ɵnov"](n,99).hasSuccess),l(n,113,0,u["ɵnov"](n,119).ngClassUntouched,u["ɵnov"](n,119).ngClassTouched,u["ɵnov"](n,119).ngClassPristine,u["ɵnov"](n,119).ngClassDirty,u["ɵnov"](n,119).ngClassValid,u["ɵnov"](n,119).ngClassInvalid,u["ɵnov"](n,119).ngClassPending,u["ɵnov"](n,120).validClass,u["ɵnov"](n,120).invalidClass),l(n,123,0,e.isErasure||-1===e.data.applications.selected.indexOf("rbd"));var a=u["ɵunv"](n,130,0,l(n,131,0,u["ɵnov"](n.parent,0),e.action)),o=u["ɵunv"](n,130,1,l(n,132,0,u["ɵnov"](n.parent,1),e.resource));l(n,130,0,a,o)}))}function Ci(l){return u["ɵvid"](0,[u["ɵpid"](0,El.TitleCasePipe,[]),u["ɵpid"](0,Nl.a,[]),u["ɵqud"](671088640,1,{crushInfoTabs:0}),u["ɵqud"](671088640,2,{crushDeletionBtn:0}),u["ɵqud"](671088640,3,{ecpInfoTabs:0}),u["ɵqud"](671088640,4,{ecpDeletionBtn:0}),(l()(),u["ɵand"](16777216,null,null,1,null,hu)),u["ɵdid"](7,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](8,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,bi)),u["ɵdid"](10,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,7,0,!(e.info&&e.ecProfiles)),l(n,10,0,e.info&&e.ecProfiles)}),null)}function Ri(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-pool-form",[],null,null,null,Ci,pu)),u["ɵdid"](1,114688,null,0,k,[I.a,re.a,re.m,Fl.b,m.a,E.a,N.a,Fl.b,y.a,c,d,s.a,i.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Ii=u["ɵccf"]("cd-pool-form",k,Ri,{},{},[]);e.d(n,"PoolModuleNgFactory",(function(){return Ei})),e.d(n,"RoutedPoolModuleNgFactory",(function(){return Ni}));var Ei=u["ɵcmf"]($,[],(function(l){return u["ɵmod"]([u["ɵmpd"](512,u.ComponentFactoryResolver,u["ɵCodegenComponentFactoryResolver"],[[8,[Z.a,H.a,X.a,Y.a,Q.a,Q.b,ll.a,nl.a,el.a,ul.a,il.a,tl.a,al.a,ol.a,sl.a,rl.a,dl.a,cl.a,cl.c,cl.b,cl.d,ml.a,fl.a,gl.a,pl.a,hl.a,vl.a,bl.a,Cl.a,Rl.a,Il.a,Wl,Fn]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["ɵmpd"](4608,El.NgLocalization,El.NgLocaleLocalization,[u.LOCALE_ID,[2,El["ɵangular_packages_common_common_a"]]]),u["ɵmpd"](4608,Pn.y,Pn.y,[El.DOCUMENT]),u["ɵmpd"](4608,Pn.r,Pn.r,[]),u["ɵmpd"](4608,Pn.a,Pn.a,[]),u["ɵmpd"](4608,t.D,t.D,[]),u["ɵmpd"](4608,An.a,An.a,[]),u["ɵmpd"](4608,Bn.a,Bn.a,[]),u["ɵmpd"](4608,On.a,On.a,[s.a]),u["ɵmpd"](4608,El.DatePipe,El.DatePipe,[u.LOCALE_ID]),u["ɵmpd"](4608,zn.a,zn.a,[]),u["ɵmpd"](4608,Ln.a,Ln.a,[]),u["ɵmpd"](4608,N.a,N.a,[]),u["ɵmpd"](4608,I.a,I.a,[N.a]),u["ɵmpd"](4608,jn.a,jn.a,[N.a]),u["ɵmpd"](4608,O.a,O.a,[N.a]),u["ɵmpd"](4608,Un.a,Un.a,[]),u["ɵmpd"](4608,Mn.a,Mn.a,[]),u["ɵmpd"](4608,Gn.a,Gn.a,[]),u["ɵmpd"](4608,$n.a,$n.a,[]),u["ɵmpd"](4608,Kn.a,Kn.a,[El.DatePipe]),u["ɵmpd"](4608,Jn.a,Jn.a,[]),u["ɵmpd"](4608,Wn.a,Wn.a,[]),u["ɵmpd"](4608,Zn.a,Zn.a,[]),u["ɵmpd"](4608,Hn.a,Hn.a,[]),u["ɵmpd"](4608,Xn.a,Xn.a,[]),u["ɵmpd"](4608,Yn.a,Yn.a,[s.a]),u["ɵmpd"](4608,Nl.a,Nl.a,[]),u["ɵmpd"](4608,Qn.a,Qn.a,[]),u["ɵmpd"](4608,le.a,le.a,[]),u["ɵmpd"](4608,t.h,t.h,[]),u["ɵmpd"](4608,ne.b,ne.b,[]),u["ɵmpd"](4608,ee.a,ee.a,[]),u["ɵmpd"](4608,ue.a,ue.a,[u.NgZone,u.RendererFactory2,u.PLATFORM_ID]),u["ɵmpd"](4608,ie.a,ie.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,ue.a,u.ApplicationRef]),u["ɵmpd"](4608,te.c,te.c,[]),u["ɵmpd"](4608,ae.a,ae.a,[]),u["ɵmpd"](4608,Fl.b,Fl.b,[u.RendererFactory2,ie.a]),u["ɵmpd"](4608,oe.f,oe.f,[]),u["ɵmpd"](4608,E.a,E.a,[]),u["ɵmpd"](4608,se.a,se.a,[re.m,E.a]),u["ɵmpd"](4608,de.f,de.f,[]),u["ɵmpd"](4608,ce.t,ce.t,[]),u["ɵmpd"](4608,ce.v,ce.v,[]),u["ɵmpd"](4608,ce.a,ce.a,[]),u["ɵmpd"](4608,ce.h,ce.h,[]),u["ɵmpd"](4608,ce.d,ce.d,[]),u["ɵmpd"](4608,ce.j,ce.j,[]),u["ɵmpd"](4608,ce.l,ce.l,[]),u["ɵmpd"](4608,ce.u,ce.u,[ce.v,ce.l]),u["ɵmpd"](4608,me.a,me.a,[]),u["ɵmpd"](1073742336,El.CommonModule,El.CommonModule,[]),u["ɵmpd"](1073742336,Pn.u,Pn.u,[]),u["ɵmpd"](1073742336,t.C,t.C,[]),u["ɵmpd"](1073742336,t.n,t.n,[]),u["ɵmpd"](1073742336,oe.e,oe.e,[]),u["ɵmpd"](1073742336,fe.a,fe.a,[]),u["ɵmpd"](1073742336,t.y,t.y,[]),u["ɵmpd"](1073742336,ne.c,ne.c,[]),u["ɵmpd"](1073742336,ee.d,ee.d,[]),u["ɵmpd"](1073742336,te.d,te.d,[]),u["ɵmpd"](1073742336,ae.d,ae.d,[]),u["ɵmpd"](1073742336,ge.b,ge.b,[]),u["ɵmpd"](1073742336,Fl.e,Fl.e,[]),u["ɵmpd"](1073742336,pe.a,pe.a,[]),u["ɵmpd"](1073742336,Vl.f,Vl.f,[]),u["ɵmpd"](1073742336,he.ClickOutsideModule,he.ClickOutsideModule,[]),u["ɵmpd"](1073742336,ve.b,ve.b,[]),u["ɵmpd"](1073742336,re.q,re.q,[[2,re.v],[2,re.m]]),u["ɵmpd"](1073742336,be.a,be.a,[]),u["ɵmpd"](1073742336,Ce.a,Ce.a,[]),u["ɵmpd"](1073742336,r.a,r.a,[]),u["ɵmpd"](1073742336,Re.a,Re.a,[]),u["ɵmpd"](1073742336,de.d,de.d,[]),u["ɵmpd"](1073742336,Ie.a,Ie.a,[]),u["ɵmpd"](1073742336,Ee.a,Ee.a,[]),u["ɵmpd"](1073742336,ce.g,ce.g,[]),u["ɵmpd"](1073742336,Ne.b,Ne.b,[]),u["ɵmpd"](1073742336,ye.a,ye.a,[]),u["ɵmpd"](1073742336,$,$,[]),u["ɵmpd"](256,u.LOCALE_ID,"en-US",[]),u["ɵmpd"](256,oe.a,{autoClose:!0,insideClick:!1},[]),u["ɵmpd"](256,u.TRANSLATIONS_FORMAT,"xlf",[])])})),Ni=u["ɵcmf"](W,[],(function(l){return u["ɵmod"]([u["ɵmpd"](512,u.ComponentFactoryResolver,u["ɵCodegenComponentFactoryResolver"],[[8,[Z.a,H.a,X.a,Y.a,Q.a,Q.b,ll.a,nl.a,el.a,ul.a,il.a,tl.a,al.a,ol.a,sl.a,rl.a,dl.a,cl.a,cl.c,cl.b,cl.d,ml.a,fl.a,gl.a,pl.a,hl.a,vl.a,bl.a,Cl.a,Rl.a,Il.a,Wl,Fn,iu,Ii]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["ɵmpd"](4608,El.NgLocalization,El.NgLocaleLocalization,[u.LOCALE_ID,[2,El["ɵangular_packages_common_common_a"]]]),u["ɵmpd"](4608,Pn.y,Pn.y,[El.DOCUMENT]),u["ɵmpd"](4608,Pn.r,Pn.r,[]),u["ɵmpd"](4608,Pn.a,Pn.a,[]),u["ɵmpd"](4608,t.D,t.D,[]),u["ɵmpd"](4608,An.a,An.a,[]),u["ɵmpd"](4608,Bn.a,Bn.a,[]),u["ɵmpd"](4608,On.a,On.a,[s.a]),u["ɵmpd"](4608,El.DatePipe,El.DatePipe,[u.LOCALE_ID]),u["ɵmpd"](4608,zn.a,zn.a,[]),u["ɵmpd"](4608,Ln.a,Ln.a,[]),u["ɵmpd"](4608,N.a,N.a,[]),u["ɵmpd"](4608,I.a,I.a,[N.a]),u["ɵmpd"](4608,jn.a,jn.a,[N.a]),u["ɵmpd"](4608,O.a,O.a,[N.a]),u["ɵmpd"](4608,Un.a,Un.a,[]),u["ɵmpd"](4608,Mn.a,Mn.a,[]),u["ɵmpd"](4608,Gn.a,Gn.a,[]),u["ɵmpd"](4608,$n.a,$n.a,[]),u["ɵmpd"](4608,Kn.a,Kn.a,[El.DatePipe]),u["ɵmpd"](4608,Jn.a,Jn.a,[]),u["ɵmpd"](4608,Wn.a,Wn.a,[]),u["ɵmpd"](4608,Zn.a,Zn.a,[]),u["ɵmpd"](4608,Hn.a,Hn.a,[]),u["ɵmpd"](4608,Xn.a,Xn.a,[]),u["ɵmpd"](4608,Yn.a,Yn.a,[s.a]),u["ɵmpd"](4608,Nl.a,Nl.a,[]),u["ɵmpd"](4608,Qn.a,Qn.a,[]),u["ɵmpd"](4608,le.a,le.a,[]),u["ɵmpd"](4608,t.h,t.h,[]),u["ɵmpd"](4608,ne.b,ne.b,[]),u["ɵmpd"](4608,ee.a,ee.a,[]),u["ɵmpd"](4608,ue.a,ue.a,[u.NgZone,u.RendererFactory2,u.PLATFORM_ID]),u["ɵmpd"](4608,ie.a,ie.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,ue.a,u.ApplicationRef]),u["ɵmpd"](4608,te.c,te.c,[]),u["ɵmpd"](4608,ae.a,ae.a,[]),u["ɵmpd"](4608,Fl.b,Fl.b,[u.RendererFactory2,ie.a]),u["ɵmpd"](4608,oe.f,oe.f,[]),u["ɵmpd"](4608,E.a,E.a,[]),u["ɵmpd"](4608,se.a,se.a,[re.m,E.a]),u["ɵmpd"](4608,de.f,de.f,[]),u["ɵmpd"](4608,ce.t,ce.t,[]),u["ɵmpd"](4608,ce.v,ce.v,[]),u["ɵmpd"](4608,ce.a,ce.a,[]),u["ɵmpd"](4608,ce.h,ce.h,[]),u["ɵmpd"](4608,ce.d,ce.d,[]),u["ɵmpd"](4608,ce.j,ce.j,[]),u["ɵmpd"](4608,ce.l,ce.l,[]),u["ɵmpd"](4608,ce.u,ce.u,[ce.v,ce.l]),u["ɵmpd"](4608,me.a,me.a,[]),u["ɵmpd"](1073742336,El.CommonModule,El.CommonModule,[]),u["ɵmpd"](1073742336,Pn.u,Pn.u,[]),u["ɵmpd"](1073742336,t.C,t.C,[]),u["ɵmpd"](1073742336,t.n,t.n,[]),u["ɵmpd"](1073742336,oe.e,oe.e,[]),u["ɵmpd"](1073742336,fe.a,fe.a,[]),u["ɵmpd"](1073742336,t.y,t.y,[]),u["ɵmpd"](1073742336,ne.c,ne.c,[]),u["ɵmpd"](1073742336,ee.d,ee.d,[]),u["ɵmpd"](1073742336,te.d,te.d,[]),u["ɵmpd"](1073742336,ae.d,ae.d,[]),u["ɵmpd"](1073742336,ge.b,ge.b,[]),u["ɵmpd"](1073742336,Fl.e,Fl.e,[]),u["ɵmpd"](1073742336,pe.a,pe.a,[]),u["ɵmpd"](1073742336,Vl.f,Vl.f,[]),u["ɵmpd"](1073742336,he.ClickOutsideModule,he.ClickOutsideModule,[]),u["ɵmpd"](1073742336,ve.b,ve.b,[]),u["ɵmpd"](1073742336,re.q,re.q,[[2,re.v],[2,re.m]]),u["ɵmpd"](1073742336,be.a,be.a,[]),u["ɵmpd"](1073742336,Ce.a,Ce.a,[]),u["ɵmpd"](1073742336,r.a,r.a,[]),u["ɵmpd"](1073742336,Re.a,Re.a,[]),u["ɵmpd"](1073742336,de.d,de.d,[]),u["ɵmpd"](1073742336,Ie.a,Ie.a,[]),u["ɵmpd"](1073742336,Ee.a,Ee.a,[]),u["ɵmpd"](1073742336,ce.g,ce.g,[]),u["ɵmpd"](1073742336,Ne.b,Ne.b,[]),u["ɵmpd"](1073742336,ye.a,ye.a,[]),u["ɵmpd"](1073742336,$,$,[]),u["ɵmpd"](1073742336,W,W,[]),u["ɵmpd"](256,u.LOCALE_ID,"en-US",[]),u["ɵmpd"](256,oe.a,{autoClose:!0,insideClick:!1},[]),u["ɵmpd"](1024,re.k,(function(){return[[{path:"",component:G},{path:"create",component:k,data:K},{path:"edit/:name",component:k,data:J}]]}),[]),u["ɵmpd"](256,u.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.c0ad55977c0a220b3203.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.c0ad55977c0a220b3203.js
deleted file mode 100644 (file)
index 96a4cd1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{J6Oi:function(l,n,u){"use strict";u.r(n);var e=u("8Y7J"),a=u("k/xb"),t=u("MdoF"),o=u("ES0t"),d=u("Xg1U"),i=u("z5nN"),r=u("iutN"),s=u("pMnS"),c=u("EEJc"),p=u("PEr+"),m=u("a40w"),g=u("hfeG"),f=u("QUzE"),v=u("E7j4"),C=u("xvu0"),b=u("RIVN"),h=u("nP0W"),I=u("VBM6"),R=u("atuK"),N=u("JIi+"),w=u("0BYw"),E=u("3IYD"),T=u("I4Qz"),y=u("0rTx"),V=u("lz+O"),x=u("u2XS"),q=u("nhAp"),k=u("l7Jr"),_=u("bUo2"),D=u("SVse"),F=u("yT6U"),P=u("4DD9"),S=u("iExv"),A=u("GiVz"),O=u("85J/"),j=u("+0ag"),U=u("aXbf"),B=u("Fgil"),$=u("IzCI"),M=u("o4+5"),L=u("Dwqy"),z=u("uYzU"),G=u("FFMq"),K=u("E2fk"),Z=u("a0VL"),J=u("nSDx"),W=u("SB+Q"),Q=u("TYzs"),Y=u("BQkM"),X=u("dEH0"),H=u("G1/K"),ll=u("8xTl"),nl=u("TJUb"),ul=u("efK2"),el=u("s7LF"),al=u("CNMR"),tl=u("KOzp"),ol=u("2uy1"),dl=u("z/SZ"),il=u("38Bd"),rl=u("978R"),sl=u("LqlI"),cl=u("w9WL"),pl=u("FE24"),ml=u("aexS"),gl=u("Avrn"),fl=u("iInd"),vl=u("2ZVE"),Cl=u("ienR"),bl=u("gk6K"),hl=u("9Xeq"),Il=u("hrfs"),Rl=u("yGOH"),Nl=u("+gVj"),wl=u("bxSN"),El=u("WF9J"),Tl=u("V/fk"),yl=u("ChqD"),Vl=u("pL04"),xl=u("PCNd"),ql=u("kccj"),kl=u("yYhs"),_l=u("C6Ij"),Dl=u("AWcq"),Fl=u("pKUh");class Pl{constructor(l,n){this.authStorageService=l,this.router=n,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnInit(){this.url=this.router.url}navigateTo(l){this.router.navigate([l])}}var Sl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Al(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd/performance")&&e),e}),null,null)),e["ɵdid"](1,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"})],(function(l,n){l(n,1,0,"Overall Performance","/block/rbd/performance"===n.component.url)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function Ol(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Fl.b,Fl.a)),e["ɵdid"](1,180224,null,0,vl.e,[vl.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,1,"tab",[["heading","Images"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd")&&e),e}),null,null)),e["ɵdid"](3,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](4,0,null,0,1,"tab",[["heading","Namespaces"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd/namespaces")&&e),e}),null,null)),e["ɵdid"](5,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](6,0,null,0,1,"tab",[["heading","Trash"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/rbd/trash")&&e),e}),null,null)),e["ɵdid"](7,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵand"](16777216,null,0,1,null,Al)),e["ɵdid"](9,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Images","/block/rbd"===u.url),l(n,5,0,"Namespaces","/block/rbd/namespaces"===u.url),l(n,7,0,"Trash","/block/rbd/trash"===u.url),l(n,9,0,u.grafanaPermission.read)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,4,0,e["ɵnov"](n,5).id,e["ɵnov"](n,5).active,e["ɵnov"](n,5).addClass,e["ɵnov"](n,5).role,e["ɵnov"](n,5).ariaLabelledby),l(n,6,0,e["ɵnov"](n,7).id,e["ɵnov"](n,7).active,e["ɵnov"](n,7).addClass,e["ɵnov"](n,7).role,e["ɵnov"](n,7).ariaLabelledby)}))}var jl=u("25BL"),Ul=u("uIqm"),Bl=u("NUGo"),$l=u("S7zO"),Ml=u("JBea"),Ll=u("VTlA"),zl=u("ufoC"),Gl=u("mSOc"),Kl=u("EgGo"),Zl=u("5GyT"),Jl=u("F83c"),Wl=u("kn/O"),Ql=u("sne2"),Yl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Xl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,_l.b,_l.a)),e["ɵdid"](1,114688,null,0,Dl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],(function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)}),null)}function Hl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,0,"div",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(l,n){l(n,0,0,"Only available for RBD images with <strong>fast-diff</strong> enabled")}))}function ln(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["/",""]))],null,(function(l,n){l(n,1,0,n.parent.parent.context.value.pool_namespace)}))}function nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,ln)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵted"](4,null,["/","@",""]))],(function(l,n){l(n,3,0,n.parent.context.value.pool_namespace)}),(function(l,n){l(n,1,0,n.parent.context.value.pool_name),l(n,4,0,n.parent.context.value.image_name,n.parent.context.value.snap_name)}))}function un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function en(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,nn)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,un)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,n.context.value),l(n,3,0,!n.context.value)}),null)}function an(l){return e["ɵvid"](0,[(l()(),e["ɵted"](-1,null,[" You are about to flatten "])),(l()(),e["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](2,null,["",""])),(l()(),e["ɵted"](-1,null,[". "])),(l()(),e["ɵeld"](4,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" All blocks will be copied from parent "])),(l()(),e["ɵeld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](8,null,["",""])),(l()(),e["ɵted"](-1,null,[" to child "])),(l()(),e["ɵeld"](10,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](11,null,["",""])),(l()(),e["ɵted"](-1,null,[".\n"]))],null,(function(l,n){l(n,2,0,n.context.$implicit.child),l(n,8,0,n.context.$implicit.parent),l(n,11,0,n.context.$implicit.child)}))}function tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["",""]))],null,(function(l,n){l(n,1,0,n.context.$implicit)}))}function on(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The following snapshots are currently protected and will be removed:"])),(l()(),e["ɵeld"](3,0,null,null,2,"ul",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,tn)),e["ɵdid"](5,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,5,0,n.parent.parent.context.snapshots)}),null)}function dn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"div",[["class","alert alert-warning"],["role","alert"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Deleting this image will also delete all its snapshots."])),(l()(),e["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,on)),e["ɵdid"](5,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,5,0,n.parent.context.snapshots.length>0)}),null)}function rn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,dn)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,n.context.hasSnapshots)}),null)}function sn(l){return e["ɵvid"](0,[e["ɵqud"](402653184,1,{table:0}),e["ɵqud"](671088640,2,{usageTpl:0}),e["ɵqud"](402653184,3,{parentTpl:0}),e["ɵqud"](671088640,4,{nameTpl:0}),e["ɵqud"](402653184,5,{flattenTpl:0}),e["ɵqud"](402653184,6,{deleteTpl:0}),(l()(),e["ɵeld"](6,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](7,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,Xl)),e["ɵdid"](9,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](10,0,null,null,5,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(l,n,u){var e=!0,a=l.component;return"setExpandedRow"===n&&(e=!1!==a.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==a.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](11,2867200,[[1,4],["table",4]],0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"],searchableObjects:[7,"searchableObjects"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](12,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](13,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](14,0,null,3,1,"cd-rbd-details",[["cdTableDetail",""]],null,null,null,N.c,N.b)),e["ɵdid"](15,49152,null,0,Ml.a,[],{selection:[0,"selection"]},null),(l()(),e["ɵand"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,Hl)),(l()(),e["ɵand"](0,[[3,2],["parentTpl",2]],null,0,null,en)),(l()(),e["ɵand"](0,[[5,2],["flattenTpl",2]],null,0,null,an)),(l()(),e["ɵand"](0,[[6,2],["deleteTpl",2]],null,0,null,rn))],(function(l,n){var u=n.component;l(n,7,0),l(n,9,0,u.viewCacheStatusList),l(n,11,0,u.images,u.columns,"flex",!0,"id","true","single",!0),l(n,13,0,u.permission,u.selection,u.tableActions),l(n,15,0,u.expandedRow)}),null)}function cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"cd-rbd-list",[],null,null,null,sn,Yl)),e["ɵprd"](131584,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵprd"](256,null,Kl.a,Zl.b,[]),e["ɵdid"](3,114688,null,0,Zl.a,[ml.a,Jl.a,B.a,M.a,sl.b,Wl.a,Ll.a,A.a,Kl.a,Ql.b],null,null)],(function(l,n){l(n,3,0)}),null)}var pn=e["ɵccf"]("cd-rbd-list",Zl.a,cn,{},{},[]),mn=u("Z5tW"),gn=u("Ekvf"),fn=u("9nlD"),vn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](1,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵeld"](2,0,null,null,4,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],(function(l,n,u){var e=!0,a=l.component;return"fetchData"===n&&(e=!1!==a.refresh()&&e),"updateSelection"===n&&(e=!1!==a.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](3,2867200,null,0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["ɵeld"](4,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](6,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,3,0,u.namespaces,u.columns,"flex","id","true","single"),l(n,6,0,u.permission,u.selection,u.tableActions)}),null)}function bn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rbd-namespace-list",[],null,null,null,Cn,vn)),e["ɵprd"](135680,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵdid"](2,114688,null,0,mn.a,[ml.a,Jl.a,gn.a,sl.b,fn.a,A.a,Ql.b],null,null)],(function(l,n){l(n,2,0)}),null)}var hn=e["ɵccf"]("cd-rbd-namespace-list",mn.a,bn,{},{},[]),In=u("chpi"),Rn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,_l.b,_l.a)),e["ɵdid"](1,114688,null,0,Dl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],(function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)}),null)}function wn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"button",[["class","btn btn-light"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.purgeModal()&&e),e}),null,null)),(l()(),e["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](3,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](4,1),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Purge Trash"]))],(function(l,n){var u=l(n,4,0,n.component.icons.destroy);l(n,3,0,u)}),(function(l,n){l(n,0,0,n.component.disablePurgeBtn)}))}function En(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Expired at"]))],null,null)}function Tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Protected until"]))],null,null)}function yn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,En)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Tn)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵted"](4,null,[" ","\n"])),e["ɵppd"](5,1)],(function(l,n){l(n,1,0,n.context.row.cdIsExpired),l(n,3,0,!n.context.row.cdIsExpired)}),(function(l,n){var u=e["ɵunv"](n,4,0,l(n,5,0,e["ɵnov"](n.parent,0),n.context.value));l(n,4,0,u)}))}function Vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"p",[["class","text-danger"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,3,"strong",[],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["ɵted"](3,null,["This image is protected until ","."])),e["ɵppd"](4,1)],null,(function(l,n){var u=e["ɵunv"](n,3,0,l(n,4,0,e["ɵnov"](n.parent.parent,0),n.parent.context.$implicit));l(n,3,0,u)}))}function xn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Vn)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,!n.component.isExpired(n.context.$implicit))}),null)}function qn(l){return e["ɵvid"](0,[e["ɵpid"](0,Z.a,[D.DatePipe]),e["ɵqud"](402653184,1,{table:0}),e["ɵqud"](402653184,2,{expiresTpl:0}),e["ɵqud"](402653184,3,{deleteTpl:0}),(l()(),e["ɵeld"](4,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](5,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,Nn)),e["ɵdid"](7,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](8,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](9,2867200,[[1,4]],0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["ɵeld"](10,0,null,1,4,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](12,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,wn)),e["ɵdid"](14,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,[[2,2],["expiresTpl",2]],null,0,null,yn)),(l()(),e["ɵand"](0,[[3,2],["deleteTpl",2]],null,0,null,xn))],(function(l,n){var u=n.component;l(n,5,0),l(n,7,0,u.viewCacheStatusList),l(n,9,0,u.images,u.columns,"flex","id","true","single"),l(n,12,0,u.permission,u.selection,u.tableActions),l(n,14,0,u.permission.delete)}),null)}function kn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rbd-trash-list",[],null,null,null,qn,Rn)),e["ɵprd"](131584,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵdid"](2,114688,null,0,In.a,[ml.a,Jl.a,sl.b,Z.a,Ll.a,Wl.a,A.a,Ql.b],null,null)],(function(l,n){l(n,2,0)}),null)}var _n=e["ɵccf"]("cd-rbd-trash-list",In.a,kn,{},{},[]),Dn=u("a278"),Fn=u("insk"),Pn=u("cUpR"),Sn=u("20UP"),An=u("WkyA"),On=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function jn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-tabs",[],null,null,null,Ol,Sl)),e["ɵdid"](1,114688,null,0,Pl,[ml.a,fl.m],null,null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","41FrpeUiz"]],null,null,null,Dn.b,Dn.a)),e["ɵdid"](3,638976,null,0,Fn.a,[Gl.a,Pn.b,Sn.a,j.a,A.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0),l(n,3,0,"rbd-overview?","two","41FrpeUiz")}),null)}function Un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-performance",[],null,null,null,jn,On)),e["ɵdid"](1,49152,null,0,An.a,[],null,null)],null,null)}var Bn=e["ɵccf"]("cd-rbd-performance",An.a,Un,{},{},[]),$n=u("mXUL"),Mn=u("4HWh"),Ln=u("p4Cf"),zn=u("IZUe"),Gn=u("EmSq"),Kn=u("BH9v"),Zn=u("rFfW"),Jn=u("o8EM"),Wn=u("gp3X"),Qn=u("sb0X"),Yn=u("KVJa"),Xn=u("Z21x"),Hn=u("MyVl"),lu=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,2,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," from"])),e["ɵppd"](6,1),(l()(),e["ɵeld"](7,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","parent"],["id","parent"],["name","parent"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,9).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,9)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](9,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](11,671744,[[1,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](13,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](14,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,0,"hr",[],null,null,null,null,null))],(function(l,n){l(n,1,0),l(n,11,0,"parent"),l(n,14,0,"parent")}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess);var a=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n.parent,0),u.action));l(n,5,0,a),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function uu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["'/' and '@' are not allowed."]))],null,null)}function au(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","pool"],["id","pool"],["name","pool"],["placeholder","Pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,1)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](3,671744,[[5,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"pool"),l(n,6,0,"pool")}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function ou(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- No rbd pools available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function du(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a pool --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function iu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)}),(function(l,n){l(n,3,0,n.context.$implicit.pool_name)}))}function ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","pool"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](3,671744,[[5,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,tu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ou)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,du)),e["ɵdid"](12,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,iu)),e["ɵdid"](14,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"pool"),l(n,6,0,"pool"),l(n,8,0,null===u.pools),l(n,10,0,null!==u.pools&&0===u.pools.length),l(n,12,0,null!==u.pools&&u.pools.length>0),l(n,14,0,u.pools)}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function cu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,4,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,2)],(function(l,n){var u=n.component;l(n,1,0);var e=l(n,8,0,u.icons.spinner,u.icons.spin);l(n,7,0,e)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess)}))}function pu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","namespace"],["id","namespace"],["name","namespace"],["placeholder","Namespace..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,1)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](3,671744,[[9,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"namespace"),l(n,6,0,"namespace")}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function mu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function gu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- No namespaces available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function fu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a namespace --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function vu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Cu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","namespace"],["id","namespace"],["name","namespace"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](3,671744,[[9,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,mu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,gu)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,fu)),e["ɵdid"](12,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vu)),e["ɵdid"](14,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"namespace"),l(n,6,0,"namespace"),l(n,8,0,null===u.pools),l(n,10,0,null!==u.pools&&0===u.pools.length),l(n,12,0,null!==u.pools&&u.pools.length>0),l(n,14,0,u.namespaces)}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function bu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,10,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","pool"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" Namespace "])),(l()(),e["ɵeld"](6,0,null,0,4,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,pu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Cu)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,8,0,"editing"===u.mode||!u.poolPermission.read),l(n,10,0,"editing"!==u.mode&&u.poolPermission.read)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess)}))}function hu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"],["placeholder","Data pool name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,1)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](3,671744,[[13,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"dataPool"),l(n,6,0,"dataPool")}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function Iu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- No data pools available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a data pool -- "]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function wu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)}),(function(l,n){l(n,3,0,n.context.$implicit.pool_name)}))}function Eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0,t=l.component;return"change"===n&&(a=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,1).onTouched()&&a),"change"===n&&(a=!1!==t.onDataPoolChange(u.target.value)&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](3,671744,[[13,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](5,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](6,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Iu)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ru)),e["ɵdid"](10,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Nu)),e["ɵdid"](12,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,wu)),e["ɵdid"](14,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"dataPool"),l(n,6,0,"dataPool"),l(n,8,0,null===u.dataPools),l(n,10,0,null!==u.dataPools&&0===u.dataPools.length),l(n,12,0,null!==u.dataPools&&u.dataPools.length>0),l(n,14,0,u.dataPools)}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function Tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function yu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,7,"label",[["class","cd-col-form-label"],["for","dataPool"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,4,"span",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpod"](8,{required:0}),(l()(),e["ɵted"](-1,null,["Data pool"])),(l()(),e["ɵeld"](10,0,null,null,1,"cd-helper",[["html","Dedicated pool that stores the object-data of the RBD."]],null,null,null,Mn.b,Mn.a)),e["ɵdid"](11,49152,null,0,Ln.a,[],{html:[0,"html"]},null),(l()(),e["ɵeld"](12,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,hu)),e["ɵdid"](14,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Eu)),e["ɵdid"](16,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Tu)),e["ɵdid"](18,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var a=l(n,8,0,"editing"!==u.mode);l(n,7,0,a),l(n,11,0,"Dedicated pool that stores the object-data of the RBD."),l(n,14,0,"editing"===u.mode||!u.poolPermission.read),l(n,16,0,"editing"!==u.mode&&u.poolPermission.read),l(n,18,0,u.rbdForm.showError("dataPool",e["ɵnov"](n.parent,5),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess)}))}function Vu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function xu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["You have to increase the size."]))],null,null)}function qu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-helper",[],null,null,null,Mn.b,Mn.a)),e["ɵdid"](1,49152,null,0,Ln.a,[],{html:[0,"html"]},null)],(function(l,n){l(n,1,0,e["ɵinlineInterpolate"](1,"",n.parent.context.$implicit.helperHtml,""))}),null)}function ku(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,2).onChange(u.target.checked)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,2).onTouched()&&a),a}),null,null)),e["ɵdid"](2,16384,null,0,el.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.c]),e["ɵdid"](4,671744,[[17,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](6,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](7,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,qu)),e["ɵdid"](11,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,7,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,11,0,n.context.$implicit.helperHtml)}),(function(l,n){l(n,1,1,[e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,""),e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,""),e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass]),l(n,8,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,9,0,n.context.$implicit.desc)}))}function _u(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"a",[["class","float-right margin-right-md"],["href",""]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(l.component.advancedEnabled=!0,e=!1),e}),null,null)),(l()(),e["ɵted"](-1,null,["Advanced..."]))],null,null)}function Du(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Fu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Pu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required because stripe count is defined!"]))],null,null)}function Su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Stripe unit is greater than object size."]))],null,null)}function Au(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required because stripe unit is defined!"]))],null,null)}function Ou(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Stripe count must be greater than 0."]))],null,null)}function ju(l){return e["ɵvid"](0,[e["ɵpid"](0,D.TitleCasePipe,[]),e["ɵpid"](0,ll.a,[]),(l()(),e["ɵeld"](2,0,null,null,187,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,186,"form",[["name","rbdForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var a=!0;return"submit"===n&&(a=!1!==e["ɵnov"](l,5).onSubmit(u)&&a),"reset"===n&&(a=!1!==e["ɵnov"](l,5).onReset()&&a),"submit"===n&&(a=!1!==e["ɵnov"](l,8).onSubmit()&&a),a}),null,null)),e["ɵdid"](4,16384,null,0,el.G,[],null,null),e["ɵdid"](5,540672,[["formDir",4]],0,el.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,el.d,null,[el.l]),e["ɵdid"](7,16384,null,0,el.s,[[4,el.d]],null,null),e["ɵdid"](8,16384,null,0,Nl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](9,0,null,null,180,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](11,null,[""," ",""])),e["ɵppd"](12,1),e["ɵppd"](13,1),(l()(),e["ɵeld"](14,0,null,null,166,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,nu)),e["ɵdid"](16,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](17,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](18,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](21,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](23,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](24,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,25)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,25).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,25)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,25)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](25,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](27,671744,[[3,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](29,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](30,4210688,null,0,zn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](31,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,uu)),e["ɵdid"](33,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,eu)),e["ɵdid"](35,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](36,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onPoolChange(u.target.value)&&e),e}),$n.b,$n.a)),e["ɵdid"](37,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](40,0,null,0,4,"label",[["class","cd-col-form-label"],["for","pool"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](42,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](43,{required:0}),(l()(),e["ɵted"](-1,null,["Pool"])),(l()(),e["ɵeld"](45,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,au)),e["ɵdid"](47,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ru)),e["ɵdid"](49,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,su)),e["ɵdid"](51,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,cu)),e["ɵdid"](53,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bu)),e["ɵdid"](55,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](56,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](57,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](60,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](62,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","useDataPool"],["id","useDataPool"],["name","useDataPool"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0,t=l.component;return"change"===n&&(a=!1!==e["ɵnov"](l,63).onChange(u.target.checked)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,63).onTouched()&&a),"change"===n&&(a=!1!==t.onUseDataPoolChange()&&a),a}),null,null)),e["ɵdid"](63,16384,null,0,el.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.c]),e["ɵdid"](65,671744,[[11,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](67,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](68,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](69,0,null,null,1,"label",[["class","custom-control-label"],["for","useDataPool"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Use a dedicated data pool"])),(l()(),e["ɵand"](16777216,null,null,1,null,yu)),e["ɵdid"](72,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](73,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](74,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](77,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Size"])),(l()(),e["ɵeld"](79,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](80,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","GiB"],["formControlName","size"],["id","size"],["name","size"],["placeholder","e.g., 10GiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,81)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,81).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,81)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,81)._compositionEnd(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,86).onBlur(u.target.value)&&a),a}),null,null)),e["ɵdid"](81,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](83,671744,[[15,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](85,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](86,81920,null,0,Gn.a,[e.ElementRef,el.q,B.a,U.a],{defaultUnit:[0,"defaultUnit"]},null),e["ɵdid"](87,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Vu)),e["ɵdid"](89,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,xu)),e["ɵdid"](91,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](92,0,null,null,11,"div",[["class","form-group row"],["formGroupName","features"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](93,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](95,16384,null,0,el.s,[[4,el.d]],null,null),e["ɵdid"](96,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](99,0,null,0,1,"label",[["class","cd-col-form-label"],["for","features"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Features"])),(l()(),e["ɵeld"](101,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,ku)),e["ɵdid"](103,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](104,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](105,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,_u)),e["ɵdid"](107,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](108,0,null,null,72,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),e["ɵeld"](109,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Advanced"])),(l()(),e["ɵeld"](111,0,null,null,67,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](112,0,null,null,1,"h3",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Striping"])),(l()(),e["ɵeld"](114,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](115,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](118,0,null,0,1,"label",[["class","cd-col-form-label"],["for","size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Object size"])),(l()(),e["ɵeld"](120,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](121,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","obj_size"],["id","obj_size"],["name","obj_size"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,122).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,122).onTouched()&&a),a}),null,null)),e["ɵdid"](122,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](124,671744,[[19,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](126,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](127,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Du)),e["ɵdid"](129,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](130,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](131,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](134,0,null,0,4,"label",[["class","cd-col-form-label"],["for","stripingUnit"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](136,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](137,{required:0}),(l()(),e["ɵted"](-1,null,["Stripe unit"])),(l()(),e["ɵeld"](139,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](140,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","stripingUnit"],["id","stripingUnit"],["name","stripingUnit"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,141).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,141).onTouched()&&a),a}),null,null)),e["ɵdid"](141,16384,null,0,el.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.A]),e["ɵdid"](143,671744,[[21,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](145,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](146,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](147,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](148,147456,null,0,el.v,[e.ElementRef,e.Renderer2,[2,el.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](149,147456,null,0,el.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select stripe unit --"])),(l()(),e["ɵand"](16777216,null,null,1,null,Fu)),e["ɵdid"](152,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Pu)),e["ɵdid"](154,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Su)),e["ɵdid"](156,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](157,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](158,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](161,0,null,0,4,"label",[["class","cd-col-form-label"],["for","stripingCount"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](163,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](164,{required:0}),(l()(),e["ɵted"](-1,null,["Stripe count"])),(l()(),e["ɵeld"](166,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](167,0,null,null,7,"input",[["class","form-control"],["formControlName","stripingCount"],["id","stripingCount"],["name","stripingCount"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,168)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,168).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,168)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,168)._compositionEnd(u.target.value)&&a),"change"===n&&(a=!1!==e["ɵnov"](l,169).onChange(u.target.value)&&a),"input"===n&&(a=!1!==e["ɵnov"](l,169).onChange(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,169).onTouched()&&a),a}),null,null)),e["ɵdid"](168,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵdid"](169,16384,null,0,el.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l,n){return[l,n]}),[el.e,el.w]),e["ɵdid"](171,671744,[[23,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](173,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](174,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Au)),e["ɵdid"](176,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ou)),e["ɵdid"](178,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](179,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],(function(l,n,u){var e=!0;return"changes"===n&&(e=!1!==(l.component.getDirtyConfigurationValues=u)&&e),e}),Kn.b,Kn.a)),e["ɵdid"](180,114688,null,0,Zn.a,[U.a,Jn.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),e["ɵeld"](181,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](182,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](183,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Wn.b,Wn.a)),e["ɵdid"](184,114688,null,0,Qn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](185,0,[""," ",""])),e["ɵppd"](186,1),e["ɵppd"](187,1),(l()(),e["ɵeld"](188,0,null,null,1,"cd-back-button",[],null,null,null,Yn.b,Yn.a)),e["ɵdid"](189,49152,null,0,Xn.a,[D.Location,Ql.b],null,null)],(function(l,n){var u=n.component;l(n,5,0,u.rbdForm),l(n,8,0,u.rbdForm),l(n,16,0,u.rbdForm.getValue("parent")),l(n,18,0),l(n,27,0,"name"),l(n,30,0,""),l(n,31,0,"name"),l(n,33,0,u.rbdForm.showError("name",e["ɵnov"](n,5),"required")),l(n,35,0,u.rbdForm.showError("name",e["ɵnov"](n,5),"pattern")),l(n,37,0);var a=l(n,43,0,"editing"!==u.mode);l(n,42,0,"cd-col-form-label",a),l(n,47,0,"editing"===u.mode||!u.poolPermission.read),l(n,49,0,"editing"!==u.mode&&u.poolPermission.read),l(n,51,0,u.rbdForm.showError("pool",e["ɵnov"](n,5),"required")),l(n,53,0,"editing"!==u.mode&&u.rbdForm.getValue("pool")&&null===u.namespaces),l(n,55,0,"editing"===u.mode&&u.rbdForm.getValue("namespace")||"editing"!==u.mode&&(u.namespaces&&u.namespaces.length>0||!u.poolPermission.read)),l(n,57,0),l(n,65,0,"useDataPool"),l(n,68,0,"useDataPool"),l(n,72,0,u.rbdForm.getValue("useDataPool")),l(n,74,0),l(n,83,0,"size"),l(n,86,0,"GiB"),l(n,87,0,"size"),l(n,89,0,u.rbdForm.showError("size",e["ɵnov"](n,5),"required")),l(n,91,0,u.rbdForm.showError("size",e["ɵnov"](n,5),"invalidSizeObject")),l(n,93,0,"features"),l(n,96,0),l(n,103,0,u.featuresList),l(n,107,0,!u.advancedEnabled),l(n,115,0),l(n,124,0,"obj_size"),l(n,127,0,"obj_size"),l(n,129,0,u.objectSizes),l(n,131,0);var t=l(n,137,0,u.rbdForm.getValue("stripingCount"));l(n,136,0,"cd-col-form-label",t),l(n,143,0,"stripingUnit"),l(n,146,0,"stripingUnit"),l(n,148,0,null),l(n,149,0,null),l(n,152,0,u.objectSizes),l(n,154,0,u.rbdForm.showError("stripingUnit",e["ɵnov"](n,5),"required")),l(n,156,0,u.rbdForm.showError("stripingUnit",e["ɵnov"](n,5),"invalidStripingUnit")),l(n,158,0);var o=l(n,164,0,u.rbdForm.getValue("stripingUnit"));l(n,163,0,"cd-col-form-label",o),l(n,171,0,"stripingCount"),l(n,174,0,"stripingCount"),l(n,176,0,u.rbdForm.showError("stripingCount",e["ɵnov"](n,5),"required")),l(n,178,0,u.rbdForm.showError("stripingCount",e["ɵnov"](n,5),"min")),l(n,180,0,u.rbdForm,u.initializeConfigData),l(n,184,0,e["ɵnov"](n,5))}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,7).ngClassUntouched,e["ɵnov"](n,7).ngClassTouched,e["ɵnov"](n,7).ngClassPristine,e["ɵnov"](n,7).ngClassDirty,e["ɵnov"](n,7).ngClassValid,e["ɵnov"](n,7).ngClassInvalid,e["ɵnov"](n,7).ngClassPending);var a=e["ɵunv"](n,11,0,l(n,12,0,e["ɵnov"](n,0),u.action)),t=e["ɵunv"](n,11,1,l(n,13,0,e["ɵnov"](n,1),u.resource));l(n,11,0,a,t),l(n,17,0,e["ɵnov"](n,18).hasErrors,e["ɵnov"](n,18).hasSuccess),l(n,24,0,e["ɵnov"](n,29).ngClassUntouched,e["ɵnov"](n,29).ngClassTouched,e["ɵnov"](n,29).ngClassPristine,e["ɵnov"](n,29).ngClassDirty,e["ɵnov"](n,29).ngClassValid,e["ɵnov"](n,29).ngClassInvalid,e["ɵnov"](n,29).ngClassPending,e["ɵnov"](n,31).validClass,e["ɵnov"](n,31).invalidClass),l(n,36,0,e["ɵnov"](n,37).hasErrors,e["ɵnov"](n,37).hasSuccess),l(n,56,0,e["ɵnov"](n,57).hasErrors,e["ɵnov"](n,57).hasSuccess),l(n,62,0,e["ɵnov"](n,67).ngClassUntouched,e["ɵnov"](n,67).ngClassTouched,e["ɵnov"](n,67).ngClassPristine,e["ɵnov"](n,67).ngClassDirty,e["ɵnov"](n,67).ngClassValid,e["ɵnov"](n,67).ngClassInvalid,e["ɵnov"](n,67).ngClassPending,e["ɵnov"](n,68).validClass,e["ɵnov"](n,68).invalidClass),l(n,73,0,e["ɵnov"](n,74).hasErrors,e["ɵnov"](n,74).hasSuccess),l(n,80,0,e["ɵnov"](n,85).ngClassUntouched,e["ɵnov"](n,85).ngClassTouched,e["ɵnov"](n,85).ngClassPristine,e["ɵnov"](n,85).ngClassDirty,e["ɵnov"](n,85).ngClassValid,e["ɵnov"](n,85).ngClassInvalid,e["ɵnov"](n,85).ngClassPending,e["ɵnov"](n,87).validClass,e["ɵnov"](n,87).invalidClass),l(n,92,0,e["ɵnov"](n,95).ngClassUntouched,e["ɵnov"](n,95).ngClassTouched,e["ɵnov"](n,95).ngClassPristine,e["ɵnov"](n,95).ngClassDirty,e["ɵnov"](n,95).ngClassValid,e["ɵnov"](n,95).ngClassInvalid,e["ɵnov"](n,95).ngClassPending,e["ɵnov"](n,96).hasErrors,e["ɵnov"](n,96).hasSuccess),l(n,108,0,!u.advancedEnabled),l(n,114,0,e["ɵnov"](n,115).hasErrors,e["ɵnov"](n,115).hasSuccess),l(n,121,0,e["ɵnov"](n,126).ngClassUntouched,e["ɵnov"](n,126).ngClassTouched,e["ɵnov"](n,126).ngClassPristine,e["ɵnov"](n,126).ngClassDirty,e["ɵnov"](n,126).ngClassValid,e["ɵnov"](n,126).ngClassInvalid,e["ɵnov"](n,126).ngClassPending,e["ɵnov"](n,127).validClass,e["ɵnov"](n,127).invalidClass),l(n,130,0,e["ɵnov"](n,131).hasErrors,e["ɵnov"](n,131).hasSuccess),l(n,140,0,e["ɵnov"](n,145).ngClassUntouched,e["ɵnov"](n,145).ngClassTouched,e["ɵnov"](n,145).ngClassPristine,e["ɵnov"](n,145).ngClassDirty,e["ɵnov"](n,145).ngClassValid,e["ɵnov"](n,145).ngClassInvalid,e["ɵnov"](n,145).ngClassPending,e["ɵnov"](n,146).validClass,e["ɵnov"](n,146).invalidClass),l(n,157,0,e["ɵnov"](n,158).hasErrors,e["ɵnov"](n,158).hasSuccess),l(n,167,0,e["ɵnov"](n,173).ngClassUntouched,e["ɵnov"](n,173).ngClassTouched,e["ɵnov"](n,173).ngClassPristine,e["ɵnov"](n,173).ngClassDirty,e["ɵnov"](n,173).ngClassValid,e["ɵnov"](n,173).ngClassInvalid,e["ɵnov"](n,173).ngClassPending,e["ɵnov"](n,174).validClass,e["ɵnov"](n,174).invalidClass);var o=e["ɵunv"](n,185,0,l(n,186,0,e["ɵnov"](n,0),u.action)),d=e["ɵunv"](n,185,1,l(n,187,0,e["ɵnov"](n,1),u.resource));l(n,185,0,o,d)}))}function Uu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rbd-form",[],null,null,null,ju,lu)),e["ɵdid"](1,114688,null,0,Hn.a,[ml.a,fl.a,gn.a,Jl.a,U.a,Wl.a,B.a,A.a,Ql.b,fl.m],null,null)],(function(l,n){l(n,1,0)}),null)}var Bu=e["ɵccf"]("cd-rbd-form",Hn.a,Uu,{},{},[]),$u=u("JxMD"),Mu=u("dgut");class Lu{constructor(l){this.router=l}ngOnInit(){this.url=this.router.url}navigateTo(l){this.router.navigate([l])}}var zu=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Gu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Fl.b,Fl.a)),e["ɵdid"](1,180224,null,0,vl.e,[vl.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,1,"tab",[["heading","Overview"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/overview")&&e),e}),null,null)),e["ɵdid"](3,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](4,0,null,0,1,"tab",[["heading","Targets"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/targets")&&e),e}),null,null)),e["ɵdid"](5,212992,null,0,vl.b,[vl.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"})],(function(l,n){var u=n.component;l(n,3,0,"Overview","/block/iscsi/overview"===u.url),l(n,5,0,"Targets","/block/iscsi/targets"===u.url)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,4,0,e["ɵnov"](n,5).id,e["ɵnov"](n,5).active,e["ɵnov"](n,5).addClass,e["ɵnov"](n,5).role,e["ɵnov"](n,5).ariaLabelledby)}))}var Ku=u("roDX"),Zu=u("my5R"),Ju=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Wu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"cd-sparkline",[],null,null,null,$u.b,$u.a)),e["ɵdid"](2,638976,null,0,Mu.a,[B.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],(function(l,n){l(n,2,0,n.parent.context.value,n.parent.context.row.cdIsBinary)}),null)}function Qu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" n/a "]))],null,null)}function Yu(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Wu)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Qu)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)}),null)}function Xu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," /s "]))],null,(function(l,n){l(n,1,0,n.parent.context.value)}))}function Hu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" n/a "]))],null,null)}function le(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Xu)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Hu)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)}),null)}function ne(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,u)}))}function ue(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" n/a "]))],null,null)}function ee(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,ne)),e["ɵdid"](1,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ue)),e["ɵdid"](3,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)}),null)}function ae(l){return e["ɵvid"](0,[e["ɵpid"](0,L.a,[]),e["ɵqud"](402653184,1,{iscsiSparklineTpl:0}),e["ɵqud"](402653184,2,{iscsiPerSecondTpl:0}),e["ɵqud"](402653184,3,{iscsiRelativeDateTpl:0}),(l()(),e["ɵeld"](4,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,Gu,zu)),e["ɵdid"](5,114688,null,0,Lu,[fl.m],null,null),(l()(),e["ɵeld"](6,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Gateways"])),(l()(),e["ɵeld"](8,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],(function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.refresh()&&e),e}),jl.b,jl.a)),e["ɵdid"](9,2867200,null,0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"}),(l()(),e["ɵeld"](10,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](12,0,null,null,1,"cd-table",[],null,null,null,jl.b,jl.a)),e["ɵdid"](13,2867200,null,0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(l()(),e["ɵand"](0,[[1,2],["iscsiSparklineTpl",2]],null,0,null,Yu)),(l()(),e["ɵand"](0,[[2,2],["iscsiPerSecondTpl",2]],null,0,null,le)),(l()(),e["ɵand"](0,[[3,2],["iscsiRelativeDateTpl",2]],null,0,null,ee))],(function(l,n){var u=n.component;l(n,5,0),l(n,9,0,u.gateways,u.gatewaysColumns),l(n,13,0,u.images,u.imagesColumns)}),null)}function te(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-iscsi",[],null,null,null,ae,Ju)),e["ɵdid"](1,114688,null,0,Ku.a,[Zu.a,M.a,z.a,A.a],null,null)],(function(l,n){l(n,1,0)}),null)}var oe=e["ɵccf"]("cd-iscsi",Ku.a,te,{},{},[]),de=u("DqMs"),ie=u("/NlG"),re=u("3ris"),se=u("e/kN"),ce=e["ɵcrt"]({encapsulation:0,styles:[["tabset.tabset>ul{border-bottom:0;float:left;display:block;margin-right:20px;border-right:1px solid #ddd;padding-right:15px}"]],data:{}});function pe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Available information:"])),(l()(),e["ɵeld"](4,0,null,null,1,"pre",[],null,null,null,null,null)),(l()(),e["ɵted"](5,null,["",""]))],null,(function(l,n){l(n,5,0,n.component.status)}))}function me(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["title","iSCSI Targets not available"],["type","info"]],null,null,null,de.b,de.a)),e["ɵdid"](1,114688,null,0,ie.a,[A.a],{title:[0,"title"],type:[1,"type"]},null),(l()(),e["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Please consult the "])),(l()(),e["ɵeld"](4,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(l()(),e["ɵted"](-1,null,["documentation"])),(l()(),e["ɵted"](-1,null,[" on how to configure and enable the iSCSI Targets management functionality."])),(l()(),e["ɵand"](16777216,null,0,1,null,pe)),e["ɵdid"](8,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,"iSCSI Targets not available","info"),l(n,8,0,u.status)}),(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.component.docsUrl,""))}))}function ge(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-iscsi-target-details",[["cdTableDetail",""]],null,null,null,x.c,x.b)),e["ɵdid"](1,638976,null,0,re.a,[A.a,z.a,S.a],{selection:[0,"selection"],settings:[1,"settings"],cephIscsiConfigVersion:[2,"cephIscsiConfigVersion"]},null)],(function(l,n){var u=n.component;l(n,1,0,u.expandedRow,u.settings,u.cephIscsiConfigVersion)}),null)}function fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,13,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","target_iqn"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(l,n,u){var e=!0,a=l.component;return"setExpandedRow"===n&&(e=!1!==a.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==a.updateSelection(u)&&e),e}),jl.b,jl.a)),e["ɵdid"](1,2867200,[[1,4],["table",4]],0,Ul.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](2,0,null,1,9,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Bl.b,Bl.a)),e["ɵdid"](4,114688,null,0,$l.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](5,0,null,null,6,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.configureDiscoveryAuth()&&e),e}),null,null)),(l()(),e["ɵeld"](6,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](8,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](9,1),(l()(),e["ɵeld"](10,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Discovery authentication"])),(l()(),e["ɵand"](16777216,null,3,1,null,ge)),e["ɵdid"](13,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,u.targets,u.columns,"flex",!0,"target_iqn","true","single"),l(n,4,0,u.permission,u.selection,u.tableActions);var e=l(n,9,0,u.icons.key);l(n,8,0,e),l(n,13,0,u.expandedRow)}),null)}function ve(l){return e["ɵvid"](0,[e["ɵqud"](671088640,1,{table:0}),(l()(),e["ɵeld"](1,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,Gu,zu)),e["ɵdid"](2,114688,null,0,Lu,[fl.m],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,me)),e["ɵdid"](4,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,fe)),e["ɵdid"](6,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,2,0),l(n,4,0,!1===u.available),l(n,6,0,!0===u.available)}),null)}function Ce(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-iscsi-target-list",[],null,null,null,ve,ce)),e["ɵprd"](131584,null,Ll.a,Ll.a,[zl.a,Gl.a]),e["ɵdid"](2,245760,null,0,se.a,[ml.a,A.a,Zu.a,Ll.a,j.a,H.a,Gl.a,sl.b,Wl.a,Ql.b],null,null)],(function(l,n){l(n,2,0)}),null)}var be=e["ɵccf"]("cd-iscsi-target-list",se.a,Ce,{},{},[]),he=u("D4zM"),Ie=u("OcYo"),Re=u("EApP"),Ne=u("WiuZ"),we=u("wnGv"),Ee=u("LvDl");class Te{constructor(l){this.ngControl=l}onInput(l){this.setValue(l)}setValue(l){l=Ee.isString(l)?l.trim():l,this.ngControl.control.setValue(l)}}var ye=u("gr3l"),Ve=e["ɵcrt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function xe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function qe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["IQN has wrong pattern."]))],null,null)}function ke(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'"])),(l()(),e["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309"])),(l()(),e["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,1,"a",[["href","https://en.wikipedia.org/wiki/ISCSI#Addressing"],["target","_blank"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["More information"]))],null,null)}function _e(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This target has modified advanced settings."]))],null,null)}function De(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removePortal(l.context.index,l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function Fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["At least "," gateways are required."]))],null,(function(l,n){l(n,1,0,n.component.minimum_gateways)}))}function Pe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["lun: ",""]))],null,(function(l,n){l(n,1,0,n.component.imagesSettings[n.parent.context.$implicit].lun)}))}function Se(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["ɵted"](1,null,["Backstore: ",". "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,a=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent,2),u.imagesSettings[n.parent.context.$implicit].backstore));l(n,1,0,a)}))}function Ae(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This image has modified settings."]))],null,null)}function Oe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,20,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,14,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Pe)),e["ɵdid"](5,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](6,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.imageSettingsModal(l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](7,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](9,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](10,1),(l()(),e["ɵeld"](11,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeImage(l.context.index,l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](12,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](14,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](15,1),(l()(),e["ɵeld"](16,0,null,null,4,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Se)),e["ɵdid"](18,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ae)),e["ɵdid"](20,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,5,0,u.api_version>=1);var e=l(n,10,0,u.icons.deepCheck);l(n,9,0,e);var a=l(n,15,0,u.icons.destroy);l(n,14,0,a),l(n,18,0,u.backstores.length>1),l(n,20,0,u.hasAdvancedSettings(u.imagesSettings[n.context.$implicit][u.imagesSettings[n.context.$implicit].backstore]))}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Duplicated LUN numbers."]))],null,null)}function Ue(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Duplicated WWN."]))],null,null)}function Be(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function $e(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function Me(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Le(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ge(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function Ke(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function Je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,91,"div",[["formGroupName","auth"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](1,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](3,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](4,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](5,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](8,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_user"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User"])),(l()(),e["ɵeld"](11,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,6,"input",[["class","form-control"],["formControlName","user"],["id","target_user"],["name","target_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,13)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,13).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,13)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,13)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](13,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](15,671744,[[9,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](17,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](18,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Be)),e["ɵdid"](20,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,$e)),e["ɵdid"](22,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](23,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](24,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](27,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_password"]],null,null,null,null,null)),(l()(),e["ɵeld"](28,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password"])),(l()(),e["ɵeld"](30,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](31,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](32,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","target_password"],["name","target_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,33)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,33).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,33)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,33)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](33,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](35,671744,[[11,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](37,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](38,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](39,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](40,0,null,null,1,"button",[["cdPasswordButton","target_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,41).onClick()&&a),a}),null,null)),e["ɵdid"](41,81920,null,0,he.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](42,0,null,null,1,"button",[["cdCopy2ClipboardButton","target_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,43).onClick()&&a),a}),null,null)),e["ɵdid"](43,81920,null,0,Ie.a,[e.ElementRef,e.Renderer2,Re.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Me)),e["ɵdid"](45,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Le)),e["ɵdid"](47,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](48,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](49,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](52,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_mutual_user"]],null,null,null,null,null)),(l()(),e["ɵeld"](53,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual User"])),(l()(),e["ɵeld"](55,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](56,0,null,null,6,"input",[["class","form-control"],["formControlName","mutual_user"],["id","target_mutual_user"],["name","target_mutual_user"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,57)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,57).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,57)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,57)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](57,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](59,671744,[[13,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](61,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](62,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ze)),e["ɵdid"](64,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ge)),e["ɵdid"](66,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](67,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](68,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](71,0,null,0,2,"label",[["class","cd-col-form-label"],["for","target_mutual_password"]],null,null,null,null,null)),(l()(),e["ɵeld"](72,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual Password"])),(l()(),e["ɵeld"](74,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](75,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](76,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","mutual_password"],["id","target_mutual_password"],["name","target_mutual_password"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,77)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,77).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,77)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,77)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](77,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](79,671744,[[15,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](81,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](82,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](83,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](84,0,null,null,1,"button",[["cdPasswordButton","target_mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,85).onClick()&&a),a}),null,null)),e["ɵdid"](85,81920,null,0,he.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](86,0,null,null,1,"button",[["cdCopy2ClipboardButton","target_mutual_password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,87).onClick()&&a),a}),null,null)),e["ɵdid"](87,81920,null,0,Ie.a,[e.ElementRef,e.Renderer2,Re.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ke)),e["ɵdid"](89,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ze)),e["ɵdid"](91,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,"auth"),l(n,5,0),l(n,15,0,"user"),l(n,18,0,"user"),l(n,20,0,u.targetForm.showError("user",e["ɵnov"](n.parent,2),"required")),l(n,22,0,u.targetForm.showError("user",e["ɵnov"](n.parent,2),"pattern")),l(n,24,0),l(n,35,0,"password"),l(n,38,0,"password"),l(n,41,0,"target_password"),l(n,43,0,"target_password"),l(n,45,0,u.targetForm.showError("password",e["ɵnov"](n.parent,2),"required")),l(n,47,0,u.targetForm.showError("password",e["ɵnov"](n.parent,2),"pattern")),l(n,49,0),l(n,59,0,"mutual_user"),l(n,62,0,"mutual_user"),l(n,64,0,u.targetForm.showError("mutual_user",e["ɵnov"](n.parent,2),"required")),l(n,66,0,u.targetForm.showError("mutual_user",e["ɵnov"](n.parent,2),"pattern")),l(n,68,0),l(n,79,0,"mutual_password"),l(n,82,0,"mutual_password"),l(n,85,0,"target_mutual_password"),l(n,87,0,"target_mutual_password"),l(n,89,0,u.targetForm.showError("mutual_password",e["ɵnov"](n.parent,2),"required")),l(n,91,0,u.targetForm.showError("mutual_password",e["ɵnov"](n.parent,2),"pattern"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,3).ngClassUntouched,e["ɵnov"](n,3).ngClassTouched,e["ɵnov"](n,3).ngClassPristine,e["ɵnov"](n,3).ngClassDirty,e["ɵnov"](n,3).ngClassValid,e["ɵnov"](n,3).ngClassInvalid,e["ɵnov"](n,3).ngClassPending),l(n,4,0,e["ɵnov"](n,5).hasErrors,e["ɵnov"](n,5).hasSuccess),l(n,12,0,e["ɵnov"](n,17).ngClassUntouched,e["ɵnov"](n,17).ngClassTouched,e["ɵnov"](n,17).ngClassPristine,e["ɵnov"](n,17).ngClassDirty,e["ɵnov"](n,17).ngClassValid,e["ɵnov"](n,17).ngClassInvalid,e["ɵnov"](n,17).ngClassPending,e["ɵnov"](n,18).validClass,e["ɵnov"](n,18).invalidClass),l(n,23,0,e["ɵnov"](n,24).hasErrors,e["ɵnov"](n,24).hasSuccess),l(n,32,0,e["ɵnov"](n,37).ngClassUntouched,e["ɵnov"](n,37).ngClassTouched,e["ɵnov"](n,37).ngClassPristine,e["ɵnov"](n,37).ngClassDirty,e["ɵnov"](n,37).ngClassValid,e["ɵnov"](n,37).ngClassInvalid,e["ɵnov"](n,37).ngClassPending,e["ɵnov"](n,38).validClass,e["ɵnov"](n,38).invalidClass),l(n,48,0,e["ɵnov"](n,49).hasErrors,e["ɵnov"](n,49).hasSuccess),l(n,56,0,e["ɵnov"](n,61).ngClassUntouched,e["ɵnov"](n,61).ngClassTouched,e["ɵnov"](n,61).ngClassPristine,e["ɵnov"](n,61).ngClassDirty,e["ɵnov"](n,61).ngClassValid,e["ɵnov"](n,61).ngClassInvalid,e["ɵnov"](n,61).ngClassPending,e["ɵnov"](n,62).validClass,e["ɵnov"](n,62).invalidClass),l(n,67,0,e["ɵnov"](n,68).hasErrors,e["ɵnov"](n,68).hasSuccess),l(n,76,0,e["ɵnov"](n,81).ngClassUntouched,e["ɵnov"](n,81).ngClassTouched,e["ɵnov"](n,81).ngClassPristine,e["ɵnov"](n,81).ngClassDirty,e["ɵnov"](n,81).ngClassValid,e["ɵnov"](n,81).ngClassInvalid,e["ɵnov"](n,81).ngClassPending,e["ɵnov"](n,82).validClass,e["ɵnov"](n,82).invalidClass)}))}function We(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiator IQN needs to be unique."]))],null,null)}function Qe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ye(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["IQN has wrong pattern."]))],null,null)}function Xe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function He(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function la(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function na(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function ua(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ea(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User names must have a length of 8 to 64 characters and can contain alphanumeric characters, '.', '@', '-', '_' or ':'."]))],null,null)}function aa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ta(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Passwords must have a length of 12 to 16 characters and can contain alphanumeric characters, '@', '-', '_' or '/'."]))],null,null)}function oa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiatorImage(l.parent.context.$implicit,l.context.index,l.parent.context.index,l.context.$implicit)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function da(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiator belongs to a group. Images will be configure in the group."]))],null,null)}function ia(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,null,null,Ne.b,Ne.a)),e["ɵdid"](3,638976,null,0,we.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["ɵeld"](4,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](7,1),(l()(),e["ɵeld"](8,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add image"]))],(function(l,n){var u=n.component,e=n.parent.context.$implicit.getValue("luns");l(n,3,0,"btn btn-light float-right",e,u.imagesInitiatorSelections[n.parent.context.index],u.messages.initiatorImage);var a=l(n,7,0,u.icons.add);l(n,6,0,a)}),null)}function ra(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,136,"div",[["class","card mb-2"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](1,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](3,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](4,0,null,null,8,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiator"])),(l()(),e["ɵted"](7,null,[": "," "])),(l()(),e["ɵeld"](8,0,null,null,4,"button",[["class","close"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiator(l.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,123,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](15,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](18,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","client_iqn"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Client IQN"])),(l()(),e["ɵeld"](20,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,7,"input",[["cdTrim",""],["class","form-control"],["formControlName","client_iqn"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0,t=l.component;return"input"===n&&(a=!1!==e["ɵnov"](l,22)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,22).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,22)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,22)._compositionEnd(u.target.value)&&a),"input"===n&&(a=!1!==e["ɵnov"](l,27).onInput(u.target.value)&&a),"blur"===n&&(a=!1!==t.updatedInitiatorSelector()&&a),a}),null,null)),e["ɵdid"](22,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](24,671744,[[19,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](26,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](27,16384,null,0,Te,[el.q],null,null),e["ɵdid"](28,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,We)),e["ɵdid"](30,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Qe)),e["ɵdid"](32,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ye)),e["ɵdid"](34,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](35,0,null,null,88,null,null,null,null,null,null,null)),e["ɵdid"](36,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](38,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](39,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](40,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](43,0,null,0,1,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User"])),(l()(),e["ɵeld"](45,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](46,0,null,null,6,"input",[["class","form-control"],["formControlName","user"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,47)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,47).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,47)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,47)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](47,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](49,671744,[[21,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](51,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](52,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Xe)),e["ɵdid"](54,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,He)),e["ɵdid"](56,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](57,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](58,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](61,0,null,0,1,"label",[["class","cd-col-form-label"],["for","password"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password"])),(l()(),e["ɵeld"](63,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](64,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](65,0,null,null,6,"input",[["class","form-control"],["formControlName","password"],["type","password"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,66)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,66).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,66)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,66)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](66,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](68,671744,[[23,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](70,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](71,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](72,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](73,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,74).onClick()&&a),a}),null,null)),e["ɵdid"](74,81920,null,0,he.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](75,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,76).onClick()&&a),a}),null,null)),e["ɵdid"](76,81920,null,0,Ie.a,[e.ElementRef,e.Renderer2,Re.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,la)),e["ɵdid"](78,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,na)),e["ɵdid"](80,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](81,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](82,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,25,{FormControlNames:1}),e["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),e["ɵeld"](85,0,null,0,2,"label",[["class","cd-col-form-label"],["for","mutual_user"]],null,null,null,null,null)),(l()(),e["ɵeld"](86,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual User"])),(l()(),e["ɵeld"](88,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](89,0,null,null,6,"input",[["class","form-control"],["formControlName","mutual_user"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,90)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,90).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,90)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,90)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](90,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](92,671744,[[25,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](94,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](95,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ua)),e["ɵdid"](97,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ea)),e["ɵdid"](99,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](100,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](101,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,27,{FormControlNames:1}),e["ɵqud"](603979776,28,{messagesBlock:0}),(l()(),e["ɵeld"](104,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mutual_password"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mutual Password"])),(l()(),e["ɵeld"](106,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](107,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](108,0,null,null,6,"input",[["class","form-control"],["formControlName","mutual_password"],["type","password"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,109)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,109).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,109)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,109)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](109,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](111,671744,[[27,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](113,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](114,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](115,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](116,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,117).onClick()&&a),a}),null,null)),e["ɵdid"](117,81920,null,0,he.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](118,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var a=!0;return"click"===n&&(a=!1!==e["ɵnov"](l,119).onClick()&&a),a}),null,null)),e["ɵdid"](119,81920,null,0,Ie.a,[e.ElementRef,e.Renderer2,Re.j,A.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,aa)),e["ɵdid"](121,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ta)),e["ɵdid"](123,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](124,0,null,null,12,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](125,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,29,{FormControlNames:1}),e["ɵqud"](603979776,30,{messagesBlock:0}),(l()(),e["ɵeld"](128,0,null,0,1,"label",[["class","cd-col-form-label"],["for","luns"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](130,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,oa)),e["ɵdid"](132,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,da)),e["ɵdid"](134,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ia)),e["ɵdid"](136,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0,n.context.index);var a=l(n,12,0,u.icons.destroy);l(n,11,0,a),l(n,15,0),l(n,24,0,"client_iqn"),l(n,28,0,"client_iqn");var t=n.context.$implicit.showError("client_iqn",e["ɵnov"](n.parent.parent,2),"notUnique");l(n,30,0,t);var o=n.context.$implicit.showError("client_iqn",e["ɵnov"](n.parent.parent,2),"required");l(n,32,0,o);var d=n.context.$implicit.showError("client_iqn",e["ɵnov"](n.parent.parent,2),"pattern");l(n,34,0,d),l(n,36,0,"auth"),l(n,40,0),l(n,49,0,"user"),l(n,52,0,"user");var i=n.context.$implicit.showError("user",e["ɵnov"](n.parent.parent,2),"required");l(n,54,0,i);var r=n.context.$implicit.showError("user",e["ɵnov"](n.parent.parent,2),"pattern");l(n,56,0,r),l(n,58,0),l(n,68,0,"password"),l(n,71,0,"password"),l(n,74,0,"password"+n.context.index),l(n,76,0,"password"+n.context.index);var s=n.context.$implicit.showError("password",e["ɵnov"](n.parent.parent,2),"required");l(n,78,0,s);var c=n.context.$implicit.showError("password",e["ɵnov"](n.parent.parent,2),"pattern");l(n,80,0,c),l(n,82,0),l(n,92,0,"mutual_user"),l(n,95,0,"mutual_user");var p=n.context.$implicit.showError("mutual_user",e["ɵnov"](n.parent.parent,2),"required");l(n,97,0,p);var m=n.context.$implicit.showError("mutual_user",e["ɵnov"](n.parent.parent,2),"pattern");l(n,99,0,m),l(n,101,0),l(n,111,0,"mutual_password"),l(n,114,0,"mutual_password"),l(n,117,0,"mutual_password"+n.context.index),l(n,119,0,"mutual_password"+n.context.index);var g=n.context.$implicit.showError("mutual_password",e["ɵnov"](n.parent.parent,2),"required");l(n,121,0,g);var f=n.context.$implicit.showError("mutual_password",e["ɵnov"](n.parent.parent,2),"pattern");l(n,123,0,f),l(n,125,0);var v=n.context.$implicit.getValue("luns");l(n,132,0,v);var C=n.context.$implicit.getValue("cdIsInGroup");l(n,134,0,C);var b=!n.context.$implicit.getValue("cdIsInGroup");l(n,136,0,b)}),(function(l,n){l(n,0,0,e["ɵnov"](n,3).ngClassUntouched,e["ɵnov"](n,3).ngClassTouched,e["ɵnov"](n,3).ngClassPristine,e["ɵnov"](n,3).ngClassDirty,e["ɵnov"](n,3).ngClassValid,e["ɵnov"](n,3).ngClassInvalid,e["ɵnov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("client_iqn");l(n,7,0,u),l(n,14,0,e["ɵnov"](n,15).hasErrors,e["ɵnov"](n,15).hasSuccess),l(n,21,0,e["ɵnov"](n,26).ngClassUntouched,e["ɵnov"](n,26).ngClassTouched,e["ɵnov"](n,26).ngClassPristine,e["ɵnov"](n,26).ngClassDirty,e["ɵnov"](n,26).ngClassValid,e["ɵnov"](n,26).ngClassInvalid,e["ɵnov"](n,26).ngClassPending,e["ɵnov"](n,28).validClass,e["ɵnov"](n,28).invalidClass),l(n,39,0,e["ɵnov"](n,40).hasErrors,e["ɵnov"](n,40).hasSuccess),l(n,46,0,"user"+n.context.index,e["ɵnov"](n,51).ngClassUntouched,e["ɵnov"](n,51).ngClassTouched,e["ɵnov"](n,51).ngClassPristine,e["ɵnov"](n,51).ngClassDirty,e["ɵnov"](n,51).ngClassValid,e["ɵnov"](n,51).ngClassInvalid,e["ɵnov"](n,51).ngClassPending,e["ɵnov"](n,52).validClass,e["ɵnov"](n,52).invalidClass),l(n,57,0,e["ɵnov"](n,58).hasErrors,e["ɵnov"](n,58).hasSuccess),l(n,65,0,"password"+n.context.index,e["ɵnov"](n,70).ngClassUntouched,e["ɵnov"](n,70).ngClassTouched,e["ɵnov"](n,70).ngClassPristine,e["ɵnov"](n,70).ngClassDirty,e["ɵnov"](n,70).ngClassValid,e["ɵnov"](n,70).ngClassInvalid,e["ɵnov"](n,70).ngClassPending,e["ɵnov"](n,71).validClass,e["ɵnov"](n,71).invalidClass),l(n,81,0,e["ɵnov"](n,82).hasErrors,e["ɵnov"](n,82).hasSuccess),l(n,89,0,"mutual_user"+n.context.index,e["ɵnov"](n,94).ngClassUntouched,e["ɵnov"](n,94).ngClassTouched,e["ɵnov"](n,94).ngClassPristine,e["ɵnov"](n,94).ngClassDirty,e["ɵnov"](n,94).ngClassValid,e["ɵnov"](n,94).ngClassInvalid,e["ɵnov"](n,94).ngClassPending,e["ɵnov"](n,95).validClass,e["ɵnov"](n,95).invalidClass),l(n,100,0,e["ɵnov"](n,101).hasErrors,e["ɵnov"](n,101).hasSuccess),l(n,108,0,"mutual_password"+n.context.index,e["ɵnov"](n,113).ngClassUntouched,e["ɵnov"](n,113).ngClassTouched,e["ɵnov"](n,113).ngClassPristine,e["ɵnov"](n,113).ngClassDirty,e["ɵnov"](n,113).ngClassValid,e["ɵnov"](n,113).ngClassInvalid,e["ɵnov"](n,113).ngClassPending,e["ɵnov"](n,114).validClass,e["ɵnov"](n,114).invalidClass),l(n,124,0,e["ɵnov"](n,125).hasErrors,e["ɵnov"](n,125).hasSuccess)}))}function sa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["No items added."]))],null,null)}function ca(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","initiators"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiators"])),(l()(),e["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"],["formArrayName","initiators"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](7,212992,null,0,el.g,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.g]),e["ɵdid"](9,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,ra)),e["ɵdid"](11,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](12,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,9,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,sa)),e["ɵdid"](15,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](16,0,null,null,6,"button",[["class","btn btn-light float-right"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(l.component.addInitiator(),e=!1),e}),null,null)),(l()(),e["ɵeld"](17,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](20,1),(l()(),e["ɵeld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add initiator"])),(l()(),e["ɵeld"](23,0,null,null,0,"hr",[],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,1,0),l(n,7,0,"initiators"),l(n,11,0,u.initiators.controls),l(n,15,0,0===u.initiators.controls.length);var e=l(n,20,0,u.icons.add);l(n,19,0,e)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,9).ngClassUntouched,e["ɵnov"](n,9).ngClassTouched,e["ɵnov"](n,9).ngClassPristine,e["ɵnov"](n,9).ngClassDirty,e["ɵnov"](n,9).ngClassValid,e["ɵnov"](n,9).ngClassInvalid,e["ɵnov"](n,9).ngClassPending)}))}function pa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupInitiator(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function ma(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupDisk(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](7,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](8,1)],(function(l,n){var u=l(n,8,0,n.component.icons.destroy);l(n,7,0,u)}),(function(l,n){l(n,2,0,n.context.$implicit)}))}function ga(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,69,"div",[["class","card mb-2"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](1,212992,null,0,el.m,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.m]),e["ɵdid"](3,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵeld"](4,0,null,null,8,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Group"])),(l()(),e["ɵted"](7,null,[": "," "])),(l()(),e["ɵeld"](8,0,null,null,4,"button",[["class","close"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.groups.removeAt(l.context.index)&&e),e}),null,null)),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,56,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](15,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,33,{FormControlNames:1}),e["ɵqud"](603979776,34,{messagesBlock:0}),(l()(),e["ɵeld"](18,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","group_id"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](20,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,6,"input",[["class","form-control"],["formControlName","group_id"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,22)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,22).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,22)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,22)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](22,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](24,671744,[[33,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](26,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](27,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](28,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](29,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,35,{FormControlNames:1}),e["ɵqud"](603979776,36,{messagesBlock:0}),(l()(),e["ɵeld"](32,0,null,0,2,"label",[["class","cd-col-form-label"],["for","members"]],null,null,null,null,null)),(l()(),e["ɵeld"](33,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Initiators"])),(l()(),e["ɵeld"](35,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,pa)),e["ɵdid"](37,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](38,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](39,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](40,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onGroupMemberSelection(u)&&e),e}),Ne.b,Ne.a)),e["ɵdid"](41,638976,null,0,we.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["ɵeld"](42,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](44,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](45,1),(l()(),e["ɵeld"](46,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add initiator"])),(l()(),e["ɵeld"](48,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](49,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](50,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,37,{FormControlNames:1}),e["ɵqud"](603979776,38,{messagesBlock:0}),(l()(),e["ɵeld"](53,0,null,0,2,"label",[["class","cd-col-form-label"],["for","disks"]],null,null,null,null,null)),(l()(),e["ɵeld"](54,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](56,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,ma)),e["ɵdid"](58,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](59,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](60,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,null,null,Ne.b,Ne.a)),e["ɵdid"](62,638976,null,0,we.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["ɵeld"](63,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](65,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](66,1),(l()(),e["ɵeld"](67,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add image"])),(l()(),e["ɵeld"](69,0,null,null,0,"hr",[],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,1,0,n.context.index);var e=l(n,12,0,u.icons.destroy);l(n,11,0,e),l(n,15,0),l(n,24,0,"group_id"),l(n,27,0,"group_id"),l(n,29,0);var a=n.context.$implicit.getValue("members");l(n,37,0,a);var t=n.context.$implicit.getValue("members");l(n,41,0,"btn btn-light float-right",t,u.groupMembersSelections[n.context.index],u.messages.groupInitiator);var o=l(n,45,0,u.icons.add);l(n,44,0,o),l(n,50,0);var d=n.context.$implicit.getValue("disks");l(n,58,0,d);var i=n.context.$implicit.getValue("disks");l(n,62,0,"btn btn-light float-right",i,u.groupDiskSelections[n.context.index],u.messages.initiatorImage);var r=l(n,66,0,u.icons.add);l(n,65,0,r)}),(function(l,n){l(n,0,0,e["ɵnov"](n,3).ngClassUntouched,e["ɵnov"](n,3).ngClassTouched,e["ɵnov"](n,3).ngClassPristine,e["ɵnov"](n,3).ngClassDirty,e["ɵnov"](n,3).ngClassValid,e["ɵnov"](n,3).ngClassInvalid,e["ɵnov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("group_id");l(n,7,0,u),l(n,14,0,e["ɵnov"](n,15).hasErrors,e["ɵnov"](n,15).hasSuccess),l(n,21,0,e["ɵnov"](n,26).ngClassUntouched,e["ɵnov"](n,26).ngClassTouched,e["ɵnov"](n,26).ngClassPristine,e["ɵnov"](n,26).ngClassDirty,e["ɵnov"](n,26).ngClassValid,e["ɵnov"](n,26).ngClassInvalid,e["ɵnov"](n,26).ngClassPending,e["ɵnov"](n,27).validClass,e["ɵnov"](n,27).invalidClass),l(n,28,0,e["ɵnov"](n,29).hasErrors,e["ɵnov"](n,29).hasSuccess),l(n,49,0,e["ɵnov"](n,50).hasErrors,e["ɵnov"](n,50).hasSuccess)}))}function fa(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["No items added."]))],null,null)}function va(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](1,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,31,{FormControlNames:1}),e["ɵqud"](603979776,32,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","initiators"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Groups"])),(l()(),e["ɵeld"](6,0,null,0,16,"div",[["class","cd-col-form-input"],["formArrayName","groups"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),e["ɵdid"](7,212992,null,0,el.g,[[3,el.d],[8,null],[8,null]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.d,null,[el.g]),e["ɵdid"](9,16384,null,0,el.s,[[4,el.d]],null,null),(l()(),e["ɵand"](16777216,null,null,1,null,ga)),e["ɵdid"](11,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](12,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,9,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,fa)),e["ɵdid"](15,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](16,0,null,null,6,"button",[["class","btn btn-light float-right"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(l.component.addGroup(),e=!1),e}),null,null)),(l()(),e["ɵeld"](17,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](20,1),(l()(),e["ɵeld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add group"]))],(function(l,n){var u=n.component;l(n,1,0),l(n,7,0,"groups"),l(n,11,0,u.groups.controls),l(n,15,0,0===u.groups.controls.length);var e=l(n,20,0,u.icons.add);l(n,19,0,e)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,9).ngClassUntouched,e["ɵnov"](n,9).ngClassTouched,e["ɵnov"](n,9).ngClassPristine,e["ɵnov"](n,9).ngClassDirty,e["ɵnov"](n,9).ngClassValid,e["ɵnov"](n,9).ngClassInvalid,e["ɵnov"](n,9).ngClassPending)}))}function Ca(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,133,"form",[["name","targetForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var a=!0;return"submit"===n&&(a=!1!==e["ɵnov"](l,2).onSubmit(u)&&a),"reset"===n&&(a=!1!==e["ɵnov"](l,2).onReset()&&a),"submit"===n&&(a=!1!==e["ɵnov"](l,5).onSubmit()&&a),a}),null,null)),e["ɵdid"](1,16384,null,0,el.G,[],null,null),e["ɵdid"](2,540672,[["formDir",4]],0,el.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,el.d,null,[el.l]),e["ɵdid"](4,16384,null,0,el.s,[[4,el.d]],null,null),e["ɵdid"](5,16384,null,0,Nl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](6,0,null,null,127,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](8,null,[""," ",""])),e["ɵppd"](9,1),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,113,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](13,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","target_iqn"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Target IQN"])),(l()(),e["ɵeld"](18,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,14,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](20,0,null,null,7,"input",[["cdTrim",""],["class","form-control"],["formControlName","target_iqn"],["id","target_iqn"],["name","target_iqn"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,21)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,21).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,21)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,21)._compositionEnd(u.target.value)&&a),"input"===n&&(a=!1!==e["ɵnov"](l,26).onInput(u.target.value)&&a),a}),null,null)),e["ɵdid"](21,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](23,671744,[[1,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](25,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](26,16384,null,0,Te,[el.q],null,null),e["ɵdid"](27,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](28,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](29,0,null,null,4,"button",[["class","btn btn-light"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.targetSettingsModal()&&e),e}),null,null)),(l()(),e["ɵeld"](30,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](32,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](33,1),(l()(),e["ɵand"](16777216,null,null,1,null,xe)),e["ɵdid"](35,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,qe)),e["ɵdid"](37,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ke)),e["ɵdid"](39,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,_e)),e["ɵdid"](41,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](42,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](43,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](44,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](47,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","portals"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Portals"])),(l()(),e["ɵeld"](49,0,null,0,22,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,De)),e["ɵdid"](51,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](52,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](53,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](54,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onPortalSelection(u)&&e),e}),Ne.b,Ne.a)),e["ɵdid"](55,638976,null,0,we.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["ɵeld"](56,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](58,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](59,1),(l()(),e["ɵeld"](60,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add portal"])),(l()(),e["ɵeld"](62,0,null,null,6,"input",[["class","form-control"],["formControlName","portals"],["id","portals"],["name","portals"],["type","hidden"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,63)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,63).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,63)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,63)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](63,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](65,671744,[[3,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](67,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](68,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Fe)),e["ɵdid"](70,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](71,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](72,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](73,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](76,0,null,0,1,"label",[["class","cd-col-form-label"],["for","disks"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Images"])),(l()(),e["ɵeld"](78,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Oe)),e["ɵdid"](80,278528,null,0,D.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](81,0,null,null,6,"input",[["class","form-control"],["formControlName","disks"],["id","disks"],["name","disks"],["type","hidden"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var a=!0;return"input"===n&&(a=!1!==e["ɵnov"](l,82)._handleInput(u.target.value)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,82).onTouched()&&a),"compositionstart"===n&&(a=!1!==e["ɵnov"](l,82)._compositionStart()&&a),"compositionend"===n&&(a=!1!==e["ɵnov"](l,82)._compositionEnd(u.target.value)&&a),a}),null,null)),e["ɵdid"](82,16384,null,0,el.e,[e.Renderer2,e.ElementRef,[2,el.b]],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.e]),e["ɵdid"](84,671744,[[5,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](86,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](87,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,je)),e["ɵdid"](89,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ue)),e["ɵdid"](91,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](92,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](93,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](94,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onImageSelection(u)&&e),e}),Ne.b,Ne.a)),e["ɵdid"](95,638976,null,0,we.a,[A.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["ɵeld"](96,0,null,0,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,D["ɵNgClassImpl"],D["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](98,278528,null,0,D.NgClass,[D["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](99,1),(l()(),e["ɵeld"](100,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Add image"])),(l()(),e["ɵeld"](102,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](103,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,$n.b,$n.a)),e["ɵdid"](104,1163264,null,2,Nl.c,[e.ElementRef,Nl.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](107,0,null,0,11,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](108,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](109,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","acl_enabled"],["id","acl_enabled"],["name","acl_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var a=!0;return"change"===n&&(a=!1!==e["ɵnov"](l,110).onChange(u.target.checked)&&a),"blur"===n&&(a=!1!==e["ɵnov"](l,110).onTouched()&&a),a}),null,null)),e["ɵdid"](110,16384,null,0,el.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,el.p,(function(l){return[l]}),[el.c]),e["ɵdid"](112,671744,[[7,4]],0,el.j,[[3,el.d],[8,null],[8,null],[6,el.p],[2,el.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,el.q,null,[el.j]),e["ɵdid"](114,16384,null,0,el.r,[[4,el.q]],null,null),e["ɵdid"](115,16384,null,0,Nl.h,[[3,el.d],Nl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](116,0,null,null,1,"label",[["class","custom-control-label"],["for","acl_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["ACL authentication"])),(l()(),e["ɵeld"](118,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Je)),e["ɵdid"](120,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ca)),e["ɵdid"](122,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,va)),e["ɵdid"](124,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](125,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](126,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](127,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Wn.b,Wn.a)),e["ɵdid"](128,114688,null,0,Qn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](129,0,[""," ",""])),e["ɵppd"](130,1),e["ɵppd"](131,1),(l()(),e["ɵeld"](132,0,null,null,1,"cd-back-button",[],null,null,null,Yn.b,Yn.a)),e["ɵdid"](133,49152,null,0,Xn.a,[D.Location,Ql.b],null,null)],(function(l,n){var u=n.component;l(n,2,0,u.targetForm),l(n,5,0,u.targetForm),l(n,13,0),l(n,23,0,"target_iqn"),l(n,27,0,"target_iqn");var a=l(n,33,0,u.icons.deepCheck);l(n,32,0,a),l(n,35,0,u.targetForm.showError("target_iqn",e["ɵnov"](n,2),"required")),l(n,37,0,u.targetForm.showError("target_iqn",e["ɵnov"](n,2),"pattern")),l(n,39,0,u.targetForm.showError("target_iqn",e["ɵnov"](n,2),"iqn")),l(n,41,0,u.hasAdvancedSettings(u.targetForm.getValue("target_controls"))),l(n,44,0),l(n,51,0,u.portals.value),l(n,55,0,"btn btn-light float-right",u.portals.value,u.portalsSelections,u.messages.portals);var t=l(n,59,0,u.icons.add);l(n,58,0,t),l(n,65,0,"portals"),l(n,68,0,"portals"),l(n,70,0,u.targetForm.showError("portals",e["ɵnov"](n,2),"minGateways")),l(n,73,0),l(n,80,0,u.targetForm.getValue("disks")),l(n,84,0,"disks"),l(n,87,0,"disks"),l(n,89,0,u.targetForm.showError("disks",e["ɵnov"](n,2),"dupLunId")),l(n,91,0,u.targetForm.showError("disks",e["ɵnov"](n,2),"dupWwn")),l(n,95,0,"btn btn-light float-right",u.disks.value,u.imagesSelections,u.messages.images);var o=l(n,99,0,u.icons.add);l(n,98,0,o),l(n,104,0),l(n,112,0,"acl_enabled"),l(n,115,0,"acl_enabled"),l(n,120,0,u.cephIscsiConfigVersion>10&&!u.targetForm.getValue("acl_enabled")),l(n,122,0,u.targetForm.getValue("acl_enabled")),l(n,124,0,u.targetForm.getValue("acl_enabled")),l(n,128,0,e["ɵnov"](n,2))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,4).ngClassUntouched,e["ɵnov"](n,4).ngClassTouched,e["ɵnov"](n,4).ngClassPristine,e["ɵnov"](n,4).ngClassDirty,e["ɵnov"](n,4).ngClassValid,e["ɵnov"](n,4).ngClassInvalid,e["ɵnov"](n,4).ngClassPending);var a=e["ɵunv"](n,8,0,l(n,9,0,e["ɵnov"](n.parent,0),u.action)),t=e["ɵunv"](n,8,1,l(n,10,0,e["ɵnov"](n.parent,1),u.resource));l(n,8,0,a,t),l(n,12,0,e["ɵnov"](n,13).hasErrors,e["ɵnov"](n,13).hasSuccess),l(n,20,0,e["ɵnov"](n,25).ngClassUntouched,e["ɵnov"](n,25).ngClassTouched,e["ɵnov"](n,25).ngClassPristine,e["ɵnov"](n,25).ngClassDirty,e["ɵnov"](n,25).ngClassValid,e["ɵnov"](n,25).ngClassInvalid,e["ɵnov"](n,25).ngClassPending,e["ɵnov"](n,27).validClass,e["ɵnov"](n,27).invalidClass),l(n,43,0,e["ɵnov"](n,44).hasErrors,e["ɵnov"](n,44).hasSuccess),l(n,62,0,e["ɵnov"](n,67).ngClassUntouched,e["ɵnov"](n,67).ngClassTouched,e["ɵnov"](n,67).ngClassPristine,e["ɵnov"](n,67).ngClassDirty,e["ɵnov"](n,67).ngClassValid,e["ɵnov"](n,67).ngClassInvalid,e["ɵnov"](n,67).ngClassPending,e["ɵnov"](n,68).validClass,e["ɵnov"](n,68).invalidClass),l(n,72,0,e["ɵnov"](n,73).hasErrors,e["ɵnov"](n,73).hasSuccess),l(n,81,0,e["ɵnov"](n,86).ngClassUntouched,e["ɵnov"](n,86).ngClassTouched,e["ɵnov"](n,86).ngClassPristine,e["ɵnov"](n,86).ngClassDirty,e["ɵnov"](n,86).ngClassValid,e["ɵnov"](n,86).ngClassInvalid,e["ɵnov"](n,86).ngClassPending,e["ɵnov"](n,87).validClass,e["ɵnov"](n,87).invalidClass),l(n,103,0,e["ɵnov"](n,104).hasErrors,e["ɵnov"](n,104).hasSuccess),l(n,109,0,e["ɵnov"](n,114).ngClassUntouched,e["ɵnov"](n,114).ngClassTouched,e["ɵnov"](n,114).ngClassPristine,e["ɵnov"](n,114).ngClassDirty,e["ɵnov"](n,114).ngClassValid,e["ɵnov"](n,114).ngClassInvalid,e["ɵnov"](n,114).ngClassPending,e["ɵnov"](n,115).validClass,e["ɵnov"](n,115).invalidClass);var o=e["ɵunv"](n,129,0,l(n,130,0,e["ɵnov"](n.parent,0),u.action)),d=e["ɵunv"](n,129,1,l(n,131,0,e["ɵnov"](n.parent,1),u.resource));l(n,129,0,o,d)}))}function ba(l){return e["ɵvid"](0,[e["ɵpid"](0,D.TitleCasePipe,[]),e["ɵpid"](0,ll.a,[]),e["ɵpid"](0,z.a,[]),(l()(),e["ɵeld"](3,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Ca)),e["ɵdid"](5,16384,null,0,D.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,5,0,n.component.targetForm)}),null)}function ha(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-iscsi-target-form",[],null,null,null,ba,Ve)),e["ɵdid"](1,114688,null,0,ye.a,[Zu.a,sl.b,Jl.a,fl.m,fl.a,A.a,Wl.a,Ql.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Ia=e["ɵccf"]("cd-iscsi-target-form",ye.a,ha,{},{},[]),Ra=u("Vhfg"),Na=u("cxJu");u.d(n,"BlockModuleNgFactory",(function(){return wa})),u.d(n,"RoutedBlockModuleNgFactory",(function(){return Ea}));var wa=e["ɵcmf"](a.a,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[t.a,o.a,d.a,i.a,i.b,r.a,s.a,c.a,p.a,m.a,g.a,f.a,v.a,C.a,b.a,h.a,I.a,R.a,R.c,R.b,R.d,N.a,w.a,E.a,T.a,y.a,V.a,x.a,q.a,k.a,_.a]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,D.NgLocalization,D.NgLocaleLocalization,[e.LOCALE_ID,[2,D["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,P.a,P.a,[]),e["ɵmpd"](4608,S.a,S.a,[A.a]),e["ɵmpd"](4608,D.DatePipe,D.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,B.a,B.a,[U.a]),e["ɵmpd"](4608,$.a,$.a,[U.a]),e["ɵmpd"](4608,M.a,M.a,[U.a]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[]),e["ɵmpd"](4608,K.a,K.a,[]),e["ɵmpd"](4608,Z.a,Z.a,[D.DatePipe]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,W.a,W.a,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,Y.a,Y.a,[]),e["ɵmpd"](4608,X.a,X.a,[]),e["ɵmpd"](4608,H.a,H.a,[A.a]),e["ɵmpd"](4608,ll.a,ll.a,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,ul.a,ul.a,[]),e["ɵmpd"](4608,el.D,el.D,[]),e["ɵmpd"](4608,el.h,el.h,[]),e["ɵmpd"](4608,al.b,al.b,[]),e["ɵmpd"](4608,tl.a,tl.a,[]),e["ɵmpd"](4608,ol.a,ol.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,dl.a,dl.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ol.a,e.ApplicationRef]),e["ɵmpd"](4608,il.c,il.c,[]),e["ɵmpd"](4608,rl.a,rl.a,[]),e["ɵmpd"](4608,sl.b,sl.b,[e.RendererFactory2,dl.a]),e["ɵmpd"](4608,cl.y,cl.y,[D.DOCUMENT]),e["ɵmpd"](4608,cl.r,cl.r,[]),e["ɵmpd"](4608,cl.a,cl.a,[]),e["ɵmpd"](4608,pl.f,pl.f,[]),e["ɵmpd"](4608,ml.a,ml.a,[]),e["ɵmpd"](4608,gl.a,gl.a,[fl.m,ml.a]),e["ɵmpd"](4608,vl.f,vl.f,[]),e["ɵmpd"](4608,Cl.t,Cl.t,[]),e["ɵmpd"](4608,Cl.v,Cl.v,[]),e["ɵmpd"](4608,Cl.a,Cl.a,[]),e["ɵmpd"](4608,Cl.h,Cl.h,[]),e["ɵmpd"](4608,Cl.d,Cl.d,[]),e["ɵmpd"](4608,Cl.j,Cl.j,[]),e["ɵmpd"](4608,Cl.l,Cl.l,[]),e["ɵmpd"](4608,Cl.u,Cl.u,[Cl.v,Cl.l]),e["ɵmpd"](4608,bl.a,bl.a,[]),e["ɵmpd"](1073742336,D.CommonModule,D.CommonModule,[]),e["ɵmpd"](1073742336,vl.d,vl.d,[]),e["ɵmpd"](1073742336,hl.a,hl.a,[]),e["ɵmpd"](1073742336,el.C,el.C,[]),e["ɵmpd"](1073742336,el.n,el.n,[]),e["ɵmpd"](1073742336,el.y,el.y,[]),e["ɵmpd"](1073742336,al.c,al.c,[]),e["ɵmpd"](1073742336,tl.d,tl.d,[]),e["ɵmpd"](1073742336,il.d,il.d,[]),e["ɵmpd"](1073742336,rl.d,rl.d,[]),e["ɵmpd"](1073742336,Il.b,Il.b,[]),e["ɵmpd"](1073742336,sl.e,sl.e,[]),e["ɵmpd"](1073742336,Rl.a,Rl.a,[]),e["ɵmpd"](1073742336,pl.e,pl.e,[]),e["ɵmpd"](1073742336,Nl.f,Nl.f,[]),e["ɵmpd"](1073742336,wl.ClickOutsideModule,wl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,El.b,El.b,[]),e["ɵmpd"](1073742336,fl.q,fl.q,[[2,fl.v],[2,fl.m]]),e["ɵmpd"](1073742336,Tl.a,Tl.a,[]),e["ɵmpd"](1073742336,cl.u,cl.u,[]),e["ɵmpd"](1073742336,yl.a,yl.a,[]),e["ɵmpd"](1073742336,Vl.a,Vl.a,[]),e["ɵmpd"](1073742336,xl.a,xl.a,[]),e["ɵmpd"](1073742336,ql.a,ql.a,[]),e["ɵmpd"](1073742336,Cl.g,Cl.g,[]),e["ɵmpd"](1073742336,kl.b,kl.b,[]),e["ɵmpd"](1073742336,a.a,a.a,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,pl.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})),Ea=e["ɵcmf"](a.b,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[t.a,o.a,d.a,i.a,i.b,r.a,s.a,c.a,p.a,m.a,g.a,f.a,v.a,C.a,b.a,h.a,I.a,R.a,R.c,R.b,R.d,N.a,w.a,E.a,T.a,y.a,V.a,x.a,q.a,k.a,_.a,pn,hn,_n,Bn,Bu,oe,be,Ia]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,D.NgLocalization,D.NgLocaleLocalization,[e.LOCALE_ID,[2,D["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,P.a,P.a,[]),e["ɵmpd"](4608,S.a,S.a,[A.a]),e["ɵmpd"](4608,D.DatePipe,D.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,B.a,B.a,[U.a]),e["ɵmpd"](4608,$.a,$.a,[U.a]),e["ɵmpd"](4608,M.a,M.a,[U.a]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[]),e["ɵmpd"](4608,K.a,K.a,[]),e["ɵmpd"](4608,Z.a,Z.a,[D.DatePipe]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,W.a,W.a,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,Y.a,Y.a,[]),e["ɵmpd"](4608,X.a,X.a,[]),e["ɵmpd"](4608,H.a,H.a,[A.a]),e["ɵmpd"](4608,ll.a,ll.a,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,ul.a,ul.a,[]),e["ɵmpd"](4608,el.D,el.D,[]),e["ɵmpd"](4608,el.h,el.h,[]),e["ɵmpd"](4608,al.b,al.b,[]),e["ɵmpd"](4608,tl.a,tl.a,[]),e["ɵmpd"](4608,ol.a,ol.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,dl.a,dl.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ol.a,e.ApplicationRef]),e["ɵmpd"](4608,il.c,il.c,[]),e["ɵmpd"](4608,rl.a,rl.a,[]),e["ɵmpd"](4608,sl.b,sl.b,[e.RendererFactory2,dl.a]),e["ɵmpd"](4608,cl.y,cl.y,[D.DOCUMENT]),e["ɵmpd"](4608,cl.r,cl.r,[]),e["ɵmpd"](4608,cl.a,cl.a,[]),e["ɵmpd"](4608,pl.f,pl.f,[]),e["ɵmpd"](4608,ml.a,ml.a,[]),e["ɵmpd"](4608,gl.a,gl.a,[fl.m,ml.a]),e["ɵmpd"](4608,vl.f,vl.f,[]),e["ɵmpd"](4608,Cl.t,Cl.t,[]),e["ɵmpd"](4608,Cl.v,Cl.v,[]),e["ɵmpd"](4608,Cl.a,Cl.a,[]),e["ɵmpd"](4608,Cl.h,Cl.h,[]),e["ɵmpd"](4608,Cl.d,Cl.d,[]),e["ɵmpd"](4608,Cl.j,Cl.j,[]),e["ɵmpd"](4608,Cl.l,Cl.l,[]),e["ɵmpd"](4608,Cl.u,Cl.u,[Cl.v,Cl.l]),e["ɵmpd"](4608,bl.a,bl.a,[]),e["ɵmpd"](1073742336,D.CommonModule,D.CommonModule,[]),e["ɵmpd"](1073742336,vl.d,vl.d,[]),e["ɵmpd"](1073742336,hl.a,hl.a,[]),e["ɵmpd"](1073742336,el.C,el.C,[]),e["ɵmpd"](1073742336,el.n,el.n,[]),e["ɵmpd"](1073742336,el.y,el.y,[]),e["ɵmpd"](1073742336,al.c,al.c,[]),e["ɵmpd"](1073742336,tl.d,tl.d,[]),e["ɵmpd"](1073742336,il.d,il.d,[]),e["ɵmpd"](1073742336,rl.d,rl.d,[]),e["ɵmpd"](1073742336,Il.b,Il.b,[]),e["ɵmpd"](1073742336,sl.e,sl.e,[]),e["ɵmpd"](1073742336,Rl.a,Rl.a,[]),e["ɵmpd"](1073742336,pl.e,pl.e,[]),e["ɵmpd"](1073742336,Nl.f,Nl.f,[]),e["ɵmpd"](1073742336,wl.ClickOutsideModule,wl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,El.b,El.b,[]),e["ɵmpd"](1073742336,fl.q,fl.q,[[2,fl.v],[2,fl.m]]),e["ɵmpd"](1073742336,Tl.a,Tl.a,[]),e["ɵmpd"](1073742336,cl.u,cl.u,[]),e["ɵmpd"](1073742336,yl.a,yl.a,[]),e["ɵmpd"](1073742336,Vl.a,Vl.a,[]),e["ɵmpd"](1073742336,xl.a,xl.a,[]),e["ɵmpd"](1073742336,ql.a,ql.a,[]),e["ɵmpd"](1073742336,Cl.g,Cl.g,[]),e["ɵmpd"](1073742336,kl.b,kl.b,[]),e["ɵmpd"](1073742336,a.a,a.a,[]),e["ɵmpd"](1073742336,a.b,a.b,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,pl.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](1024,fl.k,(function(){return[[{path:"",redirectTo:"rbd",pathMatch:"full"},{path:"rbd",canActivate:[Ra.a],data:a.c,children:[{path:"",component:Zl.a},{path:"namespaces",component:mn.a,data:a.d},{path:"trash",component:In.a,data:a.j},{path:"performance",component:An.a,data:a.k},{path:"create",component:Hn.a,data:a.l},{path:"edit/:image_spec",component:Hn.a,data:a.m},{path:"clone/:image_spec/:snap",component:Hn.a,data:a.n},{path:"copy/:image_spec",component:Hn.a,data:a.o},{path:"copy/:image_spec/:snap",component:Hn.a,data:a.p}]},{path:"mirroring",component:Na.a,canActivate:[Ra.a],data:a.q},{path:"iscsi",canActivate:[Ra.a],data:a.e,children:[{path:"",redirectTo:"overview",pathMatch:"full"},{path:"overview",component:Ku.a,data:a.f},{path:"targets",data:a.g,children:[{path:"",component:se.a},{path:"create",component:ye.a,data:a.h},{path:"edit/:target_iqn",component:ye.a,data:a.i}]}]}]]}),[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.8c5c2bbb556260a5cc3e.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.8c5c2bbb556260a5cc3e.js
new file mode 100644 (file)
index 0000000..70caf84
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{Znkk:function(l,n,u){"use strict";u.r(n);var e=u("8Y7J"),t=u("sne2"),i=u("Avrn");class a{constructor(l){this.route=l,this.message="The Object Gateway service is not configured."}ngOnInit(){this.routeParamsSubscribe=this.route.params.subscribe(l=>{this.message=l.message})}ngOnDestroy(){this.routeParamsSubscribe.unsubscribe()}}var o=u("s7LF"),s=u("LvDl"),d=u("mrSG"),r=u("IheW"),c=u("cp0P"),m=u("LRne"),g=u("5+tZ"),p=u("xTzq"),f=u("pL04");let v=(()=>{let l=class{constructor(l){this.http=l,this.url="api/rgw/bucket"}list(){return this.enumerate().pipe(Object(g.a)(l=>l.length>0?Object(c.a)(l.map(l=>this.get(l))):Object(m.a)([])))}enumerate(){return this.http.get(this.url)}get(l){return this.http.get(`${this.url}/${l}`)}create(l,n,u,e,t,i,a,o){return this.http.post(this.url,null,{params:new r.h({fromObject:{bucket:l,uid:n,zonegroup:u,placement_target:e,lock_enabled:String(t),lock_mode:i,lock_retention_period_days:a,lock_retention_period_years:o}})})}update(l,n,u,e,t,i,a,o,s,d){let c=new r.h;return c=c.append("bucket_id",n),c=c.append("uid",u),c=c.append("versioning_state",e),c=c.append("mfa_delete",t),c=c.append("mfa_token_serial",i),c=c.append("mfa_token_pin",a),c=c.append("lock_mode",o),c=c.append("lock_retention_period_days",s),c=c.append("lock_retention_period_years",d),this.http.put(`${this.url}/${l}`,null,{params:c})}delete(l,n=!0){let u=new r.h;return u=u.append("purge_objects",n?"true":"false"),this.http.delete(`${this.url}/${l}`,{params:u})}exists(l){return this.enumerate().pipe(Object(g.a)(n=>{const u=s.indexOf(n,l);return Object(m.a)(-1!==u)}))}};return l.ngInjectableDef=e["ɵɵdefineInjectable"]({factory:function(){return new l(e["ɵɵinject"](r.c))},token:l,providedIn:f.a}),l=d.__decorate([p.a,d.__metadata("design:paramtypes",[r.c])],l),l})(),b=(()=>{let l=class{constructor(l){this.http=l,this.url="api/rgw/site"}get(l){let n=new r.h;return l&&(n=n.append("query",l)),this.http.get(this.url,{params:n})}};return l.ngInjectableDef=e["ɵɵdefineInjectable"]({factory:function(){return new l(e["ɵɵinject"](r.c))},token:l,providedIn:f.a}),l=d.__decorate([p.a,d.__metadata("design:paramtypes",[r.c])],l),l})();var h=u("P8lu"),C=u("oxzT"),_=u("mtw6"),R=u("2EZI"),y=u("1Ni5"),k=u("9nlD"),I=function(l){return l.ENABLED="Enabled",l.DISABLED="Disabled",l}({}),w=function(l){return l.ENABLED="Enabled",l.SUSPENDED="Suspended",l}({});class E{constructor(l,n,u,e,i,a,o,s,d){this.route=l,this.router=n,this.formBuilder=u,this.rgwBucketService=e,this.rgwSiteService=i,this.rgwUserService=a,this.notificationService=o,this.i18n=s,this.actionLabels=d,this.editing=!1,this.error=!1,this.loading=!1,this.owners=null,this.placementTargets=[],this.isVersioningEnabled=!1,this.isVersioningAlreadyEnabled=!1,this.isMfaDeleteEnabled=!1,this.isMfaDeleteAlreadyEnabled=!1,this.icons=C.a,this.editing=this.router.url.startsWith(`/rgw/bucket/${t.e.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("bucket"),this.createForm()}createForm(){const l=this,n=y.a.custom("eitherDaysOrYears",()=>{if(!l.bucketForm||!s.get(l.bucketForm.getRawValue(),"lock_enabled"))return!1;const n=l.bucketForm.getValue("lock_retention_period_years"),u=l.bucketForm.getValue("lock_retention_period_days");return u>0&&n>0||0===u&&0===n}),u=[0,[y.a.number(!1),n]];this.bucketForm=this.formBuilder.group({id:[null],bid:[null,[o.B.required],this.editing?[]:[this.bucketNameValidator()]],owner:[null,[o.B.required]],"placement-target":[null,this.editing?[]:[o.B.required]],versioning:[null],"mfa-delete":[null],"mfa-token-serial":[""],"mfa-token-pin":[""],lock_enabled:[{value:!1,disabled:this.editing}],lock_mode:["COMPLIANCE"],lock_retention_period_days:u,lock_retention_period_years:u})}ngOnInit(){this.rgwUserService.enumerate().subscribe(l=>{this.owners=l.sort()}),this.editing||this.rgwSiteService.get("placement-targets").subscribe(l=>{this.zonegroup=l.zonegroup,s.forEach(l.placement_targets,l=>{l.description=`${l.name} (${this.i18n("pool")}: ${l.data_pool})`,this.placementTargets.push(l)}),1===this.placementTargets.length&&this.bucketForm.get("placement-target").setValue(this.placementTargets[0].name)}),this.route.params.subscribe(l=>{if(!l.hasOwnProperty("bid"))return;const n=decodeURIComponent(l.bid);this.loading=!0,this.rgwBucketService.get(n).subscribe(l=>{this.loading=!1;const n=s.clone(this.bucketForm.getRawValue());let u=s.pick(l,s.keys(n));u["placement-target"]=l.placement_rule,u=s.merge(n,u),this.bucketForm.setValue(u),this.editing&&(this.setVersioningStatus(l.versioning),this.isVersioningAlreadyEnabled=this.isVersioningEnabled,this.setMfaDeleteStatus(l.mfa_delete),this.isMfaDeleteAlreadyEnabled=this.isMfaDeleteEnabled,this.setMfaDeleteValidators())})})}goToListView(){this.router.navigate(["/rgw/bucket"])}submit(){if(this.bucketForm.pristine)return void this.goToListView();const l=this.bucketForm.value;if(this.editing){const n=this.getVersioningStatus(),u=this.getMfaDeleteStatus();this.rgwBucketService.update(l.bid,l.id,l.owner,n,u,l["mfa-token-serial"],l["mfa-token-pin"],l.lock_mode,l.lock_retention_period_days,l.lock_retention_period_years).subscribe(()=>{this.notificationService.show(_.a.success,this.i18n('Updated Object Gateway bucket "{{bid}}".',l)),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}else this.rgwBucketService.create(l.bid,l.owner,this.zonegroup,l["placement-target"],l.lock_enabled,l.lock_mode,l.lock_retention_period_days,l.lock_retention_period_years).subscribe(()=>{this.notificationService.show(_.a.success,this.i18n('Created Object Gateway bucket "{{bid}}"',l)),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}bucketNameValidator(){const l=this.rgwBucketService;return n=>new Promise(u=>{if(n.pristine||""===n.value)return void u(null);const e=[];e.push(l=>!y.a.ip()(l)),e.push(l=>s.inRange(l.length,3,64)),e.push(l=>{const n=s.split(l,".");return s.every(n,l=>l===s.toLower(l)&&!l.includes("_")&&!!/[0-9a-z-]/.test(l)&&s.every([0,l.length],n=>/[a-z]/.test(l[n])||s.isInteger(s.parseInt(l[n]))))}),s.every(e,l=>l(n.value))?l.exists(n.value).subscribe(l=>{u(l?{bucketNameExists:!0}:null)}):u({bucketNameInvalid:!0})})}areMfaCredentialsRequired(){return this.isMfaDeleteEnabled!==this.isMfaDeleteAlreadyEnabled||this.isMfaDeleteAlreadyEnabled&&this.isVersioningEnabled!==this.isVersioningAlreadyEnabled}setMfaDeleteValidators(){const l=this.bucketForm.get("mfa-token-serial"),n=this.bucketForm.get("mfa-token-pin");this.areMfaCredentialsRequired()?(l.setValidators(o.B.required),n.setValidators(o.B.required)):(l.setValidators(null),n.setValidators(null)),l.updateValueAndValidity(),n.updateValueAndValidity()}getVersioningStatus(){return this.isVersioningEnabled?w.ENABLED:w.SUSPENDED}setVersioningStatus(l){this.isVersioningEnabled=l===w.ENABLED}updateVersioning(){this.isVersioningEnabled=!this.isVersioningEnabled,this.setMfaDeleteValidators()}getMfaDeleteStatus(){return this.isMfaDeleteEnabled?I.ENABLED:I.DISABLED}setMfaDeleteStatus(l){this.isMfaDeleteEnabled=l===I.ENABLED}updateMfaDelete(){this.isMfaDeleteEnabled=!this.isMfaDeleteEnabled,this.setMfaDeleteValidators()}}var q=u("HDdC"),N=u("+fVR"),T=u("0+/T"),x=u("uIqm"),V=u("vCyI"),S=u("Fgil"),D=u("o4+5"),F=u("aexS"),j=u("EgGo");const B=new j.a("rgw/bucket");class P extends N.a{constructor(l,n,u,e,t,i,a,o,s,d){super(),this.authStorageService=l,this.dimlessBinaryPipe=n,this.dimlessPipe=u,this.rgwBucketService=e,this.bsModalService=t,this.i18n=i,this.urlBuilder=a,this.actionLabels=o,this.ngZone=s,this.changeDetectorRef=d,this.columns=[],this.buckets=[],this.selection=new V.a,this.isStale=!1,this.permission=this.authStorageService.getPermissions().rgw;const r=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().bid)}`;this.tableActions=[{permission:"create",icon:C.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:l=>!l.hasSelection},{permission:"update",icon:C.a.edit,routerLink:()=>this.urlBuilder.getEdit(r()),name:this.actionLabels.EDIT},{permission:"delete",icon:C.a.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:l=>l.hasMultiSelection}],this.timeConditionReached()}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"bid",flexGrow:2},{name:this.i18n("Owner"),prop:"owner",flexGrow:3},{name:this.i18n("Used Capacity"),prop:"bucket_size",flexGrow:.5,pipe:this.dimlessBinaryPipe},{name:this.i18n("Capacity Limit %"),prop:"size_usage",cellTemplate:this.bucketSizeTpl,flexGrow:1},{name:this.i18n("Objects"),prop:"num_objects",flexGrow:.5,pipe:this.dimlessPipe},{name:this.i18n("Object Limit %"),prop:"object_usage",cellTemplate:this.bucketObjectTpl,flexGrow:1}]}transformBucketData(){s.forEach(this.buckets,l=>{const n=l.bucket_quota.max_size,u=l.bucket_quota.max_objects;let e=0,t=0;s.forEach(l.usage,l=>{e+=l.size_actual,t+=l.num_objects}),l.bucket_size=e,l.num_objects=t,l.size_usage=n>0?e/n:void 0,l.object_usage=u>0?t/u:void 0})}timeConditionReached(){clearTimeout(this.staleTimeout),this.ngZone.runOutsideAngular(()=>{this.staleTimeout=window.setTimeout(()=>{this.ngZone.run(()=>{this.isStale=!0})},1e4)})}getBucketList(l){this.isStale=!1,this.timeConditionReached(),this.rgwBucketService.list().subscribe(l=>{this.buckets=l,this.transformBucketData(),this.changeDetectorRef.detectChanges()},()=>{l.error()})}updateSelection(l){this.selection=l}deleteAction(){this.bsModalService.show(T.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"bucket":"buckets"),itemNames:this.selection.selected.map(l=>l.bid),submitActionObservable:()=>new q.a(l=>{Object(c.a)(this.selection.selected.map(l=>this.rgwBucketService.delete(l.bid))).subscribe(null,n=>{l.error(n),this.table.refreshBtn()},()=>{l.complete(),this.table.refreshBtn()})})}})}}let A=(()=>{let l=class{constructor(l){this.http=l,this.url="api/rgw/daemon"}list(){return this.http.get(this.url)}get(l){return this.http.get(`${this.url}/${l}`)}};return l.ngInjectableDef=e["ɵɵdefineInjectable"]({factory:function(){return new l(e["ɵɵinject"](r.c))},token:l,providedIn:f.a}),l=d.__decorate([p.a,d.__metadata("design:paramtypes",[r.c])],l),l})();var M=u("85J/");class O extends N.a{constructor(l,n,u,e,t){super(),this.rgwDaemonService=l,this.authStorageService=n,this.cephShortVersionPipe=u,this.i18n=e,this.rgwSiteService=t,this.columns=[],this.daemons=[]}ngOnInit(){this.grafanaPermission=this.authStorageService.getPermissions().grafana,this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:2},{name:this.i18n("Hostname"),prop:"server_hostname",flexGrow:2},{name:this.i18n("Version"),prop:"version",flexGrow:1,pipe:this.cephShortVersionPipe}],this.rgwSiteService.get("realms").subscribe(l=>this.isMultiSite=l.length>0)}getDaemonList(l){this.rgwDaemonService.list().subscribe(l=>{this.daemons=l},()=>{l.error()})}}var U=u("GyhO"),L=u("aXbf"),z=function(l){return l.USERS="users",l.BUCKETS="buckets",l.METADATA="metadata",l.USAGE="usage",l.ZONE="zone",l}({});let G=(()=>{class l{static getAll(){return Object.values(l.capabilities)}}return l.capabilities=z,l})();class K{constructor(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.types=[],this.resource=this.i18n("capability"),this.createForm()}createForm(){this.formGroup=this.formBuilder.group({type:[null,[o.B.required]],perm:[null,[o.B.required]]})}setEditing(l=!0){this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.ADD}setValues(l,n){this.formGroup.setValue({type:l,perm:n})}setCapabilities(l){const n=[];l.forEach(l=>{n.push(l.type)}),this.types=[],G.getAll().forEach(l=>{-1===s.indexOf(n,l)&&this.types.push(l)})}onSubmit(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()}}class ${constructor(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.viewing=!0,this.userCandidates=[],this.resource=this.i18n("S3 Key"),this.createForm()}createForm(){this.formGroup=this.formBuilder.group({user:[null,[o.B.required]],generate_key:[!0],access_key:[null,[y.a.requiredIf({generate_key:!1})]],secret_key:[null,[y.a.requiredIf({generate_key:!1})]]})}setViewing(l=!0){this.viewing=l,this.action=this.viewing?this.actionLabels.SHOW:this.actionLabels.CREATE}setValues(l,n,u){this.formGroup.setValue({user:l,generate_key:s.isEmpty(n),access_key:n,secret_key:u})}setUserCandidates(l){this.userCandidates=l}onSubmit(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()}}class Z{}class Q{constructor(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.subusers=[],this.resource=this.i18n("Subuser"),this.createForm()}createForm(){this.formGroup=this.formBuilder.group({uid:[null],subuid:[null,[o.B.required,this.subuserValidator()]],perm:[null,[o.B.required]],generate_secret:[!0],secret_key:[null,[y.a.requiredIf({generate_secret:!1})]]})}subuserValidator(){const l=this;return n=>l.editing?null:Object(y.b)(n.value)?null:l.subusers.some(u=>s.isEqual(l.getSubuserName(u.id),n.value))?{subuserIdExists:!0}:null}getSubuserName(l){if(s.isEmpty(l))return l;const n=l.match(/([^:]+)(:(.+))?/);return s.isUndefined(n[3])?n[1]:n[3]}setEditing(l=!0){this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE}setValues(l,n="",u=""){this.formGroup.setValue({uid:l,subuid:this.getSubuserName(n),perm:u,generate_secret:!0,secret_key:null})}setSubusers(l){this.subusers=l}onSubmit(){const l=this.formGroup.value,n=new Z;n.id=`${l.uid}:${l.subuid}`,n.permissions=l.perm,n.generate_secret=l.generate_secret,n.secret_key=l.secret_key,this.submitAction.emit(n),this.bsModalRef.hide()}}class Y{constructor(l,n,u){this.bsModalRef=l,this.i18n=n,this.actionLabels=u,this.resource=this.i18n("Swift Key"),this.action=this.actionLabels.SHOW}setValues(l,n){this.user=l,this.secret_key=n}}class W{constructor(l,n,u,e,t,i,a,o){this.formBuilder=l,this.route=n,this.router=u,this.rgwUserService=e,this.bsModalService=t,this.notificationService=i,this.i18n=a,this.actionLabels=o,this.editing=!1,this.error=!1,this.loading=!1,this.submitObservables=[],this.icons=C.a,this.subusers=[],this.s3Keys=[],this.swiftKeys=[],this.capabilities=[],this.resource=this.i18n("user"),this.subuserLabel=this.i18n("subuser"),this.s3keyLabel=this.i18n("S3 Key"),this.capabilityLabel=this.i18n("capability"),this.createForm()}createForm(){this.userForm=this.formBuilder.group({uid:[null,[o.B.required],[y.a.unique(this.rgwUserService.exists,this.rgwUserService)]],display_name:[null,[o.B.required]],email:[null,[y.a.email],[y.a.unique(this.rgwUserService.emailExists,this.rgwUserService)]],max_buckets_mode:[1],max_buckets:[1e3,[y.a.requiredIf({max_buckets_mode:"1"}),y.a.number(!1),o.B.min(1)]],suspended:[!1],generate_key:[!0],access_key:[null,[y.a.requiredIf({generate_key:!1})]],secret_key:[null,[y.a.requiredIf({generate_key:!1})]],user_quota_enabled:[!1],user_quota_max_size_unlimited:[!0],user_quota_max_size:[null,[y.a.composeIf({user_quota_enabled:!0,user_quota_max_size_unlimited:!1},[o.B.required,this.quotaMaxSizeValidator])]],user_quota_max_objects_unlimited:[!0],user_quota_max_objects:[null,[o.B.min(0),y.a.requiredIf({user_quota_enabled:!0,user_quota_max_objects_unlimited:!1})]],bucket_quota_enabled:[!1],bucket_quota_max_size_unlimited:[!0],bucket_quota_max_size:[null,[y.a.composeIf({bucket_quota_enabled:!0,bucket_quota_max_size_unlimited:!1},[o.B.required,this.quotaMaxSizeValidator])]],bucket_quota_max_objects_unlimited:[!0],bucket_quota_max_objects:[null,[o.B.min(0),y.a.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_objects_unlimited:!1})]]})}ngOnInit(){this.editing=this.router.url.startsWith(`/rgw/user/${t.e.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.route.params.subscribe(l=>{if(!l.hasOwnProperty("uid"))return;const n=decodeURIComponent(l.uid);this.loading=!0;const u=[];u.push(this.rgwUserService.get(n)),u.push(this.rgwUserService.getQuota(n)),Object(c.a)(u).subscribe(l=>{this.loading=!1;const n=s.clone(this.userForm.value);let u=s.pick(l[0],s.keys(this.userForm.value));switch(u.max_buckets){case-1:u.max_buckets_mode=-1,u.max_buckets="";break;case 0:u.max_buckets_mode=0,u.max_buckets="";break;default:u.max_buckets_mode=1}["user","bucket"].forEach(n=>{const e=l[1][n+"_quota"];u[n+"_quota_enabled"]=e.enabled,e.max_size<0?(u[n+"_quota_max_size_unlimited"]=!0,u[n+"_quota_max_size"]=null):(u[n+"_quota_max_size_unlimited"]=!1,u[n+"_quota_max_size"]=`${e.max_size} B`),e.max_objects<0?(u[n+"_quota_max_objects_unlimited"]=!0,u[n+"_quota_max_objects"]=null):(u[n+"_quota_max_objects_unlimited"]=!1,u[n+"_quota_max_objects"]=e.max_objects)}),u=s.merge(n,u),this.userForm.setValue(u),this.subusers=l[0].subusers,this.s3Keys=l[0].keys,this.swiftKeys=l[0].swift_keys;const e={"read, write":"*"};l[0].caps.forEach(l=>{l.perm in e&&(l.perm=e[l.perm])}),this.capabilities=l[0].caps},l=>{this.error=l})})}goToListView(){this.router.navigate(["/rgw/user"])}onSubmit(){let l;if(this.userForm.pristine)return void this.goToListView();const n=this.userForm.getValue("uid");if(this.editing){if(this._isGeneralDirty()){const l=this._getUpdateArgs();this.submitObservables.push(this.rgwUserService.update(n,l))}l=this.i18n('Updated Object Gateway user "{{uid}}"',{uid:n})}else{const u=this._getCreateArgs();this.submitObservables.push(this.rgwUserService.create(u)),l=this.i18n('Created Object Gateway user "{{uid}}"',{uid:n})}if(this._isUserQuotaDirty()){const l=this._getUserQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,l))}if(this._isBucketQuotaDirty()){const l=this._getBucketQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,l))}Object(U.a)(...this.submitObservables).subscribe({error:()=>{this.userForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.notificationService.show(_.a.success,l),this.goToListView()}})}quotaMaxSizeValidator(l){return Object(y.b)(l.value)?null:null===RegExp("^(\\d+(\\.\\d+)?)\\s*(B|K(B|iB)?|M(B|iB)?|G(B|iB)?|T(B|iB)?)?$","i").exec(l.value)?{quotaMaxSize:!0}:(new L.a).toBytes(l.value)<1024?{quotaMaxSize:!0}:null}setSubuser(l,n){const u={"full-control":"full","read-write":"readwrite"},e=this.userForm.getValue("uid");this.submitObservables.push(this.rgwUserService.createSubuser(e,{subuser:l.id,access:l.permissions in u?u[l.permissions]:l.permissions,key_type:"swift",secret_key:l.secret_key,generate_secret:l.generate_secret?"true":"false"})),s.isNumber(n)?this.subusers[n]=l:(this.subusers.push(l),this.swiftKeys.push({user:l.id,secret_key:l.generate_secret?"Apply your changes first...":l.secret_key})),this.userForm.markAsDirty()}deleteSubuser(l){const n=this.subusers[l];this.submitObservables.push(this.rgwUserService.deleteSubuser(this.userForm.getValue("uid"),n.id)),this.s3Keys=this.s3Keys.filter(l=>l.user!==n.id),this.swiftKeys=this.swiftKeys.filter(l=>l.user!==n.id),this.subusers.splice(l,1),this.userForm.markAsDirty()}setCapability(l,n){const u=this.userForm.getValue("uid");if(s.isNumber(n)){const e=this.capabilities[n];this.submitObservables.push(this.rgwUserService.deleteCapability(u,e.type,e.perm)),this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities[n]=l}else this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities.push(l);this.userForm.markAsDirty()}deleteCapability(l){const n=this.capabilities[l];this.submitObservables.push(this.rgwUserService.deleteCapability(this.userForm.getValue("uid"),n.type,n.perm)),this.capabilities.splice(l,1),this.userForm.markAsDirty()}hasAllCapabilities(){return!s.difference(G.getAll(),s.map(this.capabilities,"type")).length}setS3Key(l,n){if(s.isNumber(n));else{const n=l.user.match(/([^:]+)(:(.+))?/),u=n[1],e={subuser:n[2]?n[3]:"",generate_key:l.generate_key?"true":"false"};"false"===e.generate_key&&(s.isNil(l.access_key)||(e.access_key=l.access_key),s.isNil(l.secret_key)||(e.secret_key=l.secret_key)),this.submitObservables.push(this.rgwUserService.addS3Key(u,e)),this.s3Keys.push({user:l.user,access_key:l.generate_key?"Apply your changes first...":l.access_key,secret_key:l.generate_key?"Apply your changes first...":l.secret_key})}this.userForm.markAsDirty()}deleteS3Key(l){const n=this.s3Keys[l];this.submitObservables.push(this.rgwUserService.deleteS3Key(this.userForm.getValue("uid"),n.access_key)),this.s3Keys.splice(l,1),this.userForm.markAsDirty()}showSubuserModal(l){const n=this.userForm.getValue("uid"),u=this.bsModalService.show(Q);if(s.isNumber(l)){const e=this.subusers[l];u.content.setEditing(),u.content.setValues(n,e.id,e.permissions)}else u.content.setEditing(!1),u.content.setValues(n),u.content.setSubusers(this.subusers);u.content.submitAction.subscribe(n=>{this.setSubuser(n,l)})}showS3KeyModal(l){const n=this.bsModalService.show($);if(s.isNumber(l)){const u=this.s3Keys[l];n.content.setViewing(),n.content.setValues(u.user,u.access_key,u.secret_key)}else{const l=this._getS3KeyUserCandidates();n.content.setViewing(!1),n.content.setUserCandidates(l),n.content.submitAction.subscribe(l=>{this.setS3Key(l)})}}showSwiftKeyModal(l){const n=this.bsModalService.show(Y),u=this.swiftKeys[l];n.content.setValues(u.user,u.secret_key)}showCapabilityModal(l){const n=this.bsModalService.show(K);if(s.isNumber(l)){const u=this.capabilities[l];n.content.setEditing(),n.content.setValues(u.type,u.perm)}else n.content.setEditing(!1),n.content.setCapabilities(this.capabilities);n.content.submitAction.subscribe(n=>{this.setCapability(n,l)})}_isGeneralDirty(){return["display_name","email","max_buckets_mode","max_buckets","suspended"].some(l=>this.userForm.get(l).dirty)}_isUserQuotaDirty(){return["user_quota_enabled","user_quota_max_size_unlimited","user_quota_max_size","user_quota_max_objects_unlimited","user_quota_max_objects"].some(l=>this.userForm.get(l).dirty)}_isBucketQuotaDirty(){return["bucket_quota_enabled","bucket_quota_max_size_unlimited","bucket_quota_max_size","bucket_quota_max_objects_unlimited","bucket_quota_max_objects"].some(l=>this.userForm.get(l).dirty)}_getCreateArgs(){const l={uid:this.userForm.getValue("uid"),display_name:this.userForm.getValue("display_name"),suspended:this.userForm.getValue("suspended"),email:"",max_buckets:this.userForm.getValue("max_buckets"),generate_key:this.userForm.getValue("generate_key"),access_key:"",secret_key:""},n=this.userForm.getValue("email");s.isString(n)&&n.length>0&&s.merge(l,{email:n}),this.userForm.getValue("generate_key")||s.merge(l,{generate_key:!1,access_key:this.userForm.getValue("access_key"),secret_key:this.userForm.getValue("secret_key")});const u=parseInt(this.userForm.getValue("max_buckets_mode"),10);return s.includes([-1,0],u)&&s.merge(l,{max_buckets:u}),l}_getUpdateArgs(){const l={},n=["display_name","email","max_buckets","suspended"];for(const e of n)l[e]=this.userForm.getValue(e);const u=parseInt(this.userForm.getValue("max_buckets_mode"),10);return s.includes([-1,0],u)&&(l.max_buckets=u),l}_getUserQuotaArgs(){const l={quota_type:"user",enabled:this.userForm.getValue("user_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("user_quota_max_size_unlimited")){const n=(new L.a).toBytes(this.userForm.getValue("user_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("user_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("user_quota_max_objects")),l}_getBucketQuotaArgs(){const l={quota_type:"bucket",enabled:this.userForm.getValue("bucket_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("bucket_quota_max_size_unlimited")){const n=(new L.a).toBytes(this.userForm.getValue("bucket_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("bucket_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("bucket_quota_max_objects")),l}_getS3KeyUserCandidates(){let l=[];const n=this.userForm.getValue("uid");return s.isString(n)&&!s.isEmpty(n)&&l.push(n),this.subusers.forEach(n=>{l.push(n.id)}),this.s3Keys.forEach(n=>{l.push(n.user)}),l=s.uniq(l),l}onMaxBucketsModeChange(l){"1"===l&&(this.userForm.get("max_buckets").valid||this.userForm.patchValue({max_buckets:1e3}))}}var J=u("x38r");const X=new j.a("rgw/user");class H extends N.a{constructor(l,n,u,e,t,i,a){super(),this.authStorageService=l,this.rgwUserService=n,this.bsModalService=u,this.i18n=e,this.urlBuilder=t,this.actionLabels=i,this.ngZone=a,this.columns=[],this.users=[],this.selection=new V.a,this.isStale=!1,this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:this.i18n("Username"),prop:"uid",flexGrow:1},{name:this.i18n("Full name"),prop:"display_name",flexGrow:1},{name:this.i18n("Email address"),prop:"email",flexGrow:1},{name:this.i18n("Suspended"),prop:"suspended",flexGrow:1,cellClass:"text-center",cellTransformation:J.a.checkIcon},{name:this.i18n("Max. buckets"),prop:"max_buckets",flexGrow:1,cellTransformation:J.a.map,customTemplateConfig:{"-1":this.i18n("Disabled"),0:this.i18n("Unlimited")}}];const o=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().uid)}`;this.tableActions=[{permission:"create",icon:C.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:l=>!l.hasSelection},{permission:"update",icon:C.a.edit,routerLink:()=>this.urlBuilder.getEdit(o()),name:this.actionLabels.EDIT},{permission:"delete",icon:C.a.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:l=>l.hasMultiSelection}],this.timeConditionReached()}timeConditionReached(){clearTimeout(this.staleTimeout),this.ngZone.runOutsideAngular(()=>{this.staleTimeout=window.setTimeout(()=>{this.ngZone.run(()=>{this.isStale=!0})},1e4)})}getUserList(l){this.isStale=!1,this.timeConditionReached(),this.rgwUserService.list().subscribe(l=>{this.users=l},()=>{l.error()})}updateSelection(l){this.selection=l}deleteAction(){this.bsModalService.show(T.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"user":"users"),itemNames:this.selection.selected.map(l=>l.uid),submitActionObservable:()=>new q.a(l=>{Object(c.a)(this.selection.selected.map(l=>this.rgwUserService.delete(l.uid))).subscribe(null,n=>{l.error(n),this.table.refreshBtn()},()=>{l.complete(),this.table.refreshBtn()})})}})}}class ll{}const nl={breadcrumbs:"Daemons"},ul={breadcrumbs:"Users"},el={breadcrumbs:t.a.CREATE},tl={breadcrumbs:t.a.EDIT},il={breadcrumbs:"Buckets"},al={breadcrumbs:t.a.CREATE},ol={breadcrumbs:t.a.EDIT},sl={breadcrumbs:"Object Gateway"};class dl{}var rl=u("MdoF"),cl=u("ES0t"),ml=u("Xg1U"),gl=u("z5nN"),pl=u("iutN"),fl=u("pMnS"),vl=u("EEJc"),bl=u("PEr+"),hl=u("a40w"),Cl=u("hfeG"),_l=u("2ZVE"),Rl=u("a278"),yl=u("insk"),kl=u("cUpR"),Il=u("20UP"),wl=u("GiVz"),El=u("pKUh"),ql=u("sLuX"),Nl=u("FSuO"),Tl=u("a0VL"),xl=u("j8L6"),Vl=u("b5OY"),Sl=u("pxLl"),Dl=u("SVse");class Fl{constructor(l,n){this.rgwDaemonService=l,this.authStorageService=n,this.serviceId="",this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection&&(this.serviceId=this.selection.id)}getMetaData(){s.isEmpty(this.serviceId)||this.rgwDaemonService.get(this.serviceId).subscribe(l=>{this.metadata=l.rgw_metadata})}}var jl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Bl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","x5ARzZtmk"]],null,null,null,Rl.b,Rl.a)),e["ɵdid"](3,638976,null,0,yl.a,[kl.b,Il.a,wl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){var u=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"rgw-instance-detail?var-rgw_servers=rgw."+u.serviceId,"one","x5ARzZtmk")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function Pl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],(function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.getMetaData()&&e),e}),ql.b,ql.a)),e["ɵdid"](5,638976,null,0,Nl.a,[Tl.a],{data:[0,"data"]},{fetchData:"fetchData"}),(l()(),e["ɵeld"](6,0,null,0,3,"tab",[["heading","Performance Counters"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](7,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](8,0,null,null,1,"cd-table-performance-counter",[["serviceType","rgw"]],null,null,null,xl.b,xl.a)),e["ɵdid"](9,114688,null,0,Vl.a,[Sl.a,wl.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,Bl)),e["ɵdid"](11,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.metadata),l(n,7,0,"Performance Counters"),l(n,9,0,"rgw",u.serviceId),l(n,11,0,u.grafanaPermission.read)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,6,0,e["ɵnov"](n,7).id,e["ɵnov"](n,7).active,e["ɵnov"](n,7).addClass,e["ɵnov"](n,7).role,e["ɵnov"](n,7).ariaLabelledby)}))}function Al(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Pl)),e["ɵdid"](1,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,1,0,n.component.selection)}),null)}function Ml(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-daemon-details",[],null,null,null,Al,jl)),e["ɵdid"](1,573440,null,0,Fl,[A,F.a],null,null)],null,null)}var Ol=e["ɵccf"]("cd-rgw-daemon-details",Fl,Ml,{selection:"selection"},{},[]),Ul=u("iExv");class Ll{constructor(){}}var zl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Gl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function Kl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,t=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent.parent,2),u.selection.bucket_quota.max_size));l(n,1,0,t)}))}function $l(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function Zl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.selection.bucket_quota.max_objects)}))}function Ql(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Bucket quota"])),(l()(),e["ɵeld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](8,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum size"])),(l()(),e["ɵand"](16777216,null,null,1,null,Gl)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Kl)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum objects"])),(l()(),e["ɵand"](16777216,null,null,1,null,$l)),e["ɵdid"](22,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Zl)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,15,0,u.selection.bucket_quota.max_size<=-1),l(n,17,0,u.selection.bucket_quota.max_size>-1),l(n,22,0,u.selection.bucket_quota.max_objects<=-1),l(n,24,0,u.selection.bucket_quota.max_objects>-1)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent.parent.parent,1),u.selection.bucket_quota.enabled));l(n,9,0,t)}))}function Yl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mode"])),(l()(),e["ɵeld"](4,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](5,null,["",""])),(l()(),e["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Days"])),(l()(),e["ɵeld"](9,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](10,null,["",""])),(l()(),e["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Years"])),(l()(),e["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](15,null,["",""]))],null,(function(l,n){var u=n.component;l(n,5,0,u.selection.lock_mode),l(n,10,0,u.selection.lock_retention_period_days),l(n,15,0,u.selection.lock_retention_period_years)}))}function Wl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,82,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,67,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,66,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](7,null,["",""])),(l()(),e["ɵeld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["ID"])),(l()(),e["ɵeld"](11,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](12,null,["",""])),(l()(),e["ɵeld"](13,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](14,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Owner"])),(l()(),e["ɵeld"](16,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](17,null,["",""])),(l()(),e["ɵeld"](18,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Index type"])),(l()(),e["ɵeld"](21,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](22,null,["",""])),(l()(),e["ɵeld"](23,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](24,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Placement rule"])),(l()(),e["ɵeld"](26,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](27,null,["",""])),(l()(),e["ɵeld"](28,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](29,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Marker"])),(l()(),e["ɵeld"](31,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](32,null,["",""])),(l()(),e["ɵeld"](33,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](34,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum marker"])),(l()(),e["ɵeld"](36,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](37,null,["",""])),(l()(),e["ɵeld"](38,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](39,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Version"])),(l()(),e["ɵeld"](41,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](42,null,["",""])),(l()(),e["ɵeld"](43,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](44,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Master version"])),(l()(),e["ɵeld"](46,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](47,null,["",""])),(l()(),e["ɵeld"](48,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](49,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Modification time"])),(l()(),e["ɵeld"](51,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](52,null,["",""])),e["ɵppd"](53,1),(l()(),e["ɵeld"](54,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](55,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Zonegroup"])),(l()(),e["ɵeld"](57,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](58,null,["",""])),(l()(),e["ɵeld"](59,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](60,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Versioning"])),(l()(),e["ɵeld"](62,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](63,null,["",""])),(l()(),e["ɵeld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](65,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["MFA Delete"])),(l()(),e["ɵeld"](67,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](68,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,Ql)),e["ɵdid"](70,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](71,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Locking"])),(l()(),e["ɵeld"](73,0,null,null,9,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](74,0,null,null,8,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](75,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](76,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](78,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](79,null,["",""])),e["ɵppd"](80,1),(l()(),e["ɵand"](16777216,null,null,1,null,Yl)),e["ɵdid"](82,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,70,0,u.selection.bucket_quota),l(n,82,0,u.selection.lock_enabled)}),(function(l,n){var u=n.component;l(n,7,0,u.selection.bid),l(n,12,0,u.selection.id),l(n,17,0,u.selection.owner),l(n,22,0,u.selection.index_type),l(n,27,0,u.selection.placement_rule),l(n,32,0,u.selection.marker),l(n,37,0,u.selection.max_marker),l(n,42,0,u.selection.ver),l(n,47,0,u.selection.master_ver);var t=e["ɵunv"](n,52,0,l(n,53,0,e["ɵnov"](n.parent.parent,0),u.selection.mtime));l(n,52,0,t),l(n,58,0,u.selection.zonegroup),l(n,63,0,u.selection.versioning),l(n,68,0,u.selection.mfa_delete);var i=e["ɵunv"](n,79,0,l(n,80,0,e["ɵnov"](n.parent.parent,1),u.selection.lock_enabled));l(n,79,0,i)}))}function Jl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Wl)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.selection)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function Xl(l){return e["ɵvid"](0,[e["ɵpid"](0,Tl.a,[Dl.DatePipe]),e["ɵpid"](0,Ul.a,[wl.a]),e["ɵpid"](0,D.a,[L.a]),(l()(),e["ɵand"](16777216,null,null,1,null,Jl)),e["ɵdid"](4,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,4,0,n.component.selection)}),null)}function Hl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-bucket-details",[],null,null,null,Xl,zl)),e["ɵdid"](1,49152,null,0,Ll,[],null,null)],null,null)}var ln=e["ɵccf"]("cd-rgw-bucket-details",Ll,Hl,{selection:"selection"},{},[]),nn=u("25BL"),un=u("FE24"),en=u("z/SZ"),tn=u("GS7A"),an=u("TJUb");class on{constructor(l,n,u){this.rgwUserService=l,this.bsModalService=n,this.i18n=u,this.keys=[],this.keysColumns=[],this.keysSelection=new V.a,this.icons=C.a}ngOnInit(){this.keysColumns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Type"),prop:"type",flexGrow:1}],this.maxBucketsMap={"-1":this.i18n("Disabled"),0:this.i18n("Unlimited")}}ngOnChanges(){this.selection&&(this.user=this.selection,this.user.subusers=s.sortBy(this.user.subusers,"id"),this.user.caps=s.sortBy(this.user.caps,"type"),this.rgwUserService.getQuota(this.user.uid).subscribe(l=>{s.extend(this.user,l)}),this.keys=[],this.user.keys&&this.user.keys.forEach(l=>{this.keys.push({id:this.keys.length+1,type:"S3",username:l.user,ref:l})}),this.user.swift_keys&&this.user.swift_keys.forEach(l=>{this.keys.push({id:this.keys.length+1,type:"Swift",username:l.user,ref:l})}),this.keys=s.sortBy(this.keys,"user"))}updateKeysSelection(l){this.keysSelection=l}showKeyModal(){const l=this.keysSelection.first(),n=this.bsModalService.show("S3"===l.type?$:Y);switch(l.type){case"S3":n.content.setViewing(),n.content.setValues(l.ref.user,l.ref.access_key,l.ref.secret_key);break;case"Swift":n.content.setValues(l.ref.user,l.ref.secret_key)}}}var sn=u("LqlI"),dn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function rn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Email address"])),(l()(),e["ɵeld"](3,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](4,null,["",""]))],null,(function(l,n){l(n,4,0,n.component.user.email)}))}function cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," (",") "]))],null,(function(l,n){l(n,1,0,n.context.$implicit.id,n.context.$implicit.permissions)}))}function mn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Subusers"])),(l()(),e["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,cn)),e["ɵdid"](5,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,5,0,n.component.user.subusers)}),null)}function gn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," (",") "]))],null,(function(l,n){l(n,1,0,n.context.$implicit.type,n.context.$implicit.perm)}))}function pn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Capabilities"])),(l()(),e["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,gn)),e["ɵdid"](5,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,5,0,n.component.user.caps)}),null)}function fn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function bn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,t=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent.parent,2),u.user.user_quota.max_size));l(n,1,0,t)}))}function hn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function Cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function _n(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.user.user_quota.max_objects)}))}function Rn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,28,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User quota"])),(l()(),e["ɵeld"](3,0,null,null,25,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,24,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](8,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum size"])),(l()(),e["ɵand"](16777216,null,null,1,null,fn)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vn)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bn)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](20,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum objects"])),(l()(),e["ɵand"](16777216,null,null,1,null,hn)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Cn)),e["ɵdid"](26,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,_n)),e["ɵdid"](28,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,15,0,!u.user.user_quota.enabled),l(n,17,0,u.user.user_quota.enabled&&u.user.user_quota.max_size<=-1),l(n,19,0,u.user.user_quota.enabled&&u.user.user_quota.max_size>-1),l(n,24,0,!u.user.user_quota.enabled),l(n,26,0,u.user.user_quota.enabled&&u.user.user_quota.max_objects<=-1),l(n,28,0,u.user.user_quota.enabled&&u.user.user_quota.max_objects>-1)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent.parent.parent,0),u.user.user_quota.enabled));l(n,9,0,t)}))}function yn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function kn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function In(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,t=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent.parent,2),u.user.bucket_quota.max_size));l(n,1,0,t)}))}function wn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function En(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function qn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.user.bucket_quota.max_objects)}))}function Nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,28,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Bucket quota"])),(l()(),e["ɵeld"](3,0,null,null,25,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,24,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](8,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum size"])),(l()(),e["ɵand"](16777216,null,null,1,null,yn)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,kn)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,In)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](20,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum objects"])),(l()(),e["ɵand"](16777216,null,null,1,null,wn)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,En)),e["ɵdid"](26,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,qn)),e["ɵdid"](28,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,15,0,!u.user.bucket_quota.enabled),l(n,17,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_size<=-1),l(n,19,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_size>-1),l(n,24,0,!u.user.bucket_quota.enabled),l(n,26,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_objects<=-1),l(n,28,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_objects>-1)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent.parent.parent,0),u.user.bucket_quota.enabled));l(n,9,0,t)}))}function Tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,40,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,35,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,34,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](7,null,["",""])),(l()(),e["ɵeld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Full name"])),(l()(),e["ɵeld"](11,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](12,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,rn)),e["ɵdid"](14,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](15,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Suspended"])),(l()(),e["ɵeld"](18,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](19,null,["",""])),e["ɵppd"](20,1),(l()(),e["ɵeld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["System"])),(l()(),e["ɵeld"](24,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](25,null,["",""])),e["ɵppd"](26,1),(l()(),e["ɵeld"](27,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum buckets"])),(l()(),e["ɵeld"](30,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](31,null,["",""])),e["ɵppd"](32,2),(l()(),e["ɵand"](16777216,null,null,1,null,mn)),e["ɵdid"](34,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,pn)),e["ɵdid"](36,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Rn)),e["ɵdid"](38,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Nn)),e["ɵdid"](40,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,14,0,null==u.user.email?null:u.user.email.length),l(n,34,0,u.user.subusers&&u.user.subusers.length),l(n,36,0,u.user.caps&&u.user.caps.length),l(n,38,0,u.user.user_quota),l(n,40,0,u.user.bucket_quota)}),(function(l,n){var u=n.component;l(n,7,0,u.user.uid),l(n,12,0,u.user.display_name);var t=e["ɵunv"](n,19,0,l(n,20,0,e["ɵnov"](n.parent.parent,0),u.user.suspended));l(n,19,0,t);var i=e["ɵunv"](n,25,0,l(n,26,0,e["ɵnov"](n.parent.parent,0),"true"===u.user.system));l(n,25,0,i);var a=e["ɵunv"](n,31,0,l(n,32,0,e["ɵnov"](n.parent.parent,1),u.user.max_buckets,u.maxBucketsMap));l(n,31,0,a)}))}function xn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"tab",[["heading","Keys"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,12,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["selectionType","multi"]],null,[[null,"updateSelection"]],(function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateKeysSelection(u)&&e),e}),nn.b,nn.a)),e["ɵdid"](3,2867200,null,0,x.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["ɵeld"](4,0,null,1,10,"div",[["class","table-actions"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,16777216,null,null,9,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),e["ɵprd"](512,null,un.f,un.f,[]),e["ɵdid"](7,212992,null,0,un.c,[e.ElementRef,e.Renderer2,e.ViewContainerRef,en.a,un.f,un.a,tn.b],null,null),(l()(),e["ɵeld"](8,0,null,null,6,"button",[["class","btn btn-secondary"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showKeyModal()&&e),e}),null,null)),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Show"]))],(function(l,n){var u=n.component;l(n,1,0,"Keys"),l(n,3,0,u.keys,u.keysColumns,"flex","true","multi"),l(n,7,0);var e=l(n,12,0,u.icons.show);l(n,11,0,e)}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby),l(n,5,0,e["ɵnov"](n,7).dropup,e["ɵnov"](n,7).isOpen,e["ɵnov"](n,7).isOpen&&e["ɵnov"](n,7).isBs4),l(n,8,0,!u.keysSelection.hasSingleSelection)}))}function Vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Tn)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,xn)),e["ɵdid"](7,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.user),l(n,7,0,u.keys.length)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function Sn(l){return e["ɵvid"](0,[e["ɵpid"](0,Ul.a,[wl.a]),e["ɵpid"](0,an.a,[]),e["ɵpid"](0,S.a,[L.a]),e["ɵqud"](671088640,1,{accessKeyTpl:0}),e["ɵqud"](671088640,2,{secretKeyTpl:0}),(l()(),e["ɵand"](16777216,null,null,1,null,Vn)),e["ɵdid"](6,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,6,0,n.component.selection)}),null)}function Dn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-details",[],null,null,null,Sn,dn)),e["ɵdid"](1,638976,null,0,on,[h.a,sn.b,wl.a],null,null)],(function(l,n){l(n,1,0)}),null)}var Fn=e["ɵccf"]("cd-rgw-user-details",on,Dn,{selection:"selection"},{},[]),jn=u("8xTl"),Bn=u("ajRT"),Pn=u("mXUL"),An=u("+gVj"),Mn=u("D4zM"),On=u("OcYo"),Un=u("EApP"),Ln=u("KVJa"),zn=u("Z21x"),Gn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Kn(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,jn.a,[]),(l()(),e["ɵeld"](2,0,null,null,49,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,Bn.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," "," "])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,43,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,39,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,38,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,12).onReset()&&t),t}),null,null)),e["ɵdid"](11,16384,null,0,o.G,[],null,null),e["ɵdid"](12,4210688,null,0,o.t,[[8,null],[8,null]],null,null),e["ɵprd"](2048,null,o.d,null,[o.t]),e["ɵdid"](14,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),e["ɵeld"](15,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](16,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](21,0,null,0,7,"div",[["class","cd-col-form-inpu"]],null,null,null,null,null)),(l()(),e["ɵeld"](22,0,null,null,6,"input",[["class","form-control"],["id","user"],["name","user"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["ɵnov"](l,23)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,23).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,23)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,23)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.user=u)&&t),t}),null,null)),e["ɵdid"](23,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](25,671744,null,0,o.u,[[2,o.d],[8,null],[8,null],[6,o.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["ɵprd"](2048,null,o.q,null,[o.u]),e["ɵdid"](27,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](28,16384,null,0,An.h,[[3,o.d],An.a],null,null),(l()(),e["ɵeld"](29,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](30,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](33,0,null,0,1,"label",[["class","cd-col-form-label"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](35,0,null,0,13,"div",[["class","cd-col-form-inpu"]],null,null,null,null,null)),(l()(),e["ɵeld"](36,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](37,0,null,null,6,"input",[["class","form-control"],["id","secret_key"],["name","secret_key"],["type","password"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["ɵnov"](l,38)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,38).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,38)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,38)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.secret_key=u)&&t),t}),null,null)),e["ɵdid"](38,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](40,671744,null,0,o.u,[[2,o.d],[8,null],[8,null],[6,o.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["ɵprd"](2048,null,o.q,null,[o.u]),e["ɵdid"](42,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](43,16384,null,0,An.h,[[3,o.d],An.a],null,null),(l()(),e["ɵeld"](44,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](45,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,46).onClick()&&t),t}),null,null)),e["ɵdid"](46,81920,null,0,Mn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](47,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,48).onClick()&&t),t}),null,null)),e["ɵdid"](48,81920,null,0,On.a,[e.ElementRef,e.Renderer2,Un.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵeld"](49,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](50,0,null,null,1,"cd-back-button",[],null,null,null,Ln.b,Ln.a)),e["ɵdid"](51,49152,null,0,zn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,16,0),l(n,25,0,"user",u.user),l(n,30,0),l(n,40,0,"secret_key",u.secret_key),l(n,46,0,"secret_key"),l(n,48,0,"secret_key"),l(n,51,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,10,0,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending),l(n,15,0,e["ɵnov"](n,16).hasErrors,e["ɵnov"](n,16).hasSuccess),l(n,22,0,!0,e["ɵnov"](n,27).ngClassUntouched,e["ɵnov"](n,27).ngClassTouched,e["ɵnov"](n,27).ngClassPristine,e["ɵnov"](n,27).ngClassDirty,e["ɵnov"](n,27).ngClassValid,e["ɵnov"](n,27).ngClassInvalid,e["ɵnov"](n,27).ngClassPending,e["ɵnov"](n,28).validClass,e["ɵnov"](n,28).invalidClass),l(n,29,0,e["ɵnov"](n,30).hasErrors,e["ɵnov"](n,30).hasSuccess),l(n,37,0,!0,e["ɵnov"](n,42).ngClassUntouched,e["ɵnov"](n,42).ngClassTouched,e["ɵnov"](n,42).ngClassPristine,e["ɵnov"](n,42).ngClassDirty,e["ɵnov"](n,42).ngClassValid,e["ɵnov"](n,42).ngClassInvalid,e["ɵnov"](n,42).ngClassPending,e["ɵnov"](n,43).validClass,e["ɵnov"](n,43).invalidClass)}))}function $n(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-swift-key-modal",[],null,null,null,Kn,Gn)),e["ɵdid"](1,49152,null,0,Y,[sn.a,wl.a,t.b],null,null)],null,null)}var Zn=e["ɵccf"]("cd-rgw-user-swift-key-modal",Y,$n,{},{},[]),Qn=u("IZUe"),Yn=u("gp3X"),Wn=u("sb0X"),Jn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Xn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","user"],["id","user"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](1,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](3,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](5,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](6,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"user"),l(n,6,0,"user")}),(function(l,n){l(n,0,0,!0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function Hn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a username --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function lu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"select",[["autofocus",""],["class","form-control custom-select"],["formControlName","user"],["id","user"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,2).onTouched()&&t),t}),null,null)),e["ɵdid"](1,4210688,null,0,Qn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](2,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](4,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](6,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](7,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Hn)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,lu)),e["ɵdid"](11,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,1,0,""),l(n,4,0,"user"),l(n,7,0,"user"),l(n,9,0,null!==u.userCandidates),l(n,11,0,u.userCandidates)}),(function(l,n){l(n,0,0,e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass)}))}function uu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","generate_key"],["id","generate_key"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](9,671744,[[3,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](11,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](12,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","generate_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Auto-generate key"]))],(function(l,n){l(n,1,0),l(n,9,0,"generate_key"),l(n,12,0,"generate_key")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function iu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","access_key"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](7,{required:0}),(l()(),e["ɵted"](-1,null,["Access key"])),(l()(),e["ɵeld"](9,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,6,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["type","password"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](14,671744,[[5,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](16,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](17,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](18,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,20).onClick()&&t),t}),null,null)),e["ɵdid"](20,81920,null,0,Mn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](21,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,22).onClick()&&t),t}),null,null)),e["ɵdid"](22,81920,null,0,On.a,[e.ElementRef,e.Renderer2,Un.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,tu)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var t=l(n,7,0,!u.viewing);l(n,6,0,"cd-col-form-label",t),l(n,14,0,"access_key"),l(n,17,0,"access_key"),l(n,20,0,"access_key"),l(n,22,0,"access_key"),l(n,24,0,u.formGroup.showError("access_key",e["ɵnov"](n.parent,11),"required"))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,u.viewing,e["ɵnov"](n,16).ngClassUntouched,e["ɵnov"](n,16).ngClassTouched,e["ɵnov"](n,16).ngClassPristine,e["ɵnov"](n,16).ngClassDirty,e["ɵnov"](n,16).ngClassValid,e["ɵnov"](n,16).ngClassInvalid,e["ɵnov"](n,16).ngClassPending,e["ɵnov"](n,17).validClass,e["ɵnov"](n,17).invalidClass)}))}function au(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ou(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","secret_key"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](7,{required:0}),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](9,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,6,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](14,671744,[[7,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](16,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](17,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](18,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,20).onClick()&&t),t}),null,null)),e["ɵdid"](20,81920,null,0,Mn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](21,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,22).onClick()&&t),t}),null,null)),e["ɵdid"](22,81920,null,0,On.a,[e.ElementRef,e.Renderer2,Un.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,au)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var t=l(n,7,0,!u.viewing);l(n,6,0,"cd-col-form-label",t),l(n,14,0,"secret_key"),l(n,17,0,"secret_key"),l(n,20,0,"secret_key"),l(n,22,0,"secret_key"),l(n,24,0,u.formGroup.showError("secret_key",e["ɵnov"](n.parent,11),"required"))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,u.viewing,e["ɵnov"](n,16).ngClassUntouched,e["ɵnov"](n,16).ngClassTouched,e["ɵnov"](n,16).ngClassPristine,e["ɵnov"](n,16).ngClassDirty,e["ɵnov"](n,16).ngClassValid,e["ɵnov"](n,16).ngClassInvalid,e["ɵnov"](n,16).ngClassPending,e["ɵnov"](n,17).validClass,e["ɵnov"](n,17).invalidClass)}))}function su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Yn.b,Yn.a)),e["ɵdid"](1,114688,null,0,Wn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](2,0,[""," ",""])),e["ɵppd"](3,1),e["ɵppd"](4,1)],(function(l,n){l(n,1,0,n.component.formGroup)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,2,0,l(n,3,0,e["ɵnov"](n.parent,0),u.action)),i=e["ɵunv"](n,2,1,l(n,4,0,e["ɵnov"](n.parent,1),u.resource));l(n,2,0,t,i)}))}function du(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,jn.a,[]),(l()(),e["ɵeld"](2,0,null,null,40,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,Bn.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," ",""])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,34,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,33,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,11).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,o.G,[],null,null),e["ɵdid"](11,540672,[["frm",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,o.d,null,[o.l]),e["ɵdid"](13,16384,null,0,o.s,[[4,o.d]],null,null),e["ɵdid"](14,16384,null,0,An.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](15,0,null,null,22,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](17,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](20,0,null,0,4,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](22,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](23,{required:0}),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](25,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Xn)),e["ɵdid"](27,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,nu)),e["ɵdid"](29,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,uu)),e["ɵdid"](31,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,eu)),e["ɵdid"](33,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,iu)),e["ɵdid"](35,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ou)),e["ɵdid"](37,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](38,0,null,null,4,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,su)),e["ɵdid"](40,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](41,0,null,null,1,"cd-back-button",[],null,null,null,Ln.b,Ln.a)),e["ɵdid"](42,49152,null,0,zn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,11,0,u.formGroup),l(n,14,0,u.formGroup),l(n,17,0);var t=l(n,23,0,!u.viewing);l(n,22,0,"cd-col-form-label",t),l(n,27,0,u.viewing),l(n,29,0,!u.viewing),l(n,31,0,u.formGroup.showError("user",e["ɵnov"](n,11),"required")),l(n,33,0,!u.viewing),l(n,35,0,!u.formGroup.getValue("generate_key")),l(n,37,0,!u.formGroup.getValue("generate_key")),l(n,40,0,!u.viewing),l(n,42,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,9,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending),l(n,16,0,e["ɵnov"](n,17).hasErrors,e["ɵnov"](n,17).hasSuccess)}))}function ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-s3-key-modal",[],null,null,null,du,Jn)),e["ɵdid"](1,49152,null,0,$,[R.a,sn.a,wl.a,t.b],null,null)],null,null)}var cu=e["ɵccf"]("cd-rgw-user-s3-key-modal",$,ru,{},{submitAction:"submitAction"},[]),mu=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function gu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","type"],["id","type"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](1,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](3,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](5,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](6,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"type"),l(n,6,0,"type")}),(function(l,n){l(n,0,0,!0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function pu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a type --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function fu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function vu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"select",[["autofocus",""],["class","form-control custom-select"],["formControlName","type"],["id","type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,2).onTouched()&&t),t}),null,null)),e["ɵdid"](1,4210688,null,0,Qn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](2,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](4,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](6,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](7,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,pu)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,fu)),e["ɵdid"](11,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,1,0,""),l(n,4,0,"type"),l(n,7,0,"type"),l(n,9,0,null!==u.types),l(n,11,0,u.types)}),(function(l,n){l(n,0,0,e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass)}))}function bu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function hu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Cu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function _u(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,jn.a,[]),(l()(),e["ɵeld"](2,0,null,null,60,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,Bn.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," ",""])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,54,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,53,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,11).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,o.G,[],null,null),e["ɵdid"](11,540672,[["frm",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,o.d,null,[o.l]),e["ɵdid"](13,16384,null,0,o.s,[[4,o.d]],null,null),e["ɵdid"](14,16384,null,0,An.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](15,0,null,null,39,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](17,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](20,0,null,0,4,"label",[["class","cd-col-form-label"],["for","type"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](22,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](23,{required:0}),(l()(),e["ɵted"](-1,null,["Type"])),(l()(),e["ɵeld"](25,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,gu)),e["ɵdid"](27,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vu)),e["ɵdid"](29,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bu)),e["ɵdid"](31,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](32,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](33,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](36,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","perm"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Permission"])),(l()(),e["ɵeld"](38,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](39,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,40).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,40).onTouched()&&t),t}),null,null)),e["ɵdid"](40,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](42,671744,[[3,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](44,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](45,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](46,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](47,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](48,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a permission --"])),(l()(),e["ɵand"](16777216,null,null,2,null,hu)),e["ɵdid"](51,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["ɵpad"](52,3),(l()(),e["ɵand"](16777216,null,null,1,null,Cu)),e["ɵdid"](54,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](55,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](56,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Yn.b,Yn.a)),e["ɵdid"](57,114688,null,0,Wn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](58,0,[""," ",""])),e["ɵppd"](59,1),e["ɵppd"](60,1),(l()(),e["ɵeld"](61,0,null,null,1,"cd-back-button",[],null,null,null,Ln.b,Ln.a)),e["ɵdid"](62,49152,null,0,zn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,11,0,u.formGroup),l(n,14,0,u.formGroup),l(n,17,0);var t=l(n,23,0,!u.editing);l(n,22,0,"cd-col-form-label",t),l(n,27,0,u.editing),l(n,29,0,!u.editing),l(n,31,0,u.formGroup.showError("type",e["ɵnov"](n,11),"required")),l(n,33,0),l(n,42,0,"perm"),l(n,45,0,"perm"),l(n,47,0,null),l(n,48,0,null);var i=l(n,52,0,"read","write","*");l(n,51,0,i),l(n,54,0,u.formGroup.showError("perm",e["ɵnov"](n,11),"required")),l(n,57,0,u.formGroup),l(n,62,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,9,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending),l(n,16,0,e["ɵnov"](n,17).hasErrors,e["ɵnov"](n,17).hasSuccess),l(n,32,0,e["ɵnov"](n,33).hasErrors,e["ɵnov"](n,33).hasSuccess),l(n,39,0,e["ɵnov"](n,44).ngClassUntouched,e["ɵnov"](n,44).ngClassTouched,e["ɵnov"](n,44).ngClassPristine,e["ɵnov"](n,44).ngClassDirty,e["ɵnov"](n,44).ngClassValid,e["ɵnov"](n,44).ngClassInvalid,e["ɵnov"](n,44).ngClassPending,e["ɵnov"](n,45).validClass,e["ɵnov"](n,45).invalidClass);var a=e["ɵunv"](n,58,0,l(n,59,0,e["ɵnov"](n,0),u.action)),o=e["ɵunv"](n,58,1,l(n,60,0,e["ɵnov"](n,1),u.resource));l(n,58,0,a,o)}))}function Ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-capability-modal",[],null,null,null,_u,mu)),e["ɵdid"](1,49152,null,0,K,[R.a,sn.a,wl.a,t.b],null,null)],null,null)}var yu=e["ɵccf"]("cd-rgw-user-capability-modal",K,Ru,{},{submitAction:"submitAction"},[]),ku=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Iu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function wu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen subuser ID is already in use."]))],null,null)}function Eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function qu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](9,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](11,671744,[[9,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](13,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](14,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,17).onClick()&&t),t}),null,null)),e["ɵdid"](17,81920,null,0,Mn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,19).onClick()&&t),t}),null,null)),e["ɵdid"](19,81920,null,0,On.a,[e.ElementRef,e.Renderer2,Un.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Nu)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"secret_key"),l(n,14,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.formGroup.showError("secret_key",e["ɵnov"](n.parent.parent,11),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function xu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,19,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Swift key"])),(l()(),e["ɵeld"](3,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](4,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","generate_secret"],["id","generate_secret"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](12,671744,[[7,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](14,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](15,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","generate_secret"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Auto-generate secret"])),(l()(),e["ɵand"](16777216,null,null,1,null,Tu)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,12,0,"generate_secret"),l(n,15,0,"generate_secret"),l(n,19,0,!u.editing&&!u.formGroup.getValue("generate_secret"))}),(function(l,n){l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function Vu(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,jn.a,[]),(l()(),e["ɵeld"](2,0,null,null,90,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,Bn.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," ",""])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,84,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,83,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,11).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,o.G,[],null,null),e["ɵdid"](11,540672,[["frm",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,o.d,null,[o.l]),e["ɵdid"](13,16384,null,0,o.s,[[4,o.d]],null,null),e["ɵdid"](14,16384,null,0,An.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](15,0,null,null,69,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](17,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](20,0,null,0,1,"label",[["class","cd-col-form-label"],["for","uid"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](22,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](23,0,null,null,6,"input",[["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,24)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,24).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,24)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,24)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](24,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](26,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](28,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](29,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](30,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](31,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](34,0,null,0,4,"label",[["class","cd-col-form-label"],["for","subuid"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](36,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](37,{required:0}),(l()(),e["ɵted"](-1,null,["Subuser"])),(l()(),e["ɵeld"](39,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](40,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","subuid"],["id","subuid"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,42)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,42).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,42)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,42)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](41,4210688,null,0,Qn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](42,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](44,671744,[[3,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](46,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](47,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Iu)),e["ɵdid"](49,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,wu)),e["ɵdid"](51,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](52,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](53,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](56,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","perm"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Permission"])),(l()(),e["ɵeld"](58,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](59,0,null,null,21,"select",[["class","form-control custom-select"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,60).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,60).onTouched()&&t),t}),null,null)),e["ɵdid"](60,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](62,671744,[[5,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](64,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](65,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](66,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](67,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](68,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a permission --"])),(l()(),e["ɵand"](16777216,null,null,2,null,Eu)),e["ɵdid"](71,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["ɵpad"](72,2),(l()(),e["ɵeld"](73,0,null,null,3,"option",[["value","read-write"]],null,null,null,null,null)),e["ɵdid"](74,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](75,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["read, write"])),(l()(),e["ɵeld"](77,0,null,null,3,"option",[["value","full-control"]],null,null,null,null,null)),e["ɵdid"](78,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](79,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["full"])),(l()(),e["ɵand"](16777216,null,null,1,null,qu)),e["ɵdid"](82,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,xu)),e["ɵdid"](84,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](85,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](86,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Yn.b,Yn.a)),e["ɵdid"](87,114688,null,0,Wn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](88,0,[""," ",""])),e["ɵppd"](89,1),e["ɵppd"](90,1),(l()(),e["ɵeld"](91,0,null,null,1,"cd-back-button",[],null,null,null,Ln.b,Ln.a)),e["ɵdid"](92,49152,null,0,zn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,11,0,u.formGroup),l(n,14,0,u.formGroup),l(n,17,0),l(n,26,0,"uid"),l(n,29,0,"uid"),l(n,31,0);var t=l(n,37,0,!u.editing);l(n,36,0,"cd-col-form-label",t),l(n,41,0,""),l(n,44,0,"subuid"),l(n,47,0,"subuid"),l(n,49,0,u.formGroup.showError("subuid",e["ɵnov"](n,11),"required")),l(n,51,0,u.formGroup.showError("subuid",e["ɵnov"](n,11),"subuserIdExists")),l(n,53,0),l(n,62,0,"perm"),l(n,65,0,"perm"),l(n,67,0,null),l(n,68,0,null);var i=l(n,72,0,"read","write");l(n,71,0,i),l(n,74,0,"read-write"),l(n,75,0,"read-write"),l(n,78,0,"full-control"),l(n,79,0,"full-control"),l(n,82,0,u.formGroup.showError("perm",e["ɵnov"](n,11),"required")),l(n,84,0,!u.editing),l(n,87,0,u.formGroup),l(n,92,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,9,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending),l(n,16,0,e["ɵnov"](n,17).hasErrors,e["ɵnov"](n,17).hasSuccess),l(n,23,0,!0,e["ɵnov"](n,28).ngClassUntouched,e["ɵnov"](n,28).ngClassTouched,e["ɵnov"](n,28).ngClassPristine,e["ɵnov"](n,28).ngClassDirty,e["ɵnov"](n,28).ngClassValid,e["ɵnov"](n,28).ngClassInvalid,e["ɵnov"](n,28).ngClassPending,e["ɵnov"](n,29).validClass,e["ɵnov"](n,29).invalidClass),l(n,30,0,e["ɵnov"](n,31).hasErrors,e["ɵnov"](n,31).hasSuccess),l(n,40,0,u.editing,e["ɵnov"](n,46).ngClassUntouched,e["ɵnov"](n,46).ngClassTouched,e["ɵnov"](n,46).ngClassPristine,e["ɵnov"](n,46).ngClassDirty,e["ɵnov"](n,46).ngClassValid,e["ɵnov"](n,46).ngClassInvalid,e["ɵnov"](n,46).ngClassPending,e["ɵnov"](n,47).validClass,e["ɵnov"](n,47).invalidClass),l(n,52,0,e["ɵnov"](n,53).hasErrors,e["ɵnov"](n,53).hasSuccess),l(n,59,0,e["ɵnov"](n,64).ngClassUntouched,e["ɵnov"](n,64).ngClassTouched,e["ɵnov"](n,64).ngClassPristine,e["ɵnov"](n,64).ngClassDirty,e["ɵnov"](n,64).ngClassValid,e["ɵnov"](n,64).ngClassInvalid,e["ɵnov"](n,64).ngClassPending,e["ɵnov"](n,65).validClass,e["ɵnov"](n,65).invalidClass);var a=e["ɵunv"](n,88,0,l(n,89,0,e["ɵnov"](n,0),u.action)),o=e["ɵunv"](n,88,1,l(n,90,0,e["ɵnov"](n,1),u.resource));l(n,88,0,a,o)}))}function Su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-subuser-modal",[],null,null,null,Vu,ku)),e["ɵdid"](1,49152,null,0,Q,[R.a,sn.a,wl.a,t.b],null,null)],null,null)}var Du=e["ɵccf"]("cd-rgw-user-subuser-modal",Q,Su,{},{submitAction:"submitAction"},[]),Fu=u("yT6U"),ju=u("4DD9"),Bu=u("+0ag"),Pu=u("IzCI"),Au=u("Dwqy"),Mu=u("uYzU"),Ou=u("FFMq"),Uu=u("E2fk"),Lu=u("nSDx"),zu=u("SB+Q"),Gu=u("TYzs"),Ku=u("BQkM"),$u=u("dEH0"),Zu=u("G1/K"),Qu=u("efK2"),Yu=u("CNMR"),Wu=u("KOzp"),Ju=u("2uy1"),Xu=u("38Bd"),Hu=u("978R"),le=u("w9WL"),ne=u("iInd"),ue=u("9Xeq"),ee=u("hrfs"),te=u("yGOH"),ie=u("bxSN"),ae=u("WF9J"),oe=u("V/fk"),se=u("ChqD"),de=u("PCNd"),re=u("G6Q+"),ce=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function me(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","WAkugZpiz"]],null,null,null,Rl.b,Rl.a)),e["ɵdid"](3,638976,null,0,yl.a,[kl.b,Il.a,wl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"rgw-overview?","two","WAkugZpiz")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function ge(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"tab",[["heading","Sync Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","rgw-sync-overview"]],null,null,null,Rl.b,Rl.a)),e["ɵdid"](3,638976,null,0,yl.a,[kl.b,Il.a,wl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0,"Sync Performance"),l(n,3,0,"radosgw-sync-overview?","two","rgw-sync-overview")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function pe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,5,"tab",[["heading","Daemons List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](4,0,null,null,3,"cd-table",[["columnMode","flex"]],null,[[null,"setExpandedRow"],[null,"fetchData"]],(function(l,n,u){var e=!0,t=l.component;return"setExpandedRow"===n&&(e=!1!==t.setExpandedRow(u)&&e),"fetchData"===n&&(e=!1!==t.getDaemonList(u)&&e),e}),nn.b,nn.a)),e["ɵdid"](5,2867200,null,0,x.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"]},{fetchData:"fetchData",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](6,0,null,3,1,"cd-rgw-daemon-details",[["cdTableDetail",""]],null,null,null,Al,jl)),e["ɵdid"](7,573440,null,0,Fl,[A,F.a],{selection:[0,"selection"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,me)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,ge)),e["ɵdid"](11,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Daemons List"),l(n,5,0,u.daemons,u.columns,"flex",!0),l(n,7,0,u.expandedRow),l(n,9,0,u.grafanaPermission.read),l(n,11,0,u.grafanaPermission.read&&u.isMultiSite)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-daemon-list",[],null,null,null,pe,ce)),e["ɵdid"](1,114688,null,0,O,[A,F.a,M.a,wl.a,b],null,null)],(function(l,n){l(n,1,0)}),null)}var ve=e["ɵccf"]("cd-rgw-daemon-list",O,fe,{},{},[]),be=u("DqMs"),he=u("/NlG"),Ce=u("NUGo"),_e=u("S7zO"),Re=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ye(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,be.b,be.a)),e["ɵdid"](1,114688,null,0,he.a,[wl.a],{type:[0,"type"],size:[1,"size"]},null),(l()(),e["ɵted"](-1,0,["The user list data might be stale. If needed, you can manually reload it."]))],(function(l,n){l(n,1,0,"warning","slim")}),null)}function ke(l){return e["ɵvid"](0,[e["ɵqud"](402653184,1,{table:0}),(l()(),e["ɵand"](16777216,null,null,1,null,ye)),e["ɵdid"](2,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](3,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","uid"],["selectionType","multiClick"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(l,n,u){var e=!0,t=l.component;return"setExpandedRow"===n&&(e=!1!==t.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getUserList(u)&&e),e}),nn.b,nn.a)),e["ɵdid"](4,2867200,[[1,4],["table",4]],0,x.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](5,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Ce.b,Ce.a)),e["ɵdid"](6,114688,null,0,_e.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](7,0,null,3,1,"cd-rgw-user-details",[["cdTableDetail",""]],null,null,null,Sn,dn)),e["ɵdid"](8,638976,null,0,on,[h.a,sn.b,wl.a],{selection:[0,"selection"]},null)],(function(l,n){var u=n.component;l(n,2,0,u.isStale),l(n,4,0,u.users,u.columns,"flex",!0,!1,"uid","multiClick"),l(n,6,0,u.permission,u.selection,u.tableActions),l(n,8,0,u.expandedRow)}),null)}function Ie(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rgw-user-list",[],null,null,null,ke,Re)),e["ɵprd"](256,null,j.a,X,[]),e["ɵdid"](2,49152,null,0,H,[F.a,h.a,sn.b,wl.a,j.a,t.b,e.NgZone],null,null)],null,null)}var we=e["ɵccf"]("cd-rgw-user-list",H,Ie,{},{},[]),Ee=u("QC43"),qe=u("XFyV"),Ne=u("EmSq"),Te=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function xe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ee.b,Ee.a)),e["ɵdid"](1,49152,null,0,qe.a,[],null,null),(l()(),e["ɵted"](-1,0,["Loading user data..."]))],null,null)}function Ve(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,[[null,"backAction"]],(function(l,n,u){var e=!0;return"backAction"===n&&(e=!1!==l.component.goToListView()&&e),e}),be.b,be.a)),e["ɵdid"](1,114688,null,0,he.a,[wl.a],{type:[0,"type"]},{backAction:"backAction"}),(l()(),e["ɵted"](-1,0,["The user data could not be loaded."]))],(function(l,n){l(n,1,0,"error")}),null)}function Se(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function De(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen user ID is already in use."]))],null,null)}function Fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This is not a valid email address."]))],null,null)}function Be(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen email address is already in use."]))],null,null)}function Pe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ae(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be >= 1."]))],null,null)}function Me(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,0,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,7,"input",[["class","form-control"],["formControlName","max_buckets"],["id","max_buckets"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,7)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,7)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,7)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,8).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,8).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵdid"](8,16384,null,0,o.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l,n){return[l,n]}),[o.e,o.w]),e["ɵdid"](10,671744,[[9,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](12,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](13,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Pe)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ae)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"max_buckets"),l(n,13,0,"max_buckets"),l(n,15,0,u.userForm.showError("max_buckets",e["ɵnov"](n.parent,3),"required")),l(n,17,0,u.userForm.showError("max_buckets",e["ɵnov"](n.parent,3),"min"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function Oe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ue(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","access_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Access key"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](9,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](11,671744,[[15,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](13,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](14,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,17).onClick()&&t),t}),null,null)),e["ɵdid"](17,81920,null,0,Mn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,19).onClick()&&t),t}),null,null)),e["ɵdid"](19,81920,null,0,On.a,[e.ElementRef,e.Renderer2,Un.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Oe)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"access_key"),l(n,14,0,"access_key"),l(n,17,0,"access_key"),l(n,19,0,"access_key"),l(n,21,0,u.userForm.showError("access_key",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function Le(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](9,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](11,671744,[[17,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](13,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](14,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,17).onClick()&&t),t}),null,null)),e["ɵdid"](17,81920,null,0,Mn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,19).onClick()&&t),t}),null,null)),e["ɵdid"](19,81920,null,0,On.a,[e.ElementRef,e.Renderer2,Un.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Le)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"secret_key"),l(n,14,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.userForm.showError("secret_key",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function Ge(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["S3 key"])),(l()(),e["ɵeld"](3,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](4,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","generate_key"],["id","generate_key"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](12,671744,[[13,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](14,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](15,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","generate_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Auto-generate key"])),(l()(),e["ɵand"](16777216,null,null,1,null,Ue)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ze)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,12,0,"generate_key"),l(n,15,0,"generate_key"),l(n,19,0,!u.editing&&!u.userForm.getValue("generate_key")),l(n,21,0,!u.editing&&!u.userForm.getValue("generate_key"))}),(function(l,n){l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function Ke(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no subusers."]))],null,null)}function $e(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,23,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,21,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"span",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,2,"div",[["class","input-group-prepend border-left-0 border-right-0"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,1,"span",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,16777216,null,null,5,"button",[["class","btn btn-light tc_showSubuserButton"],["tooltip","Edit"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](12,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](13,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](15,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](16,1),(l()(),e["ɵeld"](17,16777216,null,null,5,"button",[["class","btn btn-light tc_deleteSubuserButton"],["tooltip","Delete"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteSubuser(l.context.index)&&e),e}),null,null)),e["ɵdid"](18,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](19,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](21,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](22,1),(l()(),e["ɵeld"](23,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,12,0,"Edit");var e=l(n,16,0,u.icons.edit);l(n,15,0,e),l(n,18,0,"Delete");var t=l(n,22,0,u.icons.destroy);l(n,21,0,t)}),(function(l,n){var u=n.component;l(n,4,0,e["ɵinlineInterpolate"](1,"",u.icons.user,"")),l(n,5,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.id,"")),l(n,8,0,e["ɵinlineInterpolate"](1,"",u.icons.share,"")),l(n,9,0,e["ɵinlineInterpolate"](1,"","full-control"===n.context.$implicit.permissions?"full":n.context.$implicit.permissions,""))}))}function Ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,20,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Subusers"])),(l()(),e["ɵeld"](3,0,null,null,17,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,16,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Ke)),e["ɵdid"](6,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,$e)),e["ɵdid"](8,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](9,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,9,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,8,"button",[["class","btn btn-light float-right tc_addSubuserButton"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal()&&e),e}),null,null)),(l()(),e["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](14,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](15,1),(l()(),e["ɵeld"](16,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](17,null,[""," ",""])),e["ɵppd"](18,1),e["ɵppd"](19,1),(l()(),e["ɵeld"](20,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,6,0,0===u.subusers.length),l(n,8,0,u.subusers);var e=l(n,15,0,u.icons.add);l(n,14,0,e)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,17,0,l(n,18,0,e["ɵnov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["ɵunv"](n,17,1,l(n,19,0,e["ɵnov"](n.parent.parent,1),u.subuserLabel));l(n,17,0,t,i)}))}function Qe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no keys."]))],null,null)}function Ye(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,19,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,16777216,null,null,5,"button",[["class","btn btn-light tc_showS3KeyButton"],["tooltip","Show"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](8,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,16777216,null,null,5,"button",[["class","btn btn-light tc_deleteS3KeyButton"],["tooltip","Delete"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteS3Key(l.context.index)&&e),e}),null,null)),e["ɵdid"](14,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](15,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](17,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](18,1),(l()(),e["ɵeld"](19,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,8,0,"Show");var e=l(n,12,0,u.icons.show);l(n,11,0,e),l(n,14,0,"Delete");var t=l(n,18,0,u.icons.destroy);l(n,17,0,t)}),(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.component.icons.key,"")),l(n,5,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.user,""))}))}function We(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no keys."]))],null,null)}function Je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,13,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"span",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,16777216,null,null,5,"button",[["class","btn btn-light tc_showSwiftKeyButton"],["tooltip","Show"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSwiftKeyModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](8,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,8,0,"Show");var e=l(n,12,0,u.icons.show);l(n,11,0,e)}),(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.component.icons.key,"")),l(n,5,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.user,""))}))}function Xe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,37,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Keys"])),(l()(),e["ɵeld"](3,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](4,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["S3"])),(l()(),e["ɵeld"](9,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Qe)),e["ɵdid"](11,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ye)),e["ɵdid"](13,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](14,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](15,0,null,null,9,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,8,"button",[["class","btn btn-light float-right tc_addS3KeyButton"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal()&&e),e}),null,null)),(l()(),e["ɵeld"](17,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](20,1),(l()(),e["ɵeld"](21,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](22,null,[""," ",""])),e["ɵppd"](23,1),e["ɵppd"](24,1),(l()(),e["ɵeld"](25,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["ɵeld"](26,0,null,0,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](27,0,null,null,10,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](28,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](31,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Swift"])),(l()(),e["ɵeld"](33,0,null,0,4,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,We)),e["ɵdid"](35,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Je)),e["ɵdid"](37,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,11,0,0===u.s3Keys.length),l(n,13,0,u.s3Keys);var e=l(n,20,0,u.icons.add);l(n,19,0,e),l(n,28,0),l(n,35,0,0===u.swiftKeys.length),l(n,37,0,u.swiftKeys)}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess);var t=e["ɵunv"](n,22,0,l(n,23,0,e["ɵnov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["ɵunv"](n,22,1,l(n,24,0,e["ɵnov"](n.parent.parent,1),u.s3keyLabel));l(n,22,0,t,i),l(n,27,0,e["ɵnov"](n,28).hasErrors,e["ɵnov"](n,28).hasSuccess)}))}function He(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no capabilities."]))],null,null)}function lt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,19,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"span",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,16777216,null,null,5,"button",[["class","btn btn-light tc_editCapButton"],["tooltip","Edit"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](8,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,16777216,null,null,5,"button",[["class","btn btn-light tc_deleteCapButton"],["tooltip","Delete"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteCapability(l.context.index)&&e),e}),null,null)),e["ɵdid"](14,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](15,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](17,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](18,1),(l()(),e["ɵeld"](19,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,8,0,"Edit");var e=l(n,12,0,u.icons.edit);l(n,11,0,e),l(n,14,0,"Delete");var t=l(n,18,0,u.icons.destroy);l(n,17,0,t)}),(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.component.icons.share,"")),l(n,5,0,e["ɵinlineInterpolate"](2,"",n.context.$implicit.type,":",n.context.$implicit.perm,""))}))}function nt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Capabilities"])),(l()(),e["ɵeld"](3,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](4,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,17,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,He)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,lt)),e["ɵdid"](11,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](12,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,10,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,16777216,null,null,9,"button",[["class","btn btn-light float-right tc_addCapButton"],["tooltip","All capabilities are already added."],["triggers","pointerenter pointerleave"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal()&&e),e}),null,null)),e["ɵdid"](15,212992,null,0,Hu.c,[e.ViewContainerRef,en.a,Hu.a,e.ElementRef,e.Renderer2,Ju.a],{tooltip:[0,"tooltip"],triggers:[1,"triggers"],isDisabled:[2,"isDisabled"]},null),(l()(),e["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](18,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](19,1),(l()(),e["ɵeld"](20,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](21,null,[""," ",""])),e["ɵppd"](22,1),e["ɵppd"](23,1),(l()(),e["ɵeld"](24,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,4,0),l(n,9,0,0===u.capabilities.length),l(n,11,0,u.capabilities),l(n,15,0,"All capabilities are already added.","pointerenter pointerleave",!u.hasAllCapabilities());var e=l(n,19,0,u.icons.add);l(n,18,0,e)}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,14,0,u.hasAllCapabilities());var t=e["ɵunv"](n,21,0,l(n,22,0,e["ɵnov"](n.parent.parent,0),u.actionLabels.ADD)),i=e["ɵunv"](n,21,1,l(n,23,0,e["ɵnov"](n.parent.parent,1),u.capabilityLabel));l(n,21,0,t,i)}))}function ut(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,27,{FormControlNames:1}),e["ɵqud"](603979776,28,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","user_quota_max_size_unlimited"],["id","user_quota_max_size_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](9,671744,[[27,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](11,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](12,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","user_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited size"]))],(function(l,n){l(n,1,0),l(n,9,0,"user_quota_max_size_unlimited"),l(n,12,0,"user_quota_max_size_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function et(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function tt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The value is not valid."]))],null,null)}function it(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,29,{FormControlNames:1}),e["ɵqud"](603979776,30,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_quota_max_size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. size"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","user_quota_max_size"],["id","user_quota_max_size"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onBlur(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](10,671744,[[29,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](12,81920,null,0,Ne.a,[e.ElementRef,o.q,S.a,L.a],null,null),e["ɵdid"](13,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](14,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,et)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,tt)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"user_quota_max_size"),l(n,12,0),l(n,14,0,"user_quota_max_size"),l(n,16,0,u.userForm.showError("user_quota_max_size",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_size",e["ɵnov"](n.parent,3),"quotaMaxSize"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function at(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,31,{FormControlNames:1}),e["ɵqud"](603979776,32,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","user_quota_max_objects_unlimited"],["id","user_quota_max_objects_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](9,671744,[[31,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](11,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](12,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","user_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited objects"]))],(function(l,n){l(n,1,0),l(n,9,0,"user_quota_max_objects_unlimited"),l(n,12,0,"user_quota_max_objects_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function ot(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function st(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be >= 0."]))],null,null)}function dt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,33,{FormControlNames:1}),e["ɵqud"](603979776,34,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_quota_max_objects"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. objects"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","user_quota_max_objects"],["id","user_quota_max_objects"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵdid"](9,16384,null,0,o.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l,n){return[l,n]}),[o.e,o.w]),e["ɵdid"](11,671744,[[33,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](13,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](14,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ot)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,st)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"user_quota_max_objects"),l(n,14,0,"user_quota_max_objects"),l(n,16,0,u.userForm.showError("user_quota_max_objects",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_objects",e["ɵnov"](n.parent,3),"min"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function rt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,37,{FormControlNames:1}),e["ɵqud"](603979776,38,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","bucket_quota_max_size_unlimited"],["id","bucket_quota_max_size_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](9,671744,[[37,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](11,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](12,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","bucket_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited size"]))],(function(l,n){l(n,1,0),l(n,9,0,"bucket_quota_max_size_unlimited"),l(n,12,0,"bucket_quota_max_size_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function ct(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function mt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The value is not valid."]))],null,null)}function gt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,39,{FormControlNames:1}),e["ɵqud"](603979776,40,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","bucket_quota_max_size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. size"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","bucket_quota_max_size"],["id","bucket_quota_max_size"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onBlur(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](10,671744,[[39,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](12,81920,null,0,Ne.a,[e.ElementRef,o.q,S.a,L.a],null,null),e["ɵdid"](13,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](14,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ct)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,mt)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"bucket_quota_max_size"),l(n,12,0),l(n,14,0,"bucket_quota_max_size"),l(n,16,0,u.userForm.showError("bucket_quota_max_size",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_size",e["ɵnov"](n.parent,3),"quotaMaxSize"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function pt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,41,{FormControlNames:1}),e["ɵqud"](603979776,42,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","bucket_quota_max_objects_unlimited"],["id","bucket_quota_max_objects_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](9,671744,[[41,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](11,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](12,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","bucket_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited objects"]))],(function(l,n){l(n,1,0),l(n,9,0,"bucket_quota_max_objects_unlimited"),l(n,12,0,"bucket_quota_max_objects_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function ft(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function vt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be >= 0."]))],null,null)}function bt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,43,{FormControlNames:1}),e["ɵqud"](603979776,44,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","bucket_quota_max_objects"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. objects"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","bucket_quota_max_objects"],["id","bucket_quota_max_objects"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵdid"](9,16384,null,0,o.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l,n){return[l,n]}),[o.e,o.w]),e["ɵdid"](11,671744,[[43,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](13,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](14,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ft)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vt)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"bucket_quota_max_objects"),l(n,14,0,"bucket_quota_max_objects"),l(n,16,0,u.userForm.showError("bucket_quota_max_objects",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_objects",e["ɵnov"](n.parent,3),"min"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function ht(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,183,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,182,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,3).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,6).onSubmit()&&t),t}),null,null)),e["ɵdid"](2,16384,null,0,o.G,[],null,null),e["ɵdid"](3,540672,[["frm",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,o.d,null,[o.l]),e["ɵdid"](5,16384,null,0,o.s,[[4,o.d]],null,null),e["ɵdid"](6,16384,null,0,An.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](7,0,null,null,176,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,[""," ",""])),e["ɵppd"](10,1),e["ɵppd"](11,1),(l()(),e["ɵeld"](12,0,null,null,162,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](14,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](17,0,null,0,4,"label",[["class","cd-col-form-label"],["for","uid"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](20,{required:0}),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](22,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](23,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,25)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,25).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,25)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,25)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](24,4210688,null,0,Qn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](25,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](27,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](29,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](30,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Se)),e["ɵdid"](32,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,De)),e["ɵdid"](34,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](35,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](36,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](39,0,null,0,4,"label",[["class","cd-col-form-label"],["for","display_name"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](41,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](42,{required:0}),(l()(),e["ɵted"](-1,null,["Full name"])),(l()(),e["ɵeld"](44,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](45,0,null,null,6,"input",[["class","form-control"],["formControlName","display_name"],["id","display_name"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,46)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,46).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,46)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,46)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](46,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](48,671744,[[3,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](50,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](51,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Fe)),e["ɵdid"](53,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](54,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](55,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](58,0,null,0,1,"label",[["class","cd-col-form-label"],["for","email"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Email address"])),(l()(),e["ɵeld"](60,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,6,"input",[["class","form-control"],["formControlName","email"],["id","email"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,62)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,62).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,62)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,62)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](62,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](64,671744,[[5,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](66,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](67,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,je)),e["ɵdid"](69,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Be)),e["ɵdid"](71,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](72,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](73,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](76,0,null,0,1,"label",[["class","cd-col-form-label"],["for","max_buckets_mode"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. buckets"])),(l()(),e["ɵeld"](78,0,null,0,19,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](79,0,null,null,18,"select",[["class","form-control custom-select"],["formControlName","max_buckets_mode"],["id","max_buckets_mode"],["name","max_buckets_mode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0,i=l.component;return"change"===n&&(t=!1!==e["ɵnov"](l,80).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,80).onTouched()&&t),"change"===n&&(t=!1!==i.onMaxBucketsModeChange(u.target.value)&&t),t}),null,null)),e["ɵdid"](80,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](82,671744,[[7,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](84,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](85,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](86,0,null,null,3,"option",[["value","-1"]],null,null,null,null,null)),e["ɵdid"](87,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](88,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Disabled"])),(l()(),e["ɵeld"](90,0,null,null,3,"option",[["value","0"]],null,null,null,null,null)),e["ɵdid"](91,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](92,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Unlimited"])),(l()(),e["ɵeld"](94,0,null,null,3,"option",[["value","1"]],null,null,null,null,null)),e["ɵdid"](95,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](96,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Custom"])),(l()(),e["ɵand"](16777216,null,null,1,null,Me)),e["ɵdid"](99,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](100,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](101,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](104,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](105,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](106,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","suspended"],["id","suspended"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,107).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,107).onTouched()&&t),t}),null,null)),e["ɵdid"](107,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](109,671744,[[11,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](111,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](112,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](113,0,null,null,1,"label",[["class","custom-control-label"],["for","suspended"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Suspended"])),(l()(),e["ɵand"](16777216,null,null,1,null,Ge)),e["ɵdid"](116,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ze)),e["ɵdid"](118,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Xe)),e["ɵdid"](120,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,nt)),e["ɵdid"](122,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](123,0,null,null,25,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](124,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User quota"])),(l()(),e["ɵeld"](126,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](127,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,25,{FormControlNames:1}),e["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),e["ɵeld"](130,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](131,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](132,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","user_quota_enabled"],["id","user_quota_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,133).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,133).onTouched()&&t),t}),null,null)),e["ɵdid"](133,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](135,671744,[[25,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](137,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](138,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](139,0,null,null,1,"label",[["class","custom-control-label"],["for","user_quota_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵand"](16777216,null,null,1,null,ut)),e["ɵdid"](142,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,it)),e["ɵdid"](144,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,at)),e["ɵdid"](146,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,dt)),e["ɵdid"](148,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](149,0,null,null,25,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](150,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Bucket quota"])),(l()(),e["ɵeld"](152,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](153,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,35,{FormControlNames:1}),e["ɵqud"](603979776,36,{messagesBlock:0}),(l()(),e["ɵeld"](156,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](157,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](158,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","bucket_quota_enabled"],["id","bucket_quota_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,159).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,159).onTouched()&&t),t}),null,null)),e["ɵdid"](159,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](161,671744,[[35,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](163,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](164,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](165,0,null,null,1,"label",[["class","custom-control-label"],["for","bucket_quota_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵand"](16777216,null,null,1,null,rt)),e["ɵdid"](168,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,gt)),e["ɵdid"](170,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,pt)),e["ɵdid"](172,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bt)),e["ɵdid"](174,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](175,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](176,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](177,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Yn.b,Yn.a)),e["ɵdid"](178,114688,null,0,Wn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](179,0,[""," ",""])),e["ɵppd"](180,1),e["ɵppd"](181,1),(l()(),e["ɵeld"](182,0,null,null,1,"cd-back-button",[],null,null,null,Ln.b,Ln.a)),e["ɵdid"](183,49152,null,0,zn.a,[Dl.Location,t.b],null,null)],(function(l,n){var u=n.component;l(n,3,0,u.userForm),l(n,6,0,u.userForm),l(n,14,0);var t=l(n,20,0,!u.editing);l(n,19,0,"cd-col-form-label",t),l(n,24,0,""),l(n,27,0,"uid"),l(n,30,0,"uid"),l(n,32,0,u.userForm.showError("uid",e["ɵnov"](n,3),"required")),l(n,34,0,u.userForm.showError("uid",e["ɵnov"](n,3),"notUnique")),l(n,36,0);var i=l(n,42,0,!u.editing);l(n,41,0,"cd-col-form-label",i),l(n,48,0,"display_name"),l(n,51,0,"display_name"),l(n,53,0,u.userForm.showError("display_name",e["ɵnov"](n,3),"required")),l(n,55,0),l(n,64,0,"email"),l(n,67,0,"email"),l(n,69,0,u.userForm.showError("email",e["ɵnov"](n,3),"email")),l(n,71,0,u.userForm.showError("email",e["ɵnov"](n,3),"notUnique")),l(n,73,0),l(n,82,0,"max_buckets_mode"),l(n,85,0,"max_buckets_mode"),l(n,87,0,"-1"),l(n,88,0,"-1"),l(n,91,0,"0"),l(n,92,0,"0"),l(n,95,0,"1"),l(n,96,0,"1"),l(n,99,0,1==u.userForm.get("max_buckets_mode").value),l(n,101,0),l(n,109,0,"suspended"),l(n,112,0,"suspended"),l(n,116,0,!u.editing),l(n,118,0,u.editing),l(n,120,0,u.editing),l(n,122,0,u.editing),l(n,127,0),l(n,135,0,"user_quota_enabled"),l(n,138,0,"user_quota_enabled"),l(n,142,0,u.userForm.controls.user_quota_enabled.value),l(n,144,0,u.userForm.controls.user_quota_enabled.value&&!u.userForm.getValue("user_quota_max_size_unlimited")),l(n,146,0,u.userForm.controls.user_quota_enabled.value),l(n,148,0,u.userForm.controls.user_quota_enabled.value&&!u.userForm.getValue("user_quota_max_objects_unlimited")),l(n,153,0),l(n,161,0,"bucket_quota_enabled"),l(n,164,0,"bucket_quota_enabled"),l(n,168,0,u.userForm.controls.bucket_quota_enabled.value),l(n,170,0,u.userForm.controls.bucket_quota_enabled.value&&!u.userForm.getValue("bucket_quota_max_size_unlimited")),l(n,172,0,u.userForm.controls.bucket_quota_enabled.value),l(n,174,0,u.userForm.controls.bucket_quota_enabled.value&&!u.userForm.getValue("bucket_quota_max_objects_unlimited")),l(n,178,0,u.userForm)}),(function(l,n){var u=n.component;l(n,1,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending);var t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent,0),u.action)),i=e["ɵunv"](n,9,1,l(n,11,0,e["ɵnov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,13,0,e["ɵnov"](n,14).hasErrors,e["ɵnov"](n,14).hasSuccess),l(n,23,0,u.editing,e["ɵnov"](n,29).ngClassUntouched,e["ɵnov"](n,29).ngClassTouched,e["ɵnov"](n,29).ngClassPristine,e["ɵnov"](n,29).ngClassDirty,e["ɵnov"](n,29).ngClassValid,e["ɵnov"](n,29).ngClassInvalid,e["ɵnov"](n,29).ngClassPending,e["ɵnov"](n,30).validClass,e["ɵnov"](n,30).invalidClass),l(n,35,0,e["ɵnov"](n,36).hasErrors,e["ɵnov"](n,36).hasSuccess),l(n,45,0,e["ɵnov"](n,50).ngClassUntouched,e["ɵnov"](n,50).ngClassTouched,e["ɵnov"](n,50).ngClassPristine,e["ɵnov"](n,50).ngClassDirty,e["ɵnov"](n,50).ngClassValid,e["ɵnov"](n,50).ngClassInvalid,e["ɵnov"](n,50).ngClassPending,e["ɵnov"](n,51).validClass,e["ɵnov"](n,51).invalidClass),l(n,54,0,e["ɵnov"](n,55).hasErrors,e["ɵnov"](n,55).hasSuccess),l(n,61,0,e["ɵnov"](n,66).ngClassUntouched,e["ɵnov"](n,66).ngClassTouched,e["ɵnov"](n,66).ngClassPristine,e["ɵnov"](n,66).ngClassDirty,e["ɵnov"](n,66).ngClassValid,e["ɵnov"](n,66).ngClassInvalid,e["ɵnov"](n,66).ngClassPending,e["ɵnov"](n,67).validClass,e["ɵnov"](n,67).invalidClass),l(n,72,0,e["ɵnov"](n,73).hasErrors,e["ɵnov"](n,73).hasSuccess),l(n,79,0,e["ɵnov"](n,84).ngClassUntouched,e["ɵnov"](n,84).ngClassTouched,e["ɵnov"](n,84).ngClassPristine,e["ɵnov"](n,84).ngClassDirty,e["ɵnov"](n,84).ngClassValid,e["ɵnov"](n,84).ngClassInvalid,e["ɵnov"](n,84).ngClassPending,e["ɵnov"](n,85).validClass,e["ɵnov"](n,85).invalidClass),l(n,100,0,e["ɵnov"](n,101).hasErrors,e["ɵnov"](n,101).hasSuccess),l(n,106,0,e["ɵnov"](n,111).ngClassUntouched,e["ɵnov"](n,111).ngClassTouched,e["ɵnov"](n,111).ngClassPristine,e["ɵnov"](n,111).ngClassDirty,e["ɵnov"](n,111).ngClassValid,e["ɵnov"](n,111).ngClassInvalid,e["ɵnov"](n,111).ngClassPending,e["ɵnov"](n,112).validClass,e["ɵnov"](n,112).invalidClass),l(n,126,0,e["ɵnov"](n,127).hasErrors,e["ɵnov"](n,127).hasSuccess),l(n,132,0,e["ɵnov"](n,137).ngClassUntouched,e["ɵnov"](n,137).ngClassTouched,e["ɵnov"](n,137).ngClassPristine,e["ɵnov"](n,137).ngClassDirty,e["ɵnov"](n,137).ngClassValid,e["ɵnov"](n,137).ngClassInvalid,e["ɵnov"](n,137).ngClassPending,e["ɵnov"](n,138).validClass,e["ɵnov"](n,138).invalidClass),l(n,152,0,e["ɵnov"](n,153).hasErrors,e["ɵnov"](n,153).hasSuccess),l(n,158,0,e["ɵnov"](n,163).ngClassUntouched,e["ɵnov"](n,163).ngClassTouched,e["ɵnov"](n,163).ngClassPristine,e["ɵnov"](n,163).ngClassDirty,e["ɵnov"](n,163).ngClassValid,e["ɵnov"](n,163).ngClassInvalid,e["ɵnov"](n,163).ngClassPending,e["ɵnov"](n,164).validClass,e["ɵnov"](n,164).invalidClass);var a=e["ɵunv"](n,179,0,l(n,180,0,e["ɵnov"](n.parent,0),u.action)),o=e["ɵunv"](n,179,1,l(n,181,0,e["ɵnov"](n.parent,1),u.resource));l(n,179,0,a,o)}))}function Ct(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,jn.a,[]),(l()(),e["ɵand"](16777216,null,null,1,null,xe)),e["ɵdid"](3,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ve)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ht)),e["ɵdid"](7,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,u.editing&&u.error),l(n,7,0,!u.loading&&!u.error)}),null)}function _t(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-form",[],null,null,null,Ct,Te)),e["ɵdid"](1,114688,null,0,W,[R.a,ne.a,ne.m,h.a,sn.b,k.a,wl.a,t.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Rt=e["ɵccf"]("cd-rgw-user-form",W,_t,{},{},[]),yt=u("xSw7"),kt=u("GgAd"),It=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function wt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,be.b,be.a)),e["ɵdid"](1,114688,null,0,he.a,[wl.a],{type:[0,"type"],size:[1,"size"]},null),(l()(),e["ɵted"](-1,0,["The bucket list data might be stale. If needed, you can manually reload it."]))],(function(l,n){l(n,1,0,"warning","slim")}),null)}function Et(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,yt.b,yt.a)),e["ɵdid"](1,573440,null,0,kt.a,[],{total:[0,"total"],used:[1,"used"]},null)],(function(l,n){l(n,1,0,n.parent.context.row.bucket_quota.max_size,n.parent.context.row.bucket_size)}),null)}function qt(l){return e["ɵvid"](0,[(l()(),e["ɵted"](-1,null,["No Limit"]))],null,null)}function Nt(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Et)),e["ɵdid"](1,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),e["ɵand"](0,[["noSizeQuota",2]],null,0,null,qt))],(function(l,n){l(n,1,0,n.context.row.bucket_quota.max_size>0&&n.context.row.bucket_quota.enabled,e["ɵnov"](n,2))}),null)}function Tt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,yt.b,yt.a)),e["ɵdid"](1,573440,null,0,kt.a,[],{total:[0,"total"],used:[1,"used"],isBinary:[2,"isBinary"]},null)],(function(l,n){l(n,1,0,n.parent.context.row.bucket_quota.max_objects,n.parent.context.row.num_objects,!1)}),null)}function xt(l){return e["ɵvid"](0,[(l()(),e["ɵted"](-1,null,["No Limit"]))],null,null)}function Vt(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Tt)),e["ɵdid"](1,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),e["ɵand"](0,[["noObjectQuota",2]],null,0,null,xt))],(function(l,n){l(n,1,0,n.context.row.bucket_quota.max_objects>0&&n.context.row.bucket_quota.enabled,e["ɵnov"](n,2))}),null)}function St(l){return e["ɵvid"](0,[e["ɵqud"](402653184,1,{table:0}),e["ɵqud"](402653184,2,{bucketSizeTpl:0}),e["ɵqud"](402653184,3,{bucketObjectTpl:0}),(l()(),e["ɵand"](16777216,null,null,1,null,wt)),e["ɵdid"](4,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](5,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","bid"],["selectionType","multiClick"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(l,n,u){var e=!0,t=l.component;return"setExpandedRow"===n&&(e=!1!==t.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getBucketList(u)&&e),e}),nn.b,nn.a)),e["ɵdid"](6,2867200,[[1,4],["table",4]],0,x.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](7,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Ce.b,Ce.a)),e["ɵdid"](8,114688,null,0,_e.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](9,0,null,3,1,"cd-rgw-bucket-details",[["cdTableDetail",""]],null,null,null,Xl,zl)),e["ɵdid"](10,49152,null,0,Ll,[],{selection:[0,"selection"]},null),(l()(),e["ɵand"](0,[[2,2],["bucketSizeTpl",2]],null,0,null,Nt)),(l()(),e["ɵand"](0,[[3,2],["bucketObjectTpl",2]],null,0,null,Vt))],(function(l,n){var u=n.component;l(n,4,0,u.isStale),l(n,6,0,u.buckets,u.columns,"flex",!0,!1,"bid","multiClick"),l(n,8,0,u.permission,u.selection,u.tableActions),l(n,10,0,u.expandedRow)}),null)}function Dt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rgw-bucket-list",[],null,null,null,St,It)),e["ɵprd"](256,null,j.a,B,[]),e["ɵdid"](2,114688,null,0,P,[F.a,S.a,D.a,v,sn.b,wl.a,j.a,t.b,e.NgZone,e.ChangeDetectorRef],null,null)],(function(l,n){l(n,2,0)}),null)}var Ft=e["ɵccf"]("cd-rgw-bucket-list",P,Dt,{},{},[]),jt=u("4HWh"),Bt=u("p4Cf"),Pt=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function At(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ee.b,Ee.a)),e["ɵdid"](1,49152,null,0,qe.a,[],null,null),(l()(),e["ɵted"](-1,0,["Loading bucket data..."]))],null,null)}function Mt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","id"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Id"])),(l()(),e["ɵeld"](6,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","id"],["id","id"],["name","id"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](10,671744,[[1,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](12,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](13,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,1,0),l(n,10,0,"id"),l(n,13,0,"id")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function Ot(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ut(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The value is not valid."]))],null,null)}function Lt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen name is already in use."]))],null,null)}function zt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Gt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a user --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Kt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function $t(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Zt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Qt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a placement target --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Yt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.name),l(n,2,0,n.context.$implicit.name)}),(function(l,n){l(n,3,0,n.context.$implicit.description)}))}function Wt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Jt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","placement-target"],["id","placement-target"],["name","placement-target"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,1).onTouched()&&t),t}),null,null)),e["ɵdid"](1,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](3,671744,[[7,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](5,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](6,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Zt)),e["ɵdid"](8,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Qt)),e["ɵdid"](10,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Yt)),e["ɵdid"](12,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Wt)),e["ɵdid"](14,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){var u=n.component;l(n,3,0,"placement-target"),l(n,6,0,"placement-target"),l(n,8,0,null===u.placementTargets),l(n,10,0,null!==u.placementTargets),l(n,12,0,u.placementTargets),l(n,14,0,u.bucketForm.showError("placement-target",e["ɵnov"](n.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function Xt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,6,"input",[["class","form-control"],["formControlName","placement-target"],["id","placement-target"],["name","placement-target"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,2)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,2).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,2)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,2)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](2,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](4,671744,[[7,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](6,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](7,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,4,0,"placement-target"),l(n,7,0,"placement-target")}),(function(l,n){l(n,1,0,e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass)}))}function Ht(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Versioning"])),(l()(),e["ɵeld"](3,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](4,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","versioning"],["id","versioning"],["name","versioning"],["type","checkbox"]],[[8,"checked",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0,i=l.component;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),"change"===n&&(t=!1!==i.updateVersioning()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](12,671744,[[9,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](14,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](15,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","versioning"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](18,0,null,null,3,"cd-helper",[],null,null,null,jt.b,jt.a)),e["ɵdid"](19,49152,null,0,Bt.a,[],null,null),(l()(),e["ɵeld"](20,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enables versioning for the objects in the bucket."]))],(function(l,n){l(n,4,0),l(n,12,0,"versioning"),l(n,15,0,"versioning")}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,u.isVersioningEnabled,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function li(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ni(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mfa-token-serial"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Token Serial Number"])),(l()(),e["ɵeld"](6,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","mfa-token-serial"],["id","mfa-token-serial"],["name","mfa-token-serial"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](10,671744,[[13,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](12,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](13,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,li)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"mfa-token-serial"),l(n,13,0,"mfa-token-serial"),l(n,15,0,u.bucketForm.showError("mfa-token-serial",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function ui(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ei(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mfa-token-pin"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Token PIN"])),(l()(),e["ɵeld"](6,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","mfa-token-pin"],["id","mfa-token-pin"],["name","mfa-token-pin"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](10,671744,[[15,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](12,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](13,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ui)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"mfa-token-pin"),l(n,13,0,"mfa-token-pin"),l(n,15,0,u.bucketForm.showError("mfa-token-pin",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function ti(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,25,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Multi-Factor Authentication"])),(l()(),e["ɵeld"](3,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](4,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","mfa-delete"],["id","mfa-delete"],["name","mfa-delete"],["type","checkbox"]],[[8,"checked",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0,i=l.component;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),"change"===n&&(t=!1!==i.updateMfaDelete()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](12,671744,[[11,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](14,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](15,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","mfa-delete"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Delete enabled"])),(l()(),e["ɵeld"](18,0,null,null,3,"cd-helper",[],null,null,null,jt.b,jt.a)),e["ɵdid"](19,49152,null,0,Bt.a,[],null,null),(l()(),e["ɵeld"](20,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state."])),(l()(),e["ɵand"](16777216,null,null,1,null,ni)),e["ɵdid"](23,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ei)),e["ɵdid"](25,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,12,0,"mfa-delete"),l(n,15,0,"mfa-delete"),l(n,23,0,u.areMfaCredentialsRequired()),l(n,25,0,u.areMfaCredentialsRequired())}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,u.isMfaDeleteEnabled,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function ii(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","lock_mode"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mode"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","lock_mode"],["id","lock_mode"],["name","lock_mode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,8).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](10,671744,[[19,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](12,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](13,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](14,0,null,null,3,"option",[["value","COMPLIANCE"]],null,null,null,null,null)),e["ɵdid"](15,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](16,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Compliance"])),(l()(),e["ɵeld"](18,0,null,null,3,"option",[["value","GOVERNANCE"]],null,null,null,null,null)),e["ɵdid"](19,147456,null,0,o.v,[e.ElementRef,e.Renderer2,[2,o.A]],{value:[0,"value"]},null),e["ɵdid"](20,147456,null,0,o.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Governance"]))],(function(l,n){l(n,1,0),l(n,10,0,"lock_mode"),l(n,13,0,"lock_mode"),l(n,15,0,"COMPLIANCE"),l(n,16,0,"COMPLIANCE"),l(n,19,0,"GOVERNANCE"),l(n,20,0,"GOVERNANCE")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function ai(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be a positive integer."]))],null,null)}function oi(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Retention period requires either Days or Years."]))],null,null)}function si(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","lock_retention_period_days"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Days"])),(l()(),e["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,jt.b,jt.a)),e["ɵdid"](8,49152,null,0,Bt.a,[],null,null),(l()(),e["ɵted"](-1,0,["The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket."])),(l()(),e["ɵeld"](10,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,7,"input",[["class","form-control"],["formControlName","lock_retention_period_days"],["id","lock_retention_period_days"],["min","0"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,13).onTouched()&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵdid"](13,16384,null,0,o.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l,n){return[l,n]}),[o.e,o.w]),e["ɵdid"](15,671744,[[21,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](17,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](18,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ai)),e["ɵdid"](20,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,oi)),e["ɵdid"](22,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,15,0,"lock_retention_period_days"),l(n,18,0,"lock_retention_period_days"),l(n,20,0,u.bucketForm.showError("lock_retention_period_days",e["ɵnov"](n.parent,3),"pattern")),l(n,22,0,u.bucketForm.showError("lock_retention_period_days",e["ɵnov"](n.parent,3),"eitherDaysOrYears"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,e["ɵnov"](n,17).ngClassUntouched,e["ɵnov"](n,17).ngClassTouched,e["ɵnov"](n,17).ngClassPristine,e["ɵnov"](n,17).ngClassDirty,e["ɵnov"](n,17).ngClassValid,e["ɵnov"](n,17).ngClassInvalid,e["ɵnov"](n,17).ngClassPending,e["ɵnov"](n,18).validClass,e["ɵnov"](n,18).invalidClass)}))}function di(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be a positive integer."]))],null,null)}function ri(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Retention period requires either Days or Years."]))],null,null)}function ci(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](1,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","lock_retention_period_years"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Years"])),(l()(),e["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,jt.b,jt.a)),e["ɵdid"](8,49152,null,0,Bt.a,[],null,null),(l()(),e["ɵted"](-1,0,["The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket."])),(l()(),e["ɵeld"](10,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,7,"input",[["class","form-control"],["formControlName","lock_retention_period_years"],["id","lock_retention_period_years"],["min","0"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,13).onTouched()&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵdid"](13,16384,null,0,o.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l,n){return[l,n]}),[o.e,o.w]),e["ɵdid"](15,671744,[[23,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](17,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](18,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,di)),e["ɵdid"](20,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ri)),e["ɵdid"](22,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,15,0,"lock_retention_period_years"),l(n,18,0,"lock_retention_period_years"),l(n,20,0,u.bucketForm.showError("lock_retention_period_days",e["ɵnov"](n.parent,3),"pattern")),l(n,22,0,u.bucketForm.showError("lock_retention_period_years",e["ɵnov"](n.parent,3),"eitherDaysOrYears"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,e["ɵnov"](n,17).ngClassUntouched,e["ɵnov"](n,17).ngClassTouched,e["ɵnov"](n,17).ngClassPristine,e["ɵnov"](n,17).ngClassDirty,e["ɵnov"](n,17).ngClassValid,e["ɵnov"](n,17).ngClassInvalid,e["ɵnov"](n,17).ngClassPending,e["ɵnov"](n,18).validClass,e["ɵnov"](n,18).invalidClass)}))}function mi(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,115,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,114,"form",[["name","bucketForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,3).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,6).onSubmit()&&t),t}),null,null)),e["ɵdid"](2,16384,null,0,o.G,[],null,null),e["ɵdid"](3,540672,[["frm",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,o.d,null,[o.l]),e["ɵdid"](5,16384,null,0,o.s,[[4,o.d]],null,null),e["ɵdid"](6,16384,null,0,An.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](7,0,null,null,108,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,[""," ",""])),e["ɵppd"](10,1),e["ɵppd"](11,1),(l()(),e["ɵeld"](12,0,null,null,94,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Mt)),e["ɵdid"](14,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](15,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](16,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](19,0,null,0,4,"label",[["class","cd-col-form-label"],["for","bid"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](21,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](22,{required:0}),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](24,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](25,0,null,null,7,"input",[["class","form-control"],["formControlName","bid"],["id","bid"],["name","bid"],["placeholder","Name..."],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,27)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,27).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,27)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,27)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](26,4210688,null,0,Qn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](27,16384,null,0,o.e,[e.Renderer2,e.ElementRef,[2,o.b]],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.e]),e["ɵdid"](29,671744,[[3,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](31,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](32,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ot)),e["ɵdid"](34,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ut)),e["ɵdid"](36,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Lt)),e["ɵdid"](38,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](39,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](40,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](43,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","owner"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Owner"])),(l()(),e["ɵeld"](45,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](46,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","owner"],["id","owner"],["name","owner"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,48).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,48).onTouched()&&t),t}),null,null)),e["ɵdid"](47,4210688,null,0,Qn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](48,16384,null,0,o.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.A]),e["ɵdid"](50,671744,[[5,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](52,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](53,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,zt)),e["ɵdid"](55,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Gt)),e["ɵdid"](57,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Kt)),e["ɵdid"](59,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,$t)),e["ɵdid"](61,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](62,0,null,null,12,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](63,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](66,0,null,0,4,"label",[["class","cd-col-form-label"],["for","placement-target"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](68,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](69,{required:0}),(l()(),e["ɵted"](-1,null,["Placement target"])),(l()(),e["ɵeld"](71,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](0,[["placementTargetSelect",2]],null,0,null,Jt)),(l()(),e["ɵand"](16777216,null,null,1,null,Xt)),e["ɵdid"](74,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ht)),e["ɵdid"](76,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ti)),e["ɵdid"](78,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](79,0,null,null,27,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](80,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Locking"])),(l()(),e["ɵeld"](82,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Pn.b,Pn.a)),e["ɵdid"](83,1163264,null,2,An.c,[e.ElementRef,An.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](86,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](87,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](88,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","lock_enabled"],["id","lock_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,89).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,89).onTouched()&&t),t}),null,null)),e["ɵdid"](89,16384,null,0,o.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,o.p,(function(l){return[l]}),[o.c]),e["ɵdid"](91,671744,[[17,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,o.q,null,[o.j]),e["ɵdid"](93,16384,null,0,o.r,[[4,o.q]],null,null),e["ɵdid"](94,16384,null,0,An.h,[[3,o.d],An.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](95,0,null,null,1,"label",[["class","custom-control-label"],["for","lock_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](97,0,null,null,3,"cd-helper",[],null,null,null,jt.b,jt.a)),e["ɵdid"](98,49152,null,0,Bt.a,[],null,null),(l()(),e["ɵeld"](99,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket."])),(l()(),e["ɵand"](16777216,null,null,1,null,ii)),e["ɵdid"](102,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,si)),e["ɵdid"](104,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ci)),e["ɵdid"](106,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](107,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](108,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](109,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Yn.b,Yn.a)),e["ɵdid"](110,114688,null,0,Wn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](111,0,[""," ",""])),e["ɵppd"](112,1),e["ɵppd"](113,1),(l()(),e["ɵeld"](114,0,null,null,1,"cd-back-button",[],null,null,null,Ln.b,Ln.a)),e["ɵdid"](115,49152,null,0,zn.a,[Dl.Location,t.b],null,null)],(function(l,n){var u=n.component;l(n,3,0,u.bucketForm),l(n,6,0,u.bucketForm),l(n,14,0,u.editing),l(n,16,0);var t=l(n,22,0,!u.editing);l(n,21,0,"cd-col-form-label",t),l(n,26,0,!u.editing),l(n,29,0,"bid"),l(n,32,0,"bid"),l(n,34,0,u.bucketForm.showError("bid",e["ɵnov"](n,3),"required")),l(n,36,0,u.bucketForm.showError("bid",e["ɵnov"](n,3),"bucketNameInvalid")),l(n,38,0,u.bucketForm.showError("bid",e["ɵnov"](n,3),"bucketNameExists")),l(n,40,0),l(n,47,0,u.editing),l(n,50,0,"owner"),l(n,53,0,"owner"),l(n,55,0,null===u.owners),l(n,57,0,null!==u.owners),l(n,59,0,u.owners),l(n,61,0,u.bucketForm.showError("owner",e["ɵnov"](n,3),"required")),l(n,63,0);var i=l(n,69,0,!u.editing);l(n,68,0,"cd-col-form-label",i),l(n,74,0,u.editing,e["ɵnov"](n,72)),l(n,76,0,u.editing),l(n,78,0,u.editing),l(n,83,0),l(n,91,0,"lock_enabled"),l(n,94,0,"lock_enabled"),l(n,102,0,u.bucketForm.getValue("lock_enabled")),l(n,104,0,u.bucketForm.getValue("lock_enabled")),l(n,106,0,u.bucketForm.getValue("lock_enabled")),l(n,110,0,u.bucketForm)}),(function(l,n){var u=n.component;l(n,1,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending);var t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent,0),u.action)),i=e["ɵunv"](n,9,1,l(n,11,0,e["ɵnov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,15,0,e["ɵnov"](n,16).hasErrors,e["ɵnov"](n,16).hasSuccess),l(n,25,0,u.editing,e["ɵnov"](n,31).ngClassUntouched,e["ɵnov"](n,31).ngClassTouched,e["ɵnov"](n,31).ngClassPristine,e["ɵnov"](n,31).ngClassDirty,e["ɵnov"](n,31).ngClassValid,e["ɵnov"](n,31).ngClassInvalid,e["ɵnov"](n,31).ngClassPending,e["ɵnov"](n,32).validClass,e["ɵnov"](n,32).invalidClass),l(n,39,0,e["ɵnov"](n,40).hasErrors,e["ɵnov"](n,40).hasSuccess),l(n,46,0,e["ɵnov"](n,52).ngClassUntouched,e["ɵnov"](n,52).ngClassTouched,e["ɵnov"](n,52).ngClassPristine,e["ɵnov"](n,52).ngClassDirty,e["ɵnov"](n,52).ngClassValid,e["ɵnov"](n,52).ngClassInvalid,e["ɵnov"](n,52).ngClassPending,e["ɵnov"](n,53).validClass,e["ɵnov"](n,53).invalidClass),l(n,62,0,e["ɵnov"](n,63).hasErrors,e["ɵnov"](n,63).hasSuccess),l(n,82,0,e["ɵnov"](n,83).hasErrors,e["ɵnov"](n,83).hasSuccess),l(n,88,0,e["ɵnov"](n,93).ngClassUntouched,e["ɵnov"](n,93).ngClassTouched,e["ɵnov"](n,93).ngClassPristine,e["ɵnov"](n,93).ngClassDirty,e["ɵnov"](n,93).ngClassValid,e["ɵnov"](n,93).ngClassInvalid,e["ɵnov"](n,93).ngClassPending,e["ɵnov"](n,94).validClass,e["ɵnov"](n,94).invalidClass);var a=e["ɵunv"](n,111,0,l(n,112,0,e["ɵnov"](n.parent,0),u.action)),o=e["ɵunv"](n,111,1,l(n,113,0,e["ɵnov"](n.parent,1),u.resource));l(n,111,0,a,o)}))}function gi(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,jn.a,[]),(l()(),e["ɵand"](16777216,null,null,1,null,At)),e["ɵdid"](3,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,mi)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,!u.loading&&!u.error)}),null)}function pi(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-bucket-form",[],null,null,null,gi,Pt)),e["ɵdid"](1,114688,null,0,E,[ne.a,ne.m,R.a,v,b,h.a,k.a,wl.a,t.b],null,null)],(function(l,n){l(n,1,0)}),null)}var fi=e["ɵccf"]("cd-rgw-bucket-form",E,pi,{},{},[]),vi=u("i4WA"),bi=u("6qls"),hi=u("tz6c"),Ci=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _i(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),e["ɵdid"](1,114688,null,0,he.a,[wl.a],{type:[0,"type"]},null),(l()(),e["ɵted"](2,0,[" ",""])),(l()(),e["ɵeld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Please consult the "])),(l()(),e["ɵeld"](6,0,null,null,1,"cd-doc",[["section","rgw"]],null,null,null,vi.b,vi.a)),e["ɵdid"](7,114688,null,0,bi.a,[hi.a,wl.a],{section:[0,"section"]},null),(l()(),e["ɵted"](-1,null,[" on how to configure and enable the Object Gateway management functionality."]))],(function(l,n){l(n,1,0,"info"),l(n,7,0,"rgw")}),(function(l,n){l(n,2,0,n.component.message)}))}function Ri(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-501",[],null,null,null,_i,Ci)),e["ɵdid"](1,245760,null,0,a,[ne.a],null,null)],(function(l,n){l(n,1,0)}),null)}var yi=e["ɵccf"]("cd-rgw-501",a,Ri,{},{},[]);u.d(n,"RgwModuleNgFactory",(function(){return ki})),u.d(n,"RoutedRgwModuleNgFactory",(function(){return Ii}));var ki=e["ɵcmf"](ll,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[rl.a,cl.a,ml.a,gl.a,gl.b,pl.a,fl.a,vl.a,bl.a,hl.a,Cl.a,Ol,ln,Fn,Zn,cu,yu,Du]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,Dl.NgLocalization,Dl.NgLocaleLocalization,[e.LOCALE_ID,[2,Dl["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,Fu.a,Fu.a,[]),e["ɵmpd"](4608,ju.a,ju.a,[]),e["ɵmpd"](4608,Ul.a,Ul.a,[wl.a]),e["ɵmpd"](4608,Dl.DatePipe,Dl.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,Bu.a,Bu.a,[]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,S.a,S.a,[L.a]),e["ɵmpd"](4608,Pu.a,Pu.a,[L.a]),e["ɵmpd"](4608,D.a,D.a,[L.a]),e["ɵmpd"](4608,Au.a,Au.a,[]),e["ɵmpd"](4608,Mu.a,Mu.a,[]),e["ɵmpd"](4608,Ou.a,Ou.a,[]),e["ɵmpd"](4608,Uu.a,Uu.a,[]),e["ɵmpd"](4608,Tl.a,Tl.a,[Dl.DatePipe]),e["ɵmpd"](4608,Lu.a,Lu.a,[]),e["ɵmpd"](4608,zu.a,zu.a,[]),e["ɵmpd"](4608,Gu.a,Gu.a,[]),e["ɵmpd"](4608,Ku.a,Ku.a,[]),e["ɵmpd"](4608,$u.a,$u.a,[]),e["ɵmpd"](4608,Zu.a,Zu.a,[wl.a]),e["ɵmpd"](4608,jn.a,jn.a,[]),e["ɵmpd"](4608,an.a,an.a,[]),e["ɵmpd"](4608,Qu.a,Qu.a,[]),e["ɵmpd"](4608,o.D,o.D,[]),e["ɵmpd"](4608,o.h,o.h,[]),e["ɵmpd"](4608,Yu.b,Yu.b,[]),e["ɵmpd"](4608,Wu.a,Wu.a,[]),e["ɵmpd"](4608,Ju.a,Ju.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,en.a,en.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,Ju.a,e.ApplicationRef]),e["ɵmpd"](4608,Xu.c,Xu.c,[]),e["ɵmpd"](4608,Hu.a,Hu.a,[]),e["ɵmpd"](4608,sn.b,sn.b,[e.RendererFactory2,en.a]),e["ɵmpd"](4608,le.y,le.y,[Dl.DOCUMENT]),e["ɵmpd"](4608,le.r,le.r,[]),e["ɵmpd"](4608,le.a,le.a,[]),e["ɵmpd"](4608,un.f,un.f,[]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,i.a,i.a,[ne.m,F.a]),e["ɵmpd"](4608,_l.f,_l.f,[]),e["ɵmpd"](1073742336,Dl.CommonModule,Dl.CommonModule,[]),e["ɵmpd"](1073742336,ue.a,ue.a,[]),e["ɵmpd"](1073742336,o.C,o.C,[]),e["ɵmpd"](1073742336,o.n,o.n,[]),e["ɵmpd"](1073742336,o.y,o.y,[]),e["ɵmpd"](1073742336,Yu.c,Yu.c,[]),e["ɵmpd"](1073742336,Wu.d,Wu.d,[]),e["ɵmpd"](1073742336,Xu.d,Xu.d,[]),e["ɵmpd"](1073742336,Hu.d,Hu.d,[]),e["ɵmpd"](1073742336,ee.b,ee.b,[]),e["ɵmpd"](1073742336,sn.e,sn.e,[]),e["ɵmpd"](1073742336,te.a,te.a,[]),e["ɵmpd"](1073742336,un.e,un.e,[]),e["ɵmpd"](1073742336,An.f,An.f,[]),e["ɵmpd"](1073742336,ie.ClickOutsideModule,ie.ClickOutsideModule,[]),e["ɵmpd"](1073742336,ae.b,ae.b,[]),e["ɵmpd"](1073742336,ne.q,ne.q,[[2,ne.v],[2,ne.m]]),e["ɵmpd"](1073742336,oe.a,oe.a,[]),e["ɵmpd"](1073742336,le.u,le.u,[]),e["ɵmpd"](1073742336,se.a,se.a,[]),e["ɵmpd"](1073742336,f.a,f.a,[]),e["ɵmpd"](1073742336,de.a,de.a,[]),e["ɵmpd"](1073742336,re.a,re.a,[]),e["ɵmpd"](1073742336,_l.d,_l.d,[]),e["ɵmpd"](1073742336,ll,ll,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,un.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})),Ii=e["ɵcmf"](dl,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[rl.a,cl.a,ml.a,gl.a,gl.b,pl.a,fl.a,vl.a,bl.a,hl.a,Cl.a,Ol,ln,Fn,Zn,cu,yu,Du,ve,we,Rt,Ft,fi,yi]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,Dl.NgLocalization,Dl.NgLocaleLocalization,[e.LOCALE_ID,[2,Dl["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,Fu.a,Fu.a,[]),e["ɵmpd"](4608,ju.a,ju.a,[]),e["ɵmpd"](4608,Ul.a,Ul.a,[wl.a]),e["ɵmpd"](4608,Dl.DatePipe,Dl.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,Bu.a,Bu.a,[]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,S.a,S.a,[L.a]),e["ɵmpd"](4608,Pu.a,Pu.a,[L.a]),e["ɵmpd"](4608,D.a,D.a,[L.a]),e["ɵmpd"](4608,Au.a,Au.a,[]),e["ɵmpd"](4608,Mu.a,Mu.a,[]),e["ɵmpd"](4608,Ou.a,Ou.a,[]),e["ɵmpd"](4608,Uu.a,Uu.a,[]),e["ɵmpd"](4608,Tl.a,Tl.a,[Dl.DatePipe]),e["ɵmpd"](4608,Lu.a,Lu.a,[]),e["ɵmpd"](4608,zu.a,zu.a,[]),e["ɵmpd"](4608,Gu.a,Gu.a,[]),e["ɵmpd"](4608,Ku.a,Ku.a,[]),e["ɵmpd"](4608,$u.a,$u.a,[]),e["ɵmpd"](4608,Zu.a,Zu.a,[wl.a]),e["ɵmpd"](4608,jn.a,jn.a,[]),e["ɵmpd"](4608,an.a,an.a,[]),e["ɵmpd"](4608,Qu.a,Qu.a,[]),e["ɵmpd"](4608,o.D,o.D,[]),e["ɵmpd"](4608,o.h,o.h,[]),e["ɵmpd"](4608,Yu.b,Yu.b,[]),e["ɵmpd"](4608,Wu.a,Wu.a,[]),e["ɵmpd"](4608,Ju.a,Ju.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,en.a,en.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,Ju.a,e.ApplicationRef]),e["ɵmpd"](4608,Xu.c,Xu.c,[]),e["ɵmpd"](4608,Hu.a,Hu.a,[]),e["ɵmpd"](4608,sn.b,sn.b,[e.RendererFactory2,en.a]),e["ɵmpd"](4608,le.y,le.y,[Dl.DOCUMENT]),e["ɵmpd"](4608,le.r,le.r,[]),e["ɵmpd"](4608,le.a,le.a,[]),e["ɵmpd"](4608,un.f,un.f,[]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,i.a,i.a,[ne.m,F.a]),e["ɵmpd"](4608,_l.f,_l.f,[]),e["ɵmpd"](1073742336,Dl.CommonModule,Dl.CommonModule,[]),e["ɵmpd"](1073742336,ue.a,ue.a,[]),e["ɵmpd"](1073742336,o.C,o.C,[]),e["ɵmpd"](1073742336,o.n,o.n,[]),e["ɵmpd"](1073742336,o.y,o.y,[]),e["ɵmpd"](1073742336,Yu.c,Yu.c,[]),e["ɵmpd"](1073742336,Wu.d,Wu.d,[]),e["ɵmpd"](1073742336,Xu.d,Xu.d,[]),e["ɵmpd"](1073742336,Hu.d,Hu.d,[]),e["ɵmpd"](1073742336,ee.b,ee.b,[]),e["ɵmpd"](1073742336,sn.e,sn.e,[]),e["ɵmpd"](1073742336,te.a,te.a,[]),e["ɵmpd"](1073742336,un.e,un.e,[]),e["ɵmpd"](1073742336,An.f,An.f,[]),e["ɵmpd"](1073742336,ie.ClickOutsideModule,ie.ClickOutsideModule,[]),e["ɵmpd"](1073742336,ae.b,ae.b,[]),e["ɵmpd"](1073742336,ne.q,ne.q,[[2,ne.v],[2,ne.m]]),e["ɵmpd"](1073742336,oe.a,oe.a,[]),e["ɵmpd"](1073742336,le.u,le.u,[]),e["ɵmpd"](1073742336,se.a,se.a,[]),e["ɵmpd"](1073742336,f.a,f.a,[]),e["ɵmpd"](1073742336,de.a,de.a,[]),e["ɵmpd"](1073742336,re.a,re.a,[]),e["ɵmpd"](1073742336,_l.d,_l.d,[]),e["ɵmpd"](1073742336,ll,ll,[]),e["ɵmpd"](1073742336,dl,dl,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,un.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](1024,ne.k,(function(){return[[{path:"",redirectTo:"daemon",pathMatch:"full"},{path:"daemon",component:O,data:nl},{path:"user",data:ul,children:[{path:"",component:H},{path:"create",component:W,data:el},{path:"edit/:uid",component:W,data:tl}]},{path:"bucket",data:il,children:[{path:"",component:P},{path:"create",component:E,data:al},{path:"edit/:bid",component:E,data:ol}]},{path:"501/:message",component:a,canActivate:[i.a],data:sl}]]}),[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.904941689cb18cba0036.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.904941689cb18cba0036.js
deleted file mode 100644 (file)
index ce09aa1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{nOaW:function(l,n,e){"use strict";e.r(n);var u=e("8Y7J"),t=e("sne2"),i=e("s7LF"),a=e("LvDl"),o=e("IheW"),s=e("GiVz"),r=e("pL04");let d=(()=>{class l{constructor(l,n){this.http=l,this.i18n=n,this.apiPath="api/crush_rule",this.formTooltips={root:this.i18n("The name of the node under which data should be placed."),failure_domain:this.i18n("The type of CRUSH nodes across which we should separate replicas."),device_class:this.i18n("The device class data should be placed on.")}}create(l){return this.http.post(this.apiPath,l,{observe:"response"})}delete(l){return this.http.delete(`${this.apiPath}/${l}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return l.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new l(u["ɵɵinject"](o.c),u["ɵɵinject"](s.a))},token:l,providedIn:r.a}),l})(),c=(()=>{class l{constructor(l,n){this.http=l,this.i18n=n,this.apiPath="api/erasure_code_profile",this.formTooltips={k:this.i18n("Each object is split in data-chunks parts, each stored on a different OSD."),m:this.i18n("Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data."),plugins:{jerasure:{description:this.i18n("The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools."),technique:this.i18n("The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2."),packetSize:this.i18n("The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.")},lrc:{description:this.i18n("With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven."),l:this.i18n("Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set."),crushLocality:this.i18n("The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.")},isa:{description:this.i18n("The isa plugin encapsulates the ISA library. It only runs on Intel processors."),technique:this.i18n("The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.")},shec:{description:this.i18n("The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes."),c:this.i18n("The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.")}},crushRoot:this.i18n("The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default."),crushFailureDomain:this.i18n("Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host."),crushDeviceClass:this.i18n("Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map."),directory:this.i18n("Set the directory name from which the erasure code plugin is loaded.")}}list(){return this.http.get(this.apiPath)}create(l){return this.http.post(this.apiPath,l,{observe:"response"})}delete(l){return this.http.delete(`${this.apiPath}/${l}`,{observe:"response"})}getInfo(){return this.http.get(`ui-${this.apiPath}/info`)}}return l.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new l(u["ɵɵinject"](o.c),u["ɵɵinject"](s.a))},token:l,providedIn:r.a}),l})();var m=e("Ekvf"),f=e("0+/T"),g=e("a96k"),p=e("oxzT"),h=e("QFaf"),v=e("1Ni5"),b=e("PhyI"),C=e("kvvV"),R=e("Fgil"),I=e("aexS"),E=e("aXbf"),N=e("kn/O");class y{constructor(){this.nodes=[],this.easyNodes={},this.allDevices=[],this.buckets=[],this.failureDomains={},this.failureDomainKeys=[],this.devices=[],this.deviceCount=0}initCrushNodeSelection(l,n,e,u){this.nodes=l,l.forEach(l=>{this.easyNodes[l.id]=l}),this.buckets=a.sortBy(l.filter(l=>l.children),"name"),this.controls={root:n,failure:e,device:u},this.preSelectRoot(),this.controls.root.valueChanges.subscribe(()=>this.onRootChange()),this.controls.failure.valueChanges.subscribe(()=>this.onFailureDomainChange()),this.controls.device.valueChanges.subscribe(()=>this.onDeviceChange())}preSelectRoot(){const l=this.nodes.find(l=>"root"===l.type);this.silentSet(this.controls.root,l),this.onRootChange()}silentSet(l,n){l.setValue(n,{emitEvent:!1})}onRootChange(){const l=this.getSubNodes(this.controls.root.value),n={};l.forEach(l=>{n[l.type]||(n[l.type]=[]),n[l.type].push(l)}),Object.keys(n).forEach(l=>{n[l].length<=1&&delete n[l]}),this.failureDomains=n,this.failureDomainKeys=Object.keys(n).sort(),this.updateFailureDomain()}getSubNodes(l){let n=[l];return l.children?(l.children.forEach(l=>{n=n.concat(this.getSubNodes(this.easyNodes[l]))}),n):n}updateFailureDomain(){let l=this.getIncludedCustomValue(this.controls.failure,Object.keys(this.failureDomains));""===l&&(l=this.setMostCommonDomain(this.controls.failure)),this.updateDevices(l)}getIncludedCustomValue(l,n){return l.dirty&&n.includes(l.value)?l.value:""}setMostCommonDomain(l){let n={n:0,type:""};return Object.keys(this.failureDomains).forEach(l=>{const e=this.failureDomains[l].length;n.n<e&&(n={n:e,type:l})}),this.silentSet(l,n.type),n.type}onFailureDomainChange(){this.updateDevices()}updateDevices(l=this.controls.failure.value){const n=a.flatten(this.failureDomains[l].map(l=>this.getSubNodes(l)));this.allDevices=n.filter(l=>l.device_class).map(l=>l.device_class),this.devices=a.uniq(this.allDevices).sort();const e=1===this.devices.length?this.devices[0]:this.getIncludedCustomValue(this.controls.device,this.devices);this.silentSet(this.controls.device,e),this.onDeviceChange(e)}onDeviceChange(l=this.controls.device.value){this.deviceCount=""===l?this.allDevices.length:this.allDevices.filter(n=>n===l).length}}var V=e("2EZI");class w extends y{constructor(l,n,e,t,i,a){super(),this.formBuilder=l,this.bsModalRef=n,this.taskWrapper=e,this.crushRuleService=t,this.i18n=i,this.actionLabels=a,this.submitAction=new u.EventEmitter,this.tooltips=this.crushRuleService.formTooltips,this.action=this.actionLabels.CREATE,this.resource=this.i18n("Crush Rule"),this.createForm()}createForm(){this.form=this.formBuilder.group({name:["",[i.B.required,i.B.pattern("[A-Za-z0-9_-]+"),v.a.custom("uniqueName",l=>this.names&&-1!==this.names.indexOf(l))]],root:null,failure_domain:"",device_class:""})}ngOnInit(){this.crushRuleService.getInfo().subscribe(({names:l,nodes:n})=>{this.initCrushNodeSelection(n,this.form.get("root"),this.form.get("failure_domain"),this.form.get("device_class")),this.names=l})}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const l=a.cloneDeep(this.form.value);l.root=l.root.name,""===l.device_class&&delete l.device_class,this.taskWrapper.wrapTaskAroundCall({task:new C.a("crushRule/create",l),call:this.crushRuleService.create(l)}).subscribe(void 0,()=>{this.form.setErrors({cdSubmitButton:!0})},()=>{this.bsModalRef.hide(),this.submitAction.emit(l)})}}class T{}class _ extends y{constructor(l,n,e,t,i,a){super(),this.formBuilder=l,this.bsModalRef=n,this.taskWrapper=e,this.ecpService=t,this.i18n=i,this.actionLabels=a,this.submitAction=new u.EventEmitter,this.tooltips=this.ecpService.formTooltips,this.PLUGIN={LRC:"lrc",SHEC:"shec",JERASURE:"jerasure",ISA:"isa"},this.plugin=this.PLUGIN.JERASURE,this.action=this.actionLabels.CREATE,this.resource=this.i18n("EC Profile"),this.createForm(),this.setJerasureDefaults()}createForm(){this.form=this.formBuilder.group({name:[null,[i.B.required,i.B.pattern("[A-Za-z0-9_-]+"),v.a.custom("uniqueName",l=>this.names&&-1!==this.names.indexOf(l))]],plugin:[this.PLUGIN.JERASURE,[i.B.required]],k:[4,[i.B.required,i.B.min(2),v.a.custom("max",()=>this.baseValueValidation(!0)),v.a.custom("unequal",l=>this.lrcDataValidation(l)),v.a.custom("kLowerM",l=>this.shecDataValidation(l))]],m:[2,[i.B.required,i.B.min(1),v.a.custom("max",()=>this.baseValueValidation())]],crushFailureDomain:"",crushRoot:null,crushDeviceClass:"",directory:"",technique:"reed_sol_van",packetSize:[2048,[i.B.min(1)]],l:[3,[i.B.required,i.B.min(1),v.a.custom("unequal",l=>this.lrcLocalityValidation(l))]],crushLocality:"",c:[2,[i.B.required,i.B.min(1),v.a.custom("cGreaterM",l=>this.shecDurabilityValidation(l))]]}),this.form.get("k").valueChanges.subscribe(()=>this.updateValidityOnChange(["m","l"])),this.form.get("m").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","l","c"])),this.form.get("l").valueChanges.subscribe(()=>this.updateValidityOnChange(["k","m"])),this.form.get("plugin").valueChanges.subscribe(l=>this.onPluginChange(l))}baseValueValidation(l=!1){return this.validValidation(()=>this.getKMSum()>this.deviceCount&&this.form.getValue("k")>this.form.getValue("m")===l)}validValidation(l,n){return!((!this.form||n)&&this.plugin!==n)&&l()}getKMSum(){return this.form.getValue("k")+this.form.getValue("m")}lrcDataValidation(l){return this.validValidation(()=>{const n=this.form.getValue("m"),e=this.form.getValue("l"),u=l+n;return this.lrcMultiK=l/(u/e),l%(u/e)!=0},"lrc")}shecDataValidation(l){return this.validValidation(()=>this.form.getValue("m")>l,"shec")}lrcLocalityValidation(l){return this.validValidation(()=>{const n=this.getKMSum();return this.lrcGroups=l>0?n/l:0,l>0&&n%l!=0},"lrc")}shecDurabilityValidation(l){return this.validValidation(()=>{const n=this.form.getValue("m");return l>n},"shec")}updateValidityOnChange(l){l.forEach(l=>this.form.get(l).updateValueAndValidity({emitEvent:!1}))}onPluginChange(l){this.plugin=l,l===this.PLUGIN.JERASURE?this.setJerasureDefaults():l===this.PLUGIN.LRC?this.setLrcDefaults():l===this.PLUGIN.ISA?this.setIsaDefaults():l===this.PLUGIN.SHEC&&this.setShecDefaults(),this.updateValidityOnChange(["m"])}setJerasureDefaults(){this.setDefaults({k:4,m:2}),this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liberation","blaum_roth","liber8tion"]}setLrcDefaults(){this.setDefaults({k:4,m:2,l:3})}setIsaDefaults(){this.setDefaults({k:7,m:3}),this.techniques=["reed_sol_van","cauchy"]}setShecDefaults(){this.setDefaults({k:4,m:3,c:2})}setDefaults(l){Object.keys(l).forEach(n=>{const e=this.form.get(n),u=e.value;let t=e.pristine;"k"===n?t=[4,7].includes(u):"m"===n&&(t=[2,3].includes(u)),t&&this.form.get(n).setValue(l[n])})}ngOnInit(){this.ecpService.getInfo().subscribe(({plugins:l,names:n,directory:e,nodes:u})=>{this.initCrushNodeSelection(u,this.form.get("crushRoot"),this.form.get("crushFailureDomain"),this.form.get("crushDeviceClass")),this.plugins=l,this.names=n,this.form.silentSet("directory",e),this.preValidateNumericInputFields()})}preValidateNumericInputFields(){const l=["k","m","l","c"].map(l=>this.form.get(l));l.forEach(l=>{l.markAsTouched(),l.markAsDirty()}),l[1].updateValueAndValidity()}onSubmit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const l=this.createJson();this.taskWrapper.wrapTaskAroundCall({task:new C.a("ecp/create",{name:l.name}),call:this.ecpService.create(l)}).subscribe(void 0,()=>{this.form.setErrors({cdSubmitButton:!0})},()=>{this.bsModalRef.hide(),this.submitAction.emit(l)})}createJson(){const l={technique:[this.PLUGIN.ISA,this.PLUGIN.JERASURE],packetSize:[this.PLUGIN.JERASURE],l:[this.PLUGIN.LRC],crushLocality:[this.PLUGIN.LRC],c:[this.PLUGIN.SHEC]},n=new T,e=this.form.getValue("plugin");return Object.keys(this.form.controls).filter(n=>{const u=l[n],t=this.form.getValue(n);return(u&&u.includes(e)||!u)&&t&&""!==t}).forEach(l=>{this.extendJson(l,n)}),n}extendJson(l,n){const e=this.form.getValue(l);n[{crushFailureDomain:"crush-failure-domain",crushRoot:"crush-root",crushDeviceClass:"crush-device-class",packetSize:"packetsize",crushLocality:"crush-locality"}[l]||l]="crushRoot"===l?e.name:e}}var S=e("DNAf");class k{constructor(l){this.erasureInfo=!1,this.crushInfo=!1,this.pgs=1,this.poolTypes=["erasure","replicated"],this.applications={selected:[],default:["cephfs","rbd","rgw"],available:[],validators:[i.B.pattern("[A-Za-z0-9_]+"),i.B.maxLength(128)],messages:new S.a({empty:l("No applications added"),selectionLimit:{text:l("Applications limit reached"),tooltip:l("A pool can only have up to four applications definitions.")},customValidations:{pattern:l("Allowed characters '_a-zA-Z0-9'"),maxlength:l("Maximum length is 128 characters")},filter:l("Filter or add applications"),add:l("Add application")},l)}}}class D{constructor(l,n,e,i,a,o,s,r,d,c,m,f,g){this.dimlessBinaryPipe=l,this.route=n,this.router=e,this.modalService=i,this.poolService=a,this.authStorageService=o,this.formatter=s,this.bsModalService=r,this.taskWrapper=d,this.ecpService=c,this.crushRuleService=m,this.i18n=f,this.actionLabels=g,this.editing=!1,this.isReplicated=!1,this.isErasure=!1,this.data=new k(this.i18n),this.externalPgChange=!1,this.current={rules:[]},this.initializeConfigData=new u.EventEmitter,this.currentConfigurationValues={},this.icons=p.a,this.crushUsage=void 0,this.ecpUsage=void 0,this.editing=this.router.url.startsWith(`/pool/${t.e.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("pool"),this.authenticate(),this.createForm()}authenticate(){this.permission=this.authStorageService.getPermissions().pool,(!this.permission.read||!this.permission.update&&this.editing||!this.permission.create&&!this.editing)&&this.router.navigate(["/404"])}createForm(){const l=new h.a({mode:new i.i("none"),algorithm:new i.i(""),minBlobSize:new i.i("",{updateOn:"blur"}),maxBlobSize:new i.i("",{updateOn:"blur"}),ratio:new i.i("",{updateOn:"blur"})});this.form=new h.a({name:new i.i("",{validators:[i.B.pattern(/^[.A-Za-z0-9_/-]+$/),i.B.required,v.a.custom("rbdPool",()=>this.form&&this.form.getValue("name").includes("/")&&this.data&&-1!==this.data.applications.selected.indexOf("rbd"))]}),poolType:new i.i("",{validators:[i.B.required]}),crushRule:new i.i(null,{validators:[v.a.custom("tooFewOsds",l=>this.info&&l&&this.info.osd_count<l.min_size),v.a.custom("required",l=>this.isReplicated&&this.info.crush_rules_replicated.length>0&&!l)]}),size:new i.i("",{updateOn:"blur"}),erasureProfile:new i.i(null),pgNum:new i.i("",{validators:[i.B.required,i.B.min(1)]}),pgAutoscaleMode:new i.i(null),ecOverwrites:new i.i(!1),compression:l,max_bytes:new i.i(""),max_objects:new i.i(0,{validators:[i.B.min(0)]})},[v.a.custom("form",()=>null)])}ngOnInit(){this.poolService.getInfo().subscribe(l=>{this.initInfo(l),this.editing?this.initEditMode():this.setAvailableApps(),this.listenToChanges(),this.setComplexValidators()})}initInfo(l){this.pgAutoscaleModes=l.pg_autoscale_modes,this.form.silentSet("pgAutoscaleMode",l.pg_autoscale_default_mode),this.form.silentSet("algorithm",l.bluestore_compression_algorithm),this.info=l,this.initEcp(l.erasure_code_profiles)}initEcp(l){this.setListControlStatus("erasureProfile",l),this.ecProfiles=l}setListControlStatus(l,n){const e=this.form.get(l),u=e.value;1!==n.length||u&&a.isEqual(u,n[0])?0===n.length&&u&&e.setValue(null):e.setValue(n[0]),n.length<=1?e.enabled&&e.disable():e.disabled&&e.enable()}initEditMode(){this.disableForEdit(),this.routeParamsSubscribe=this.route.params.subscribe(l=>this.poolService.get(l.name).subscribe(l=>{this.data.pool=l,this.initEditFormData(l)}))}disableForEdit(){["poolType","crushRule","size","erasureProfile","ecOverwrites"].forEach(l=>this.form.get(l).disable())}initEditFormData(l){this.initializeConfigData.emit({initialData:l.configuration,sourceType:b.a.pool}),this.poolTypeChange(l.type);const n=this.info.crush_rules_replicated.concat(this.info.crush_rules_erasure),e={name:l.pool_name,poolType:l.type,crushRule:n.find(n=>n.rule_name===l.crush_rule),size:l.size,erasureProfile:this.ecProfiles.find(n=>n.name===l.erasure_code_profile),pgAutoscaleMode:l.pg_autoscale_mode,pgNum:l.pg_num,ecOverwrites:l.flags_names.includes("ec_overwrites"),mode:l.options.compression_mode,algorithm:l.options.compression_algorithm,minBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_min_blob_size),maxBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_max_blob_size),ratio:l.options.compression_required_ratio,max_bytes:this.dimlessBinaryPipe.transform(l.quota_max_bytes),max_objects:l.quota_max_objects};Object.keys(e).forEach(l=>{const n=e[l];a.isUndefined(n)||""===n||this.form.silentSet(l,n)}),this.data.pgs=this.form.getValue("pgNum"),this.setAvailableApps(this.data.applications.default.concat(l.application_metadata)),this.data.applications.selected=l.application_metadata}setAvailableApps(l=this.data.applications.default){this.data.applications.available=a.uniq(l.sort()).map(l=>new g.a(!1,l,""))}listenToChanges(){this.listenToChangesDuringAddEdit(),this.editing||this.listenToChangesDuringAdd()}listenToChangesDuringAddEdit(){this.form.get("pgNum").valueChanges.subscribe(l=>{const n=l-this.data.pgs;1===Math.abs(n)&&2!==l?this.doPgPowerJump(n):this.data.pgs=l})}doPgPowerJump(l){const n=this.calculatePgPower()+l;this.setPgs(-1===l?Math.round(n):Math.floor(n))}calculatePgPower(l=this.form.getValue("pgNum")){return Math.log(l)/Math.log(2)}setPgs(l){const n=Math.pow(2,l<0?0:l);this.data.pgs=n,this.form.silentSet("pgNum",n)}listenToChangesDuringAdd(){this.form.get("poolType").valueChanges.subscribe(l=>{this.poolTypeChange(l)}),this.form.get("crushRule").valueChanges.subscribe(l=>{this.crushDeletionBtn&&this.crushDeletionBtn.isOpen&&this.crushDeletionBtn.hide(),l&&(this.crushRuleIsUsedBy(l.rule_name),this.replicatedRuleChange(),this.pgCalc())}),this.form.get("size").valueChanges.subscribe(()=>{this.pgCalc()}),this.form.get("erasureProfile").valueChanges.subscribe(l=>{this.ecpDeletionBtn&&this.ecpDeletionBtn.isOpen&&this.ecpDeletionBtn.hide(),l&&(this.ecpIsUsedBy(l.name),this.pgCalc())}),this.form.get("mode").valueChanges.subscribe(()=>{["minBlobSize","maxBlobSize","ratio"].forEach(l=>{this.form.get(l).updateValueAndValidity({emitEvent:!1})})}),this.form.get("minBlobSize").valueChanges.subscribe(()=>{this.form.get("maxBlobSize").updateValueAndValidity({emitEvent:!1})}),this.form.get("maxBlobSize").valueChanges.subscribe(()=>{this.form.get("minBlobSize").updateValueAndValidity({emitEvent:!1})})}poolTypeChange(l){if("replicated"===l?this.setTypeBooleans(!0,!1):this.setTypeBooleans(!1,"erasure"===l),!l||!this.info)return void(this.current.rules=[]);const n=this.info["crush_rules_"+l]||[];this.current.rules=n,this.editing||(this.isReplicated&&this.setListControlStatus("crushRule",n),this.replicatedRuleChange(),this.pgCalc())}setTypeBooleans(l,n){this.isReplicated=l,this.isErasure=n}replicatedRuleChange(){if(!this.isReplicated)return;const l=this.form.get("size");let n=this.form.getValue("size")||3;const e=this.getMinSize(),u=this.getMaxSize();n<e?n=e:n>u&&(n=u),n!==l.value&&this.form.silentSet("size",n)}getMinSize(){if(!this.info||this.info.osd_count<1)return 0;const l=this.form.getValue("crushRule");return l?l.min_size:1}getMaxSize(){if(!this.info||this.info.osd_count<1)return 0;const l=this.info.osd_count;if(this.form.getValue("crushRule")){const n=this.form.get("crushRule").value.max_size;if(n<l)return n}return l}pgCalc(){const l=this.form.getValue("poolType");if(!this.info||this.form.get("pgNum").dirty||!l)return;const n=100*this.info.osd_count,e=this.isReplicated?this.replicatedPgCalc(n):this.erasurePgCalc(n);if(!e)return;const u=this.data.pgs;this.alignPgs(e),this.externalPgChange||(this.externalPgChange=u!==this.data.pgs)}replicatedPgCalc(l){const n=this.form.get("size"),e=n.value;return n.valid&&e>0?l/e:0}erasurePgCalc(l){const n=this.form.get("erasureProfile"),e=n.value;return(n.valid||n.disabled)&&e?l/(e.k+e.m):0}alignPgs(l=this.form.getValue("pgNum")){this.setPgs(Math.round(this.calculatePgPower(l<1?1:l)))}setComplexValidators(){this.editing?this.form.get("name").setValidators([this.form.get("name").validator,v.a.custom("uniqueName",l=>this.data.pool&&this.info&&-1!==this.info.pool_names.indexOf(l)&&this.info.pool_names.indexOf(l)!==this.info.pool_names.indexOf(this.data.pool.pool_name))]):(v.a.validateIf(this.form.get("size"),()=>this.isReplicated,[v.a.custom("min",l=>this.form.getValue("size")&&l<this.getMinSize()),v.a.custom("max",l=>this.form.getValue("size")&&this.getMaxSize()<l)]),this.form.get("name").setValidators([this.form.get("name").validator,v.a.custom("uniqueName",l=>this.info&&-1!==this.info.pool_names.indexOf(l))])),this.setCompressionValidators()}setCompressionValidators(){v.a.validateIf(this.form.get("minBlobSize"),()=>this.hasCompressionEnabled(),[i.B.min(0),v.a.custom("maximum",l=>this.oddBlobSize(l,this.form.getValue("maxBlobSize")))]),v.a.validateIf(this.form.get("maxBlobSize"),()=>this.hasCompressionEnabled(),[i.B.min(0),v.a.custom("minimum",l=>this.oddBlobSize(this.form.getValue("minBlobSize"),l))]),v.a.validateIf(this.form.get("ratio"),()=>this.hasCompressionEnabled(),[i.B.min(0),i.B.max(1)])}oddBlobSize(l,n){const e=this.formatter.toBytes(l),u=this.formatter.toBytes(n);return Boolean(e&&u&&e>=u)}hasCompressionEnabled(){return this.form.getValue("mode")&&"none"!==this.form.get("mode").value.toLowerCase()}describeCrushStep(l){return[l.op.replace("_"," "),l.item_name||"",l.type?l.num+" type "+l.type:""].join(" ")}addErasureCodeProfile(){this.addModal(_,l=>this.reloadECPs(l))}addModal(l,n){this.hideOpenTooltips(),this.bsModalService.show(l).content.submitAction.subscribe(l=>{n(l.name)})}hideOpenTooltips(){const l=l=>l&&l.isOpen&&l.hide();l(this.ecpDeletionBtn),l(this.crushDeletionBtn)}reloadECPs(l){this.reloadList({newItemName:l,getInfo:()=>this.ecpService.list(),initInfo:l=>this.initEcp(l),findNewItem:()=>this.ecProfiles.find(n=>n.name===l),controlName:"erasureProfile"})}reloadList({newItemName:l,getInfo:n,initInfo:e,findNewItem:u,controlName:t}){this.modalSubscription&&this.modalSubscription.unsubscribe(),n().subscribe(n=>{if(e(n),!l)return;const i=u();i&&this.form.get(t).setValue(i)})}deleteErasureCodeProfile(){this.deletionModal({value:this.form.getValue("erasureProfile"),usage:this.ecpUsage,deletionBtn:this.ecpDeletionBtn,dataName:"erasureInfo",getTabs:()=>this.ecpInfoTabs,tabPosition:1,nameAttribute:"name",itemDescription:this.i18n("erasure code profile"),reloadFn:()=>this.reloadECPs(),deleteFn:l=>this.ecpService.delete(l),taskName:"ecp/delete"})}deletionModal({value:l,usage:n,deletionBtn:e,dataName:u,getTabs:t,tabPosition:i,nameAttribute:a,itemDescription:o,reloadFn:s,deleteFn:r,taskName:d}){if(!l)return;if(n)return e.toggle(),this.data[u]=!0,void setTimeout(()=>{const l=t();l&&(l.tabs[i].active=!0)},50);const c=l[a];this.modalService.show(f.a,{initialState:{itemDescription:o,itemNames:[c],submitActionObservable:()=>{const l=r(c);return l.subscribe(()=>s()),this.taskWrapper.wrapTaskAroundCall({task:new C.a(d,{name:c}),call:l})}}})}addCrushRule(){this.addModal(w,l=>this.reloadCrushRules(l))}reloadCrushRules(l){this.reloadList({newItemName:l,getInfo:()=>this.poolService.getInfo(),initInfo:l=>{this.initInfo(l),this.poolTypeChange("replicated")},findNewItem:()=>this.info.crush_rules_replicated.find(n=>n.rule_name===l),controlName:"crushRule"})}deleteCrushRule(){this.deletionModal({value:this.form.getValue("crushRule"),usage:this.crushUsage,deletionBtn:this.crushDeletionBtn,dataName:"crushInfo",getTabs:()=>this.crushInfoTabs,tabPosition:2,nameAttribute:"rule_name",itemDescription:this.i18n("crush rule"),reloadFn:()=>this.reloadCrushRules(),deleteFn:l=>this.crushRuleService.delete(l),taskName:"crushRule/delete"})}crushRuleIsUsedBy(l){this.crushUsage=l?this.info.used_rules[l]:void 0}ecpIsUsedBy(l){this.ecpUsage=l?this.info.used_profiles[l]:void 0}submit(){if(this.form.invalid)return void this.form.setErrors({cdSubmitButton:!0});const l={pool:this.form.getValue("name")};this.assignFormFields(l,[{externalFieldName:"pool_type",formControlName:"poolType"},{externalFieldName:"pg_autoscale_mode",formControlName:"pgAutoscaleMode",editable:!0},{externalFieldName:"pg_num",formControlName:"pgNum",replaceFn:l=>"on"===this.form.getValue("pgAutoscaleMode")?1:l,editable:!0},this.isReplicated?{externalFieldName:"size",formControlName:"size"}:{externalFieldName:"erasure_code_profile",formControlName:"erasureProfile",attr:"name"},{externalFieldName:"rule_name",formControlName:"crushRule",replaceFn:l=>this.isReplicated?l&&l.rule_name:void 0},{externalFieldName:"quota_max_bytes",formControlName:"max_bytes",replaceFn:this.formatter.toBytes,editable:!0,resetValue:this.editing?0:void 0},{externalFieldName:"quota_max_objects",formControlName:"max_objects",editable:!0,resetValue:this.editing?0:void 0}]),this.info.is_all_bluestore&&(this.assignFormField(l,{externalFieldName:"flags",formControlName:"ecOverwrites",replaceFn:()=>this.isErasure?["ec_overwrites"]:void 0}),"none"!==this.form.getValue("mode")?this.assignFormFields(l,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:l=>this.hasCompressionEnabled()&&l},{externalFieldName:"compression_algorithm",formControlName:"algorithm",editable:!0},{externalFieldName:"compression_min_blob_size",formControlName:"minBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_max_blob_size",formControlName:"maxBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_required_ratio",formControlName:"ratio",editable:!0,resetValue:0}]):this.editing&&this.assignFormFields(l,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:()=>"unset"},{externalFieldName:"srcpool",formControlName:"name",editable:!0,replaceFn:()=>this.data.pool.pool_name}]));const n=this.data.applications.selected;(n.length>0||this.editing)&&(l.application_metadata=n),this.isReplicated&&!a.isEmpty(this.currentConfigurationValues)&&(l.configuration=this.currentConfigurationValues),this.triggerApiTask(l)}assignFormFields(l,n){n.forEach(n=>this.assignFormField(l,n))}assignFormField(l,{externalFieldName:n,formControlName:e,attr:u,replaceFn:t,editable:i,resetValue:o}){if(this.editing&&(!i||this.form.get(e).pristine))return;const s=this.form.getValue(e);let r=t?t(s):u?a.get(s,u):s;if(!s||!r){if(!i||a.isUndefined(o))return;r=o}l[n]=r}triggerApiTask(l){this.taskWrapper.wrapTaskAroundCall({task:new C.a("pool/"+(this.editing?t.e.EDIT:t.e.CREATE),{pool_name:l.hasOwnProperty("srcpool")?l.srcpool:l.pool}),call:this.poolService[this.editing?t.e.UPDATE:t.e.CREATE](l)}).subscribe(void 0,l=>{a.isObject(l.error)&&"34"===l.error.code&&this.form.get("pgNum").setErrors({34:!0}),this.form.setErrors({cdSubmitButton:!0})},()=>this.router.navigate(["/pool"]))}appSelection(){this.form.get("name").updateValueAndValidity({emitEvent:!1,onlySelf:!0})}}var q=e("MuvH"),x=e("+fVR"),P=e("uIqm"),F=e("x38r"),A=e("yJti"),B=e("vCyI"),O=e("o4+5"),z=e("VTlA"),L=e("EgGo"),j=e("d+Og");class U{constructor(l){this.pool_name=l}}const M=new L.a("pool");class G extends x.a{constructor(l,n,e,u,t,i,o,s,r,d,c){super(),this.poolService=l,this.taskWrapper=n,this.authStorageService=e,this.taskListService=u,this.modalService=t,this.i18n=i,this.pgCategoryService=o,this.dimlessPipe=s,this.urlBuilder=r,this.configurationService=d,this.actionLabels=c,this.selection=new B.a,this.executingTasks=[],this.cacheTiers=[],this.monAllowPoolDelete=!1,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:p.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:p.a.edit,routerLink:()=>this.urlBuilder.getEdit(encodeURIComponent(this.selection.first().pool_name)),name:this.actionLabels.EDIT},{permission:"delete",icon:p.a.destroy,click:()=>this.deletePoolModal(),name:this.actionLabels.DELETE,disable:()=>!this.selection.first()||!this.monAllowPoolDelete,disableDesc:()=>this.getDisableDesc()}],this.permissions.configOpt.read&&this.configurationService.get("mon_allow_pool_delete").subscribe(l=>{if(a.has(l,"value")){const n=a.find(l.value,l=>"mon"===l.section)||{value:!1};this.monAllowPoolDelete="true"===n.value}})}ngOnInit(){const l=(l,n,e)=>a.get(n,l)>a.get(e,l)?1:-1;this.columns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:4,cellTransformation:F.a.executing},{prop:"type",name:this.i18n("Type"),flexGrow:2},{prop:"application_metadata",name:this.i18n("Applications"),flexGrow:3},{prop:"pg_status",name:this.i18n("PG Status"),flexGrow:3,cellClass:({row:l,column:n,value:e})=>this.getPgStatusCellClass(l,n,e)},{prop:"size",name:this.i18n("Replica Size"),flexGrow:2,cellClass:"text-right"},{prop:"last_change",name:this.i18n("Last Change"),flexGrow:2,cellClass:"text-right"},{prop:"erasure_code_profile",name:this.i18n("Erasure Coded Profile"),flexGrow:2},{prop:"crush_rule",name:this.i18n("Crush Ruleset"),flexGrow:3},{name:this.i18n("Usage"),prop:"usage",cellTemplate:this.poolUsageTpl,flexGrow:3},{prop:"stats.rd_bytes.rates",name:this.i18n("Read bytes"),comparator:(n,e,u,t)=>l("stats.rd_bytes.latest",u,t),cellTransformation:F.a.sparkline,flexGrow:3},{prop:"stats.wr_bytes.rates",name:this.i18n("Write bytes"),comparator:(n,e,u,t)=>l("stats.wr_bytes.latest",u,t),cellTransformation:F.a.sparkline,flexGrow:3},{prop:"stats.rd.rate",name:this.i18n("Read ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:F.a.perSecond},{prop:"stats.wr.rate",name:this.i18n("Write ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:F.a.perSecond}],this.taskListService.init(()=>this.poolService.getList(),void 0,l=>this.pools=this.transformPoolsData(l),()=>{this.table.reset(),this.viewCacheStatusList=[{status:A.a.ValueException}]},l=>l.name.startsWith("pool/"),(l,n)=>n.metadata.pool_name===l.pool_name,{default:l=>new U(l.pool_name)})}updateSelection(l){this.selection=l}deletePoolModal(){const l=this.selection.first().pool_name;this.modalRef=this.modalService.show(f.a,{initialState:{itemDescription:"Pool",itemNames:[l],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new C.a(`pool/${t.e.DELETE}`,{pool_name:l}),call:this.poolService.delete(l)})}})}getPgStatusCellClass(l,n,e){return{"text-right":!0,[`pg-${this.pgCategoryService.getTypeByStates(e)}`]:!0}}transformPoolsData(l){const n=["bytes_used","max_avail","rd_bytes","wr_bytes","rd","wr"],e={latest:0,rate:0,rates:[]};return a.forEach(l,l=>{l.pg_status=this.transformPgStatus(l.pg_status);const u={};a.forEach(n,n=>{u[n]=l.stats&&l.stats[n]?l.stats[n]:e}),l.stats=u;const t=u.bytes_used.latest+u.max_avail.latest;l.usage=t>0?u.bytes_used.latest/t:t,l.cdExecuting||l.pg_num+l.pg_placement_num===l.pg_num_target+l.pg_placement_num_target||(l.cdExecuting="Updating"),["rd_bytes","wr_bytes"].forEach(n=>{l.stats[n].rates=l.stats[n].rates.map(l=>l[1])}),l.cdIsBinary=!0}),l}transformPgStatus(l){const n=[];return a.forEach(l,(l,e)=>{n.push(`${l} ${e}`)}),n.join(", ")}getSelectionTiers(){if(void 0!==this.expandedRow){const l=this.expandedRow.tiers;this.cacheTiers=this.pools.filter(n=>l.includes(n.pool))}}getDisableDesc(){if(!this.monAllowPoolDelete)return this.i18n("Pool deletion is disabled by the mon_allow_pool_delete configuration setting.")}setExpandedRow(l){super.setExpandedRow(l),this.getSelectionTiers()}}class ${}const K={breadcrumbs:t.a.CREATE},J={breadcrumbs:t.a.EDIT};class W{}var Z=e("iutN"),H=e("MdoF"),X=e("ES0t"),Y=e("Xg1U"),Q=e("z5nN"),ll=e("pMnS"),nl=e("EEJc"),el=e("PEr+"),ul=e("a40w"),tl=e("hfeG"),il=e("QUzE"),al=e("E7j4"),ol=e("xvu0"),sl=e("RIVN"),rl=e("nP0W"),dl=e("VBM6"),cl=e("atuK"),ml=e("JIi+"),fl=e("0BYw"),gl=e("3IYD"),pl=e("I4Qz"),hl=e("0rTx"),vl=e("lz+O"),bl=e("u2XS"),Cl=e("nhAp"),Rl=e("l7Jr"),Il=e("bUo2"),El=e("SVse"),Nl=e("8xTl"),yl=e("ajRT"),Vl=e("+gVj"),wl=e("mXUL"),Tl=e("IZUe"),_l=e("4HWh"),Sl=e("p4Cf"),kl=e("gp3X"),Dl=e("sb0X"),ql=e("KVJa"),xl=e("Z21x"),Pl=e("LqlI"),Fl=u["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Al(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Bl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The name can only consist of alphanumeric characters, dashes and underscores."]))],null,null)}function Ol(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The chosen erasure code profile name is already in use."]))],null,null)}function zl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Ll(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function jl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Ul(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Ml(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," ( "," ) "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit,n.component.failureDomains[n.context.$implicit].length)}))}function Gl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function $l(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Kl(l){return u["ɵvid"](0,[u["ɵpid"](0,El.TitleCasePipe,[]),u["ɵpid"](0,Nl.a,[]),(l()(),u["ɵeld"](2,0,null,null,115,"cd-modal",[],null,null,null,nl.c,nl.b)),u["ɵdid"](3,49152,null,0,yl.a,[],{modalRef:[0,"modalRef"]},null),(l()(),u["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),u["ɵted"](5,null,[""," ",""])),u["ɵppd"](6,1),u["ɵppd"](7,1),(l()(),u["ɵeld"](8,0,null,1,109,null,null,null,null,null,null,null)),(l()(),u["ɵeld"](9,0,null,null,108,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var t=!0;return"submit"===n&&(t=!1!==u["ɵnov"](l,11).onSubmit(e)&&t),"reset"===n&&(t=!1!==u["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==u["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),u["ɵdid"](10,16384,null,0,i.G,[],null,null),u["ɵdid"](11,540672,[["frm",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["ɵprd"](2048,null,i.d,null,[i.l]),u["ɵdid"](13,16384,null,0,i.s,[[4,i.d]],null,null),u["ɵdid"](14,16384,null,0,Vl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),u["ɵeld"](15,0,null,null,94,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),u["ɵeld"](16,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](17,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,1,{FormControlNames:1}),u["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),u["ɵeld"](20,0,null,0,3,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),u["ɵeld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Name"])),(l()(),u["ɵeld"](23,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵeld"](24,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](25,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,27)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,27).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,27)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,27)._compositionEnd(e.target.value)&&t),t}),null,null)),u["ɵdid"](26,4210688,null,0,Tl.a,[u.ElementRef],{autofocus:[0,"autofocus"]},null),u["ɵdid"](27,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),u["ɵdid"](29,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](31,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](32,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Al)),u["ɵdid"](34,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Bl)),u["ɵdid"](36,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ol)),u["ɵdid"](38,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](39,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](40,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,3,{FormControlNames:1}),u["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),u["ɵeld"](43,0,null,0,5,"label",[["class","cd-col-form-label"],["for","root"]],null,null,null,null,null)),(l()(),u["ɵeld"](44,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Root"])),(l()(),u["ɵeld"](46,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](47,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](48,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵeld"](49,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](50,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","root"],["id","root"],["name","root"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,51).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,51).onTouched()&&t),t}),null,null)),u["ɵdid"](51,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](53,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](55,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](56,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,zl)),u["ɵdid"](58,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ll)),u["ɵdid"](60,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,jl)),u["ɵdid"](62,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](63,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](64,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,5,{FormControlNames:1}),u["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),u["ɵeld"](67,0,null,0,5,"label",[["class","cd-col-form-label"],["for","failure_domain"]],null,null,null,null,null)),(l()(),u["ɵeld"](68,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Failure domain type"])),(l()(),u["ɵeld"](70,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](71,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](72,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵeld"](73,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](74,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","failure_domain"],["id","failure_domain"],["name","failure_domain"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,75).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,75).onTouched()&&t),t}),null,null)),u["ɵdid"](75,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](77,671744,[[5,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](79,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](80,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ul)),u["ɵdid"](82,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ml)),u["ɵdid"](84,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Gl)),u["ɵdid"](86,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](87,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](88,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,7,{FormControlNames:1}),u["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),u["ɵeld"](91,0,null,0,4,"label",[["class","cd-col-form-label"],["for","device_class"]],null,null,null,null,null)),(l()(),u["ɵeld"](92,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Device class"])),(l()(),u["ɵeld"](94,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](95,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](96,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](97,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","device_class"],["id","device_class"],["name","device_class"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,98).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,98).onTouched()&&t),t}),null,null)),u["ɵdid"](98,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](100,671744,[[7,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](102,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](103,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](104,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](105,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](106,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Let Ceph decide"])),(l()(),u["ɵand"](16777216,null,null,1,null,$l)),u["ɵdid"](109,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](110,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),u["ɵeld"](111,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.onSubmit()&&u),u}),kl.b,kl.a)),u["ɵdid"](112,114688,null,0,Dl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["ɵted"](113,0,[""," ",""])),u["ɵppd"](114,1),u["ɵppd"](115,1),(l()(),u["ɵeld"](116,0,null,null,1,"cd-back-button",[],null,null,null,ql.b,ql.a)),u["ɵdid"](117,49152,null,0,xl.a,[El.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.bsModalRef),l(n,11,0,e.form),l(n,14,0,e.form),l(n,17,0),l(n,26,0,""),l(n,29,0,"name"),l(n,32,0,"name"),l(n,34,0,e.form.showError("name",u["ɵnov"](n,11),"required")),l(n,36,0,e.form.showError("name",u["ɵnov"](n,11),"pattern")),l(n,38,0,e.form.showError("name",u["ɵnov"](n,11),"uniqueName")),l(n,40,0),l(n,47,0,e.tooltips.root),l(n,53,0,"root"),l(n,56,0,"root"),l(n,58,0,!e.buckets),l(n,60,0,e.buckets),l(n,62,0,e.form.showError("root",u["ɵnov"](n,11),"required")),l(n,64,0),l(n,71,0,e.tooltips.failure_domain),l(n,77,0,"failure_domain"),l(n,80,0,"failure_domain"),l(n,82,0,!e.failureDomains),l(n,84,0,e.failureDomainKeys),l(n,86,0,e.form.showError("failure_domain",u["ɵnov"](n,11),"required")),l(n,88,0),l(n,95,0,e.tooltips.device_class),l(n,100,0,"device_class"),l(n,103,0,"device_class"),l(n,105,0,""),l(n,106,0,""),l(n,109,0,e.devices),l(n,112,0,u["ɵnov"](n,11)),l(n,117,0,e.bsModalRef.hide)}),(function(l,n){var e=n.component,t=u["ɵunv"](n,5,0,l(n,6,0,u["ɵnov"](n,0),e.action)),i=u["ɵunv"](n,5,1,l(n,7,0,u["ɵnov"](n,1),e.resource));l(n,5,0,t,i),l(n,9,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending),l(n,16,0,u["ɵnov"](n,17).hasErrors,u["ɵnov"](n,17).hasSuccess),l(n,25,0,u["ɵnov"](n,31).ngClassUntouched,u["ɵnov"](n,31).ngClassTouched,u["ɵnov"](n,31).ngClassPristine,u["ɵnov"](n,31).ngClassDirty,u["ɵnov"](n,31).ngClassValid,u["ɵnov"](n,31).ngClassInvalid,u["ɵnov"](n,31).ngClassPending,u["ɵnov"](n,32).validClass,u["ɵnov"](n,32).invalidClass),l(n,39,0,u["ɵnov"](n,40).hasErrors,u["ɵnov"](n,40).hasSuccess),l(n,50,0,u["ɵnov"](n,55).ngClassUntouched,u["ɵnov"](n,55).ngClassTouched,u["ɵnov"](n,55).ngClassPristine,u["ɵnov"](n,55).ngClassDirty,u["ɵnov"](n,55).ngClassValid,u["ɵnov"](n,55).ngClassInvalid,u["ɵnov"](n,55).ngClassPending,u["ɵnov"](n,56).validClass,u["ɵnov"](n,56).invalidClass),l(n,63,0,u["ɵnov"](n,64).hasErrors,u["ɵnov"](n,64).hasSuccess),l(n,74,0,u["ɵnov"](n,79).ngClassUntouched,u["ɵnov"](n,79).ngClassTouched,u["ɵnov"](n,79).ngClassPristine,u["ɵnov"](n,79).ngClassDirty,u["ɵnov"](n,79).ngClassValid,u["ɵnov"](n,79).ngClassInvalid,u["ɵnov"](n,79).ngClassPending,u["ɵnov"](n,80).validClass,u["ɵnov"](n,80).invalidClass),l(n,87,0,u["ɵnov"](n,88).hasErrors,u["ɵnov"](n,88).hasSuccess),l(n,97,0,u["ɵnov"](n,102).ngClassUntouched,u["ɵnov"](n,102).ngClassTouched,u["ɵnov"](n,102).ngClassPristine,u["ɵnov"](n,102).ngClassDirty,u["ɵnov"](n,102).ngClassValid,u["ɵnov"](n,102).ngClassInvalid,u["ɵnov"](n,102).ngClassPending,u["ɵnov"](n,103).validClass,u["ɵnov"](n,103).invalidClass);var a=u["ɵunv"](n,113,0,l(n,114,0,u["ɵnov"](n,0),e.action)),o=u["ɵunv"](n,113,1,l(n,115,0,u["ɵnov"](n,1),e.resource));l(n,113,0,a,o)}))}function Jl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-crush-rule-form-modal",[],null,null,null,Kl,Fl)),u["ɵdid"](1,114688,null,0,w,[V.a,Pl.a,N.a,d,s.a,t.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Wl=u["ɵccf"]("cd-crush-rule-form-modal",w,Jl,{},{submitAction:"submitAction"},[]),Zl=u["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Hl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Xl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The name can only consist of alphanumeric characters, dashes and underscores."]))],null,null)}function Yl(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The chosen erasure code profile name is already in use."]))],null,null)}function Ql(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function ln(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function nn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function en(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function un(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 2."]))],null,null)}function tn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["Chunks (k+m) have exceeded the available OSDs of ","."]))],null,(function(l,n){l(n,1,0,n.component.deviceCount)}))}function an(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["For an equal distribution k has to be a multiple of (k+m)/l."]))],null,null)}function on(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["K has to be equal to or greater than m in order to recover data correctly through c."]))],null,null)}function sn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["Distribution factor: ",""]))],null,(function(l,n){l(n,1,0,n.component.lrcMultiK)}))}function rn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function dn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function cn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["Chunks (k+m) have exceeded the available OSDs of ","."]))],null,(function(l,n){l(n,1,0,n.component.deviceCount)}))}function mn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function fn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["C has to be equal to or lower than m as m defines the amount of chunks that can be used."]))],null,null)}function gn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,9,{FormControlNames:1}),u["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","c"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Durability estimator (c)"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","c"],["id","c"],["name","c"],["placeholder","Coding chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,11)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,11)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,12).onTouched()&&t),t}),null,null)),u["ɵdid"](11,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](12,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](14,671744,[[9,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](16,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](17,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,mn)),u["ɵdid"](19,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,fn)),u["ɵdid"](21,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.shec.c),l(n,14,0,"c"),l(n,17,0,"c"),l(n,19,0,e.form.showError("c",u["ɵnov"](n.parent,11),"min")),l(n,21,0,e.form.showError("c",u["ɵnov"](n.parent,11),"cGreaterM"))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,16).ngClassUntouched,u["ɵnov"](n,16).ngClassTouched,u["ɵnov"](n,16).ngClassPristine,u["ɵnov"](n,16).ngClassDirty,u["ɵnov"](n,16).ngClassValid,u["ɵnov"](n,16).ngClassInvalid,u["ɵnov"](n,16).ngClassPending,u["ɵnov"](n,17).validClass,u["ɵnov"](n,17).invalidClass)}))}function pn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function hn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function vn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Can't split up chunks (k+m) correctly with the current locality."]))],null,null)}function bn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,11,{FormControlNames:1}),u["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","l"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Locality (l)"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","l"],["id","l"],["name","l"],["placeholder","Coding chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,11)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,11)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,12).onTouched()&&t),t}),null,null)),u["ɵdid"](11,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](12,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](14,671744,[[11,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](16,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](17,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,pn)),u["ɵdid"](19,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,hn)),u["ɵdid"](21,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,vn)),u["ɵdid"](23,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](24,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](25,null,["Locality groups: ",""]))],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.lrc.l),l(n,14,0,"l"),l(n,17,0,"l"),l(n,19,0,e.form.showError("l",u["ɵnov"](n.parent,11),"required")),l(n,21,0,e.form.showError("l",u["ɵnov"](n.parent,11),"min")),l(n,23,0,e.form.showError("l",u["ɵnov"](n.parent,11),"unequal"))}),(function(l,n){var e=n.component;l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,16).ngClassUntouched,u["ɵnov"](n,16).ngClassTouched,u["ɵnov"](n,16).ngClassPristine,u["ɵnov"](n,16).ngClassDirty,u["ɵnov"](n,16).ngClassValid,u["ɵnov"](n,16).ngClassInvalid,u["ɵnov"](n,16).ngClassPending,u["ɵnov"](n,17).validClass,u["ɵnov"](n,17).invalidClass),l(n,25,0,e.lrcGroups)}))}function Cn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Rn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," ( "," ) "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit,n.component.failureDomains[n.context.$implicit].length)}))}function In(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function En(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["None"]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function Nn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," ( "," ) "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit,n.component.failureDomains[n.context.$implicit].length)}))}function yn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,15,{FormControlNames:1}),u["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushLocality"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush Locality"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","crushLocality"],["id","crushLocality"],["name","crushLocality"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,11).onTouched()&&t),t}),null,null)),u["ɵdid"](11,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](13,671744,[[15,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](15,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](16,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,In)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,En)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Nn)),u["ɵdid"](22,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.lrc.crushLocality),l(n,13,0,"crushLocality"),l(n,16,0,"crushLocality"),l(n,18,0,!e.failureDomains),l(n,20,0,e.failureDomainKeys.length>0),l(n,22,0,e.failureDomainKeys)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,15).ngClassUntouched,u["ɵnov"](n,15).ngClassTouched,u["ɵnov"](n,15).ngClassPristine,u["ɵnov"](n,15).ngClassDirty,u["ɵnov"](n,15).ngClassValid,u["ɵnov"](n,15).ngClassInvalid,u["ɵnov"](n,15).ngClassPending,u["ɵnov"](n,16).validClass,u["ɵnov"](n,16).invalidClass)}))}function Vn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function wn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,17,{FormControlNames:1}),u["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","technique"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Technique"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","technique"],["id","technique"],["name","technique"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,11).onTouched()&&t),t}),null,null)),u["ɵdid"](11,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](13,671744,[[17,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](15,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](16,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Vn)),u["ɵdid"](18,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins[e.plugin].technique),l(n,13,0,"technique"),l(n,16,0,"technique"),l(n,18,0,e.techniques)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,15).ngClassUntouched,u["ɵnov"](n,15).ngClassTouched,u["ɵnov"](n,15).ngClassPristine,u["ɵnov"](n,15).ngClassDirty,u["ɵnov"](n,15).ngClassValid,u["ɵnov"](n,15).ngClassInvalid,u["ɵnov"](n,15).ngClassPending,u["ɵnov"](n,16).validClass,u["ɵnov"](n,16).invalidClass)}))}function Tn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function _n(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,19,{FormControlNames:1}),u["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","packetSize"]],null,null,null,null,null)),(l()(),u["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Packetsize"])),(l()(),u["ɵeld"](7,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](8,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](9,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](10,0,null,null,7,"input",[["class","form-control"],["formControlName","packetSize"],["id","packetSize"],["name","packetSize"],["placeholder","Packetsize..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,11)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,11)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,12).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,12).onTouched()&&t),t}),null,null)),u["ɵdid"](11,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](12,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](14,671744,[[19,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](16,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](17,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Tn)),u["ɵdid"](19,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,8,0,e.tooltips.plugins.jerasure.packetSize),l(n,14,0,"packetSize"),l(n,17,0,"packetSize"),l(n,19,0,e.form.showError("packetSize",u["ɵnov"](n.parent,11),"min"))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,10,0,u["ɵnov"](n,16).ngClassUntouched,u["ɵnov"](n,16).ngClassTouched,u["ɵnov"](n,16).ngClassPristine,u["ɵnov"](n,16).ngClassDirty,u["ɵnov"](n,16).ngClassValid,u["ɵnov"](n,16).ngClassInvalid,u["ɵnov"](n,16).ngClassPending,u["ɵnov"](n,17).validClass,u["ɵnov"](n,17).invalidClass)}))}function Sn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function kn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function Dn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function qn(l){return u["ɵvid"](0,[u["ɵpid"](0,El.TitleCasePipe,[]),u["ɵpid"](0,Nl.a,[]),(l()(),u["ɵeld"](2,0,null,null,214,"cd-modal",[],null,null,null,nl.c,nl.b)),u["ɵdid"](3,49152,null,0,yl.a,[],{modalRef:[0,"modalRef"]},null),(l()(),u["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),u["ɵted"](5,null,[""," ",""])),u["ɵppd"](6,1),u["ɵppd"](7,1),(l()(),u["ɵeld"](8,0,null,1,208,null,null,null,null,null,null,null)),(l()(),u["ɵeld"](9,0,null,null,207,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var t=!0;return"submit"===n&&(t=!1!==u["ɵnov"](l,11).onSubmit(e)&&t),"reset"===n&&(t=!1!==u["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==u["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),u["ɵdid"](10,16384,null,0,i.G,[],null,null),u["ɵdid"](11,540672,[["frm",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["ɵprd"](2048,null,i.d,null,[i.l]),u["ɵdid"](13,16384,null,0,i.s,[[4,i.d]],null,null),u["ɵdid"](14,16384,null,0,Vl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),u["ɵeld"](15,0,null,null,193,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),u["ɵeld"](16,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](17,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,1,{FormControlNames:1}),u["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),u["ɵeld"](20,0,null,0,1,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Name"])),(l()(),u["ɵeld"](22,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](23,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,25)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,25).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,25)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,25)._compositionEnd(e.target.value)&&t),t}),null,null)),u["ɵdid"](24,4210688,null,0,Tl.a,[u.ElementRef],{autofocus:[0,"autofocus"]},null),u["ɵdid"](25,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),u["ɵdid"](27,671744,[[1,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](29,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](30,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Hl)),u["ɵdid"](32,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Xl)),u["ɵdid"](34,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Yl)),u["ɵdid"](36,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](37,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](38,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,3,{FormControlNames:1}),u["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),u["ɵeld"](41,0,null,0,4,"label",[["class","cd-col-form-label"],["for","plugin"]],null,null,null,null,null)),(l()(),u["ɵeld"](42,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Plugin"])),(l()(),u["ɵeld"](44,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](45,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](46,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](47,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","plugin"],["id","plugin"],["name","plugin"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,48).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,48).onTouched()&&t),t}),null,null)),u["ɵdid"](48,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](50,671744,[[3,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](52,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](53,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ql)),u["ɵdid"](55,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ln)),u["ɵdid"](57,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,nn)),u["ɵdid"](59,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](60,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](61,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,5,{FormControlNames:1}),u["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),u["ɵeld"](64,0,null,0,4,"label",[["class","cd-col-form-label"],["for","k"]],null,null,null,null,null)),(l()(),u["ɵeld"](65,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Data chunks (k)"])),(l()(),u["ɵeld"](67,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](68,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](69,0,null,0,20,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](70,0,null,null,7,"input",[["class","form-control"],["formControlName","k"],["id","k"],["name","k"],["ng-model","$ctrl.erasureCodeProfile.k"],["placeholder","Data chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,71)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,71).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,71)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,71)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,72).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,72).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,72).onTouched()&&t),t}),null,null)),u["ɵdid"](71,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](72,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](74,671744,[[5,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](76,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](77,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,en)),u["ɵdid"](79,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,un)),u["ɵdid"](81,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,tn)),u["ɵdid"](83,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,an)),u["ɵdid"](85,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,on)),u["ɵdid"](87,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,sn)),u["ɵdid"](89,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](90,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](91,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,7,{FormControlNames:1}),u["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),u["ɵeld"](94,0,null,0,4,"label",[["class","cd-col-form-label"],["for","m"]],null,null,null,null,null)),(l()(),u["ɵeld"](95,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Coding chunks (m)"])),(l()(),u["ɵeld"](97,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](98,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](99,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](100,0,null,null,7,"input",[["class","form-control"],["formControlName","m"],["id","m"],["name","m"],["placeholder","Coding chunks..."],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,101)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,101).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,101)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,101)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,102).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,102).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,102).onTouched()&&t),t}),null,null)),u["ɵdid"](101,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](102,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](104,671744,[[7,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](106,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](107,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,rn)),u["ɵdid"](109,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,dn)),u["ɵdid"](111,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,cn)),u["ɵdid"](113,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,gn)),u["ɵdid"](115,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,bn)),u["ɵdid"](117,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](118,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](119,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,13,{FormControlNames:1}),u["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),u["ɵeld"](122,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushFailureDomain"]],null,null,null,null,null)),(l()(),u["ɵeld"](123,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush failure domain"])),(l()(),u["ɵeld"](125,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](126,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](127,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](128,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","crushFailureDomain"],["id","crushFailureDomain"],["name","crushFailureDomain"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,129).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,129).onTouched()&&t),t}),null,null)),u["ɵdid"](129,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](131,671744,[[13,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](133,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](134,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Cn)),u["ɵdid"](136,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Rn)),u["ɵdid"](138,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,yn)),u["ɵdid"](140,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,2,null,wn)),u["ɵdid"](142,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),u["ɵpad"](143,2),(l()(),u["ɵand"](16777216,null,null,1,null,_n)),u["ɵdid"](145,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](146,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](147,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,21,{FormControlNames:1}),u["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),u["ɵeld"](150,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushRoot"]],null,null,null,null,null)),(l()(),u["ɵeld"](151,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush root"])),(l()(),u["ɵeld"](153,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](154,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](155,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](156,0,null,null,10,"select",[["class","form-control custom-select"],["formControlName","crushRoot"],["id","crushRoot"],["name","crushRoot"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,157).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,157).onTouched()&&t),t}),null,null)),u["ɵdid"](157,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](159,671744,[[21,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](161,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](162,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Sn)),u["ɵdid"](164,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,kn)),u["ɵdid"](166,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](167,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](168,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,23,{FormControlNames:1}),u["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),u["ɵeld"](171,0,null,0,4,"label",[["class","cd-col-form-label"],["for","crushDeviceClass"]],null,null,null,null,null)),(l()(),u["ɵeld"](172,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush device class"])),(l()(),u["ɵeld"](174,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](175,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](176,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](177,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","crushDeviceClass"],["id","crushDeviceClass"],["name","crushDeviceClass"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,178).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,178).onTouched()&&t),t}),null,null)),u["ɵdid"](178,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](180,671744,[[23,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](182,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](183,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](184,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](185,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](186,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Let Ceph decide"])),(l()(),u["ɵand"](16777216,null,null,1,null,Dn)),u["ɵdid"](189,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](190,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](191,null,["Available OSDs: ",""])),(l()(),u["ɵeld"](192,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](193,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,25,{FormControlNames:1}),u["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),u["ɵeld"](196,0,null,0,4,"label",[["class","cd-col-form-label"],["for","directory"]],null,null,null,null,null)),(l()(),u["ɵeld"](197,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Directory"])),(l()(),u["ɵeld"](199,0,null,null,1,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](200,49152,null,0,Sl.a,[],{html:[0,"html"]},null),(l()(),u["ɵeld"](201,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](202,0,null,null,6,"input",[["class","form-control"],["formControlName","directory"],["id","directory"],["name","directory"],["placeholder","Path..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,203)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,203).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,203)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,203)._compositionEnd(e.target.value)&&t),t}),null,null)),u["ɵdid"](203,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),u["ɵdid"](205,671744,[[25,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](207,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](208,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](209,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),u["ɵeld"](210,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.onSubmit()&&u),u}),kl.b,kl.a)),u["ɵdid"](211,114688,null,0,Dl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["ɵted"](212,0,[""," ",""])),u["ɵppd"](213,1),u["ɵppd"](214,1),(l()(),u["ɵeld"](215,0,null,null,1,"cd-back-button",[],null,null,null,ql.b,ql.a)),u["ɵdid"](216,49152,null,0,xl.a,[El.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var e=n.component;l(n,3,0,e.bsModalRef),l(n,11,0,e.form),l(n,14,0,e.form),l(n,17,0),l(n,24,0,""),l(n,27,0,"name"),l(n,30,0,"name"),l(n,32,0,e.form.showError("name",u["ɵnov"](n,11),"required")),l(n,34,0,e.form.showError("name",u["ɵnov"](n,11),"pattern")),l(n,36,0,e.form.showError("name",u["ɵnov"](n,11),"uniqueName")),l(n,38,0),l(n,45,0,e.tooltips.plugins[e.plugin].description),l(n,50,0,"plugin"),l(n,53,0,"plugin"),l(n,55,0,!e.plugins),l(n,57,0,e.plugins),l(n,59,0,e.form.showError("name",u["ɵnov"](n,11),"required")),l(n,61,0),l(n,68,0,e.tooltips.k),l(n,74,0,"k"),l(n,77,0,"k"),l(n,79,0,e.form.showError("k",u["ɵnov"](n,11),"required")),l(n,81,0,e.form.showError("k",u["ɵnov"](n,11),"min")),l(n,83,0,e.form.showError("k",u["ɵnov"](n,11),"max")),l(n,85,0,e.form.showError("k",u["ɵnov"](n,11),"unequal")),l(n,87,0,e.form.showError("k",u["ɵnov"](n,11),"kLowerM")),l(n,89,0,"lrc"===e.plugin),l(n,91,0),l(n,98,0,e.tooltips.m),l(n,104,0,"m"),l(n,107,0,"m"),l(n,109,0,e.form.showError("m",u["ɵnov"](n,11),"required")),l(n,111,0,e.form.showError("m",u["ɵnov"](n,11),"min")),l(n,113,0,e.form.showError("m",u["ɵnov"](n,11),"max")),l(n,115,0,"shec"===e.plugin),l(n,117,0,e.plugin===e.PLUGIN.LRC),l(n,119,0),l(n,126,0,e.tooltips.crushFailureDomain),l(n,131,0,"crushFailureDomain"),l(n,134,0,"crushFailureDomain"),l(n,136,0,!e.failureDomains),l(n,138,0,e.failureDomainKeys),l(n,140,0,e.plugin===e.PLUGIN.LRC);var t=l(n,143,0,e.PLUGIN.JERASURE,e.PLUGIN.ISA).includes(e.plugin);l(n,142,0,t),l(n,145,0,e.plugin===e.PLUGIN.JERASURE),l(n,147,0),l(n,154,0,e.tooltips.crushRoot),l(n,159,0,"crushRoot"),l(n,162,0,"crushRoot"),l(n,164,0,!e.buckets),l(n,166,0,e.buckets),l(n,168,0),l(n,175,0,e.tooltips.crushDeviceClass),l(n,180,0,"crushDeviceClass"),l(n,183,0,"crushDeviceClass"),l(n,185,0,""),l(n,186,0,""),l(n,189,0,e.devices),l(n,193,0),l(n,200,0,e.tooltips.directory),l(n,205,0,"directory"),l(n,208,0,"directory"),l(n,211,0,u["ɵnov"](n,11)),l(n,216,0,e.bsModalRef.hide)}),(function(l,n){var e=n.component,t=u["ɵunv"](n,5,0,l(n,6,0,u["ɵnov"](n,0),e.action)),i=u["ɵunv"](n,5,1,l(n,7,0,u["ɵnov"](n,1),e.resource));l(n,5,0,t,i),l(n,9,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending),l(n,16,0,u["ɵnov"](n,17).hasErrors,u["ɵnov"](n,17).hasSuccess),l(n,23,0,u["ɵnov"](n,29).ngClassUntouched,u["ɵnov"](n,29).ngClassTouched,u["ɵnov"](n,29).ngClassPristine,u["ɵnov"](n,29).ngClassDirty,u["ɵnov"](n,29).ngClassValid,u["ɵnov"](n,29).ngClassInvalid,u["ɵnov"](n,29).ngClassPending,u["ɵnov"](n,30).validClass,u["ɵnov"](n,30).invalidClass),l(n,37,0,u["ɵnov"](n,38).hasErrors,u["ɵnov"](n,38).hasSuccess),l(n,47,0,u["ɵnov"](n,52).ngClassUntouched,u["ɵnov"](n,52).ngClassTouched,u["ɵnov"](n,52).ngClassPristine,u["ɵnov"](n,52).ngClassDirty,u["ɵnov"](n,52).ngClassValid,u["ɵnov"](n,52).ngClassInvalid,u["ɵnov"](n,52).ngClassPending,u["ɵnov"](n,53).validClass,u["ɵnov"](n,53).invalidClass),l(n,60,0,u["ɵnov"](n,61).hasErrors,u["ɵnov"](n,61).hasSuccess),l(n,70,0,u["ɵnov"](n,76).ngClassUntouched,u["ɵnov"](n,76).ngClassTouched,u["ɵnov"](n,76).ngClassPristine,u["ɵnov"](n,76).ngClassDirty,u["ɵnov"](n,76).ngClassValid,u["ɵnov"](n,76).ngClassInvalid,u["ɵnov"](n,76).ngClassPending,u["ɵnov"](n,77).validClass,u["ɵnov"](n,77).invalidClass),l(n,90,0,u["ɵnov"](n,91).hasErrors,u["ɵnov"](n,91).hasSuccess),l(n,100,0,u["ɵnov"](n,106).ngClassUntouched,u["ɵnov"](n,106).ngClassTouched,u["ɵnov"](n,106).ngClassPristine,u["ɵnov"](n,106).ngClassDirty,u["ɵnov"](n,106).ngClassValid,u["ɵnov"](n,106).ngClassInvalid,u["ɵnov"](n,106).ngClassPending,u["ɵnov"](n,107).validClass,u["ɵnov"](n,107).invalidClass),l(n,118,0,u["ɵnov"](n,119).hasErrors,u["ɵnov"](n,119).hasSuccess),l(n,128,0,u["ɵnov"](n,133).ngClassUntouched,u["ɵnov"](n,133).ngClassTouched,u["ɵnov"](n,133).ngClassPristine,u["ɵnov"](n,133).ngClassDirty,u["ɵnov"](n,133).ngClassValid,u["ɵnov"](n,133).ngClassInvalid,u["ɵnov"](n,133).ngClassPending,u["ɵnov"](n,134).validClass,u["ɵnov"](n,134).invalidClass),l(n,146,0,u["ɵnov"](n,147).hasErrors,u["ɵnov"](n,147).hasSuccess),l(n,156,0,u["ɵnov"](n,161).ngClassUntouched,u["ɵnov"](n,161).ngClassTouched,u["ɵnov"](n,161).ngClassPristine,u["ɵnov"](n,161).ngClassDirty,u["ɵnov"](n,161).ngClassValid,u["ɵnov"](n,161).ngClassInvalid,u["ɵnov"](n,161).ngClassPending,u["ɵnov"](n,162).validClass,u["ɵnov"](n,162).invalidClass),l(n,167,0,u["ɵnov"](n,168).hasErrors,u["ɵnov"](n,168).hasSuccess),l(n,177,0,u["ɵnov"](n,182).ngClassUntouched,u["ɵnov"](n,182).ngClassTouched,u["ɵnov"](n,182).ngClassPristine,u["ɵnov"](n,182).ngClassDirty,u["ɵnov"](n,182).ngClassValid,u["ɵnov"](n,182).ngClassInvalid,u["ɵnov"](n,182).ngClassPending,u["ɵnov"](n,183).validClass,u["ɵnov"](n,183).invalidClass),l(n,191,0,e.deviceCount),l(n,192,0,u["ɵnov"](n,193).hasErrors,u["ɵnov"](n,193).hasSuccess),l(n,202,0,u["ɵnov"](n,207).ngClassUntouched,u["ɵnov"](n,207).ngClassTouched,u["ɵnov"](n,207).ngClassPristine,u["ɵnov"](n,207).ngClassDirty,u["ɵnov"](n,207).ngClassValid,u["ɵnov"](n,207).ngClassInvalid,u["ɵnov"](n,207).ngClassPending,u["ɵnov"](n,208).validClass,u["ɵnov"](n,208).invalidClass);var a=u["ɵunv"](n,212,0,l(n,213,0,u["ɵnov"](n,0),e.action)),o=u["ɵunv"](n,212,1,l(n,214,0,u["ɵnov"](n,1),e.resource));l(n,212,0,a,o)}))}function xn(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-erasure-code-profile-form-modal",[],null,null,null,qn,Zl)),u["ɵdid"](1,114688,null,0,_,[V.a,Pl.a,N.a,c,s.a,t.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Pn=u["ɵccf"]("cd-erasure-code-profile-form-modal",_,xn,{},{submitAction:"submitAction"},[]),Fn=e("w9WL"),An=e("yT6U"),Bn=e("4DD9"),On=e("iExv"),zn=e("85J/"),Ln=e("+0ag"),jn=e("IzCI"),Un=e("Dwqy"),Mn=e("uYzU"),Gn=e("FFMq"),$n=e("E2fk"),Kn=e("a0VL"),Jn=e("nSDx"),Wn=e("SB+Q"),Zn=e("TYzs"),Hn=e("BQkM"),Xn=e("dEH0"),Yn=e("G1/K"),Qn=e("TJUb"),le=e("efK2"),ne=e("CNMR"),ee=e("KOzp"),ue=e("2uy1"),te=e("z/SZ"),ie=e("38Bd"),ae=e("978R"),oe=e("FE24"),se=e("Avrn"),re=e("iInd"),de=e("2ZVE"),ce=e("ienR"),me=e("gk6K"),fe=e("9Xeq"),ge=e("hrfs"),pe=e("yGOH"),he=e("bxSN"),ve=e("WF9J"),be=e("V/fk"),Ce=e("ChqD"),Re=e("PCNd"),Ie=e("kJI8"),Ee=e("kccj"),Ne=e("yYhs"),ye=e("k/xb"),Ve=e("C6Ij"),we=e("AWcq"),Te=e("xSw7"),_e=e("GgAd"),Se=e("a278"),ke=e("insk"),De=e("mSOc"),qe=e("cUpR"),xe=e("20UP"),Pe=e("pKUh"),Fe=e("25BL"),Ae=e("NUGo"),Be=e("S7zO"),Oe=e("EFGL"),ze=e("aAWM"),Le=e("o8EM"),je=e("sLuX"),Ue=e("FSuO");e("jKX/");class Me{constructor(l,n){this.i18n=l,this.poolService=n,this.cacheTierColumns=[],this.cacheTierColumns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:3},{prop:"cache_mode",name:this.i18n("Cache Mode"),flexGrow:2},{prop:"cache_min_evict_age",name:this.i18n("Min Evict Age"),flexGrow:2},{prop:"cache_min_flush_age",name:this.i18n("Min Flush Age"),flexGrow:2},{prop:"target_max_bytes",name:this.i18n("Target Max Bytes"),flexGrow:2},{prop:"target_max_objects",name:this.i18n("Target Max Objects"),flexGrow:2}]}ngOnChanges(){this.selection&&this.poolService.getConfiguration(this.selection.pool_name).subscribe(l=>{this.selectedPoolConfiguration=l})}filterNonPoolData(l){return a.omit(l,["cdExecuting","cdIsBinary"])}}var Ge=u["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function $e(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","-xyV8KCiz"]],null,null,null,Se.b,Se.a)),u["ɵdid"](3,638976,null,0,ke.a,[De.a,qe.b,xe.a,Ln.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){var e=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"ceph-pool-detail?var-pool_name="+e.selection.pool_name,"one","-xyV8KCiz")}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function Ke(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,Oe.b,Oe.a)),u["ɵdid"](3,638976,null,0,ze.a,[E.a,Le.a,s.a],{data:[0,"data"]},null)],(function(l,n){var e=n.component;l(n,1,0,"Configuration"),l(n,3,0,e.selectedPoolConfiguration)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function Je(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Cache Tiers Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,Fe.b,Fe.a)),u["ɵdid"](3,2867200,null,0,P.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},null)],(function(l,n){var e=n.component;l(n,1,0,"Cache Tiers Details"),l(n,3,0,e.cacheTiers,e.cacheTierColumns,"flex",!1)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function We(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,11,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,Pe.b,Pe.a)),u["ɵdid"](1,180224,[[1,4],["tabsetChild",4]],0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](3,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,je.b,je.a)),u["ɵdid"](5,638976,null,0,Ue.a,[Kn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["ɵand"](16777216,null,0,1,null,$e)),u["ɵdid"](7,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,0,1,null,Ke)),u["ɵdid"](9,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,0,1,null,Je)),u["ɵdid"](11,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,5,0,e.filterNonPoolData(e.selection),!1,!0),l(n,7,0,e.permissions.grafana.read),l(n,9,0,"replicated"===e.selection.type),l(n,11,0,(null==e.selection.tiers?null:e.selection.tiers.length)>0)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).clazz),l(n,2,0,u["ɵnov"](n,3).id,u["ɵnov"](n,3).active,u["ɵnov"](n,3).addClass,u["ɵnov"](n,3).role,u["ɵnov"](n,3).ariaLabelledby)}))}function Ze(l){return u["ɵvid"](0,[u["ɵqud"](671088640,1,{tabsetChild:0}),(l()(),u["ɵand"](16777216,null,null,1,null,We)),u["ɵdid"](2,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,2,0,n.component.selection)}),null)}var He=e("ufoC"),Xe=u["ɵcrt"]({encapsulation:0,styles:[[".pg-clean{color:#0b0}  .pg-working{color:#2b99a8}  .pg-warning{color:#ffc200}  .pg-unknown{color:red}"]],data:{}});function Ye(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Ve.b,Ve.a)),u["ɵdid"](1,114688,null,0,we.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],(function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)}),null)}function Qe(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Te.b,Te.a)),u["ɵdid"](1,573440,null,0,_e.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],(function(l,n){l(n,1,0,n.parent.context.row.stats.bytes_used.latest+n.parent.context.row.stats.max_avail.latest,n.parent.context.row.stats.bytes_used.latest)}),null)}function lu(l){return u["ɵvid"](0,[(l()(),u["ɵand"](16777216,null,null,1,null,Qe)),u["ɵdid"](1,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,null==n.context.row.stats?null:null==n.context.row.stats.max_avail?null:n.context.row.stats.max_avail.latest)}),null)}function nu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](1,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","z99hzWtmk"]],null,null,null,Se.b,Se.a)),u["ɵdid"](3,638976,null,0,ke.a,[De.a,qe.b,xe.a,Ln.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"ceph-pools-overview?","two","z99hzWtmk")}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).id,u["ɵnov"](n,1).active,u["ɵnov"](n,1).addClass,u["ɵnov"](n,1).role,u["ɵnov"](n,1).ariaLabelledby)}))}function eu(l){return u["ɵvid"](0,[u["ɵqud"](402653184,1,{table:0}),u["ɵqud"](402653184,2,{poolUsageTpl:0}),u["ɵqud"](671088640,3,{poolConfigurationSourceTpl:0}),(l()(),u["ɵeld"](3,0,null,null,14,"tabset",[],[[2,"tab-container",null]],null,null,Pe.b,Pe.a)),u["ɵdid"](4,180224,null,0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](5,0,null,0,10,"tab",[["heading","Pools List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](6,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ye)),u["ɵdid"](8,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](9,0,null,null,5,"cd-table",[["id","pool-list"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(l,n,e){var u=!0,t=l.component;return"setExpandedRow"===n&&(u=!1!==t.setExpandedRow(e)&&u),"updateSelection"===n&&(u=!1!==t.updateSelection(e)&&u),u}),Fe.b,Fe.a)),u["ɵdid"](10,2867200,[[1,4],["table",4]],0,P.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),u["ɵeld"](11,0,null,1,1,"cd-table-actions",[["class","table-actions"],["id","pool-list-actions"]],null,null,null,Ae.b,Ae.a)),u["ɵdid"](12,114688,null,0,Be.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),u["ɵeld"](13,0,null,3,1,"cd-pool-details",[["cdTableDetail",""],["id","pool-list-details"]],null,null,null,Ze,Ge)),u["ɵdid"](14,573440,null,0,Me,[s.a,m.a],{selection:[0,"selection"],permissions:[1,"permissions"],cacheTiers:[2,"cacheTiers"]},null),(l()(),u["ɵand"](0,[[2,2],["poolUsageTpl",2]],null,0,null,lu)),(l()(),u["ɵand"](16777216,null,0,1,null,nu)),u["ɵdid"](17,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,6,0,"Pools List"),l(n,8,0,e.viewCacheStatusList),l(n,10,0,e.pools,e.columns,!0,"single"),l(n,12,0,e.permissions.pool,e.selection,e.tableActions),l(n,14,0,e.expandedRow,e.permissions,e.cacheTiers),l(n,17,0,e.permissions.grafana.read)}),(function(l,n){l(n,3,0,u["ɵnov"](n,4).clazz),l(n,5,0,u["ɵnov"](n,6).id,u["ɵnov"](n,6).active,u["ɵnov"](n,6).addClass,u["ɵnov"](n,6).role,u["ɵnov"](n,6).ariaLabelledby)}))}function uu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"cd-pool-list",[],null,null,null,eu,Xe)),u["ɵprd"](131584,null,z.a,z.a,[He.a,De.a]),u["ɵprd"](256,null,L.a,M,[]),u["ɵdid"](3,114688,null,0,G,[m.a,N.a,I.a,z.a,Pl.b,s.a,j.a,O.a,L.a,q.a,t.b],null,null)],(function(l,n){l(n,3,0)}),null)}var tu=u["ɵccf"]("cd-pool-list",G,uu,{},{},[]),iu=e("QC43"),au=e("XFyV"),ou=e("EmSq"),su=e("pYKc"),ru=e("ppaS"),du=e("BH9v"),cu=e("rFfW"),mu=u["ɵcrt"]({encapsulation:0,styles:[[".crush-rule-steps[_ngcontent-%COMP%]{margin-top:10px}"]],data:{}});function fu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,iu.b,iu.a)),u["ɵdid"](1,49152,null,0,au.a,[],null,null),(l()(),u["ɵted"](-1,0,["Loading..."]))],null,null)}function gu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function pu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The chosen Ceph pool name is already in use."]))],null,null)}function hu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["It's not possible to create an RBD pool with '/' in the name. Please change the name or remove 'rbd' from the applications list."]))],null,null)}function vu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Pool name can only contain letters, numbers, '.', '-', '_' or '/'."]))],null,null)}function bu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Cu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Ru(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Iu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Eu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["At least one placement group is needed!"]))],null,null)}function Nu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Your cluster can't handle this many PGs. Please recalculate the PG amount needed."]))],null,null)}function yu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The current PGs settings were calculated for you, you should make sure the values suit your needs before submit."]))],null,null)}function Vu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,27,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,11,{FormControlNames:1}),u["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","pgNum"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Placement groups"])),(l()(),u["ɵeld"](6,0,null,0,21,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,9,"input",[["class","form-control"],["formControlName","pgNum"],["id","pgNum"],["min","1"],["name","pgNum"],["required",""],["type","number"]],[[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"focus"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0,i=l.component;return"input"===n&&(t=!1!==u["ɵnov"](l,8)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,8)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,9).onTouched()&&t),"focus"===n&&(t=0!=(i.externalPgChange=!1)&&t),"blur"===n&&(t=!1!==i.alignPgs()&&t),t}),null,null)),u["ɵdid"](8,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](9,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵdid"](10,16384,null,0,i.z,[],{required:[0,"required"]},null),u["ɵprd"](1024,null,i.o,(function(l){return[l]}),[i.z]),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](13,671744,[[11,4]],0,i.j,[[3,i.d],[6,i.o],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](15,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](16,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Iu)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Eu)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Nu)),u["ɵdid"](22,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](23,0,null,null,2,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵeld"](24,0,null,null,1,"a",[["href","http://ceph.com/pgcalc"],["target","_blank"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Calculation help"])),(l()(),u["ɵand"](16777216,null,null,1,null,yu)),u["ɵdid"](27,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,10,0,""),l(n,13,0,"pgNum"),l(n,16,0,"pgNum"),l(n,18,0,e.form.showError("pgNum",u["ɵnov"](n.parent.parent,2),"required")),l(n,20,0,e.form.showError("pgNum",u["ɵnov"](n.parent.parent,2),"min")),l(n,22,0,e.form.showError("pgNum",u["ɵnov"](n.parent.parent,2),"34")),l(n,27,0,e.externalPgChange)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,7,0,u["ɵnov"](n,10).required?"":null,u["ɵnov"](n,15).ngClassUntouched,u["ɵnov"](n,15).ngClassTouched,u["ɵnov"](n,15).ngClassPristine,u["ɵnov"](n,15).ngClassDirty,u["ɵnov"](n,15).ngClassValid,u["ɵnov"](n,15).ngClassInvalid,u["ɵnov"](n,15).ngClassPending,u["ɵnov"](n,16).validClass,u["ɵnov"](n,16).invalidClass)}))}function wu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,5,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,4,"ul",[["class","list-inline"]],null,null,null,null,null)),(l()(),u["ɵeld"](2,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](3,null,["Minimum: ",""])),(l()(),u["ɵeld"](4,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](5,null,["Maximum: ",""]))],null,(function(l,n){var e=n.component;l(n,3,0,e.getMinSize()),l(n,5,0,e.getMaxSize())}))}function Tu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](1,null,["The size specified is out of range. A value from "," to "," is valid."]))],null,(function(l,n){var e=n.component;l(n,1,0,e.getMinSize(),e.getMaxSize())}))}function _u(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,13,{FormControlNames:1}),u["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","size"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Replicated size"])),(l()(),u["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","size"],["id","size"],["name","size"],["type","number"]],[[8,"max",0],[8,"min",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,8)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,8)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,9).onTouched()&&t),t}),null,null)),u["ɵdid"](8,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](9,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](11,671744,[[13,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](13,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,wu)),u["ɵdid"](16,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Tu)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,11,0,"size"),l(n,14,0,"size"),l(n,16,0,e.form.showError("size",u["ɵnov"](n.parent.parent,2))),l(n,18,0,e.form.showError("size",u["ɵnov"](n.parent.parent,2)))}),(function(l,n){var e=n.component;l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,7,1,[e.getMaxSize(),e.getMinSize(),u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass])}))}function Su(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,15,{FormControlNames:1}),u["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Flags"])),(l()(),u["ɵeld"](6,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","ecOverwrites"],["id","ec-overwrites"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.checked)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,9).onTouched()&&t),t}),null,null)),u["ɵdid"](9,16384,null,0,i.c,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.c]),u["ɵdid"](11,671744,[[15,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](13,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](15,0,null,null,1,"label",[["class","custom-control-label"],["for","ec-overwrites"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["EC Overwrites"]))],(function(l,n){l(n,1,0),l(n,11,0,"ecOverwrites"),l(n,14,0,"ecOverwrites")}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass)}))}function ku(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,22,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](2,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,9,{FormControlNames:1}),u["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),u["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"],["for","pgAutoscaleMode"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["PG Autoscale"])),(l()(),u["ɵeld"](7,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","pgAutoscaleMode"],["id","pgAutoscaleMode"],["name","pgAutoscaleMode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,9).onTouched()&&t),t}),null,null)),u["ɵdid"](9,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](11,671744,[[9,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](13,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ru)),u["ɵdid"](16,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Vu)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,_u)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Su)),u["ɵdid"](22,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,2,0),l(n,11,0,"pgAutoscaleMode"),l(n,14,0,"pgAutoscaleMode"),l(n,16,0,e.pgAutoscaleModes),l(n,18,0,"on"!==e.form.getValue("pgAutoscaleMode")),l(n,20,0,e.isReplicated),l(n,22,0,e.info.is_all_bluestore&&e.isErasure)}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).hasErrors,u["ɵnov"](n,2).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass)}))}function Du(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function qu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- No erasure code profile available --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function xu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- Select an erasure code profile --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Pu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.name)}))}function Fu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.addErasureCodeProfile()&&u),u}),null,null)),(l()(),u["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](3,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](4,1)],(function(l,n){var e=l(n,4,0,n.component.icons.add);l(n,3,0,e)}),null)}function Au(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","This profile can't be deleted as it is in use."],["triggers",""],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.deleteErasureCodeProfile()&&u),u}),null,null)),u["ɵdid"](1,212992,[[4,4],["ecpDeletionBtn",4]],0,ae.c,[u.ViewContainerRef,te.a,ae.a,u.ElementRef,u.Renderer2,ue.a],{tooltip:[0,"tooltip"],triggers:[1,"triggers"]},null),(l()(),u["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](4,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](5,1),(l()(),u["ɵand"](0,null,null,0))],(function(l,n){var e=n.component;l(n,1,0,"This profile can't be deleted as it is in use.","");var u=l(n,5,0,e.icons.trash);l(n,4,0,u)}),null)}function Bu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Profile is not in use."]))],null,null)}function Ou(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.context.$implicit)}))}function zu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,2,"ul",[],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,Ou)),u["ɵdid"](2,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,2,0,n.component.ecpUsage)}),null)}function Lu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,11,"span",[["class","form-text text-muted"],["id","ecp-info-block"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,10,"tabset",[],[[2,"tab-container",null]],null,null,Pe.b,Pe.a)),u["ɵdid"](2,180224,[[3,4],["ecpInfoTabs",4]],0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](3,0,null,0,3,"tab",[["class","ecp-info"],["heading","Profile"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](4,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](5,0,null,null,1,"cd-table-key-value",[],null,null,null,je.b,je.a)),u["ɵdid"](6,638976,null,0,Ue.a,[Kn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["ɵeld"](7,0,null,0,4,"tab",[["class","used-by-pools"],["heading","Used by pools"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](8,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵand"](0,[["ecpIsNotUsed",2]],null,0,null,Bu)),(l()(),u["ɵand"](16777216,null,null,1,null,zu)),u["ɵdid"](11,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(l,n){var e=n.component;l(n,4,0,"Profile"),l(n,6,0,e.form.getValue("erasureProfile"),!1,!0),l(n,8,0,"Used by pools"),l(n,11,0,e.ecpUsage,u["ɵnov"](n,9))}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).clazz),l(n,3,0,u["ɵnov"](n,4).id,u["ɵnov"](n,4).active,u["ɵnov"](n,4).addClass,u["ɵnov"](n,4).role,u["ɵnov"](n,4).ariaLabelledby),l(n,7,0,u["ɵnov"](n,8).id,u["ɵnov"](n,8).active,u["ɵnov"](n,8).addClass,u["ɵnov"](n,8).role,u["ɵnov"](n,8).ariaLabelledby)}))}function ju(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,37,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,19,{FormControlNames:1}),u["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","erasureProfile"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Erasure code profile"])),(l()(),u["ɵeld"](6,0,null,0,31,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,28,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","erasureProfile"],["id","erasureProfile"],["name","erasureProfile"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,9).onTouched()&&t),t}),null,null)),u["ɵdid"](9,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](11,671744,[[19,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](13,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Du)),u["ɵdid"](16,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,qu)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,xu)),u["ɵdid"](20,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Pu)),u["ɵdid"](22,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](23,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),u["ɵeld"](24,0,null,null,7,"button",[["class","btn btn-light"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0,t=l.component;return"click"===n&&(u=0!=(t.data.erasureInfo=!t.data.erasureInfo)&&u),u}),null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](26,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["ɵpod"](27,{active:0}),(l()(),u["ɵeld"](28,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](30,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](31,1),(l()(),u["ɵand"](16777216,null,null,1,null,Fu)),u["ɵdid"](33,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Au)),u["ɵdid"](35,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Lu)),u["ɵdid"](37,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,11,0,"erasureProfile"),l(n,14,0,"erasureProfile"),l(n,16,0,!e.ecProfiles),l(n,18,0,e.ecProfiles&&0===e.ecProfiles.length),l(n,20,0,e.ecProfiles&&e.ecProfiles.length>0),l(n,22,0,e.ecProfiles);var u=l(n,27,0,e.data.erasureInfo);l(n,26,0,"btn btn-light",u);var t=l(n,31,0,e.icons.questionCircle);l(n,30,0,t),l(n,33,0,!e.editing),l(n,35,0,!e.editing),l(n,37,0,e.data.erasureInfo&&e.form.getValue("erasureProfile"))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass)}))}function Uu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,21,{FormControlNames:1}),u["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","crushRule"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush ruleset"])),(l()(),u["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["A new crush ruleset will be implicitly created."]))],(function(l,n){l(n,1,0)}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess)}))}function Mu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["There are no rules."])),(l()(),u["ɵted"](-1,null,["  "]))],null,null)}function Gu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit.rule_name)}))}function $u(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.addCrushRule()&&u),u}),null,null)),(l()(),u["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](3,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](4,1)],(function(l,n){var e=l(n,4,0,n.component.icons.add);l(n,3,0,e)}),null)}function Ku(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","This rule can't be deleted as it is in use."],["triggers",""],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.deleteCrushRule()&&u),u}),null,null)),u["ɵdid"](1,212992,[[2,4],["crushDeletionBtn",4]],0,ae.c,[u.ViewContainerRef,te.a,ae.a,u.ElementRef,u.Renderer2,ue.a],{tooltip:[0,"tooltip"],triggers:[1,"triggers"]},null),(l()(),u["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](4,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](5,1),(l()(),u["ɵand"](0,null,null,0))],(function(l,n){var e=n.component;l(n,1,0,"This rule can't be deleted as it is in use.","");var u=l(n,5,0,e.icons.trash);l(n,4,0,u)}),null)}function Ju(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.describeCrushStep(n.context.$implicit))}))}function Wu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Rule is not in use."]))],null,null)}function Zu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.context.$implicit)}))}function Hu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,2,"ul",[],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,Zu)),u["ɵdid"](2,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,2,0,n.component.crushUsage)}),null)}function Xu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,16,"span",[["class","form-text text-muted"],["id","crush-info-block"]],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,15,"tabset",[],[[2,"tab-container",null]],null,null,Pe.b,Pe.a)),u["ɵdid"](2,180224,[[1,4],["crushInfoTabs",4]],0,de.e,[de.f,u.Renderer2,u.ElementRef],null,null),(l()(),u["ɵeld"](3,0,null,0,3,"tab",[["class","crush-rule-info"],["heading","Crush rule"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](4,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](5,0,null,null,1,"cd-table-key-value",[],null,null,null,je.b,je.a)),u["ɵdid"](6,638976,null,0,Ue.a,[Kn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["ɵeld"](7,0,null,0,4,"tab",[["class","crush-rule-steps"],["heading","Crush steps"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](8,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵeld"](9,0,null,null,2,"ol",[],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,Ju)),u["ɵdid"](11,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](12,0,null,0,4,"tab",[["class","used-by-pools"],["heading","Used by pools"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),u["ɵdid"](13,212992,null,0,de.b,[de.e,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["ɵand"](0,[["ruleIsNotUsed",2]],null,0,null,Wu)),(l()(),u["ɵand"](16777216,null,null,1,null,Hu)),u["ɵdid"](16,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(l,n){var e=n.component;l(n,4,0,"Crush rule"),l(n,6,0,e.form.getValue("crushRule"),!1,!0),l(n,8,0,"Crush steps"),l(n,11,0,e.form.get("crushRule").value.steps),l(n,13,0,"Used by pools"),l(n,16,0,e.crushUsage,u["ɵnov"](n,14))}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).clazz),l(n,3,0,u["ɵnov"](n,4).id,u["ɵnov"](n,4).active,u["ɵnov"](n,4).addClass,u["ɵnov"](n,4).role,u["ɵnov"](n,4).ariaLabelledby),l(n,7,0,u["ɵnov"](n,8).id,u["ɵnov"](n,8).active,u["ɵnov"](n,8).addClass,u["ɵnov"](n,8).role,u["ɵnov"](n,8).ariaLabelledby),l(n,12,0,u["ɵnov"](n,13).id,u["ɵnov"](n,13).active,u["ɵnov"](n,13).addClass,u["ɵnov"](n,13).role,u["ɵnov"](n,13).ariaLabelledby)}))}function Yu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["This field is required!"]))],null,null)}function Qu(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The rule can't be used in the current cluster as it has too few OSDs to meet the minimum required OSD by this rule."]))],null,null)}function lt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,33,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,26,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["ɵeld"](2,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","crushRule"],["id","crushRule"],["name","crushSet"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,3).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,3).onTouched()&&t),t}),null,null)),u["ɵdid"](3,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](5,671744,[[23,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](7,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](8,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](9,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](10,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](11,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- Select a crush rule --"])),(l()(),u["ɵand"](16777216,null,null,1,null,Gu)),u["ɵdid"](14,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](15,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),u["ɵeld"](16,0,null,null,7,"button",[["class","btn btn-light"],["id","crush-info-button"],["type","button"]],null,[[null,"click"]],(function(l,n,e){var u=!0,t=l.component;return"click"===n&&(u=0!=(t.data.crushInfo=!t.data.crushInfo)&&u),u}),null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](18,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["ɵpod"](19,{active:0}),(l()(),u["ɵeld"](20,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),u["ɵprd"](512,null,El["ɵNgClassImpl"],El["ɵNgClassR2Impl"],[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2]),u["ɵdid"](22,278528,null,0,El.NgClass,[El["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),u["ɵpad"](23,1),(l()(),u["ɵand"](16777216,null,null,1,null,$u)),u["ɵdid"](25,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Ku)),u["ɵdid"](27,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Xu)),u["ɵdid"](29,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Yu)),u["ɵdid"](31,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Qu)),u["ɵdid"](33,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,5,0,"crushRule"),l(n,8,0,"crushRule"),l(n,10,0,null),l(n,11,0,null),l(n,14,0,e.current.rules);var t=l(n,19,0,e.data.crushInfo);l(n,18,0,"btn btn-light",t);var i=l(n,23,0,e.icons.questionCircle);l(n,22,0,i),l(n,25,0,e.isReplicated&&!e.editing),l(n,27,0,e.isReplicated&&!e.editing),l(n,29,0,e.data.crushInfo&&e.form.getValue("crushRule")),l(n,31,0,e.form.showError("crushRule",u["ɵnov"](n.parent.parent.parent,2),"required")),l(n,33,0,e.form.showError("crushRule",u["ɵnov"](n.parent.parent.parent,2),"tooFewOsds"))}),(function(l,n){l(n,2,0,u["ɵnov"](n,7).ngClassUntouched,u["ɵnov"](n,7).ngClassTouched,u["ɵnov"](n,7).ngClassPristine,u["ɵnov"](n,7).ngClassDirty,u["ɵnov"](n,7).ngClassValid,u["ɵnov"](n,7).ngClassInvalid,u["ɵnov"](n,7).ngClassPending,u["ɵnov"](n,8).validClass,u["ɵnov"](n,8).invalidClass)}))}function nt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,9,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](1,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,23,{FormControlNames:1}),u["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),u["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","crushRule"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Crush ruleset"])),(l()(),u["ɵeld"](6,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵand"](0,[["noRules",2]],null,0,null,Mu)),(l()(),u["ɵand"](16777216,null,null,1,null,lt)),u["ɵdid"](9,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(l,n){var e=n.component;l(n,1,0),l(n,9,0,e.current.rules.length>0,u["ɵnov"](n,7))}),(function(l,n){l(n,0,0,u["ɵnov"](n,1).hasErrors,u["ɵnov"](n,1).hasSuccess)}))}function et(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["CRUSH"])),(l()(),u["ɵand"](16777216,null,null,1,null,ju)),u["ɵdid"](4,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Uu)),u["ɵdid"](6,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,nt)),u["ɵdid"](8,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,4,0,e.isErasure),l(n,6,0,e.isErasure&&!e.editing),l(n,8,0,e.isReplicated||e.editing)}),null)}function ut(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function tt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function it(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- No erasure compression algorithm available --"]))],(function(l,n){l(n,1,0,""),l(n,2,0,"")}),null)}function at(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["ɵdid"](1,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{value:[0,"value"]},null),u["ɵdid"](2,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function ot(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be greater than 0"]))],null,null)}function st(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be less than the maximum blob size"]))],null,null)}function rt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be greater than 0"]))],null,null)}function dt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be greater than the minimum blob size"]))],null,null)}function ct(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Value should be between 0.0 and 1.0"]))],null,null)}function mt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,75,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](1,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](2,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,27,{FormControlNames:1}),u["ɵqud"](603979776,28,{messagesBlock:0}),(l()(),u["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"],["for","algorithm"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Algorithm"])),(l()(),u["ɵeld"](7,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](8,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","algorithm"],["id","algorithm"],["name","algorithm"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,9).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,9).onTouched()&&t),t}),null,null)),u["ɵdid"](9,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](11,671744,[[27,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](13,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](14,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,tt)),u["ɵdid"](16,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,it)),u["ɵdid"](18,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,at)),u["ɵdid"](20,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵeld"](21,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](22,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,29,{FormControlNames:1}),u["ɵqud"](603979776,30,{messagesBlock:0}),(l()(),u["ɵeld"](25,0,null,0,1,"label",[["class","cd-col-form-label"],["for","minBlobSize"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Minimum blob size"])),(l()(),u["ɵeld"](27,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](28,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","minBlobSize"],["id","minBlobSize"],["min","0"],["name","minBlobSize"],["placeholder","e.g., 128KiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,29)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,29).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,29)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,29)._compositionEnd(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,33).onBlur(e.target.value)&&t),t}),null,null)),u["ɵdid"](29,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),u["ɵdid"](31,671744,[[29,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](33,81920,null,0,ou.a,[u.ElementRef,i.q,R.a,E.a],{defaultUnit:[0,"defaultUnit"]},null),u["ɵdid"](34,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](35,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ot)),u["ɵdid"](37,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,st)),u["ɵdid"](39,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](40,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](41,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,31,{FormControlNames:1}),u["ɵqud"](603979776,32,{messagesBlock:0}),(l()(),u["ɵeld"](44,0,null,0,1,"label",[["class","cd-col-form-label"],["for","maxBlobSize"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Maximum blob size"])),(l()(),u["ɵeld"](46,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](47,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","maxBlobSize"],["id","maxBlobSize"],["min","0"],["placeholder","e.g., 512KiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,48)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,48).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,48)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,48)._compositionEnd(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,52).onBlur(e.target.value)&&t),t}),null,null)),u["ɵdid"](48,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),u["ɵdid"](50,671744,[[31,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](52,81920,null,0,ou.a,[u.ElementRef,i.q,R.a,E.a],{defaultUnit:[0,"defaultUnit"]},null),u["ɵdid"](53,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](54,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,rt)),u["ɵdid"](56,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,dt)),u["ɵdid"](58,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](59,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](60,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,33,{FormControlNames:1}),u["ɵqud"](603979776,34,{messagesBlock:0}),(l()(),u["ɵeld"](63,0,null,0,1,"label",[["class","cd-col-form-label"],["for","ratio"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Ratio"])),(l()(),u["ɵeld"](65,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](66,0,null,null,7,"input",[["class","form-control"],["formControlName","ratio"],["id","ratio"],["max","1"],["min","0"],["name","ratio"],["placeholder","Compression ratio"],["step","0.1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,67)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,67).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,67)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,67)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,68).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,68).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,68).onTouched()&&t),t}),null,null)),u["ɵdid"](67,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](68,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](70,671744,[[33,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](72,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](73,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ct)),u["ɵdid"](75,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,2,0),l(n,11,0,"algorithm"),l(n,14,0,"algorithm"),l(n,16,0,!e.info.compression_algorithms),l(n,18,0,e.info.compression_algorithms&&0===e.info.compression_algorithms.length),l(n,20,0,e.info.compression_algorithms),l(n,22,0),l(n,31,0,"minBlobSize"),l(n,33,0,"KiB"),l(n,35,0,"minBlobSize"),l(n,37,0,e.form.showError("minBlobSize",u["ɵnov"](n.parent.parent,2),"min")),l(n,39,0,e.form.showError("minBlobSize",u["ɵnov"](n.parent.parent,2),"maximum")),l(n,41,0),l(n,50,0,"maxBlobSize"),l(n,52,0,"KiB"),l(n,54,0,"maxBlobSize"),l(n,56,0,e.form.showError("maxBlobSize",u["ɵnov"](n.parent.parent,2),"min")),l(n,58,0,e.form.showError("maxBlobSize",u["ɵnov"](n.parent.parent,2),"minimum")),l(n,60,0),l(n,70,0,"ratio"),l(n,73,0,"ratio"),l(n,75,0,e.form.showError("ratio",u["ɵnov"](n.parent.parent,2),"min")||e.form.showError("ratio",u["ɵnov"](n.parent.parent,2),"max"))}),(function(l,n){l(n,1,0,u["ɵnov"](n,2).hasErrors,u["ɵnov"](n,2).hasSuccess),l(n,8,0,u["ɵnov"](n,13).ngClassUntouched,u["ɵnov"](n,13).ngClassTouched,u["ɵnov"](n,13).ngClassPristine,u["ɵnov"](n,13).ngClassDirty,u["ɵnov"](n,13).ngClassValid,u["ɵnov"](n,13).ngClassInvalid,u["ɵnov"](n,13).ngClassPending,u["ɵnov"](n,14).validClass,u["ɵnov"](n,14).invalidClass),l(n,21,0,u["ɵnov"](n,22).hasErrors,u["ɵnov"](n,22).hasSuccess),l(n,28,0,u["ɵnov"](n,34).ngClassUntouched,u["ɵnov"](n,34).ngClassTouched,u["ɵnov"](n,34).ngClassPristine,u["ɵnov"](n,34).ngClassDirty,u["ɵnov"](n,34).ngClassValid,u["ɵnov"](n,34).ngClassInvalid,u["ɵnov"](n,34).ngClassPending,u["ɵnov"](n,35).validClass,u["ɵnov"](n,35).invalidClass),l(n,40,0,u["ɵnov"](n,41).hasErrors,u["ɵnov"](n,41).hasSuccess),l(n,47,0,u["ɵnov"](n,53).ngClassUntouched,u["ɵnov"](n,53).ngClassTouched,u["ɵnov"](n,53).ngClassPristine,u["ɵnov"](n,53).ngClassDirty,u["ɵnov"](n,53).ngClassValid,u["ɵnov"](n,53).ngClassInvalid,u["ɵnov"](n,53).ngClassPending,u["ɵnov"](n,54).validClass,u["ɵnov"](n,54).invalidClass),l(n,59,0,u["ɵnov"](n,60).hasErrors,u["ɵnov"](n,60).hasSuccess),l(n,66,0,u["ɵnov"](n,72).ngClassUntouched,u["ɵnov"](n,72).ngClassTouched,u["ɵnov"](n,72).ngClassPristine,u["ɵnov"](n,72).ngClassDirty,u["ɵnov"](n,72).ngClassValid,u["ɵnov"](n,72).ngClassInvalid,u["ɵnov"](n,72).ngClassPending,u["ɵnov"](n,73).validClass,u["ɵnov"](n,73).invalidClass)}))}function ft(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,23,"div",[["formGroupName","compression"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),u["ɵdid"](1,212992,null,0,i.m,[[3,i.d],[8,null],[8,null]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.d,null,[i.m]),u["ɵdid"](3,16384,null,0,i.s,[[4,i.d]],null,null),(l()(),u["ɵeld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Compression"])),(l()(),u["ɵeld"](6,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](7,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,25,{FormControlNames:1}),u["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),u["ɵeld"](10,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mode"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Mode"])),(l()(),u["ɵeld"](12,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](13,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","mode"],["id","mode"],["name","mode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,14).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,14).onTouched()&&t),t}),null,null)),u["ɵdid"](14,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](16,671744,[[25,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](18,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](19,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ut)),u["ɵdid"](21,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,mt)),u["ɵdid"](23,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,1,0,"compression"),l(n,7,0),l(n,16,0,"mode"),l(n,19,0,"mode"),l(n,21,0,e.info.compression_modes),l(n,23,0,e.hasCompressionEnabled())}),(function(l,n){l(n,0,0,u["ɵnov"](n,3).ngClassUntouched,u["ɵnov"](n,3).ngClassTouched,u["ɵnov"](n,3).ngClassPristine,u["ɵnov"](n,3).ngClassDirty,u["ɵnov"](n,3).ngClassValid,u["ɵnov"](n,3).ngClassInvalid,u["ɵnov"](n,3).ngClassPending),l(n,6,0,u["ɵnov"](n,7).hasErrors,u["ɵnov"](n,7).hasSuccess),l(n,13,0,u["ɵnov"](n,18).ngClassUntouched,u["ɵnov"](n,18).ngClassTouched,u["ɵnov"](n,18).ngClassPristine,u["ɵnov"](n,18).ngClassDirty,u["ɵnov"](n,18).ngClassValid,u["ɵnov"](n,18).ngClassInvalid,u["ɵnov"](n,18).ngClassPending,u["ɵnov"](n,19).validClass,u["ɵnov"](n,19).invalidClass)}))}function gt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["The value should be greater or equal to 0"]))],null,null)}function pt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,134,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,e){var t=!0;return"submit"===n&&(t=!1!==u["ɵnov"](l,2).onSubmit(e)&&t),"reset"===n&&(t=!1!==u["ɵnov"](l,2).onReset()&&t),"submit"===n&&(t=!1!==u["ɵnov"](l,5).onSubmit()&&t),t}),null,null)),u["ɵdid"](1,16384,null,0,i.G,[],null,null),u["ɵdid"](2,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["ɵprd"](2048,null,i.d,null,[i.l]),u["ɵdid"](4,16384,null,0,i.s,[[4,i.d]],null,null),u["ɵdid"](5,16384,null,0,Vl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),u["ɵeld"](6,0,null,null,128,"div",[["class","card"]],null,null,null,null,null)),(l()(),u["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),u["ɵted"](8,null,[""," ",""])),u["ɵppd"](9,1),u["ɵppd"](10,1),(l()(),u["ɵeld"](11,0,null,null,114,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),u["ɵeld"](12,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](13,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,5,{FormControlNames:1}),u["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),u["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Name"])),(l()(),u["ɵeld"](18,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](19,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,21)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,21).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,21)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,21)._compositionEnd(e.target.value)&&t),t}),null,null)),u["ɵdid"](20,4210688,null,0,Tl.a,[u.ElementRef],{autofocus:[0,"autofocus"]},null),u["ɵdid"](21,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),u["ɵdid"](23,671744,[[5,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](25,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](26,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,gu)),u["ɵdid"](28,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,pu)),u["ɵdid"](30,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,hu)),u["ɵdid"](32,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,vu)),u["ɵdid"](34,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](35,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](36,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,7,{FormControlNames:1}),u["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),u["ɵeld"](39,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","poolType"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Pool type"])),(l()(),u["ɵeld"](41,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](42,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","poolType"],["id","poolType"],["name","poolType"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["ɵnov"](l,43).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,43).onTouched()&&t),t}),null,null)),u["ɵdid"](43,16384,null,0,i.A,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.A]),u["ɵdid"](45,671744,[[7,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](47,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](48,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](49,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["ɵdid"](50,147456,null,0,i.v,[u.ElementRef,u.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),u["ɵdid"](51,147456,null,0,i.F,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["ɵted"](-1,null,["-- Select a pool type --"])),(l()(),u["ɵand"](16777216,null,null,1,null,bu)),u["ɵdid"](54,278528,null,0,El.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,Cu)),u["ɵdid"](56,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ku)),u["ɵdid"](58,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](59,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](60,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,17,{FormControlNames:1}),u["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),u["ɵeld"](63,0,null,0,1,"label",[["class","cd-col-form-label"],["for","applications"]],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Applications"])),(l()(),u["ɵeld"](65,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](66,0,null,null,1,"cd-select-badges",[["id","applications"]],null,[[null,"selection"]],(function(l,n,e){var u=!0;return"selection"===n&&(u=!1!==l.component.appSelection()&&u),u}),su.b,su.a)),u["ɵdid"](67,49152,null,0,ru.a,[s.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"],selectionLimit:[3,"selectionLimit"],customBadges:[4,"customBadges"],customBadgeValidators:[5,"customBadgeValidators"]},{selection:"selection"}),(l()(),u["ɵand"](16777216,null,null,1,null,et)),u["ɵdid"](69,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,ft)),u["ɵdid"](71,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](72,0,null,null,50,"div",[],null,null,null,null,null)),(l()(),u["ɵeld"](73,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Quotas"])),(l()(),u["ɵeld"](75,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](76,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,35,{FormControlNames:1}),u["ɵqud"](603979776,36,{messagesBlock:0}),(l()(),u["ɵeld"](79,0,null,0,9,"label",[["class","cd-col-form-label"],["for","max_bytes"]],null,null,null,null,null)),(l()(),u["ɵeld"](80,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Max bytes"])),(l()(),u["ɵeld"](82,0,null,null,6,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](83,49152,null,0,Sl.a,[],null,null),(l()(),u["ɵeld"](84,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Leave it blank or specify 0 to disable this quota."])),(l()(),u["ɵeld"](86,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),u["ɵeld"](87,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["A valid quota should be greater than 0."])),(l()(),u["ɵeld"](89,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](90,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","GiB"],["formControlName","max_bytes"],["id","max_bytes"],["name","max_bytes"],["placeholder","e.g., 10GiB"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,91)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,91).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,91)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,91)._compositionEnd(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,95).onBlur(e.target.value)&&t),t}),null,null)),u["ɵdid"](91,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵprd"](1024,null,i.p,(function(l){return[l]}),[i.e]),u["ɵdid"](93,671744,[[35,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](95,81920,null,0,ou.a,[u.ElementRef,i.q,R.a,E.a],{defaultUnit:[0,"defaultUnit"]},null),u["ɵdid"](96,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](97,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵeld"](98,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,wl.b,wl.a)),u["ɵdid"](99,1163264,null,2,Vl.c,[u.ElementRef,Vl.g],null,null),u["ɵqud"](603979776,37,{FormControlNames:1}),u["ɵqud"](603979776,38,{messagesBlock:0}),(l()(),u["ɵeld"](102,0,null,0,9,"label",[["class","cd-col-form-label"],["for","max_objects"]],null,null,null,null,null)),(l()(),u["ɵeld"](103,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Max objects"])),(l()(),u["ɵeld"](105,0,null,null,6,"cd-helper",[],null,null,null,_l.b,_l.a)),u["ɵdid"](106,49152,null,0,Sl.a,[],null,null),(l()(),u["ɵeld"](107,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["Leave it blank or specify 0 to disable this quota."])),(l()(),u["ɵeld"](109,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),u["ɵeld"](110,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),u["ɵted"](-1,null,["A valid quota should be greater than 0."])),(l()(),u["ɵeld"](112,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),u["ɵeld"](113,0,null,null,7,"input",[["class","form-control"],["formControlName","max_objects"],["id","max_objects"],["min","0"],["name","max_objects"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["ɵnov"](l,114)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,114).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["ɵnov"](l,114)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["ɵnov"](l,114)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["ɵnov"](l,115).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["ɵnov"](l,115).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["ɵnov"](l,115).onTouched()&&t),t}),null,null)),u["ɵdid"](114,16384,null,0,i.e,[u.Renderer2,u.ElementRef,[2,i.b]],null,null),u["ɵdid"](115,16384,null,0,i.w,[u.Renderer2,u.ElementRef],null,null),u["ɵprd"](1024,null,i.p,(function(l,n){return[l,n]}),[i.e,i.w]),u["ɵdid"](117,671744,[[37,4]],0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),u["ɵprd"](2048,null,i.q,null,[i.j]),u["ɵdid"](119,16384,null,0,i.r,[[4,i.q]],null,null),u["ɵdid"](120,16384,null,0,Vl.h,[[3,i.d],Vl.a],{formControlName:[0,"formControlName"]},null),(l()(),u["ɵand"](16777216,null,null,1,null,gt)),u["ɵdid"](122,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](123,0,null,null,2,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),u["ɵeld"](124,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],(function(l,n,e){var u=!0;return"changes"===n&&(u=!1!==(l.component.currentConfigurationValues=e())&&u),u}),du.b,du.a)),u["ɵdid"](125,114688,null,0,cu.a,[E.a,Le.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),u["ɵeld"](126,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),u["ɵeld"](127,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),u["ɵeld"](128,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.submit()&&u),u}),kl.b,kl.a)),u["ɵdid"](129,114688,null,0,Dl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["ɵted"](130,0,[""," "," "])),u["ɵppd"](131,1),u["ɵppd"](132,1),(l()(),u["ɵeld"](133,0,null,null,1,"cd-back-button",[],null,null,null,ql.b,ql.a)),u["ɵdid"](134,49152,null,0,xl.a,[El.Location,t.b],null,null)],(function(l,n){var e=n.component;l(n,2,0,e.form),l(n,5,0,e.form),l(n,13,0),l(n,20,0,""),l(n,23,0,"name"),l(n,26,0,"name"),l(n,28,0,e.form.showError("name",u["ɵnov"](n,2),"required")),l(n,30,0,e.form.showError("name",u["ɵnov"](n,2),"uniqueName")),l(n,32,0,e.form.showError("name",u["ɵnov"](n,2),"rbdPool")),l(n,34,0,e.form.showError("name",u["ɵnov"](n,2),"pattern")),l(n,36,0),l(n,45,0,"poolType"),l(n,48,0,"poolType"),l(n,50,0,""),l(n,51,0,""),l(n,54,0,e.data.poolTypes),l(n,56,0,e.form.showError("poolType",u["ɵnov"](n,2),"required")),l(n,58,0,e.isReplicated||e.isErasure),l(n,60,0),l(n,67,0,e.data.applications.selected,e.data.applications.available,e.data.applications.messages,4,!0,e.data.applications.validators),l(n,69,0,e.isErasure||e.isReplicated),l(n,71,0,e.info.is_all_bluestore),l(n,76,0),l(n,93,0,"max_bytes"),l(n,95,0,"GiB"),l(n,97,0,"max_bytes"),l(n,99,0),l(n,117,0,"max_objects"),l(n,120,0,"max_objects"),l(n,122,0,e.form.showError("max_objects",u["ɵnov"](n,2),"min")),l(n,125,0,e.form,e.initializeConfigData),l(n,129,0,u["ɵnov"](n,2))}),(function(l,n){var e=n.component;l(n,0,0,u["ɵnov"](n,4).ngClassUntouched,u["ɵnov"](n,4).ngClassTouched,u["ɵnov"](n,4).ngClassPristine,u["ɵnov"](n,4).ngClassDirty,u["ɵnov"](n,4).ngClassValid,u["ɵnov"](n,4).ngClassInvalid,u["ɵnov"](n,4).ngClassPending);var t=u["ɵunv"](n,8,0,l(n,9,0,u["ɵnov"](n.parent,0),e.action)),i=u["ɵunv"](n,8,1,l(n,10,0,u["ɵnov"](n.parent,1),e.resource));l(n,8,0,t,i),l(n,12,0,u["ɵnov"](n,13).hasErrors,u["ɵnov"](n,13).hasSuccess),l(n,19,0,u["ɵnov"](n,25).ngClassUntouched,u["ɵnov"](n,25).ngClassTouched,u["ɵnov"](n,25).ngClassPristine,u["ɵnov"](n,25).ngClassDirty,u["ɵnov"](n,25).ngClassValid,u["ɵnov"](n,25).ngClassInvalid,u["ɵnov"](n,25).ngClassPending,u["ɵnov"](n,26).validClass,u["ɵnov"](n,26).invalidClass),l(n,35,0,u["ɵnov"](n,36).hasErrors,u["ɵnov"](n,36).hasSuccess),l(n,42,0,u["ɵnov"](n,47).ngClassUntouched,u["ɵnov"](n,47).ngClassTouched,u["ɵnov"](n,47).ngClassPristine,u["ɵnov"](n,47).ngClassDirty,u["ɵnov"](n,47).ngClassValid,u["ɵnov"](n,47).ngClassInvalid,u["ɵnov"](n,47).ngClassPending,u["ɵnov"](n,48).validClass,u["ɵnov"](n,48).invalidClass),l(n,59,0,u["ɵnov"](n,60).hasErrors,u["ɵnov"](n,60).hasSuccess),l(n,75,0,u["ɵnov"](n,76).hasErrors,u["ɵnov"](n,76).hasSuccess),l(n,90,0,u["ɵnov"](n,96).ngClassUntouched,u["ɵnov"](n,96).ngClassTouched,u["ɵnov"](n,96).ngClassPristine,u["ɵnov"](n,96).ngClassDirty,u["ɵnov"](n,96).ngClassValid,u["ɵnov"](n,96).ngClassInvalid,u["ɵnov"](n,96).ngClassPending,u["ɵnov"](n,97).validClass,u["ɵnov"](n,97).invalidClass),l(n,98,0,u["ɵnov"](n,99).hasErrors,u["ɵnov"](n,99).hasSuccess),l(n,113,0,u["ɵnov"](n,119).ngClassUntouched,u["ɵnov"](n,119).ngClassTouched,u["ɵnov"](n,119).ngClassPristine,u["ɵnov"](n,119).ngClassDirty,u["ɵnov"](n,119).ngClassValid,u["ɵnov"](n,119).ngClassInvalid,u["ɵnov"](n,119).ngClassPending,u["ɵnov"](n,120).validClass,u["ɵnov"](n,120).invalidClass),l(n,123,0,e.isErasure||-1===e.data.applications.selected.indexOf("rbd"));var a=u["ɵunv"](n,130,0,l(n,131,0,u["ɵnov"](n.parent,0),e.action)),o=u["ɵunv"](n,130,1,l(n,132,0,u["ɵnov"](n.parent,1),e.resource));l(n,130,0,a,o)}))}function ht(l){return u["ɵvid"](0,[u["ɵpid"](0,El.TitleCasePipe,[]),u["ɵpid"](0,Nl.a,[]),u["ɵqud"](671088640,1,{crushInfoTabs:0}),u["ɵqud"](671088640,2,{crushDeletionBtn:0}),u["ɵqud"](671088640,3,{ecpInfoTabs:0}),u["ɵqud"](671088640,4,{ecpDeletionBtn:0}),(l()(),u["ɵand"](16777216,null,null,1,null,fu)),u["ɵdid"](7,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["ɵeld"](8,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),u["ɵand"](16777216,null,null,1,null,pt)),u["ɵdid"](10,16384,null,0,El.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var e=n.component;l(n,7,0,!(e.info&&e.ecProfiles)),l(n,10,0,e.info&&e.ecProfiles)}),null)}function vt(l){return u["ɵvid"](0,[(l()(),u["ɵeld"](0,0,null,null,1,"cd-pool-form",[],null,null,null,ht,mu)),u["ɵdid"](1,114688,null,0,D,[R.a,re.a,re.m,Pl.b,m.a,I.a,E.a,Pl.b,N.a,c,d,s.a,t.b],null,null)],(function(l,n){l(n,1,0)}),null)}var bt=u["ɵccf"]("cd-pool-form",D,vt,{},{},[]);e.d(n,"PoolModuleNgFactory",(function(){return Ct})),e.d(n,"RoutedPoolModuleNgFactory",(function(){return Rt}));var Ct=u["ɵcmf"]($,[],(function(l){return u["ɵmod"]([u["ɵmpd"](512,u.ComponentFactoryResolver,u["ɵCodegenComponentFactoryResolver"],[[8,[Z.a,H.a,X.a,Y.a,Q.a,Q.b,ll.a,nl.a,el.a,ul.a,tl.a,il.a,al.a,ol.a,sl.a,rl.a,dl.a,cl.a,cl.c,cl.b,cl.d,ml.a,fl.a,gl.a,pl.a,hl.a,vl.a,bl.a,Cl.a,Rl.a,Il.a,Wl,Pn]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["ɵmpd"](4608,El.NgLocalization,El.NgLocaleLocalization,[u.LOCALE_ID,[2,El["ɵangular_packages_common_common_a"]]]),u["ɵmpd"](4608,Fn.y,Fn.y,[El.DOCUMENT]),u["ɵmpd"](4608,Fn.r,Fn.r,[]),u["ɵmpd"](4608,Fn.a,Fn.a,[]),u["ɵmpd"](4608,i.D,i.D,[]),u["ɵmpd"](4608,An.a,An.a,[]),u["ɵmpd"](4608,Bn.a,Bn.a,[]),u["ɵmpd"](4608,On.a,On.a,[s.a]),u["ɵmpd"](4608,El.DatePipe,El.DatePipe,[u.LOCALE_ID]),u["ɵmpd"](4608,zn.a,zn.a,[]),u["ɵmpd"](4608,Ln.a,Ln.a,[]),u["ɵmpd"](4608,E.a,E.a,[]),u["ɵmpd"](4608,R.a,R.a,[E.a]),u["ɵmpd"](4608,jn.a,jn.a,[E.a]),u["ɵmpd"](4608,O.a,O.a,[E.a]),u["ɵmpd"](4608,Un.a,Un.a,[]),u["ɵmpd"](4608,Mn.a,Mn.a,[]),u["ɵmpd"](4608,Gn.a,Gn.a,[]),u["ɵmpd"](4608,$n.a,$n.a,[]),u["ɵmpd"](4608,Kn.a,Kn.a,[El.DatePipe]),u["ɵmpd"](4608,Jn.a,Jn.a,[]),u["ɵmpd"](4608,Wn.a,Wn.a,[]),u["ɵmpd"](4608,Zn.a,Zn.a,[]),u["ɵmpd"](4608,Hn.a,Hn.a,[]),u["ɵmpd"](4608,Xn.a,Xn.a,[]),u["ɵmpd"](4608,Yn.a,Yn.a,[s.a]),u["ɵmpd"](4608,Nl.a,Nl.a,[]),u["ɵmpd"](4608,Qn.a,Qn.a,[]),u["ɵmpd"](4608,le.a,le.a,[]),u["ɵmpd"](4608,i.h,i.h,[]),u["ɵmpd"](4608,ne.b,ne.b,[]),u["ɵmpd"](4608,ee.a,ee.a,[]),u["ɵmpd"](4608,ue.a,ue.a,[u.NgZone,u.RendererFactory2,u.PLATFORM_ID]),u["ɵmpd"](4608,te.a,te.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,ue.a,u.ApplicationRef]),u["ɵmpd"](4608,ie.c,ie.c,[]),u["ɵmpd"](4608,ae.a,ae.a,[]),u["ɵmpd"](4608,Pl.b,Pl.b,[u.RendererFactory2,te.a]),u["ɵmpd"](4608,oe.f,oe.f,[]),u["ɵmpd"](4608,I.a,I.a,[]),u["ɵmpd"](4608,se.a,se.a,[re.m,I.a]),u["ɵmpd"](4608,de.f,de.f,[]),u["ɵmpd"](4608,ce.t,ce.t,[]),u["ɵmpd"](4608,ce.v,ce.v,[]),u["ɵmpd"](4608,ce.a,ce.a,[]),u["ɵmpd"](4608,ce.h,ce.h,[]),u["ɵmpd"](4608,ce.d,ce.d,[]),u["ɵmpd"](4608,ce.j,ce.j,[]),u["ɵmpd"](4608,ce.l,ce.l,[]),u["ɵmpd"](4608,ce.u,ce.u,[ce.v,ce.l]),u["ɵmpd"](4608,me.a,me.a,[]),u["ɵmpd"](1073742336,El.CommonModule,El.CommonModule,[]),u["ɵmpd"](1073742336,Fn.u,Fn.u,[]),u["ɵmpd"](1073742336,i.C,i.C,[]),u["ɵmpd"](1073742336,i.n,i.n,[]),u["ɵmpd"](1073742336,oe.e,oe.e,[]),u["ɵmpd"](1073742336,fe.a,fe.a,[]),u["ɵmpd"](1073742336,i.y,i.y,[]),u["ɵmpd"](1073742336,ne.c,ne.c,[]),u["ɵmpd"](1073742336,ee.d,ee.d,[]),u["ɵmpd"](1073742336,ie.d,ie.d,[]),u["ɵmpd"](1073742336,ae.d,ae.d,[]),u["ɵmpd"](1073742336,ge.b,ge.b,[]),u["ɵmpd"](1073742336,Pl.e,Pl.e,[]),u["ɵmpd"](1073742336,pe.a,pe.a,[]),u["ɵmpd"](1073742336,Vl.f,Vl.f,[]),u["ɵmpd"](1073742336,he.ClickOutsideModule,he.ClickOutsideModule,[]),u["ɵmpd"](1073742336,ve.b,ve.b,[]),u["ɵmpd"](1073742336,re.q,re.q,[[2,re.v],[2,re.m]]),u["ɵmpd"](1073742336,be.a,be.a,[]),u["ɵmpd"](1073742336,Ce.a,Ce.a,[]),u["ɵmpd"](1073742336,r.a,r.a,[]),u["ɵmpd"](1073742336,Re.a,Re.a,[]),u["ɵmpd"](1073742336,de.d,de.d,[]),u["ɵmpd"](1073742336,Ie.a,Ie.a,[]),u["ɵmpd"](1073742336,Ee.a,Ee.a,[]),u["ɵmpd"](1073742336,ce.g,ce.g,[]),u["ɵmpd"](1073742336,Ne.b,Ne.b,[]),u["ɵmpd"](1073742336,ye.a,ye.a,[]),u["ɵmpd"](1073742336,$,$,[]),u["ɵmpd"](256,u.LOCALE_ID,"en-US",[]),u["ɵmpd"](256,oe.a,{autoClose:!0,insideClick:!1},[]),u["ɵmpd"](256,u.TRANSLATIONS_FORMAT,"xlf",[])])})),Rt=u["ɵcmf"](W,[],(function(l){return u["ɵmod"]([u["ɵmpd"](512,u.ComponentFactoryResolver,u["ɵCodegenComponentFactoryResolver"],[[8,[Z.a,H.a,X.a,Y.a,Q.a,Q.b,ll.a,nl.a,el.a,ul.a,tl.a,il.a,al.a,ol.a,sl.a,rl.a,dl.a,cl.a,cl.c,cl.b,cl.d,ml.a,fl.a,gl.a,pl.a,hl.a,vl.a,bl.a,Cl.a,Rl.a,Il.a,Wl,Pn,tu,bt]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["ɵmpd"](4608,El.NgLocalization,El.NgLocaleLocalization,[u.LOCALE_ID,[2,El["ɵangular_packages_common_common_a"]]]),u["ɵmpd"](4608,Fn.y,Fn.y,[El.DOCUMENT]),u["ɵmpd"](4608,Fn.r,Fn.r,[]),u["ɵmpd"](4608,Fn.a,Fn.a,[]),u["ɵmpd"](4608,i.D,i.D,[]),u["ɵmpd"](4608,An.a,An.a,[]),u["ɵmpd"](4608,Bn.a,Bn.a,[]),u["ɵmpd"](4608,On.a,On.a,[s.a]),u["ɵmpd"](4608,El.DatePipe,El.DatePipe,[u.LOCALE_ID]),u["ɵmpd"](4608,zn.a,zn.a,[]),u["ɵmpd"](4608,Ln.a,Ln.a,[]),u["ɵmpd"](4608,E.a,E.a,[]),u["ɵmpd"](4608,R.a,R.a,[E.a]),u["ɵmpd"](4608,jn.a,jn.a,[E.a]),u["ɵmpd"](4608,O.a,O.a,[E.a]),u["ɵmpd"](4608,Un.a,Un.a,[]),u["ɵmpd"](4608,Mn.a,Mn.a,[]),u["ɵmpd"](4608,Gn.a,Gn.a,[]),u["ɵmpd"](4608,$n.a,$n.a,[]),u["ɵmpd"](4608,Kn.a,Kn.a,[El.DatePipe]),u["ɵmpd"](4608,Jn.a,Jn.a,[]),u["ɵmpd"](4608,Wn.a,Wn.a,[]),u["ɵmpd"](4608,Zn.a,Zn.a,[]),u["ɵmpd"](4608,Hn.a,Hn.a,[]),u["ɵmpd"](4608,Xn.a,Xn.a,[]),u["ɵmpd"](4608,Yn.a,Yn.a,[s.a]),u["ɵmpd"](4608,Nl.a,Nl.a,[]),u["ɵmpd"](4608,Qn.a,Qn.a,[]),u["ɵmpd"](4608,le.a,le.a,[]),u["ɵmpd"](4608,i.h,i.h,[]),u["ɵmpd"](4608,ne.b,ne.b,[]),u["ɵmpd"](4608,ee.a,ee.a,[]),u["ɵmpd"](4608,ue.a,ue.a,[u.NgZone,u.RendererFactory2,u.PLATFORM_ID]),u["ɵmpd"](4608,te.a,te.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,ue.a,u.ApplicationRef]),u["ɵmpd"](4608,ie.c,ie.c,[]),u["ɵmpd"](4608,ae.a,ae.a,[]),u["ɵmpd"](4608,Pl.b,Pl.b,[u.RendererFactory2,te.a]),u["ɵmpd"](4608,oe.f,oe.f,[]),u["ɵmpd"](4608,I.a,I.a,[]),u["ɵmpd"](4608,se.a,se.a,[re.m,I.a]),u["ɵmpd"](4608,de.f,de.f,[]),u["ɵmpd"](4608,ce.t,ce.t,[]),u["ɵmpd"](4608,ce.v,ce.v,[]),u["ɵmpd"](4608,ce.a,ce.a,[]),u["ɵmpd"](4608,ce.h,ce.h,[]),u["ɵmpd"](4608,ce.d,ce.d,[]),u["ɵmpd"](4608,ce.j,ce.j,[]),u["ɵmpd"](4608,ce.l,ce.l,[]),u["ɵmpd"](4608,ce.u,ce.u,[ce.v,ce.l]),u["ɵmpd"](4608,me.a,me.a,[]),u["ɵmpd"](1073742336,El.CommonModule,El.CommonModule,[]),u["ɵmpd"](1073742336,Fn.u,Fn.u,[]),u["ɵmpd"](1073742336,i.C,i.C,[]),u["ɵmpd"](1073742336,i.n,i.n,[]),u["ɵmpd"](1073742336,oe.e,oe.e,[]),u["ɵmpd"](1073742336,fe.a,fe.a,[]),u["ɵmpd"](1073742336,i.y,i.y,[]),u["ɵmpd"](1073742336,ne.c,ne.c,[]),u["ɵmpd"](1073742336,ee.d,ee.d,[]),u["ɵmpd"](1073742336,ie.d,ie.d,[]),u["ɵmpd"](1073742336,ae.d,ae.d,[]),u["ɵmpd"](1073742336,ge.b,ge.b,[]),u["ɵmpd"](1073742336,Pl.e,Pl.e,[]),u["ɵmpd"](1073742336,pe.a,pe.a,[]),u["ɵmpd"](1073742336,Vl.f,Vl.f,[]),u["ɵmpd"](1073742336,he.ClickOutsideModule,he.ClickOutsideModule,[]),u["ɵmpd"](1073742336,ve.b,ve.b,[]),u["ɵmpd"](1073742336,re.q,re.q,[[2,re.v],[2,re.m]]),u["ɵmpd"](1073742336,be.a,be.a,[]),u["ɵmpd"](1073742336,Ce.a,Ce.a,[]),u["ɵmpd"](1073742336,r.a,r.a,[]),u["ɵmpd"](1073742336,Re.a,Re.a,[]),u["ɵmpd"](1073742336,de.d,de.d,[]),u["ɵmpd"](1073742336,Ie.a,Ie.a,[]),u["ɵmpd"](1073742336,Ee.a,Ee.a,[]),u["ɵmpd"](1073742336,ce.g,ce.g,[]),u["ɵmpd"](1073742336,Ne.b,Ne.b,[]),u["ɵmpd"](1073742336,ye.a,ye.a,[]),u["ɵmpd"](1073742336,$,$,[]),u["ɵmpd"](1073742336,W,W,[]),u["ɵmpd"](256,u.LOCALE_ID,"en-US",[]),u["ɵmpd"](256,oe.a,{autoClose:!0,insideClick:!1},[]),u["ɵmpd"](1024,re.k,(function(){return[[{path:"",component:G},{path:"create",component:D,data:K},{path:"edit/:name",component:D,data:J}]]}),[]),u["ɵmpd"](256,u.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.94051a156c6d11b38ada.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.94051a156c6d11b38ada.js
new file mode 100644 (file)
index 0000000..70ecc70
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{DY6s:function(l,n,u){"use strict";u.r(n);var e=u("8Y7J"),o=u("LceX"),a=u("ES0t"),d=u("MdoF"),t=u("Xg1U"),s=u("z5nN"),i=u("iutN"),r=u("pMnS"),c=u("EEJc"),p=u("PEr+"),m=u("a40w"),v=u("hfeG"),f=u("atuK"),g=u("SVse"),h=u("s7LF"),b=u("yT6U"),C=u("4DD9"),R=u("iExv"),w=u("GiVz"),I=u("85J/"),E=u("+0ag"),y=u("aXbf"),N=u("Fgil"),x=u("IzCI"),T=u("o4+5"),k=u("Dwqy"),D=u("uYzU"),S=u("FFMq"),q=u("E2fk"),P=u("a0VL"),F=u("nSDx"),_=u("SB+Q"),V=u("TYzs"),U=u("BQkM"),M=u("dEH0"),L=u("G1/K"),A=u("8xTl"),O=u("TJUb"),j=u("efK2"),B=u("CNMR"),z=u("KOzp"),G=u("2uy1"),Z=u("z/SZ"),K=u("38Bd"),H=u("978R"),X=u("LqlI"),J=u("w9WL"),Y=u("FE24"),Q=u("aexS"),W=u("Avrn"),$=u("iInd"),ll=u("2ZVE"),nl=u("ienR"),ul=u("aHM3"),el=u("9Xeq"),ol=u("hrfs"),al=u("yGOH"),dl=u("+gVj"),tl=u("bxSN"),sl=u("WF9J"),il=u("V/fk"),rl=u("ChqD"),cl=u("pL04"),pl=u("PCNd"),ml=u("pKUh");class vl{constructor(l){this.router=l}ngOnInit(){this.url=this.router.url}navigateTo(l){this.router.navigate([l])}}var fl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function gl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ml.b,ml.a)),e["ɵdid"](1,180224,null,0,ll.e,[ll.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,1,"tab",[["heading","Users"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/user-management/users")&&e),e}),null,null)),e["ɵdid"](3,212992,null,0,ll.b,[ll.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](4,0,null,0,1,"tab",[["heading","Roles"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/user-management/roles")&&e),e}),null,null)),e["ɵdid"](5,212992,null,0,ll.b,[ll.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"})],(function(l,n){var u=n.component;l(n,3,0,"Users","/user-management/users"===u.url),l(n,5,0,"Roles","/user-management/roles"===u.url)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,4,0,e["ɵnov"](n,5).id,e["ɵnov"](n,5).active,e["ɵnov"](n,5).addClass,e["ɵnov"](n,5).role,e["ɵnov"](n,5).ariaLabelledby)}))}var hl=u("25BL"),bl=u("uIqm"),Cl=u("NUGo"),Rl=u("S7zO"),wl=u("EgGo"),Il=u("ZEkX"),El=u("Mxhz"),yl=u("9nlD"),Nl=u("sne2"),xl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Tl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" ",""," "]))],null,(function(l,n){l(n,1,0,n.context.$implicit,n.context.last?"":", ")}))}function kl(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Tl)),e["ɵdid"](1,278528,null,0,g.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,n.context.value)}),null)}function Dl(l){return e["ɵvid"](0,[e["ɵqud"](402653184,1,{userRolesTpl:0}),(l()(),e["ɵeld"](1,0,null,null,1,"cd-user-tabs",[],null,null,null,gl,fl)),e["ɵdid"](2,114688,null,0,vl,[$.m],null,null),(l()(),e["ɵeld"](3,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","username"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],(function(l,n,u){var e=!0,o=l.component;return"fetchData"===n&&(e=!1!==o.getUsers()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e}),hl.b,hl.a)),e["ɵdid"](4,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["ɵeld"](5,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Cl.b,Cl.a)),e["ɵdid"](6,114688,null,0,Rl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵand"](0,[[1,2],["userRolesTpl",2]],null,0,null,kl))],(function(l,n){var u=n.component;l(n,2,0),l(n,4,0,u.users,u.columns,"flex","username","single"),l(n,6,0,u.permission,u.selection,u.tableActions)}),null)}function Sl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-user-list",[],null,null,null,Dl,xl)),e["ɵprd"](256,null,wl.a,Il.b,[]),e["ɵdid"](2,114688,null,0,Il.a,[El.a,F.a,X.b,yl.a,Q.a,w.a,wl.a,P.a,Nl.b],null,null)],(function(l,n){l(n,2,0)}),null)}var ql=e["ɵccf"]("cd-user-list",Il.a,Sl,{},{},[]),Pl=u("QC43"),Fl=u("XFyV"),_l=u("4HWh"),Vl=u("p4Cf"),Ul=u("mXUL"),Ml=u("D4zM"),Ll=u("pYKc"),Al=u("ppaS"),Ol=u("IZUe"),jl=u("gp3X"),Bl=u("sb0X"),zl=u("KVJa"),Gl=u("Z21x"),Zl=u("V3my"),Kl=u("DSvg"),Hl=u("SgmB"),Xl=u("1nQr"),Jl=u("2EZI"),Yl=u("20UP"),Ql=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Wl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Pl.b,Pl.a)),e["ɵdid"](1,49152,null,0,Fl.a,[],null,null),(l()(),e["ɵted"](-1,0,["Loading..."]))],null,null)}function $l(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ln(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The username already exists."]))],null,null)}function nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-helper",[["class","text-pre"]],null,null,null,_l.b,_l.a)),e["ɵdid"](1,49152,null,0,Vl.a,[],{class:[0,"class"],html:[1,"html"]},null)],(function(l,n){l(n,1,0,"text-pre",e["ɵinlineInterpolate"](1,"",n.component.passwordPolicyHelpText,""))}),null)}function un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function en(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.passwordValuation)}))}function on(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,4,{FormControlNames:1}),e["ɵqud"](603979776,5,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","password"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password"])),(l()(),e["ɵand"](16777216,null,null,1,null,nn)),e["ɵdid"](8,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](9,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","password"],["name","password"],["placeholder","Password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,12).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,12)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](12,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](14,671744,[[4,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](16,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](17,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](18,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["ɵnov"](l,20).onClick()&&o),o}),null,null)),e["ɵdid"](20,81920,null,0,Ml.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](21,0,null,null,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(l()(),e["ɵeld"](22,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,un)),e["ɵdid"](24,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,en)),e["ɵdid"](26,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,8,0,u.passwordPolicyHelpText.length>0),l(n,14,0,"password"),l(n,17,0,"password"),l(n,20,0,"password"),l(n,24,0,u.userForm.showError("password",e["ɵnov"](n.parent,2),"required")),l(n,26,0,u.userForm.showError("password",e["ɵnov"](n.parent,2),"passwordPolicy"))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,e["ɵnov"](n,16).ngClassUntouched,e["ɵnov"](n,16).ngClassTouched,e["ɵnov"](n,16).ngClassPristine,e["ɵnov"](n,16).ngClassDirty,e["ɵnov"](n,16).ngClassValid,e["ɵnov"](n,16).ngClassInvalid,e["ɵnov"](n,16).ngClassPending,e["ɵnov"](n,17).validClass,e["ɵnov"](n,17).invalidClass),l(n,22,0,e["ɵinlineInterpolate"](1,"",u.passwordStrengthLevelClass,""),e["ɵinlineInterpolate"](1,"",u.passwordValuation,""))}))}function an(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password confirmation doesn't match the password."]))],null,null)}function dn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,6,{FormControlNames:1}),e["ɵqud"](603979776,7,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","confirmpassword"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Confirm password"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","confirmpassword"],["id","confirmpassword"],["name","confirmpassword"],["placeholder","Confirm password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,9).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,9)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](9,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](11,671744,[[6,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](13,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](14,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"button",[["cdPasswordButton","confirmpassword"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["ɵnov"](l,17).onClick()&&o),o}),null,null)),e["ɵdid"](17,81920,null,0,Ml.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,an)),e["ɵdid"](19,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,dn)),e["ɵdid"](21,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"confirmpassword"),l(n,14,0,"confirmpassword"),l(n,17,0,"confirmpassword"),l(n,19,0,u.userForm.showError("confirmpassword",e["ɵnov"](n.parent,2),"match")),l(n,21,0,u.userForm.showError("confirmpassword",e["ɵnov"](n.parent,2),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function sn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,12,"cd-helper",[["class","text-pre"]],null,null,null,_l.b,_l.a)),e["ɵdid"](1,49152,null,0,Vl.a,[],{class:[0,"class"]},null),(l()(),e["ɵeld"](2,0,null,0,4,"p",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" The Dashboard setting defining the expiration interval of passwords is currently set to "])),(l()(),e["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["0"])),(l()(),e["ɵted"](-1,null,[". This means if a date is set, the user password will only expire once. "])),(l()(),e["ɵeld"](7,0,null,0,5,"p",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" Consider configuring the Dashboard setting "])),(l()(),e["ɵeld"](9,0,null,null,2,"a",[["class","alert-link"],["routerLink","/mgr-modules/edit/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["ɵnov"](l,10).onClick(u.button,u.ctrlKey,u.metaKey,u.shiftKey)&&o),o}),null,null)),e["ɵdid"](10,671744,null,0,$.p,[$.m,$.a,g.LocationStrategy],{routerLink:[0,"routerLink"]},null),(l()(),e["ɵted"](-1,null,["USER_PWD_EXPIRATION_SPAN"])),(l()(),e["ɵted"](-1,null,[" in order to let passwords expire periodically. "]))],(function(l,n){l(n,1,0,"text-pre"),l(n,10,0,"/mgr-modules/edit/dashboard")}),(function(l,n){l(n,9,0,e["ɵnov"](n,10).target,e["ɵnov"](n,10).href)}))}function rn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,8,{FormControlNames:1}),e["ɵqud"](603979776,9,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,7,"label",[["class","cd-col-form-label"],["for","pwdExpirationDate"]],null,null,null,null,null)),e["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](7,{required:0}),(l()(),e["ɵeld"](8,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password expiration date"])),(l()(),e["ɵand"](16777216,null,null,1,null,sn)),e["ɵdid"](11,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](12,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,15,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","pwdExpirationDate"],["id","pwdExpirationDate"],["name","pwdExpirationDate"],["placeholder","Password expiration date..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,15)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,15).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,15)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,15)._compositionEnd(u.target.value)&&o),"change"===n&&(o=!1!==e["ɵnov"](l,17).onChange(u)&&o),"keyup.esc"===n&&(o=!1!==e["ɵnov"](l,17).hide()&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,17).onBlur()&&o),o}),null,null)),e["ɵdid"](15,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵdid"](16,737280,null,0,nl.c,[nl.a,e.ElementRef,e.Renderer2,e.ViewContainerRef,Z.a],{bsConfig:[0,"bsConfig"],minDate:[1,"minDate"]},null),e["ɵdid"](17,16384,null,0,nl.f,[nl.c,nl.l,e.Renderer2,e.ElementRef,e.ChangeDetectorRef],null,null),e["ɵprd"](1024,null,h.o,(function(l){return[l]}),[nl.f]),e["ɵprd"](1024,null,h.p,(function(l,n){return[l,n]}),[h.e,nl.f]),e["ɵdid"](20,671744,[[8,4]],0,h.j,[[3,h.d],[6,h.o],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](22,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](23,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](24,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](25,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.clearExpirationDate()&&e),e}),null,null)),(l()(),e["ɵeld"](26,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,rn)),e["ɵdid"](28,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var o=l(n,7,0,u.pwdExpirationSettings.pwdExpirationSpan>0);l(n,6,0,"cd-col-form-label",o),l(n,11,0,0==u.pwdExpirationSettings.pwdExpirationSpan),l(n,16,0,u.bsConfig,u.minDate),l(n,20,0,"pwdExpirationDate"),l(n,23,0,"pwdExpirationDate"),l(n,28,0,u.userForm.showError("pwdExpirationDate",e["ɵnov"](n.parent,2),"required"))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,14,0,e["ɵnov"](n,22).ngClassUntouched,e["ɵnov"](n,22).ngClassTouched,e["ɵnov"](n,22).ngClassPristine,e["ɵnov"](n,22).ngClassDirty,e["ɵnov"](n,22).ngClassValid,e["ɵnov"](n,22).ngClassInvalid,e["ɵnov"](n,22).ngClassPending,e["ɵnov"](n,23).validClass,e["ɵnov"](n,23).invalidClass),l(n,26,0,e["ɵinlineInterpolate"](1,"icon-prepend ",u.icons.destroy,""))}))}function pn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Invalid email."]))],null,null)}function mn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border full-height"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"cd-select-badges",[],null,null,null,Ll.b,Ll.a)),e["ɵdid"](2,49152,null,0,Al.a,[w.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"]},null)],(function(l,n){var u=n.component;l(n,2,0,u.userForm.controls.roles.value,u.allRoles,u.messages)}),null)}function vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,16,{FormControlNames:1}),e["ɵqud"](603979776,17,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","enabled"],["id","enabled"],["name","enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var o=!0;return"change"===n&&(o=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,7).onTouched()&&o),o}),null,null)),e["ɵdid"](7,16384,null,0,h.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.c]),e["ɵdid"](9,671744,[[16,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](11,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](12,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"]))],(function(l,n){l(n,1,0),l(n,9,0,"enabled"),l(n,12,0,"enabled")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function fn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,18,{FormControlNames:1}),e["ɵqud"](603979776,19,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","pwdUpdateRequired"],["id","pwdUpdateRequired"],["name","pwdUpdateRequired"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var o=!0;return"change"===n&&(o=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,7).onTouched()&&o),o}),null,null)),e["ɵdid"](7,16384,null,0,h.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.c]),e["ɵdid"](9,671744,[[18,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](11,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](12,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","pwdUpdateRequired"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User must change password at next logon"]))],(function(l,n){l(n,1,0),l(n,9,0,"pwdUpdateRequired"),l(n,12,0,"pwdUpdateRequired")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function gn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,91,"form",[["name","userForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["ɵnov"](l,2).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["ɵnov"](l,2).onReset()&&o),"submit"===n&&(o=!1!==e["ɵnov"](l,5).onSubmit()&&o),o}),null,null)),e["ɵdid"](1,16384,null,0,h.G,[],null,null),e["ɵdid"](2,540672,[["formDir",4]],0,h.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,h.d,null,[h.l]),e["ɵdid"](4,16384,null,0,h.s,[[4,h.d]],null,null),e["ɵdid"](5,16384,null,0,dl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](6,0,null,null,85,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](8,null,[""," ",""])),e["ɵppd"](9,1),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,71,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](13,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,2,{FormControlNames:1}),e["ɵqud"](603979776,3,{messagesBlock:0}),(l()(),e["ɵeld"](16,0,null,0,4,"label",[["class","cd-col-form-label"],["for","username"]],null,null,null,null,null)),e["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](18,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](19,{required:0}),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](21,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](22,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","username"],["id","username"],["name","username"],["placeholder","Username..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,23)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,23).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,23)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,23)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](23,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](25,671744,[[2,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](27,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](28,4210688,null,0,Ol.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](29,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,$l)),e["ɵdid"](31,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ln)),e["ɵdid"](33,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,on)),e["ɵdid"](35,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,tn)),e["ɵdid"](37,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,cn)),e["ɵdid"](39,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](40,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](41,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,10,{FormControlNames:1}),e["ɵqud"](603979776,11,{messagesBlock:0}),(l()(),e["ɵeld"](44,0,null,0,1,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Full name"])),(l()(),e["ɵeld"](46,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](47,0,null,null,6,"input",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Full name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,48)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,48).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,48)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,48)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](48,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](50,671744,[[10,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](52,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](53,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](54,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](55,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,12,{FormControlNames:1}),e["ɵqud"](603979776,13,{messagesBlock:0}),(l()(),e["ɵeld"](58,0,null,0,1,"label",[["class","cd-col-form-label"],["for","email"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Email"])),(l()(),e["ɵeld"](60,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,6,"input",[["class","form-control"],["formControlName","email"],["id","email"],["name","email"],["placeholder","Email..."],["type","email"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,62)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,62).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,62)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,62)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](62,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](64,671744,[[12,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](66,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](67,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,pn)),e["ɵdid"](69,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](70,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](71,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,14,{FormControlNames:1}),e["ɵqud"](603979776,15,{messagesBlock:0}),(l()(),e["ɵeld"](74,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Roles"])),(l()(),e["ɵeld"](76,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,mn)),e["ɵdid"](78,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vn)),e["ɵdid"](80,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,fn)),e["ɵdid"](82,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](83,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](84,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](85,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),jl.b,jl.a)),e["ɵdid"](86,114688,null,0,Bl.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](87,0,[""," ",""])),e["ɵppd"](88,1),e["ɵppd"](89,1),(l()(),e["ɵeld"](90,0,null,null,1,"cd-back-button",[],null,null,null,zl.b,zl.a)),e["ɵdid"](91,49152,null,0,Gl.a,[g.Location,Nl.b],null,null)],(function(l,n){var u=n.component;l(n,2,0,u.userForm),l(n,5,0,u.userForm),l(n,13,0);var o=l(n,19,0,u.mode!==u.userFormMode.editing);l(n,18,0,"cd-col-form-label",o),l(n,25,0,"username"),l(n,28,0,""),l(n,29,0,"username"),l(n,31,0,u.userForm.showError("username",e["ɵnov"](n,2),"required")),l(n,33,0,u.userForm.showError("username",e["ɵnov"](n,2),"notUnique")),l(n,35,0,!u.authStorageService.isSSO()),l(n,37,0,!u.authStorageService.isSSO()),l(n,39,0,!u.authStorageService.isSSO()),l(n,41,0),l(n,50,0,"name"),l(n,53,0,"name"),l(n,55,0),l(n,64,0,"email"),l(n,67,0,"email"),l(n,69,0,u.userForm.showError("email",e["ɵnov"](n,2),"email")),l(n,71,0),l(n,78,0,u.allRoles),l(n,80,0,!u.isCurrentUser()),l(n,82,0,!u.isCurrentUser()&&!u.authStorageService.isSSO()),l(n,86,0,e["ɵnov"](n,2))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,4).ngClassUntouched,e["ɵnov"](n,4).ngClassTouched,e["ɵnov"](n,4).ngClassPristine,e["ɵnov"](n,4).ngClassDirty,e["ɵnov"](n,4).ngClassValid,e["ɵnov"](n,4).ngClassInvalid,e["ɵnov"](n,4).ngClassPending);var o=e["ɵunv"](n,8,0,l(n,9,0,e["ɵnov"](n.parent,0),u.action)),a=e["ɵunv"](n,8,1,l(n,10,0,e["ɵnov"](n.parent,1),u.resource));l(n,8,0,o,a),l(n,12,0,e["ɵnov"](n,13).hasErrors,e["ɵnov"](n,13).hasSuccess),l(n,22,0,e["ɵnov"](n,27).ngClassUntouched,e["ɵnov"](n,27).ngClassTouched,e["ɵnov"](n,27).ngClassPristine,e["ɵnov"](n,27).ngClassDirty,e["ɵnov"](n,27).ngClassValid,e["ɵnov"](n,27).ngClassInvalid,e["ɵnov"](n,27).ngClassPending,e["ɵnov"](n,29).validClass,e["ɵnov"](n,29).invalidClass),l(n,40,0,e["ɵnov"](n,41).hasErrors,e["ɵnov"](n,41).hasSuccess),l(n,47,0,e["ɵnov"](n,52).ngClassUntouched,e["ɵnov"](n,52).ngClassTouched,e["ɵnov"](n,52).ngClassPristine,e["ɵnov"](n,52).ngClassDirty,e["ɵnov"](n,52).ngClassValid,e["ɵnov"](n,52).ngClassInvalid,e["ɵnov"](n,52).ngClassPending,e["ɵnov"](n,53).validClass,e["ɵnov"](n,53).invalidClass),l(n,54,0,e["ɵnov"](n,55).hasErrors,e["ɵnov"](n,55).hasSuccess),l(n,61,0,e["ɵnov"](n,66).ngClassUntouched,e["ɵnov"](n,66).ngClassTouched,e["ɵnov"](n,66).ngClassPristine,e["ɵnov"](n,66).ngClassDirty,e["ɵnov"](n,66).ngClassValid,e["ɵnov"](n,66).ngClassInvalid,e["ɵnov"](n,66).ngClassPending,e["ɵnov"](n,67).validClass,e["ɵnov"](n,67).invalidClass),l(n,70,0,e["ɵnov"](n,71).hasErrors,e["ɵnov"](n,71).hasSuccess);var d=e["ɵunv"](n,87,0,l(n,88,0,e["ɵnov"](n.parent,0),u.action)),t=e["ɵunv"](n,87,1,l(n,89,0,e["ɵnov"](n.parent,1),u.resource));l(n,87,0,d,t)}))}function hn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,['You are about to remove "user read / update" permissions from your own user.'])),(l()(),e["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,"p",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["If you continue, you will no longer be able to add or remove roles from any user."])),(l()(),e["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Are you sure you want to continue?"]))],null,null)}function bn(l){return e["ɵvid"](0,[e["ɵpid"](0,g.TitleCasePipe,[]),e["ɵpid"](0,A.a,[]),e["ɵqud"](402653184,1,{removeSelfUserReadUpdatePermissionTpl:0}),(l()(),e["ɵand"](16777216,null,null,1,null,Wl)),e["ɵdid"](4,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](5,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,gn)),e["ɵdid"](7,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,[[1,2],["removeSelfUserReadUpdatePermissionTpl",2]],null,0,null,hn))],(function(l,n){var u=n.component;l(n,4,0,!u.pwdExpirationSettings),l(n,7,0,u.pwdExpirationSettings)}),null)}function Cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-user-form",[],null,null,null,bn,Ql)),e["ɵdid"](1,114688,null,0,Zl.a,[Kl.a,Q.a,$.a,$.m,X.b,Hl.a,El.a,yl.a,w.a,Nl.b,Xl.a,Jl.a,Yl.a],null,null)],(function(l,n){l(n,1,0)}),null)}var Rn=e["ɵccf"]("cd-user-form",Zl.a,Cn,{},{},[]),wn=u("LvDl"),In=u("x38r");class En{constructor(l){this.i18n=l,this.scopes_permissions=[]}ngOnInit(){this.columns=[{prop:"scope",name:this.i18n("Scope"),flexGrow:2},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTransformation:In.a.checkIcon},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTransformation:In.a.checkIcon},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTransformation:In.a.checkIcon},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTransformation:In.a.checkIcon}]}ngOnChanges(){if(this.selection){this.selectedItem=this.selection;const l=[];wn.each(this.scopes,n=>{const u={read:!1,create:!1,update:!1,delete:!1};u.scope=n,n in this.selectedItem.scopes_permissions&&wn.each(this.selectedItem.scopes_permissions[n],l=>{u[l]=!0}),l.push(u)}),this.scopes_permissions=l}}}var yn=e["ɵcrt"]({encapsulation:0,styles:[["thead[_ngcontent-%COMP%]{background-color:#f5f5f5}.fa[_ngcontent-%COMP%]{font-size:large}.fa.fa-square-o[_ngcontent-%COMP%]{color:#d1d1d1}"]],data:{}});function Nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ml.b,ml.a)),e["ɵdid"](1,180224,null,0,ll.e,[ll.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,ll.b,[ll.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](4,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,hl.b,hl.a)),e["ɵdid"](5,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function xn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Nn)),e["ɵdid"](1,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,1,0,n.component.selection)}),null)}var Tn=u("n/D3"),kn=u("ZDA6"),Dn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Sn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-user-tabs",[],null,null,null,gl,fl)),e["ɵdid"](1,114688,null,0,vl,[$.m],null,null),(l()(),e["ɵeld"](2,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","name"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"fetchData"],[null,"updateSelection"]],(function(l,n,u){var e=!0,o=l.component;return"setExpandedRow"===n&&(e=!1!==o.setExpandedRow(u)&&e),"fetchData"===n&&(e=!1!==o.getRoles()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e}),hl.b,hl.a)),e["ɵdid"](3,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Cl.b,Cl.a)),e["ɵdid"](5,114688,null,0,Rl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](6,0,null,3,1,"cd-role-details",[["cdTableDetail",""]],null,null,null,xn,yn)),e["ɵdid"](7,638976,null,0,En,[w.a],{selection:[0,"selection"],scopes:[1,"scopes"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,3,0,u.roles,u.columns,"flex",!0,"name","single"),l(n,5,0,u.permission,u.selection,u.tableActions),l(n,7,0,u.expandedRow,u.scopes)}),null)}function qn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-role-list",[],null,null,null,Sn,Dn)),e["ɵprd"](256,null,wl.a,Tn.b,[]),e["ɵdid"](2,114688,null,0,Tn.a,[Hl.a,kn.a,F.a,Q.a,X.b,yl.a,w.a,wl.a,Nl.b],null,null)],(function(l,n){l(n,2,0)}),null)}var Pn=e["ɵccf"]("cd-role-list",Tn.a,qn,{},{},[]),Fn=u("eTJe"),_n=e["ɵcrt"]({encapsulation:0,styles:[[".datatable-permissions-header-cell-label[_ngcontent-%COMP%], .datatable-permissions-scope-cell-label[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function Vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen name is already in use."]))],null,null)}function Mn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"checked",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e}),null,null)),e["ɵdid"](2,16384,null,0,dl.h,[[8,null],dl.a],null,null),(l()(),e["ɵeld"](3,0,null,null,1,"label",[["class","datatable-permissions-scope-cell-label custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["ɵted"](4,null,["",""]))],null,(function(l,n){var u=n.component;l(n,1,0,e["ɵinlineInterpolate"](1,"scope_",n.context.row.scope,""),u.isRowChecked(n.context.row.scope),e["ɵnov"](n,2).validClass,e["ɵnov"](n,2).invalidClass),l(n,3,0,e["ɵinlineInterpolate"](1,"scope_",n.context.row.scope,"")),l(n,4,0,n.context.value)}))}function Ln(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"id",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e}),null,null)),e["ɵdid"](2,16384,null,0,dl.h,[[8,null],dl.a],null,null),(l()(),e["ɵeld"](3,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],null,(function(l,n){l(n,1,0,n.context.value,n.context.row.scope+"-"+n.context.column.prop,e["ɵnov"](n,2).validClass,e["ɵnov"](n,2).invalidClass),l(n,3,0,n.context.row.scope+"-"+n.context.column.prop)}))}function An(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"checked",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickHeaderCheckbox(l.context.column.prop,u)&&e),e}),null,null)),e["ɵdid"](2,16384,null,0,dl.h,[[8,null],dl.a],null,null),(l()(),e["ɵeld"](3,0,null,null,1,"label",[["class","datatable-permissions-header-cell-label custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["ɵted"](4,null,["",""]))],null,(function(l,n){var u=n.component;l(n,1,0,e["ɵinlineInterpolate"](1,"header_",n.context.column.prop,""),u.isHeaderChecked(n.context.column.prop),e["ɵnov"](n,2).validClass,e["ɵnov"](n,2).invalidClass),l(n,3,0,e["ɵinlineInterpolate"](1,"header_",n.context.column.prop,"")),l(n,4,0,n.context.column.name)}))}function On(l){return e["ɵvid"](0,[e["ɵpid"](0,g.TitleCasePipe,[]),e["ɵpid"](0,A.a,[]),e["ɵqud"](402653184,1,{headerPermissionCheckboxTpl:0}),e["ɵqud"](402653184,2,{cellScopeCheckboxTpl:0}),e["ɵqud"](402653184,3,{cellPermissionCheckboxTpl:0}),(l()(),e["ɵeld"](5,0,null,null,66,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,65,"form",[["name","roleForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["ɵnov"](l,8).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["ɵnov"](l,8).onReset()&&o),"submit"===n&&(o=!1!==e["ɵnov"](l,11).onSubmit()&&o),o}),null,null)),e["ɵdid"](7,16384,null,0,h.G,[],null,null),e["ɵdid"](8,540672,[["formDir",4]],0,h.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,h.d,null,[h.l]),e["ɵdid"](10,16384,null,0,h.s,[[4,h.d]],null,null),e["ɵdid"](11,16384,null,0,dl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](12,0,null,null,59,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](14,null,[""," ",""])),e["ɵppd"](15,1),e["ɵppd"](16,1),(l()(),e["ɵeld"](17,0,null,null,45,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](18,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](19,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,4,{FormControlNames:1}),e["ɵqud"](603979776,5,{messagesBlock:0}),(l()(),e["ɵeld"](22,0,null,0,4,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),e["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](24,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](25,{required:0}),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](27,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](28,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,29)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,29).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,29)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,29)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](29,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](31,671744,[[4,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](33,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](34,4210688,null,0,Ol.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](35,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Vn)),e["ɵdid"](37,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Un)),e["ɵdid"](39,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](40,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](41,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,6,{FormControlNames:1}),e["ɵqud"](603979776,7,{messagesBlock:0}),(l()(),e["ɵeld"](44,0,null,0,1,"label",[["class","cd-col-form-label"],["for","description"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Description"])),(l()(),e["ɵeld"](46,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](47,0,null,null,6,"input",[["class","form-control"],["formControlName","description"],["id","description"],["name","description"],["placeholder","Description..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,48)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,48).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,48)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,48)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](48,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](50,671744,[[6,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](52,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](53,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](54,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ul.b,Ul.a)),e["ɵdid"](55,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,8,{FormControlNames:1}),e["ɵqud"](603979776,9,{messagesBlock:0}),(l()(),e["ɵeld"](58,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Permissions"])),(l()(),e["ɵeld"](60,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,hl.b,hl.a)),e["ɵdid"](62,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null),(l()(),e["ɵeld"](63,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](64,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](65,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),jl.b,jl.a)),e["ɵdid"](66,114688,null,0,Bl.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](67,0,[""," ",""])),e["ɵppd"](68,1),e["ɵppd"](69,1),(l()(),e["ɵeld"](70,0,null,null,1,"cd-back-button",[],null,null,null,zl.b,zl.a)),e["ɵdid"](71,49152,null,0,Gl.a,[g.Location,Nl.b],null,null),(l()(),e["ɵand"](0,[[2,2],["cellScopeCheckboxTpl",2]],null,0,null,Mn)),(l()(),e["ɵand"](0,[[3,2],["cellPermissionCheckboxTpl",2]],null,0,null,Ln)),(l()(),e["ɵand"](0,[[1,2],["headerPermissionCheckboxTpl",2]],null,0,null,An))],(function(l,n){var u=n.component;l(n,8,0,u.roleForm),l(n,11,0,u.roleForm),l(n,19,0);var o=l(n,25,0,u.mode!==u.roleFormMode.editing);l(n,24,0,"cd-col-form-label",o),l(n,31,0,"name"),l(n,34,0,""),l(n,35,0,"name"),l(n,37,0,u.roleForm.showError("name",e["ɵnov"](n,8),"required")),l(n,39,0,u.roleForm.showError("name",e["ɵnov"](n,8),"notUnique")),l(n,41,0),l(n,50,0,"description"),l(n,53,0,"description"),l(n,55,0),l(n,62,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1),l(n,66,0,e["ɵnov"](n,8))}),(function(l,n){var u=n.component;l(n,6,0,e["ɵnov"](n,10).ngClassUntouched,e["ɵnov"](n,10).ngClassTouched,e["ɵnov"](n,10).ngClassPristine,e["ɵnov"](n,10).ngClassDirty,e["ɵnov"](n,10).ngClassValid,e["ɵnov"](n,10).ngClassInvalid,e["ɵnov"](n,10).ngClassPending);var o=e["ɵunv"](n,14,0,l(n,15,0,e["ɵnov"](n,0),u.action)),a=e["ɵunv"](n,14,1,l(n,16,0,e["ɵnov"](n,1),u.resource));l(n,14,0,o,a),l(n,18,0,e["ɵnov"](n,19).hasErrors,e["ɵnov"](n,19).hasSuccess),l(n,28,0,e["ɵnov"](n,33).ngClassUntouched,e["ɵnov"](n,33).ngClassTouched,e["ɵnov"](n,33).ngClassPristine,e["ɵnov"](n,33).ngClassDirty,e["ɵnov"](n,33).ngClassValid,e["ɵnov"](n,33).ngClassInvalid,e["ɵnov"](n,33).ngClassPending,e["ɵnov"](n,35).validClass,e["ɵnov"](n,35).invalidClass),l(n,40,0,e["ɵnov"](n,41).hasErrors,e["ɵnov"](n,41).hasSuccess),l(n,47,0,e["ɵnov"](n,52).ngClassUntouched,e["ɵnov"](n,52).ngClassTouched,e["ɵnov"](n,52).ngClassPristine,e["ɵnov"](n,52).ngClassDirty,e["ɵnov"](n,52).ngClassValid,e["ɵnov"](n,52).ngClassInvalid,e["ɵnov"](n,52).ngClassPending,e["ɵnov"](n,53).validClass,e["ɵnov"](n,53).invalidClass),l(n,54,0,e["ɵnov"](n,55).hasErrors,e["ɵnov"](n,55).hasSuccess);var d=e["ɵunv"](n,67,0,l(n,68,0,e["ɵnov"](n,0),u.action)),t=e["ɵunv"](n,67,1,l(n,69,0,e["ɵnov"](n,1),u.resource));l(n,67,0,d,t)}))}function jn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-role-form",[],null,null,null,On,_n)),e["ɵdid"](1,114688,null,0,Fn.a,[$.a,$.m,Hl.a,kn.a,yl.a,w.a,Nl.b],null,null)],(function(l,n){l(n,1,0)}),null)}var Bn=e["ɵccf"]("cd-role-form",Fn.a,jn,{},{},[]);u.d(n,"AuthModuleNgFactory",(function(){return zn})),u.d(n,"RoutedAuthModuleNgFactory",(function(){return Gn}));var zn=e["ɵcmf"](o.a,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[a.a,d.a,t.a,s.a,s.b,i.a,r.a,c.a,p.a,m.a,v.a,f.a,f.c,f.b,f.d]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,g.NgLocalization,g.NgLocaleLocalization,[e.LOCALE_ID,[2,g["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,h.D,h.D,[]),e["ɵmpd"](4608,h.h,h.h,[]),e["ɵmpd"](4608,b.a,b.a,[]),e["ɵmpd"](4608,C.a,C.a,[]),e["ɵmpd"](4608,R.a,R.a,[w.a]),e["ɵmpd"](4608,g.DatePipe,g.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,I.a,I.a,[]),e["ɵmpd"](4608,E.a,E.a,[]),e["ɵmpd"](4608,y.a,y.a,[]),e["ɵmpd"](4608,N.a,N.a,[y.a]),e["ɵmpd"](4608,x.a,x.a,[y.a]),e["ɵmpd"](4608,T.a,T.a,[y.a]),e["ɵmpd"](4608,k.a,k.a,[]),e["ɵmpd"](4608,D.a,D.a,[]),e["ɵmpd"](4608,S.a,S.a,[]),e["ɵmpd"](4608,q.a,q.a,[]),e["ɵmpd"](4608,P.a,P.a,[g.DatePipe]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,_.a,_.a,[]),e["ɵmpd"](4608,V.a,V.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,L.a,L.a,[w.a]),e["ɵmpd"](4608,A.a,A.a,[]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,B.b,B.b,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,Z.a,Z.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,G.a,e.ApplicationRef]),e["ɵmpd"](4608,K.c,K.c,[]),e["ɵmpd"](4608,H.a,H.a,[]),e["ɵmpd"](4608,X.b,X.b,[e.RendererFactory2,Z.a]),e["ɵmpd"](4608,J.y,J.y,[g.DOCUMENT]),e["ɵmpd"](4608,J.r,J.r,[]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,Y.f,Y.f,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,W.a,W.a,[$.m,Q.a]),e["ɵmpd"](4608,ll.f,ll.f,[]),e["ɵmpd"](4608,nl.t,nl.t,[]),e["ɵmpd"](4608,nl.v,nl.v,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,nl.h,nl.h,[]),e["ɵmpd"](4608,nl.d,nl.d,[]),e["ɵmpd"](4608,nl.j,nl.j,[]),e["ɵmpd"](4608,nl.l,nl.l,[]),e["ɵmpd"](4608,nl.u,nl.u,[nl.v,nl.l]),e["ɵmpd"](1073742336,ul.a,ul.a,[]),e["ɵmpd"](1073742336,g.CommonModule,g.CommonModule,[]),e["ɵmpd"](1073742336,h.C,h.C,[]),e["ɵmpd"](1073742336,h.n,h.n,[]),e["ɵmpd"](1073742336,z.d,z.d,[]),e["ɵmpd"](1073742336,h.y,h.y,[]),e["ɵmpd"](1073742336,el.a,el.a,[]),e["ɵmpd"](1073742336,B.c,B.c,[]),e["ɵmpd"](1073742336,K.d,K.d,[]),e["ɵmpd"](1073742336,H.d,H.d,[]),e["ɵmpd"](1073742336,ol.b,ol.b,[]),e["ɵmpd"](1073742336,X.e,X.e,[]),e["ɵmpd"](1073742336,al.a,al.a,[]),e["ɵmpd"](1073742336,Y.e,Y.e,[]),e["ɵmpd"](1073742336,dl.f,dl.f,[]),e["ɵmpd"](1073742336,tl.ClickOutsideModule,tl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,sl.b,sl.b,[]),e["ɵmpd"](1073742336,$.q,$.q,[[2,$.v],[2,$.m]]),e["ɵmpd"](1073742336,il.a,il.a,[]),e["ɵmpd"](1073742336,J.u,J.u,[]),e["ɵmpd"](1073742336,rl.a,rl.a,[]),e["ɵmpd"](1073742336,cl.a,cl.a,[]),e["ɵmpd"](1073742336,pl.a,pl.a,[]),e["ɵmpd"](1073742336,ll.d,ll.d,[]),e["ɵmpd"](1073742336,nl.g,nl.g,[]),e["ɵmpd"](1073742336,o.a,o.a,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,Y.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})),Gn=e["ɵcmf"](o.b,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[a.a,d.a,t.a,s.a,s.b,i.a,r.a,c.a,p.a,m.a,v.a,f.a,f.c,f.b,f.d,ql,Rn,Pn,Bn]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,g.NgLocalization,g.NgLocaleLocalization,[e.LOCALE_ID,[2,g["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,h.D,h.D,[]),e["ɵmpd"](4608,h.h,h.h,[]),e["ɵmpd"](4608,b.a,b.a,[]),e["ɵmpd"](4608,C.a,C.a,[]),e["ɵmpd"](4608,R.a,R.a,[w.a]),e["ɵmpd"](4608,g.DatePipe,g.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,I.a,I.a,[]),e["ɵmpd"](4608,E.a,E.a,[]),e["ɵmpd"](4608,y.a,y.a,[]),e["ɵmpd"](4608,N.a,N.a,[y.a]),e["ɵmpd"](4608,x.a,x.a,[y.a]),e["ɵmpd"](4608,T.a,T.a,[y.a]),e["ɵmpd"](4608,k.a,k.a,[]),e["ɵmpd"](4608,D.a,D.a,[]),e["ɵmpd"](4608,S.a,S.a,[]),e["ɵmpd"](4608,q.a,q.a,[]),e["ɵmpd"](4608,P.a,P.a,[g.DatePipe]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,_.a,_.a,[]),e["ɵmpd"](4608,V.a,V.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,L.a,L.a,[w.a]),e["ɵmpd"](4608,A.a,A.a,[]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,B.b,B.b,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,Z.a,Z.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,G.a,e.ApplicationRef]),e["ɵmpd"](4608,K.c,K.c,[]),e["ɵmpd"](4608,H.a,H.a,[]),e["ɵmpd"](4608,X.b,X.b,[e.RendererFactory2,Z.a]),e["ɵmpd"](4608,J.y,J.y,[g.DOCUMENT]),e["ɵmpd"](4608,J.r,J.r,[]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,Y.f,Y.f,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,W.a,W.a,[$.m,Q.a]),e["ɵmpd"](4608,ll.f,ll.f,[]),e["ɵmpd"](4608,nl.t,nl.t,[]),e["ɵmpd"](4608,nl.v,nl.v,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,nl.h,nl.h,[]),e["ɵmpd"](4608,nl.d,nl.d,[]),e["ɵmpd"](4608,nl.j,nl.j,[]),e["ɵmpd"](4608,nl.l,nl.l,[]),e["ɵmpd"](4608,nl.u,nl.u,[nl.v,nl.l]),e["ɵmpd"](1073742336,ul.a,ul.a,[]),e["ɵmpd"](1073742336,g.CommonModule,g.CommonModule,[]),e["ɵmpd"](1073742336,h.C,h.C,[]),e["ɵmpd"](1073742336,h.n,h.n,[]),e["ɵmpd"](1073742336,z.d,z.d,[]),e["ɵmpd"](1073742336,h.y,h.y,[]),e["ɵmpd"](1073742336,el.a,el.a,[]),e["ɵmpd"](1073742336,B.c,B.c,[]),e["ɵmpd"](1073742336,K.d,K.d,[]),e["ɵmpd"](1073742336,H.d,H.d,[]),e["ɵmpd"](1073742336,ol.b,ol.b,[]),e["ɵmpd"](1073742336,X.e,X.e,[]),e["ɵmpd"](1073742336,al.a,al.a,[]),e["ɵmpd"](1073742336,Y.e,Y.e,[]),e["ɵmpd"](1073742336,dl.f,dl.f,[]),e["ɵmpd"](1073742336,tl.ClickOutsideModule,tl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,sl.b,sl.b,[]),e["ɵmpd"](1073742336,$.q,$.q,[[2,$.v],[2,$.m]]),e["ɵmpd"](1073742336,il.a,il.a,[]),e["ɵmpd"](1073742336,J.u,J.u,[]),e["ɵmpd"](1073742336,rl.a,rl.a,[]),e["ɵmpd"](1073742336,cl.a,cl.a,[]),e["ɵmpd"](1073742336,pl.a,pl.a,[]),e["ɵmpd"](1073742336,ll.d,ll.d,[]),e["ɵmpd"](1073742336,nl.g,nl.g,[]),e["ɵmpd"](1073742336,o.a,o.a,[]),e["ɵmpd"](1073742336,o.b,o.b,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,Y.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](1024,$.k,(function(){return[[{path:"",redirectTo:"users",pathMatch:"full"},{path:"users",data:o.c,children:[{path:"",component:Il.a},{path:"create",component:Zl.a,data:o.d},{path:"edit/:username",component:Zl.a,data:o.e}]},{path:"roles",data:o.f,children:[{path:"",component:Tn.a},{path:"create",component:Fn.a,data:o.g},{path:"edit/:name",component:Fn.a,data:o.h}]}]]}),[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.988fe96f3a1b2f8c64cd.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.988fe96f3a1b2f8c64cd.js
deleted file mode 100644 (file)
index 99402d2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{Znkk:function(l,n,u){"use strict";u.r(n);var e=u("8Y7J"),t=u("sne2"),i=u("Avrn"),a=u("+0ag"),o=u("mSOc");class s{constructor(l,n,u){this.route=l,this.summaryService=n,this.cephReleaseNamePipe=u,this.message="The Object Gateway service is not configured."}ngOnInit(){const l=this.summaryService.subscribe(n=>{if(!n)return;const u=this.cephReleaseNamePipe.transform(n.version);this.docsUrl=`http://docs.ceph.com/docs/${u}/mgr/dashboard/`+"#enabling-the-object-gateway-management-frontend",setTimeout(()=>{l.unsubscribe()},0)});this.routeParamsSubscribe=this.route.params.subscribe(l=>{this.message=l.message})}ngOnDestroy(){this.routeParamsSubscribe.unsubscribe()}}var d=u("s7LF"),r=u("LvDl"),c=u("mrSG"),m=u("IheW"),g=u("cp0P"),p=u("LRne"),f=u("5+tZ"),v=u("xTzq"),h=u("pL04");let b=(()=>{let l=class{constructor(l){this.http=l,this.url="api/rgw/bucket"}list(){return this.enumerate().pipe(Object(f.a)(l=>l.length>0?Object(g.a)(l.map(l=>this.get(l))):Object(p.a)([])))}enumerate(){return this.http.get(this.url)}get(l){return this.http.get(`${this.url}/${l}`)}create(l,n,u,e,t,i,a,o){return this.http.post(this.url,null,{params:new m.h({fromObject:{bucket:l,uid:n,zonegroup:u,placement_target:e,lock_enabled:String(t),lock_mode:i,lock_retention_period_days:a,lock_retention_period_years:o}})})}update(l,n,u,e,t,i,a,o,s,d){let r=new m.h;return r=r.append("bucket_id",n),r=r.append("uid",u),r=r.append("versioning_state",e),r=r.append("mfa_delete",t),r=r.append("mfa_token_serial",i),r=r.append("mfa_token_pin",a),r=r.append("lock_mode",o),r=r.append("lock_retention_period_days",s),r=r.append("lock_retention_period_years",d),this.http.put(`${this.url}/${l}`,null,{params:r})}delete(l,n=!0){let u=new m.h;return u=u.append("purge_objects",n?"true":"false"),this.http.delete(`${this.url}/${l}`,{params:u})}exists(l){return this.enumerate().pipe(Object(f.a)(n=>{const u=r.indexOf(n,l);return Object(p.a)(-1!==u)}))}};return l.ngInjectableDef=e["ɵɵdefineInjectable"]({factory:function(){return new l(e["ɵɵinject"](m.c))},token:l,providedIn:h.a}),l=c.__decorate([v.a,c.__metadata("design:paramtypes",[m.c])],l),l})(),C=(()=>{let l=class{constructor(l){this.http=l,this.url="api/rgw/site"}get(l){let n=new m.h;return l&&(n=n.append("query",l)),this.http.get(this.url,{params:n})}};return l.ngInjectableDef=e["ɵɵdefineInjectable"]({factory:function(){return new l(e["ɵɵinject"](m.c))},token:l,providedIn:h.a}),l=c.__decorate([v.a,c.__metadata("design:paramtypes",[m.c])],l),l})();var _=u("P8lu"),R=u("oxzT"),y=u("mtw6"),k=u("2EZI"),I=u("1Ni5"),w=u("9nlD"),E=function(l){return l.ENABLED="Enabled",l.DISABLED="Disabled",l}({}),N=function(l){return l.ENABLED="Enabled",l.SUSPENDED="Suspended",l}({});class q{constructor(l,n,u,e,i,a,o,s,d){this.route=l,this.router=n,this.formBuilder=u,this.rgwBucketService=e,this.rgwSiteService=i,this.rgwUserService=a,this.notificationService=o,this.i18n=s,this.actionLabels=d,this.editing=!1,this.error=!1,this.loading=!1,this.owners=null,this.placementTargets=[],this.isVersioningEnabled=!1,this.isVersioningAlreadyEnabled=!1,this.isMfaDeleteEnabled=!1,this.isMfaDeleteAlreadyEnabled=!1,this.icons=R.a,this.editing=this.router.url.startsWith(`/rgw/bucket/${t.e.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("bucket"),this.createForm()}createForm(){const l=this,n=I.a.custom("eitherDaysOrYears",()=>{if(!l.bucketForm||!r.get(l.bucketForm.getRawValue(),"lock_enabled"))return!1;const n=l.bucketForm.getValue("lock_retention_period_years"),u=l.bucketForm.getValue("lock_retention_period_days");return u>0&&n>0||0===u&&0===n}),u=[0,[I.a.number(!1),n]];this.bucketForm=this.formBuilder.group({id:[null],bid:[null,[d.B.required],this.editing?[]:[this.bucketNameValidator()]],owner:[null,[d.B.required]],"placement-target":[null,this.editing?[]:[d.B.required]],versioning:[null],"mfa-delete":[null],"mfa-token-serial":[""],"mfa-token-pin":[""],lock_enabled:[{value:!1,disabled:this.editing}],lock_mode:["COMPLIANCE"],lock_retention_period_days:u,lock_retention_period_years:u})}ngOnInit(){this.rgwUserService.enumerate().subscribe(l=>{this.owners=l.sort()}),this.editing||this.rgwSiteService.get("placement-targets").subscribe(l=>{this.zonegroup=l.zonegroup,r.forEach(l.placement_targets,l=>{l.description=`${l.name} (${this.i18n("pool")}: ${l.data_pool})`,this.placementTargets.push(l)}),1===this.placementTargets.length&&this.bucketForm.get("placement-target").setValue(this.placementTargets[0].name)}),this.route.params.subscribe(l=>{if(!l.hasOwnProperty("bid"))return;const n=decodeURIComponent(l.bid);this.loading=!0,this.rgwBucketService.get(n).subscribe(l=>{this.loading=!1;const n=r.clone(this.bucketForm.getRawValue());let u=r.pick(l,r.keys(n));u["placement-target"]=l.placement_rule,u=r.merge(n,u),this.bucketForm.setValue(u),this.editing&&(this.setVersioningStatus(l.versioning),this.isVersioningAlreadyEnabled=this.isVersioningEnabled,this.setMfaDeleteStatus(l.mfa_delete),this.isMfaDeleteAlreadyEnabled=this.isMfaDeleteEnabled,this.setMfaDeleteValidators())})})}goToListView(){this.router.navigate(["/rgw/bucket"])}submit(){if(this.bucketForm.pristine)return void this.goToListView();const l=this.bucketForm.value;if(this.editing){const n=this.getVersioningStatus(),u=this.getMfaDeleteStatus();this.rgwBucketService.update(l.bid,l.id,l.owner,n,u,l["mfa-token-serial"],l["mfa-token-pin"],l.lock_mode,l.lock_retention_period_days,l.lock_retention_period_years).subscribe(()=>{this.notificationService.show(y.a.success,this.i18n('Updated Object Gateway bucket "{{bid}}".',l)),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}else this.rgwBucketService.create(l.bid,l.owner,this.zonegroup,l["placement-target"],l.lock_enabled,l.lock_mode,l.lock_retention_period_days,l.lock_retention_period_years).subscribe(()=>{this.notificationService.show(y.a.success,this.i18n('Created Object Gateway bucket "{{bid}}"',l)),this.goToListView()},()=>{this.bucketForm.setErrors({cdSubmitButton:!0})})}bucketNameValidator(){const l=this.rgwBucketService;return n=>new Promise(u=>{if(n.pristine||""===n.value)return void u(null);const e=[];e.push(l=>!I.a.ip()(l)),e.push(l=>r.inRange(l.length,3,64)),e.push(l=>{const n=r.split(l,".");return r.every(n,l=>l===r.toLower(l)&&!l.includes("_")&&!!/[0-9a-z-]/.test(l)&&r.every([0,l.length],n=>/[a-z]/.test(l[n])||r.isInteger(r.parseInt(l[n]))))}),r.every(e,l=>l(n.value))?l.exists(n.value).subscribe(l=>{u(l?{bucketNameExists:!0}:null)}):u({bucketNameInvalid:!0})})}areMfaCredentialsRequired(){return this.isMfaDeleteEnabled!==this.isMfaDeleteAlreadyEnabled||this.isMfaDeleteAlreadyEnabled&&this.isVersioningEnabled!==this.isVersioningAlreadyEnabled}setMfaDeleteValidators(){const l=this.bucketForm.get("mfa-token-serial"),n=this.bucketForm.get("mfa-token-pin");this.areMfaCredentialsRequired()?(l.setValidators(d.B.required),n.setValidators(d.B.required)):(l.setValidators(null),n.setValidators(null)),l.updateValueAndValidity(),n.updateValueAndValidity()}getVersioningStatus(){return this.isVersioningEnabled?N.ENABLED:N.SUSPENDED}setVersioningStatus(l){this.isVersioningEnabled=l===N.ENABLED}updateVersioning(){this.isVersioningEnabled=!this.isVersioningEnabled,this.setMfaDeleteValidators()}getMfaDeleteStatus(){return this.isMfaDeleteEnabled?E.ENABLED:E.DISABLED}setMfaDeleteStatus(l){this.isMfaDeleteEnabled=l===E.ENABLED}updateMfaDelete(){this.isMfaDeleteEnabled=!this.isMfaDeleteEnabled,this.setMfaDeleteValidators()}}var T=u("HDdC"),V=u("+fVR"),x=u("0+/T"),S=u("uIqm"),D=u("vCyI"),F=u("aexS"),j=u("EgGo");const P=new j.a("rgw/bucket");class B extends V.a{constructor(l,n,u,e,t,i,a){super(),this.authStorageService=l,this.rgwBucketService=n,this.bsModalService=u,this.i18n=e,this.urlBuilder=t,this.actionLabels=i,this.ngZone=a,this.columns=[],this.buckets=[],this.selection=new D.a,this.isStale=!1,this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:this.i18n("Name"),prop:"bid",flexGrow:1},{name:this.i18n("Owner"),prop:"owner",flexGrow:1}];const o=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().bid)}`;this.tableActions=[{permission:"create",icon:R.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:l=>!l.hasSelection},{permission:"update",icon:R.a.edit,routerLink:()=>this.urlBuilder.getEdit(o()),name:this.actionLabels.EDIT},{permission:"delete",icon:R.a.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:l=>l.hasMultiSelection}],this.timeConditionReached()}timeConditionReached(){clearTimeout(this.staleTimeout),this.ngZone.runOutsideAngular(()=>{this.staleTimeout=window.setTimeout(()=>{this.ngZone.run(()=>{this.isStale=!0})},1e4)})}getBucketList(l){this.isStale=!1,this.timeConditionReached(),this.rgwBucketService.list().subscribe(l=>{this.buckets=l},()=>{l.error()})}updateSelection(l){this.selection=l}deleteAction(){this.bsModalService.show(x.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"bucket":"buckets"),itemNames:this.selection.selected.map(l=>l.bid),submitActionObservable:()=>new T.a(l=>{Object(g.a)(this.selection.selected.map(l=>this.rgwBucketService.delete(l.bid))).subscribe(null,n=>{l.error(n),this.table.refreshBtn()},()=>{l.complete(),this.table.refreshBtn()})})}})}}let A=(()=>{let l=class{constructor(l){this.http=l,this.url="api/rgw/daemon"}list(){return this.http.get(this.url)}get(l){return this.http.get(`${this.url}/${l}`)}};return l.ngInjectableDef=e["ɵɵdefineInjectable"]({factory:function(){return new l(e["ɵɵinject"](m.c))},token:l,providedIn:h.a}),l=c.__decorate([v.a,c.__metadata("design:paramtypes",[m.c])],l),l})();var M=u("85J/");class U extends V.a{constructor(l,n,u,e,t){super(),this.rgwDaemonService=l,this.authStorageService=n,this.cephShortVersionPipe=u,this.i18n=e,this.rgwSiteService=t,this.columns=[],this.daemons=[]}ngOnInit(){this.grafanaPermission=this.authStorageService.getPermissions().grafana,this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:2},{name:this.i18n("Hostname"),prop:"server_hostname",flexGrow:2},{name:this.i18n("Version"),prop:"version",flexGrow:1,pipe:this.cephShortVersionPipe}],this.rgwSiteService.get("realms").subscribe(l=>this.isMultiSite=l.length>0)}getDaemonList(l){this.rgwDaemonService.list().subscribe(l=>{this.daemons=l},()=>{l.error()})}}var O=u("GyhO"),L=u("aXbf"),z=function(l){return l.USERS="users",l.BUCKETS="buckets",l.METADATA="metadata",l.USAGE="usage",l.ZONE="zone",l}({});let G=(()=>{class l{static getAll(){return Object.values(l.capabilities)}}return l.capabilities=z,l})();class K{constructor(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.types=[],this.resource=this.i18n("capability"),this.createForm()}createForm(){this.formGroup=this.formBuilder.group({type:[null,[d.B.required]],perm:[null,[d.B.required]]})}setEditing(l=!0){this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.ADD}setValues(l,n){this.formGroup.setValue({type:l,perm:n})}setCapabilities(l){const n=[];l.forEach(l=>{n.push(l.type)}),this.types=[],G.getAll().forEach(l=>{-1===r.indexOf(n,l)&&this.types.push(l)})}onSubmit(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()}}class ${constructor(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.viewing=!0,this.userCandidates=[],this.resource=this.i18n("S3 Key"),this.createForm()}createForm(){this.formGroup=this.formBuilder.group({user:[null,[d.B.required]],generate_key:[!0],access_key:[null,[I.a.requiredIf({generate_key:!1})]],secret_key:[null,[I.a.requiredIf({generate_key:!1})]]})}setViewing(l=!0){this.viewing=l,this.action=this.viewing?this.actionLabels.SHOW:this.actionLabels.CREATE}setValues(l,n,u){this.formGroup.setValue({user:l,generate_key:r.isEmpty(n),access_key:n,secret_key:u})}setUserCandidates(l){this.userCandidates=l}onSubmit(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()}}class Z{}class Q{constructor(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.subusers=[],this.resource=this.i18n("Subuser"),this.createForm()}createForm(){this.formGroup=this.formBuilder.group({uid:[null],subuid:[null,[d.B.required,this.subuserValidator()]],perm:[null,[d.B.required]],generate_secret:[!0],secret_key:[null,[I.a.requiredIf({generate_secret:!1})]]})}subuserValidator(){const l=this;return n=>l.editing?null:Object(I.b)(n.value)?null:l.subusers.some(u=>r.isEqual(l.getSubuserName(u.id),n.value))?{subuserIdExists:!0}:null}getSubuserName(l){if(r.isEmpty(l))return l;const n=l.match(/([^:]+)(:(.+))?/);return r.isUndefined(n[3])?n[1]:n[3]}setEditing(l=!0){this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE}setValues(l,n="",u=""){this.formGroup.setValue({uid:l,subuid:this.getSubuserName(n),perm:u,generate_secret:!0,secret_key:null})}setSubusers(l){this.subusers=l}onSubmit(){const l=this.formGroup.value,n=new Z;n.id=`${l.uid}:${l.subuid}`,n.permissions=l.perm,n.generate_secret=l.generate_secret,n.secret_key=l.secret_key,this.submitAction.emit(n),this.bsModalRef.hide()}}class Y{constructor(l,n,u){this.bsModalRef=l,this.i18n=n,this.actionLabels=u,this.resource=this.i18n("Swift Key"),this.action=this.actionLabels.SHOW}setValues(l,n){this.user=l,this.secret_key=n}}class W{constructor(l,n,u,e,t,i,a,o){this.formBuilder=l,this.route=n,this.router=u,this.rgwUserService=e,this.bsModalService=t,this.notificationService=i,this.i18n=a,this.actionLabels=o,this.editing=!1,this.error=!1,this.loading=!1,this.submitObservables=[],this.icons=R.a,this.subusers=[],this.s3Keys=[],this.swiftKeys=[],this.capabilities=[],this.resource=this.i18n("user"),this.subuserLabel=this.i18n("subuser"),this.s3keyLabel=this.i18n("S3 Key"),this.capabilityLabel=this.i18n("capability"),this.createForm()}createForm(){this.userForm=this.formBuilder.group({uid:[null,[d.B.required],[I.a.unique(this.rgwUserService.exists,this.rgwUserService)]],display_name:[null,[d.B.required]],email:[null,[I.a.email],[I.a.unique(this.rgwUserService.emailExists,this.rgwUserService)]],max_buckets_mode:[1],max_buckets:[1e3,[I.a.requiredIf({max_buckets_mode:"1"}),I.a.number(!1),d.B.min(1)]],suspended:[!1],generate_key:[!0],access_key:[null,[I.a.requiredIf({generate_key:!1})]],secret_key:[null,[I.a.requiredIf({generate_key:!1})]],user_quota_enabled:[!1],user_quota_max_size_unlimited:[!0],user_quota_max_size:[null,[I.a.composeIf({user_quota_enabled:!0,user_quota_max_size_unlimited:!1},[d.B.required,this.quotaMaxSizeValidator])]],user_quota_max_objects_unlimited:[!0],user_quota_max_objects:[null,[d.B.min(0),I.a.requiredIf({user_quota_enabled:!0,user_quota_max_objects_unlimited:!1})]],bucket_quota_enabled:[!1],bucket_quota_max_size_unlimited:[!0],bucket_quota_max_size:[null,[I.a.composeIf({bucket_quota_enabled:!0,bucket_quota_max_size_unlimited:!1},[d.B.required,this.quotaMaxSizeValidator])]],bucket_quota_max_objects_unlimited:[!0],bucket_quota_max_objects:[null,[d.B.min(0),I.a.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_objects_unlimited:!1})]]})}ngOnInit(){this.editing=this.router.url.startsWith(`/rgw/user/${t.e.EDIT}`),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.route.params.subscribe(l=>{if(!l.hasOwnProperty("uid"))return;const n=decodeURIComponent(l.uid);this.loading=!0;const u=[];u.push(this.rgwUserService.get(n)),u.push(this.rgwUserService.getQuota(n)),Object(g.a)(u).subscribe(l=>{this.loading=!1;const n=r.clone(this.userForm.value);let u=r.pick(l[0],r.keys(this.userForm.value));switch(u.max_buckets){case-1:u.max_buckets_mode=-1,u.max_buckets="";break;case 0:u.max_buckets_mode=0,u.max_buckets="";break;default:u.max_buckets_mode=1}["user","bucket"].forEach(n=>{const e=l[1][n+"_quota"];u[n+"_quota_enabled"]=e.enabled,e.max_size<0?(u[n+"_quota_max_size_unlimited"]=!0,u[n+"_quota_max_size"]=null):(u[n+"_quota_max_size_unlimited"]=!1,u[n+"_quota_max_size"]=`${e.max_size} B`),e.max_objects<0?(u[n+"_quota_max_objects_unlimited"]=!0,u[n+"_quota_max_objects"]=null):(u[n+"_quota_max_objects_unlimited"]=!1,u[n+"_quota_max_objects"]=e.max_objects)}),u=r.merge(n,u),this.userForm.setValue(u),this.subusers=l[0].subusers,this.s3Keys=l[0].keys,this.swiftKeys=l[0].swift_keys;const e={"read, write":"*"};l[0].caps.forEach(l=>{l.perm in e&&(l.perm=e[l.perm])}),this.capabilities=l[0].caps},l=>{this.error=l})})}goToListView(){this.router.navigate(["/rgw/user"])}onSubmit(){let l;if(this.userForm.pristine)return void this.goToListView();const n=this.userForm.getValue("uid");if(this.editing){if(this._isGeneralDirty()){const l=this._getUpdateArgs();this.submitObservables.push(this.rgwUserService.update(n,l))}l=this.i18n('Updated Object Gateway user "{{uid}}"',{uid:n})}else{const u=this._getCreateArgs();this.submitObservables.push(this.rgwUserService.create(u)),l=this.i18n('Created Object Gateway user "{{uid}}"',{uid:n})}if(this._isUserQuotaDirty()){const l=this._getUserQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,l))}if(this._isBucketQuotaDirty()){const l=this._getBucketQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(n,l))}Object(O.a)(...this.submitObservables).subscribe({error:()=>{this.userForm.setErrors({cdSubmitButton:!0})},complete:()=>{this.notificationService.show(y.a.success,l),this.goToListView()}})}quotaMaxSizeValidator(l){return Object(I.b)(l.value)?null:null===RegExp("^(\\d+(\\.\\d+)?)\\s*(B|K(B|iB)?|M(B|iB)?|G(B|iB)?|T(B|iB)?)?$","i").exec(l.value)?{quotaMaxSize:!0}:(new L.a).toBytes(l.value)<1024?{quotaMaxSize:!0}:null}setSubuser(l,n){const u={"full-control":"full","read-write":"readwrite"},e=this.userForm.getValue("uid");this.submitObservables.push(this.rgwUserService.createSubuser(e,{subuser:l.id,access:l.permissions in u?u[l.permissions]:l.permissions,key_type:"swift",secret_key:l.secret_key,generate_secret:l.generate_secret?"true":"false"})),r.isNumber(n)?this.subusers[n]=l:(this.subusers.push(l),this.swiftKeys.push({user:l.id,secret_key:l.generate_secret?"Apply your changes first...":l.secret_key})),this.userForm.markAsDirty()}deleteSubuser(l){const n=this.subusers[l];this.submitObservables.push(this.rgwUserService.deleteSubuser(this.userForm.getValue("uid"),n.id)),this.s3Keys=this.s3Keys.filter(l=>l.user!==n.id),this.swiftKeys=this.swiftKeys.filter(l=>l.user!==n.id),this.subusers.splice(l,1),this.userForm.markAsDirty()}setCapability(l,n){const u=this.userForm.getValue("uid");if(r.isNumber(n)){const e=this.capabilities[n];this.submitObservables.push(this.rgwUserService.deleteCapability(u,e.type,e.perm)),this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities[n]=l}else this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities.push(l);this.userForm.markAsDirty()}deleteCapability(l){const n=this.capabilities[l];this.submitObservables.push(this.rgwUserService.deleteCapability(this.userForm.getValue("uid"),n.type,n.perm)),this.capabilities.splice(l,1),this.userForm.markAsDirty()}hasAllCapabilities(){return!r.difference(G.getAll(),r.map(this.capabilities,"type")).length}setS3Key(l,n){if(r.isNumber(n));else{const n=l.user.match(/([^:]+)(:(.+))?/),u=n[1],e={subuser:n[2]?n[3]:"",generate_key:l.generate_key?"true":"false"};"false"===e.generate_key&&(r.isNil(l.access_key)||(e.access_key=l.access_key),r.isNil(l.secret_key)||(e.secret_key=l.secret_key)),this.submitObservables.push(this.rgwUserService.addS3Key(u,e)),this.s3Keys.push({user:l.user,access_key:l.generate_key?"Apply your changes first...":l.access_key,secret_key:l.generate_key?"Apply your changes first...":l.secret_key})}this.userForm.markAsDirty()}deleteS3Key(l){const n=this.s3Keys[l];this.submitObservables.push(this.rgwUserService.deleteS3Key(this.userForm.getValue("uid"),n.access_key)),this.s3Keys.splice(l,1),this.userForm.markAsDirty()}showSubuserModal(l){const n=this.userForm.getValue("uid"),u=this.bsModalService.show(Q);if(r.isNumber(l)){const e=this.subusers[l];u.content.setEditing(),u.content.setValues(n,e.id,e.permissions)}else u.content.setEditing(!1),u.content.setValues(n),u.content.setSubusers(this.subusers);u.content.submitAction.subscribe(n=>{this.setSubuser(n,l)})}showS3KeyModal(l){const n=this.bsModalService.show($);if(r.isNumber(l)){const u=this.s3Keys[l];n.content.setViewing(),n.content.setValues(u.user,u.access_key,u.secret_key)}else{const l=this._getS3KeyUserCandidates();n.content.setViewing(!1),n.content.setUserCandidates(l),n.content.submitAction.subscribe(l=>{this.setS3Key(l)})}}showSwiftKeyModal(l){const n=this.bsModalService.show(Y),u=this.swiftKeys[l];n.content.setValues(u.user,u.secret_key)}showCapabilityModal(l){const n=this.bsModalService.show(K);if(r.isNumber(l)){const u=this.capabilities[l];n.content.setEditing(),n.content.setValues(u.type,u.perm)}else n.content.setEditing(!1),n.content.setCapabilities(this.capabilities);n.content.submitAction.subscribe(n=>{this.setCapability(n,l)})}_isGeneralDirty(){return["display_name","email","max_buckets_mode","max_buckets","suspended"].some(l=>this.userForm.get(l).dirty)}_isUserQuotaDirty(){return["user_quota_enabled","user_quota_max_size_unlimited","user_quota_max_size","user_quota_max_objects_unlimited","user_quota_max_objects"].some(l=>this.userForm.get(l).dirty)}_isBucketQuotaDirty(){return["bucket_quota_enabled","bucket_quota_max_size_unlimited","bucket_quota_max_size","bucket_quota_max_objects_unlimited","bucket_quota_max_objects"].some(l=>this.userForm.get(l).dirty)}_getCreateArgs(){const l={uid:this.userForm.getValue("uid"),display_name:this.userForm.getValue("display_name"),suspended:this.userForm.getValue("suspended"),email:"",max_buckets:this.userForm.getValue("max_buckets"),generate_key:this.userForm.getValue("generate_key"),access_key:"",secret_key:""},n=this.userForm.getValue("email");r.isString(n)&&n.length>0&&r.merge(l,{email:n}),this.userForm.getValue("generate_key")||r.merge(l,{generate_key:!1,access_key:this.userForm.getValue("access_key"),secret_key:this.userForm.getValue("secret_key")});const u=parseInt(this.userForm.getValue("max_buckets_mode"),10);return r.includes([-1,0],u)&&r.merge(l,{max_buckets:u}),l}_getUpdateArgs(){const l={},n=["display_name","email","max_buckets","suspended"];for(const e of n)l[e]=this.userForm.getValue(e);const u=parseInt(this.userForm.getValue("max_buckets_mode"),10);return r.includes([-1,0],u)&&(l.max_buckets=u),l}_getUserQuotaArgs(){const l={quota_type:"user",enabled:this.userForm.getValue("user_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("user_quota_max_size_unlimited")){const n=(new L.a).toBytes(this.userForm.getValue("user_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("user_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("user_quota_max_objects")),l}_getBucketQuotaArgs(){const l={quota_type:"bucket",enabled:this.userForm.getValue("bucket_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("bucket_quota_max_size_unlimited")){const n=(new L.a).toBytes(this.userForm.getValue("bucket_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("bucket_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("bucket_quota_max_objects")),l}_getS3KeyUserCandidates(){let l=[];const n=this.userForm.getValue("uid");return r.isString(n)&&!r.isEmpty(n)&&l.push(n),this.subusers.forEach(n=>{l.push(n.id)}),this.s3Keys.forEach(n=>{l.push(n.user)}),l=r.uniq(l),l}}var J=u("x38r");const X=new j.a("rgw/user");class H extends V.a{constructor(l,n,u,e,t,i,a){super(),this.authStorageService=l,this.rgwUserService=n,this.bsModalService=u,this.i18n=e,this.urlBuilder=t,this.actionLabels=i,this.ngZone=a,this.columns=[],this.users=[],this.selection=new D.a,this.isStale=!1,this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:this.i18n("Username"),prop:"uid",flexGrow:1},{name:this.i18n("Full name"),prop:"display_name",flexGrow:1},{name:this.i18n("Email address"),prop:"email",flexGrow:1},{name:this.i18n("Suspended"),prop:"suspended",flexGrow:1,cellClass:"text-center",cellTransformation:J.a.checkIcon},{name:this.i18n("Max. buckets"),prop:"max_buckets",flexGrow:1,cellTransformation:J.a.map,customTemplateConfig:{"-1":this.i18n("Disabled"),0:this.i18n("Unlimited")}}];const o=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().uid)}`;this.tableActions=[{permission:"create",icon:R.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE,canBePrimary:l=>!l.hasSelection},{permission:"update",icon:R.a.edit,routerLink:()=>this.urlBuilder.getEdit(o()),name:this.actionLabels.EDIT},{permission:"delete",icon:R.a.destroy,click:()=>this.deleteAction(),disable:()=>!this.selection.hasSelection,name:this.actionLabels.DELETE,canBePrimary:l=>l.hasMultiSelection}],this.timeConditionReached()}timeConditionReached(){clearTimeout(this.staleTimeout),this.ngZone.runOutsideAngular(()=>{this.staleTimeout=window.setTimeout(()=>{this.ngZone.run(()=>{this.isStale=!0})},1e4)})}getUserList(l){this.isStale=!1,this.timeConditionReached(),this.rgwUserService.list().subscribe(l=>{this.users=l},()=>{l.error()})}updateSelection(l){this.selection=l}deleteAction(){this.bsModalService.show(x.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"user":"users"),itemNames:this.selection.selected.map(l=>l.uid),submitActionObservable:()=>new T.a(l=>{Object(g.a)(this.selection.selected.map(l=>this.rgwUserService.delete(l.uid))).subscribe(null,n=>{l.error(n),this.table.refreshBtn()},()=>{l.complete(),this.table.refreshBtn()})})}})}}class ll{}const nl={breadcrumbs:"Daemons"},ul={breadcrumbs:"Users"},el={breadcrumbs:t.a.CREATE},tl={breadcrumbs:t.a.EDIT},il={breadcrumbs:"Buckets"},al={breadcrumbs:t.a.CREATE},ol={breadcrumbs:t.a.EDIT},sl={breadcrumbs:"Object Gateway"};class dl{}var rl=u("MdoF"),cl=u("ES0t"),ml=u("Xg1U"),gl=u("z5nN"),pl=u("iutN"),fl=u("pMnS"),vl=u("EEJc"),hl=u("PEr+"),bl=u("a40w"),Cl=u("hfeG"),_l=u("2ZVE"),Rl=u("a278"),yl=u("insk"),kl=u("cUpR"),Il=u("20UP"),wl=u("GiVz"),El=u("pKUh"),Nl=u("sLuX"),ql=u("FSuO"),Tl=u("a0VL"),Vl=u("j8L6"),xl=u("b5OY"),Sl=u("pxLl"),Dl=u("SVse");class Fl{constructor(l,n){this.rgwDaemonService=l,this.authStorageService=n,this.serviceId="",this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection&&(this.serviceId=this.selection.id)}getMetaData(){r.isEmpty(this.serviceId)||this.rgwDaemonService.get(this.serviceId).subscribe(l=>{this.metadata=l.rgw_metadata})}}var jl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Pl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","x5ARzZtmk"]],null,null,null,Rl.b,Rl.a)),e["ɵdid"](3,638976,null,0,yl.a,[o.a,kl.b,Il.a,a.a,wl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){var u=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"rgw-instance-detail?var-rgw_servers=rgw."+u.serviceId,"one","x5ARzZtmk")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function Bl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],(function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.getMetaData()&&e),e}),Nl.b,Nl.a)),e["ɵdid"](5,638976,null,0,ql.a,[Tl.a],{data:[0,"data"]},{fetchData:"fetchData"}),(l()(),e["ɵeld"](6,0,null,0,3,"tab",[["heading","Performance Counters"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](7,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](8,0,null,null,1,"cd-table-performance-counter",[["serviceType","rgw"]],null,null,null,Vl.b,Vl.a)),e["ɵdid"](9,114688,null,0,xl.a,[Sl.a,wl.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,Pl)),e["ɵdid"](11,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.metadata),l(n,7,0,"Performance Counters"),l(n,9,0,"rgw",u.serviceId),l(n,11,0,u.grafanaPermission.read)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,6,0,e["ɵnov"](n,7).id,e["ɵnov"](n,7).active,e["ɵnov"](n,7).addClass,e["ɵnov"](n,7).role,e["ɵnov"](n,7).ariaLabelledby)}))}function Al(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Bl)),e["ɵdid"](1,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,1,0,n.component.selection)}),null)}function Ml(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-daemon-details",[],null,null,null,Al,jl)),e["ɵdid"](1,573440,null,0,Fl,[A,F.a],null,null)],null,null)}var Ul=e["ɵccf"]("cd-rgw-daemon-details",Fl,Ml,{selection:"selection"},{},[]),Ol=u("iExv"),Ll=u("o4+5");class zl{constructor(){}}var Gl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Kl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function $l(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,t=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent.parent,2),u.selection.bucket_quota.max_size));l(n,1,0,t)}))}function Zl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function Ql(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.selection.bucket_quota.max_objects)}))}function Yl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Bucket quota"])),(l()(),e["ɵeld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](8,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum size"])),(l()(),e["ɵand"](16777216,null,null,1,null,Kl)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,$l)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum objects"])),(l()(),e["ɵand"](16777216,null,null,1,null,Zl)),e["ɵdid"](22,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ql)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,15,0,u.selection.bucket_quota.max_size<=-1),l(n,17,0,u.selection.bucket_quota.max_size>-1),l(n,22,0,u.selection.bucket_quota.max_objects<=-1),l(n,24,0,u.selection.bucket_quota.max_objects>-1)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent.parent.parent,1),u.selection.bucket_quota.enabled));l(n,9,0,t)}))}function Wl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mode"])),(l()(),e["ɵeld"](4,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](5,null,["",""])),(l()(),e["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Days"])),(l()(),e["ɵeld"](9,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](10,null,["",""])),(l()(),e["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Years"])),(l()(),e["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](15,null,["",""]))],null,(function(l,n){var u=n.component;l(n,5,0,u.selection.lock_mode),l(n,10,0,u.selection.lock_retention_period_days),l(n,15,0,u.selection.lock_retention_period_years)}))}function Jl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,82,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,67,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,66,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](7,null,["",""])),(l()(),e["ɵeld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["ID"])),(l()(),e["ɵeld"](11,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](12,null,["",""])),(l()(),e["ɵeld"](13,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](14,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Owner"])),(l()(),e["ɵeld"](16,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](17,null,["",""])),(l()(),e["ɵeld"](18,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Index type"])),(l()(),e["ɵeld"](21,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](22,null,["",""])),(l()(),e["ɵeld"](23,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](24,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Placement rule"])),(l()(),e["ɵeld"](26,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](27,null,["",""])),(l()(),e["ɵeld"](28,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](29,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Marker"])),(l()(),e["ɵeld"](31,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](32,null,["",""])),(l()(),e["ɵeld"](33,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](34,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum marker"])),(l()(),e["ɵeld"](36,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](37,null,["",""])),(l()(),e["ɵeld"](38,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](39,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Version"])),(l()(),e["ɵeld"](41,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](42,null,["",""])),(l()(),e["ɵeld"](43,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](44,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Master version"])),(l()(),e["ɵeld"](46,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](47,null,["",""])),(l()(),e["ɵeld"](48,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](49,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Modification time"])),(l()(),e["ɵeld"](51,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](52,null,["",""])),e["ɵppd"](53,1),(l()(),e["ɵeld"](54,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](55,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Zonegroup"])),(l()(),e["ɵeld"](57,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](58,null,["",""])),(l()(),e["ɵeld"](59,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](60,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Versioning"])),(l()(),e["ɵeld"](62,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](63,null,["",""])),(l()(),e["ɵeld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](65,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["MFA Delete"])),(l()(),e["ɵeld"](67,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](68,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,Yl)),e["ɵdid"](70,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](71,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Locking"])),(l()(),e["ɵeld"](73,0,null,null,9,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](74,0,null,null,8,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](75,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](76,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](78,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](79,null,["",""])),e["ɵppd"](80,1),(l()(),e["ɵand"](16777216,null,null,1,null,Wl)),e["ɵdid"](82,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,70,0,u.selection.bucket_quota),l(n,82,0,u.selection.lock_enabled)}),(function(l,n){var u=n.component;l(n,7,0,u.selection.bid),l(n,12,0,u.selection.id),l(n,17,0,u.selection.owner),l(n,22,0,u.selection.index_type),l(n,27,0,u.selection.placement_rule),l(n,32,0,u.selection.marker),l(n,37,0,u.selection.max_marker),l(n,42,0,u.selection.ver),l(n,47,0,u.selection.master_ver);var t=e["ɵunv"](n,52,0,l(n,53,0,e["ɵnov"](n.parent.parent,0),u.selection.mtime));l(n,52,0,t),l(n,58,0,u.selection.zonegroup),l(n,63,0,u.selection.versioning),l(n,68,0,u.selection.mfa_delete);var i=e["ɵunv"](n,79,0,l(n,80,0,e["ɵnov"](n.parent.parent,1),u.selection.lock_enabled));l(n,79,0,i)}))}function Xl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Jl)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.selection)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function Hl(l){return e["ɵvid"](0,[e["ɵpid"](0,Tl.a,[Dl.DatePipe]),e["ɵpid"](0,Ol.a,[wl.a]),e["ɵpid"](0,Ll.a,[L.a]),(l()(),e["ɵand"](16777216,null,null,1,null,Xl)),e["ɵdid"](4,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,4,0,n.component.selection)}),null)}function ln(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-bucket-details",[],null,null,null,Hl,Gl)),e["ɵdid"](1,49152,null,0,zl,[],null,null)],null,null)}var nn=e["ɵccf"]("cd-rgw-bucket-details",zl,ln,{selection:"selection"},{},[]),un=u("25BL"),en=u("FE24"),tn=u("z/SZ"),an=u("GS7A"),on=u("TJUb"),sn=u("Fgil");class dn{constructor(l,n,u){this.rgwUserService=l,this.bsModalService=n,this.i18n=u,this.keys=[],this.keysColumns=[],this.keysSelection=new D.a,this.icons=R.a}ngOnInit(){this.keysColumns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Type"),prop:"type",flexGrow:1}],this.maxBucketsMap={"-1":this.i18n("Disabled"),0:this.i18n("Unlimited")}}ngOnChanges(){this.selection&&(this.user=this.selection,this.user.subusers=r.sortBy(this.user.subusers,"id"),this.user.caps=r.sortBy(this.user.caps,"type"),this.rgwUserService.getQuota(this.user.uid).subscribe(l=>{r.extend(this.user,l)}),this.keys=[],this.user.keys&&this.user.keys.forEach(l=>{this.keys.push({id:this.keys.length+1,type:"S3",username:l.user,ref:l})}),this.user.swift_keys&&this.user.swift_keys.forEach(l=>{this.keys.push({id:this.keys.length+1,type:"Swift",username:l.user,ref:l})}),this.keys=r.sortBy(this.keys,"user"))}updateKeysSelection(l){this.keysSelection=l}showKeyModal(){const l=this.keysSelection.first(),n=this.bsModalService.show("S3"===l.type?$:Y);switch(l.type){case"S3":n.content.setViewing(),n.content.setValues(l.ref.user,l.ref.access_key,l.ref.secret_key);break;case"Swift":n.content.setValues(l.ref.user,l.ref.secret_key)}}}var rn=u("LqlI"),cn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function mn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Email address"])),(l()(),e["ɵeld"](3,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](4,null,["",""]))],null,(function(l,n){l(n,4,0,n.component.user.email)}))}function gn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," (",") "]))],null,(function(l,n){l(n,1,0,n.context.$implicit.id,n.context.$implicit.permissions)}))}function pn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Subusers"])),(l()(),e["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,gn)),e["ɵdid"](5,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,5,0,n.component.user.subusers)}),null)}function fn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," (",") "]))],null,(function(l,n){l(n,1,0,n.context.$implicit.type,n.context.$implicit.perm)}))}function vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Capabilities"])),(l()(),e["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,fn)),e["ɵdid"](5,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){l(n,5,0,n.component.user.caps)}),null)}function hn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function bn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function Cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,t=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent.parent,2),u.user.user_quota.max_size));l(n,1,0,t)}))}function _n(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function Rn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function yn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.user.user_quota.max_objects)}))}function kn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,28,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User quota"])),(l()(),e["ɵeld"](3,0,null,null,25,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,24,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](8,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum size"])),(l()(),e["ɵand"](16777216,null,null,1,null,hn)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bn)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Cn)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](20,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum objects"])),(l()(),e["ɵand"](16777216,null,null,1,null,_n)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Rn)),e["ɵdid"](26,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,yn)),e["ɵdid"](28,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,15,0,!u.user.user_quota.enabled),l(n,17,0,u.user.user_quota.enabled&&u.user.user_quota.max_size<=-1),l(n,19,0,u.user.user_quota.enabled&&u.user.user_quota.max_size>-1),l(n,24,0,!u.user.user_quota.enabled),l(n,26,0,u.user.user_quota.enabled&&u.user.user_quota.max_objects<=-1),l(n,28,0,u.user.user_quota.enabled&&u.user.user_quota.max_objects>-1)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent.parent.parent,0),u.user.user_quota.enabled));l(n,9,0,t)}))}function In(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function wn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function En(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "])),e["ɵppd"](2,1)],null,(function(l,n){var u=n.component,t=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent.parent.parent.parent,2),u.user.bucket_quota.max_size));l(n,1,0,t)}))}function Nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["-"]))],null,null)}function qn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited"]))],null,null)}function Tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.user.bucket_quota.max_objects)}))}function Vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,28,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Bucket quota"])),(l()(),e["ɵeld"](3,0,null,null,25,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,24,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](8,0,null,null,2,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,["",""])),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum size"])),(l()(),e["ɵand"](16777216,null,null,1,null,In)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,wn)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,En)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](20,0,null,null,8,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](21,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum objects"])),(l()(),e["ɵand"](16777216,null,null,1,null,Nn)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,qn)),e["ɵdid"](26,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Tn)),e["ɵdid"](28,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,15,0,!u.user.bucket_quota.enabled),l(n,17,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_size<=-1),l(n,19,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_size>-1),l(n,24,0,!u.user.bucket_quota.enabled),l(n,26,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_objects<=-1),l(n,28,0,u.user.bucket_quota.enabled&&u.user.bucket_quota.max_objects>-1)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent.parent.parent,0),u.user.bucket_quota.enabled));l(n,9,0,t)}))}function xn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,40,"div",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,35,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,34,"tbody",[],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](6,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(l()(),e["ɵted"](7,null,["",""])),(l()(),e["ɵeld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Full name"])),(l()(),e["ɵeld"](11,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](12,null,["",""])),(l()(),e["ɵand"](16777216,null,null,1,null,mn)),e["ɵdid"](14,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](15,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Suspended"])),(l()(),e["ɵeld"](18,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](19,null,["",""])),e["ɵppd"](20,1),(l()(),e["ɵeld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["System"])),(l()(),e["ɵeld"](24,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](25,null,["",""])),e["ɵppd"](26,1),(l()(),e["ɵeld"](27,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["ɵeld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Maximum buckets"])),(l()(),e["ɵeld"](30,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["ɵted"](31,null,["",""])),e["ɵppd"](32,2),(l()(),e["ɵand"](16777216,null,null,1,null,pn)),e["ɵdid"](34,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vn)),e["ɵdid"](36,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,kn)),e["ɵdid"](38,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Vn)),e["ɵdid"](40,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,14,0,null==u.user.email?null:u.user.email.length),l(n,34,0,u.user.subusers&&u.user.subusers.length),l(n,36,0,u.user.caps&&u.user.caps.length),l(n,38,0,u.user.user_quota),l(n,40,0,u.user.bucket_quota)}),(function(l,n){var u=n.component;l(n,7,0,u.user.uid),l(n,12,0,u.user.display_name);var t=e["ɵunv"](n,19,0,l(n,20,0,e["ɵnov"](n.parent.parent,0),u.user.suspended));l(n,19,0,t);var i=e["ɵunv"](n,25,0,l(n,26,0,e["ɵnov"](n.parent.parent,0),"true"===u.user.system));l(n,25,0,i);var a=e["ɵunv"](n,31,0,l(n,32,0,e["ɵnov"](n.parent.parent,1),u.user.max_buckets,u.maxBucketsMap));l(n,31,0,a)}))}function Sn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"tab",[["heading","Keys"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,12,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["selectionType","multi"]],null,[[null,"updateSelection"]],(function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateKeysSelection(u)&&e),e}),un.b,un.a)),e["ɵdid"](3,2867200,null,0,S.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["ɵeld"](4,0,null,1,10,"div",[["class","table-actions"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,16777216,null,null,9,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),e["ɵprd"](512,null,en.f,en.f,[]),e["ɵdid"](7,212992,null,0,en.c,[e.ElementRef,e.Renderer2,e.ViewContainerRef,tn.a,en.f,en.a,an.b],null,null),(l()(),e["ɵeld"](8,0,null,null,6,"button",[["class","btn btn-secondary"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showKeyModal()&&e),e}),null,null)),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Show"]))],(function(l,n){var u=n.component;l(n,1,0,"Keys"),l(n,3,0,u.keys,u.keysColumns,"flex","true","multi"),l(n,7,0);var e=l(n,12,0,u.icons.show);l(n,11,0,e)}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby),l(n,5,0,e["ɵnov"](n,7).dropup,e["ɵnov"](n,7).isOpen,e["ɵnov"](n,7).isOpen&&e["ɵnov"](n,7).isBs4),l(n,8,0,!u.keysSelection.hasSingleSelection)}))}function Dn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,xn)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,Sn)),e["ɵdid"](7,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.user),l(n,7,0,u.keys.length)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function Fn(l){return e["ɵvid"](0,[e["ɵpid"](0,Ol.a,[wl.a]),e["ɵpid"](0,on.a,[]),e["ɵpid"](0,sn.a,[L.a]),e["ɵqud"](671088640,1,{accessKeyTpl:0}),e["ɵqud"](671088640,2,{secretKeyTpl:0}),(l()(),e["ɵand"](16777216,null,null,1,null,Dn)),e["ɵdid"](6,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,6,0,n.component.selection)}),null)}function jn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-details",[],null,null,null,Fn,cn)),e["ɵdid"](1,638976,null,0,dn,[_.a,rn.b,wl.a],null,null)],(function(l,n){l(n,1,0)}),null)}var Pn=e["ɵccf"]("cd-rgw-user-details",dn,jn,{selection:"selection"},{},[]),Bn=u("8xTl"),An=u("ajRT"),Mn=u("mXUL"),Un=u("+gVj"),On=u("D4zM"),Ln=u("OcYo"),zn=u("EApP"),Gn=u("KVJa"),Kn=u("Z21x"),$n=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Zn(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,Bn.a,[]),(l()(),e["ɵeld"](2,0,null,null,49,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,An.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," "," "])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,43,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,39,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,38,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,12).onReset()&&t),t}),null,null)),e["ɵdid"](11,16384,null,0,d.G,[],null,null),e["ɵdid"](12,4210688,null,0,d.t,[[8,null],[8,null]],null,null),e["ɵprd"](2048,null,d.d,null,[d.t]),e["ɵdid"](14,16384,null,0,d.s,[[4,d.d]],null,null),(l()(),e["ɵeld"](15,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](16,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](21,0,null,0,7,"div",[["class","cd-col-form-inpu"]],null,null,null,null,null)),(l()(),e["ɵeld"](22,0,null,null,6,"input",[["class","form-control"],["id","user"],["name","user"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["ɵnov"](l,23)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,23).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,23)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,23)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.user=u)&&t),t}),null,null)),e["ɵdid"](23,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](25,671744,null,0,d.u,[[2,d.d],[8,null],[8,null],[6,d.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["ɵprd"](2048,null,d.q,null,[d.u]),e["ɵdid"](27,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](28,16384,null,0,Un.h,[[3,d.d],Un.a],null,null),(l()(),e["ɵeld"](29,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](30,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](33,0,null,0,1,"label",[["class","cd-col-form-label"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](35,0,null,0,13,"div",[["class","cd-col-form-inpu"]],null,null,null,null,null)),(l()(),e["ɵeld"](36,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](37,0,null,null,6,"input",[["class","form-control"],["id","secret_key"],["name","secret_key"],["type","password"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["ɵnov"](l,38)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,38).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,38)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,38)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.secret_key=u)&&t),t}),null,null)),e["ɵdid"](38,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](40,671744,null,0,d.u,[[2,d.d],[8,null],[8,null],[6,d.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["ɵprd"](2048,null,d.q,null,[d.u]),e["ɵdid"](42,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](43,16384,null,0,Un.h,[[3,d.d],Un.a],null,null),(l()(),e["ɵeld"](44,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](45,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,46).onClick()&&t),t}),null,null)),e["ɵdid"](46,81920,null,0,On.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](47,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,48).onClick()&&t),t}),null,null)),e["ɵdid"](48,81920,null,0,Ln.a,[e.ElementRef,e.Renderer2,zn.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵeld"](49,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](50,0,null,null,1,"cd-back-button",[],null,null,null,Gn.b,Gn.a)),e["ɵdid"](51,49152,null,0,Kn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,16,0),l(n,25,0,"user",u.user),l(n,30,0),l(n,40,0,"secret_key",u.secret_key),l(n,46,0,"secret_key"),l(n,48,0,"secret_key"),l(n,51,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,10,0,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending),l(n,15,0,e["ɵnov"](n,16).hasErrors,e["ɵnov"](n,16).hasSuccess),l(n,22,0,!0,e["ɵnov"](n,27).ngClassUntouched,e["ɵnov"](n,27).ngClassTouched,e["ɵnov"](n,27).ngClassPristine,e["ɵnov"](n,27).ngClassDirty,e["ɵnov"](n,27).ngClassValid,e["ɵnov"](n,27).ngClassInvalid,e["ɵnov"](n,27).ngClassPending,e["ɵnov"](n,28).validClass,e["ɵnov"](n,28).invalidClass),l(n,29,0,e["ɵnov"](n,30).hasErrors,e["ɵnov"](n,30).hasSuccess),l(n,37,0,!0,e["ɵnov"](n,42).ngClassUntouched,e["ɵnov"](n,42).ngClassTouched,e["ɵnov"](n,42).ngClassPristine,e["ɵnov"](n,42).ngClassDirty,e["ɵnov"](n,42).ngClassValid,e["ɵnov"](n,42).ngClassInvalid,e["ɵnov"](n,42).ngClassPending,e["ɵnov"](n,43).validClass,e["ɵnov"](n,43).invalidClass)}))}function Qn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-swift-key-modal",[],null,null,null,Zn,$n)),e["ɵdid"](1,49152,null,0,Y,[rn.a,wl.a,t.b],null,null)],null,null)}var Yn=e["ɵccf"]("cd-rgw-user-swift-key-modal",Y,Qn,{},{},[]),Wn=u("IZUe"),Jn=u("gp3X"),Xn=u("sb0X"),Hn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function lu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","user"],["id","user"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](1,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](3,671744,[[1,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](5,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](6,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"user"),l(n,6,0,"user")}),(function(l,n){l(n,0,0,!0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a username --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function uu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"select",[["autofocus",""],["class","form-control custom-select"],["formControlName","user"],["id","user"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,2).onTouched()&&t),t}),null,null)),e["ɵdid"](1,4210688,null,0,Wn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](2,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](4,671744,[[1,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](6,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](7,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,nu)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,uu)),e["ɵdid"](11,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,1,0,""),l(n,4,0,"user"),l(n,7,0,"user"),l(n,9,0,null!==u.userCandidates),l(n,11,0,u.userCandidates)}),(function(l,n){l(n,0,0,e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass)}))}function tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function iu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","generate_key"],["id","generate_key"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](9,671744,[[3,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](11,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](12,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","generate_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Auto-generate key"]))],(function(l,n){l(n,1,0),l(n,9,0,"generate_key"),l(n,12,0,"generate_key")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function au(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ou(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","access_key"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](7,{required:0}),(l()(),e["ɵted"](-1,null,["Access key"])),(l()(),e["ɵeld"](9,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,6,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["type","password"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](14,671744,[[5,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](16,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](17,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](18,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,20).onClick()&&t),t}),null,null)),e["ɵdid"](20,81920,null,0,On.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](21,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,22).onClick()&&t),t}),null,null)),e["ɵdid"](22,81920,null,0,Ln.a,[e.ElementRef,e.Renderer2,zn.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,au)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var t=l(n,7,0,!u.viewing);l(n,6,0,"cd-col-form-label",t),l(n,14,0,"access_key"),l(n,17,0,"access_key"),l(n,20,0,"access_key"),l(n,22,0,"access_key"),l(n,24,0,u.formGroup.showError("access_key",e["ɵnov"](n.parent,11),"required"))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,u.viewing,e["ɵnov"](n,16).ngClassUntouched,e["ɵnov"](n,16).ngClassTouched,e["ɵnov"](n,16).ngClassPristine,e["ɵnov"](n,16).ngClassDirty,e["ɵnov"](n,16).ngClassValid,e["ɵnov"](n,16).ngClassInvalid,e["ɵnov"](n,16).ngClassPending,e["ɵnov"](n,17).validClass,e["ɵnov"](n,17).invalidClass)}))}function su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function du(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","secret_key"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](7,{required:0}),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](9,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,6,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](14,671744,[[7,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](16,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](17,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](18,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](19,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,20).onClick()&&t),t}),null,null)),e["ɵdid"](20,81920,null,0,On.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](21,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,22).onClick()&&t),t}),null,null)),e["ɵdid"](22,81920,null,0,Ln.a,[e.ElementRef,e.Renderer2,zn.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,su)),e["ɵdid"](24,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var t=l(n,7,0,!u.viewing);l(n,6,0,"cd-col-form-label",t),l(n,14,0,"secret_key"),l(n,17,0,"secret_key"),l(n,20,0,"secret_key"),l(n,22,0,"secret_key"),l(n,24,0,u.formGroup.showError("secret_key",e["ɵnov"](n.parent,11),"required"))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,u.viewing,e["ɵnov"](n,16).ngClassUntouched,e["ɵnov"](n,16).ngClassTouched,e["ɵnov"](n,16).ngClassPristine,e["ɵnov"](n,16).ngClassDirty,e["ɵnov"](n,16).ngClassValid,e["ɵnov"](n,16).ngClassInvalid,e["ɵnov"](n,16).ngClassPending,e["ɵnov"](n,17).validClass,e["ɵnov"](n,17).invalidClass)}))}function ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Jn.b,Jn.a)),e["ɵdid"](1,114688,null,0,Xn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](2,0,[""," ",""])),e["ɵppd"](3,1),e["ɵppd"](4,1)],(function(l,n){l(n,1,0,n.component.formGroup)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,2,0,l(n,3,0,e["ɵnov"](n.parent,0),u.action)),i=e["ɵunv"](n,2,1,l(n,4,0,e["ɵnov"](n.parent,1),u.resource));l(n,2,0,t,i)}))}function cu(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,Bn.a,[]),(l()(),e["ɵeld"](2,0,null,null,40,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,An.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," ",""])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,34,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,33,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,11).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,d.G,[],null,null),e["ɵdid"](11,540672,[["frm",4]],0,d.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,d.d,null,[d.l]),e["ɵdid"](13,16384,null,0,d.s,[[4,d.d]],null,null),e["ɵdid"](14,16384,null,0,Un.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](15,0,null,null,22,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](17,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](20,0,null,0,4,"label",[["class","cd-col-form-label"],["for","user"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](22,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](23,{required:0}),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](25,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,lu)),e["ɵdid"](27,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,eu)),e["ɵdid"](29,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,tu)),e["ɵdid"](31,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,iu)),e["ɵdid"](33,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ou)),e["ɵdid"](35,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,du)),e["ɵdid"](37,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](38,0,null,null,4,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,ru)),e["ɵdid"](40,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](41,0,null,null,1,"cd-back-button",[],null,null,null,Gn.b,Gn.a)),e["ɵdid"](42,49152,null,0,Kn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,11,0,u.formGroup),l(n,14,0,u.formGroup),l(n,17,0);var t=l(n,23,0,!u.viewing);l(n,22,0,"cd-col-form-label",t),l(n,27,0,u.viewing),l(n,29,0,!u.viewing),l(n,31,0,u.formGroup.showError("user",e["ɵnov"](n,11),"required")),l(n,33,0,!u.viewing),l(n,35,0,!u.formGroup.getValue("generate_key")),l(n,37,0,!u.formGroup.getValue("generate_key")),l(n,40,0,!u.viewing),l(n,42,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,9,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending),l(n,16,0,e["ɵnov"](n,17).hasErrors,e["ɵnov"](n,17).hasSuccess)}))}function mu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-s3-key-modal",[],null,null,null,cu,Hn)),e["ɵdid"](1,49152,null,0,$,[k.a,rn.a,wl.a,t.b],null,null)],null,null)}var gu=e["ɵccf"]("cd-rgw-user-s3-key-modal",$,mu,{},{submitAction:"submitAction"},[]),pu=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function fu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","type"],["id","type"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,1)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](1,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](3,671744,[[1,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](5,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](6,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,3,0,"type"),l(n,6,0,"type")}),(function(l,n){l(n,0,0,!0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function vu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a type --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function hu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function bu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"select",[["autofocus",""],["class","form-control custom-select"],["formControlName","type"],["id","type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,2).onTouched()&&t),t}),null,null)),e["ɵdid"](1,4210688,null,0,Wn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](2,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](4,671744,[[1,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](6,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](7,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vu)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,hu)),e["ɵdid"](11,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,1,0,""),l(n,4,0,"type"),l(n,7,0,"type"),l(n,9,0,null!==u.types),l(n,11,0,u.types)}),(function(l,n){l(n,0,0,e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass)}))}function Cu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function _u(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Ru(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function yu(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,Bn.a,[]),(l()(),e["ɵeld"](2,0,null,null,60,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,An.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," ",""])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,54,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,53,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,11).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,d.G,[],null,null),e["ɵdid"](11,540672,[["frm",4]],0,d.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,d.d,null,[d.l]),e["ɵdid"](13,16384,null,0,d.s,[[4,d.d]],null,null),e["ɵdid"](14,16384,null,0,Un.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](15,0,null,null,39,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](17,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](20,0,null,0,4,"label",[["class","cd-col-form-label"],["for","type"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](22,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](23,{required:0}),(l()(),e["ɵted"](-1,null,["Type"])),(l()(),e["ɵeld"](25,0,null,0,6,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,fu)),e["ɵdid"](27,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bu)),e["ɵdid"](29,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Cu)),e["ɵdid"](31,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](32,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](33,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](36,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","perm"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Permission"])),(l()(),e["ɵeld"](38,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](39,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,40).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,40).onTouched()&&t),t}),null,null)),e["ɵdid"](40,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](42,671744,[[3,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](44,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](45,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](46,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](47,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](48,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a permission --"])),(l()(),e["ɵand"](16777216,null,null,2,null,_u)),e["ɵdid"](51,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["ɵpad"](52,3),(l()(),e["ɵand"](16777216,null,null,1,null,Ru)),e["ɵdid"](54,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](55,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](56,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Jn.b,Jn.a)),e["ɵdid"](57,114688,null,0,Xn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](58,0,[""," ",""])),e["ɵppd"](59,1),e["ɵppd"](60,1),(l()(),e["ɵeld"](61,0,null,null,1,"cd-back-button",[],null,null,null,Gn.b,Gn.a)),e["ɵdid"](62,49152,null,0,Kn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,11,0,u.formGroup),l(n,14,0,u.formGroup),l(n,17,0);var t=l(n,23,0,!u.editing);l(n,22,0,"cd-col-form-label",t),l(n,27,0,u.editing),l(n,29,0,!u.editing),l(n,31,0,u.formGroup.showError("type",e["ɵnov"](n,11),"required")),l(n,33,0),l(n,42,0,"perm"),l(n,45,0,"perm"),l(n,47,0,null),l(n,48,0,null);var i=l(n,52,0,"read","write","*");l(n,51,0,i),l(n,54,0,u.formGroup.showError("perm",e["ɵnov"](n,11),"required")),l(n,57,0,u.formGroup),l(n,62,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,9,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending),l(n,16,0,e["ɵnov"](n,17).hasErrors,e["ɵnov"](n,17).hasSuccess),l(n,32,0,e["ɵnov"](n,33).hasErrors,e["ɵnov"](n,33).hasSuccess),l(n,39,0,e["ɵnov"](n,44).ngClassUntouched,e["ɵnov"](n,44).ngClassTouched,e["ɵnov"](n,44).ngClassPristine,e["ɵnov"](n,44).ngClassDirty,e["ɵnov"](n,44).ngClassValid,e["ɵnov"](n,44).ngClassInvalid,e["ɵnov"](n,44).ngClassPending,e["ɵnov"](n,45).validClass,e["ɵnov"](n,45).invalidClass);var a=e["ɵunv"](n,58,0,l(n,59,0,e["ɵnov"](n,0),u.action)),o=e["ɵunv"](n,58,1,l(n,60,0,e["ɵnov"](n,1),u.resource));l(n,58,0,a,o)}))}function ku(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-capability-modal",[],null,null,null,yu,pu)),e["ɵdid"](1,49152,null,0,K,[k.a,rn.a,wl.a,t.b],null,null)],null,null)}var Iu=e["ɵccf"]("cd-rgw-user-capability-modal",K,ku,{},{submitAction:"submitAction"},[]),wu=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Eu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Nu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen subuser ID is already in use."]))],null,null)}function qu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,[" "," "]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Tu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Vu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function xu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](9,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](11,671744,[[9,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](13,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](14,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,17).onClick()&&t),t}),null,null)),e["ɵdid"](17,81920,null,0,On.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,19).onClick()&&t),t}),null,null)),e["ɵdid"](19,81920,null,0,Ln.a,[e.ElementRef,e.Renderer2,zn.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Vu)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"secret_key"),l(n,14,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.formGroup.showError("secret_key",e["ɵnov"](n.parent.parent,11),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function Su(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,19,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Swift key"])),(l()(),e["ɵeld"](3,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](4,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","generate_secret"],["id","generate_secret"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](12,671744,[[7,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](14,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](15,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","generate_secret"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Auto-generate secret"])),(l()(),e["ɵand"](16777216,null,null,1,null,xu)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,12,0,"generate_secret"),l(n,15,0,"generate_secret"),l(n,19,0,!u.editing&&!u.formGroup.getValue("generate_secret"))}),(function(l,n){l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function Du(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,Bn.a,[]),(l()(),e["ɵeld"](2,0,null,null,90,"cd-modal",[],null,null,null,vl.c,vl.b)),e["ɵdid"](3,49152,null,0,An.a,[],{modalRef:[0,"modalRef"]},null),(l()(),e["ɵeld"](4,0,null,0,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](5,null,[""," ",""])),e["ɵppd"](6,1),e["ɵppd"](7,1),(l()(),e["ɵeld"](8,0,null,1,84,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,83,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,11).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,11).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,14).onSubmit()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,d.G,[],null,null),e["ɵdid"](11,540672,[["frm",4]],0,d.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,d.d,null,[d.l]),e["ɵdid"](13,16384,null,0,d.s,[[4,d.d]],null,null),e["ɵdid"](14,16384,null,0,Un.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](15,0,null,null,69,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](17,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](20,0,null,0,1,"label",[["class","cd-col-form-label"],["for","uid"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](22,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](23,0,null,null,6,"input",[["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,24)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,24).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,24)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,24)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](24,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](26,671744,[[1,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](28,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](29,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](30,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](31,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](34,0,null,0,4,"label",[["class","cd-col-form-label"],["for","subuid"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](36,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](37,{required:0}),(l()(),e["ɵted"](-1,null,["Subuser"])),(l()(),e["ɵeld"](39,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](40,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","subuid"],["id","subuid"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,42)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,42).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,42)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,42)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](41,4210688,null,0,Wn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](42,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](44,671744,[[3,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](46,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](47,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Eu)),e["ɵdid"](49,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Nu)),e["ɵdid"](51,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](52,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](53,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](56,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","perm"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Permission"])),(l()(),e["ɵeld"](58,0,null,0,24,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](59,0,null,null,21,"select",[["class","form-control custom-select"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,60).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,60).onTouched()&&t),t}),null,null)),e["ɵdid"](60,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](62,671744,[[5,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](64,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](65,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](66,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](67,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](68,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a permission --"])),(l()(),e["ɵand"](16777216,null,null,2,null,qu)),e["ɵdid"](71,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["ɵpad"](72,2),(l()(),e["ɵeld"](73,0,null,null,3,"option",[["value","read-write"]],null,null,null,null,null)),e["ɵdid"](74,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](75,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["read, write"])),(l()(),e["ɵeld"](77,0,null,null,3,"option",[["value","full-control"]],null,null,null,null,null)),e["ɵdid"](78,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](79,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["full"])),(l()(),e["ɵand"](16777216,null,null,1,null,Tu)),e["ɵdid"](82,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Su)),e["ɵdid"](84,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](85,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](86,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Jn.b,Jn.a)),e["ɵdid"](87,114688,null,0,Xn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](88,0,[""," ",""])),e["ɵppd"](89,1),e["ɵppd"](90,1),(l()(),e["ɵeld"](91,0,null,null,1,"cd-back-button",[],null,null,null,Gn.b,Gn.a)),e["ɵdid"](92,49152,null,0,Kn.a,[Dl.Location,t.b],{back:[0,"back"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.bsModalRef),l(n,11,0,u.formGroup),l(n,14,0,u.formGroup),l(n,17,0),l(n,26,0,"uid"),l(n,29,0,"uid"),l(n,31,0);var t=l(n,37,0,!u.editing);l(n,36,0,"cd-col-form-label",t),l(n,41,0,""),l(n,44,0,"subuid"),l(n,47,0,"subuid"),l(n,49,0,u.formGroup.showError("subuid",e["ɵnov"](n,11),"required")),l(n,51,0,u.formGroup.showError("subuid",e["ɵnov"](n,11),"subuserIdExists")),l(n,53,0),l(n,62,0,"perm"),l(n,65,0,"perm"),l(n,67,0,null),l(n,68,0,null);var i=l(n,72,0,"read","write");l(n,71,0,i),l(n,74,0,"read-write"),l(n,75,0,"read-write"),l(n,78,0,"full-control"),l(n,79,0,"full-control"),l(n,82,0,u.formGroup.showError("perm",e["ɵnov"](n,11),"required")),l(n,84,0,!u.editing),l(n,87,0,u.formGroup),l(n,92,0,u.bsModalRef.hide)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,5,0,l(n,6,0,e["ɵnov"](n,0),u.action)),i=e["ɵunv"](n,5,1,l(n,7,0,e["ɵnov"](n,1),u.resource));l(n,5,0,t,i),l(n,9,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending),l(n,16,0,e["ɵnov"](n,17).hasErrors,e["ɵnov"](n,17).hasSuccess),l(n,23,0,!0,e["ɵnov"](n,28).ngClassUntouched,e["ɵnov"](n,28).ngClassTouched,e["ɵnov"](n,28).ngClassPristine,e["ɵnov"](n,28).ngClassDirty,e["ɵnov"](n,28).ngClassValid,e["ɵnov"](n,28).ngClassInvalid,e["ɵnov"](n,28).ngClassPending,e["ɵnov"](n,29).validClass,e["ɵnov"](n,29).invalidClass),l(n,30,0,e["ɵnov"](n,31).hasErrors,e["ɵnov"](n,31).hasSuccess),l(n,40,0,u.editing,e["ɵnov"](n,46).ngClassUntouched,e["ɵnov"](n,46).ngClassTouched,e["ɵnov"](n,46).ngClassPristine,e["ɵnov"](n,46).ngClassDirty,e["ɵnov"](n,46).ngClassValid,e["ɵnov"](n,46).ngClassInvalid,e["ɵnov"](n,46).ngClassPending,e["ɵnov"](n,47).validClass,e["ɵnov"](n,47).invalidClass),l(n,52,0,e["ɵnov"](n,53).hasErrors,e["ɵnov"](n,53).hasSuccess),l(n,59,0,e["ɵnov"](n,64).ngClassUntouched,e["ɵnov"](n,64).ngClassTouched,e["ɵnov"](n,64).ngClassPristine,e["ɵnov"](n,64).ngClassDirty,e["ɵnov"](n,64).ngClassValid,e["ɵnov"](n,64).ngClassInvalid,e["ɵnov"](n,64).ngClassPending,e["ɵnov"](n,65).validClass,e["ɵnov"](n,65).invalidClass);var a=e["ɵunv"](n,88,0,l(n,89,0,e["ɵnov"](n,0),u.action)),o=e["ɵunv"](n,88,1,l(n,90,0,e["ɵnov"](n,1),u.resource));l(n,88,0,a,o)}))}function Fu(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-subuser-modal",[],null,null,null,Du,wu)),e["ɵdid"](1,49152,null,0,Q,[k.a,rn.a,wl.a,t.b],null,null)],null,null)}var ju=e["ɵccf"]("cd-rgw-user-subuser-modal",Q,Fu,{},{submitAction:"submitAction"},[]),Pu=u("yT6U"),Bu=u("4DD9"),Au=u("IzCI"),Mu=u("Dwqy"),Uu=u("uYzU"),Ou=u("FFMq"),Lu=u("E2fk"),zu=u("nSDx"),Gu=u("SB+Q"),Ku=u("TYzs"),$u=u("BQkM"),Zu=u("dEH0"),Qu=u("G1/K"),Yu=u("efK2"),Wu=u("CNMR"),Ju=u("KOzp"),Xu=u("2uy1"),Hu=u("38Bd"),le=u("978R"),ne=u("w9WL"),ue=u("iInd"),ee=u("9Xeq"),te=u("hrfs"),ie=u("yGOH"),ae=u("bxSN"),oe=u("WF9J"),se=u("V/fk"),de=u("ChqD"),re=u("PCNd"),ce=u("G6Q+"),me=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ge(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","WAkugZpiz"]],null,null,null,Rl.b,Rl.a)),e["ɵdid"](3,638976,null,0,yl.a,[o.a,kl.b,Il.a,a.a,wl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"rgw-overview?","two","WAkugZpiz")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function pe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"tab",[["heading","Sync Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](1,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","rgw-sync-overview"]],null,null,null,Rl.b,Rl.a)),e["ɵdid"](3,638976,null,0,yl.a,[o.a,kl.b,Il.a,a.a,wl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(l,n){l(n,1,0,"Sync Performance"),l(n,3,0,"radosgw-sync-overview?","two","rgw-sync-overview")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).id,e["ɵnov"](n,1).active,e["ɵnov"](n,1).addClass,e["ɵnov"](n,1).role,e["ɵnov"](n,1).ariaLabelledby)}))}function fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,11,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["ɵdid"](1,180224,null,0,_l.e,[_l.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,5,"tab",[["heading","Daemons List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,_l.b,[_l.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](4,0,null,null,3,"cd-table",[["columnMode","flex"]],null,[[null,"setExpandedRow"],[null,"fetchData"]],(function(l,n,u){var e=!0,t=l.component;return"setExpandedRow"===n&&(e=!1!==t.setExpandedRow(u)&&e),"fetchData"===n&&(e=!1!==t.getDaemonList(u)&&e),e}),un.b,un.a)),e["ɵdid"](5,2867200,null,0,S.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"]},{fetchData:"fetchData",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](6,0,null,3,1,"cd-rgw-daemon-details",[["cdTableDetail",""]],null,null,null,Al,jl)),e["ɵdid"](7,573440,null,0,Fl,[A,F.a],{selection:[0,"selection"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,ge)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,0,1,null,pe)),e["ɵdid"](11,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Daemons List"),l(n,5,0,u.daemons,u.columns,"flex",!0),l(n,7,0,u.expandedRow),l(n,9,0,u.grafanaPermission.read),l(n,11,0,u.grafanaPermission.read&&u.isMultiSite)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function ve(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-daemon-list",[],null,null,null,fe,me)),e["ɵdid"](1,114688,null,0,U,[A,F.a,M.a,wl.a,C],null,null)],(function(l,n){l(n,1,0)}),null)}var he=e["ɵccf"]("cd-rgw-daemon-list",U,ve,{},{},[]),be=u("DqMs"),Ce=u("/NlG"),_e=u("NUGo"),Re=u("S7zO"),ye=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ke(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,be.b,be.a)),e["ɵdid"](1,114688,null,0,Ce.a,[wl.a],{type:[0,"type"],size:[1,"size"]},null),(l()(),e["ɵted"](-1,0,["The user list data might be stale. If needed, you can manually reload it."]))],(function(l,n){l(n,1,0,"warning","slim")}),null)}function Ie(l){return e["ɵvid"](0,[e["ɵqud"](402653184,1,{table:0}),(l()(),e["ɵand"](16777216,null,null,1,null,ke)),e["ɵdid"](2,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](3,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","uid"],["selectionType","multiClick"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(l,n,u){var e=!0,t=l.component;return"setExpandedRow"===n&&(e=!1!==t.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getUserList(u)&&e),e}),un.b,un.a)),e["ɵdid"](4,2867200,[[1,4],["table",4]],0,S.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](5,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,_e.b,_e.a)),e["ɵdid"](6,114688,null,0,Re.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](7,0,null,3,1,"cd-rgw-user-details",[["cdTableDetail",""]],null,null,null,Fn,cn)),e["ɵdid"](8,638976,null,0,dn,[_.a,rn.b,wl.a],{selection:[0,"selection"]},null)],(function(l,n){var u=n.component;l(n,2,0,u.isStale),l(n,4,0,u.users,u.columns,"flex",!0,!1,"uid","multiClick"),l(n,6,0,u.permission,u.selection,u.tableActions),l(n,8,0,u.expandedRow)}),null)}function we(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rgw-user-list",[],null,null,null,Ie,ye)),e["ɵprd"](256,null,j.a,X,[]),e["ɵdid"](2,49152,null,0,H,[F.a,_.a,rn.b,wl.a,j.a,t.b,e.NgZone],null,null)],null,null)}var Ee=e["ɵccf"]("cd-rgw-user-list",H,we,{},{},[]),Ne=u("QC43"),qe=u("XFyV"),Te=u("EmSq"),Ve=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function xe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ne.b,Ne.a)),e["ɵdid"](1,49152,null,0,qe.a,[],null,null),(l()(),e["ɵted"](-1,0,["Loading user data..."]))],null,null)}function Se(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,[[null,"backAction"]],(function(l,n,u){var e=!0;return"backAction"===n&&(e=!1!==l.component.goToListView()&&e),e}),be.b,be.a)),e["ɵdid"](1,114688,null,0,Ce.a,[wl.a],{type:[0,"type"]},{backAction:"backAction"}),(l()(),e["ɵted"](-1,0,["The user data could not be loaded."]))],(function(l,n){l(n,1,0,"error")}),null)}function De(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Fe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen user ID is already in use."]))],null,null)}function je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Pe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This is not a valid email address."]))],null,null)}function Be(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen email address is already in use."]))],null,null)}function Ae(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Me(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be >= 1."]))],null,null)}function Ue(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,0,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,7,"input",[["class","form-control"],["formControlName","max_buckets"],["id","max_buckets"],["min","1"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,7)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,7)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,7)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,8).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,8).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵdid"](8,16384,null,0,d.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l,n){return[l,n]}),[d.e,d.w]),e["ɵdid"](10,671744,[[9,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](12,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](13,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ae)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Me)),e["ɵdid"](17,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"max_buckets"),l(n,13,0,"max_buckets"),l(n,15,0,u.userForm.showError("max_buckets",e["ɵnov"](n.parent,3),"required")),l(n,17,0,u.userForm.showError("max_buckets",e["ɵnov"](n.parent,3),"min"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function Oe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Le(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","access_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Access key"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](9,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](11,671744,[[15,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](13,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](14,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,17).onClick()&&t),t}),null,null)),e["ɵdid"](17,81920,null,0,On.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,19).onClick()&&t),t}),null,null)),e["ɵdid"](19,81920,null,0,Ln.a,[e.ElementRef,e.Renderer2,zn.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Oe)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"access_key"),l(n,14,0,"access_key"),l(n,17,0,"access_key"),l(n,19,0,"access_key"),l(n,21,0,u.userForm.showError("access_key",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ge(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Secret key"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,9)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](9,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](11,671744,[[17,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](13,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](14,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](15,0,null,null,4,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,17).onClick()&&t),t}),null,null)),e["ɵdid"](17,81920,null,0,On.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["ɵnov"](l,19).onClick()&&t),t}),null,null)),e["ɵdid"](19,81920,null,0,Ln.a,[e.ElementRef,e.Renderer2,zn.j,wl.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ze)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"secret_key"),l(n,14,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.userForm.showError("secret_key",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,8,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function Ke(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["S3 key"])),(l()(),e["ɵeld"](3,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](4,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","generate_key"],["id","generate_key"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](12,671744,[[13,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](14,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](15,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","generate_key"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Auto-generate key"])),(l()(),e["ɵand"](16777216,null,null,1,null,Le)),e["ɵdid"](19,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ge)),e["ɵdid"](21,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,12,0,"generate_key"),l(n,15,0,"generate_key"),l(n,19,0,!u.editing&&!u.userForm.getValue("generate_key")),l(n,21,0,!u.editing&&!u.userForm.getValue("generate_key"))}),(function(l,n){l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function $e(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no subusers."]))],null,null)}function Ze(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,23,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,21,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"span",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,2,"div",[["class","input-group-prepend border-left-0 border-right-0"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,1,"span",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,16777216,null,null,5,"button",[["class","btn btn-light tc_showSubuserButton"],["tooltip","Edit"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](12,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](13,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](15,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](16,1),(l()(),e["ɵeld"](17,16777216,null,null,5,"button",[["class","btn btn-light tc_deleteSubuserButton"],["tooltip","Delete"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteSubuser(l.context.index)&&e),e}),null,null)),e["ɵdid"](18,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](19,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](21,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](22,1),(l()(),e["ɵeld"](23,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,12,0,"Edit");var e=l(n,16,0,u.icons.edit);l(n,15,0,e),l(n,18,0,"Delete");var t=l(n,22,0,u.icons.destroy);l(n,21,0,t)}),(function(l,n){var u=n.component;l(n,4,0,e["ɵinlineInterpolate"](1,"",u.icons.user,"")),l(n,5,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.id,"")),l(n,8,0,e["ɵinlineInterpolate"](1,"",u.icons.share,"")),l(n,9,0,e["ɵinlineInterpolate"](1,"","full-control"===n.context.$implicit.permissions?"full":n.context.$implicit.permissions,""))}))}function Qe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,20,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Subusers"])),(l()(),e["ɵeld"](3,0,null,null,17,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,16,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,$e)),e["ɵdid"](6,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ze)),e["ɵdid"](8,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](9,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](10,0,null,null,9,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,8,"button",[["class","btn btn-light float-right tc_addSubuserButton"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal()&&e),e}),null,null)),(l()(),e["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](14,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](15,1),(l()(),e["ɵeld"](16,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](17,null,[""," ",""])),e["ɵppd"](18,1),e["ɵppd"](19,1),(l()(),e["ɵeld"](20,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,6,0,0===u.subusers.length),l(n,8,0,u.subusers);var e=l(n,15,0,u.icons.add);l(n,14,0,e)}),(function(l,n){var u=n.component,t=e["ɵunv"](n,17,0,l(n,18,0,e["ɵnov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["ɵunv"](n,17,1,l(n,19,0,e["ɵnov"](n.parent.parent,1),u.subuserLabel));l(n,17,0,t,i)}))}function Ye(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no keys."]))],null,null)}function We(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,19,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,16777216,null,null,5,"button",[["class","btn btn-light tc_showS3KeyButton"],["tooltip","Show"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](8,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,16777216,null,null,5,"button",[["class","btn btn-light tc_deleteS3KeyButton"],["tooltip","Delete"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteS3Key(l.context.index)&&e),e}),null,null)),e["ɵdid"](14,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](15,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](17,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](18,1),(l()(),e["ɵeld"](19,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,8,0,"Show");var e=l(n,12,0,u.icons.show);l(n,11,0,e),l(n,14,0,"Delete");var t=l(n,18,0,u.icons.destroy);l(n,17,0,t)}),(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.component.icons.key,"")),l(n,5,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.user,""))}))}function Je(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no keys."]))],null,null)}function Xe(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,13,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"span",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,16777216,null,null,5,"button",[["class","btn btn-light tc_showSwiftKeyButton"],["tooltip","Show"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSwiftKeyModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](8,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,8,0,"Show");var e=l(n,12,0,u.icons.show);l(n,11,0,e)}),(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.component.icons.key,"")),l(n,5,0,e["ɵinlineInterpolate"](1,"",n.context.$implicit.user,""))}))}function He(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,37,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Keys"])),(l()(),e["ɵeld"](3,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](4,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["S3"])),(l()(),e["ɵeld"](9,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Ye)),e["ɵdid"](11,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,We)),e["ɵdid"](13,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](14,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](15,0,null,null,9,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](16,0,null,null,8,"button",[["class","btn btn-light float-right tc_addS3KeyButton"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal()&&e),e}),null,null)),(l()(),e["ɵeld"](17,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](20,1),(l()(),e["ɵeld"](21,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](22,null,[""," ",""])),e["ɵppd"](23,1),e["ɵppd"](24,1),(l()(),e["ɵeld"](25,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["ɵeld"](26,0,null,0,0,"hr",[],null,null,null,null,null)),(l()(),e["ɵeld"](27,0,null,null,10,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](28,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](31,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Swift"])),(l()(),e["ɵeld"](33,0,null,0,4,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,Je)),e["ɵdid"](35,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Xe)),e["ɵdid"](37,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,11,0,0===u.s3Keys.length),l(n,13,0,u.s3Keys);var e=l(n,20,0,u.icons.add);l(n,19,0,e),l(n,28,0),l(n,35,0,0===u.swiftKeys.length),l(n,37,0,u.swiftKeys)}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess);var t=e["ɵunv"](n,22,0,l(n,23,0,e["ɵnov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["ɵunv"](n,22,1,l(n,24,0,e["ɵnov"](n.parent.parent,1),u.s3keyLabel));l(n,22,0,t,i),l(n,27,0,e["ɵnov"](n,28).hasErrors,e["ɵnov"](n,28).hasSuccess)}))}function lt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["There are no capabilities."]))],null,null)}function nt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,19,"span",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](2,0,null,null,2,"span",[["class","input-group-prepend"]],null,null,null,null,null)),(l()(),e["ɵeld"](3,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,0,"input",[["class","cd-form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,16777216,null,null,5,"button",[["class","btn btn-light tc_editCapButton"],["tooltip","Edit"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal(l.context.index)&&e),e}),null,null)),e["ɵdid"](8,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](9,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](11,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](12,1),(l()(),e["ɵeld"](13,16777216,null,null,5,"button",[["class","btn btn-light tc_deleteCapButton"],["tooltip","Delete"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteCapability(l.context.index)&&e),e}),null,null)),e["ɵdid"](14,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["ɵeld"](15,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](17,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](18,1),(l()(),e["ɵeld"](19,0,null,null,0,"span",[["class","form-text text-muted"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,8,0,"Edit");var e=l(n,12,0,u.icons.edit);l(n,11,0,e),l(n,14,0,"Delete");var t=l(n,18,0,u.icons.destroy);l(n,17,0,t)}),(function(l,n){l(n,4,0,e["ɵinlineInterpolate"](1,"",n.component.icons.share,"")),l(n,5,0,e["ɵinlineInterpolate"](2,"",n.context.$implicit.type,":",n.context.$implicit.perm,""))}))}function ut(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,24,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Capabilities"])),(l()(),e["ɵeld"](3,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](4,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,17,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,lt)),e["ɵdid"](9,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,nt)),e["ɵdid"](11,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵeld"](12,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,10,"div",[["class","col-12"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,16777216,null,null,9,"button",[["class","btn btn-light float-right tc_addCapButton"],["tooltip","All capabilities are already added."],["triggers","pointerenter pointerleave"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal()&&e),e}),null,null)),e["ɵdid"](15,212992,null,0,le.c,[e.ViewContainerRef,tn.a,le.a,e.ElementRef,e.Renderer2,Xu.a],{tooltip:[0,"tooltip"],triggers:[1,"triggers"],isDisabled:[2,"isDisabled"]},null),(l()(),e["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](18,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),e["ɵpad"](19,1),(l()(),e["ɵeld"](20,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["ɵted"](21,null,[""," ",""])),e["ɵppd"](22,1),e["ɵppd"](23,1),(l()(),e["ɵeld"](24,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(l,n){var u=n.component;l(n,4,0),l(n,9,0,0===u.capabilities.length),l(n,11,0,u.capabilities),l(n,15,0,"All capabilities are already added.","pointerenter pointerleave",!u.hasAllCapabilities());var e=l(n,19,0,u.icons.add);l(n,18,0,e)}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,14,0,u.hasAllCapabilities());var t=e["ɵunv"](n,21,0,l(n,22,0,e["ɵnov"](n.parent.parent,0),u.actionLabels.ADD)),i=e["ɵunv"](n,21,1,l(n,23,0,e["ɵnov"](n.parent.parent,1),u.capabilityLabel));l(n,21,0,t,i)}))}function et(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,27,{FormControlNames:1}),e["ɵqud"](603979776,28,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","user_quota_max_size_unlimited"],["id","user_quota_max_size_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](9,671744,[[27,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](11,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](12,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","user_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited size"]))],(function(l,n){l(n,1,0),l(n,9,0,"user_quota_max_size_unlimited"),l(n,12,0,"user_quota_max_size_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function tt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function it(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The value is not valid."]))],null,null)}function at(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,29,{FormControlNames:1}),e["ɵqud"](603979776,30,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_quota_max_size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. size"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","user_quota_max_size"],["id","user_quota_max_size"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onBlur(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](10,671744,[[29,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](12,81920,null,0,Te.a,[e.ElementRef,d.q,sn.a,L.a],null,null),e["ɵdid"](13,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](14,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,tt)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,it)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"user_quota_max_size"),l(n,12,0),l(n,14,0,"user_quota_max_size"),l(n,16,0,u.userForm.showError("user_quota_max_size",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_size",e["ɵnov"](n.parent,3),"quotaMaxSize"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function ot(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,31,{FormControlNames:1}),e["ɵqud"](603979776,32,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","user_quota_max_objects_unlimited"],["id","user_quota_max_objects_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](9,671744,[[31,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](11,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](12,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","user_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited objects"]))],(function(l,n){l(n,1,0),l(n,9,0,"user_quota_max_objects_unlimited"),l(n,12,0,"user_quota_max_objects_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function st(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function dt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be >= 0."]))],null,null)}function rt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,33,{FormControlNames:1}),e["ɵqud"](603979776,34,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_quota_max_objects"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. objects"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","user_quota_max_objects"],["id","user_quota_max_objects"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵdid"](9,16384,null,0,d.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l,n){return[l,n]}),[d.e,d.w]),e["ɵdid"](11,671744,[[33,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](13,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](14,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,st)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,dt)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"user_quota_max_objects"),l(n,14,0,"user_quota_max_objects"),l(n,16,0,u.userForm.showError("user_quota_max_objects",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_objects",e["ɵnov"](n.parent,3),"min"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function ct(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,37,{FormControlNames:1}),e["ɵqud"](603979776,38,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","bucket_quota_max_size_unlimited"],["id","bucket_quota_max_size_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](9,671744,[[37,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](11,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](12,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","bucket_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited size"]))],(function(l,n){l(n,1,0),l(n,9,0,"bucket_quota_max_size_unlimited"),l(n,12,0,"bucket_quota_max_size_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function mt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function gt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The value is not valid."]))],null,null)}function pt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,39,{FormControlNames:1}),e["ɵqud"](603979776,40,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","bucket_quota_max_size"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. size"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","bucket_quota_max_size"],["id","bucket_quota_max_size"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onBlur(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](10,671744,[[39,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](12,81920,null,0,Te.a,[e.ElementRef,d.q,sn.a,L.a],null,null),e["ɵdid"](13,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](14,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,mt)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,gt)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"bucket_quota_max_size"),l(n,12,0),l(n,14,0,"bucket_quota_max_size"),l(n,16,0,u.userForm.showError("bucket_quota_max_size",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_size",e["ɵnov"](n.parent,3),"quotaMaxSize"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function ft(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,41,{FormControlNames:1}),e["ɵqud"](603979776,42,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","bucket_quota_max_objects_unlimited"],["id","bucket_quota_max_objects_unlimited"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,7).onTouched()&&t),t}),null,null)),e["ɵdid"](7,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](9,671744,[[41,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](11,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](12,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","bucket_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Unlimited objects"]))],(function(l,n){l(n,1,0),l(n,9,0,"bucket_quota_max_objects_unlimited"),l(n,12,0,"bucket_quota_max_objects_unlimited")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function vt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function ht(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be >= 0."]))],null,null)}function bt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,43,{FormControlNames:1}),e["ɵqud"](603979776,44,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","bucket_quota_max_objects"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. objects"])),(l()(),e["ɵeld"](6,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,7,"input",[["class","form-control"],["formControlName","bucket_quota_max_objects"],["id","bucket_quota_max_objects"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,9).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,9).onTouched()&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵdid"](9,16384,null,0,d.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l,n){return[l,n]}),[d.e,d.w]),e["ɵdid"](11,671744,[[43,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](13,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](14,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vt)),e["ɵdid"](16,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ht)),e["ɵdid"](18,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,11,0,"bucket_quota_max_objects"),l(n,14,0,"bucket_quota_max_objects"),l(n,16,0,u.userForm.showError("bucket_quota_max_objects",e["ɵnov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_objects",e["ɵnov"](n.parent,3),"min"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,13).ngClassUntouched,e["ɵnov"](n,13).ngClassTouched,e["ɵnov"](n,13).ngClassPristine,e["ɵnov"](n,13).ngClassDirty,e["ɵnov"](n,13).ngClassValid,e["ɵnov"](n,13).ngClassInvalid,e["ɵnov"](n,13).ngClassPending,e["ɵnov"](n,14).validClass,e["ɵnov"](n,14).invalidClass)}))}function Ct(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,183,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,182,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,3).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,6).onSubmit()&&t),t}),null,null)),e["ɵdid"](2,16384,null,0,d.G,[],null,null),e["ɵdid"](3,540672,[["frm",4]],0,d.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,d.d,null,[d.l]),e["ɵdid"](5,16384,null,0,d.s,[[4,d.d]],null,null),e["ɵdid"](6,16384,null,0,Un.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](7,0,null,null,176,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,[""," ",""])),e["ɵppd"](10,1),e["ɵppd"](11,1),(l()(),e["ɵeld"](12,0,null,null,162,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](14,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](17,0,null,0,4,"label",[["class","cd-col-form-label"],["for","uid"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](19,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](20,{required:0}),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](22,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](23,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,25)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,25).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,25)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,25)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](24,4210688,null,0,Wn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](25,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](27,671744,[[1,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](29,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](30,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,De)),e["ɵdid"](32,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Fe)),e["ɵdid"](34,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](35,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](36,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](39,0,null,0,4,"label",[["class","cd-col-form-label"],["for","display_name"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](41,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](42,{required:0}),(l()(),e["ɵted"](-1,null,["Full name"])),(l()(),e["ɵeld"](44,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](45,0,null,null,6,"input",[["class","form-control"],["formControlName","display_name"],["id","display_name"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,46)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,46).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,46)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,46)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](46,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](48,671744,[[3,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](50,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](51,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,je)),e["ɵdid"](53,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](54,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](55,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](58,0,null,0,1,"label",[["class","cd-col-form-label"],["for","email"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Email address"])),(l()(),e["ɵeld"](60,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,6,"input",[["class","form-control"],["formControlName","email"],["id","email"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,62)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,62).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,62)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,62)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](62,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](64,671744,[[5,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](66,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](67,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Pe)),e["ɵdid"](69,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Be)),e["ɵdid"](71,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](72,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](73,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](76,0,null,0,1,"label",[["class","cd-col-form-label"],["for","max_buckets_mode"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Max. buckets"])),(l()(),e["ɵeld"](78,0,null,0,19,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](79,0,null,null,18,"select",[["class","form-control custom-select"],["formControlName","max_buckets_mode"],["id","max_buckets_mode"],["name","max_buckets_mode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,80).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,80).onTouched()&&t),t}),null,null)),e["ɵdid"](80,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](82,671744,[[7,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](84,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](85,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](86,0,null,null,3,"option",[["value","-1"]],null,null,null,null,null)),e["ɵdid"](87,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](88,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Disabled"])),(l()(),e["ɵeld"](90,0,null,null,3,"option",[["value","0"]],null,null,null,null,null)),e["ɵdid"](91,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](92,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Unlimited"])),(l()(),e["ɵeld"](94,0,null,null,3,"option",[["value","1"]],null,null,null,null,null)),e["ɵdid"](95,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](96,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Custom"])),(l()(),e["ɵand"](16777216,null,null,1,null,Ue)),e["ɵdid"](99,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](100,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](101,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](104,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](105,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](106,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","suspended"],["id","suspended"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,107).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,107).onTouched()&&t),t}),null,null)),e["ɵdid"](107,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](109,671744,[[11,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](111,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](112,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](113,0,null,null,1,"label",[["class","custom-control-label"],["for","suspended"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Suspended"])),(l()(),e["ɵand"](16777216,null,null,1,null,Ke)),e["ɵdid"](116,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Qe)),e["ɵdid"](118,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,He)),e["ɵdid"](120,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ut)),e["ɵdid"](122,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](123,0,null,null,25,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](124,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User quota"])),(l()(),e["ɵeld"](126,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](127,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,25,{FormControlNames:1}),e["ɵqud"](603979776,26,{messagesBlock:0}),(l()(),e["ɵeld"](130,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](131,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](132,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","user_quota_enabled"],["id","user_quota_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,133).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,133).onTouched()&&t),t}),null,null)),e["ɵdid"](133,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](135,671744,[[25,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](137,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](138,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](139,0,null,null,1,"label",[["class","custom-control-label"],["for","user_quota_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵand"](16777216,null,null,1,null,et)),e["ɵdid"](142,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,at)),e["ɵdid"](144,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ot)),e["ɵdid"](146,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,rt)),e["ɵdid"](148,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](149,0,null,null,25,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](150,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Bucket quota"])),(l()(),e["ɵeld"](152,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](153,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,35,{FormControlNames:1}),e["ɵqud"](603979776,36,{messagesBlock:0}),(l()(),e["ɵeld"](156,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](157,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](158,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","bucket_quota_enabled"],["id","bucket_quota_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,159).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,159).onTouched()&&t),t}),null,null)),e["ɵdid"](159,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](161,671744,[[35,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](163,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](164,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](165,0,null,null,1,"label",[["class","custom-control-label"],["for","bucket_quota_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵand"](16777216,null,null,1,null,ct)),e["ɵdid"](168,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,pt)),e["ɵdid"](170,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ft)),e["ɵdid"](172,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,bt)),e["ɵdid"](174,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](175,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](176,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](177,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e}),Jn.b,Jn.a)),e["ɵdid"](178,114688,null,0,Xn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](179,0,[""," ",""])),e["ɵppd"](180,1),e["ɵppd"](181,1),(l()(),e["ɵeld"](182,0,null,null,1,"cd-back-button",[],null,null,null,Gn.b,Gn.a)),e["ɵdid"](183,49152,null,0,Kn.a,[Dl.Location,t.b],null,null)],(function(l,n){var u=n.component;l(n,3,0,u.userForm),l(n,6,0,u.userForm),l(n,14,0);var t=l(n,20,0,!u.editing);l(n,19,0,"cd-col-form-label",t),l(n,24,0,""),l(n,27,0,"uid"),l(n,30,0,"uid"),l(n,32,0,u.userForm.showError("uid",e["ɵnov"](n,3),"required")),l(n,34,0,u.userForm.showError("uid",e["ɵnov"](n,3),"notUnique")),l(n,36,0);var i=l(n,42,0,!u.editing);l(n,41,0,"cd-col-form-label",i),l(n,48,0,"display_name"),l(n,51,0,"display_name"),l(n,53,0,u.userForm.showError("display_name",e["ɵnov"](n,3),"required")),l(n,55,0),l(n,64,0,"email"),l(n,67,0,"email"),l(n,69,0,u.userForm.showError("email",e["ɵnov"](n,3),"email")),l(n,71,0,u.userForm.showError("email",e["ɵnov"](n,3),"notUnique")),l(n,73,0),l(n,82,0,"max_buckets_mode"),l(n,85,0,"max_buckets_mode"),l(n,87,0,"-1"),l(n,88,0,"-1"),l(n,91,0,"0"),l(n,92,0,"0"),l(n,95,0,"1"),l(n,96,0,"1"),l(n,99,0,1==u.userForm.get("max_buckets_mode").value),l(n,101,0),l(n,109,0,"suspended"),l(n,112,0,"suspended"),l(n,116,0,!u.editing),l(n,118,0,u.editing),l(n,120,0,u.editing),l(n,122,0,u.editing),l(n,127,0),l(n,135,0,"user_quota_enabled"),l(n,138,0,"user_quota_enabled"),l(n,142,0,u.userForm.controls.user_quota_enabled.value),l(n,144,0,u.userForm.controls.user_quota_enabled.value&&!u.userForm.getValue("user_quota_max_size_unlimited")),l(n,146,0,u.userForm.controls.user_quota_enabled.value),l(n,148,0,u.userForm.controls.user_quota_enabled.value&&!u.userForm.getValue("user_quota_max_objects_unlimited")),l(n,153,0),l(n,161,0,"bucket_quota_enabled"),l(n,164,0,"bucket_quota_enabled"),l(n,168,0,u.userForm.controls.bucket_quota_enabled.value),l(n,170,0,u.userForm.controls.bucket_quota_enabled.value&&!u.userForm.getValue("bucket_quota_max_size_unlimited")),l(n,172,0,u.userForm.controls.bucket_quota_enabled.value),l(n,174,0,u.userForm.controls.bucket_quota_enabled.value&&!u.userForm.getValue("bucket_quota_max_objects_unlimited")),l(n,178,0,u.userForm)}),(function(l,n){var u=n.component;l(n,1,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending);var t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent,0),u.action)),i=e["ɵunv"](n,9,1,l(n,11,0,e["ɵnov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,13,0,e["ɵnov"](n,14).hasErrors,e["ɵnov"](n,14).hasSuccess),l(n,23,0,u.editing,e["ɵnov"](n,29).ngClassUntouched,e["ɵnov"](n,29).ngClassTouched,e["ɵnov"](n,29).ngClassPristine,e["ɵnov"](n,29).ngClassDirty,e["ɵnov"](n,29).ngClassValid,e["ɵnov"](n,29).ngClassInvalid,e["ɵnov"](n,29).ngClassPending,e["ɵnov"](n,30).validClass,e["ɵnov"](n,30).invalidClass),l(n,35,0,e["ɵnov"](n,36).hasErrors,e["ɵnov"](n,36).hasSuccess),l(n,45,0,e["ɵnov"](n,50).ngClassUntouched,e["ɵnov"](n,50).ngClassTouched,e["ɵnov"](n,50).ngClassPristine,e["ɵnov"](n,50).ngClassDirty,e["ɵnov"](n,50).ngClassValid,e["ɵnov"](n,50).ngClassInvalid,e["ɵnov"](n,50).ngClassPending,e["ɵnov"](n,51).validClass,e["ɵnov"](n,51).invalidClass),l(n,54,0,e["ɵnov"](n,55).hasErrors,e["ɵnov"](n,55).hasSuccess),l(n,61,0,e["ɵnov"](n,66).ngClassUntouched,e["ɵnov"](n,66).ngClassTouched,e["ɵnov"](n,66).ngClassPristine,e["ɵnov"](n,66).ngClassDirty,e["ɵnov"](n,66).ngClassValid,e["ɵnov"](n,66).ngClassInvalid,e["ɵnov"](n,66).ngClassPending,e["ɵnov"](n,67).validClass,e["ɵnov"](n,67).invalidClass),l(n,72,0,e["ɵnov"](n,73).hasErrors,e["ɵnov"](n,73).hasSuccess),l(n,79,0,e["ɵnov"](n,84).ngClassUntouched,e["ɵnov"](n,84).ngClassTouched,e["ɵnov"](n,84).ngClassPristine,e["ɵnov"](n,84).ngClassDirty,e["ɵnov"](n,84).ngClassValid,e["ɵnov"](n,84).ngClassInvalid,e["ɵnov"](n,84).ngClassPending,e["ɵnov"](n,85).validClass,e["ɵnov"](n,85).invalidClass),l(n,100,0,e["ɵnov"](n,101).hasErrors,e["ɵnov"](n,101).hasSuccess),l(n,106,0,e["ɵnov"](n,111).ngClassUntouched,e["ɵnov"](n,111).ngClassTouched,e["ɵnov"](n,111).ngClassPristine,e["ɵnov"](n,111).ngClassDirty,e["ɵnov"](n,111).ngClassValid,e["ɵnov"](n,111).ngClassInvalid,e["ɵnov"](n,111).ngClassPending,e["ɵnov"](n,112).validClass,e["ɵnov"](n,112).invalidClass),l(n,126,0,e["ɵnov"](n,127).hasErrors,e["ɵnov"](n,127).hasSuccess),l(n,132,0,e["ɵnov"](n,137).ngClassUntouched,e["ɵnov"](n,137).ngClassTouched,e["ɵnov"](n,137).ngClassPristine,e["ɵnov"](n,137).ngClassDirty,e["ɵnov"](n,137).ngClassValid,e["ɵnov"](n,137).ngClassInvalid,e["ɵnov"](n,137).ngClassPending,e["ɵnov"](n,138).validClass,e["ɵnov"](n,138).invalidClass),l(n,152,0,e["ɵnov"](n,153).hasErrors,e["ɵnov"](n,153).hasSuccess),l(n,158,0,e["ɵnov"](n,163).ngClassUntouched,e["ɵnov"](n,163).ngClassTouched,e["ɵnov"](n,163).ngClassPristine,e["ɵnov"](n,163).ngClassDirty,e["ɵnov"](n,163).ngClassValid,e["ɵnov"](n,163).ngClassInvalid,e["ɵnov"](n,163).ngClassPending,e["ɵnov"](n,164).validClass,e["ɵnov"](n,164).invalidClass);var a=e["ɵunv"](n,179,0,l(n,180,0,e["ɵnov"](n.parent,0),u.action)),o=e["ɵunv"](n,179,1,l(n,181,0,e["ɵnov"](n.parent,1),u.resource));l(n,179,0,a,o)}))}function _t(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,Bn.a,[]),(l()(),e["ɵand"](16777216,null,null,1,null,xe)),e["ɵdid"](3,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Se)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ct)),e["ɵdid"](7,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,u.editing&&u.error),l(n,7,0,!u.loading&&!u.error)}),null)}function Rt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-user-form",[],null,null,null,_t,Ve)),e["ɵdid"](1,114688,null,0,W,[k.a,ue.a,ue.m,_.a,rn.b,w.a,wl.a,t.b],null,null)],(function(l,n){l(n,1,0)}),null)}var yt=e["ɵccf"]("cd-rgw-user-form",W,Rt,{},{},[]),kt=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function It(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,be.b,be.a)),e["ɵdid"](1,114688,null,0,Ce.a,[wl.a],{type:[0,"type"],size:[1,"size"]},null),(l()(),e["ɵted"](-1,0,["The bucket list data might be stale. If needed, you can manually reload it."]))],(function(l,n){l(n,1,0,"warning","slim")}),null)}function wt(l){return e["ɵvid"](0,[e["ɵqud"](402653184,1,{table:0}),(l()(),e["ɵand"](16777216,null,null,1,null,It)),e["ɵdid"](2,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](3,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","bid"],["selectionType","multiClick"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(l,n,u){var e=!0,t=l.component;return"setExpandedRow"===n&&(e=!1!==t.setExpandedRow(u)&&e),"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getBucketList(u)&&e),e}),un.b,un.a)),e["ɵdid"](4,2867200,[[1,4],["table",4]],0,S.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](5,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,_e.b,_e.a)),e["ɵdid"](6,114688,null,0,Re.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](7,0,null,3,1,"cd-rgw-bucket-details",[["cdTableDetail",""]],null,null,null,Hl,Gl)),e["ɵdid"](8,49152,null,0,zl,[],{selection:[0,"selection"]},null)],(function(l,n){var u=n.component;l(n,2,0,u.isStale),l(n,4,0,u.buckets,u.columns,"flex",!0,!1,"bid","multiClick"),l(n,6,0,u.permission,u.selection,u.tableActions),l(n,8,0,u.expandedRow)}),null)}function Et(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-rgw-bucket-list",[],null,null,null,wt,kt)),e["ɵprd"](256,null,j.a,P,[]),e["ɵdid"](2,49152,null,0,B,[F.a,b,rn.b,wl.a,j.a,t.b,e.NgZone],null,null)],null,null)}var Nt=e["ɵccf"]("cd-rgw-bucket-list",B,Et,{},{},[]),qt=u("4HWh"),Tt=u("p4Cf"),Vt=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function xt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ne.b,Ne.a)),e["ɵdid"](1,49152,null,0,qe.a,[],null,null),(l()(),e["ɵted"](-1,0,["Loading bucket data..."]))],null,null)}function St(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,1,{FormControlNames:1}),e["ɵqud"](603979776,2,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","id"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Id"])),(l()(),e["ɵeld"](6,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","id"],["id","id"],["name","id"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](10,671744,[[1,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](12,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](13,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,1,0),l(n,10,0,"id"),l(n,13,0,"id")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function Dt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ft(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The value is not valid."]))],null,null)}function jt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen name is already in use."]))],null,null)}function Pt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Bt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a user --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function At(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function Mt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Ut(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["Loading..."]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Ot(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["ɵted"](-1,null,["-- Select a placement target --"]))],(function(l,n){l(n,1,0,null),l(n,2,0,null)}),null)}function Lt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["ɵdid"](1,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](2,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](3,null,["",""]))],(function(l,n){l(n,1,0,n.context.$implicit.name),l(n,2,0,n.context.$implicit.name)}),(function(l,n){l(n,3,0,n.context.$implicit.description)}))}function zt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Gt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","placement-target"],["id","placement-target"],["name","placement-target"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,1).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,1).onTouched()&&t),t}),null,null)),e["ɵdid"](1,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](3,671744,[[7,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](5,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](6,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ut)),e["ɵdid"](8,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ot)),e["ɵdid"](10,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Lt)),e["ɵdid"](12,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,zt)),e["ɵdid"](14,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){var u=n.component;l(n,3,0,"placement-target"),l(n,6,0,"placement-target"),l(n,8,0,null===u.placementTargets),l(n,10,0,null!==u.placementTargets),l(n,12,0,u.placementTargets),l(n,14,0,u.bucketForm.showError("placement-target",e["ɵnov"](n.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending,e["ɵnov"](n,6).validClass,e["ɵnov"](n,6).invalidClass)}))}function Kt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,6,"input",[["class","form-control"],["formControlName","placement-target"],["id","placement-target"],["name","placement-target"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,2)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,2).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,2)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,2)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](2,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](4,671744,[[7,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](6,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](7,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null)],(function(l,n){l(n,4,0,"placement-target"),l(n,7,0,"placement-target")}),(function(l,n){l(n,1,0,e["ɵnov"](n,6).ngClassUntouched,e["ɵnov"](n,6).ngClassTouched,e["ɵnov"](n,6).ngClassPristine,e["ɵnov"](n,6).ngClassDirty,e["ɵnov"](n,6).ngClassValid,e["ɵnov"](n,6).ngClassInvalid,e["ɵnov"](n,6).ngClassPending,e["ɵnov"](n,7).validClass,e["ɵnov"](n,7).invalidClass)}))}function $t(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Versioning"])),(l()(),e["ɵeld"](3,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](4,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,9,{FormControlNames:1}),e["ɵqud"](603979776,10,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","versioning"],["id","versioning"],["name","versioning"],["type","checkbox"]],[[8,"checked",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0,i=l.component;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),"change"===n&&(t=!1!==i.updateVersioning()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](12,671744,[[9,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](14,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](15,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","versioning"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](18,0,null,null,3,"cd-helper",[],null,null,null,qt.b,qt.a)),e["ɵdid"](19,49152,null,0,Tt.a,[],null,null),(l()(),e["ɵeld"](20,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enables versioning for the objects in the bucket."]))],(function(l,n){l(n,4,0),l(n,12,0,"versioning"),l(n,15,0,"versioning")}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,u.isVersioningEnabled,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function Zt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Qt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,13,{FormControlNames:1}),e["ɵqud"](603979776,14,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mfa-token-serial"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Token Serial Number"])),(l()(),e["ɵeld"](6,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","mfa-token-serial"],["id","mfa-token-serial"],["name","mfa-token-serial"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](10,671744,[[13,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](12,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](13,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Zt)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"mfa-token-serial"),l(n,13,0,"mfa-token-serial"),l(n,15,0,u.bucketForm.showError("mfa-token-serial",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function Yt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Wt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,15,{FormControlNames:1}),e["ɵqud"](603979776,16,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","mfa-token-pin"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Token PIN"])),(l()(),e["ɵeld"](6,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","mfa-token-pin"],["id","mfa-token-pin"],["name","mfa-token-pin"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,8)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,8)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,8)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](10,671744,[[15,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](12,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](13,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Yt)),e["ɵdid"](15,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,10,0,"mfa-token-pin"),l(n,13,0,"mfa-token-pin"),l(n,15,0,u.bucketForm.showError("mfa-token-pin",e["ɵnov"](n.parent.parent,3),"required"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function Jt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,25,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Multi-Factor Authentication"])),(l()(),e["ɵeld"](3,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](4,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,11,{FormControlNames:1}),e["ɵqud"](603979776,12,{messagesBlock:0}),(l()(),e["ɵeld"](7,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](9,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","mfa-delete"],["id","mfa-delete"],["name","mfa-delete"],["type","checkbox"]],[[8,"checked",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0,i=l.component;return"change"===n&&(t=!1!==e["ɵnov"](l,10).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,10).onTouched()&&t),"change"===n&&(t=!1!==i.updateMfaDelete()&&t),t}),null,null)),e["ɵdid"](10,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](12,671744,[[11,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](14,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](15,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](16,0,null,null,1,"label",[["class","custom-control-label"],["for","mfa-delete"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Delete enabled"])),(l()(),e["ɵeld"](18,0,null,null,3,"cd-helper",[],null,null,null,qt.b,qt.a)),e["ɵdid"](19,49152,null,0,Tt.a,[],null,null),(l()(),e["ɵeld"](20,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state."])),(l()(),e["ɵand"](16777216,null,null,1,null,Qt)),e["ɵdid"](23,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Wt)),e["ɵdid"](25,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,4,0),l(n,12,0,"mfa-delete"),l(n,15,0,"mfa-delete"),l(n,23,0,u.areMfaCredentialsRequired()),l(n,25,0,u.areMfaCredentialsRequired())}),(function(l,n){var u=n.component;l(n,3,0,e["ɵnov"](n,4).hasErrors,e["ɵnov"](n,4).hasSuccess),l(n,9,0,u.isMfaDeleteEnabled,e["ɵnov"](n,14).ngClassUntouched,e["ɵnov"](n,14).ngClassTouched,e["ɵnov"](n,14).ngClassPristine,e["ɵnov"](n,14).ngClassDirty,e["ɵnov"](n,14).ngClassValid,e["ɵnov"](n,14).ngClassInvalid,e["ɵnov"](n,14).ngClassPending,e["ɵnov"](n,15).validClass,e["ɵnov"](n,15).invalidClass)}))}function Xt(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,19,{FormControlNames:1}),e["ɵqud"](603979776,20,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"],["for","lock_mode"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Mode"])),(l()(),e["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","lock_mode"],["id","lock_mode"],["name","lock_mode"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,8).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,8).onTouched()&&t),t}),null,null)),e["ɵdid"](8,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](10,671744,[[19,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](12,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](13,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](14,0,null,null,3,"option",[["value","COMPLIANCE"]],null,null,null,null,null)),e["ɵdid"](15,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](16,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Compliance"])),(l()(),e["ɵeld"](18,0,null,null,3,"option",[["value","GOVERNANCE"]],null,null,null,null,null)),e["ɵdid"](19,147456,null,0,d.v,[e.ElementRef,e.Renderer2,[2,d.A]],{value:[0,"value"]},null),e["ɵdid"](20,147456,null,0,d.F,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["ɵted"](-1,null,["Governance"]))],(function(l,n){l(n,1,0),l(n,10,0,"lock_mode"),l(n,13,0,"lock_mode"),l(n,15,0,"COMPLIANCE"),l(n,16,0,"COMPLIANCE"),l(n,19,0,"GOVERNANCE"),l(n,20,0,"GOVERNANCE")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,7,0,e["ɵnov"](n,12).ngClassUntouched,e["ɵnov"](n,12).ngClassTouched,e["ɵnov"](n,12).ngClassPristine,e["ɵnov"](n,12).ngClassDirty,e["ɵnov"](n,12).ngClassValid,e["ɵnov"](n,12).ngClassInvalid,e["ɵnov"](n,12).ngClassPending,e["ɵnov"](n,13).validClass,e["ɵnov"](n,13).invalidClass)}))}function Ht(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be a positive integer."]))],null,null)}function li(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Retention period requires either Days or Years."]))],null,null)}function ni(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,21,{FormControlNames:1}),e["ɵqud"](603979776,22,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","lock_retention_period_days"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Days"])),(l()(),e["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,qt.b,qt.a)),e["ɵdid"](8,49152,null,0,Tt.a,[],null,null),(l()(),e["ɵted"](-1,0,["The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket."])),(l()(),e["ɵeld"](10,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,7,"input",[["class","form-control"],["formControlName","lock_retention_period_days"],["id","lock_retention_period_days"],["min","0"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,13).onTouched()&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵdid"](13,16384,null,0,d.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l,n){return[l,n]}),[d.e,d.w]),e["ɵdid"](15,671744,[[21,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](17,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](18,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ht)),e["ɵdid"](20,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,li)),e["ɵdid"](22,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,15,0,"lock_retention_period_days"),l(n,18,0,"lock_retention_period_days"),l(n,20,0,u.bucketForm.showError("lock_retention_period_days",e["ɵnov"](n.parent,3),"pattern")),l(n,22,0,u.bucketForm.showError("lock_retention_period_days",e["ɵnov"](n.parent,3),"eitherDaysOrYears"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,e["ɵnov"](n,17).ngClassUntouched,e["ɵnov"](n,17).ngClassTouched,e["ɵnov"](n,17).ngClassPristine,e["ɵnov"](n,17).ngClassDirty,e["ɵnov"](n,17).ngClassValid,e["ɵnov"](n,17).ngClassInvalid,e["ɵnov"](n,17).ngClassPending,e["ɵnov"](n,18).validClass,e["ɵnov"](n,18).invalidClass)}))}function ui(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The entered value must be a positive integer."]))],null,null)}function ei(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Retention period requires either Days or Years."]))],null,null)}function ti(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](1,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,23,{FormControlNames:1}),e["ɵqud"](603979776,24,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,5,"label",[["class","cd-col-form-label"],["for","lock_retention_period_years"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Years"])),(l()(),e["ɵeld"](7,0,null,null,2,"cd-helper",[],null,null,null,qt.b,qt.a)),e["ɵdid"](8,49152,null,0,Tt.a,[],null,null),(l()(),e["ɵted"](-1,0,["The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket."])),(l()(),e["ɵeld"](10,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](11,0,null,null,7,"input",[["class","form-control"],["formControlName","lock_retention_period_years"],["id","lock_retention_period_years"],["min","0"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,12)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["ɵnov"](l,13).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,13).onTouched()&&t),t}),null,null)),e["ɵdid"](12,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵdid"](13,16384,null,0,d.w,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l,n){return[l,n]}),[d.e,d.w]),e["ɵdid"](15,671744,[[23,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](17,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](18,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ui)),e["ɵdid"](20,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ei)),e["ɵdid"](22,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,15,0,"lock_retention_period_years"),l(n,18,0,"lock_retention_period_years"),l(n,20,0,u.bucketForm.showError("lock_retention_period_days",e["ɵnov"](n.parent,3),"pattern")),l(n,22,0,u.bucketForm.showError("lock_retention_period_years",e["ɵnov"](n.parent,3),"eitherDaysOrYears"))}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,11,0,e["ɵnov"](n,17).ngClassUntouched,e["ɵnov"](n,17).ngClassTouched,e["ɵnov"](n,17).ngClassPristine,e["ɵnov"](n,17).ngClassDirty,e["ɵnov"](n,17).ngClassValid,e["ɵnov"](n,17).ngClassInvalid,e["ɵnov"](n,17).ngClassPending,e["ɵnov"](n,18).validClass,e["ɵnov"](n,18).invalidClass)}))}function ii(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,115,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,114,"form",[["name","bucketForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["ɵnov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["ɵnov"](l,3).onReset()&&t),"submit"===n&&(t=!1!==e["ɵnov"](l,6).onSubmit()&&t),t}),null,null)),e["ɵdid"](2,16384,null,0,d.G,[],null,null),e["ɵdid"](3,540672,[["frm",4]],0,d.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,d.d,null,[d.l]),e["ɵdid"](5,16384,null,0,d.s,[[4,d.d]],null,null),e["ɵdid"](6,16384,null,0,Un.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](7,0,null,null,108,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](9,null,[""," ",""])),e["ɵppd"](10,1),e["ɵppd"](11,1),(l()(),e["ɵeld"](12,0,null,null,94,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,St)),e["ɵdid"](14,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](15,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](16,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,3,{FormControlNames:1}),e["ɵqud"](603979776,4,{messagesBlock:0}),(l()(),e["ɵeld"](19,0,null,0,4,"label",[["class","cd-col-form-label"],["for","bid"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](21,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](22,{required:0}),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](24,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](25,0,null,null,7,"input",[["class","form-control"],["formControlName","bid"],["id","bid"],["name","bid"],["placeholder","Name..."],["type","text"]],[[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["ɵnov"](l,27)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,27).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["ɵnov"](l,27)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["ɵnov"](l,27)._compositionEnd(u.target.value)&&t),t}),null,null)),e["ɵdid"](26,4210688,null,0,Wn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](27,16384,null,0,d.e,[e.Renderer2,e.ElementRef,[2,d.b]],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.e]),e["ɵdid"](29,671744,[[3,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](31,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](32,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Dt)),e["ɵdid"](34,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Ft)),e["ɵdid"](36,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,jt)),e["ɵdid"](38,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](39,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](40,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,5,{FormControlNames:1}),e["ɵqud"](603979776,6,{messagesBlock:0}),(l()(),e["ɵeld"](43,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","owner"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Owner"])),(l()(),e["ɵeld"](45,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](46,0,null,null,13,"select",[["class","form-control custom-select"],["formControlName","owner"],["id","owner"],["name","owner"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,48).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,48).onTouched()&&t),t}),null,null)),e["ɵdid"](47,4210688,null,0,Wn.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](48,16384,null,0,d.A,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.A]),e["ɵdid"](50,671744,[[5,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](52,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](53,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Pt)),e["ɵdid"](55,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Bt)),e["ɵdid"](57,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,At)),e["ɵdid"](59,278528,null,0,Dl.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Mt)),e["ɵdid"](61,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](62,0,null,null,12,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](63,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,7,{FormControlNames:1}),e["ɵqud"](603979776,8,{messagesBlock:0}),(l()(),e["ɵeld"](66,0,null,0,4,"label",[["class","cd-col-form-label"],["for","placement-target"]],null,null,null,null,null)),e["ɵprd"](512,null,Dl["ɵNgClassImpl"],Dl["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](68,278528,null,0,Dl.NgClass,[Dl["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](69,{required:0}),(l()(),e["ɵted"](-1,null,["Placement target"])),(l()(),e["ɵeld"](71,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](0,[["placementTargetSelect",2]],null,0,null,Gt)),(l()(),e["ɵand"](16777216,null,null,1,null,Kt)),e["ɵdid"](74,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,$t)),e["ɵdid"](76,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Jt)),e["ɵdid"](78,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](79,0,null,null,27,"fieldset",[],null,null,null,null,null)),(l()(),e["ɵeld"](80,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Locking"])),(l()(),e["ɵeld"](82,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Mn.b,Mn.a)),e["ɵdid"](83,1163264,null,2,Un.c,[e.ElementRef,Un.g],null,null),e["ɵqud"](603979776,17,{FormControlNames:1}),e["ɵqud"](603979776,18,{messagesBlock:0}),(l()(),e["ɵeld"](86,0,null,0,14,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](87,0,null,null,13,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](88,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","lock_enabled"],["id","lock_enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["ɵnov"](l,89).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["ɵnov"](l,89).onTouched()&&t),t}),null,null)),e["ɵdid"](89,16384,null,0,d.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,d.p,(function(l){return[l]}),[d.c]),e["ɵdid"](91,671744,[[17,4]],0,d.j,[[3,d.d],[8,null],[8,null],[6,d.p],[2,d.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,d.q,null,[d.j]),e["ɵdid"](93,16384,null,0,d.r,[[4,d.q]],null,null),e["ɵdid"](94,16384,null,0,Un.h,[[3,d.d],Un.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](95,0,null,null,1,"label",[["class","custom-control-label"],["for","lock_enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"])),(l()(),e["ɵeld"](97,0,null,null,3,"cd-helper",[],null,null,null,qt.b,qt.a)),e["ɵdid"](98,49152,null,0,Tt.a,[],null,null),(l()(),e["ɵeld"](99,0,null,0,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket."])),(l()(),e["ɵand"](16777216,null,null,1,null,Xt)),e["ɵdid"](102,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ni)),e["ɵdid"](104,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ti)),e["ɵdid"](106,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](107,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](108,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](109,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Jn.b,Jn.a)),e["ɵdid"](110,114688,null,0,Xn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](111,0,[""," ",""])),e["ɵppd"](112,1),e["ɵppd"](113,1),(l()(),e["ɵeld"](114,0,null,null,1,"cd-back-button",[],null,null,null,Gn.b,Gn.a)),e["ɵdid"](115,49152,null,0,Kn.a,[Dl.Location,t.b],null,null)],(function(l,n){var u=n.component;l(n,3,0,u.bucketForm),l(n,6,0,u.bucketForm),l(n,14,0,u.editing),l(n,16,0);var t=l(n,22,0,!u.editing);l(n,21,0,"cd-col-form-label",t),l(n,26,0,!u.editing),l(n,29,0,"bid"),l(n,32,0,"bid"),l(n,34,0,u.bucketForm.showError("bid",e["ɵnov"](n,3),"required")),l(n,36,0,u.bucketForm.showError("bid",e["ɵnov"](n,3),"bucketNameInvalid")),l(n,38,0,u.bucketForm.showError("bid",e["ɵnov"](n,3),"bucketNameExists")),l(n,40,0),l(n,47,0,u.editing),l(n,50,0,"owner"),l(n,53,0,"owner"),l(n,55,0,null===u.owners),l(n,57,0,null!==u.owners),l(n,59,0,u.owners),l(n,61,0,u.bucketForm.showError("owner",e["ɵnov"](n,3),"required")),l(n,63,0);var i=l(n,69,0,!u.editing);l(n,68,0,"cd-col-form-label",i),l(n,74,0,u.editing,e["ɵnov"](n,72)),l(n,76,0,u.editing),l(n,78,0,u.editing),l(n,83,0),l(n,91,0,"lock_enabled"),l(n,94,0,"lock_enabled"),l(n,102,0,u.bucketForm.getValue("lock_enabled")),l(n,104,0,u.bucketForm.getValue("lock_enabled")),l(n,106,0,u.bucketForm.getValue("lock_enabled")),l(n,110,0,u.bucketForm)}),(function(l,n){var u=n.component;l(n,1,0,e["ɵnov"](n,5).ngClassUntouched,e["ɵnov"](n,5).ngClassTouched,e["ɵnov"](n,5).ngClassPristine,e["ɵnov"](n,5).ngClassDirty,e["ɵnov"](n,5).ngClassValid,e["ɵnov"](n,5).ngClassInvalid,e["ɵnov"](n,5).ngClassPending);var t=e["ɵunv"](n,9,0,l(n,10,0,e["ɵnov"](n.parent,0),u.action)),i=e["ɵunv"](n,9,1,l(n,11,0,e["ɵnov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,15,0,e["ɵnov"](n,16).hasErrors,e["ɵnov"](n,16).hasSuccess),l(n,25,0,u.editing,e["ɵnov"](n,31).ngClassUntouched,e["ɵnov"](n,31).ngClassTouched,e["ɵnov"](n,31).ngClassPristine,e["ɵnov"](n,31).ngClassDirty,e["ɵnov"](n,31).ngClassValid,e["ɵnov"](n,31).ngClassInvalid,e["ɵnov"](n,31).ngClassPending,e["ɵnov"](n,32).validClass,e["ɵnov"](n,32).invalidClass),l(n,39,0,e["ɵnov"](n,40).hasErrors,e["ɵnov"](n,40).hasSuccess),l(n,46,0,e["ɵnov"](n,52).ngClassUntouched,e["ɵnov"](n,52).ngClassTouched,e["ɵnov"](n,52).ngClassPristine,e["ɵnov"](n,52).ngClassDirty,e["ɵnov"](n,52).ngClassValid,e["ɵnov"](n,52).ngClassInvalid,e["ɵnov"](n,52).ngClassPending,e["ɵnov"](n,53).validClass,e["ɵnov"](n,53).invalidClass),l(n,62,0,e["ɵnov"](n,63).hasErrors,e["ɵnov"](n,63).hasSuccess),l(n,82,0,e["ɵnov"](n,83).hasErrors,e["ɵnov"](n,83).hasSuccess),l(n,88,0,e["ɵnov"](n,93).ngClassUntouched,e["ɵnov"](n,93).ngClassTouched,e["ɵnov"](n,93).ngClassPristine,e["ɵnov"](n,93).ngClassDirty,e["ɵnov"](n,93).ngClassValid,e["ɵnov"](n,93).ngClassInvalid,e["ɵnov"](n,93).ngClassPending,e["ɵnov"](n,94).validClass,e["ɵnov"](n,94).invalidClass);var a=e["ɵunv"](n,111,0,l(n,112,0,e["ɵnov"](n.parent,0),u.action)),o=e["ɵunv"](n,111,1,l(n,113,0,e["ɵnov"](n.parent,1),u.resource));l(n,111,0,a,o)}))}function ai(l){return e["ɵvid"](0,[e["ɵpid"](0,Dl.TitleCasePipe,[]),e["ɵpid"](0,Bn.a,[]),(l()(),e["ɵand"](16777216,null,null,1,null,xt)),e["ɵdid"](3,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ii)),e["ɵdid"](5,16384,null,0,Dl.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,!u.loading&&!u.error)}),null)}function oi(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-bucket-form",[],null,null,null,ai,Vt)),e["ɵdid"](1,114688,null,0,q,[ue.a,ue.m,k.a,b,C,_.a,w.a,wl.a,t.b],null,null)],(function(l,n){l(n,1,0)}),null)}var si=e["ɵccf"]("cd-rgw-bucket-form",q,oi,{},{},[]),di=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ri(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["type","info"]],null,null,null,be.b,be.a)),e["ɵdid"](1,114688,null,0,Ce.a,[wl.a],{type:[0,"type"]},null),(l()(),e["ɵted"](2,0,[" ",""])),(l()(),e["ɵeld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Please consult the "])),(l()(),e["ɵeld"](6,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(l()(),e["ɵted"](-1,null,["documentation"])),(l()(),e["ɵted"](-1,null,[" on how to configure and enable the Object Gateway management functionality."]))],(function(l,n){l(n,1,0,"info")}),(function(l,n){var u=n.component;l(n,2,0,u.message),l(n,6,0,e["ɵinlineInterpolate"](1,"",u.docsUrl,""))}))}function ci(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-rgw-501",[],null,null,null,ri,di)),e["ɵdid"](1,245760,null,0,s,[ue.a,o.a,a.a],null,null)],(function(l,n){l(n,1,0)}),null)}var mi=e["ɵccf"]("cd-rgw-501",s,ci,{},{},[]);u.d(n,"RgwModuleNgFactory",(function(){return gi})),u.d(n,"RoutedRgwModuleNgFactory",(function(){return pi}));var gi=e["ɵcmf"](ll,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[rl.a,cl.a,ml.a,gl.a,gl.b,pl.a,fl.a,vl.a,hl.a,bl.a,Cl.a,Ul,nn,Pn,Yn,gu,Iu,ju]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,Dl.NgLocalization,Dl.NgLocaleLocalization,[e.LOCALE_ID,[2,Dl["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,Pu.a,Pu.a,[]),e["ɵmpd"](4608,Bu.a,Bu.a,[]),e["ɵmpd"](4608,Ol.a,Ol.a,[wl.a]),e["ɵmpd"](4608,Dl.DatePipe,Dl.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,a.a,a.a,[]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,sn.a,sn.a,[L.a]),e["ɵmpd"](4608,Au.a,Au.a,[L.a]),e["ɵmpd"](4608,Ll.a,Ll.a,[L.a]),e["ɵmpd"](4608,Mu.a,Mu.a,[]),e["ɵmpd"](4608,Uu.a,Uu.a,[]),e["ɵmpd"](4608,Ou.a,Ou.a,[]),e["ɵmpd"](4608,Lu.a,Lu.a,[]),e["ɵmpd"](4608,Tl.a,Tl.a,[Dl.DatePipe]),e["ɵmpd"](4608,zu.a,zu.a,[]),e["ɵmpd"](4608,Gu.a,Gu.a,[]),e["ɵmpd"](4608,Ku.a,Ku.a,[]),e["ɵmpd"](4608,$u.a,$u.a,[]),e["ɵmpd"](4608,Zu.a,Zu.a,[]),e["ɵmpd"](4608,Qu.a,Qu.a,[wl.a]),e["ɵmpd"](4608,Bn.a,Bn.a,[]),e["ɵmpd"](4608,on.a,on.a,[]),e["ɵmpd"](4608,Yu.a,Yu.a,[]),e["ɵmpd"](4608,d.D,d.D,[]),e["ɵmpd"](4608,d.h,d.h,[]),e["ɵmpd"](4608,Wu.b,Wu.b,[]),e["ɵmpd"](4608,Ju.a,Ju.a,[]),e["ɵmpd"](4608,Xu.a,Xu.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,tn.a,tn.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,Xu.a,e.ApplicationRef]),e["ɵmpd"](4608,Hu.c,Hu.c,[]),e["ɵmpd"](4608,le.a,le.a,[]),e["ɵmpd"](4608,rn.b,rn.b,[e.RendererFactory2,tn.a]),e["ɵmpd"](4608,ne.y,ne.y,[Dl.DOCUMENT]),e["ɵmpd"](4608,ne.r,ne.r,[]),e["ɵmpd"](4608,ne.a,ne.a,[]),e["ɵmpd"](4608,en.f,en.f,[]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,i.a,i.a,[ue.m,F.a]),e["ɵmpd"](4608,_l.f,_l.f,[]),e["ɵmpd"](1073742336,Dl.CommonModule,Dl.CommonModule,[]),e["ɵmpd"](1073742336,ee.a,ee.a,[]),e["ɵmpd"](1073742336,d.C,d.C,[]),e["ɵmpd"](1073742336,d.n,d.n,[]),e["ɵmpd"](1073742336,d.y,d.y,[]),e["ɵmpd"](1073742336,Wu.c,Wu.c,[]),e["ɵmpd"](1073742336,Ju.d,Ju.d,[]),e["ɵmpd"](1073742336,Hu.d,Hu.d,[]),e["ɵmpd"](1073742336,le.d,le.d,[]),e["ɵmpd"](1073742336,te.b,te.b,[]),e["ɵmpd"](1073742336,rn.e,rn.e,[]),e["ɵmpd"](1073742336,ie.a,ie.a,[]),e["ɵmpd"](1073742336,en.e,en.e,[]),e["ɵmpd"](1073742336,Un.f,Un.f,[]),e["ɵmpd"](1073742336,ae.ClickOutsideModule,ae.ClickOutsideModule,[]),e["ɵmpd"](1073742336,oe.b,oe.b,[]),e["ɵmpd"](1073742336,ue.q,ue.q,[[2,ue.v],[2,ue.m]]),e["ɵmpd"](1073742336,se.a,se.a,[]),e["ɵmpd"](1073742336,ne.u,ne.u,[]),e["ɵmpd"](1073742336,de.a,de.a,[]),e["ɵmpd"](1073742336,h.a,h.a,[]),e["ɵmpd"](1073742336,re.a,re.a,[]),e["ɵmpd"](1073742336,ce.a,ce.a,[]),e["ɵmpd"](1073742336,_l.d,_l.d,[]),e["ɵmpd"](1073742336,ll,ll,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,en.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})),pi=e["ɵcmf"](dl,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[rl.a,cl.a,ml.a,gl.a,gl.b,pl.a,fl.a,vl.a,hl.a,bl.a,Cl.a,Ul,nn,Pn,Yn,gu,Iu,ju,he,Ee,yt,Nt,si,mi]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,Dl.NgLocalization,Dl.NgLocaleLocalization,[e.LOCALE_ID,[2,Dl["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,Pu.a,Pu.a,[]),e["ɵmpd"](4608,Bu.a,Bu.a,[]),e["ɵmpd"](4608,Ol.a,Ol.a,[wl.a]),e["ɵmpd"](4608,Dl.DatePipe,Dl.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,a.a,a.a,[]),e["ɵmpd"](4608,L.a,L.a,[]),e["ɵmpd"](4608,sn.a,sn.a,[L.a]),e["ɵmpd"](4608,Au.a,Au.a,[L.a]),e["ɵmpd"](4608,Ll.a,Ll.a,[L.a]),e["ɵmpd"](4608,Mu.a,Mu.a,[]),e["ɵmpd"](4608,Uu.a,Uu.a,[]),e["ɵmpd"](4608,Ou.a,Ou.a,[]),e["ɵmpd"](4608,Lu.a,Lu.a,[]),e["ɵmpd"](4608,Tl.a,Tl.a,[Dl.DatePipe]),e["ɵmpd"](4608,zu.a,zu.a,[]),e["ɵmpd"](4608,Gu.a,Gu.a,[]),e["ɵmpd"](4608,Ku.a,Ku.a,[]),e["ɵmpd"](4608,$u.a,$u.a,[]),e["ɵmpd"](4608,Zu.a,Zu.a,[]),e["ɵmpd"](4608,Qu.a,Qu.a,[wl.a]),e["ɵmpd"](4608,Bn.a,Bn.a,[]),e["ɵmpd"](4608,on.a,on.a,[]),e["ɵmpd"](4608,Yu.a,Yu.a,[]),e["ɵmpd"](4608,d.D,d.D,[]),e["ɵmpd"](4608,d.h,d.h,[]),e["ɵmpd"](4608,Wu.b,Wu.b,[]),e["ɵmpd"](4608,Ju.a,Ju.a,[]),e["ɵmpd"](4608,Xu.a,Xu.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,tn.a,tn.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,Xu.a,e.ApplicationRef]),e["ɵmpd"](4608,Hu.c,Hu.c,[]),e["ɵmpd"](4608,le.a,le.a,[]),e["ɵmpd"](4608,rn.b,rn.b,[e.RendererFactory2,tn.a]),e["ɵmpd"](4608,ne.y,ne.y,[Dl.DOCUMENT]),e["ɵmpd"](4608,ne.r,ne.r,[]),e["ɵmpd"](4608,ne.a,ne.a,[]),e["ɵmpd"](4608,en.f,en.f,[]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,i.a,i.a,[ue.m,F.a]),e["ɵmpd"](4608,_l.f,_l.f,[]),e["ɵmpd"](1073742336,Dl.CommonModule,Dl.CommonModule,[]),e["ɵmpd"](1073742336,ee.a,ee.a,[]),e["ɵmpd"](1073742336,d.C,d.C,[]),e["ɵmpd"](1073742336,d.n,d.n,[]),e["ɵmpd"](1073742336,d.y,d.y,[]),e["ɵmpd"](1073742336,Wu.c,Wu.c,[]),e["ɵmpd"](1073742336,Ju.d,Ju.d,[]),e["ɵmpd"](1073742336,Hu.d,Hu.d,[]),e["ɵmpd"](1073742336,le.d,le.d,[]),e["ɵmpd"](1073742336,te.b,te.b,[]),e["ɵmpd"](1073742336,rn.e,rn.e,[]),e["ɵmpd"](1073742336,ie.a,ie.a,[]),e["ɵmpd"](1073742336,en.e,en.e,[]),e["ɵmpd"](1073742336,Un.f,Un.f,[]),e["ɵmpd"](1073742336,ae.ClickOutsideModule,ae.ClickOutsideModule,[]),e["ɵmpd"](1073742336,oe.b,oe.b,[]),e["ɵmpd"](1073742336,ue.q,ue.q,[[2,ue.v],[2,ue.m]]),e["ɵmpd"](1073742336,se.a,se.a,[]),e["ɵmpd"](1073742336,ne.u,ne.u,[]),e["ɵmpd"](1073742336,de.a,de.a,[]),e["ɵmpd"](1073742336,h.a,h.a,[]),e["ɵmpd"](1073742336,re.a,re.a,[]),e["ɵmpd"](1073742336,ce.a,ce.a,[]),e["ɵmpd"](1073742336,_l.d,_l.d,[]),e["ɵmpd"](1073742336,ll,ll,[]),e["ɵmpd"](1073742336,dl,dl,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,en.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](1024,ue.k,(function(){return[[{path:"",redirectTo:"daemon",pathMatch:"full"},{path:"daemon",component:U,data:nl},{path:"user",data:ul,children:[{path:"",component:H},{path:"create",component:W,data:el},{path:"edit/:uid",component:W,data:tl}]},{path:"bucket",data:il,children:[{path:"",component:B},{path:"create",component:q,data:al},{path:"edit/:bid",component:q,data:ol}]},{path:"501/:message",component:s,canActivate:[i.a],data:sl}]]}),[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/9.d895914fbc785284c5be.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/9.d895914fbc785284c5be.js
deleted file mode 100644 (file)
index a42cc3d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{DY6s:function(l,n,u){"use strict";u.r(n);var e=u("8Y7J"),o=u("LceX"),a=u("ES0t"),d=u("MdoF"),t=u("Xg1U"),s=u("z5nN"),i=u("iutN"),r=u("pMnS"),c=u("EEJc"),p=u("PEr+"),m=u("a40w"),v=u("hfeG"),f=u("atuK"),g=u("SVse"),h=u("s7LF"),b=u("yT6U"),C=u("4DD9"),R=u("iExv"),w=u("GiVz"),I=u("85J/"),E=u("+0ag"),y=u("aXbf"),x=u("Fgil"),N=u("IzCI"),T=u("o4+5"),k=u("Dwqy"),D=u("uYzU"),q=u("FFMq"),S=u("E2fk"),P=u("a0VL"),F=u("nSDx"),_=u("SB+Q"),U=u("TYzs"),V=u("BQkM"),M=u("dEH0"),L=u("G1/K"),A=u("8xTl"),O=u("TJUb"),j=u("efK2"),B=u("CNMR"),z=u("KOzp"),G=u("2uy1"),Z=u("z/SZ"),K=u("38Bd"),H=u("978R"),X=u("LqlI"),J=u("w9WL"),Y=u("FE24"),Q=u("aexS"),W=u("Avrn"),$=u("iInd"),ll=u("2ZVE"),nl=u("ienR"),ul=u("aHM3"),el=u("9Xeq"),ol=u("hrfs"),al=u("yGOH"),dl=u("+gVj"),tl=u("bxSN"),sl=u("WF9J"),il=u("V/fk"),rl=u("ChqD"),cl=u("pL04"),pl=u("PCNd"),ml=u("pKUh");class vl{constructor(l){this.router=l}ngOnInit(){this.url=this.router.url}navigateTo(l){this.router.navigate([l])}}var fl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function gl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ml.b,ml.a)),e["ɵdid"](1,180224,null,0,ll.e,[ll.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,1,"tab",[["heading","Users"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/user-management/users")&&e),e}),null,null)),e["ɵdid"](3,212992,null,0,ll.b,[ll.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"}),(l()(),e["ɵeld"](4,0,null,0,1,"tab",[["heading","Roles"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(l,n,u){var e=!0;return"selectTab"===n&&(e=!1!==l.component.navigateTo("/user-management/roles")&&e),e}),null,null)),e["ɵdid"](5,212992,null,0,ll.b,[ll.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{selectTab:"selectTab"})],(function(l,n){var u=n.component;l(n,3,0,"Users","/user-management/users"===u.url),l(n,5,0,"Roles","/user-management/roles"===u.url)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby),l(n,4,0,e["ɵnov"](n,5).id,e["ɵnov"](n,5).active,e["ɵnov"](n,5).addClass,e["ɵnov"](n,5).role,e["ɵnov"](n,5).ariaLabelledby)}))}var hl=u("25BL"),bl=u("uIqm"),Cl=u("NUGo"),Rl=u("S7zO"),wl=u("EgGo"),Il=u("ZEkX"),El=u("Mxhz"),yl=u("9nlD"),xl=u("sne2"),Nl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Tl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" ",""," "]))],null,(function(l,n){l(n,1,0,n.context.$implicit,n.context.last?"":", ")}))}function kl(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,Tl)),e["ɵdid"](1,278528,null,0,g.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["ɵand"](0,null,null,0))],(function(l,n){l(n,1,0,n.context.value)}),null)}function Dl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["ɵted"](1,null,["",""])),e["ɵppd"](2,1)],null,(function(l,n){var u=e["ɵunv"](n,1,0,l(n,2,0,e["ɵnov"](n.parent,0),n.context.value));l(n,1,0,u)}))}function ql(l){return e["ɵvid"](0,[e["ɵpid"](0,R.a,[w.a]),e["ɵqud"](402653184,1,{userRolesTpl:0}),e["ɵqud"](402653184,2,{userEnabledTpl:0}),(l()(),e["ɵeld"](3,0,null,null,1,"cd-user-tabs",[],null,null,null,gl,fl)),e["ɵdid"](4,114688,null,0,vl,[$.m],null,null),(l()(),e["ɵeld"](5,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","username"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],(function(l,n,u){var e=!0,o=l.component;return"fetchData"===n&&(e=!1!==o.getUsers()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e}),hl.b,hl.a)),e["ɵdid"](6,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["ɵeld"](7,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Cl.b,Cl.a)),e["ɵdid"](8,114688,null,0,Rl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵand"](0,[[1,2],["userRolesTpl",2]],null,0,null,kl)),(l()(),e["ɵand"](0,[[2,2],["userEnabledTpl",2]],null,0,null,Dl))],(function(l,n){var u=n.component;l(n,4,0),l(n,6,0,u.users,u.columns,"flex","username","single"),l(n,8,0,u.permission,u.selection,u.tableActions)}),null)}function Sl(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-user-list",[],null,null,null,ql,Nl)),e["ɵprd"](256,null,wl.a,Il.b,[]),e["ɵdid"](2,114688,null,0,Il.a,[El.a,F.a,X.b,yl.a,Q.a,w.a,wl.a,P.a,xl.b],null,null)],(function(l,n){l(n,2,0)}),null)}var Pl=e["ɵccf"]("cd-user-list",Il.a,Sl,{},{},[]),Fl=u("QC43"),_l=u("XFyV"),Ul=u("4HWh"),Vl=u("p4Cf"),Ml=u("mXUL"),Ll=u("pYKc"),Al=u("ppaS"),Ol=u("IZUe"),jl=u("D4zM"),Bl=u("gp3X"),zl=u("sb0X"),Gl=u("KVJa"),Zl=u("Z21x"),Kl=u("V3my"),Hl=u("DSvg"),Xl=u("SgmB"),Jl=u("1nQr"),Yl=u("2EZI"),Ql=u("20UP"),Wl=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function $l(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Fl.b,Fl.a)),e["ɵdid"](1,49152,null,0,_l.a,[],null,null),(l()(),e["ɵted"](-1,0,["Loading..."]))],null,null)}function ln(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function nn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The username already exists."]))],null,null)}function un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-helper",[["class","text-pre"]],null,null,null,Ul.b,Ul.a)),e["ɵdid"](1,49152,null,0,Vl.a,[],{class:[0,"class"],html:[1,"html"]},null)],(function(l,n){l(n,1,0,"text-pre",e["ɵinlineInterpolate"](1,"",n.component.passwordPolicyHelpText,""))}),null)}function en(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function on(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](1,null,[" "," "]))],null,(function(l,n){l(n,1,0,n.component.passwordValuation)}))}function an(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function dn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password confirmation doesn't match the password."]))],null,null)}function tn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,12,"cd-helper",[["class","text-pre"]],null,null,null,Ul.b,Ul.a)),e["ɵdid"](1,49152,null,0,Vl.a,[],{class:[0,"class"]},null),(l()(),e["ɵeld"](2,0,null,0,4,"p",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" The Dashboard setting defining the expiration interval of passwords is currently set to "])),(l()(),e["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["0"])),(l()(),e["ɵted"](-1,null,[". This means if a date is set, the user password will only expire once. "])),(l()(),e["ɵeld"](7,0,null,0,5,"p",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,[" Consider configuring the Dashboard setting "])),(l()(),e["ɵeld"](9,0,null,null,2,"a",[["class","alert-link"],["routerLink","/mgr-modules/edit/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["ɵnov"](l,10).onClick(u.button,u.ctrlKey,u.metaKey,u.shiftKey)&&o),o}),null,null)),e["ɵdid"](10,671744,null,0,$.p,[$.m,$.a,g.LocationStrategy],{routerLink:[0,"routerLink"]},null),(l()(),e["ɵted"](-1,null,["USER_PWD_EXPIRATION_SPAN"])),(l()(),e["ɵted"](-1,null,[" in order to let passwords expire periodically. "]))],(function(l,n){l(n,1,0,"text-pre"),l(n,10,0,"/mgr-modules/edit/dashboard")}),(function(l,n){l(n,9,0,e["ɵnov"](n,10).target,e["ɵnov"](n,10).href)}))}function sn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function rn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,8,{FormControlNames:1}),e["ɵqud"](603979776,9,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,7,"label",[["class","cd-col-form-label"],["for","pwdExpirationDate"]],null,null,null,null,null)),e["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](6,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](7,{required:0}),(l()(),e["ɵeld"](8,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password expiration date"])),(l()(),e["ɵand"](16777216,null,null,1,null,tn)),e["ɵdid"](11,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](12,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,15,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](14,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","pwdExpirationDate"],["id","pwdExpirationDate"],["name","pwdExpirationDate"],["placeholder","Password expiration date..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,15)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,15).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,15)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,15)._compositionEnd(u.target.value)&&o),"change"===n&&(o=!1!==e["ɵnov"](l,17).onChange(u)&&o),"keyup.esc"===n&&(o=!1!==e["ɵnov"](l,17).hide()&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,17).onBlur()&&o),o}),null,null)),e["ɵdid"](15,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵdid"](16,737280,null,0,nl.c,[nl.a,e.ElementRef,e.Renderer2,e.ViewContainerRef,Z.a],{bsConfig:[0,"bsConfig"],minDate:[1,"minDate"]},null),e["ɵdid"](17,16384,null,0,nl.f,[nl.c,nl.l,e.Renderer2,e.ElementRef,e.ChangeDetectorRef],null,null),e["ɵprd"](1024,null,h.o,(function(l){return[l]}),[nl.f]),e["ɵprd"](1024,null,h.p,(function(l,n){return[l,n]}),[h.e,nl.f]),e["ɵdid"](20,671744,[[8,4]],0,h.j,[[3,h.d],[6,h.o],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](22,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](23,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](24,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](25,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.clearExpirationDate()&&e),e}),null,null)),(l()(),e["ɵeld"](26,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,sn)),e["ɵdid"](28,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){var u=n.component;l(n,1,0);var o=l(n,7,0,u.pwdExpirationSettings.pwdExpirationSpan>0);l(n,6,0,"cd-col-form-label",o),l(n,11,0,0==u.pwdExpirationSettings.pwdExpirationSpan),l(n,16,0,u.bsConfig,u.minDate),l(n,20,0,"pwdExpirationDate"),l(n,23,0,"pwdExpirationDate"),l(n,28,0,u.userForm.showError("pwdExpirationDate",e["ɵnov"](n.parent,2),"required"))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,14,0,e["ɵnov"](n,22).ngClassUntouched,e["ɵnov"](n,22).ngClassTouched,e["ɵnov"](n,22).ngClassPristine,e["ɵnov"](n,22).ngClassDirty,e["ɵnov"](n,22).ngClassValid,e["ɵnov"](n,22).ngClassInvalid,e["ɵnov"](n,22).ngClassPending,e["ɵnov"](n,23).validClass,e["ɵnov"](n,23).invalidClass),l(n,26,0,e["ɵinlineInterpolate"](1,"icon-prepend ",u.icons.destroy,""))}))}function cn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Invalid email."]))],null,null)}function pn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"span",[["class","no-border full-height"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"cd-select-badges",[],null,null,null,Ll.b,Ll.a)),e["ɵdid"](2,49152,null,0,Al.a,[w.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"]},null)],(function(l,n){var u=n.component;l(n,2,0,u.userForm.controls.roles.value,u.allRoles,u.messages)}),null)}function mn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,16,{FormControlNames:1}),e["ɵqud"](603979776,17,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","enabled"],["id","enabled"],["name","enabled"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var o=!0;return"change"===n&&(o=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,7).onTouched()&&o),o}),null,null)),e["ɵdid"](7,16384,null,0,h.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.c]),e["ɵdid"](9,671744,[[16,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](11,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](12,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","enabled"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Enabled"]))],(function(l,n){l(n,1,0),l(n,9,0,"enabled"),l(n,12,0,"enabled")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](1,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,18,{FormControlNames:1}),e["ɵqud"](603979776,19,{messagesBlock:0}),(l()(),e["ɵeld"](4,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(l()(),e["ɵeld"](5,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","pwdUpdateRequired"],["id","pwdUpdateRequired"],["name","pwdUpdateRequired"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(l,n,u){var o=!0;return"change"===n&&(o=!1!==e["ɵnov"](l,7).onChange(u.target.checked)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,7).onTouched()&&o),o}),null,null)),e["ɵdid"](7,16384,null,0,h.c,[e.Renderer2,e.ElementRef],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.c]),e["ɵdid"](9,671744,[[18,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](11,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](12,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](13,0,null,null,1,"label",[["class","custom-control-label"],["for","pwdUpdateRequired"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["User must change password at next logon"]))],(function(l,n){l(n,1,0),l(n,9,0,"pwdUpdateRequired"),l(n,12,0,"pwdUpdateRequired")}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).hasErrors,e["ɵnov"](n,1).hasSuccess),l(n,6,0,e["ɵnov"](n,11).ngClassUntouched,e["ɵnov"](n,11).ngClassTouched,e["ɵnov"](n,11).ngClassPristine,e["ɵnov"](n,11).ngClassDirty,e["ɵnov"](n,11).ngClassValid,e["ɵnov"](n,11).ngClassInvalid,e["ɵnov"](n,11).ngClassPending,e["ɵnov"](n,12).validClass,e["ɵnov"](n,12).invalidClass)}))}function fn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,136,"form",[["name","userForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["ɵnov"](l,2).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["ɵnov"](l,2).onReset()&&o),"submit"===n&&(o=!1!==e["ɵnov"](l,5).onSubmit()&&o),o}),null,null)),e["ɵdid"](1,16384,null,0,h.G,[],null,null),e["ɵdid"](2,540672,[["formDir",4]],0,h.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,h.d,null,[h.l]),e["ɵdid"](4,16384,null,0,h.s,[[4,h.d]],null,null),e["ɵdid"](5,16384,null,0,dl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](6,0,null,null,130,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](8,null,[""," ",""])),e["ɵppd"](9,1),e["ɵppd"](10,1),(l()(),e["ɵeld"](11,0,null,null,116,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](12,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](13,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,2,{FormControlNames:1}),e["ɵqud"](603979776,3,{messagesBlock:0}),(l()(),e["ɵeld"](16,0,null,0,4,"label",[["class","cd-col-form-label"],["for","username"]],null,null,null,null,null)),e["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](18,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](19,{required:0}),(l()(),e["ɵted"](-1,null,["Username"])),(l()(),e["ɵeld"](21,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](22,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","username"],["id","username"],["name","username"],["placeholder","Username..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,23)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,23).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,23)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,23)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](23,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](25,671744,[[2,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](27,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](28,4210688,null,0,Ol.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](29,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,ln)),e["ɵdid"](31,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,nn)),e["ɵdid"](33,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](34,0,null,null,26,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](35,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,4,{FormControlNames:1}),e["ɵqud"](603979776,5,{messagesBlock:0}),(l()(),e["ɵeld"](38,0,null,0,4,"label",[["class","cd-col-form-label"],["for","password"]],null,null,null,null,null)),(l()(),e["ɵeld"](39,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Password"])),(l()(),e["ɵand"](16777216,null,null,1,null,un)),e["ɵdid"](42,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](43,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](44,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](45,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","password"],["name","password"],["placeholder","Password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,46)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,46).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,46)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,46)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](46,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](48,671744,[[4,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](50,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](51,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](52,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](53,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["ɵnov"](l,54).onClick()&&o),o}),null,null)),e["ɵdid"](54,81920,null,0,jl.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵeld"](55,0,null,null,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(l()(),e["ɵeld"](56,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,en)),e["ɵdid"](58,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,on)),e["ɵdid"](60,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](61,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](62,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,6,{FormControlNames:1}),e["ɵqud"](603979776,7,{messagesBlock:0}),(l()(),e["ɵeld"](65,0,null,0,1,"label",[["class","cd-col-form-label"],["for","confirmpassword"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Confirm password"])),(l()(),e["ɵeld"](67,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](68,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["ɵeld"](69,0,null,null,6,"input",[["class","form-control"],["formControlName","confirmpassword"],["id","confirmpassword"],["name","confirmpassword"],["placeholder","Confirm password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,70)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,70).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,70)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,70)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](70,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](72,671744,[[6,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](74,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](75,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](76,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(l()(),e["ɵeld"](77,0,null,null,1,"button",[["cdPasswordButton","confirmpassword"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["ɵnov"](l,78).onClick()&&o),o}),null,null)),e["ɵdid"](78,81920,null,0,jl.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,an)),e["ɵdid"](80,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,dn)),e["ɵdid"](82,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,rn)),e["ɵdid"](84,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](85,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](86,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,10,{FormControlNames:1}),e["ɵqud"](603979776,11,{messagesBlock:0}),(l()(),e["ɵeld"](89,0,null,0,1,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Full name"])),(l()(),e["ɵeld"](91,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](92,0,null,null,6,"input",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Full name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,93)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,93).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,93)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,93)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](93,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](95,671744,[[10,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](97,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](98,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](99,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](100,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,12,{FormControlNames:1}),e["ɵqud"](603979776,13,{messagesBlock:0}),(l()(),e["ɵeld"](103,0,null,0,1,"label",[["class","cd-col-form-label"],["for","email"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Email"])),(l()(),e["ɵeld"](105,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](106,0,null,null,6,"input",[["class","form-control"],["formControlName","email"],["id","email"],["name","email"],["placeholder","Email..."],["type","email"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,107)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,107).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,107)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,107)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](107,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](109,671744,[[12,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](111,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](112,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,cn)),e["ɵdid"](114,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](115,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](116,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,14,{FormControlNames:1}),e["ɵqud"](603979776,15,{messagesBlock:0}),(l()(),e["ɵeld"](119,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Roles"])),(l()(),e["ɵeld"](121,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,pn)),e["ɵdid"](123,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,mn)),e["ɵdid"](125,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,vn)),e["ɵdid"](127,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](128,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](129,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](130,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Bl.b,Bl.a)),e["ɵdid"](131,114688,null,0,zl.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](132,0,[""," ",""])),e["ɵppd"](133,1),e["ɵppd"](134,1),(l()(),e["ɵeld"](135,0,null,null,1,"cd-back-button",[],null,null,null,Gl.b,Gl.a)),e["ɵdid"](136,49152,null,0,Zl.a,[g.Location,xl.b],null,null)],(function(l,n){var u=n.component;l(n,2,0,u.userForm),l(n,5,0,u.userForm),l(n,13,0);var o=l(n,19,0,u.mode!==u.userFormMode.editing);l(n,18,0,"cd-col-form-label",o),l(n,25,0,"username"),l(n,28,0,""),l(n,29,0,"username"),l(n,31,0,u.userForm.showError("username",e["ɵnov"](n,2),"required")),l(n,33,0,u.userForm.showError("username",e["ɵnov"](n,2),"notUnique")),l(n,35,0),l(n,42,0,u.passwordPolicyHelpText.length>0),l(n,48,0,"password"),l(n,51,0,"password"),l(n,54,0,"password"),l(n,58,0,u.userForm.showError("password",e["ɵnov"](n,2),"required")),l(n,60,0,u.userForm.showError("password",e["ɵnov"](n,2),"passwordPolicy")),l(n,62,0),l(n,72,0,"confirmpassword"),l(n,75,0,"confirmpassword"),l(n,78,0,"confirmpassword"),l(n,80,0,u.userForm.showError("confirmpassword",e["ɵnov"](n,2),"required")),l(n,82,0,u.userForm.showError("confirmpassword",e["ɵnov"](n,2),"match")),l(n,84,0,!u.authStorageService.isSSO()),l(n,86,0),l(n,95,0,"name"),l(n,98,0,"name"),l(n,100,0),l(n,109,0,"email"),l(n,112,0,"email"),l(n,114,0,u.userForm.showError("email",e["ɵnov"](n,2),"email")),l(n,116,0),l(n,123,0,u.allRoles),l(n,125,0,!u.isCurrentUser()),l(n,127,0,!u.isCurrentUser()&&!u.authStorageService.isSSO()),l(n,131,0,e["ɵnov"](n,2))}),(function(l,n){var u=n.component;l(n,0,0,e["ɵnov"](n,4).ngClassUntouched,e["ɵnov"](n,4).ngClassTouched,e["ɵnov"](n,4).ngClassPristine,e["ɵnov"](n,4).ngClassDirty,e["ɵnov"](n,4).ngClassValid,e["ɵnov"](n,4).ngClassInvalid,e["ɵnov"](n,4).ngClassPending);var o=e["ɵunv"](n,8,0,l(n,9,0,e["ɵnov"](n.parent,0),u.action)),a=e["ɵunv"](n,8,1,l(n,10,0,e["ɵnov"](n.parent,1),u.resource));l(n,8,0,o,a),l(n,12,0,e["ɵnov"](n,13).hasErrors,e["ɵnov"](n,13).hasSuccess),l(n,22,0,e["ɵnov"](n,27).ngClassUntouched,e["ɵnov"](n,27).ngClassTouched,e["ɵnov"](n,27).ngClassPristine,e["ɵnov"](n,27).ngClassDirty,e["ɵnov"](n,27).ngClassValid,e["ɵnov"](n,27).ngClassInvalid,e["ɵnov"](n,27).ngClassPending,e["ɵnov"](n,29).validClass,e["ɵnov"](n,29).invalidClass),l(n,34,0,e["ɵnov"](n,35).hasErrors,e["ɵnov"](n,35).hasSuccess),l(n,45,0,e["ɵnov"](n,50).ngClassUntouched,e["ɵnov"](n,50).ngClassTouched,e["ɵnov"](n,50).ngClassPristine,e["ɵnov"](n,50).ngClassDirty,e["ɵnov"](n,50).ngClassValid,e["ɵnov"](n,50).ngClassInvalid,e["ɵnov"](n,50).ngClassPending,e["ɵnov"](n,51).validClass,e["ɵnov"](n,51).invalidClass),l(n,56,0,e["ɵinlineInterpolate"](1,"",u.passwordStrengthLevelClass,""),e["ɵinlineInterpolate"](1,"",u.passwordValuation,"")),l(n,61,0,e["ɵnov"](n,62).hasErrors,e["ɵnov"](n,62).hasSuccess),l(n,69,0,e["ɵnov"](n,74).ngClassUntouched,e["ɵnov"](n,74).ngClassTouched,e["ɵnov"](n,74).ngClassPristine,e["ɵnov"](n,74).ngClassDirty,e["ɵnov"](n,74).ngClassValid,e["ɵnov"](n,74).ngClassInvalid,e["ɵnov"](n,74).ngClassPending,e["ɵnov"](n,75).validClass,e["ɵnov"](n,75).invalidClass),l(n,85,0,e["ɵnov"](n,86).hasErrors,e["ɵnov"](n,86).hasSuccess),l(n,92,0,e["ɵnov"](n,97).ngClassUntouched,e["ɵnov"](n,97).ngClassTouched,e["ɵnov"](n,97).ngClassPristine,e["ɵnov"](n,97).ngClassDirty,e["ɵnov"](n,97).ngClassValid,e["ɵnov"](n,97).ngClassInvalid,e["ɵnov"](n,97).ngClassPending,e["ɵnov"](n,98).validClass,e["ɵnov"](n,98).invalidClass),l(n,99,0,e["ɵnov"](n,100).hasErrors,e["ɵnov"](n,100).hasSuccess),l(n,106,0,e["ɵnov"](n,111).ngClassUntouched,e["ɵnov"](n,111).ngClassTouched,e["ɵnov"](n,111).ngClassPristine,e["ɵnov"](n,111).ngClassDirty,e["ɵnov"](n,111).ngClassValid,e["ɵnov"](n,111).ngClassInvalid,e["ɵnov"](n,111).ngClassPending,e["ɵnov"](n,112).validClass,e["ɵnov"](n,112).invalidClass),l(n,115,0,e["ɵnov"](n,116).hasErrors,e["ɵnov"](n,116).hasSuccess);var d=e["ɵunv"](n,132,0,l(n,133,0,e["ɵnov"](n.parent,0),u.action)),t=e["ɵunv"](n,132,1,l(n,134,0,e["ɵnov"](n.parent,1),u.resource));l(n,132,0,d,t)}))}function gn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,['You are about to remove "user read / update" permissions from your own user.'])),(l()(),e["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["ɵeld"](4,0,null,null,1,"p",[],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["If you continue, you will no longer be able to add or remove roles from any user."])),(l()(),e["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Are you sure you want to continue?"]))],null,null)}function hn(l){return e["ɵvid"](0,[e["ɵpid"](0,g.TitleCasePipe,[]),e["ɵpid"](0,A.a,[]),e["ɵqud"](402653184,1,{removeSelfUserReadUpdatePermissionTpl:0}),(l()(),e["ɵand"](16777216,null,null,1,null,$l)),e["ɵdid"](4,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](5,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵand"](16777216,null,null,1,null,fn)),e["ɵdid"](7,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](0,[[1,2],["removeSelfUserReadUpdatePermissionTpl",2]],null,0,null,gn))],(function(l,n){var u=n.component;l(n,4,0,!u.pwdExpirationSettings),l(n,7,0,u.pwdExpirationSettings)}),null)}function bn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-user-form",[],null,null,null,hn,Wl)),e["ɵdid"](1,114688,null,0,Kl.a,[Hl.a,Q.a,$.a,$.m,X.b,Xl.a,El.a,yl.a,w.a,xl.b,Jl.a,Yl.a,Ql.a],null,null)],(function(l,n){l(n,1,0)}),null)}var Cn=e["ɵccf"]("cd-user-form",Kl.a,bn,{},{},[]),Rn=u("LvDl"),wn=u("x38r");class In{constructor(l){this.i18n=l,this.scopes_permissions=[]}ngOnInit(){this.columns=[{prop:"scope",name:this.i18n("Scope"),flexGrow:2},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTransformation:wn.a.checkIcon},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTransformation:wn.a.checkIcon},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTransformation:wn.a.checkIcon},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTransformation:wn.a.checkIcon}]}ngOnChanges(){if(this.selection){this.selectedItem=this.selection;const l=[];Rn.each(this.scopes,n=>{const u={read:!1,create:!1,update:!1,delete:!1};u.scope=n,n in this.selectedItem.scopes_permissions&&Rn.each(this.selectedItem.scopes_permissions[n],l=>{u[l]=!0}),l.push(u)}),this.scopes_permissions=l}}}var En=e["ɵcrt"]({encapsulation:0,styles:[["thead[_ngcontent-%COMP%]{background-color:#f5f5f5}.fa[_ngcontent-%COMP%]{font-size:large}.fa.fa-square-o[_ngcontent-%COMP%]{color:#d1d1d1}"]],data:{}});function yn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ml.b,ml.a)),e["ɵdid"](1,180224,null,0,ll.e,[ll.f,e.Renderer2,e.ElementRef],null,null),(l()(),e["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),e["ɵdid"](3,212992,null,0,ll.b,[ll.e,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["ɵeld"](4,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,hl.b,hl.a)),e["ɵdid"](5,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null)],(function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1)}),(function(l,n){l(n,0,0,e["ɵnov"](n,1).clazz),l(n,2,0,e["ɵnov"](n,3).id,e["ɵnov"](n,3).active,e["ɵnov"](n,3).addClass,e["ɵnov"](n,3).role,e["ɵnov"](n,3).ariaLabelledby)}))}function xn(l){return e["ɵvid"](0,[(l()(),e["ɵand"](16777216,null,null,1,null,yn)),e["ɵdid"](1,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(l,n){l(n,1,0,n.component.selection)}),null)}var Nn=u("n/D3"),Tn=u("ZDA6"),kn=e["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Dn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-user-tabs",[],null,null,null,gl,fl)),e["ɵdid"](1,114688,null,0,vl,[$.m],null,null),(l()(),e["ɵeld"](2,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","name"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"fetchData"],[null,"updateSelection"]],(function(l,n,u){var e=!0,o=l.component;return"setExpandedRow"===n&&(e=!1!==o.setExpandedRow(u)&&e),"fetchData"===n&&(e=!1!==o.getRoles()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e}),hl.b,hl.a)),e["ɵdid"](3,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(l()(),e["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Cl.b,Cl.a)),e["ɵdid"](5,114688,null,0,Rl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["ɵeld"](6,0,null,3,1,"cd-role-details",[["cdTableDetail",""]],null,null,null,xn,En)),e["ɵdid"](7,638976,null,0,In,[w.a],{selection:[0,"selection"],scopes:[1,"scopes"]},null)],(function(l,n){var u=n.component;l(n,1,0),l(n,3,0,u.roles,u.columns,"flex",!0,"name","single"),l(n,5,0,u.permission,u.selection,u.tableActions),l(n,7,0,u.expandedRow,u.scopes)}),null)}function qn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,2,"cd-role-list",[],null,null,null,Dn,kn)),e["ɵprd"](256,null,wl.a,Nn.b,[]),e["ɵdid"](2,114688,null,0,Nn.a,[Xl.a,Tn.a,F.a,Q.a,X.b,yl.a,w.a,wl.a,xl.b],null,null)],(function(l,n){l(n,2,0)}),null)}var Sn=e["ɵccf"]("cd-role-list",Nn.a,qn,{},{},[]),Pn=u("eTJe"),Fn=e["ɵcrt"]({encapsulation:0,styles:[[".datatable-permissions-header-cell-label[_ngcontent-%COMP%], .datatable-permissions-scope-cell-label[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function _n(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["This field is required."]))],null,null)}function Un(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["The chosen name is already in use."]))],null,null)}function Vn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"checked",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e}),null,null)),e["ɵdid"](2,16384,null,0,dl.h,[[8,null],dl.a],null,null),(l()(),e["ɵeld"](3,0,null,null,1,"label",[["class","datatable-permissions-scope-cell-label custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["ɵted"](4,null,["",""]))],null,(function(l,n){var u=n.component;l(n,1,0,e["ɵinlineInterpolate"](1,"scope_",n.context.row.scope,""),u.isRowChecked(n.context.row.scope),e["ɵnov"](n,2).validClass,e["ɵnov"](n,2).invalidClass),l(n,3,0,e["ɵinlineInterpolate"](1,"scope_",n.context.row.scope,"")),l(n,4,0,n.context.value)}))}function Mn(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,3,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"id",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e}),null,null)),e["ɵdid"](2,16384,null,0,dl.h,[[8,null],dl.a],null,null),(l()(),e["ɵeld"](3,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],null,(function(l,n){l(n,1,0,n.context.value,n.context.row.scope+"-"+n.context.column.prop,e["ɵnov"](n,2).validClass,e["ɵnov"](n,2).invalidClass),l(n,3,0,n.context.row.scope+"-"+n.context.column.prop)}))}function Ln(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,4,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(l()(),e["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"checked",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickHeaderCheckbox(l.context.column.prop,u)&&e),e}),null,null)),e["ɵdid"](2,16384,null,0,dl.h,[[8,null],dl.a],null,null),(l()(),e["ɵeld"](3,0,null,null,1,"label",[["class","datatable-permissions-header-cell-label custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["ɵted"](4,null,["",""]))],null,(function(l,n){var u=n.component;l(n,1,0,e["ɵinlineInterpolate"](1,"header_",n.context.column.prop,""),u.isHeaderChecked(n.context.column.prop),e["ɵnov"](n,2).validClass,e["ɵnov"](n,2).invalidClass),l(n,3,0,e["ɵinlineInterpolate"](1,"header_",n.context.column.prop,"")),l(n,4,0,n.context.column.name)}))}function An(l){return e["ɵvid"](0,[e["ɵpid"](0,g.TitleCasePipe,[]),e["ɵpid"](0,A.a,[]),e["ɵqud"](402653184,1,{headerPermissionCheckboxTpl:0}),e["ɵqud"](402653184,2,{cellScopeCheckboxTpl:0}),e["ɵqud"](402653184,3,{cellPermissionCheckboxTpl:0}),(l()(),e["ɵeld"](5,0,null,null,66,"div",[["class","cd-col-form"]],null,null,null,null,null)),(l()(),e["ɵeld"](6,0,null,null,65,"form",[["name","roleForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["ɵnov"](l,8).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["ɵnov"](l,8).onReset()&&o),"submit"===n&&(o=!1!==e["ɵnov"](l,11).onSubmit()&&o),o}),null,null)),e["ɵdid"](7,16384,null,0,h.G,[],null,null),e["ɵdid"](8,540672,[["formDir",4]],0,h.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["ɵprd"](2048,null,h.d,null,[h.l]),e["ɵdid"](10,16384,null,0,h.s,[[4,h.d]],null,null),e["ɵdid"](11,16384,null,0,dl.d,[],{formGroup:[0,"formGroup"]},null),(l()(),e["ɵeld"](12,0,null,null,59,"div",[["class","card"]],null,null,null,null,null)),(l()(),e["ɵeld"](13,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(l()(),e["ɵted"](14,null,[""," ",""])),e["ɵppd"](15,1),e["ɵppd"](16,1),(l()(),e["ɵeld"](17,0,null,null,45,"div",[["class","card-body"]],null,null,null,null,null)),(l()(),e["ɵeld"](18,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](19,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,4,{FormControlNames:1}),e["ɵqud"](603979776,5,{messagesBlock:0}),(l()(),e["ɵeld"](22,0,null,0,4,"label",[["class","cd-col-form-label"],["for","name"]],null,null,null,null,null)),e["ɵprd"](512,null,g["ɵNgClassImpl"],g["ɵNgClassR2Impl"],[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2]),e["ɵdid"](24,278528,null,0,g.NgClass,[g["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["ɵpod"](25,{required:0}),(l()(),e["ɵted"](-1,null,["Name"])),(l()(),e["ɵeld"](27,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](28,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Name..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,29)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,29).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,29)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,29)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](29,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](31,671744,[[4,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](33,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](34,4210688,null,0,Ol.a,[e.ElementRef],{autofocus:[0,"autofocus"]},null),e["ɵdid"](35,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,_n)),e["ɵdid"](37,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵand"](16777216,null,null,1,null,Un)),e["ɵdid"](39,16384,null,0,g.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["ɵeld"](40,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](41,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,6,{FormControlNames:1}),e["ɵqud"](603979776,7,{messagesBlock:0}),(l()(),e["ɵeld"](44,0,null,0,1,"label",[["class","cd-col-form-label"],["for","description"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Description"])),(l()(),e["ɵeld"](46,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](47,0,null,null,6,"input",[["class","form-control"],["formControlName","description"],["id","description"],["name","description"],["placeholder","Description..."],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["ɵnov"](l,48)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["ɵnov"](l,48).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["ɵnov"](l,48)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["ɵnov"](l,48)._compositionEnd(u.target.value)&&o),o}),null,null)),e["ɵdid"](48,16384,null,0,h.e,[e.Renderer2,e.ElementRef,[2,h.b]],null,null),e["ɵprd"](1024,null,h.p,(function(l){return[l]}),[h.e]),e["ɵdid"](50,671744,[[6,4]],0,h.j,[[3,h.d],[8,null],[8,null],[6,h.p],[2,h.E]],{name:[0,"name"]},null),e["ɵprd"](2048,null,h.q,null,[h.j]),e["ɵdid"](52,16384,null,0,h.r,[[4,h.q]],null,null),e["ɵdid"](53,16384,null,0,dl.h,[[3,h.d],dl.a],{formControlName:[0,"formControlName"]},null),(l()(),e["ɵeld"](54,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ml.b,Ml.a)),e["ɵdid"](55,1163264,null,2,dl.c,[e.ElementRef,dl.g],null,null),e["ɵqud"](603979776,8,{FormControlNames:1}),e["ɵqud"](603979776,9,{messagesBlock:0}),(l()(),e["ɵeld"](58,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(l()(),e["ɵted"](-1,null,["Permissions"])),(l()(),e["ɵeld"](60,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(l()(),e["ɵeld"](61,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,hl.b,hl.a)),e["ɵdid"](62,2867200,null,0,bl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null),(l()(),e["ɵeld"](63,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(l()(),e["ɵeld"](64,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["ɵeld"](65,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e}),Bl.b,Bl.a)),e["ɵdid"](66,114688,null,0,zl.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["ɵted"](67,0,[""," ",""])),e["ɵppd"](68,1),e["ɵppd"](69,1),(l()(),e["ɵeld"](70,0,null,null,1,"cd-back-button",[],null,null,null,Gl.b,Gl.a)),e["ɵdid"](71,49152,null,0,Zl.a,[g.Location,xl.b],null,null),(l()(),e["ɵand"](0,[[2,2],["cellScopeCheckboxTpl",2]],null,0,null,Vn)),(l()(),e["ɵand"](0,[[3,2],["cellPermissionCheckboxTpl",2]],null,0,null,Mn)),(l()(),e["ɵand"](0,[[1,2],["headerPermissionCheckboxTpl",2]],null,0,null,Ln))],(function(l,n){var u=n.component;l(n,8,0,u.roleForm),l(n,11,0,u.roleForm),l(n,19,0);var o=l(n,25,0,u.mode!==u.roleFormMode.editing);l(n,24,0,"cd-col-form-label",o),l(n,31,0,"name"),l(n,34,0,""),l(n,35,0,"name"),l(n,37,0,u.roleForm.showError("name",e["ɵnov"](n,8),"required")),l(n,39,0,u.roleForm.showError("name",e["ɵnov"](n,8),"notUnique")),l(n,41,0),l(n,50,0,"description"),l(n,53,0,"description"),l(n,55,0),l(n,62,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1),l(n,66,0,e["ɵnov"](n,8))}),(function(l,n){var u=n.component;l(n,6,0,e["ɵnov"](n,10).ngClassUntouched,e["ɵnov"](n,10).ngClassTouched,e["ɵnov"](n,10).ngClassPristine,e["ɵnov"](n,10).ngClassDirty,e["ɵnov"](n,10).ngClassValid,e["ɵnov"](n,10).ngClassInvalid,e["ɵnov"](n,10).ngClassPending);var o=e["ɵunv"](n,14,0,l(n,15,0,e["ɵnov"](n,0),u.action)),a=e["ɵunv"](n,14,1,l(n,16,0,e["ɵnov"](n,1),u.resource));l(n,14,0,o,a),l(n,18,0,e["ɵnov"](n,19).hasErrors,e["ɵnov"](n,19).hasSuccess),l(n,28,0,e["ɵnov"](n,33).ngClassUntouched,e["ɵnov"](n,33).ngClassTouched,e["ɵnov"](n,33).ngClassPristine,e["ɵnov"](n,33).ngClassDirty,e["ɵnov"](n,33).ngClassValid,e["ɵnov"](n,33).ngClassInvalid,e["ɵnov"](n,33).ngClassPending,e["ɵnov"](n,35).validClass,e["ɵnov"](n,35).invalidClass),l(n,40,0,e["ɵnov"](n,41).hasErrors,e["ɵnov"](n,41).hasSuccess),l(n,47,0,e["ɵnov"](n,52).ngClassUntouched,e["ɵnov"](n,52).ngClassTouched,e["ɵnov"](n,52).ngClassPristine,e["ɵnov"](n,52).ngClassDirty,e["ɵnov"](n,52).ngClassValid,e["ɵnov"](n,52).ngClassInvalid,e["ɵnov"](n,52).ngClassPending,e["ɵnov"](n,53).validClass,e["ɵnov"](n,53).invalidClass),l(n,54,0,e["ɵnov"](n,55).hasErrors,e["ɵnov"](n,55).hasSuccess);var d=e["ɵunv"](n,67,0,l(n,68,0,e["ɵnov"](n,0),u.action)),t=e["ɵunv"](n,67,1,l(n,69,0,e["ɵnov"](n,1),u.resource));l(n,67,0,d,t)}))}function On(l){return e["ɵvid"](0,[(l()(),e["ɵeld"](0,0,null,null,1,"cd-role-form",[],null,null,null,An,Fn)),e["ɵdid"](1,114688,null,0,Pn.a,[$.a,$.m,Xl.a,Tn.a,yl.a,w.a,xl.b],null,null)],(function(l,n){l(n,1,0)}),null)}var jn=e["ɵccf"]("cd-role-form",Pn.a,On,{},{},[]);u.d(n,"AuthModuleNgFactory",(function(){return Bn})),u.d(n,"RoutedAuthModuleNgFactory",(function(){return zn}));var Bn=e["ɵcmf"](o.a,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[a.a,d.a,t.a,s.a,s.b,i.a,r.a,c.a,p.a,m.a,v.a,f.a,f.c,f.b,f.d]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,g.NgLocalization,g.NgLocaleLocalization,[e.LOCALE_ID,[2,g["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,h.D,h.D,[]),e["ɵmpd"](4608,h.h,h.h,[]),e["ɵmpd"](4608,b.a,b.a,[]),e["ɵmpd"](4608,C.a,C.a,[]),e["ɵmpd"](4608,R.a,R.a,[w.a]),e["ɵmpd"](4608,g.DatePipe,g.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,I.a,I.a,[]),e["ɵmpd"](4608,E.a,E.a,[]),e["ɵmpd"](4608,y.a,y.a,[]),e["ɵmpd"](4608,x.a,x.a,[y.a]),e["ɵmpd"](4608,N.a,N.a,[y.a]),e["ɵmpd"](4608,T.a,T.a,[y.a]),e["ɵmpd"](4608,k.a,k.a,[]),e["ɵmpd"](4608,D.a,D.a,[]),e["ɵmpd"](4608,q.a,q.a,[]),e["ɵmpd"](4608,S.a,S.a,[]),e["ɵmpd"](4608,P.a,P.a,[g.DatePipe]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,_.a,_.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,V.a,V.a,[]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,L.a,L.a,[w.a]),e["ɵmpd"](4608,A.a,A.a,[]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,B.b,B.b,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,Z.a,Z.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,G.a,e.ApplicationRef]),e["ɵmpd"](4608,K.c,K.c,[]),e["ɵmpd"](4608,H.a,H.a,[]),e["ɵmpd"](4608,X.b,X.b,[e.RendererFactory2,Z.a]),e["ɵmpd"](4608,J.y,J.y,[g.DOCUMENT]),e["ɵmpd"](4608,J.r,J.r,[]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,Y.f,Y.f,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,W.a,W.a,[$.m,Q.a]),e["ɵmpd"](4608,ll.f,ll.f,[]),e["ɵmpd"](4608,nl.t,nl.t,[]),e["ɵmpd"](4608,nl.v,nl.v,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,nl.h,nl.h,[]),e["ɵmpd"](4608,nl.d,nl.d,[]),e["ɵmpd"](4608,nl.j,nl.j,[]),e["ɵmpd"](4608,nl.l,nl.l,[]),e["ɵmpd"](4608,nl.u,nl.u,[nl.v,nl.l]),e["ɵmpd"](1073742336,ul.a,ul.a,[]),e["ɵmpd"](1073742336,g.CommonModule,g.CommonModule,[]),e["ɵmpd"](1073742336,h.C,h.C,[]),e["ɵmpd"](1073742336,h.n,h.n,[]),e["ɵmpd"](1073742336,z.d,z.d,[]),e["ɵmpd"](1073742336,h.y,h.y,[]),e["ɵmpd"](1073742336,el.a,el.a,[]),e["ɵmpd"](1073742336,B.c,B.c,[]),e["ɵmpd"](1073742336,K.d,K.d,[]),e["ɵmpd"](1073742336,H.d,H.d,[]),e["ɵmpd"](1073742336,ol.b,ol.b,[]),e["ɵmpd"](1073742336,X.e,X.e,[]),e["ɵmpd"](1073742336,al.a,al.a,[]),e["ɵmpd"](1073742336,Y.e,Y.e,[]),e["ɵmpd"](1073742336,dl.f,dl.f,[]),e["ɵmpd"](1073742336,tl.ClickOutsideModule,tl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,sl.b,sl.b,[]),e["ɵmpd"](1073742336,$.q,$.q,[[2,$.v],[2,$.m]]),e["ɵmpd"](1073742336,il.a,il.a,[]),e["ɵmpd"](1073742336,J.u,J.u,[]),e["ɵmpd"](1073742336,rl.a,rl.a,[]),e["ɵmpd"](1073742336,cl.a,cl.a,[]),e["ɵmpd"](1073742336,pl.a,pl.a,[]),e["ɵmpd"](1073742336,ll.d,ll.d,[]),e["ɵmpd"](1073742336,nl.g,nl.g,[]),e["ɵmpd"](1073742336,o.a,o.a,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,Y.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})),zn=e["ɵcmf"](o.b,[],(function(l){return e["ɵmod"]([e["ɵmpd"](512,e.ComponentFactoryResolver,e["ɵCodegenComponentFactoryResolver"],[[8,[a.a,d.a,t.a,s.a,s.b,i.a,r.a,c.a,p.a,m.a,v.a,f.a,f.c,f.b,f.d,Pl,Cn,Sn,jn]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["ɵmpd"](4608,g.NgLocalization,g.NgLocaleLocalization,[e.LOCALE_ID,[2,g["ɵangular_packages_common_common_a"]]]),e["ɵmpd"](4608,h.D,h.D,[]),e["ɵmpd"](4608,h.h,h.h,[]),e["ɵmpd"](4608,b.a,b.a,[]),e["ɵmpd"](4608,C.a,C.a,[]),e["ɵmpd"](4608,R.a,R.a,[w.a]),e["ɵmpd"](4608,g.DatePipe,g.DatePipe,[e.LOCALE_ID]),e["ɵmpd"](4608,I.a,I.a,[]),e["ɵmpd"](4608,E.a,E.a,[]),e["ɵmpd"](4608,y.a,y.a,[]),e["ɵmpd"](4608,x.a,x.a,[y.a]),e["ɵmpd"](4608,N.a,N.a,[y.a]),e["ɵmpd"](4608,T.a,T.a,[y.a]),e["ɵmpd"](4608,k.a,k.a,[]),e["ɵmpd"](4608,D.a,D.a,[]),e["ɵmpd"](4608,q.a,q.a,[]),e["ɵmpd"](4608,S.a,S.a,[]),e["ɵmpd"](4608,P.a,P.a,[g.DatePipe]),e["ɵmpd"](4608,F.a,F.a,[]),e["ɵmpd"](4608,_.a,_.a,[]),e["ɵmpd"](4608,U.a,U.a,[]),e["ɵmpd"](4608,V.a,V.a,[]),e["ɵmpd"](4608,M.a,M.a,[]),e["ɵmpd"](4608,L.a,L.a,[w.a]),e["ɵmpd"](4608,A.a,A.a,[]),e["ɵmpd"](4608,O.a,O.a,[]),e["ɵmpd"](4608,j.a,j.a,[]),e["ɵmpd"](4608,B.b,B.b,[]),e["ɵmpd"](4608,z.a,z.a,[]),e["ɵmpd"](4608,G.a,G.a,[e.NgZone,e.RendererFactory2,e.PLATFORM_ID]),e["ɵmpd"](4608,Z.a,Z.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,G.a,e.ApplicationRef]),e["ɵmpd"](4608,K.c,K.c,[]),e["ɵmpd"](4608,H.a,H.a,[]),e["ɵmpd"](4608,X.b,X.b,[e.RendererFactory2,Z.a]),e["ɵmpd"](4608,J.y,J.y,[g.DOCUMENT]),e["ɵmpd"](4608,J.r,J.r,[]),e["ɵmpd"](4608,J.a,J.a,[]),e["ɵmpd"](4608,Y.f,Y.f,[]),e["ɵmpd"](4608,Q.a,Q.a,[]),e["ɵmpd"](4608,W.a,W.a,[$.m,Q.a]),e["ɵmpd"](4608,ll.f,ll.f,[]),e["ɵmpd"](4608,nl.t,nl.t,[]),e["ɵmpd"](4608,nl.v,nl.v,[]),e["ɵmpd"](4608,nl.a,nl.a,[]),e["ɵmpd"](4608,nl.h,nl.h,[]),e["ɵmpd"](4608,nl.d,nl.d,[]),e["ɵmpd"](4608,nl.j,nl.j,[]),e["ɵmpd"](4608,nl.l,nl.l,[]),e["ɵmpd"](4608,nl.u,nl.u,[nl.v,nl.l]),e["ɵmpd"](1073742336,ul.a,ul.a,[]),e["ɵmpd"](1073742336,g.CommonModule,g.CommonModule,[]),e["ɵmpd"](1073742336,h.C,h.C,[]),e["ɵmpd"](1073742336,h.n,h.n,[]),e["ɵmpd"](1073742336,z.d,z.d,[]),e["ɵmpd"](1073742336,h.y,h.y,[]),e["ɵmpd"](1073742336,el.a,el.a,[]),e["ɵmpd"](1073742336,B.c,B.c,[]),e["ɵmpd"](1073742336,K.d,K.d,[]),e["ɵmpd"](1073742336,H.d,H.d,[]),e["ɵmpd"](1073742336,ol.b,ol.b,[]),e["ɵmpd"](1073742336,X.e,X.e,[]),e["ɵmpd"](1073742336,al.a,al.a,[]),e["ɵmpd"](1073742336,Y.e,Y.e,[]),e["ɵmpd"](1073742336,dl.f,dl.f,[]),e["ɵmpd"](1073742336,tl.ClickOutsideModule,tl.ClickOutsideModule,[]),e["ɵmpd"](1073742336,sl.b,sl.b,[]),e["ɵmpd"](1073742336,$.q,$.q,[[2,$.v],[2,$.m]]),e["ɵmpd"](1073742336,il.a,il.a,[]),e["ɵmpd"](1073742336,J.u,J.u,[]),e["ɵmpd"](1073742336,rl.a,rl.a,[]),e["ɵmpd"](1073742336,cl.a,cl.a,[]),e["ɵmpd"](1073742336,pl.a,pl.a,[]),e["ɵmpd"](1073742336,ll.d,ll.d,[]),e["ɵmpd"](1073742336,nl.g,nl.g,[]),e["ɵmpd"](1073742336,o.a,o.a,[]),e["ɵmpd"](1073742336,o.b,o.b,[]),e["ɵmpd"](256,e.LOCALE_ID,"en-US",[]),e["ɵmpd"](256,Y.a,{autoClose:!0,insideClick:!1},[]),e["ɵmpd"](1024,$.k,(function(){return[[{path:"",redirectTo:"users",pathMatch:"full"},{path:"users",data:o.c,children:[{path:"",component:Il.a},{path:"create",component:Kl.a,data:o.d},{path:"edit/:username",component:Kl.a,data:o.e}]},{path:"roles",data:o.f,children:[{path:"",component:Nn.a},{path:"create",component:Pn.a,data:o.g},{path:"edit/:name",component:Pn.a,data:o.h}]}]]}),[]),e["ɵmpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}))}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/common.855fba17cfb445002363.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/common.855fba17cfb445002363.js
deleted file mode 100644 (file)
index a8e91a0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{pYKc:function(l,n,e){"use strict";var s=e("8Y7J"),t=e("SVse"),u=e("WiuZ"),a=e("wnGv"),i=e("GiVz");e("ppaS"),e.d(n,"a",(function(){return o})),e.d(n,"b",(function(){return r}));var o=s["ɵcrt"]({encapsulation:0,styles:[[".badge-remove[_ngcontent-%COMP%]{color:#fff}i.fa-pencil[_ngcontent-%COMP%]{font-size:1.1rem}"]],data:{}});function c(l){return s["ɵvid"](0,[(l()(),s["ɵeld"](0,0,null,null,8,"span",[],null,null,null,null,null)),(l()(),s["ɵeld"](1,0,null,null,7,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(l()(),s["ɵeld"](2,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(l()(),s["ɵted"](3,null,["",""])),(l()(),s["ɵeld"](4,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(l,n,e){var t=!0;return"click"===n&&(t=!1!==s["ɵnov"](l.parent,2).removeItem(l.context.$implicit)&&t),t}),null,null)),(l()(),s["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,t["ɵNgClassImpl"],t["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,t.NgClass,[t["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1)],(function(l,n){var e=l(n,8,0,n.component.icons.destroy);l(n,7,0,e)}),(function(l,n){l(n,3,0,n.context.$implicit)}))}function r(l){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{cdSelect:0}),(l()(),s["ɵeld"](1,0,null,null,5,"cd-select",[["elemClass","mr-2 select-menu-edit"]],null,[[null,"selection"]],(function(l,n,e){var s=!0;return"selection"===n&&(s=!1!==l.component.selection.emit(e)&&s),s}),u.b,u.a)),s["ɵdid"](2,638976,[[1,4],["cdSelect",4]],0,a.a,[i.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"],selectionLimit:[4,"selectionLimit"],customBadges:[5,"customBadges"],customBadgeValidators:[6,"customBadgeValidators"]},{selection:"selection"}),(l()(),s["ɵeld"](3,0,null,0,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,t["ɵNgClassImpl"],t["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](5,278528,null,0,t.NgClass,[t["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](6,1),(l()(),s["ɵand"](16777216,null,null,1,null,c)),s["ɵdid"](8,278528,null,0,t.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(l,n){var e=n.component;l(n,2,0,"mr-2 select-menu-edit",e.data,e.options,e.messages,e.selectionLimit,e.customBadges,e.customBadgeValidators);var s=l(n,6,0,e.icons.edit);l(n,5,0,s),l(n,8,0,e.data)}),null)}},ppaS:function(l,n,e){"use strict";e.d(n,"a",(function(){return a}));var s=e("8Y7J"),t=e("oxzT"),u=e("DNAf");e("wnGv");class a{constructor(l){this.i18n=l,this.data=[],this.options=[],this.messages=new u.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new s.EventEmitter,this.icons=t.a}}}}]);
\ No newline at end of file
index 07a009c4a8fb9b1188c38f7d1a8dd9c2f19062e5..b7f969b9d36b2ae885bb4ed2e35f3cf4b679c9bd 100644 (file)
@@ -10,7 +10,7 @@
 
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <link rel="icon" type="image/x-icon" href="favicon.ico">
-<link rel="stylesheet" href="styles.4f0058c288677d311127.css"></head>
+<link rel="stylesheet" href="styles.58a2c96c3b87bd02e7a7.css"></head>
 <body>
   <noscript>
     <div class="noscript container"
@@ -24,5 +24,5 @@
   </noscript>
 
   <cd-root></cd-root>
-<script src="runtime.992511a1840a2561365a.js" defer></script><script src="polyfills.e36c0f03dbcdd3187a99.js" defer></script><script src="scripts.76632aba1e576c7cc54a.js" defer></script><script src="main.a10546ecbf9c49d65e18.js" defer></script></body>
+<script src="runtime.0907482258dfadeab004.js" defer></script><script src="polyfills.513b02b42d061373f212.js" defer></script><script src="scripts.76632aba1e576c7cc54a.js" defer></script><script src="main.cb10cd7f4a550e7a33c5.js" defer></script></body>
 </html>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.a10546ecbf9c49d65e18.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.a10546ecbf9c49d65e18.js
deleted file mode 100644 (file)
index 80f77e3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"+0ag":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(t);return e?"dev"===e[2]?"master":e[1]:t}}},"+6XX":function(t,e,n){var a=n("y1pI");t.exports=function(t){return a(this.__data__,t)>-1}},"+K+b":function(t,e,n){var a=n("JHRd");t.exports=function(t){var e=new t.constructor(t.byteLength);return new a(e).set(new a(t)),e}},"+Qka":function(t,e,n){var a=n("fmRc"),r=n("t2Dn"),i=n("cq/+"),s=n("T1AV"),o=n("GoyQ"),u=n("mTTR"),d=n("itsj");t.exports=function t(e,n,l,c,f){e!==n&&i(n,(function(i,u){if(f||(f=new a),o(i))s(e,n,u,l,t,c,f);else{var h=c?c(d(e,u),i,u+"",e,n,f):void 0;void 0===h&&(h=i),r(e,u,h)}}),u)}},"+Wg/":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pt-BR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegação</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Painel de controle</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Serviços</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuração</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imagens</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Espelhamento</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuários</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimentos</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selecionar Idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Carregando dados do painel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Seletor de Horário do Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Redefinir Configurações</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Voltar</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Falha ao carregar dados.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selecionado(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrado(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrição</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrição extensa</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Padrão</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Padrão do daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salvar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizador de mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Carregando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo é obrigatório.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sim, desejo.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fechar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Desempenho Geral</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenhuma entrada encontrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros do Cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de Auditoria</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Carregando configuração...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Não foi possível carregar a configuração.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Editar módulo do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>O valor inserido não é um UUID válido. Ex.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>O valor inserido precisa ser um endereço IP válido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>O valor inserido precisa ser um número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>O valor inserido precisa ser um número ou decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Atualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID do Cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>época de monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon obrigatório</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>No Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Não está no Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Adicionar</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flags OSD de todo o Cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avançado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridade de Recuperação de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridade</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridade</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo é obrigatório!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>O valor precisa ser entre 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reponderar</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSDs</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Excluir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Saúde</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estatísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Qualquer cliente pode acessar</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Endereços</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve conter um ou mais valores separados por vírgula</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por exemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de Acesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Executar Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Adicionar clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Não há clusters disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selecionar cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Adicionar daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de Armazenamento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Não há pools de dados disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selecionar backend de armazenamento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuário do Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Não há usuários disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selecionar usuário do gateway de objetos --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Não há clientes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selecionar cliente do cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome do CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Rótulo de Segurança</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar rótulo de segurança</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Caminho do CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>O caminho precisa começar com \'/\' e pode ser seguido de uma palavra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Novo diretório será criado</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Caminho</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>O caminho pode ser apenas uma \'/\' ou uma palavra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Novo compartimento será criado</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clientes não podem montar subdiretórios (ou seja, se Tag = foo, o cliente não poderá montar foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Tag, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Pseudo, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Não há tipos de acesso disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selecionar tipo de acesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Não há squashes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de Transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bem-vindo ao Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome de usuário é obrigatório</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Senha é obrigatória</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>O usuário não existe no Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Proibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Você não tem permissão para ver o que está procurando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuração de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Remova o valor de configuração local. No lugar dele, o valor de configuração pai será herdado e usado.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>O valor mínimo é 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de Pools</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>O nome pode conter apenas caracteres alfanuméricos, traços e sublinhados.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>O nome do perfil de código de eliminação escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pacotes de dados (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve ser igual ou maior do que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pacotes de codificação (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve ser igual ou maior do que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidade (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localidade (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domínio de falha do Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localidade do Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nenhum</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamanho do pacote</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raiz do Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe do dispositivo do Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualquer</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Diretório</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>O nome do pool do Ceph escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selecionar tipo de pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Pelo menos um grupo de posicionamento é necessário!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Seu cluster não pode processar tantos PGs. Recalcule a quantidade de PG necessária.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ajuda no cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamanho replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sobregravações de EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicativos</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil do código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Não há perfis de código de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selecionar perfil do código de eliminação --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selecionar regra de crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regra de Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Etapas do Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compactação</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Não há algoritmos de compactação de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ex. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>O valor deve ser maior do que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamanho máximo do blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ex. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>O valor deve ser maior do que o tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Taxa</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Taxa de compactação</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>O valor deve ser entre 0.0 e 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ex. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalhes</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalhes de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalhes das Camadas do Cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover imagem para o lixo</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Vencimento da proteção em</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de data incorreto. Use "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>A proteção já venceu. Escolha uma data no futuro ou deixe-a vazia.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover Imagem</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Visão geral</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticação de Descoberta</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuário</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n              apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Senha</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuário Mútuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Senha Mútua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informações disponíveis:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool de Dados</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Criado</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamanho</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamanho do objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Pai</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefixo do nome do bloco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordem</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantâneos</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagem</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Esta configuração substitui o valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este é o valor global. Nenhum valor para esta opção foi definido para esta imagem.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' não são permitidos.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Não há pools de RBD disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selecionar pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar pool de dados dedicado</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool de dados</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicado que armazena os dados de objetos do RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Você precisa aumentar o tamanho.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avançado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Distribuição</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selecionar unidade de distribuição --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo é obrigatório porque o total de distribuições foi definido!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>A unidade de distribuição é maior do que o tamanho do objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo é obrigatório porque a unidade de distribuição foi definida!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>O total de distribuições deve ser maior do que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Você está prestes a fazer rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Purgar Lixo</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tudo</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome do pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar Imagem</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digite o novo nome da imagem e clique em</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Novo Nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Venceu em</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protegido até</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Não costuma ser necessário mudar o valor padrão destes parâmetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Configurações</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Configurações Avançadas</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de Destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN tem padrão incorreto.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por exemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Mais informações</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tem configurações avançadas modificadas.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portais</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Adicionar portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagem tem configurações modificadas.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Adicionar imagem</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticação ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN do Cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>O IQN do Iniciador precisa ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n                        apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>O iniciador pertence a um grupo. As imagens serão configuradas no grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nenhum item adicionado.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Adicionar iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Adicionar grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Lixo</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de espelho do pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Clusters de peer devem ser removidos antes de desabilitar o espelho.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Adicionar} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome do Cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>O nome do cluster não é válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID do CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID do CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>O ID do CephX não é válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Endereços do Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Endereços delimitados por vírgula...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>O endereço de monitoria não é válido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chave do CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chave codificada com base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>A chave do CephX deve ser codificada com base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contadores de desempenho não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Carregando dados do compartimento...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>O valor não é válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>O nome escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietário</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selecionar usuário --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regra de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versão</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versão master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Horário da modificação</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zonas</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cota do compartimento</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamanho máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Ilimitado</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome de usuário</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selecionar nome de usuário --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Gerar chave automaticamente</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chave de acesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Endereço de e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspenso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Máximo de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuários</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cota do usuário</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chaves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selecionar tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permissão</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selecionar permissão --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuário</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>O ID de subusuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>leitura, gravação</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>completo</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Gerar segredo automaticamente</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Carregando dados do usuário...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Não foi possível carregar os dados do usuário.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>O ID de usuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Este não é um endereço de e-mail válido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>O endereço de e-mail escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Desabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizado</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Não há subusuários.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Não há chaves.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Não há recursos.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamanho ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamanho máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Máx. de objetos</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>O valor inserido deve ser &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrição...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permissões</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funções</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar senha</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>A confirmação de senha não corresponde à senha.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail inválido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Você está prestes a remover as permissões de "leitura/atualização de usuário" do seu próprio usuário.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se você continuar, não poderá mais adicionar ou remover funções de nenhum usuário.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Deseja realmente continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ajuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentação</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Sobre</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Configurações do Painel de Controle</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gerenciamento de usuários</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuário que efetuou login</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Efetuar logout</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadados não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadados</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contador de desempenho</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Gravações</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Leituras</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores atuais</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origem</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nível</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Pode ser atualizado em tempo de execução (editável)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores de enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Consulte também</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status do Cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons do Gerenciador</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gateways de Objetos</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de Metadados</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateways iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS do Cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput do Cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Leitura/Gravação do Cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Remoção</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Desempenho</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidade Bruta</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PGs por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status do PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidade</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Posições</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Atual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticação de descoberta atualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Não há portais disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Não há imagens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Não há imagens disponíveis. Adicione uma imagem ao destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Não há iniciadores disponíveis. Adicione um iniciador ao destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de Leitura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de Gravação</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Op. de Leitura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Op. de Gravação</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instância</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Andamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modo de Edição</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Adicionar Peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar Peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Excluir Peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Nº Local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Nº Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>espelhar peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Nivelamento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Disposição em camadas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueio exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Registro em diário (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback de instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Fazer Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Excluído à(s)</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versão</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raiz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Posição</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Atividade</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Atualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>É possível atualizar o valor em temo de execução.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/clientes não extraem este valor do\n      banco de dados de configuração do monitor. A configuração desta opção não é permitida por meio de \'ceph config\n      set ...\'. Essa opção deve ser configurada por meio do ceph.conf ou da\n      linha de comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>A opção entra em vigor apenas durante a inicialização do daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>A opção afeta apenas a criação do cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>A opção afeta apenas a criação do daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Serviço</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor atual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editável</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Desabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconectando, aguarde...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Endereço Público</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessões Abertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Não Entrada</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Os OSDs que já foram marcados como saída não serão remarcados como entrada ao serem iniciados</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Não Saída</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Os OSDs não serão automaticamente marcados como saída após o intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Não Ativo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Os OSDs não podem ser iniciados</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Não Inativo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Os relatórios de falha de OSD estão sendo ignorados, portanto, os monitores não marcarão os OSDs como inativos</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausar</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pausa leituras e gravações</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Sem Remoção</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Remoção desabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Sem Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Remoção Profunda desabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Sem Provisionamento</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Provisionamento de PGs suspenso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Sem Recuperação</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recuperação de PGs suspensa</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Classificação Bit a Bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar classificação bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdirs Purgados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs converteram snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Exclusões de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Exclusões realizadas durante a recuperação, e não o emparelhamento</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite Físico do Registro de PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Atribui um limite físico ao tamanho do registro de PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flags OSD Atualizadas</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>saída</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>entrada</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>inativo</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purgar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruído</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PGs</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de leitura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de gravação</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Op. de leitura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Op. de gravação</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Máx. de Provisionamentos</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máx. Recuperação Ativo</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máx. Recuperação Inicialização Única</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Suspensão de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tarefa</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravidade</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Disp.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpar</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Em funcionamento</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Aviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconhecido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sem sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon ativo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>O serviço NFS Ganesha não está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transporte</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistema de Arquivos do CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(herdado da configuração global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>herdado da configuração global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Não há daemons disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Tempo Mín. Expulsão</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Tempo Mín. Descarregamento</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Máx. de Bytes de Destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Máx. de Objetos de Destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nenhum aplicativo adicionado</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite de aplicativos atingido</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Um pool apenas pode ter até quatro definições de aplicativos.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Tamanho máximo de 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar ou adicionar aplicativos</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Adicionar aplicativo</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamanho da Réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Última Alteração</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil Codificado para Eliminação</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de Regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimentos</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuário</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuários</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Escopo</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Leitura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Criar</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Função do Sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Atualizar usuário</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Você foi automaticamente desconectado porque suas funções foram alteradas.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto é dividido em partes de pacotes de dados, cada uma armazenada em um OSD diferente.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcule os pacotes de codificação de cada objeto e armazene-os em diferentes OSDs.\n      O número de pacotes de codificação é também o número de OSDs que podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>O plug-in jerasure é o mais genérico e flexível,\n          além de ser o padrão para pools codificados para eliminação do Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>A técnica mais flexível é reed_sol_van: ela é suficiente para definir k\n          e m. A técnica cauchy_good pode ser mais rápida, mas você precisa escolher o tamanho do pacote\n          com cuidado. Todos os reed_sol_r6_op, liberation, blaum_roth e liber8tion são equivalentes ao RAID6\n          no sentido de que só podem ser configurados com m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>A codificação será feita em pacotes de tamanho de bytes um de cada vez.\n          A escolha do tamanho do pacote certo é difícil.\n          A documentação do jerasure contém informações completas sobre este tópico.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Com o plug-in jerasure, quando um objeto codificado para eliminação é armazenado em\n          vários OSDs, a recuperação após a perda de um OSD requer a leitura de todos os outros.\n          Por exemplo, se o jerasure for configurado com k=8 e m=4, a perda de um OSD exigirá a leitura\n          dos outros onze para fazer o reparo.\n\n          O plug-in de código de eliminação lrc cria pacotes locais de paridade para conseguir recuperar usando\n          menos OSDs. Por exemplo, se o lrc for configurado com k=8, m=4 e l=4, ele criará\n          um pacote de paridade adicional para cada quatro OSDs. Quando um único OSD é perdido, ele pode ser\n          recuperado apenas com quatro OSDs, em vez de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupe os pacotes de codificação e dados em conjuntos de localidades com tamanho. Por exemplo,\n          no caso de k=4 e m=2, quando locality=3, dois grupos de três são criados. Cada conjunto pode\n          ser recuperado sem a leitura dos pacotes do outro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>O tipo do compartimento de crush em que cada conjunto de pacotes definido\n          por l será armazenado. Por exemplo, se isso for definido como rack, cada grupo de pacotes l será\n          colocado em um rack diferente. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do\n          rack. Se isso não for definido, esse tipo de agrupamento não será feito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>O plug-in isa encapsula a biblioteca ISA. Ele apenas é executado em processadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>O plug-in ISA vem em dois formatos de Reed Solomon.\n          Se reed_sol_van for definido, ele será Vandermonde, se cauchy for definido, ele será Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>O plug-in shec encapsula a biblioteca múltipla SHEC.\n          Ele permite ao ceph recuperar dados com mais eficiência do que os códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>O número de pacotes de paridade, em que cada um inclui cada pacote de dados em sua\n          faixa de cálculo. O número é usado como estimador de durabilidade. Por exemplo, se c=2,\n          2 OSDs podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>O nome do compartimento de crush usado para a primeira etapa da regra CRUSH.\n      Por exemplo, a etapa assumir o padrão.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Verifique se não há dois pacotes em um compartimento com o mesmo domínio de\n      falha. Por exemplo, se o domínio de falha for um host, não armazene dois pacotes no mesmo\n      host. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do host folha.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restrinja o posicionamento a dispositivos de uma classe específica\n      (ex. ssd ou hdd), usando nomes de classe de dispositivo crush no mapa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Defina o nome do diretório do qual o plug-in de código de eliminação é carregado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas as operações</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite apenas as operações que não modificam o servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Não permite operações de leitura ou gravação, mas permite qualquer outra operação</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Não permite leitura, gravação ou qualquer operação que modifica os atributos do arquivo ou o conteúdo do diretório</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Não permite nenhum tipo de acesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selecionar prioridade --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baixa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informações</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última 1 hora (Padrão)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ontem</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoje</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Até agora hoje</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Antes de ontem</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Últimos 2 dias</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este dia na semana passada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Semana anterior</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Até agora nesta semana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Últimos 7 dias</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mês anterior</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mês</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Até agora neste mês</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Últimos 30 dias</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Últimos 90 dias</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Último ano</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Ano anterior</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este ano</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Até agora neste ano</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Últimos 2 anos</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Últimos 5 anos</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nenhum item selecionado.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Desmarcar item para selecionar novamente</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de seleção atingido</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags de filtro</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Adicionar selo</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Não há itens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Nivelar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar como Inativo</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar como Entrada</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como Perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar como Saída</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renomear</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover para Lixo</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Cancelar proteção</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Excluído</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Nivelado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback feito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sim</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Não</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualidade do Serviço</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>O limite de bytes por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>O limite de operações por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>O limite de bytes por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>O limite de operações por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>O limite de bytes por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>O limite de operações por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Intermitência de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>O limite de bytes de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Intermitência de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>O limite de operações de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Intermitência de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>O limite de bytes de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Intermitência de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>O limite de operações de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Intermitência de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>O limite de bytes de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Intermitência de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>O limite de operações de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Executando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>executar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Executado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarefa desconhecida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Criando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>criar</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Atualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>atualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Excluindo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Nivelando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>nivelar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Fazendo rollback</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Movendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Imagem não encontrada.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Purgando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purgar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos os pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossível desabilitar espelhamento porque ele contém um peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"+c4W":function(t,e,n){var a=n("711d"),r=n("4/ic"),i=n("9ggG"),s=n("9Nap");t.exports=function(t){return i(t)?a(s(t)):r(t)}},"+fVR":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{setExpandedRow(t){this.expandedRow=t}}},"+gVj":function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return i})),n.d(e,"e",(function(){return d})),n.d(e,"f",(function(){return g})),n.d(e,"g",(function(){return c})),n.d(e,"h",(function(){return h}));var a=n("8Y7J"),r=n("s7LF");class i{constructor(){this.validSubmit=new a.EventEmitter}onSubmit(){this.markAsTouchedAndDirty(this.formGroup),this.formGroup.valid&&this.validSubmit.emit(this.formGroup.value)}markAsTouchedAndDirty(t){t instanceof r.k?Object.keys(t.controls).forEach(e=>this.markAsTouchedAndDirty(t.controls[e])):t instanceof r.f?t.controls.forEach(t=>this.markAsTouchedAndDirty(t)):t instanceof r.i&&t.enabled&&(t.markAsDirty(),t.markAsTouched(),t.updateValueAndValidity())}}const s=function(){var t={Three:0,Four:1};return t[t.Three]="Three",t[t.Four]="Four",t}(),o=new a.InjectionToken("ng-bootstrap-form-validation custom error messages"),u=new a.InjectionToken("ng-bootstrap-form-validation module options");class d{constructor(t){this.bootstrapVersion=t,this.messages=()=>[]}get className(){switch(this.bootstrapVersion){case s.Three:return"help-block";case s.Four:return"invalid-feedback"}}}const l=[{error:"required",format:t=>`${t} is required`},{error:"pattern",format:t=>`${t} is invalid`},{error:"minlength",format:(t,e)=>`${t} must be at least ${e.requiredLength} characters`},{error:"maxlength",format:(t,e)=>`${t} must be no longer than ${e.requiredLength} characters`},{error:"requiredTrue",format:(t,e)=>`${t} is required`},{error:"email",format:(t,e)=>"Invalid email address"},{error:"max",format:(t,e)=>`${t} must be no greater than ${e.max}`},{error:"min",format:(t,e)=>`${t} must be no less than ${e.min}`}];let c=(()=>{class t{constructor(t){this.customErrorMessages=t,this.defaultErrors=l,this.errorMessages=t.reduce((t,e)=>t.concat(e),this.defaultErrors)}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(o))},token:t,providedIn:"root"}),t})();class f{constructor(t,e){this.elRef=t,this.errorMessageService=e,this.customErrorMessages=[],this.validationDisabled=!1,this.messages=()=>this.getMessages()}get hasErrors(){return this.FormControlNames.some(t=>!t.valid&&t.dirty&&t.touched)&&!this.validationDisabled}get hasSuccess(){return!this.FormControlNames.some(t=>!t.valid)&&this.FormControlNames.some(t=>t.dirty&&t.touched)&&!this.validationDisabled}ngAfterContentInit(){this.messagesBlock&&(this.messagesBlock.messages=this.messages)}ngOnInit(){this.errorMessages=this.errorMessageService.errorMessages.concat(this.customErrorMessages).reverse()}get label(){const t=this.elRef.nativeElement.querySelector("label");return t&&t.textContent?t.textContent.trim():"This field"}get isDirtyAndTouched(){return this.FormControlNames.some(t=>t.dirty&&t.touched)}getMessages(){const t=[];if(!this.isDirtyAndTouched||this.validationDisabled)return t;const e=this.FormControlNames.map(t=>t.name);return this.FormControlNames.filter((t,n)=>!t.valid&&!!t.errors&&e.indexOf(t.name)===n).forEach(e=>{Object.keys(e.errors).forEach(n=>{const a=this.errorMessages.find(t=>t.error===n);a&&t.push(a.format(this.label,e.errors[n]))})}),t}}class h{constructor(t,e){this.parent=t,this.bootstrapVersion=e}get validClass(){return!!this.control&&this.bootstrapFour&&this.control.valid&&(this.control.touched||this.control.dirty)}get invalidClass(){return!!this.control&&this.bootstrapFour&&this.control.invalid&&this.control.touched&&this.control.dirty}get path(){return[...this.parent.path,this.formControlName]}get control(){return this.formDirective&&this.formDirective.getControl(this)}get formDirective(){return this.parent?this.parent.formDirective:null}get bootstrapFour(){return this.bootstrapVersion===s.Four}}class g{static forRoot(t={bootstrapVersion:s.Four}){return{ngModule:g,providers:[{provide:o,useValue:t.customErrorMessages||[],multi:!0},{provide:u,useValue:t.bootstrapVersion},c]}}}},"+iFO":function(t,e,n){var a=n("dTAl"),r=n("LcsW"),i=n("6sVZ");t.exports=function(t){return"function"!=typeof t.constructor||i(t)?{}:a(r(t))}},"+s0g":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"//9w":function(t,e,n){!function(t){"use strict";t.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"/9aa":function(t,e,n){var a=n("NykK"),r=n("ExA7");t.exports=function(t){return"symbol"==typeof t||r(t)&&"[object Symbol]"==a(t)}},"/GqU":function(t,e,n){var a=n("RK3t"),r=n("HYAF");t.exports=function(t){return a(r(t))}},"/NlG":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("oxzT");class i{constructor(t){this.i18n=t,this.title="",this.bootstrapClass="",this.backAction=new a.EventEmitter,this.size="normal",this.showIcon=!0,this.showTitle=!0,this.icons=r.a}ngOnInit(){switch(this.type){case"warning":this.title=this.title||this.i18n("Warning"),this.typeIcon=this.typeIcon||r.a.warning,this.bootstrapClass=this.bootstrapClass||"warning";break;case"error":this.title=this.title||this.i18n("Error"),this.typeIcon=this.typeIcon||r.a.destroyCircle,this.bootstrapClass=this.bootstrapClass||"danger";break;case"info":this.title=this.title||this.i18n("Information"),this.typeIcon=this.typeIcon||r.a.infoCircle,this.bootstrapClass=this.bootstrapClass||"info";break;case"success":this.title=this.title||this.i18n("Success"),this.typeIcon=this.typeIcon||r.a.check,this.bootstrapClass=this.bootstrapClass||"success"}}}},"/X5v":function(t,e,n){!function(t){"use strict";t.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"/b8u":function(t,e,n){var a=n("STAE");t.exports=a&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},"/byt":function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},0:function(t,e,n){t.exports=n("zUnb")},"0+/T":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("QFaf");n("sb0X");class i{constructor(t){this.modalRef=t,this.actionDescription="delete"}ngOnInit(){if(this.deletionForm=new r.a({confirmation:new a.i(!1,[a.B.requiredTrue])}),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")}callSubmitAction(){this.submitActionObservable?this.submitActionObservable().subscribe(null,this.stopLoadingSpinner.bind(this),this.hideModal.bind(this)):this.submitAction()}hideModal(){this.modalRef.hide()}stopLoadingSpinner(){this.deletionForm.setErrors({cdSubmitButton:!0})}}},"03A+":function(t,e,n){var a=n("JTzB"),r=n("ExA7"),i=Object.prototype,s=i.hasOwnProperty,o=i.propertyIsEnumerable,u=a(function(){return arguments}())?a:function(t){return r(t)&&s.call(t,"callee")&&!o.call(t,"callee")};t.exports=u},"07d7":function(t,e,n){var a=n("AO7/"),r=n("busE"),i=n("sEFX");a||r(Object.prototype,"toString",i,{unsafe:!0})},"0BK2":function(t,e){t.exports={}},"0Cz8":function(t,e,n){var a=n("Xi7e"),r=n("ebwN"),i=n("e4Nc");t.exports=function(t,e){var n=this.__data__;if(n instanceof a){var s=n.__data__;if(!r||s.length<199)return s.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(s)}return n.set(t,e),this.size=n.size,this}},"0Dky":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"0EUg":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("bHdf");function r(){return Object(a.a)(1)}},"0GbY":function(t,e,n){var a=n("Qo9l"),r=n("2oRo"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(a[t])||i(r[t]):a[t]&&a[t][e]||r[t]&&r[t][e]}},"0eef":function(t,e,n){"use strict";var a={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!a.call({1:2},1);e.f=i?function(t){var e=r(this,t);return!!e&&e.enumerable}:a},"0mo+":function(t,e,n){!function(t){"use strict";var e={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};t.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(t){return t.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(t,e){return 12===t&&(t=0),"མཚན་མོ"===e&&t>=4||"ཉིན་གུང"===e&&t<5||"དགོང་དག"===e?t+12:t},meridiem:function(t,e,n){return t<4?"མཚན་མོ":t<10?"ཞོགས་ཀས":t<17?"ཉིན་གུང":t<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("wd/R"))},"0rvr":function(t,e,n){var a=n("glrk"),r=n("O741");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return a(n),r(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},"0tRk":function(t,e,n){!function(t){"use strict";t.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n("wd/R"))},"0ycA":function(t,e){t.exports=function(){return[]}},"1+5i":function(t,e,n){var a=n("w/wX"),r=n("sEf8"),i=n("mdPL"),s=i&&i.isSet,o=s?r(s):a;t.exports=o},"128B":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("Kqap"),r=n("BFxc"),i=n("xbPD"),s=n("mCNh");function o(t,e){return arguments.length>=2?function(n){return Object(s.a)(Object(a.a)(t,e),Object(r.a)(1),Object(i.a)(e))(n)}:function(e){return Object(s.a)(Object(a.a)((e,n,a)=>t(e,n,a+1)),Object(r.a)(1))(e)}}},"14R3":function(t,e){"undefined"!=typeof Element&&("function"!=typeof Element.prototype.matches&&(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.webkitMatchesSelector||function(t){for(var e=(this.document||this.ownerDocument).querySelectorAll(t),n=0;e[n]&&e[n]!==this;)++n;return Boolean(e[n])}),"function"!=typeof Element.prototype.closest&&(Element.prototype.closest=function(t){for(var e=this;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null}))},"14Sl":function(t,e,n){"use strict";n("rB9j");var a=n("busE"),r=n("0Dky"),i=n("tiKp"),s=n("kmMV"),o=n("kRJp"),u=i("species"),d=!r((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),l="$0"==="a".replace(/./,"$0"),c=i("replace"),f=!!/./[c]&&""===/./[c]("a","$0"),h=!r((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,c){var g=i(t),p=!r((function(){var e={};return e[g]=function(){return 7},7!=""[t](e)})),b=p&&!r((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[g]=/./[g]),n.exec=function(){return e=!0,null},n[g](""),!e}));if(!p||!b||"replace"===t&&(!d||!l||f)||"split"===t&&!h){var m=/./[g],y=n(g,""[t],(function(t,e,n,a,r){return e.exec===s?p&&!r?{done:!0,value:m.call(e,n,a)}:{done:!0,value:t.call(n,e,a)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),v=y[1];a(String.prototype,t,y[0]),a(RegExp.prototype,g,2==e?function(t,e){return v.call(t,this,e)}:function(t){return v.call(t,this)})}c&&o(RegExp.prototype[g],"sham",!0)}},"1E5z":function(t,e,n){var a=n("m/L8").f,r=n("UTVS"),i=n("tiKp")("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},"1Ni5":function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("LRne"),s=n("PqYM"),o=n("eIep");function u(t,e){return e?Object(o.a)(()=>t,e):Object(o.a)(()=>t)}var d=n("lJxs"),l=n("IzEk"),c=n("Fgil"),f=n("aXbf");function h(t){return null==t||0===t.length}n.d(e,"b",(function(){return h})),n.d(e,"a",(function(){return g}));class g{static email(t){return h(t.value)?null:a.B.email(t)}static ip(t=0){const e=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i,n=/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i;return a.B.pattern(4===t?e:6===t?n:new RegExp(e.source+"|"+n.source))}static number(t=!0){return a.B.pattern(t?/^-?[0-9]+$/i:/^[0-9]+$/i)}static decimalNumber(t=!0){return a.B.pattern(t?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)}static requiredIf(t,e){let n=!1;return a=>(!n&&a.parent&&(Object.keys(t).forEach(t=>{a.parent.get(t).valueChanges.subscribe(()=>{a.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>a.parent&&a.parent.get(e).value===t[e])&&(r.isFunction(e)?e.call(e,a.value):h(a.value))?{required:!0}:null)}static composeIf(t,e){let n=!1;return r=>(!n&&r.parent&&(Object.keys(t).forEach(t=>{r.parent.get(t).valueChanges.subscribe(()=>{r.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>r.parent&&r.parent.get(e).value===t[e])?a.B.compose(e)(r):null)}static custom(t,e){return n=>{const a=e.call(this,n.value);return a?{[t]:a}:null}}static validateIf(t,e,n,r=[],i=[]){n=n.concat(r),t.setValidators(t=>e.call(this)?a.B.compose(n)(t):r.length>0?a.B.compose(r)(t):null),i.forEach(e=>{e.valueChanges.subscribe(()=>{t.updateValueAndValidity({emitEvent:!1})})})}static match(t,e){return n=>{const a=n.get(t),i=n.get(e);if(!a||!i)return null;if(a.value!==i.value)i.setErrors({match:!0});else if(i.hasError("match")){const t=i.errors;r.unset(t,"match"),i.setErrors(r.isEmpty(r.keys(t))?null:t)}return null}}static unique(t,e=null,n=500){return a=>a.pristine||h(a.value)?Object(i.a)(null):Object(s.a)(n).pipe(u(t.call(e,a.value)),Object(d.a)(t=>t?{notUnique:!0}:null),Object(l.a)(1))}static uuid(t=!1){const e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return n=>n.pristine&&n.untouched?null:t||n.value?e.test(n.value)?null:{invalidUuid:"This is not a valid UUID"}:null}static binaryMin(t){return e=>{const n=new f.a,a=(new f.a).toBytes(e.value);if(t<=a)return null;const r=new c.a(n).transform(t);return{binaryMin:t=>t("Size has to be at least {{value}} or more",{value:r})}}}static binaryMax(t){return e=>{const n=new f.a,a=n.toBytes(e.value);if(t>=a)return null;const r=new c.a(n).transform(t);return{binaryMax:t=>t("Size has to be at most {{value}} or less",{value:r})}}}static passwordPolicy(t,e,n){return a=>{if(a.pristine||""===a.value)return r.isFunction(n)&&n(!0,0),Object(i.a)(null);let o;return r.isFunction(e)&&(o=e()),Object(s.a)(500).pipe(u(r.invoke(t,"validatePassword",a.value,o)),Object(d.a)(t=>(r.isFunction(n)&&n(t.valid,t.credits,t.valuation),t.valid?null:{passwordPolicy:!0})),Object(l.a)(1))}}}},"1Y/n":function(t,e,n){var a=n("HAuM"),r=n("ewvW"),i=n("RK3t"),s=n("UMSQ"),o=function(t){return function(e,n,o,u){a(n);var d=r(e),l=i(d),c=s(d.length),f=t?c-1:0,h=t?-1:1;if(o<2)for(;;){if(f in l){u=l[f],f+=h;break}if(f+=h,t?f<0:c<=f)throw TypeError("Reduce of empty array with no initial value")}for(;t?f>=0:c>f;f+=h)f in l&&(u=n(u,l[f],f,d));return u}};t.exports={left:o(!1),right:o(!0)}},"1hJj":function(t,e,n){var a=n("e4Nc"),r=n("ftKO"),i=n("3A9y");function s(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new a;++e<n;)this.add(t[e])}s.prototype.add=s.prototype.push=r,s.prototype.has=i,t.exports=s},"1nQr":function(t,e,n){"use strict";var a=n("LvDl"),r=n("lJxs"),i=n("20UP");class s{constructor(t){this.pwdPolicyEnabled=t.pwd_policy_enabled,this.pwdPolicyMinLength=t.pwd_policy_min_length,this.pwdPolicyCheckLengthEnabled=t.pwd_policy_check_length_enabled,this.pwdPolicyCheckOldpwdEnabled=t.pwd_policy_check_oldpwd_enabled,this.pwdPolicyCheckUsernameEnabled=t.pwd_policy_check_username_enabled,this.pwdPolicyCheckExclusionListEnabled=t.pwd_policy_check_exclusion_list_enabled,this.pwdPolicyCheckRepetitiveCharsEnabled=t.pwd_policy_check_repetitive_chars_enabled,this.pwdPolicyCheckSequentialCharsEnabled=t.pwd_policy_check_sequential_chars_enabled,this.pwdPolicyCheckComplexityEnabled=t.pwd_policy_check_complexity_enabled}}var o=n("8Y7J"),u=n("GiVz");n.d(e,"a",(function(){return d}));let d=(()=>{class t{constructor(t,e){this.i18n=t,this.settingsService=e}getHelpText(){return this.settingsService.getStandardSettings().pipe(Object(r.a)(t=>{const e=new s(t);let n=[];if(e.pwdPolicyEnabled){n.push(this.i18n("Required rules for passwords:"));const t={pwdPolicyCheckLengthEnabled:this.i18n("Must contain at least {{length}} characters",{length:e.pwdPolicyMinLength}),pwdPolicyCheckOldpwdEnabled:this.i18n("Must not be the same as the previous one"),pwdPolicyCheckUsernameEnabled:this.i18n("Cannot contain the username"),pwdPolicyCheckExclusionListEnabled:this.i18n("Cannot contain any configured keyword"),pwdPolicyCheckRepetitiveCharsEnabled:this.i18n('Cannot contain any repetitive characters e.g. "aaa"'),pwdPolicyCheckSequentialCharsEnabled:this.i18n('Cannot contain any sequential characters e.g. "abc"'),pwdPolicyCheckComplexityEnabled:this.i18n("Must consist of characters from the following groups:\n  * Alphabetic a-z, A-Z\n  * Numbers 0-9\n  * Special chars: !\"#$%& '()*+,-./:;<=>?@[\\]^_`{{|}}~\n  * Any other characters (signs)")};n=n.concat(a.keys(t).filter(t=>a.get(e,t)).map(e=>"- "+a.get(t,e)))}return n.join("\n")}))}mapCreditsToCssClass(t){let e="very-strong";return t<10?e="too-weak":t<15?e="weak":t<20?e="ok":t<25&&(e="strong"),e}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](u.a),o["ɵɵinject"](i.a))},token:t,providedIn:"root"}),t})()},"1rYy":function(t,e,n){!function(t){"use strict";t.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(t){return/^(ցերեկվա|երեկոյան)$/.test(t)},meridiem:function(t){return t<4?"գիշերվա":t<12?"առավոտվա":t<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},"1xZ4":function(t,e,n){!function(t){"use strict";t.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})}(n("wd/R"))},"20UP":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("LvDl"),r=n("lJxs"),i=n("8Y7J"),s=n("IheW"),o=n("pL04");let u=(()=>{class t{constructor(t){this.http=t,this.settings={}}getValues(t){return a.isArray(t)&&(t=t.join(",")),this.http.get(`api/settings?names=${t}`).pipe(Object(r.a)(t=>{const e={};return a.forEach(t,t=>{a.set(e,t.name,t.value)}),e}))}ifSettingConfigured(t,e,n){const a=this.settings[t];void 0===a?this.http.get(t).subscribe(a=>{this.settings[t]=this.getSettingsValue(a),this.ifSettingConfigured(t,e,n)},e=>{401!==e.status&&(this.settings[t]="")}):""!==a?e(a):n&&n()}disableSetting(t){this.settings[t]=""}getSettingsValue(t){return t.value||t.instance||""}validateGrafanaDashboardUrl(t){return this.http.get(`api/grafana/validation/${t}`)}getStandardSettings(){return this.http.get("ui-api/standard_settings")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.c))},token:t,providedIn:o.a}),t})()},"25BL":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),o=n("SVse"),u=n("FE24"),d=n("z/SZ"),l=n("GS7A"),c=n("s7LF"),f=n("w9WL"),h=a["ɵcrt"]({encapsulation:2,styles:[".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;-webkit-transform:translate3d(0,0,0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable :after,.ngx-datatable :before{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-header-inner,.ngx-datatable .datatable-row-center{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:0}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:0}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:0}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}"],data:{}});function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"datatable-header",[["class","datatable-header"]],[[4,"height",null],[4,"width",null]],[[null,"sort"],[null,"resize"],[null,"reorder"],[null,"select"],[null,"columnContextmenu"]],(function(t,e,n){var a=!0,r=t.component;return"sort"===e&&(a=!1!==r.onColumnSort(n)&&a),"resize"===e&&(a=!1!==r.onColumnResize(n)&&a),"reorder"===e&&(a=!1!==r.onColumnReorder(n)&&a),"select"===e&&(a=!1!==r.onHeaderSelect(n)&&a),"columnContextmenu"===e&&(a=!1!==r.onColumnContextmenu(n)&&a),a}),x,m)),a["ɵdid"](1,180224,[[2,4]],0,f.i,[a.ChangeDetectorRef],{sortAscendingIcon:[0,"sortAscendingIcon"],sortDescendingIcon:[1,"sortDescendingIcon"],scrollbarH:[2,"scrollbarH"],dealsWithGroup:[3,"dealsWithGroup"],targetMarkerTemplate:[4,"targetMarkerTemplate"],innerWidth:[5,"innerWidth"],sorts:[6,"sorts"],sortType:[7,"sortType"],allRowsSelected:[8,"allRowsSelected"],selectionType:[9,"selectionType"],reorderable:[10,"reorderable"],headerHeight:[11,"headerHeight"],columns:[12,"columns"],offsetX:[13,"offsetX"]},{sort:"sort",reorder:"reorder",resize:"resize",select:"select",columnContextmenu:"columnContextmenu"}),a["ɵpid"](131072,o.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,1,[n.cssClasses.sortAscending,n.cssClasses.sortDescending,n.scrollbarH,void 0!==n.groupedRows,n.targetMarkerTemplate,n._innerWidth,n.sorts,n.sortType,n.allRowsSelected,n.selectionType,n.reorderable,n.headerHeight,n._internalColumns,a["ɵunv"](e,1,13,a["ɵnov"](e,2).transform(n._offsetX))])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).headerHeight,a["ɵnov"](e,1).headerWidth)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-footer",[["class","datatable-footer"]],null,[[null,"page"]],(function(t,e,n){var a=!0;return"page"===e&&(a=!1!==t.component.onFooterPage(n)&&a),a}),Nt,_t)),a["ɵdid"](1,49152,null,0,f.f,[],{footerHeight:[0,"footerHeight"],rowCount:[1,"rowCount"],pageSize:[2,"pageSize"],offset:[3,"offset"],pagerLeftArrowIcon:[4,"pagerLeftArrowIcon"],pagerRightArrowIcon:[5,"pagerRightArrowIcon"],pagerPreviousIcon:[6,"pagerPreviousIcon"],pagerNextIcon:[7,"pagerNextIcon"],totalMessage:[8,"totalMessage"],footerTemplate:[9,"footerTemplate"],selectedCount:[10,"selectedCount"],selectedMessage:[11,"selectedMessage"]},{page:"page"})],(function(t,e){var n=e.component;t(e,1,1,[n.footerHeight,n.rowCount,n.pageSize,n.offset,n.cssClasses.pagerLeftArrow,n.cssClasses.pagerRightArrow,n.cssClasses.pagerPrevious,n.cssClasses.pagerNext,n.messages.totalMessage,n.footer,n.selected.length,!!n.selectionType&&n.messages.selectedMessage])}),null)}function b(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{bodyComponent:0}),a["ɵqud"](671088640,2,{headerComponent:0}),(t()(),a["ɵeld"](2,0,null,null,8,"div",[["visibilityObserver",""]],[[2,"visible",null]],[[null,"visible"]],(function(t,e,n){var a=!0;return"visible"===e&&(a=!1!==t.component.recalculate()&&a),a}),null,null)),a["ɵdid"](3,212992,null,0,f.B,[a.ElementRef,a.NgZone],null,{visible:"visible"}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,2,"datatable-body",[["class","datatable-body"]],[[4,"width",null],[4,"height",null]],[[null,"page"],[null,"activate"],[null,"rowContextmenu"],[null,"select"],[null,"scroll"],[null,"treeAction"]],(function(t,e,n){var a=!0,r=t.component;return"page"===e&&(a=!1!==r.onBodyPage(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),"rowContextmenu"===e&&(a=!1!==r.onRowContextmenu(n)&&a),"select"===e&&(a=!1!==r.onBodySelect(n)&&a),"scroll"===e&&(a=!1!==r.onBodyScroll(n)&&a),"treeAction"===e&&(a=!1!==r.onTreeAction(n)&&a),a}),F,R)),a["ɵdid"](7,245760,[[1,4]],0,f.c,[a.ChangeDetectorRef],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],loadingIndicator:[2,"loadingIndicator"],externalPaging:[3,"externalPaging"],rowHeight:[4,"rowHeight"],offsetX:[5,"offsetX"],emptyMessage:[6,"emptyMessage"],selectionType:[7,"selectionType"],selected:[8,"selected"],rowIdentity:[9,"rowIdentity"],rowDetail:[10,"rowDetail"],groupHeader:[11,"groupHeader"],selectCheck:[12,"selectCheck"],displayCheck:[13,"displayCheck"],trackByProp:[14,"trackByProp"],rowClass:[15,"rowClass"],groupedRows:[16,"groupedRows"],groupExpansionDefault:[17,"groupExpansionDefault"],innerWidth:[18,"innerWidth"],groupRowsBy:[19,"groupRowsBy"],virtualization:[20,"virtualization"],summaryRow:[21,"summaryRow"],summaryPosition:[22,"summaryPosition"],summaryHeight:[23,"summaryHeight"],pageSize:[24,"pageSize"],rows:[25,"rows"],columns:[26,"columns"],offset:[27,"offset"],rowCount:[28,"rowCount"],bodyHeight:[29,"bodyHeight"]},{scroll:"scroll",page:"page",activate:"activate",select:"select",rowContextmenu:"rowContextmenu",treeAction:"treeAction"}),a["ɵpid"](131072,o.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](10,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,5,0,n.headerHeight),t(e,7,1,[n.scrollbarV,n.scrollbarH,n.loadingIndicator,n.externalPaging,n.rowHeight,a["ɵunv"](e,7,5,a["ɵnov"](e,8).transform(n._offsetX)),n.messages.emptyMessage,n.selectionType,n.selected,n.rowIdentity,n.rowDetail,n.groupHeader,n.selectCheck,n.displayCheck,n.trackByProp,n.rowClass,n.groupedRows,n.groupExpansionDefault,n._innerWidth,n.groupRowsBy,n.virtualization,n.summaryRow,n.summaryPosition,n.summaryHeight,n.pageSize,n._internalRows,n._internalColumns,n.offset,n.rowCount,n.bodyHeight]),t(e,10,0,n.footerHeight)}),(function(t,e){t(e,2,0,a["ɵnov"](e,3).isVisible),t(e,6,0,a["ɵnov"](e,7).bodyWidth,a["ɵnov"](e,7).bodyHeight)}))}var m=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"datatable-header-cell",[["class","datatable-header-cell"],["draggable",""],["long-press",""],["resizeable",""]],[[2,"resizeable",null],[2,"press",null],[2,"longpress",null],[4,"height","px"],[8,"className",0],[1,"title",0],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"width","px"]],[[null,"resize"],[null,"longPressStart"],[null,"longPressEnd"],[null,"sort"],[null,"select"],[null,"columnContextmenu"],[null,"mousedown"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,2).onMousedown(n)&&r),"mousedown"===e&&(r=!1!==a["ɵnov"](t,3).onMouseDown(n)&&r),"contextmenu"===e&&(r=!1!==a["ɵnov"](t,4).onContextmenu(n)&&r),"resize"===e&&(r=!1!==i.onColumnResized(n,t.context.$implicit)&&r),"longPressStart"===e&&(r=!1!==i.onLongPressStart(n)&&r),"longPressEnd"===e&&(r=!1!==i.onLongPressEnd(n)&&r),"sort"===e&&(r=!1!==i.onSort(n)&&r),"select"===e&&(r=!1!==i.select.emit(n)&&r),"columnContextmenu"===e&&(r=!1!==i.columnContextmenu.emit(n)&&r),r}),C,_)),a["ɵdid"](1,671744,[[1,4]],0,f.s,[a.ElementRef],{dragEventTarget:[0,"dragEventTarget"],dragModel:[1,"dragModel"],dragX:[2,"dragX"],dragY:[3,"dragY"]},null),a["ɵdid"](2,4341760,null,0,f.x,[a.ElementRef,a.Renderer2],{resizeEnabled:[0,"resizeEnabled"]},{resize:"resize"}),a["ɵdid"](3,147456,null,0,f.t,[],{pressEnabled:[0,"pressEnabled"],pressModel:[1,"pressModel"]},{longPressStart:"longPressStart",longPressEnd:"longPressEnd"}),a["ɵdid"](4,49152,null,0,f.h,[a.ChangeDetectorRef],{sortType:[0,"sortType"],sortAscendingIcon:[1,"sortAscendingIcon"],sortDescendingIcon:[2,"sortDescendingIcon"],isTarget:[3,"isTarget"],targetMarkerTemplate:[4,"targetMarkerTemplate"],targetMarkerContext:[5,"targetMarkerContext"],allRowsSelected:[6,"allRowsSelected"],selectionType:[7,"selectionType"],column:[8,"column"],headerHeight:[9,"headerHeight"],sorts:[10,"sorts"]},{sort:"sort",select:"select",columnContextmenu:"columnContextmenu"})],(function(t,e){var n=e.component;t(e,1,0,n.dragEventTarget,e.context.$implicit,n.reorderable&&e.context.$implicit.draggable&&e.context.$implicit.dragging,!1),t(e,2,0,e.context.$implicit.resizeable),t(e,3,0,n.reorderable&&e.context.$implicit.draggable,e.context.$implicit),t(e,4,1,[n.sortType,n.sortAscendingIcon,n.sortDescendingIcon,e.context.$implicit.isTarget,n.targetMarkerTemplate,e.context.$implicit.targetMarkerContext,n.allRowsSelected,n.selectionType,e.context.$implicit,n.headerHeight,n.sorts])}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).resizeEnabled,a["ɵnov"](e,3).press,a["ɵnov"](e,3).isLongPress,a["ɵnov"](e,4).headerHeight,a["ɵnov"](e,4).columnCssClasses,a["ɵnov"](e,4).name,a["ɵnov"](e,4).minWidth,a["ɵnov"](e,4).maxWidth,a["ɵnov"](e,4).width)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._styleByGroup[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,"datatable-row-"+e.context.$implicit.type)}))}function x(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-header-inner"],["orderable",""]],[[4,"width","px"]],[[null,"reorder"],[null,"targetChanged"]],(function(t,e,n){var a=!0,r=t.component;return"reorder"===e&&(a=!1!==r.onColumnReordered(n)&&a),"targetChanged"===e&&(a=!1!==r.onTargetChanged(n)&&a),a}),null,null)),a["ɵdid"](1,1196032,null,1,f.v,[a.KeyValueDiffers,o.DOCUMENT],null,{reorder:"reorder",targetChanged:"targetChanged"}),a["ɵqud"](603979776,1,{draggables:1}),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](4,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,4,0,n._columnsByPin,n.trackByGroups)}),(function(t,e){t(e,0,0,e.component._columnGroupWidths.total)}))}var _=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function T(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.targetMarkerContext,n.targetMarkerTemplate)}),null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==r.select.emit(!r.allRowsSelected)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.allRowsSelected)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","datatable-header-cell-wrapper"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","datatable-header-cell-label draggable"]],[[8,"innerHTML",1]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.name)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.headerTemplate)}),null)}function C(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-header-cell-template-wrap"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](9,0,null,null,0,"span",[],[[8,"className",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],(function(t,e){var n=e.component;t(e,2,0,n.isTarget),t(e,4,0,n.isCheckboxable),t(e,6,0,!n.column.headerTemplate),t(e,8,0,n.column.headerTemplate)}),(function(t,e){t(e,9,0,e.component.sortClass)}))}var R=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-progress",[],null,null,null,rt,at)),a["ɵdid"](1,49152,null,0,f.w,[],null,null)],null,null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵdid"](1,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"treeAction"],[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0,i=t.component;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction(t.parent.context.$implicit)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent,2).onActivate(n,i.indexes.first+t.parent.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],isSelected:[5,"isSelected"],rowIndex:[6,"rowIndex"],displayCheck:[7,"displayCheck"],treeStatus:[8,"treeStatus"],offsetX:[9,"offsetX"],rowHeight:[10,"rowHeight"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,1,[n.columns,n.innerWidth,n.getRowExpanded(e.parent.context.$implicit),n.rowClass,e.parent.context.$implicit,a["ɵnov"](e.parent.parent.parent,2).getRowSelected(e.parent.context.$implicit),n.getRowIndex(e.parent.context.$implicit),n.displayCheck,e.parent.context.$implicit.treeStatus,n.offsetX,n.getRowHeight(e.parent.context.$implicit)])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent.parent,2).onActivate(n,t.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],group:[5,"group"],isSelected:[6,"isSelected"],rowIndex:[7,"rowIndex"],offsetX:[8,"offsetX"],rowHeight:[9,"rowHeight"]},{activate:"activate"})],(function(t,e){var n=e.component;t(e,1,0,n.columns,n.innerWidth,n.getRowExpanded(e.context.$implicit),n.rowClass,e.context.$implicit,e.parent.parent.context.$implicit.value,a["ɵnov"](e.parent.parent.parent.parent,2).getRowSelected(e.context.$implicit),n.getRowIndex(e.context.$implicit),n.offsetX,n.getRowHeight(e.context.$implicit))}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,L)),a["ɵdid"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.parent.context.$implicit.value,e.component.rowTrackingFn)}),null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"datatable-row-wrapper",[["class","datatable-row-wrapper"]],null,[[null,"rowContextmenu"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"contextmenu"===e&&(r=!1!==a["ɵnov"](t,3).onContextmenu(n)&&r),"rowContextmenu"===e&&(r=!1!==i.rowContextmenu.emit(n)&&r),r}),pt,ot)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,311296,null,0,f.k,[a.ChangeDetectorRef,a.KeyValueDiffers],{innerWidth:[0,"innerWidth"],rowDetail:[1,"rowDetail"],groupHeader:[2,"groupHeader"],offsetX:[3,"offsetX"],detailRowHeight:[4,"detailRowHeight"],row:[5,"row"],groupedRows:[6,"groupedRows"],rowIndex:[7,"rowIndex"],expanded:[8,"expanded"]},{rowContextmenu:"rowContextmenu"}),(t()(),a["ɵand"](16777216,null,0,1,null,E)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["groupedRowsTemplate",2]],0,0,null,D))],(function(t,e){var n=e.component;t(e,2,0,n.getRowsStyles(e.context.$implicit)),t(e,3,0,n.innerWidth,n.rowDetail,n.groupHeader,n.offsetX,n.getDetailRowHeight(e.context.$implicit[e.context.index],e.context.index),e.context.$implicit,n.groupedRows,n.getRowIndex(e.context.$implicit[e.context.index]),n.getRowExpanded(e.context.$implicit)),t(e,5,0,!n.groupedRows,a["ɵnov"](e,6))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getBottomSummaryRowStyles()),t(e,3,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"datatable-scroller",[["class","datatable-scroll"]],[[4,"height","px"],[4,"width","px"]],[[null,"scroll"]],(function(t,e,n){var a=!0;return"scroll"===e&&(a=!1!==t.component.onBodyScroll(n)&&a),a}),st,it)),a["ɵdid"](1,245760,[[1,4]],0,f.z,[a.NgZone,a.ElementRef,a.Renderer2],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],scrollHeight:[2,"scrollHeight"],scrollWidth:[3,"scrollWidth"]},{scroll:"scroll"}),(t()(),a["ɵand"](16777216,null,0,1,null,k)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,P)),a["ɵdid"](5,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,M)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.scrollbarV,n.scrollbarH,n.scrollHeight,null==n.columnGroupWidths?null:n.columnGroupWidths.total),t(e,3,0,n.summaryRow&&"top"===n.summaryPosition),t(e,5,0,n.temp,n.rowTrackingFn),t(e,7,0,n.summaryRow&&"bottom"===n.summaryPosition)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).scrollHeight,a["ɵnov"](e,1).scrollWidth)}))}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","empty-row"]],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.emptyMessage)}))}function F(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{scroller:0}),(t()(),a["ɵeld"](1,0,null,null,7,"datatable-selection",[],null,[[null,"select"],[null,"activate"]],(function(t,e,n){var a=!0,r=t.component;return"select"===e&&(a=!1!==r.select.emit(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),a}),mt,bt)),a["ɵdid"](2,49152,[["selector",4]],0,f.l,[],{rows:[0,"rows"],selected:[1,"selected"],selectEnabled:[2,"selectEnabled"],selectionType:[3,"selectionType"],rowIdentity:[4,"rowIdentity"],selectCheck:[5,"selectCheck"]},{activate:"activate",select:"select"}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,q)),a["ɵdid"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,j)),a["ɵdid"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rows,n.selected,n.selectEnabled,n.selectionType,n.rowIdentity,n.selectCheck),t(e,4,0,n.loadingIndicator),t(e,6,0,null==n.rows?null:n.rows.length),t(e,8,0,!(null!=n.rows&&n.rows.length||n.loadingIndicator))}),null)}var G=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCheckboxChange(n)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.isSelected)}))}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-collapse"]],null,null,null,null,null))],null,null)}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-up"]],null,null,null,null,null))],null,null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-down"]],null,null,null,null,null))],null,null)}function H(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"button",[["class","datatable-tree-button"]],[[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onTreeAction()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,z)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,B)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Y)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"loading"===n.treeStatus),t(e,5,0,"collapsed"===n.treeStatus),t(e,7,0,"expanded"===n.treeStatus||"disabled"===n.treeStatus)}),(function(t,e){t(e,0,0,"disabled"===e.component.treeStatus)}))}function U(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,U)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{cellContext:0}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.cellContext);t(e,1,0,a,n.column.treeToggleTemplate)}),null)}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,H)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.column.treeToggleTemplate),t(e,4,0,n.column.treeToggleTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[],[[8,"title",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.sanitizedValue,n.value)}))}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function J(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,[[1,3],["cellTemplate",2]],null,1,null,Z)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.cellTemplate)}),null)}function Q(t){return a["ɵvid"](2,[a["ɵqud"](402653184,1,{cellTemplate:0}),(t()(),a["ɵeld"](1,0,null,null,8,"div",[["class","datatable-body-cell-label"]],[[4,"margin-left","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,$)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,J)),a["ɵdid"](9,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.column.checkboxable&&(!n.displayCheck||n.displayCheck(n.row,n.column,n.value))),t(e,5,0,n.column.isTreeColumn),t(e,7,0,!n.column.cellTemplate),t(e,9,0,n.column.cellTemplate)}),(function(t,e){var n=e.component;t(e,1,0,n.calcLeftMargin(n.column,n.row))}))}var X=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-cell",[["tabindex","-1"]],[[8,"className",0],[4,"width","px"],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"height",null]],[[null,"activate"],[null,"treeAction"],[null,"focus"],[null,"blur"],[null,"click"],[null,"dblclick"],[null,"keydown"]],(function(t,e,n){var r=!0,i=t.component;return"focus"===e&&(r=!1!==a["ɵnov"](t,1).onFocus()&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onBlur()&&r),"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n)&&r),"dblclick"===e&&(r=!1!==a["ɵnov"](t,1).onDblClick(n)&&r),"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"activate"===e&&(r=!1!==i.onActivate(n,t.context.index)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction()&&r),r}),Q,G)),a["ɵdid"](1,442368,null,0,f.b,[a.ElementRef,a.ChangeDetectorRef],{displayCheck:[0,"displayCheck"],group:[1,"group"],rowHeight:[2,"rowHeight"],isSelected:[3,"isSelected"],expanded:[4,"expanded"],rowIndex:[5,"rowIndex"],column:[6,"column"],row:[7,"row"],treeStatus:[8,"treeStatus"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,0,n.displayCheck,n.group,n.rowHeight,n.isSelected,n.expanded,n.rowIndex,e.context.$implicit,n.row,n.treeStatus)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).columnCssClasses,a["ɵnov"](e,1).width,a["ɵnov"](e,1).minWidth,a["ɵnov"](e,1).maxWidth,a["ɵnov"](e,1).height)}))}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](4,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._groupStyles[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"datatable-row-",e.context.$implicit.type," datatable-row-group"))}))}function nt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,et)),a["ɵdid"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._columnsByPin,n.trackByGroups)}),null)}var at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","progress-linear"],["role","progressbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","container"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"div",[["class","bar"]],null,null,null,null,null))],null,null)}var it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var ot=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ut(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function dt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.groupContext,n.groupHeader.template)}),null)}function lt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-group-header"]],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,dt)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getGroupHeaderStyle()),t(e,4,0,n.groupHeader&&n.groupHeader.template)}),null)}function ct(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function ft(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.rowContext,n.rowDetail.template)}),null)}function gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","datatable-row-detail"]],[[4,"height","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rowDetail&&n.rowDetail.template)}),(function(t,e){t(e,0,0,e.component.detailRowHeight)}))}function pt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,lt)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ct)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,gt)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.groupHeader&&n.groupHeader.template),t(e,3,0,n.groupHeader&&n.groupHeader.template&&n.expanded||!n.groupHeader||!n.groupHeader.template),t(e,5,0,n.rowDetail&&n.rowDetail.template&&n.expanded)}),null)}var bt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function mt(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var yt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],row:[2,"row"],rowIndex:[3,"rowIndex"],offsetX:[4,"offsetX"],rowHeight:[5,"rowHeight"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._internalColumns,n.innerWidth,n.summaryRow,-1,n.offsetX,n.rowHeight)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function xt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,vt)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.summaryRow&&n._internalColumns)}),null)}var _t=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Tt)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{rowCount:0,pageSize:1,selectedCount:2,curPage:3,offset:4}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.rowCount,n.pageSize,n.selectedCount,n.curPage,n.offset);t(e,1,0,a,n.footerTemplate.template)}),null)}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "," / "]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.selectedCount?null:n.selectedCount.toLocaleString(),n.selectedMessage)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](3,null,[" "," "," "]))],(function(t,e){t(e,2,0,e.component.selectedMessage)}),(function(t,e){var n=e.component;t(e,3,0,null==n.rowCount?null:n.rowCount.toLocaleString(),n.totalMessage)}))}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.page.emit(n)&&a),a}),At,Ct)),a["ɵdid"](1,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,1,0,n.pagerLeftArrowIcon,n.pagerRightArrowIcon,n.pagerPreviousIcon,n.pagerNextIcon,n.pageSize,n.rowCount,n.curPage)}),(function(t,e){t(e,0,0,!e.component.isVisible)}))}function Nt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-footer-inner"]],[[4,"height","px"]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"selected-count":0}),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,It)),a["ɵdid"](9,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,n.selectedMessage);t(e,2,0,"datatable-footer-inner",a),t(e,5,0,n.footerTemplate),t(e,7,0,!n.footerTemplate),t(e,9,0,!n.footerTemplate)}),(function(t,e){t(e,0,0,e.component.footerHeight)}))}var Ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["class","pages"],["role","button"]],[[1,"aria-label",0],[2,"active",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["href","javascript:void(0)"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(t.context.$implicit.number)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,[" "," "]))],null,(function(t,e){t(e,0,0,"page "+e.context.$implicit.number,e.context.$implicit.number===e.component.page),t(e,2,0,e.context.$implicit.text)}))}function At(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,14,"ul",[["class","pager"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"a",[["aria-label","go to first page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(1)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"a",[["aria-label","go to previous page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.prevPage()&&a),a}),null,null)),(t()(),a["ɵeld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](8,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](9,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](10,0,null,null,1,"a",[["aria-label","go to next page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.nextPage()&&a),a}),null,null)),(t()(),a["ɵeld"](11,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](12,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](13,0,null,null,1,"a",[["aria-label","go to last page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectPage(r.totalPages)&&a),a}),null,null)),(t()(),a["ɵeld"](14,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){t(e,8,0,e.component.pages)}),(function(t,e){var n=e.component;t(e,1,0,!n.canPrevious()),t(e,3,0,a["ɵinlineInterpolate"](1,"",n.pagerPreviousIcon,"")),t(e,4,0,!n.canPrevious()),t(e,6,0,a["ɵinlineInterpolate"](1,"",n.pagerLeftArrowIcon,"")),t(e,9,0,!n.canNext()),t(e,11,0,a["ɵinlineInterpolate"](1,"",n.pagerRightArrowIcon,"")),t(e,12,0,!n.canNext()),t(e,14,0,a["ɵinlineInterpolate"](1,"",n.pagerNextIcon,""))}))}var kt=n("JxMD"),Et=n("dgut"),Lt=n("Fgil"),Dt=n("iInd"),Pt=n("4DD9"),Mt=n("yT6U"),qt=n("TJUb"),jt=n("efK2");n("uIqm"),n.d(e,"a",(function(){return Ft})),n.d(e,"b",(function(){return Oe}));var Ft=a["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.dataTables_wrapper[_ngcontent-%COMP%]{margin-bottom:25px}.dataTables_wrapper[_ngcontent-%COMP%]   .separator[_ngcontent-%COMP%]{height:30px;border-left:1px solid rgba(0,0,0,.09);padding-left:5px;margin-left:5px;display:inline-block;vertical-align:middle}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding:0 8px}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-left:0}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]{white-space:nowrap}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{cursor:default}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{width:100%;margin-bottom:0;padding-left:0;padding-right:0;cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dataTables_length[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{line-height:25px;text-align:right}.dataTables_header[_ngcontent-%COMP%]{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative}.dataTables_header[_ngcontent-%COMP%]   .cd-datatable-actions[_ngcontent-%COMP%]{float:left}.dataTables_header[_ngcontent-%COMP%]     .table-filters{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px}.dataTables_header[_ngcontent-%COMP%]     .table-filters label{margin-right:4px}.dataTables_header[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]{padding-left:8px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px;padding-right:8px;width:40%;max-width:250px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{width:8%;min-width:85px;padding-right:8px}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]{float:right;padding:0 8px}  .cd-datatable{border:1px solid #d1d1d1;margin-bottom:0;max-width:none!important}  .cd-datatable .progress-linear{display:block;position:relative;width:100%;height:5px;padding:0;margin:0}  .cd-datatable .progress-linear .container{background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar{left:0;height:100%;width:100%;position:absolute;overflow:hidden;background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar:before{display:block;position:absolute;content:"";left:-200px;width:200px;height:100%;background-color:#2b99a8;animation:3s linear infinite progress-loading}  .cd-datatable .datatable-header{background-clip:padding-box;background-color:#f5f5f5;background-image:linear-gradient(to bottom,#f5f5f5 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffafafa", endColorstr="#ffededed", GradientType=0)}  .cd-datatable .datatable-header .sort-asc,   .cd-datatable .datatable-header .sort-desc{color:#2b99a8}  .cd-datatable .datatable-header .datatable-header-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;text-align:left;font-weight:700}  .cd-datatable .datatable-header .datatable-header-cell .datatable-header-cell-label:after{font-family:ForkAwesome;font-weight:400;height:9px;left:10px;line-height:12px;position:relative;vertical-align:baseline;width:12px}  .cd-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell:first-child{border-left:none}  .cd-datatable .datatable-body{margin-bottom:-6px}  .cd-datatable .datatable-body .empty-row{background-color:#fff3cd;text-align:center;font-weight:700;font-style:italic;padding-top:5px;padding-bottom:5px}  .cd-datatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#eee;transition-property:background;transition-duration:.3s;transition-timing-function:linear}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f5f5f5}  .cd-datatable .datatable-body .datatable-body-row.active,   .cd-datatable .datatable-body .datatable-body-row.active:hover{background-color:#d1ecf1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:none}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block;height:100%}  .cd-datatable .datatable-body .datatable-row-detail{padding:20px;border-bottom:2px solid #d1d1d1}  .cd-datatable .datatable-body .expand-collapse-icon{display:block;height:100%;text-align:center}  .cd-datatable .datatable-body .expand-collapse-icon:hover{text-decoration:none}  .cd-datatable .datatable-body .expand-collapse-icon-right:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-body .expand-collapse-icon-down:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-footer .page-count,   .cd-datatable .datatable-footer .selected-count{font-style:italic;padding-left:5px}  .cd-datatable .cd-datatable-checkbox{text-align:center}@keyframes progress-loading{from{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}']],data:{}});function Gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Failed to load data."]))],(function(t,e){t(e,1,0,"error")}),null)}function Vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onSelectFilter(t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.column.name)}))}function Bt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,zt)),a["ɵdid"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columnFilters)}),null)}function Yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function Ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(r.onChangeFilter(r.selectedFilter,t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,[""," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Yt)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,void 0!==n.selectedFilter.value&&n.selectedFilter.value.raw===e.context.$implicit.raw)}),(function(t,e){t(e,2,0,e.context.$implicit.formatted)}))}function Ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ht)),a["ɵdid"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.selectedFilter.options)}),null)}function Wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,20,"div",[["class","btn-group widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,16777216,null,null,11,"div",[["class","btn-group tc_filter_name"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,u.f,u.f,[]),a["ɵdid"](3,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,d.a,u.f,u.a,l.b],null,null),(t()(),a["ɵeld"](4,0,null,null,6,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),r}),null,null)),a["ɵdid"](5,147456,null,0,u.g,[a.ChangeDetectorRef,u.c,a.ElementRef,a.Renderer2,u.f],null,null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,2),(t()(),a["ɵted"](10,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Bt)),a["ɵdid"](12,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵeld"](13,16777216,null,null,7,"div",[["class","btn-group tc_filter_option"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,u.f,u.f,[]),a["ɵdid"](15,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,d.a,u.f,u.a,l.b],null,null),(t()(),a["ɵeld"](16,0,null,null,2,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[2,"disabled",null],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,17).onClick()&&r),r}),null,null)),a["ɵdid"](17,147456,null,0,u.g,[a.ChangeDetectorRef,u.c,a.ElementRef,a.Renderer2,u.f],null,null),(t()(),a["ɵted"](18,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Ut)),a["ɵdid"](20,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,3,0);var a=t(e,9,0,n.icons.large,n.icons.filter);t(e,8,0,a),t(e,15,0)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵnov"](e,3).dropup,a["ɵnov"](e,3).isOpen,a["ɵnov"](e,3).isOpen&&a["ɵnov"](e,3).isBs4),t(e,4,0,!0,a["ɵnov"](e,5).isDisabled,a["ɵnov"](e,5).isOpen),t(e,10,0,n.selectedFilter.column.name),t(e,13,0,a["ɵnov"](e,15).dropup,a["ɵnov"](e,15).isOpen,a["ɵnov"](e,15).isOpen&&a["ɵnov"](e,15).isBs4),t(e,16,0,0===n.selectedFilter.options.length,!0,a["ɵnov"](e,17).isDisabled,a["ɵnov"](e,17).isOpen),t(e,18,0,n.selectedFilter.value?n.selectedFilter.value.formatted:"Any")}))}function Kt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","input-group search"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"span",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,1),(t()(),a["ɵeld"](7,0,null,null,5,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.search=n)&&r),"keyup"===e&&(r=!1!==i.updateFilter()&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,c.e,[a.Renderer2,a.ElementRef,[2,c.b]],null,null),a["ɵprd"](1024,null,c.p,(function(t){return[t]}),[c.e]),a["ɵdid"](10,671744,null,0,c.u,[[8,null],[8,null],[8,null],[6,c.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,c.q,null,[c.u]),a["ɵdid"](12,16384,null,0,c.r,[[4,c.q]],null,null),(t()(),a["ɵeld"](13,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),a["ɵeld"](14,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onClearSearch()&&a),a}),null,null)),(t()(),a["ɵeld"](15,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){var n=e.component,a=t(e,6,0,n.icons.search);t(e,5,0,a),t(e,10,0,n.search)}),(function(t,e){var n=e.component;t(e,7,0,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending),t(e,15,0,a["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,""))}))}function $t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"name",0],[8,"id",0],[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.toggleColumn(n)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["ɵted"](4,null,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.prop,e.parent.context.$implicit.prop,!e.parent.context.$implicit.isHidden),t(e,3,0,e.parent.context.$implicit.prop),t(e,4,0,e.parent.context.$implicit.name)}))}function Zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,$t)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,""!==e.context.$implicit.name)}),null)}function Jt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu px-3"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Zt)),a["ɵdid"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columns)}),null)}function Qt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","widget-toolbar tc_refreshBtn"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshBtn()&&a),a}),null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,2)],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.large,n.icons.refresh);t(e,4,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.updating||n.loadingIndicator)}))}function Xt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,23,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,1),a["ɵncd"](null,2),(t()(),a["ɵand"](16777216,null,null,1,null,Wt)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Kt)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](8,0,null,null,1,"div",[["class","input-group dataTables_paginate"]],null,null,null,null,null)),(t()(),a["ɵeld"](9,0,null,null,0,"input",[["class","form-control"],["max","9999"],["min","1"],["type","number"]],[[8,"value",0]],[[null,"click"],[null,"keyup"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.setLimit(n)&&a),"keyup"===e&&(a=!1!==r.setLimit(n)&&a),"blur"===e&&(a=!1!==r.setLimit(n)&&a),a}),null,null)),(t()(),a["ɵeld"](10,0,null,null,11,"div",[["class","widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](11,16777216,null,null,10,"div",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,u.f,u.f,[]),a["ɵdid"](13,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,d.a,u.f,u.a,l.b],{autoClose:[0,"autoClose"]},null),(t()(),a["ɵeld"](14,0,null,null,5,"a",[["class","btn btn-light dropdown-toggle tc_columnBtn"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,15).onClick()&&r),r}),null,null)),a["ɵdid"](15,147456,null,0,u.g,[a.ChangeDetectorRef,u.c,a.ElementRef,a.Renderer2,u.f],null,null),(t()(),a["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](18,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](19,2),(t()(),a["ɵand"](16777216,null,null,1,null,Jt)),a["ɵdid"](21,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,Qt)),a["ɵdid"](23,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,0!==n.columnFilters.length),t(e,7,0,n.searchField),t(e,13,0,!1);var a=t(e,19,0,n.icons.large,n.icons.table);t(e,18,0,a),t(e,23,0,n.fetchData.observers.length>0)}),(function(t,e){t(e,9,0,e.component.userConfig.limit),t(e,11,0,a["ɵnov"](e,13).dropup,a["ɵnov"](e,13).isOpen,a["ɵnov"](e,13).isOpen&&a["ɵnov"](e,13).isBs4),t(e,14,0,!0,a["ɵnov"](e,15).isDisabled,a["ɵnov"](e,15).isOpen)}))}function te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"span",[["class","badge badge-info mr-2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",": ",""])),(t()(),a["ɵeld"](3,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onChangeFilter(t.parent.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](6,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](7,1)],(function(t,e){var n=t(e,7,0,e.component.icons.destroy);t(e,6,0,n)}),(function(t,e){t(e,2,0,e.parent.context.$implicit.column.name,e.parent.context.$implicit.value.formatted)}))}function ee(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,te)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.value)}),null)}function ne(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","filter-chips"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ee)),a["ɵdid"](3,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](4,0,null,null,2,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onClearFilters(),a=!1),a}),null,null)),(t()(),a["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Clear filters"]))],(function(t,e){t(e,3,0,e.component.columnFilters)}),null)}function ae(t){return a["ɵvid"](0,[a["ɵncd"](null,3),(t()(),a["ɵand"](0,null,null,0))],null,null)}function re(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["selected"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.selectedCount)}))}function ie(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["found"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.rowCount)}))}function se(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,re)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ie)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" "," "])),(t()(),a["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["total"])),(t()(),a["ɵeld"](9,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t.parent,26).onFooterPage(n)&&r),r}),At,Ct)),a["ɵdid"](10,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,2,0,n.selectionType),t(e,4,0,e.context.rowCount!=(null==n.data?null:n.data.length)),t(e,10,0,n.paginationClasses.pagerLeftArrow,n.paginationClasses.pagerRightArrow,n.paginationClasses.pagerPrevious,n.paginationClasses.pagerNext,e.context.pageSize,e.context.rowCount,e.context.curPage)}),(function(t,e){var n=e.component;t(e,6,0,(null==n.data?null:n.data.length)||0),t(e,9,0,!(e.context.rowCount/e.context.pageSize>1))}))}function oe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function ue(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-sparkline",[],null,null,null,kt.b,kt.a)),a["ɵdid"](1,638976,null,0,Et.a,[Lt.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],(function(t,e){t(e,1,0,e.context.value,e.context.row.cdIsBinary)}),null)}function de(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r}),null,null)),a["ɵdid"](1,671744,null,0,Dt.p,[Dt.m,Dt.a,o.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),a["ɵpad"](2,1),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){var n=e.context.row.cdParams,a=t(e,2,0,e.context.row.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).target,a["ɵnov"](e,1).href),t(e,3,0,e.context.value)}))}function le(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"i",[],[[8,"hidden",0]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1),a["ɵppd"](4,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),(function(t,e){var n=!a["ɵunv"](e,0,0,t(e,4,0,a["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n)}))}function ce(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," /s\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function fe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function he(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","text-muted italic"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["(",")"]))],null,(function(t,e){t(e,1,0,e.parent.context.row.cdExecuting)}))}function ge(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,fe)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,he)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.row.cdExecuting),t(e,4,0,e.context.row.cdExecuting)}),(function(t,e){t(e,2,0,e.context.value)}))}function pe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"",e.component.useCustomClass(e.context.value),"")),t(e,1,0,e.context.value)}))}function be(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.class?e.parent.parent.context.column.customTemplateConfig.class:"badge-primary")}),(function(t,e){t(e,3,0,null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.prefix?e.parent.parent.context.column.customTemplateConfig.prefix+e.parent.context.$implicit:e.parent.context.$implicit)}))}function me(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" "]))],null,null)}function ye(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,be)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,me)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.map&&null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&null!=e.parent.context.column.customTemplateConfig.map[e.context.$implicit]&&e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value?e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value:null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.prefix?e.parent.context.column.customTemplateConfig.prefix+e.context.$implicit:e.context.$implicit),t(e,4,0,!e.context.last)}),null)}function ve(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,ye)),a["ɵdid"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵppd"](2,1),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,1),e.context.value));t(e,1,0,n)}),null)}function xe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,2)],null,(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,2),e.context.value,null==e.context.column?null:e.context.column.customTemplateConfig));t(e,1,0,n)}))}function _e(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[["data-toggle","tooltip"]],[[8,"title",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,3)],null,(function(t,e){t(e,0,0,e.context.value);var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,3),e.context.value,null==e.context.column?null:null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.length,null==e.context.column?null:null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.omission));t(e,1,0,n)}))}function Te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"a",[["class","expand-collapse-icon tc_expand-collapse"],["href","javascript:void(0)"],["title","Expand/Collapse Row"]],[[2,"expand-collapse-icon-right",null],[2,"expand-collapse-icon-down",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleExpandRow(t.context.row,t.context.expanded)&&a),a}),null,null))],null,(function(t,e){t(e,0,0,!e.context.expanded,e.context.expanded)}))}function Oe(t){return a["ɵvid"](2,[a["ɵpid"](0,Pt.a,[]),a["ɵpid"](0,Mt.a,[]),a["ɵpid"](0,qt.a,[]),a["ɵpid"](0,jt.a,[]),a["ɵqud"](402653184,1,{table:0}),a["ɵqud"](402653184,2,{tableCellBoldTpl:0}),a["ɵqud"](402653184,3,{sparklineTpl:0}),a["ɵqud"](402653184,4,{routerLinkTpl:0}),a["ɵqud"](402653184,5,{checkIconTpl:0}),a["ɵqud"](402653184,6,{perSecondTpl:0}),a["ɵqud"](402653184,7,{executingTpl:0}),a["ɵqud"](402653184,8,{classAddingTpl:0}),a["ɵqud"](402653184,9,{badgeTpl:0}),a["ɵqud"](402653184,10,{mapTpl:0}),a["ɵqud"](402653184,11,{truncateTpl:0}),a["ɵqud"](402653184,12,{rowDetailsTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,Gt)),a["ɵdid"](17,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](18,0,null,null,22,"div",[["class","dataTables_wrapper"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Vt)),a["ɵdid"](20,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Xt)),a["ɵdid"](22,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ne)),a["ɵdid"](24,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](25,0,null,null,15,"ngx-datatable",[["class","bootstrap cd-datatable ngx-datatable"]],[[2,"fixed-header",null],[2,"fixed-row",null],[2,"scroll-vertical",null],[2,"virtualized",null],[2,"scroll-horz",null],[2,"selectable",null],[2,"checkbox-selection",null],[2,"cell-selection",null],[2,"single-selection",null],[2,"multi-selection",null],[2,"multi-click-selection",null]],[[null,"select"],[null,"sort"],["window","resize"]],(function(t,e,n){var r=!0,i=t.component;return"window:resize"===e&&(r=!1!==a["ɵnov"](t,26).onWindowResize()&&r),"select"===e&&(r=!1!==i.onSelect(n)&&r),"sort"===e&&(r=!1!==i.changeSorting(n)&&r),r}),b,h)),a["ɵdid"](26,5750784,[[1,4],["table",4]],4,f.n,[[1,f.y],[1,f.r],a.ChangeDetectorRef,a.ElementRef,a.KeyValueDiffers,f.a,[2,"configuration"]],{rows:[0,"rows"],columns:[1,"columns"],selected:[2,"selected"],rowHeight:[3,"rowHeight"],columnMode:[4,"columnMode"],headerHeight:[5,"headerHeight"],footerHeight:[6,"footerHeight"],limit:[7,"limit"],loadingIndicator:[8,"loadingIndicator"],selectionType:[9,"selectionType"],sorts:[10,"sorts"],cssClasses:[11,"cssClasses"],rowClass:[12,"rowClass"],rowIdentity:[13,"rowIdentity"]},{select:"select",sort:"sort"}),a["ɵqud"](603979776,13,{columnTemplates:1}),a["ɵqud"](603979776,14,{rowDetail:0}),a["ɵqud"](603979776,15,{groupHeader:0}),a["ɵqud"](603979776,16,{footer:0}),(t()(),a["ɵeld"](31,0,[["detailRow",1]],null,4,"ngx-datatable-row-detail",[["rowHeight","auto"]],null,null,null,null,null)),a["ɵdid"](32,16384,[[14,4]],1,f.p,[],{rowHeight:[0,"rowHeight"]},null),a["ɵqud"](335544320,17,{_templateQuery:0}),(t()(),a["ɵand"](0,[[17,2]],null,1,null,ae)),a["ɵdid"](35,16384,null,0,f.q,[a.TemplateRef],null,null),(t()(),a["ɵeld"](36,0,null,null,4,"ngx-datatable-footer",[],null,null,null,null,null)),a["ɵdid"](37,16384,[[16,4]],1,f.o,[],null,null),a["ɵqud"](603979776,18,{_templateQuery:0}),(t()(),a["ɵand"](0,[[18,2]],null,1,null,se)),a["ɵdid"](40,16384,null,0,f.g,[a.TemplateRef],null,null),(t()(),a["ɵand"](0,[[2,2],["tableCellBoldTpl",2]],null,0,null,oe)),(t()(),a["ɵand"](0,[[3,2],["sparklineTpl",2]],null,0,null,ue)),(t()(),a["ɵand"](0,[[4,2],["routerLinkTpl",2]],null,0,null,de)),(t()(),a["ɵand"](0,[[5,2],["checkIconTpl",2]],null,0,null,le)),(t()(),a["ɵand"](0,[[6,2],["perSecondTpl",2]],null,0,null,ce)),(t()(),a["ɵand"](0,[[7,2],["executingTpl",2]],null,0,null,ge)),(t()(),a["ɵand"](0,[[8,2],["classAddingTpl",2]],null,0,null,pe)),(t()(),a["ɵand"](0,[[9,2],["badgeTpl",2]],null,0,null,ve)),(t()(),a["ɵand"](0,[[10,2],["mapTpl",2]],null,0,null,xe)),(t()(),a["ɵand"](0,[[11,2],["truncateTpl",2]],null,0,null,_e)),(t()(),a["ɵand"](0,[[12,2],["rowDetailsTpl",2]],null,1,null,Te)),a["ɵdid"](52,16384,null,0,f.e,[a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,17,0,n.loadingError),t(e,20,0,n.onlyActionHeader),t(e,22,0,n.toolHeader),t(e,24,0,n.toolHeader&&n.columnFiltered),t(e,26,1,[n.rows,n.tableColumns,n.selection.selected,"auto",n.columnMode,n.header?"auto":0,n.footer?"auto":0,n.userConfig.limit>0?n.userConfig.limit:void 0,n.loadingIndicator,n.selectionType,n.userConfig.sorts,n.paginationClasses,n.getRowClass(),n.rowIdentity()]),t(e,32,0,"auto")}),(function(t,e){t(e,25,1,[a["ɵnov"](e,26).isFixedHeader,a["ɵnov"](e,26).isFixedRow,a["ɵnov"](e,26).isVertScroll,a["ɵnov"](e,26).isVirtualized,a["ɵnov"](e,26).isHorScroll,a["ɵnov"](e,26).isSelectable,a["ɵnov"](e,26).isCheckboxSelection,a["ɵnov"](e,26).isCellSelection,a["ɵnov"](e,26).isSingleSelection,a["ɵnov"](e,26).isMultiSelection,a["ɵnov"](e,26).isMultiClickSelection])}))}},"2EZI":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("s7LF"),r=n("QFaf"),i=n("8Y7J");let s=(()=>{class t extends a.h{group(t,e=null){const n=super.group(t,e);return new r.a(n.controls,n.validator,n.asyncValidator)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},"2QA8":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random())()},"2Vo4":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("XNiG"),r=n("9ppp");class i extends a.a{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const e=super._subscribe(t);return e&&!e.closed&&t.next(this._value),e}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new r.a;return this._value}next(t){super.next(this._value=t)}}},"2ZVE":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return u})),n.d(e,"d",(function(){return d})),n.d(e,"e",(function(){return s})),n.d(e,"f",(function(){return i}));var a=n("8Y7J");class r{constructor(t){this.viewRef=t}set ngTransclude(t){this._ngTransclude=t,t&&this.viewRef.createEmbeddedView(t)}get ngTransclude(){return this._ngTransclude}}class i{constructor(){this.type="tabs",this.ariaLabel="Tabs"}}class s{constructor(t,e,n){this.renderer=e,this.elementRef=n,this.clazz=!0,this.tabs=[],this.classMap={},Object.assign(this,t)}get vertical(){return this._vertical}set vertical(t){this._vertical=t,this.setClassMap()}get justified(){return this._justified}set justified(t){this._justified=t,this.setClassMap()}get type(){return this._type}set type(t){this._type=t,this.setClassMap()}ngOnDestroy(){this.isDestroyed=!0}addTab(t){this.tabs.push(t),t.active=1===this.tabs.length&&void 0===t.active}removeTab(t,e={reselect:!0,emit:!0}){const n=this.tabs.indexOf(t);if(-1!==n&&!this.isDestroyed){if(e.reselect&&t.active&&this.hasAvailableTabs(n)){const t=this.getClosestTabIndex(n);this.tabs[t].active=!0}e.emit&&t.removed.emit(t),this.tabs.splice(n,1),t.elementRef.nativeElement.parentNode&&this.renderer.removeChild(t.elementRef.nativeElement.parentNode,t.elementRef.nativeElement)}}keyNavActions(t,e){const n=Array.from(this.elementRef.nativeElement.querySelectorAll(".nav-link"));if(13===t.keyCode||"Enter"===t.key||32===t.keyCode||"Space"===t.key)return t.preventDefault(),void n[e%n.length].click();if(39!==t.keyCode&&"RightArrow"!==t.key)if(37!==t.keyCode&&"LeftArrow"!==t.key)if(36!==t.keyCode&&"Home"!==t.key)if(35!==t.keyCode&&"End"!==t.key){if((46===t.keyCode||"Delete"===t.key)&&this.tabs[e].removable){if(this.removeTab(this.tabs[e]),n[e+1])return void n[(e+1)%n.length].focus();n[n.length-1]&&n[0].focus()}}else{let a;t.preventDefault();let r=1,i=e;do{i-r<0?(i=n.length-1,a=n[i],r=0):a=n[i-r],r++}while(a.classList.contains("disabled"));a.focus()}else{let e;t.preventDefault();let a=0;do{e=n[a%n.length],a++}while(e.classList.contains("disabled"));e.focus()}else{let t,a=1,r=e;do{r-a<0?(r=n.length-1,t=n[r],a=0):t=n[r-a],a++}while(t.classList.contains("disabled"));t.focus()}else{let t,a=1;do{t=n[(e+a)%n.length],a++}while(t.classList.contains("disabled"));t.focus()}}getClosestTabIndex(t){const e=this.tabs.length;if(!e)return-1;for(let n=1;n<=e;n+=1){const e=t-n,a=t+n;if(this.tabs[e]&&!this.tabs[e].disabled)return e;if(this.tabs[a]&&!this.tabs[a].disabled)return a}return-1}hasAvailableTabs(t){const e=this.tabs.length;if(!e)return!1;for(let n=0;n<e;n+=1)if(!this.tabs[n].disabled&&n!==t)return!0;return!1}setClassMap(){this.classMap={"nav-stacked":this.vertical,"flex-column":this.vertical,"nav-justified":this.justified,[`nav-${this.type}`]:!0}}}class o{constructor(t,e,n){this.elementRef=e,this.renderer=n,this.selectTab=new a.EventEmitter,this.deselect=new a.EventEmitter,this.removed=new a.EventEmitter,this.addClass=!0,this.role="tabpanel",this.tabset=t,this.tabset.addTab(this)}get customClass(){return this._customClass}set customClass(t){this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.removeClass(this.elementRef.nativeElement,t)}),this._customClass=t?t.trim():null,this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.addClass(this.elementRef.nativeElement,t)})}get active(){return this._active}set active(t){this._active!==t&&(this.disabled&&t||!t?this._active&&!t&&(this.deselect.emit(this),this._active=t):(this._active=t,this.selectTab.emit(this),this.tabset.tabs.forEach(t=>{t!==this&&(t.active=!1)})))}get ariaLabelledby(){return this.id?`${this.id}-link`:""}ngOnInit(){this.removable=this.removable}ngOnDestroy(){this.tabset.removeTab(this,{reselect:!1,emit:!1})}}class u{constructor(t,e){e.headingRef=t}}class d{static forRoot(){return{ngModule:d,providers:[i]}}}},"2ajD":function(t,e){t.exports=function(t){return t!=t}},"2fFW":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));let a=!1;const r={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){if(t){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else a&&console.log("RxJS: Back to a better error behavior. Thank you. <3");a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},"2fjn":function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}}})}(n("wd/R"))},"2gN3":function(t,e,n){var a=n("Kz5y");t.exports=a["__core-js_shared__"]},"2oRo":function(t,e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof global&&global)||Function("return this")()},"2uy1":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("XNiG"),s=n("VRyK"),o=n("xgIS"),u=n("LRne"),d=n("3N8a");class l extends d.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}requestAsyncId(t,e,n=0){return null!==n&&n>0?super.requestAsyncId(t,e,n):(t.actions.push(this),t.scheduled||(t.scheduled=requestAnimationFrame(()=>t.flush(null))))}recycleAsyncId(t,e,n=0){if(null!==n&&n>0||null===n&&this.delay>0)return super.recycleAsyncId(t,e,n);0===t.actions.length&&(cancelAnimationFrame(e),t.scheduled=void 0)}}var c=n("IjjT");class f extends c.a{flush(t){this.active=!0,this.scheduled=void 0;const{actions:e}=this;let n,a=-1,r=e.length;t=t||e.shift();do{if(n=t.execute(t.state,t.delay))break}while(++a<r&&(t=e.shift()));if(this.active=!1,n){for(;++a<r&&(t=e.shift());)t.unsubscribe();throw n}}}const h=new f(l);function g(t,e){if(1!==t.nodeType)return[];const n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function p(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function b(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}const{overflow:e,overflowX:n,overflowY:a}=g(t);return/(auto|scroll|overlay)/.test(String(e)+String(a)+String(n))?t:b(p(t))}n.d(e,"a",(function(){return U}));const m="undefined"!=typeof window&&"undefined"!=typeof document,y=m&&!(!window.MSInputMethodContext||!document.documentMode),v=m&&!(!window.MSInputMethodContext||!/MSIE 10/.test(navigator.userAgent));function x(t){return 11===t?y:10===t?v:y||v}function _(t){if(!t)return document.documentElement;const e=x(10)?document.body:null;let n,a=t.offsetParent||null;for(;a===e&&t.nextElementSibling&&n!==t.nextElementSibling;)n=t.nextElementSibling,a=n.offsetParent;const r=a&&a.nodeName;return r&&"BODY"!==r&&"HTML"!==r?-1!==["TH","TD","TABLE"].indexOf(a.nodeName)&&"static"===g(a,"position")?_(a):a:n?n.ownerDocument.documentElement:document.documentElement}function T(t){return null!==t.parentNode?T(t.parentNode):t}function O(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;const n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,a=n?t:e,r=n?e:t,i=document.createRange();i.setStart(a,0),i.setEnd(r,0);const{commonAncestorContainer:s}=i;if(t!==s&&e!==s||a.contains(r))return function(t){const{nodeName:e}=t;return"BODY"!==e&&("HTML"===e||_(t.firstElementChild)===t)}(s)?s:_(s);const o=T(t);return o.host?O(o.host,e):O(t,T(e).host)}function w(t,e){const n="x"===e?"Left":"Top",a="Left"===n?"Right":"Bottom";return parseFloat(t[`border${n}Width`])+parseFloat(t[`border${a}Width`])}function S(t,e,n,a){return Math.max(e[`offset${t}`],e[`scroll${t}`],n[`client${t}`],n[`offset${t}`],n[`scroll${t}`],x(10)?parseInt(n[`offset${t}`],10)+parseInt(a[`margin${"Height"===t?"Top":"Left"}`],10)+parseInt(a[`margin${"Height"===t?"Bottom":"Right"}`],10):0)}function I(t){const e=t.body,n=t.documentElement,a=x(10)&&getComputedStyle(n);return{height:S("Height",e,n,a),width:S("Width",e,n,a)}}function N(t,e="top"){const n="top"===e?"scrollTop":"scrollLeft",a=t.nodeName;if("BODY"===a||"HTML"===a){const e=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||e)[n]}return t[n]}function C(t){return Object.assign({},t,{right:t.left+t.width,bottom:t.top+t.height})}function R(t){let e={};try{if(x(10)){e=t.getBoundingClientRect();const n=N(t,"top"),a=N(t,"left");e.top+=n,e.left+=a,e.bottom+=n,e.right+=a}else e=t.getBoundingClientRect()}catch(s){return}const n={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},a="HTML"===t.nodeName?I(t.ownerDocument):{};let r=t.offsetWidth-(a.width||t.clientWidth||n.right-n.left),i=t.offsetHeight-(a.height||t.clientHeight||n.bottom-n.top);if(r||i){const e=g(t);r-=w(e,"x"),i-=w(e,"y"),n.width-=r,n.height-=i}return C(n)}function A(t,e,n=!1){const a=x(10),r="HTML"===e.nodeName,i=R(t),s=R(e),o=b(t),u=g(e),d=parseFloat(u.borderTopWidth),l=parseFloat(u.borderLeftWidth);n&&r&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));let c=C({top:i.top-s.top-d,left:i.left-s.left-l,width:i.width,height:i.height});if(c.marginTop=0,c.marginLeft=0,!a&&r){const t=parseFloat(u.marginTop),e=parseFloat(u.marginLeft);c.top-=d-t,c.bottom-=d-t,c.left-=l-e,c.right-=l-e,c.marginTop=t,c.marginLeft=e}return(a&&!n?e.contains(o):e===o&&"BODY"!==o.nodeName)&&(c=function(t,e,n=!1){const a=N(e,"top"),r=N(e,"left"),i=n?-1:1;return t.top+=a*i,t.bottom+=a*i,t.left+=r*i,t.right+=r*i,t}(c,e)),c}function k(t){if(!t||!t.parentElement||x())return document.documentElement;let e=t.parentElement;for(;e&&"none"===g(e,"transform");)e=e.parentElement;return e||document.documentElement}function E(t,e,n=0,a,r=!1){let i={top:0,left:0};const s=r?k(t):O(t,e);if("viewport"===a)i=function(t,e=!1){const n=t.ownerDocument.documentElement,a=A(t,n),r=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:N(n),o=e?0:N(n,"left");return C({top:s-Number(a.top)+Number(a.marginTop),left:o-Number(a.left)+Number(a.marginLeft),width:r,height:i})}(s,r);else{let n;"scrollParent"===a?(n=b(p(e)),"BODY"===n.nodeName&&(n=t.ownerDocument.documentElement)):n="window"===a?t.ownerDocument.documentElement:a;const o=A(n,s,r);if("HTML"!==n.nodeName||function t(e){const n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===g(e,"position")||t(p(e)))}(s))i=o;else{const{height:e,width:n}=I(t.ownerDocument);i.top+=o.top-o.marginTop,i.bottom=Number(e)+Number(o.top),i.left+=o.left-o.marginLeft,i.right=Number(n)+Number(o.left)}}return i.left+=n,i.top+=n,i.right-=n,i.bottom-=n,i}function L({width:t,height:e}){return t*e}function D(t,e,n,a,r=["top","bottom","right","left"],i="viewport",s=0){if(-1===t.indexOf("auto"))return t;const o=E(n,a,s,i),u={top:{width:o.width,height:e.top-o.top},right:{width:o.right-e.right,height:o.height},bottom:{width:o.width,height:o.bottom-e.bottom},left:{width:e.left-o.left,height:o.height}},d=Object.keys(u).map(t=>Object.assign({key:t},u[t],{area:L(u[t])})).sort((t,e)=>e.area-t.area);let l=d.filter(({width:t,height:e})=>t>=n.clientWidth&&e>=n.clientHeight);l=l.filter(t=>r.some(e=>e===t.key));const c=l.length>0?l[0].key:d[0].key,f=t.split(" ")[1];return n.className=n.className.replace(/bs-tooltip-auto/g,`bs-tooltip-${c}`),c+(f?`-${f}`:"")}function P(t){const e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),a=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:Number(t.offsetWidth)+a,height:Number(t.offsetHeight)+n}}function M(t,e,n=null){return A(e,n?k(t):O(t,e),n)}function q(t,e,n){const a=n.split(" ")[0],r=P(t),i={width:r.width,height:r.height},s=-1!==["right","left"].indexOf(a),o=s?"top":"left",u=s?"left":"top",d=s?"height":"width",l=s?"width":"height";return i[o]=e[o]+e[d]/2-r[d]/2,i[u]=a===u?e[u]-r[l]:e[function(t){const e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,t=>e[t])}(u)],i}function j(t,e){return t&&t.modifiers&&t.modifiers[e]&&t.modifiers[e].enabled}function F(t,e,n){Object.keys(e).forEach(a=>{let r="";var i;-1!==["width","height","top","right","bottom","left"].indexOf(a)&&""!==(i=e[a])&&!isNaN(parseFloat(i))&&isFinite(i)&&(r="px"),n?n.setStyle(t,a,`${String(e[a])}${r}`):t.style[a]=String(e[a])+r})}function G(t){let e=t.offsets.target;const n=t.instance.target.querySelector(".arrow");if(!n)return t;const a=-1!==["left","right"].indexOf(t.placement),r=a?"height":"width",i=a?"Top":"Left",s=i.toLowerCase(),o=a?"left":"top",u=a?"bottom":"right",d=P(n)[r];t.offsets.host[u]-d<e[s]&&(e[s]-=e[s]-(t.offsets.host[u]-d)),Number(t.offsets.host[s])+Number(d)>e[u]&&(e[s]+=Number(t.offsets.host[s])+Number(d)-Number(e[u])),e=C(e);const l=Number(t.offsets.host[s])+Number(t.offsets.host[r]/2-d/2),c=g(t.instance.target),f=parseFloat(c[`margin${i}`]),h=parseFloat(c[`border${i}Width`]);let p=l-e[s]-f-h;return p=Math.max(Math.min(e[r]-d,p),0),t.offsets.arrow={[s]:Math.round(p),[o]:""},t.instance.arrow=n,t}function V(t){if(t.offsets.target=C(t.offsets.target),!j(t.options,"flip"))return t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)),t;const e=E(t.instance.target,t.instance.host,0,"viewport",!1);let n=t.placement.split(" ")[0],a=t.placement.split(" ")[1]||"";const r=D("auto",t.offsets.host,t.instance.target,t.instance.host,t.options.allowedPositions),i=[n,r];return i.forEach((r,s)=>{if(n!==r||i.length===s+1)return t;n=t.placement.split(" ")[0];const o="left"===n&&Math.floor(t.offsets.target.right)>Math.floor(t.offsets.host.left)||"right"===n&&Math.floor(t.offsets.target.left)<Math.floor(t.offsets.host.right)||"top"===n&&Math.floor(t.offsets.target.bottom)>Math.floor(t.offsets.host.top)||"bottom"===n&&Math.floor(t.offsets.target.top)<Math.floor(t.offsets.host.bottom),u=Math.floor(t.offsets.target.left)<Math.floor(e.left),d=Math.floor(t.offsets.target.right)>Math.floor(e.right),l=Math.floor(t.offsets.target.top)<Math.floor(e.top),c=Math.floor(t.offsets.target.bottom)>Math.floor(e.bottom),f="left"===n&&u||"right"===n&&d||"top"===n&&l||"bottom"===n&&c,h=-1!==["top","bottom"].indexOf(n),g=h&&"left"===a&&u||h&&"right"===a&&d||!h&&"left"===a&&l||!h&&"right"===a&&c;(o||f||g)&&((o||f)&&(n=i[s+1]),g&&(a=function(t){return"right"===t?"left":"left"===t?"right":t}(a)),t.placement=n+(a?` ${a}`:""),t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)))}),t}function z(t){if(!j(t.options,"preventOverflow"))return t;const e="transform",n=t.instance.target.style,{top:a,left:r,[e]:i}=n;n.top="",n.left="",n[e]="";const s=E(t.instance.target,t.instance.host,0,"scrollParent",!1);n.top=a,n.left=r,n[e]=i;const o={primary(e){let n=t.offsets.target[e];return t.offsets.target[e]<s[e]&&(n=Math.max(t.offsets.target[e],s[e])),{[e]:n}},secondary(e){const n="right"===e?"left":"top";let a=t.offsets.target[n];return t.offsets.target[e]>s[e]&&(a=Math.min(t.offsets.target[n],s[e]-("right"===e?t.offsets.target.width:t.offsets.target.height))),{[n]:a}}};let u;return["left","right","top","bottom"].forEach(e=>{u=-1!==["left","top"].indexOf(e)?"primary":"secondary",t.offsets.target=Object.assign({},t.offsets.target,o[u](e))}),t}function B(t){const e=t.placement,n=e.split(" ")[0],a=e.split(" ")[1];if(a){const{host:e,target:r}=t.offsets,i=-1!==["bottom","top"].indexOf(n),s=i?"left":"top",o=i?"width":"height";t.offsets.target=Object.assign({},r,{start:{[s]:e[s]},end:{[s]:e[s]+e[o]-r[o]}}[a])}return t}class Y{position(t,e,n=!0){return this.offset(t,e,!1)}offset(t,e,n=!0){return M(e,t)}positionElements(t,e,n,a,r){return[V,B,z,G].reduce((t,e)=>e(t),function(t,e,n,a){const r=M(t,e);n.match(/^(auto)*\s*(left|right|top|bottom)*$/)||n.match(/^(left|right|top|bottom)*\s*(start|end)*$/)||(n="auto");const i=!!n.match(/auto/g);let s=n.match(/auto\s(left|right|top|bottom)/)?n.split(" ")[1]||"auto":n;const o=q(t,r,s);return s=D(s,r,t,e,a?a.allowedPositions:void 0),{options:a,instance:{target:t,host:e,arrow:null},offsets:{target:o,host:r,arrow:null},positionFixed:!1,placement:s,placementAuto:i}}(e,t,n,r))}}const H=new Y;class U{constructor(t,e,n){this.update$$=new i.a,this.positionElements=new Map,this.isDisabled=!1,Object(r.isPlatformBrowser)(n)&&t.runOutsideAngular(()=>{this.triggerEvent$=Object(s.a)(Object(o.a)(window,"scroll",{passive:!0}),Object(o.a)(window,"resize",{passive:!0}),Object(u.a)(0,h),this.update$$),this.triggerEvent$.subscribe(()=>{this.isDisabled||this.positionElements.forEach(t=>{!function(t,e,n,a,r,i){const s=H.positionElements(t,e,n,a,r),o=function(t){return{width:t.offsets.target.width,height:t.offsets.target.height,left:Math.floor(t.offsets.target.left),top:Math.round(t.offsets.target.top),bottom:Math.round(t.offsets.target.bottom),right:Math.floor(t.offsets.target.right)}}(s);F(e,{"will-change":"transform",top:"0px",left:"0px",transform:`translate3d(${o.left}px, ${o.top}px, 0px)`},i),s.instance.arrow&&F(s.instance.arrow,s.offsets.arrow,i),function(t,e){const n=t.instance.target;let a=n.className;t.placementAuto&&(a=a.replace(/bs-popover-auto/g,`bs-popover-${t.placement}`),a=a.replace(/bs-tooltip-auto/g,`bs-tooltip-${t.placement}`),a=a.replace(/\sauto/g,` ${t.placement}`),-1!==a.indexOf("popover")&&-1===a.indexOf("popover-auto")&&(a+=" popover-auto"),-1!==a.indexOf("tooltip")&&-1===a.indexOf("tooltip-auto")&&(a+=" tooltip-auto")),a=a.replace(/left|right|top|bottom/g,`${t.placement.split(" ")[0]}`),e?e.setAttribute(n,"class",a):n.className=a}(s,i)}(W(t.target),W(t.element),t.attachment,t.appendToBody,this.options,e.createRenderer(null,null))})})})}position(t){this.addPositionElement(t)}get event$(){return this.triggerEvent$}disable(){this.isDisabled=!0}enable(){this.isDisabled=!1}addPositionElement(t){this.positionElements.set(W(t.element),t)}calcPosition(){this.update$$.next()}deletePositionElement(t){this.positionElements.delete(W(t))}setOptions(t){this.options=t}}function W(t){return"string"==typeof t?document.querySelector(t):t instanceof a.ElementRef?t.nativeElement:t}},"2vnA":function(t,e,n){"use strict";n.d(e,"a",(function(){return Kt})),n.d(e,"b",(function(){return Zt})),n.d(e,"c",(function(){return at})),n.d(e,"d",(function(){return X})),n.d(e,"e",(function(){return Xt}));var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function r(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function s(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(o){r={error:o}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function o(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t}var u=[];Object.freeze(u);var d={};Object.freeze(d);var l={};function c(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:l}function f(){return++Rt.mobxGuid}function h(t){throw g(!1,t),"X"}function g(t,e){if(!t)throw new Error("[mobx] "+(e||"An invariant failed, however the error is obfuscated because this is an production build."))}function p(t){var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}}var b=function(){};function m(t){return null!==t&&"object"==typeof t}function y(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function v(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!0,configurable:!0,value:n})}function x(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function _(t,e){var n="isMobX"+t;return e.prototype[n]=!0,function(t){return m(t)&&!0===t[n]}}function T(t){return void 0!==c().Map&&t instanceof c().Map}function O(t){return t instanceof Set}function w(t){for(var e=[];;){var n=t.next();if(n.done)break;e.push(n.value)}return e}function S(){return"function"==typeof Symbol&&Symbol.toPrimitive||"@@toPrimitive"}function I(t){return null===t?null:"object"==typeof t?""+t:t}function N(){return"function"==typeof Symbol&&Symbol.iterator||"@@iterator"}function C(t,e){x(t,N(),e)}function R(t){return t[N()]=k,t}function A(){return"function"==typeof Symbol&&Symbol.toStringTag||"@@toStringTag"}function k(){return this}var E=function(){function t(t){void 0===t&&(t="Atom@"+f()),this.name=t,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=rt.NOT_TRACKING}return t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.reportObserved=function(){return Pt(this)},t.prototype.reportChanged=function(){Lt(),function(t){if(t.lowestObserverState!==rt.STALE){t.lowestObserverState=rt.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===rt.UP_TO_DATE&&(a.isTracing!==it.NONE&&Mt(a,t),a.onBecomeStale()),a.dependenciesState=rt.STALE}}}(this),Dt()},t.prototype.toString=function(){return this.name},t}(),L=_("Atom",E);function D(t,e){return t===e}var P={identity:D,structural:function(t,e){return He(t,e)},default:function(t,e){return function(t,e){return"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(t,e)||D(t,e)},shallow:function(t,e){return He(t,e,1)}},M={},q={};function j(t,e){var n=e?M:q;return n[t]||(n[t]={configurable:!0,enumerable:e,get:function(){return F(this),this[t]},set:function(e){F(this),this[t]=e}})}function F(t){if(!0!==t.__mobxDidRunLazyInitializers){var e=t.__mobxDecorators;if(e)for(var n in v(t,"__mobxDidRunLazyInitializers",!0),e){var a=e[n];a.propertyCreator(t,a.prop,a.descriptor,a.decoratorTarget,a.decoratorArguments)}}}function G(t,e){return function(){var n,a=function(a,r,s,o){return!0===o?(e(a,r,s,a,n),null):(Object.prototype.hasOwnProperty.call(a,"__mobxDecorators")||v(a,"__mobxDecorators",i({},a.__mobxDecorators)),a.__mobxDecorators[r]={prop:r,propertyCreator:e,descriptor:s,decoratorTarget:a,decoratorArguments:n},j(r,t))};return V(arguments)?(n=u,a.apply(null,arguments)):(n=Array.prototype.slice.call(arguments),a)}}function V(t){return(2===t.length||3===t.length)&&"string"==typeof t[1]||4===t.length&&!0===t[3]}function z(t,e,n){return ie(t)?t:Array.isArray(t)?X.array(t,{name:n}):y(t)?X.object(t,void 0,{name:n}):T(t)?X.map(t,{name:n}):O(t)?X.set(t,{name:n}):t}function B(t){return t}function Y(t){g(t);var e=G(!0,(function(e,n,a,r,s){!function(t,e,n,a){var r=qe(t);if(ue(r)){var s=le(r,{object:t,name:e,type:"add",newValue:n});if(!s)return;n=s.newValue}n=(r.values[e]=new wt(n,a,r.name+"."+e,!1)).value,Object.defineProperty(t,e,function(t){return je[t]||(je[t]={configurable:!0,enumerable:!0,get:function(){return this.$mobx.read(this,t)},set:function(e){this.$mobx.write(this,t,e)}})}(e)),r.keys&&r.keys.push(e),function(t,e,n,a){var r=ce(t),s=Gt(),o=r||s?{type:"add",object:e,name:n,newValue:a}:null;s&&zt(i(i({},o),{name:t.name,key:n})),r&&he(t,o),s&&Yt()}(r,t,e,n)}(e,n,a?a.initializer?a.initializer.call(e):a.value:void 0,t)})),n=("undefined"!=typeof process&&process,e);return n.enhancer=t,n}var H={deep:!0,name:void 0,defaultDecorator:void 0};function U(t){return null==t?H:"string"==typeof t?{name:t,deep:!0}:t}function W(t){return t.defaultDecorator?t.defaultDecorator.enhancer:!1===t.deep?B:z}Object.freeze(H),Object.freeze({deep:!1,name:void 0,defaultDecorator:void 0});var K=Y(z),$=Y((function(t,e,n){return null==t?t:ze(t)||Ce(t)||Ee(t)||Pe(t)?t:Array.isArray(t)?X.array(t,{name:n,deep:!1}):y(t)?X.object(t,void 0,{name:n,deep:!1}):T(t)?X.map(t,{name:n,deep:!1}):O(t)?X.set(t,{name:n,deep:!1}):h(!1)})),Z=Y(B),J=Y((function(t,e,n){return He(t,e)?e:t})),Q={box:function(t,e){arguments.length>2&&tt("box");var n=U(e);return new wt(t,W(n),n.name,!0,n.equals)},shallowBox:function(t,e){return arguments.length>2&&tt("shallowBox"),X.box(t,{name:e,deep:!1})},array:function(t,e){arguments.length>2&&tt("array");var n=U(e);return new Te(t,W(n),n.name)},shallowArray:function(t,e){return arguments.length>2&&tt("shallowArray"),X.array(t,{name:e,deep:!1})},map:function(t,e){arguments.length>2&&tt("map");var n=U(e);return new Ae(t,W(n),n.name)},shallowMap:function(t,e){return arguments.length>2&&tt("shallowMap"),X.map(t,{name:e,deep:!1})},set:function(t,e){arguments.length>2&&tt("set");var n=U(e);return new De(t,W(n),n.name)},object:function(t,e,n){"string"==typeof arguments[1]&&tt("object");var a=U(n);return ne({},t,e,a)},shallowObject:function(t,e){return"string"==typeof arguments[1]&&tt("shallowObject"),X.object(t,{},{name:e,deep:!1})},ref:Z,shallow:$,deep:K,struct:J},X=function(t,e,n){if("string"==typeof arguments[1])return K.apply(null,arguments);if(ie(t))return t;var a=y(t)?X.object(t,e,n):Array.isArray(t)?X.array(t,e):T(t)?X.map(t,e):O(t)?X.set(t,e):t;if(a!==t)return a;h(!1)};function tt(t){h("Expected one or two arguments to observable."+t+". Did you accidentally try to use observable."+t+" as decorator?")}Object.keys(Q).forEach((function(t){return X[t]=Q[t]}));var et=G(!1,(function(t,e,n,a,r){var s,o,u,d;s=t,o=e,u=i({get:n.get,set:n.set},r[0]||{}),d=qe(s),u.name=d.name+"."+o,u.context=s,d.values[o]=new St(u),Object.defineProperty(s,o,function(t){return Fe[t]||(Fe[t]={configurable:Rt.computedConfigurable,enumerable:!1,get:function(){return Ge(this).read(this,t)},set:function(e){Ge(this).write(this,t,e)}})}(o))})),nt=et({equals:P.structural}),at=function(t,e,n){if("string"==typeof e)return et.apply(null,arguments);if(null!==t&&"object"==typeof t&&1===arguments.length)return et.apply(null,arguments);var a="object"==typeof e?e:{};return a.get=t,a.set="function"==typeof e?e:a.set,a.name=a.name||t.name||"",new St(a)};at.struct=nt;var rt=function(t){return t[t.NOT_TRACKING=-1]="NOT_TRACKING",t[t.UP_TO_DATE=0]="UP_TO_DATE",t[t.POSSIBLY_STALE=1]="POSSIBLY_STALE",t[t.STALE=2]="STALE",t}({}),it=function(t){return t[t.NONE=0]="NONE",t[t.LOG=1]="LOG",t[t.BREAK=2]="BREAK",t}({}),st=function(){return function(t){this.cause=t}}();function ot(t){return t instanceof st}function ut(t){switch(t.dependenciesState){case rt.UP_TO_DATE:return!1;case rt.NOT_TRACKING:case rt.STALE:return!0;case rt.POSSIBLY_STALE:for(var e=pt(!0),n=ht(),a=t.observing,r=a.length,i=0;i<r;i++){var s=a[i];if(It(s)){if(Rt.disableErrorBoundaries)s.get();else try{s.get()}catch(o){return gt(n),bt(e),!0}if(t.dependenciesState===rt.STALE)return gt(n),bt(e),!0}}return mt(t),gt(n),bt(e),!1}}function dt(t){var e=t.observers.length>0;Rt.computationDepth>0&&e&&h(!1),Rt.allowStateChanges||!e&&"strict"!==Rt.enforceActions||h(!1)}function lt(t,e,n){var a=pt(!0);mt(t),t.newObserving=new Array(t.observing.length+100),t.unboundDepsCount=0,t.runId=++Rt.runId;var r,i=Rt.trackingDerivation;if(Rt.trackingDerivation=t,!0===Rt.disableErrorBoundaries)r=e.call(n);else try{r=e.call(n)}catch(s){r=new st(s)}return Rt.trackingDerivation=i,function(t){for(var e=t.observing,n=t.observing=t.newObserving,a=rt.UP_TO_DATE,r=0,i=t.unboundDepsCount,s=0;s<i;s++)0===(o=n[s]).diffValue&&(o.diffValue=1,r!==s&&(n[r]=o),r++),o.dependenciesState>a&&(a=o.dependenciesState);for(n.length=r,t.newObserving=null,i=e.length;i--;)0===(o=e[i]).diffValue&&kt(o,t),o.diffValue=0;for(;r--;){var o;1===(o=n[r]).diffValue&&(o.diffValue=0,At(o,t))}a!==rt.UP_TO_DATE&&(t.dependenciesState=a,t.onBecomeStale())}(t),bt(a),r}function ct(t){var e=t.observing;t.observing=[];for(var n=e.length;n--;)kt(e[n],t);t.dependenciesState=rt.NOT_TRACKING}function ft(t){var e=ht(),n=t();return gt(e),n}function ht(){var t=Rt.trackingDerivation;return Rt.trackingDerivation=null,t}function gt(t){Rt.trackingDerivation=t}function pt(t){var e=Rt.allowStateReads;return Rt.allowStateReads=t,e}function bt(t){Rt.allowStateReads=t}function mt(t){if(t.dependenciesState!==rt.UP_TO_DATE){t.dependenciesState=rt.UP_TO_DATE;for(var e=t.observing,n=e.length;n--;)e[n].lowestObserverState=rt.UP_TO_DATE}}var yt=0,vt=1;function xt(t,e){var n=function(){return _t(t,e,this,arguments)};return n.isMobxAction=!0,n}function _t(t,e,n,a){var r=function(t,e,n){var a=Gt()&&!!t,r=0;if(a){r=Date.now();var i=n&&n.length||0,s=new Array(i);if(i>0)for(var o=0;o<i;o++)s[o]=n[o];zt({type:"action",name:t,object:e,arguments:s})}var u=ht();Lt();var d={prevDerivation:u,prevAllowStateChanges:Tt(!0),prevAllowStateReads:pt(!0),notifySpy:a,startTime:r,actionId:vt++,parentActionId:yt};return yt=d.actionId,d}(t,n,a);try{return e.apply(n,a)}catch(i){throw r.error=i,i}finally{!function(t){yt!==t.actionId&&h("invalid action stack. did you forget to finish an action?"),yt=t.parentActionId,void 0!==t.error&&(Rt.suppressReactionErrors=!0),Ot(t.prevAllowStateChanges),bt(t.prevAllowStateReads),Dt(),gt(t.prevDerivation),t.notifySpy&&Yt({time:Date.now()-t.startTime}),Rt.suppressReactionErrors=!1}(r)}}function Tt(t){var e=Rt.allowStateChanges;return Rt.allowStateChanges=t,e}function Ot(t){Rt.allowStateChanges=t}Object.getOwnPropertyDescriptor((function(){}),"name");var wt=function(t){function e(e,n,a,r,i){void 0===a&&(a="ObservableValue@"+f()),void 0===r&&(r=!0),void 0===i&&(i=P.default);var s=t.call(this,a)||this;return s.enhancer=n,s.name=a,s.equals=i,s.hasUnreportedChange=!1,s.value=n(e,void 0,a),r&&Gt()&&Vt({type:"create",name:s.name,newValue:""+s.value}),s}return r(e,t),e.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},e.prototype.set=function(t){var e=this.value;if((t=this.prepareNewValue(t))!==Rt.UNCHANGED){var n=Gt();n&&zt({type:"update",name:this.name,newValue:t,oldValue:e}),this.setNewValue(t),n&&Yt()}},e.prototype.prepareNewValue=function(t){if(dt(this),ue(this)){var e=le(this,{object:this,type:"update",newValue:t});if(!e)return Rt.UNCHANGED;t=e.newValue}return t=this.enhancer(t,this.value,this.name),this.equals(this.value,t)?Rt.UNCHANGED:t},e.prototype.setNewValue=function(t){var e=this.value;this.value=t,this.reportChanged(),ce(this)&&he(this,{type:"update",object:this,newValue:t,oldValue:e})},e.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},e.prototype.intercept=function(t){return de(this,t)},e.prototype.observe=function(t,e){return e&&t({object:this,type:"update",newValue:this.value,oldValue:void 0}),fe(this,t)},e.prototype.toJSON=function(){return this.get()},e.prototype.toString=function(){return this.name+"["+this.value+"]"},e.prototype.valueOf=function(){return I(this.get())},e}(E);wt.prototype[S()]=wt.prototype.valueOf,_("ObservableValue",wt);var St=function(){function t(t){this.dependenciesState=rt.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=rt.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+f(),this.value=new st(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=it.NONE,g(t.get,"missing option for computed: get"),this.derivation=t.get,this.name=t.name||"ComputedValue@"+f(),t.set&&(this.setter=xt(this.name+"-setter",t.set)),this.equals=t.equals||(t.compareStructural||t.struct?P.structural:P.default),this.scope=t.context,this.requiresReaction=!!t.requiresReaction,this.keepAlive=!!t.keepAlive}return t.prototype.onBecomeStale=function(){!function(t){if(t.lowestObserverState===rt.UP_TO_DATE){t.lowestObserverState=rt.POSSIBLY_STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===rt.UP_TO_DATE&&(a.dependenciesState=rt.POSSIBLY_STALE,a.isTracing!==it.NONE&&Mt(a,t),a.onBecomeStale())}}}(this)},t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.get=function(){this.isComputing&&h("Cycle detected in computation "+this.name+": "+this.derivation),0!==Rt.inBatch||0!==this.observers.length||this.keepAlive?(Pt(this),ut(this)&&this.trackAndCompute()&&function(t){if(t.lowestObserverState!==rt.STALE){t.lowestObserverState=rt.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===rt.POSSIBLY_STALE?a.dependenciesState=rt.STALE:a.dependenciesState===rt.UP_TO_DATE&&(t.lowestObserverState=rt.UP_TO_DATE)}}}(this)):ut(this)&&(this.warnAboutUntrackedRead(),Lt(),this.value=this.computeValue(!1),Dt());var t=this.value;if(ot(t))throw t.cause;return t},t.prototype.peek=function(){var t=this.computeValue(!1);if(ot(t))throw t.cause;return t},t.prototype.set=function(t){if(this.setter){g(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,t)}finally{this.isRunningSetter=!1}}else g(!1,!1)},t.prototype.trackAndCompute=function(){Gt()&&Vt({object:this.scope,type:"compute",name:this.name});var t=this.value,e=this.dependenciesState===rt.NOT_TRACKING,n=this.computeValue(!0),a=e||ot(t)||ot(n)||!this.equals(t,n);return a&&(this.value=n),a},t.prototype.computeValue=function(t){var e;if(this.isComputing=!0,Rt.computationDepth++,t)e=lt(this,this.derivation,this.scope);else if(!0===Rt.disableErrorBoundaries)e=this.derivation.call(this.scope);else try{e=this.derivation.call(this.scope)}catch(n){e=new st(n)}return Rt.computationDepth--,this.isComputing=!1,e},t.prototype.suspend=function(){this.keepAlive||(ct(this),this.value=void 0)},t.prototype.observe=function(t,e){var n=this,a=!0,r=void 0;return Zt((function(){var i=n.get();if(!a||e){var s=ht();t({type:"update",object:n,newValue:i,oldValue:r}),gt(s)}a=!1,r=i}))},t.prototype.warnAboutUntrackedRead=function(){},t.prototype.toJSON=function(){return this.get()},t.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},t.prototype.valueOf=function(){return I(this.get())},t}();St.prototype[S()]=St.prototype.valueOf;var It=_("ComputedValue",St),Nt=function(){return function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.allowStateReads=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.computedConfigurable=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1}}(),Ct=!0,Rt=function(){var t=c();return t.__mobxInstanceCount>0&&!t.__mobxGlobals&&(Ct=!1),t.__mobxGlobals&&t.__mobxGlobals.version!==(new Nt).version&&(Ct=!1),Ct?t.__mobxGlobals?(t.__mobxInstanceCount+=1,t.__mobxGlobals.UNCHANGED||(t.__mobxGlobals.UNCHANGED={}),t.__mobxGlobals):(t.__mobxInstanceCount=1,t.__mobxGlobals=new Nt):(setTimeout((function(){h("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")}),1),new Nt)}();function At(t,e){var n=t.observers.length;n&&(t.observersIndexes[e.__mapid]=n),t.observers[n]=e,t.lowestObserverState>e.dependenciesState&&(t.lowestObserverState=e.dependenciesState)}function kt(t,e){if(1===t.observers.length)t.observers.length=0,Et(t);else{var n=t.observers,a=t.observersIndexes,r=n.pop();if(r!==e){var i=a[e.__mapid]||0;i?a[r.__mapid]=i:delete a[r.__mapid],n[i]=r}delete a[e.__mapid]}}function Et(t){!1===t.isPendingUnobservation&&(t.isPendingUnobservation=!0,Rt.pendingUnobservations.push(t))}function Lt(){Rt.inBatch++}function Dt(){if(0==--Rt.inBatch){jt();for(var t=Rt.pendingUnobservations,e=0;e<t.length;e++){var n=t[e];n.isPendingUnobservation=!1,0===n.observers.length&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBecomeUnobserved()),n instanceof St&&n.suspend())}Rt.pendingUnobservations=[]}}function Pt(t){var e=Rt.trackingDerivation;return null!==e?(e.runId!==t.lastAccessedBy&&(t.lastAccessedBy=e.runId,e.newObserving[e.unboundDepsCount++]=t,t.isBeingObserved||(t.isBeingObserved=!0,t.onBecomeObserved())),!0):(0===t.observers.length&&Rt.inBatch>0&&Et(t),!1)}function Mt(t,e){if(console.log("[mobx.trace] '"+t.name+"' is invalidated due to a change in: '"+e.name+"'"),t.isTracing===it.BREAK){var n=[];!function t(e,n,a){n.length>=1e3?n.push("(and many more)"):(n.push(""+new Array(a).join("\t")+e.name),e.dependencies&&e.dependencies.forEach((function(e){return t(e,n,a+1)})))}((a=t,ae(Be(a,void 0))),n,1),new Function("debugger;\n/*\nTracing '"+t.name+"'\n\nYou are entering this break point because derivation '"+t.name+"' is being traced and '"+e.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(t instanceof St?t.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n    ")()}var a}var qt=function(){function t(t,e,n,a){void 0===t&&(t="Reaction@"+f()),void 0===a&&(a=!1),this.name=t,this.onInvalidate=e,this.errorHandler=n,this.requiresObservable=a,this.observing=[],this.newObserving=[],this.dependenciesState=rt.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+f(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=it.NONE}return t.prototype.onBecomeStale=function(){this.schedule()},t.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,Rt.pendingReactions.push(this),jt())},t.prototype.isScheduled=function(){return this._isScheduled},t.prototype.runReaction=function(){if(!this.isDisposed){if(Lt(),this._isScheduled=!1,ut(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending&&Gt()&&Vt({name:this.name,type:"scheduled-reaction"})}catch(t){this.reportExceptionInDerivation(t)}}Dt()}},t.prototype.track=function(t){Lt();var e,n=Gt();n&&(e=Date.now(),zt({name:this.name,type:"reaction"})),this._isRunning=!0;var a=lt(this,t,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&ct(this),ot(a)&&this.reportExceptionInDerivation(a.cause),n&&Yt({time:Date.now()-e}),Dt()},t.prototype.reportExceptionInDerivation=function(t){var e=this;if(this.errorHandler)this.errorHandler(t,this);else{if(Rt.disableErrorBoundaries)throw t;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";Rt.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(n,t),Gt()&&Vt({type:"error",name:this.name,message:n,error:""+t}),Rt.globalReactionErrorHandlers.forEach((function(n){return n(t,e)}))}},t.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(Lt(),ct(this),Dt()))},t.prototype.getDisposer=function(){var t=this.dispose.bind(this);return t.$mobx=this,t},t.prototype.toString=function(){return"Reaction["+this.name+"]"},t.prototype.trace=function(t){void 0===t&&(t=!1),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=!1;"boolean"==typeof t[t.length-1]&&(n=t.pop());var a=se(t);if(!a)return h(!1);a.isTracing===it.NONE&&console.log("[mobx.trace] '"+a.name+"' tracing enabled"),a.isTracing=n?it.BREAK:it.LOG}(this,t)},t}();function jt(){Rt.inBatch>0||Rt.isRunningReactions||function(){Rt.isRunningReactions=!0;for(var t=Rt.pendingReactions,e=0;t.length>0;){100==++e&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+t[0]),t.splice(0));for(var n=t.splice(0),a=0,r=n.length;a<r;a++)n[a].runReaction()}Rt.isRunningReactions=!1}()}var Ft=_("Reaction",qt);function Gt(){return!!Rt.spyListeners.length}function Vt(t){if(Rt.spyListeners.length)for(var e=Rt.spyListeners,n=0,a=e.length;n<a;n++)e[n](t)}function zt(t){Vt(i(i({},t),{spyReportStart:!0}))}var Bt={spyReportEnd:!0};function Yt(t){Vt(t?i(i({},t),{spyReportEnd:!0}):Bt)}function Ht(){h(!1)}function Ut(t){return function(e,n,a){if(a){if(a.value)return{value:xt(t,a.value),enumerable:!1,configurable:!0,writable:!0};var r=a.initializer;return{enumerable:!1,configurable:!0,writable:!0,initializer:function(){return xt(t,r.call(this))}}}return Wt(t).apply(this,arguments)}}function Wt(t){return function(e,n,a){Object.defineProperty(e,n,{configurable:!0,enumerable:!1,get:function(){},set:function(e){v(this,n,Kt(t,e))}})}}var Kt=function(t,e,n,a){return 1===arguments.length&&"function"==typeof t?xt(t.name||"<unnamed action>",t):2===arguments.length&&"function"==typeof e?xt(t,e):1===arguments.length&&"string"==typeof t?Ut(t):!0!==a?Ut(e).apply(null,arguments):void(t[e]=xt(t.name||e,n.value))};function $t(t,e,n){v(t,e,xt(e,n.bind(t)))}function Zt(t,e){void 0===e&&(e=d);var n,a=e&&e.name||t.name||"Autorun@"+f();if(e.scheduler||e.delay){var r=Qt(e),i=!1;n=new qt(a,(function(){i||(i=!0,r((function(){i=!1,n.isDisposed||n.track(s)})))}),e.onError,e.requiresObservable)}else n=new qt(a,(function(){this.track(s)}),e.onError,e.requiresObservable);function s(){t(n)}return n.schedule(),n.getDisposer()}Kt.bound=function(t,e,n,a){return!0===a?($t(t,e,n.value),null):n?{configurable:!0,enumerable:!1,get:function(){return $t(this,e,n.value||n.initializer.call(this)),this[e]},set:Ht}:{enumerable:!1,configurable:!0,set:function(t){$t(this,e,t)},get:function(){}}};var Jt=function(t){return t()};function Qt(t){return t.scheduler?t.scheduler:t.delay?function(e){return setTimeout(e,t.delay)}:Jt}function Xt(t,e,n){void 0===n&&(n=d),"boolean"==typeof n&&(n={fireImmediately:n});var a,r,i,s=n.name||"Reaction@"+f(),o=Kt(s,n.onError?(a=n.onError,r=e,function(){try{return r.apply(this,arguments)}catch(t){a.call(this,t)}}):e),u=!n.scheduler&&!n.delay,l=Qt(n),c=!0,h=!1,g=n.compareStructural?P.structural:n.equals||P.default,p=new qt(s,(function(){c||u?b():h||(h=!0,l(b))}),n.onError,n.requiresObservable);function b(){if(h=!1,!p.isDisposed){var e=!1;p.track((function(){var n=t(p);e=c||!g(i,n),i=n})),c&&n.fireImmediately&&o(i,p),c||!0!==e||o(i,p),c&&(c=!1)}}return p.schedule(),p.getDisposer()}function te(t,e,n){return ee("onBecomeUnobserved",t,e,n)}function ee(t,e,n,a){var r="function"==typeof a?Be(e,n):Be(e),i="function"==typeof a?a:n,s=r[t];return"function"!=typeof s?h(!1):(r[t]=function(){s.call(this),i.call(this)},function(){r[t]=s})}function ne(t,e,n,a){var r=(a=U(a)).defaultDecorator||(!1===a.deep?Z:K);F(t),qe(t,a.name,r.enhancer),Lt();try{for(var i in e){var s=Object.getOwnPropertyDescriptor(e,i),o=(n&&i in n?n[i]:s.get?et:r)(t,i,s,!0);o&&Object.defineProperty(t,i,o)}}finally{Dt()}return t}function ae(t){var e,n,a={name:t.name};return t.observing&&t.observing.length>0&&(a.dependencies=(e=t.observing,n=[],e.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),n).map(ae)),a}function re(t,e){if(null==t)return!1;if(void 0!==e){if(ze(t)){var n=t.$mobx;return n.values&&!!n.values[e]}return!1}return ze(t)||!!t.$mobx||L(t)||Ft(t)||It(t)}function ie(t){return 1!==arguments.length&&h(!1),re(t)}function se(t){switch(t.length){case 0:return Rt.trackingDerivation;case 1:return Be(t[0]);case 2:return Be(t[0],t[1])}}function oe(t,e){void 0===e&&(e=void 0),Lt();try{return t.apply(e)}finally{Dt()}}function ue(t){return void 0!==t.interceptors&&t.interceptors.length>0}function de(t,e){var n=t.interceptors||(t.interceptors=[]);return n.push(e),p((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function le(t,e){var n=ht();try{var a=t.interceptors;if(a)for(var r=0,i=a.length;r<i&&(g(!(e=a[r](e))||e.type,"Intercept handlers should return nothing or a change object"),e);r++);return e}finally{gt(n)}}function ce(t){return void 0!==t.changeListeners&&t.changeListeners.length>0}function fe(t,e){var n=t.changeListeners||(t.changeListeners=[]);return n.push(e),p((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function he(t,e){var n=ht(),a=t.changeListeners;if(a){for(var r=0,i=(a=a.slice()).length;r<i;r++)a[r](e);gt(n)}}Object.create(Error.prototype);var ge,pe,be,me,ye=(ge=!1,pe={},Object.defineProperty(pe,"0",{set:function(){ge=!0}}),Object.create(pe)[0]=1,!1===ge),ve=0,xe=function(){return function(){}}();be=xe,me=Array.prototype,void 0!==Object.setPrototypeOf?Object.setPrototypeOf(be.prototype,me):void 0!==be.prototype.__proto__?be.prototype.__proto__=me:be.prototype=me,Object.isFrozen(Array)&&["constructor","push","shift","concat","pop","unshift","replace","find","findIndex","splice","reverse","sort"].forEach((function(t){Object.defineProperty(xe.prototype,t,{configurable:!0,writable:!0,value:Array.prototype[t]})}));var _e=function(){function t(t,e,n,a){this.array=n,this.owned=a,this.values=[],this.lastKnownLength=0,this.atom=new E(t||"ObservableArray@"+f()),this.enhancer=function(n,a){return e(n,a,t+"[..]")}}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.dehanceValues=function(t){return void 0!==this.dehancer&&t.length>0?t.map(this.dehancer):t},t.prototype.intercept=function(t){return de(this,t)},t.prototype.observe=function(t,e){return void 0===e&&(e=!1),e&&t({object:this.array,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),fe(this,t)},t.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},t.prototype.setArrayLength=function(t){if("number"!=typeof t||t<0)throw new Error("[mobx.array] Out of range: "+t);var e=this.values.length;if(t!==e)if(t>e){for(var n=new Array(t-e),a=0;a<t-e;a++)n[a]=void 0;this.spliceWithArray(e,0,n)}else this.spliceWithArray(t,e-t)},t.prototype.updateArrayLength=function(t,e){if(t!==this.lastKnownLength)throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed. Did you use peek() to change it?");this.lastKnownLength+=e,e>0&&t+e+1>ve&&Ie(t+e+1)},t.prototype.spliceWithArray=function(t,e,n){var a=this;dt(this.atom);var r=this.values.length;if(void 0===t?t=0:t>r?t=r:t<0&&(t=Math.max(0,r+t)),e=1===arguments.length?r-t:null==e?0:Math.max(0,Math.min(e,r-t)),void 0===n&&(n=u),ue(this)){var i=le(this,{object:this.array,type:"splice",index:t,removedCount:e,added:n});if(!i)return u;e=i.removedCount,n=i.added}var s=(n=0===n.length?n:n.map((function(t){return a.enhancer(t,void 0)}))).length-e;this.updateArrayLength(r,s);var o=this.spliceItemsIntoValues(t,e,n);return 0===e&&0===n.length||this.notifyArraySplice(t,n,o),this.dehanceValues(o)},t.prototype.spliceItemsIntoValues=function(t,e,n){var a;if(n.length<1e4)return(a=this.values).splice.apply(a,o([t,e],n));var r=this.values.slice(t,t+e);return this.values=this.values.slice(0,t).concat(n,this.values.slice(t+e)),r},t.prototype.notifyArrayChildUpdate=function(t,e,n){var a=!this.owned&&Gt(),r=ce(this),s=r||a?{object:this.array,type:"update",index:t,newValue:e,oldValue:n}:null;a&&zt(i(i({},s),{name:this.atom.name})),this.atom.reportChanged(),r&&he(this,s),a&&Yt()},t.prototype.notifyArraySplice=function(t,e,n){var a=!this.owned&&Gt(),r=ce(this),s=r||a?{object:this.array,type:"splice",index:t,removed:n,added:e,removedCount:n.length,addedCount:e.length}:null;a&&zt(i(i({},s),{name:this.atom.name})),this.atom.reportChanged(),r&&he(this,s),a&&Yt()},t}(),Te=function(t){function e(e,n,a,r){void 0===a&&(a="ObservableArray@"+f()),void 0===r&&(r=!1);var i=t.call(this)||this,s=new _e(a,n,i,r);if(x(i,"$mobx",s),e&&e.length){var o=Tt(!0);i.spliceWithArray(0,0,e),Ot(o)}return ye&&Object.defineProperty(s.array,"0",Oe),i}return r(e,t),e.prototype.intercept=function(t){return this.$mobx.intercept(t)},e.prototype.observe=function(t,e){return void 0===e&&(e=!1),this.$mobx.observe(t,e)},e.prototype.clear=function(){return this.splice(0)},e.prototype.concat=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this.$mobx.atom.reportObserved(),Array.prototype.concat.apply(this.peek(),t.map((function(t){return Ce(t)?t.peek():t})))},e.prototype.replace=function(t){return this.$mobx.spliceWithArray(0,this.$mobx.values.length,t)},e.prototype.toJS=function(){return this.slice()},e.prototype.toJSON=function(){return this.toJS()},e.prototype.peek=function(){return this.$mobx.atom.reportObserved(),this.$mobx.dehanceValues(this.$mobx.values)},e.prototype.find=function(t,e,n){void 0===n&&(n=0);var a=this.findIndex.apply(this,arguments);return-1===a?void 0:this.get(a)},e.prototype.findIndex=function(t,e,n){void 0===n&&(n=0);for(var a=this.peek(),r=a.length,i=n;i<r;i++)if(t.call(e,a[i],i,this))return i;return-1},e.prototype.splice=function(t,e){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];switch(arguments.length){case 0:return[];case 1:return this.$mobx.spliceWithArray(t);case 2:return this.$mobx.spliceWithArray(t,e)}return this.$mobx.spliceWithArray(t,e,n)},e.prototype.spliceWithArray=function(t,e,n){return this.$mobx.spliceWithArray(t,e,n)},e.prototype.push=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(n.values.length,0,t),n.values.length},e.prototype.pop=function(){return this.splice(Math.max(this.$mobx.values.length-1,0),1)[0]},e.prototype.shift=function(){return this.splice(0,1)[0]},e.prototype.unshift=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(0,0,t),n.values.length},e.prototype.reverse=function(){var t=this.slice();return t.reverse.apply(t,arguments)},e.prototype.sort=function(t){var e=this.slice();return e.sort.apply(e,arguments)},e.prototype.remove=function(t){var e=this.$mobx.dehanceValues(this.$mobx.values).indexOf(t);return e>-1&&(this.splice(e,1),!0)},e.prototype.move=function(t,e){function n(t){if(t<0)throw new Error("[mobx.array] Index out of bounds: "+t+" is negative");var e=this.$mobx.values.length;if(t>=e)throw new Error("[mobx.array] Index out of bounds: "+t+" is not smaller than "+e)}if(n.call(this,t),n.call(this,e),t!==e){var a,r=this.$mobx.values;a=t<e?o(r.slice(0,t),r.slice(t+1,e+1),[r[t]],r.slice(e+1)):o(r.slice(0,e),[r[t]],r.slice(e,t),r.slice(t+1)),this.replace(a)}},e.prototype.get=function(t){var e=this.$mobx;if(e){if(t<e.values.length)return e.atom.reportObserved(),e.dehanceValue(e.values[t]);console.warn("[mobx.array] Attempt to read an array index ("+t+") that is out of bounds ("+e.values.length+"). Please check length first. Out of bound indices will not be tracked by MobX")}},e.prototype.set=function(t,e){var n=this.$mobx,a=n.values;if(t<a.length){dt(n.atom);var r=a[t];if(ue(n)){var i=le(n,{type:"update",object:this,index:t,newValue:e});if(!i)return;e=i.newValue}(e=n.enhancer(e,r))!==r&&(a[t]=e,n.notifyArrayChildUpdate(t,e,r))}else{if(t!==a.length)throw new Error("[mobx.array] Index out of bounds, "+t+" is larger than "+a.length);n.spliceWithArray(t,0,[e])}},e}(xe);C(Te.prototype,(function(){this.$mobx.atom.reportObserved();var t=this,e=0;return R({next:function(){return e<t.length?{value:t[e++],done:!1}:{done:!0,value:void 0}}})})),Object.defineProperty(Te.prototype,"length",{enumerable:!1,configurable:!0,get:function(){return this.$mobx.getArrayLength()},set:function(t){this.$mobx.setArrayLength(t)}}),v(Te.prototype,A(),"Array"),["every","filter","forEach","indexOf","join","lastIndexOf","map","reduce","reduceRight","slice","some","toString","toLocaleString"].forEach((function(t){var e=Array.prototype[t];g("function"==typeof e,"Base function not defined on Array prototype: '"+t+"'"),v(Te.prototype,t,(function(){return e.apply(this.peek(),arguments)}))})),function(t,e){for(var n=0;n<e.length;n++)v(t,e[n],t[e[n]])}(Te.prototype,["constructor","intercept","observe","clear","concat","get","replace","toJS","toJSON","peek","find","findIndex","splice","spliceWithArray","push","pop","set","shift","unshift","reverse","sort","remove","move","toString","toLocaleString"]);var Oe=we(0);function we(t){return{enumerable:!1,configurable:!1,get:function(){return this.get(t)},set:function(e){this.set(t,e)}}}function Se(t){Object.defineProperty(Te.prototype,""+t,we(t))}function Ie(t){for(var e=ve;e<t;e++)Se(e);ve=t}Ie(1e3);var Ne=_("ObservableArrayAdministration",_e);function Ce(t){return m(t)&&Ne(t.$mobx)}var Re={},Ae=function(){function t(t,e,n){if(void 0===e&&(e=z),void 0===n&&(n="ObservableMap@"+f()),this.enhancer=e,this.name=n,this.$mobx=Re,this._keys=new Te(void 0,B,this.name+".keys()",!0),"function"!=typeof Map)throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");this._data=new Map,this._hasMap=new Map,this.merge(t)}return t.prototype._has=function(t){return this._data.has(t)},t.prototype.has=function(t){var e=this;if(!Rt.trackingDerivation)return this._has(t);var n=this._hasMap.get(t);if(!n){var a=n=new wt(this._has(t),B,this.name+"."+ke(t)+"?",!1);this._hasMap.set(t,a),te(a,(function(){return e._hasMap.delete(t)}))}return n.get()},t.prototype.set=function(t,e){var n=this._has(t);if(ue(this)){var a=le(this,{type:n?"update":"add",object:this,newValue:e,name:t});if(!a)return this;e=a.newValue}return n?this._updateValue(t,e):this._addValue(t,e),this},t.prototype.delete=function(t){var e=this;if(ue(this)&&!(r=le(this,{type:"delete",object:this,name:t})))return!1;if(this._has(t)){var n=Gt(),a=ce(this),r=a||n?{type:"delete",object:this,oldValue:this._data.get(t).value,name:t}:null;return n&&zt(i(i({},r),{name:this.name,key:t})),oe((function(){e._keys.remove(t),e._updateHasMapEntry(t,!1),e._data.get(t).setNewValue(void 0),e._data.delete(t)})),a&&he(this,r),n&&Yt(),!0}return!1},t.prototype._updateHasMapEntry=function(t,e){var n=this._hasMap.get(t);n&&n.setNewValue(e)},t.prototype._updateValue=function(t,e){var n=this._data.get(t);if((e=n.prepareNewValue(e))!==Rt.UNCHANGED){var a=Gt(),r=ce(this),s=r||a?{type:"update",object:this,oldValue:n.value,name:t,newValue:e}:null;a&&zt(i(i({},s),{name:this.name,key:t})),n.setNewValue(e),r&&he(this,s),a&&Yt()}},t.prototype._addValue=function(t,e){var n=this;oe((function(){var a=new wt(e,n.enhancer,n.name+"."+ke(t),!1);n._data.set(t,a),e=a.value,n._updateHasMapEntry(t,!0),n._keys.push(t)}));var a=Gt(),r=ce(this),s=r||a?{type:"add",object:this,name:t,newValue:e}:null;a&&zt(i(i({},s),{name:this.name,key:t})),r&&he(this,s),a&&Yt()},t.prototype.get=function(t){return this.has(t)?this.dehanceValue(this._data.get(t).get()):this.dehanceValue(void 0)},t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.keys=function(){return this._keys[N()]()},t.prototype.values=function(){var t=this,e=0;return R({next:function(){return e<t._keys.length?{value:t.get(t._keys[e++]),done:!1}:{value:void 0,done:!0}}})},t.prototype.entries=function(){var t=this,e=0;return R({next:function(){if(e<t._keys.length){var n=t._keys[e++];return{value:[n,t.get(n)],done:!1}}return{done:!0}}})},t.prototype.forEach=function(t,e){var n=this;this._keys.forEach((function(a){return t.call(e,n.get(a),a,n)}))},t.prototype.merge=function(t){var e=this;return Ee(t)&&(t=t.toJS()),oe((function(){y(t)?Object.keys(t).forEach((function(n){return e.set(n,t[n])})):Array.isArray(t)?t.forEach((function(t){var n=s(t,2);return e.set(n[0],n[1])})):T(t)?t.constructor!==Map?h("Cannot initialize from classes that inherit from Map: "+t.constructor.name):t.forEach((function(t,n){return e.set(n,t)})):null!=t&&h("Cannot initialize map from "+t)})),this},t.prototype.clear=function(){var t=this;oe((function(){ft((function(){t._keys.slice().forEach((function(e){return t.delete(e)}))}))}))},t.prototype.replace=function(t){var e=this;return oe((function(){for(var n,a=T(n=t)||Ee(n)?n:Array.isArray(n)?new Map(n):y(n)?new Map(Object.entries(n)):h("Cannot convert to map from '"+n+"'"),r=e._keys,i=Array.from(a.keys()),s=!1,o=0;o<r.length;o++){var u=r[o];r.length===i.length&&u!==i[o]&&(s=!0),a.has(u)||(s=!0,e.delete(u))}a.forEach((function(t,n){e._data.has(n)||(s=!0),e.set(n,t)})),s&&e._keys.replace(i)})),this},Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.toPOJO=function(){var t=this,e={};return this._keys.forEach((function(n){return e["symbol"==typeof n?n:ke(n)]=t.get(n)})),e},t.prototype.toJS=function(){var t=this,e=new Map;return this._keys.forEach((function(n){return e.set(n,t.get(n))})),e},t.prototype.toJSON=function(){return this.toPOJO()},t.prototype.toString=function(){var t=this;return this.name+"[{ "+this._keys.map((function(e){return ke(e)+": "+t.get(e)})).join(", ")+" }]"},t.prototype.observe=function(t,e){return fe(this,t)},t.prototype.intercept=function(t){return de(this,t)},t}();function ke(t){return t&&t.toString?t.toString():new String(t).toString()}C(Ae.prototype,(function(){return this.entries()})),x(Ae.prototype,A(),"Map");var Ee=_("ObservableMap",Ae),Le={},De=function(){function t(t,e,n){if(void 0===e&&(e=z),void 0===n&&(n="ObservableSet@"+f()),this.name=n,this.$mobx=Le,this._data=new Set,this._atom=function(t,e,n){void 0===e&&(e=b),void 0===n&&(n=b);var a=new E(t);return ee("onBecomeObserved",a,e,void 0),te(a,n),a}(this.name),"function"!=typeof Set)throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");this.enhancer=function(t,a){return e(t,a,n)},t&&this.replace(t)}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.clear=function(){var t=this;oe((function(){ft((function(){t._data.forEach((function(e){t.delete(e)}))}))}))},t.prototype.forEach=function(t,e){var n=this;this._data.forEach((function(a){t.call(e,a,a,n)}))},Object.defineProperty(t.prototype,"size",{get:function(){return this._atom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),t.prototype.add=function(t){var e=this;if(dt(this._atom),ue(this)&&!(r=le(this,{type:"add",object:this,newValue:t})))return this;if(!this.has(t)){oe((function(){e._data.add(e.enhancer(t,void 0)),e._atom.reportChanged()}));var n=Gt(),a=ce(this),r=a||n?{type:"add",object:this,newValue:t}:null;a&&he(this,r)}return this},t.prototype.delete=function(t){var e=this;if(ue(this)&&!(r=le(this,{type:"delete",object:this,oldValue:t})))return!1;if(this.has(t)){var n=Gt(),a=ce(this),r=a||n?{type:"delete",object:this,oldValue:t}:null;return oe((function(){e._atom.reportChanged(),e._data.delete(t)})),a&&he(this,r),!0}return!1},t.prototype.has=function(t){return this._atom.reportObserved(),this._data.has(this.dehanceValue(t))},t.prototype.entries=function(){var t=0,e=w(this.keys()),n=w(this.values());return R({next:function(){var a=t;return t+=1,a<n.length?{value:[e[a],n[a]],done:!1}:{done:!0}}})},t.prototype.keys=function(){return this.values()},t.prototype.values=function(){this._atom.reportObserved();var t,e=this,n=0;return void 0!==this._data.values?t=w(this._data.values()):(t=[],this._data.forEach((function(e){return t.push(e)}))),R({next:function(){return n<t.length?{value:e.dehanceValue(t[n++]),done:!1}:{done:!0}}})},t.prototype.replace=function(t){var e=this;return Pe(t)&&(t=t.toJS()),oe((function(){Array.isArray(t)?(e.clear(),t.forEach((function(t){return e.add(t)}))):O(t)?(e.clear(),t.forEach((function(t){return e.add(t)}))):null!=t&&h("Cannot initialize set from "+t)})),this},t.prototype.observe=function(t,e){return fe(this,t)},t.prototype.intercept=function(t){return de(this,t)},t.prototype.toJS=function(){return new Set(this)},t.prototype.toString=function(){return this.name+"[ "+w(this.keys()).join(", ")+" ]"},t}();C(De.prototype,(function(){return this.values()})),x(De.prototype,A(),"Set");var Pe=_("ObservableSet",De),Me=function(){function t(t,e,n){this.target=t,this.name=e,this.defaultEnhancer=n,this.values={}}return t.prototype.read=function(t,e){if(this.target===t||(this.illegalAccess(t,e),this.values[e]))return this.values[e].get()},t.prototype.write=function(t,e,n){var a=this.target;a!==t&&this.illegalAccess(t,e);var r=this.values[e];if(r instanceof St)r.set(n);else{if(ue(this)){if(!(u=le(this,{type:"update",object:a,name:e,newValue:n})))return;n=u.newValue}if((n=r.prepareNewValue(n))!==Rt.UNCHANGED){var s=ce(this),o=Gt(),u=s||o?{type:"update",object:a,oldValue:r.value,name:e,newValue:n}:null;o&&zt(i(i({},u),{name:this.name,key:e})),r.setNewValue(n),s&&he(this,u),o&&Yt()}}},t.prototype.remove=function(t){if(this.values[t]){var e=this.target;if(ue(this)&&!(s=le(this,{object:e,name:t,type:"remove"})))return;try{Lt();var n=ce(this),a=Gt(),r=this.values[t].get();this.keys&&this.keys.remove(t),delete this.values[t],delete this.target[t];var s=n||a?{type:"remove",object:e,oldValue:r,name:t}:null;a&&zt(i(i({},s),{name:this.name,key:t})),n&&he(this,s),a&&Yt()}finally{Dt()}}},t.prototype.illegalAccess=function(t,e){console.warn("Property '"+e+"' of '"+t+"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner")},t.prototype.observe=function(t,e){return fe(this,t)},t.prototype.intercept=function(t){return de(this,t)},t.prototype.getKeys=function(){var t=this;return void 0===this.keys&&(this.keys=new Te(Object.keys(this.values).filter((function(e){return t.values[e]instanceof wt})),B,"keys("+this.name+")",!0)),this.keys.slice()},t}();function qe(t,e,n){void 0===e&&(e=""),void 0===n&&(n=z);var a=t.$mobx;return a||(y(t)||(e=(t.constructor.name||"ObservableObject")+"@"+f()),e||(e="ObservableObject@"+f()),x(t,"$mobx",a=new Me(t,e,n)),a)}var je=Object.create(null),Fe=Object.create(null);function Ge(t){return t.$mobx||(F(t),t.$mobx)}var Ve=_("ObservableObjectAdministration",Me);function ze(t){return!!m(t)&&(F(t),Ve(t.$mobx))}function Be(t,e){if("object"==typeof t&&null!==t){if(Ce(t))return void 0!==e&&h(!1),t.$mobx.atom;if(Pe(t))return t.$mobx;if(Ee(t)){var n=t;return void 0===e?Be(n._keys):((a=n._data.get(e)||n._hasMap.get(e))||h(!1),a)}var a;if(F(t),ze(t))return e?((a=t.$mobx.values[e])||h(!1),a):h(!1);if(L(t)||It(t)||Ft(t))return t}else if("function"==typeof t&&Ft(t.$mobx))return t.$mobx;return h(!1)}var Ye=Object.prototype.toString;function He(t,e,n){return void 0===n&&(n=-1),function t(e,n,a,r,i){if(e===n)return 0!==e||1/e==1/n;if(null==e||null==n)return!1;if(e!=e)return n!=n;var s=typeof e;if("function"!==s&&"object"!==s&&"object"!=typeof n)return!1;e=Ue(e),n=Ue(n);var o=Ye.call(e);if(o!==Ye.call(n))return!1;switch(o){case"[object RegExp]":case"[object String]":return""+e==""+n;case"[object Number]":return+e!=+e?+n!=+n:0==+e?1/+e==1/n:+e==+n;case"[object Date]":case"[object Boolean]":return+e==+n;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(n)}var u="[object Array]"===o;if(!u){if("object"!=typeof e||"object"!=typeof n)return!1;var d=e.constructor,l=n.constructor;if(d!==l&&!("function"==typeof d&&d instanceof d&&"function"==typeof l&&l instanceof l)&&"constructor"in e&&"constructor"in n)return!1}if(0===a)return!1;a<0&&(a=-1),i=i||[];for(var c=(r=r||[]).length;c--;)if(r[c]===e)return i[c]===n;if(r.push(e),i.push(n),u){if((c=e.length)!==n.length)return!1;for(;c--;)if(!t(e[c],n[c],a-1,r,i))return!1}else{var f=Object.keys(e),h=void 0;if(c=f.length,Object.keys(n).length!==c)return!1;for(;c--;)if(!We(n,h=f[c])||!t(e[h],n[h],a-1,r,i))return!1}return r.pop(),i.pop(),!0}(t,e,n)}function Ue(t){return Ce(t)?t.peek():T(t)||Ee(t)?w(t.entries()):O(t)||Pe(t)?w(t.entries()):t}function We(t,e){return Object.prototype.hasOwnProperty.call(t,e)}"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(t){return Rt.spyListeners.push(t),p((function(){Rt.spyListeners=Rt.spyListeners.filter((function(e){return e!==t}))}))},extras:{getDebugName:function(t,e){return(void 0!==e?Be(t,e):ze(t)||Ee(t)||Pe(t)?function t(e,n){return e||h("Expecting some object"),void 0!==n?t(Be(e,n)):L(e)||It(e)||Ft(e)?e:Ee(e)||Pe(e)?e:(F(e),e.$mobx?e.$mobx:void h(!1))}(t):Be(t)).name}},$mobx:"$mobx"})},"2ykv":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"3+CB":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ko-KR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>네비게이션 전환</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>현황판</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>클러스터</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>호스트들</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>모니터들</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>서비스들</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD들</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>설정</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>크러쉬맵</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>메니저 모듈들</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>로그들</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>풀들</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>블럭</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>이미지들</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>미러링</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>파일시스템들</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>오브젝트게이트웨이</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>데몬들</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>언어선택</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>패널 데이타 로딩 중...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>그라파나 타임 픽커</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>설정 초기화</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>뒤로</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>데이타 로딩 실폐</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>선택된</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>발견된</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>전체</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>이름</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>설명</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>자세한 설명</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>기본값</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>데모 기본값</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>값들</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>저장하기</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>크러쉬맵 보기</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>로딩중...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>호스트이름</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>이 필드는 필수적입니다.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>예, 확실합니다.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>취소</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>닫기</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>호스트 목록들</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>통합 성능치</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>항목들을 찾을 수 없음</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>클러스터 로그들</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>감사 로그들</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>설정 로딩 중</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>설정을 로드할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>관리모듈 편집하기</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>입력된 값이 유효한 UUID가 아닙니다, 예.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>입력된 값은 유효한 IP주소 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>입력된 값은 적어도 하나의 숫자를 필요로 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>입력 된 값은 숫자 또는 십진수여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>클러스터 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>몬맵 변경시간</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>몬맵 변경번호</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>정족수 일치번호</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>정족수 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>요구되는 일치번호</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>요구되는 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>정족수에 포함</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>정족수 미포함</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>추가</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>특징들</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>클러스터-수준의 OSD 플레그들</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>제출</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>자세한 옵션...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 복구 우선순위</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>우선순위</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>우선 순위 값 맞춤 설정</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>이 필드는 요구됩니다!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>값은 0과 1사이어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>재-조정</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 목록들</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>값</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>편집</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>건강상태</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>통계들</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>클라이언트들</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>모든 클라이언트 접근가능</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>주소들</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>필수 입력란</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>반드시 하나 이상의 쉼표로 구분 된 값을 포함해야 함</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>예를들면:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>접근형태</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>클라이언트들 추가</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 사용가능 클러스터 없음 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 클러스터 선택 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>데몬 추가하기</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>스토리지 백엔드</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 이용가능한 데이타풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 스토리지 백엔드 선택 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>객체 게이트웨이 사용자</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 사용가능한 사용자들 없음 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 객체 게이트웨이 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 사용자 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 사용가능한 클라이언트 없음 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx 클라이언트 선택 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 이름</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>보안 레이블</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>보안 레이블 사용</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 경로</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>경로는 \'/\'로 시작해야하며 그 뒤에 단어가 올 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>새로운 디렉토리가 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>경로</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>경로는 하나의 \'/\' 또는 하나의 단어 일 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>새로운 버킷이 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 프로토콜</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 태크</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>클라이언트는 하위 디렉토리를 마운트 할 수 없습니다 (즉, Tag = foo 인 경우 클라이언트가 foo / baz를 마운트하지 못할 수 있습니다).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>다른 태그 옵션을 사용하면 같은 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>다른 Pseudo 옵션을 사용하면 동일한 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 사용가능한 접근형태 없음 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 접근형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 사용가능한 squash 없음 --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택하세요 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>전송프로토콜</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph 사용을 환영합니다.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>사용자이름이 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>암호가 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>로그인</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>미안합니다. 사용자가 Ceph내에 존재하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>금지됨</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>미안합니다. 당신이 요청할 것을 열람하는 것이 허락되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 설정들</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>로컬 구성 값을 제거하십시오. 상위 구성 값은 계승되고 대신 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>최소값은 0입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>풀 목록들</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>이름은 영숫자, 대시 및 밑줄로만 구성 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>선택한 Erasure Code 프로파일 이름이 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>플러그인</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>데이터 덩어리들 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>반드시 2보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>코딩 덩어리들 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>반드시 1보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>내구성 평가(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>지역 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>크러쉬 실패 도메인</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>크러쉬 지역</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>없음</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>기술</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>패킷크기</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>크러쉬루트</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>크러쉬 장치 클래스</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>디렉토리</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>이름...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>선택한 Ceph 풀이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>풀 형태</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 풀 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>게재위치 그룹</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>적어도 하나의 게재위치 그룹이 필요함!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>클러스터는 이 많은 PG들를 처리 할 수 없습니다. 필요한 PG 양을 다시 계산하십시오.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>계산 도움말</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>복제되는 크기</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>플레그들</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 덮어쓰기</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure Code 프로파일</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 사용가능한 Erasure Code 프로파일 없음 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 한개의 Erasure Code 프로파일 선택 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 크러쉬 룰 선택 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>크러쉬 룰</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>크러쉬 단계들</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>압축</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>양식</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>알고리즘</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 이용가능한 Erasure 압축알고리즘 없음 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>최소 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>예) 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>값은 0보다 커야합니다</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>최대 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>예) 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>값은 최소 blob 크기보다 커야 합니다</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>비율</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>압축율</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>값은 0.0과 1.0 사이 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>예., 100 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>세부설명</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>성능 세부정보들</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>케쉬 계층들 상세설명들</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>이미지를 휴지통에 이동</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>보호가 만료되는 </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>보호되지 않음</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>날짜 형식 오류. "YYYY-MM-DD HH:mm:ss" 형식으로 지정하세요.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>보호기간이 이미 만료되었습니다. 더 미래의 날짜를 선택하거나 공란으로 남겨두세요.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>이미지 옮기기</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>개관</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>타겟들</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>인증 탐색</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만을 포함가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>암호</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>공동 사용자</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>공통 암호</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>이용가능한 정보:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI 타겟이 이용 불가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>풀</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>생성된</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>크기</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>객체크기</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>준비된</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>준비된 총계</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>스트라이핑 단위</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>스트라이핑 횟수</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>상위</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>블록 이름 접두사</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>순서</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>스냅삿</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>이미지</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>이 설정은 전역 값을 덮어씁니다.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>글로벌</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>이것은 전역 값입니다. 이 이미지에 대해 이 옵션의 값이 설정되지 않았습니다.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' 와 \'@\' 문자는 사용불가입니다.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 이용가능한 rbd풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 풀 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>전용 데이타 풀들을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBD의 객체-데이타를 저장하고 있는 전용 풀</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>사이즈를 증가시켜야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>자세한</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>분산저장</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>분산저장단위</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 분산저장단위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>분산저장 개수가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>분산저장단위는 객체크기보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>분산저장 갯수</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>분산저장 단위가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>분산저장 갯수는 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>롤백하려고 합니다.</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>휴지통 비우기</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>풀:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>풀 이름:</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>이미지 복구하기</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>복구를 위해</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>이미지들의 새로운 이름을 입력하고 클릭하세요</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>새로운 이름</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>폐기될</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>까지 보호됨</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 토폴로지</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>기본설정 값들로 부터 인자를 변경하는 것은 일반적으로 필요하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>설정들</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>백스토어</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>확인</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>고급설정들</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>타겟 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN이 잘못된 패턴을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Key\n예를들면: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>추가 정보</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>이 타겟은 고급설정들을 수정했습니다.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>포털</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>포털 추가</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>이 이미지는 설정들을 수정했습니다. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>이미지 추가</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 인증</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>클라이언트 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>개시자 IQN은 유일해야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만 포함이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>개시자는 하나의 그룹에 속해야 하고, 이미지는 그룹안에서 설정합니다.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>추가된 아이템들이 없음</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>게시자 추가</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>그룹들</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>그룹</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>그룹추가</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>휴지통</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>이슈들</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>동기화중</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>준비됨</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>풀 미러모드를 편집하기</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>상대방 클러스터들은 미러를 단절하기 전에 반드시 제거되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>클러스터 이름</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>클러스터 이름이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX 아이디</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX 아이디...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX 아이디가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>모니터 주소들</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>콤마로 분리된 주소들...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>모니터 주소가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 키</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64로 인코딩 된 키 ...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 키는 반드시 base64로 인코드 되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>성능 카운터들을 사용 할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>데몬 목록들</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>버킷데이타 적재 중</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>값이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>선택한 이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>소유자</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>이용가능</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>색인형식</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>위치규칙</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>최대 마커</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>마스터 버젼</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>수정된 시간</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>제로그룹</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>버킷 할당량</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>무제한</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>사용자명</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 사용자명 선택 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>자동생성된 키</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>접근 키</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>비밀 키</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>전체 이름</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>전자우편 주소</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>유예되다.</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>시스템</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>보조사용자들</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>능력치들</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>사용자 할당량</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>보기</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>키들</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>권한</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 권한 선택 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>보조사용자</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>선택한 보조사용자 아이디가 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>읽기, 쓰기</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>가득찬</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>스위프트 키</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>자동생선된 비밀</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>사용자 데이타 적재 중...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>사용자 데이타를 적재할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>선택된 사용자 아이디가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>이것은 유효한 전자우편 주소가 아닙니다.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>선택한 전자우편 주소가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>설정해제됨</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>커스텀</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 키</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>보조사용자가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>키가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>스위프트</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>능력치가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>무제한 크기</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>무제한 객체들</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>입력된 값은 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>세부설명...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>권한들</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>역할들</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>암호 확인</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>암호 확인이 암호와 일치하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>전자우편</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>유효하지않는 전자우편.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>당신의 사용자로부터 "사용자 읽기 / 업데이트"권한을 제거하려고합니다.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>계속하면 모든 사용자에게 역할을 추가하거나 제거 할 수 없게됩니다.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>계속 진행하기를 원하십니까?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>도움말</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>문서</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>대하여</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>대쉬보드 설정</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>사용자 관리</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>로그인된 사용자</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>로그아웃</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>속성들 (OSD 맵)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>메타데이타 사용할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>메타데이타</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>쓰기</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>히스토그램</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>현재 값들</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>최소</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>최대</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>소스</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>수준</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>수행시간에 갱신가능함(편집가능)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>테크들</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>열거형 값들</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>추가로 더보기</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>클러스터 상태</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>관리자 데몬들</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>오브젝트 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>메타데이타 서버들</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>클라이언트 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>클라이언트 처리량</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>클라이언트 읽기/쓰기</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>복구 처리량</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>세정작업</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>성능</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>원시용량</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD당 PG들</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 상태들</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>용량</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>현재</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>업데이트된 검색 인증</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>사용가능한 포탈들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>사용가능한 이미지들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>사용할 수있는 이미지가 없습니다. 대상에 이미지를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>사용할 수있는 개시자가 없습니다. 대상에 개시자를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>타겟</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>쓰기 바이트들</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>읽기 Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>쓰기 Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O 이래로</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>인스탄스</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>이슈</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>진행중</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>편집모드</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>상대방 추가</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>상대방 편집</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>상대방 삭제</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>리더</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 로컬</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 원격</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>상대방 미러</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>키</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>딥 패턴</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>계층화</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>배타적인 락</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>오프젝트-맵(배타적인-락을 요구한다)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>저널링(배탁적인-락을 요구합니다.)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>보호안됨</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 스냅샷 롤백</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 스냅샷</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>삭제될 </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>호스트</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>루트</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>대기 데몬들</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>데몬</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>활동</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>덴트리들</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>아이노드들</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>사용량</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>갱신된</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>이 값은 런타임에 업데이트 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>데몬들 / 클라이언트들은 모니터 구성 데이터베이스에서이 값을 가져 오지 않습니다. \'ceph config set ...\'을 통해이 옵션을 설정하는 것은 허락되지 않습니다. 이 옵션은 ceph.conf 또는 명령 줄을 통해 구성해야합니다.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>옵션은 데몬 시작 중에 만 적용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>옵션은 클러스터 생성할 때 만 영향을 줍니다.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>옵션은 데몬 생성할 때만 영향을줍니다.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>서비스</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>현재값</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>편집가능</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>사용가능</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>사용불가</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>재-접속 중, 기다려 주세요...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>공개 주소</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>열린 세션들</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>들어올 수 없는</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>이전에 마크 아웃 된 OSD는 시작시 다시 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>나갈 수 없는</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD들은 구성된 간격 후에는 자동으로 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>살아나지 않는</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD는 시작할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>죽일 수 없는</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>모니터가 OSD들의 다운을 표시하지 않도록 OSD 장애 보고서가 무시되고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>멈출</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>읽기와 쓰기를 멈춤</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>스크러빙 않됨</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>스크러빙이 비활성화되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>딥 스크럽 안됨</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>딥 스크러빙이 비활성되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>백필 없음</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG들의 백필이 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>복구 않됨</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG들의 복구가 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>비트단위 정렬</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>비트단위 정렬을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>완전삭제된 스냅디렉토리들</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD들이 변화된 스냅셋을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>삭제된 복구들</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>피어링 대신 복구 중에 수행된 삭제물들</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 로그 하드 한계</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>pg 로그 길이에 하드 한계를 넣으세요</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>갱신된 OSD 플래그들</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>아웃</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>인</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>다운</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 손실</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>완전제거</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>완전제거된</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>파괴된</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>쓰여진 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>읽기 ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>쓰기 ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>최대 백필들</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>최대 활성화를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>최대 단일 시작을 복구하기</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>잠자기를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>일</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>심각도</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>시작된</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>사용된</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>이용가능:</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>깨끗한</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>정상동작중</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>경고</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>알려지지 않은</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>정상</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>파일시스템들 없음</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>활성화된</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>대기중인</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>활성화된 데몬들</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>정족수</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 서비스가 설정되지 않음</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>전송</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 사용자</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 파일시스템</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(전역 구성에서 상속)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>전역 구성에서 상속</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택 -</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>사용가능한 데몬이 없읍니다.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>캐쉬모드</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>최소 퇴거 연령</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>최소 플러시 연령</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>목표 최대 바이트들</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>목표 최대 오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>추가된 응용프로그램 없음</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>응용프로그램 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>하나의 풀은 오직 네개의 응용프로그램 정의들을 가질 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target> \'_a-zA-Z0-9\' 문자들만 허락됨</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>최대 길이는 128글자이다.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>필터 또는 추가된 응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>응용프로그램 추가</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure 코드 프로파일</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>복제 크기</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>마지막 변경</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure 코드화된 프로파일</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>버킷</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>사용자들</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>범위</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>만들기</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>시스템 롤</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>갱신된 사용자</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>계속</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>당신의 롤들이 변경되어 당신은 자동적으로 로그아웃되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>각각의 오브젝트들은 데이타-청크 부분들로 분리되어, 각기 다른 OSD에 보관됩니다.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>각 오브젝트들에 대한 코딩 청크를 계산하고 서로 다른 OSD에 저장합니다. \n코딩된 청크의 수는 데이터 손실없이 작동중지 되어 질 수있는 OSD의 숫자이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 플러그인은 가장 일반적이고 유연한 플러그인으로,\n또한 Ceph erasure 코드 풀의 기본값이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>보다 유연한 기술은 reed_sol_van입니다 : k와 m을 설정하면 충분합니다. \ncauchy_good 기술은 빠를 수 있지만 패킷크기를 주의깊게 선택해야합니다. \nreed_sol_r6_op, liberation, blaum_roth, liber8tion은 모두 m = 2로만 구성 할 수 있다는 점에서 RAID-6에 해당합니다.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>인코딩은 한번에 바이트들 크기의 패킷에 대해 수행됩니다. 올바른 패킷 크기를 선택하는 것은 어렵습니다. jerasure 문서에는이 주제에 대한 광범위한 정보가 들어 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasure 플러그인을 사용하면 삭제 된 코딩 된 객체가 여러 OSD에 저장 될 때 하나의 OSD가 손실되는 것을 복구하려면 다른 모든 OSD를 읽어야합니다. 예를 들어 jerasure가 k = 8 및 m = 4로 구성되어있는 경우 하나의 OSD를 잃어 버리면 11 명의 다른 사람들이 수리해야합니다.\nlrc erasure code plugin은 적은 양의 OSD를 사용하여 복구 할 수 있도록 로컬 패리티 청크를 만듭니다. 예를 들어, lrc가 k = 8, m = 4 및 l = 4로 구성된 경우 4 개의 OSD마다 추가 패리티 덩어리가 생성됩니다. 단일 OSD가 손실되면 11 개 대신 4 개의 OSD만으로 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>코딩 및 데이터 청크를 크기 지역 집합으로 그룹화합니다. 예를 들어, k = 4 및 m = 2에 대해, 지역성 = 3 일 때 두 개의 세 그룹이 생성됩니다. 각 세트는 다른 세트의 청크를 읽지 않고도 복구 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>l로 정의 된 각 청크 집합이 저장되는 크러시 버킷의 유형입니다. 예를 들어 랙으로 설정하면 l 개의 청크 그룹이 각각 다른 랙에 배치됩니다. \n랙 선택 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다. 설정되어 있지 않으면, 그러한 그룹화가 수행되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 플러그인은 ISA 라이브러리를 캡슐화합니다. 인텔 프로세서에서만 실행됩니다.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 플러그인은 두 개의 리드 솔로몬 형식으로 제공됩니다.\nreed_sol_van이 설정되면 Vandermonde, cauchy가 설정되면 Cauchy입니다.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec plugin은 다중 SHEC 라이브러리를 캡슐화합니다.\n           ceph가 리드 솔로몬 코드보다 더 효율적으로 데이터를 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>각 데이터 청크가 계산 범위에 포함되는 패리티 청크의 수입니다. 이 수치는 내구성 측정기로 사용됩니다. 예를 들어, c = 2 인 경우 2 개의 OSD가 데이터 손실없이 중단 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 규칙의 첫 번째 단계에 사용 된 크러시 버킷의 이름입니다. 예를 들어 step은 기본값을 취합니다.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>동일한 실패 도메인을 가진 양동이에 두 개의 청크가 없는지 확인하십시오. 예를 들어 실패 도메인이 호스트 인 경우 두 개의 청크가 동일한 호스트에 저장되지 않습니다. 이 단계는 리프 호스트를 선택하는 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSH지도에서 크래시 장치 클래스 이름을 사용하여 특정 클래스 (예 : ssd 또는 hdd)의 장치로 배치를 제한합니다.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>삭제 코드 플러그인이로드되는 디렉토리 이름을 설정하십시오.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>모든 작업들 허용</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>오직 서버를 수정하지 않는 작업들만 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>읽기와 쓰기 작업은 허용되지 않지만, 그외 모든 작업이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>파일의 속성과 디렉토리 내용을 변경하는 읽기, 쓰기 또는 어떠한 작업은 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>전혀 어떠한 접근도 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 우선순위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>낮음</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>높음</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>정보</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>마지막 5분</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>지난 15분</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>지난 30분</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>지난 1시간(기본)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>지난 3시간</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>지난 6시간</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>지난 12시간</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>지난 24시간</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>어제</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>오늘</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>오늘 지금까지</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>그저께</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>지난 2일</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>이번 주 마지막날</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>전주</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>이번주</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>이번주 지금까지</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>지난 7일</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>지난 달</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>이번 달</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>이번 달 지금까지</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>지난 30일</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>지난 90일</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>지난 6개월</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>지난 1년</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>전년도</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>금년도</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>금년 지금까지</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>지난 2년</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>지난 5년</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>선택된 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>다시 선택하기 위해 아이템 선택을 취소</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>선택 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>필터 테그들</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>베찌 추가</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>사용가능한 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>딥 스크럽</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>단조로움</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>다운 표시</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>인 표시</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>아웃 표시</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>보호</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>이름변경</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>휴지통으로 옮기기</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>보호않됨</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>삭제돔</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>복제된</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>복사된</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>평평하게 됨</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>완전삭제됨</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>복구됨</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>롤백됨</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>예</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>아니오</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>서비스 량</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 한계</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>원하는 초당 IO 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>원하는 초당 IO 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>읽기 BPS 제한</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>원하는 초당 읽기 바이스 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>읽기 IOPS 한도</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>원하는 초당 읽기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>쓰기 BPS 한도</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>원하는 초당 쓰기 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>쓰기 IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>원하는 초당 쓰기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>원하는 버스트 IO 바이트 한도 입니다.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>원하는 IO 작업의 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>읽기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>원하는 읽기 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>읽기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>원하는 읽기 작업의 버스트 한도입니다.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>쓰기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>쓰기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>수행중</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>수행</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>수행된</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>알려지지 않는 작업</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>생성하는 중</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>생성</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>갱신 중</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>삭제 중</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>복제중</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>복사중</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>평평하게 하는 중</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>평평함</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>롤백 중</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>옮기는 중</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>옮기기</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>옮겨짐</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>이미지를 찾을 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>복구중</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>완전삭제 중</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>완전삭제</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>모든 풀들</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>피어가 포함되어 있기 때문에 미러링을 비활성화 할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"33Wh":function(t,e,n){var a=n("yoRg"),r=n("eDl+");t.exports=Object.keys||function(t){return a(t,r)}},"38Bd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return r})),n.d(e,"d",(function(){return o}));var a=n("hpHm");class r{constructor(){this.animate=!1,this.max=100}}class i{constructor(t){this.isStacked=!1,this.addClass=!0,this.bars=[],this._max=100,Object.assign(this,t)}set animate(t){this._animate=t,this.bars.forEach(e=>{e.animate=t})}set striped(t){this._striped=t,this.bars.forEach(e=>{e.striped=t})}set value(t){this.isStacked=Array.isArray(t),this._value=t}get isBs3(){return Object(a.d)()}get max(){return this._max}set max(t){this._max=t,this.bars.forEach(t=>{t.recalculatePercentage()})}addBar(t){t.animate=this._animate,t.striped=this._striped,this.bars.push(t)}removeBar(t){this.bars.splice(this.bars.indexOf(t),1)}}class s{constructor(t,e,n){this.el=t,this.renderer=n,this.addClass=!0,this.percent=0,this.progress=e}get type(){return this._type}set type(t){this._type=t,this.applyTypeClasses()}get value(){return this._value}set value(t){(t||0===t)&&(this._value=t,this.recalculatePercentage())}get setBarWidth(){return this.recalculatePercentage(),this.percent}get isBs3(){return Object(a.d)()}ngOnInit(){this.progress.addBar(this)}ngOnDestroy(){this.progress.removeBar(this)}recalculatePercentage(){this.percent=+(this.value/this.progress.max*100).toFixed(2);const t=this.progress.bars.reduce((function(t,e){return t+e.percent}),0);t>100&&(this.percent-=t-100)}applyTypeClasses(){if(this._prevType){const t=`bg-${this._prevType}`;this.renderer.removeClass(this.el.nativeElement,`progress-bar-${this._prevType}`),this.renderer.removeClass(this.el.nativeElement,t),this._prevType=null}if(this._type){const t=`bg-${this._type}`;this.renderer.addClass(this.el.nativeElement,`progress-bar-${this._type}`),this.renderer.addClass(this.el.nativeElement,t),this._prevType=this._type}}}class o{static forRoot(){return{ngModule:o,providers:[r]}}}},"3A9y":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"3E1r":function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात"===e?t<4?t:t+12:"सुबह"===e?t:"दोपहर"===e?t>=10?t:t+12:"शाम"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात":t<10?"सुबह":t<17?"दोपहर":t<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("wd/R"))},"3Fdi":function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"3L66":function(t,e,n){var a=n("MMmD"),r=n("ExA7");t.exports=function(t){return r(t)&&a(t)}},"3N8a":function(t,e,n){"use strict";var a=n("quSY");class r extends a.a{constructor(t,e){super()}schedule(t,e=0){return this}}n.d(e,"a",(function(){return i}));class i extends r{constructor(t,e){super(t,e),this.scheduler=t,this.work=e,this.pending=!1}schedule(t,e=0){if(this.closed)return this;this.state=t;const n=this.id,a=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(a,n,e)),this.pending=!0,this.delay=e,this.id=this.id||this.requestAsyncId(a,this.id,e),this}requestAsyncId(t,e,n=0){return setInterval(t.flush.bind(t,this),n)}recycleAsyncId(t,e,n=0){if(null!==n&&this.delay===n&&!1===this.pending)return e;clearInterval(e)}execute(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const n=this._execute(t,e);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,e){let n=!1,a=void 0;try{this.work(t)}catch(r){n=!0,a=!!r&&r||new Error(r)}if(n)return this.unsubscribe(),a}_unsubscribe(){const t=this.id,e=this.scheduler,n=e.actions,a=n.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==a&&n.splice(a,1),null!=t&&(this.id=this.recycleAsyncId(e,t,null)),this.delay=null}}},"3bBZ":function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("4mDm"),s=n("kRJp"),o=n("tiKp"),u=o("iterator"),d=o("toStringTag"),l=i.values;for(var c in r){var f=a[c],h=f&&f.prototype;if(h){if(h[u]!==l)try{s(h,u,l)}catch(p){h[u]=l}if(h[d]||s(h,d,c),r[c])for(var g in i)if(h[g]!==i[g])try{s(h,g,i[g])}catch(p){h[g]=i[g]}}}},"4/ic":function(t,e,n){var a=n("ZWtO");t.exports=function(t){return function(e){return a(e,t)}}},"44Ds":function(t,e,n){var a=n("e4Nc");function r(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(r.Cache||a),n}r.Cache=a,t.exports=r},"4DD9":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){let e=!1;switch(t){case!0:case 1:case"y":case"yes":case"t":case"true":case"on":case"1":e=!0}return e}}},"4DFU":function(t,e,n){var a=n("+Qka"),r=n("GoyQ");t.exports=function t(e,n,i,s,o,u){return r(e)&&r(n)&&(u.set(n,e),a(e,n,void 0,t,u),u.delete(n)),e}},"4Dmd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},i=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},s=function(){function t(t,e,n){this.renderer=t,this.templateRef=e,this.viewContainerRef=n}return Object.defineProperty(t.prototype,"isOpen",{set:function(t){t?(this._show(),this.isEnabled&&!1===this._isOpen&&this._animateOpen()):this.isEnabled?this._animateClose():this._hide(),this._isOpen=!!t},enumerable:!0,configurable:!0}),t.prototype._show=function(){this.innerElement||(this.innerElement=this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0])},t.prototype._hide=function(){this.viewContainerRef.clear(),this.innerElement=null},t.prototype._animateOpen=function(){var t=this,e=this.animateSpeed,n=this.animateAcceleration,a=0;this.renderer.setStyle(this.innerElement,"max-height","0"),setTimeout((function(){var r=setInterval((function(){if(!t._isOpen||!t.innerElement)return clearInterval(r);var i=Math.round(a+=e);t.renderer.setStyle(t.innerElement,"max-height",i+"px");var s=t.innerElement.getBoundingClientRect?t.innerElement.getBoundingClientRect().height:0;e*=n,n*=1.005,s<i&&(t.renderer.setStyle(t.innerElement,"max-height",null),clearInterval(r))}),17)}))},t.prototype._animateClose=function(){var t=this;if(this.innerElement)var e=this.animateSpeed,n=this.animateAcceleration,a=this.innerElement.getBoundingClientRect().height,r=setInterval((function(){if(t._isOpen||!t.innerElement)return clearInterval(r);t.renderer.setStyle(t.innerElement,"max-height",(a-=e)+"px"),e*=n,n*=1.005,a<=0&&(t.viewContainerRef.clear(),t.innerElement=null,clearInterval(r))}),17)},r([Object(a.Input)("treeAnimateOpenSpeed"),i("design:type",Number)],t.prototype,"animateSpeed",void 0),r([Object(a.Input)("treeAnimateOpenAcceleration"),i("design:type",Number)],t.prototype,"animateAcceleration",void 0),r([Object(a.Input)("treeAnimateOpenEnabled"),i("design:type",Boolean)],t.prototype,"isEnabled",void 0),r([Object(a.Input)("treeAnimateOpen"),i("design:type",Boolean),i("design:paramtypes",[Boolean])],t.prototype,"isOpen",null),r([Object(a.Directive)({selector:"[treeAnimateOpen]"}),i("design:paramtypes",[a.Renderer2,a.TemplateRef,a.ViewContainerRef])],t)}()},"4HWh":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("KOzp"),s=n("z/SZ"),o=n("2uy1");n("p4Cf"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return l}));var u=a["ɵcrt"]({encapsulation:0,styles:[["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,(function(t,e){var n=e.component;t(e,0,0,n.class,n.html)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popoverTpl",2]],null,0,null,d)),(t()(),a["ɵeld"](1,16777216,null,null,4,"i",[["aria-hidden","true"],["container","body"],["placement","bottom"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,1),a["ɵdid"](5,212992,null,0,i.c,[i.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,o.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null)],(function(t,e){var n=t(e,4,0,e.component.icons.questionCircle);t(e,3,0,n),t(e,5,0,a["ɵnov"](e,0),"bottom",!0,"body")}),null)}},"4I5i":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t})()},"4MV3":function(t,e,n){!function(t){"use strict";var e={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};t.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(t){return t.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(t,e){return 12===t&&(t=0),"રાત"===e?t<4?t:t+12:"સવાર"===e?t:"બપોર"===e?t>=10?t:t+12:"સાંજ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"રાત":t<10?"સવાર":t<17?"બપોર":t<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("wd/R"))},"4Oe1":function(t,e,n){var a=n("YO3V");t.exports=function(t){return a(t)?void 0:t}},"4WOD":function(t,e,n){var a=n("UTVS"),r=n("ewvW"),i=n("93I0"),s=n("4Xet"),o=i("IE_PROTO"),u=Object.prototype;t.exports=s?Object.getPrototypeOf:function(t){return t=r(t),a(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},"4Xet":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},"4dOw":function(t,e,n){!function(t){"use strict";t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"4kuk":function(t,e,n){var a=n("SfRM"),r=n("Hvzi"),i=n("u8Dt"),s=n("ekgI"),o=n("JSQU");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}u.prototype.clear=a,u.prototype.delete=r,u.prototype.get=i,u.prototype.has=s,u.prototype.set=o,t.exports=u},"4l63":function(t,e,n){var a=n("I+eb"),r=n("wg0c");a({global:!0,forced:parseInt!=r},{parseInt:r})},"4mDm":function(t,e,n){"use strict";var a=n("/GqU"),r=n("RNIs"),i=n("P4y1"),s=n("afO8"),o=n("fdAy"),u=s.set,d=s.getterFor("Array Iterator");t.exports=o(Array,"Array",(function(t,e){u(this,{type:"Array Iterator",target:a(t),index:0,kind:e})}),(function(){var t=d(this),e=t.target,n=t.kind,a=t.index++;return!e||a>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:a,done:!1}:"values"==n?{value:e[a],done:!1}:{value:[a,e[a]],done:!1}}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},"4qC0":function(t,e,n){var a=n("NykK"),r=n("Z0cm"),i=n("ExA7");t.exports=function(t){return"string"==typeof t||!r(t)&&i(t)&&"[object String]"==a(t)}},"4sDh":function(t,e,n){var a=n("4uTw"),r=n("03A+"),i=n("Z0cm"),s=n("wJg7"),o=n("shjB"),u=n("9Nap");t.exports=function(t,e,n){for(var d=-1,l=(e=a(e,t)).length,c=!1;++d<l;){var f=u(e[d]);if(!(c=null!=t&&n(t,f)))break;t=t[f]}return c||++d!=l?c:!!(l=null==t?0:t.length)&&o(l)&&s(f,l)&&(i(t)||r(t))}},"4syw":function(t,e,n){var a=n("busE");t.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},"4uTw":function(t,e,n){var a=n("Z0cm"),r=n("9ggG"),i=n("GNiM"),s=n("dt0z");t.exports=function(t,e){return a(t)?t:r(t,e)?[t]:i(s(t))}},"5+tZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("ZUHj"),r=n("l7GE"),i=n("51Dv"),s=n("lJxs"),o=n("Cfvw");function u(t,e,n=Number.POSITIVE_INFINITY){return"function"==typeof e?a=>a.pipe(u((n,a)=>Object(o.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))),n)):("number"==typeof e&&(n=e),e=>e.lift(new d(t,n)))}class d{constructor(t,e=Number.POSITIVE_INFINITY){this.project=t,this.concurrent=e}call(t,e){return e.subscribe(new l(t,this.project,this.concurrent))}}class l extends r.a{constructor(t,e,n=Number.POSITIVE_INFINITY){super(t),this.project=e,this.concurrent=n,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(t){this.active<this.concurrent?this._tryNext(t):this.buffer.push(t)}_tryNext(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.active++,this._innerSub(e,t,n)}_innerSub(t,e,n){const r=new i.a(this,e,n),s=this.destination;s.add(r);const o=Object(a.a)(this,t,void 0,void 0,r);o!==r&&s.add(o)}_complete(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()}notifyNext(t,e,n,a,r){this.destination.next(e)}notifyComplete(t){const e=this.buffer;this.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}},"51Dv":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{constructor(t,e,n){super(),this.parent=t,this.outerValue=e,this.outerIndex=n,this.index=0}_next(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)}_error(t){this.parent.notifyError(t,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}},"5Tg0":function(t,e,n){(function(t){var a=n("Kz5y"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r?a.Buffer:void 0,o=s?s.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,a=o?o(n):new t.constructor(n);return t.copy(a),a}}).call(this,n("YuTi")(t))},"6+QB":function(t,e,n){!function(t){"use strict";t.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},"6B0Y":function(t,e,n){!function(t){"use strict";var e={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};t.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(t){return"ល្ងាច"===t},meridiem:function(t,e,n){return t<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(t){return t.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},"6JNq":function(t,e,n){var a=n("UTVS"),r=n("Vu81"),i=n("Bs8V"),s=n("m/L8");t.exports=function(t,e){for(var n=r(e),o=s.f,u=i.f,d=0;d<n.length;d++){var l=n[d];a(t,l)||o(t,l,u(e,l))}}},"6LWA":function(t,e,n){var a=n("xrYK");t.exports=Array.isArray||function(t){return"Array"==a(t)}},"6MUB":function(t,e,n){"use strict";var a=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,r){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map((function(r){var i=encodeURIComponent(a(r))+n;return Array.isArray(t[r])?t[r].map((function(t){return i+encodeURIComponent(a(t))})).join(e):i+encodeURIComponent(a(t[r]))})).join(e):r?encodeURIComponent(a(r))+n+encodeURIComponent(a(t)):""}},"6VoE":function(t,e,n){var a=n("tiKp"),r=n("P4y1"),i=a("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||s[i]===t)}},"6sVZ":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"711d":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"77Zs":function(t,e,n){var a=n("Xi7e");t.exports=function(){this.__data__=new a,this.size=0}},"7BjC":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["ühe minuti","üks minut"],mm:[t+" minuti",t+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[t+" tunni",t+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[t+" kuu",t+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[t+" aasta",t+" aastat"]};return e?r[n][2]?r[n][2]:r[n][1]:a?r[n][0]:r[n][1]}t.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d päeva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"7GkX":function(t,e,n){var a=n("b80T"),r=n("A90E"),i=n("MMmD");t.exports=function(t){return i(t)?a(t):r(t)}},"7Ix3":function(t,e){t.exports=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}},"7aV9":function(t,e,n){!function(t){"use strict";t.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(t){return t+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(t){return"ප.ව."===t||"පස් වරු"===t},meridiem:function(t,e,n){return t>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("wd/R"))},"7fqy":function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}},"7o/Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("n6bG"),r=n("gRHU"),i=n("quSY"),s=n("2QA8"),o=n("2fFW"),u=n("NJ4a");class d extends i.a{constructor(t,e,n){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=r.a;break;case 1:if(!t){this.destination=r.a;break}if("object"==typeof t){t instanceof d?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new l(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new l(this,t,e,n)}}[s.a](){return this}static create(t,e,n){const a=new d(t,e,n);return a.syncErrorThrowable=!1,a}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class l extends d{constructor(t,e,n,i){let s;super(),this._parentSubscriber=t;let o=this;Object(a.a)(e)?s=e:e&&(s=e.next,n=e.error,i=e.complete,e!==r.a&&(o=Object.create(e),Object(a.a)(o.unsubscribe)&&this.add(o.unsubscribe.bind(o)),o.unsubscribe=this.unsubscribe.bind(this))),this._context=o,this._next=s,this._error=n,this._complete=i}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:e}=this;o.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:e}=this,{useDeprecatedSynchronousErrorHandling:n}=o.a;if(this._error)n&&e.syncErrorThrowable?(this.__tryOrSetError(e,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(e.syncErrorThrowable)n?(e.syncErrorValue=t,e.syncErrorThrown=!0):Object(u.a)(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;Object(u.a)(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const e=()=>this._complete.call(this._context);o.a.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,e),this.unsubscribe()):(this.__tryOrUnsub(e),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),o.a.useDeprecatedSynchronousErrorHandling)throw n;Object(u.a)(n)}}__tryOrSetError(t,e,n){if(!o.a.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(a){return o.a.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=a,t.syncErrorThrown=!0,!0):(Object(u.a)(a),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}},"7qid":function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return f}));var a=n("8Y7J"),r=n("38Bd"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](0,[a["ɵncd"](null,0)],null,null)}var u=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%] {\n      width: 100%;\n      display: flex;\n    }"],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,o,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,n.type,n._value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,o,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),(t()(),a["ɵted"](2,0,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.type,e.context.$implicit.value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass),t(e,2,0,e.context.$implicit.label)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component._value)}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,!n.isStacked),t(e,3,0,n.isStacked)}),null)}},"8/+R":function(t,e,n){!function(t){"use strict";var e={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};t.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(t){return t.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ਰਾਤ"===e?t<4?t:t+12:"ਸਵੇਰ"===e?t:"ਦੁਪਹਿਰ"===e?t>=10?t:t+12:"ਸ਼ਾਮ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ਰਾਤ":t<10?"ਸਵੇਰ":t<17?"ਦੁਪਹਿਰ":t<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("wd/R"))},"85J/":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(t);return e?e[1]:t}}},"88Gu":function(t,e){var n=Date.now;t.exports=function(t){var e=0,a=0;return function(){var r=n(),i=16-(r-a);if(a=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},"8Y7J":function(t,e,n){"use strict";n.r(e);var a=n("XNiG"),r=n("quSY"),i=n("HDdC"),s=n("VRyK"),o=n("7o/Q");function u(){return function(t){return t.lift(new d(t))}}class d{constructor(t){this.connectable=t}call(t,e){const{connectable:n}=this;n._refCount++;const a=new l(t,n),r=e.subscribe(a);return a.closed||(a.connection=n.connect()),r}}class l extends o.a{constructor(t,e){super(t),this.connectable=e}_unsubscribe(){const{connectable:t}=this;if(!t)return void(this.connection=null);this.connectable=null;const e=t._refCount;if(e<=0)return void(this.connection=null);if(t._refCount=e-1,e>1)return void(this.connection=null);const{connection:n}=this,a=t._connection;this.connection=null,!a||n&&a!==n||a.unsubscribe()}}class c extends i.a{constructor(t,e){super(),this.source=t,this.subjectFactory=e,this._refCount=0,this._isComplete=!1}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject}connect(){let t=this._connection;return t||(this._isComplete=!1,t=this._connection=new r.a,t.add(this.source.subscribe(new h(this.getSubject(),this))),t.closed&&(this._connection=null,t=r.a.EMPTY)),t}refCount(){return u()(this)}}const f=(()=>{const t=c.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}})();class h extends a.b{constructor(t,e){super(t),this.connectable=e}_error(t){this._unsubscribe(),super._error(t)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const t=this.connectable;if(t){this.connectable=null;const e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}}}function g(){return new a.a}n.d(e,"ɵangular_packages_core_core_q",(function(){return fv})),n.d(e,"ɵangular_packages_core_core_n",(function(){return dv})),n.d(e,"ɵangular_packages_core_core_o",(function(){return lv})),n.d(e,"ɵangular_packages_core_core_p",(function(){return cv})),n.d(e,"ɵangular_packages_core_core_r",(function(){return hv})),n.d(e,"ɵangular_packages_core_core_f",(function(){return xm})),n.d(e,"ɵangular_packages_core_core_l",(function(){return df})),n.d(e,"ɵangular_packages_core_core_m",(function(){return bf})),n.d(e,"ɵangular_packages_core_core_k",(function(){return Wy})),n.d(e,"ɵangular_packages_core_core_j",(function(){return Uy})),n.d(e,"ɵangular_packages_core_core_b",(function(){return ut})),n.d(e,"ɵangular_packages_core_core_a",(function(){return at})),n.d(e,"ɵangular_packages_core_core_c",(function(){return yu})),n.d(e,"ɵangular_packages_core_core_d",(function(){return su})),n.d(e,"ɵangular_packages_core_core_e",(function(){return fu})),n.d(e,"ɵangular_packages_core_core_i",(function(){return Py})),n.d(e,"ɵangular_packages_core_core_s",(function(){return ty})),n.d(e,"ɵangular_packages_core_core_u",(function(){return Zm})),n.d(e,"ɵangular_packages_core_core_t",(function(){return $m})),n.d(e,"ɵangular_packages_core_core_x",(function(){return Xm})),n.d(e,"ɵangular_packages_core_core_v",(function(){return Jm})),n.d(e,"ɵangular_packages_core_core_w",(function(){return Qm})),n.d(e,"ɵangular_packages_core_core_ba",(function(){return Sg})),n.d(e,"ɵangular_packages_core_core_bb",(function(){return xa})),n.d(e,"ɵangular_packages_core_core_bc",(function(){return Ae})),n.d(e,"ɵangular_packages_core_core_bd",(function(){return Ve})),n.d(e,"ɵangular_packages_core_core_be",(function(){return rn})),n.d(e,"ɵangular_packages_core_core_bm",(function(){return ca})),n.d(e,"ɵangular_packages_core_core_bl",(function(){return ve})),n.d(e,"ɵangular_packages_core_core_g",(function(){return $s})),n.d(e,"ɵangular_packages_core_core_h",(function(){return Zs})),n.d(e,"ɵangular_packages_core_core_bg",(function(){return Cr})),n.d(e,"ɵangular_packages_core_core_bk",(function(){return wt})),n.d(e,"ɵangular_packages_core_core_bh",(function(){return x})),n.d(e,"ɵangular_packages_core_core_bi",(function(){return _})),n.d(e,"ɵangular_packages_core_core_bn",(function(){return R})),n.d(e,"ɵangular_packages_core_core_y",(function(){return lg})),n.d(e,"ɵangular_packages_core_core_z",(function(){return Gf})),n.d(e,"createPlatform",(function(){return Sy})),n.d(e,"assertPlatform",(function(){return Ny})),n.d(e,"destroyPlatform",(function(){return Cy})),n.d(e,"getPlatform",(function(){return Ry})),n.d(e,"PlatformRef",(function(){return Ay})),n.d(e,"ApplicationRef",(function(){return Ey})),n.d(e,"createPlatformFactory",(function(){return Iy})),n.d(e,"NgProbeToken",(function(){return wy})),n.d(e,"enableProdMode",(function(){return Ka})),n.d(e,"isDevMode",(function(){return Wa})),n.d(e,"APP_ID",(function(){return vm})),n.d(e,"PACKAGE_ROOT_URL",(function(){return Im})),n.d(e,"PLATFORM_INITIALIZER",(function(){return Om})),n.d(e,"PLATFORM_ID",(function(){return wm})),n.d(e,"APP_BOOTSTRAP_LISTENER",(function(){return Sm})),n.d(e,"APP_INITIALIZER",(function(){return mm})),n.d(e,"ApplicationInitStatus",(function(){return ym})),n.d(e,"DebugElement",(function(){return ov})),n.d(e,"DebugEventListener",(function(){return Hy})),n.d(e,"DebugNode",(function(){return sv})),n.d(e,"asNativeElements",(function(){return Ky})),n.d(e,"getDebugNode",(function(){return rv})),n.d(e,"Testability",(function(){return py})),n.d(e,"TestabilityRegistry",(function(){return by})),n.d(e,"setTestabilityGetter",(function(){return yy})),n.d(e,"TRANSLATIONS",(function(){return Rm})),n.d(e,"TRANSLATIONS_FORMAT",(function(){return Am})),n.d(e,"LOCALE_ID",(function(){return Cm})),n.d(e,"MissingTranslationStrategy",(function(){return km})),n.d(e,"ApplicationModule",(function(){return gv})),n.d(e,"wtfCreateScope",(function(){return ny})),n.d(e,"wtfLeave",(function(){return ay})),n.d(e,"wtfStartTimeRange",(function(){return ry})),n.d(e,"wtfEndTimeRange",(function(){return iy})),n.d(e,"Type",(function(){return no})),n.d(e,"EventEmitter",(function(){return tb})),n.d(e,"ErrorHandler",(function(){return Da})),n.d(e,"Sanitizer",(function(){return vr})),n.d(e,"SecurityContext",(function(){return yr})),n.d(e,"Attribute",(function(){return N})),n.d(e,"ANALYZE_FOR_ENTRY_COMPONENTS",(function(){return vu})),n.d(e,"ContentChild",(function(){return Tu})),n.d(e,"ContentChildren",(function(){return _u})),n.d(e,"Query",(function(){return xu})),n.d(e,"ViewChild",(function(){return wu})),n.d(e,"ViewChildren",(function(){return Ou})),n.d(e,"Component",(function(){return nm})),n.d(e,"Directive",(function(){return em})),n.d(e,"HostBinding",(function(){return sm})),n.d(e,"HostListener",(function(){return om})),n.d(e,"Input",(function(){return rm})),n.d(e,"Output",(function(){return im})),n.d(e,"Pipe",(function(){return am})),n.d(e,"NgModule",(function(){return gm})),n.d(e,"CUSTOM_ELEMENTS_SCHEMA",(function(){return Pa})),n.d(e,"NO_ERRORS_SCHEMA",(function(){return Ma})),n.d(e,"ViewEncapsulation",(function(){return Ot})),n.d(e,"Version",(function(){return of})),n.d(e,"VERSION",(function(){return uf})),n.d(e,"InjectFlags",(function(){return C})),n.d(e,"ɵɵdefineInjectable",(function(){return k})),n.d(e,"defineInjectable",(function(){return E})),n.d(e,"ɵɵdefineInjector",(function(){return L})),n.d(e,"forwardRef",(function(){return G})),n.d(e,"resolveForwardRef",(function(){return V})),n.d(e,"Injectable",(function(){return So})),n.d(e,"Injector",(function(){return Bo})),n.d(e,"ɵɵinject",(function(){return rt})),n.d(e,"inject",(function(){return it})),n.d(e,"INJECTOR",(function(){return $})),n.d(e,"ReflectiveInjector",(function(){return mu})),n.d(e,"ResolvedReflectiveFactory",(function(){return du})),n.d(e,"ReflectiveKey",(function(){return eu})),n.d(e,"InjectionToken",(function(){return K})),n.d(e,"Inject",(function(){return T})),n.d(e,"Optional",(function(){return O})),n.d(e,"Self",(function(){return w})),n.d(e,"SkipSelf",(function(){return S})),n.d(e,"Host",(function(){return I})),n.d(e,"NgZone",(function(){return uy})),n.d(e,"ɵNoopNgZone",(function(){return gy})),n.d(e,"RenderComponentType",(function(){return Jc})),n.d(e,"Renderer",(function(){return Xc})),n.d(e,"Renderer2",(function(){return af})),n.d(e,"RendererFactory2",(function(){return ef})),n.d(e,"RendererStyleFlags2",(function(){return nf})),n.d(e,"RootRenderer",(function(){return tf})),n.d(e,"COMPILER_OPTIONS",(function(){return Hm})),n.d(e,"Compiler",(function(){return Ym})),n.d(e,"CompilerFactory",(function(){return Um})),n.d(e,"ModuleWithComponentFactories",(function(){return Dm})),n.d(e,"ComponentFactory",(function(){return Gc})),n.d(e,"ɵComponentFactory",(function(){return Gc})),n.d(e,"ComponentRef",(function(){return Fc})),n.d(e,"ComponentFactoryResolver",(function(){return Yc})),n.d(e,"ElementRef",(function(){return Kc})),n.d(e,"NgModuleFactory",(function(){return ht})),n.d(e,"NgModuleRef",(function(){return ft})),n.d(e,"NgModuleFactoryLoader",(function(){return Dy})),n.d(e,"getModuleFactory",(function(){return qy})),n.d(e,"QueryList",(function(){return nb})),n.d(e,"SystemJsNgModuleLoader",(function(){return Vy})),n.d(e,"SystemJsNgModuleLoaderConfig",(function(){return Fy})),n.d(e,"TemplateRef",(function(){return wf})),n.d(e,"ViewContainerRef",(function(){return Nf})),n.d(e,"EmbeddedViewRef",(function(){return Yy})),n.d(e,"ViewRef",(function(){return By})),n.d(e,"ChangeDetectionStrategy",(function(){return xt})),n.d(e,"ChangeDetectorRef",(function(){return Xs})),n.d(e,"DefaultIterableDiffer",(function(){return cf})),n.d(e,"IterableDiffers",(function(){return vf})),n.d(e,"KeyValueDiffers",(function(){return xf})),n.d(e,"SimpleChange",(function(){return Tc})),n.d(e,"WrappedValue",(function(){return Mu})),n.d(e,"platformCore",(function(){return uv})),n.d(e,"ɵALLOW_MULTIPLE_PLATFORMS",(function(){return Oy})),n.d(e,"ɵAPP_ID_RANDOM_PROVIDER",(function(){return _m})),n.d(e,"ɵdefaultIterableDiffers",(function(){return Tf})),n.d(e,"ɵdefaultKeyValueDiffers",(function(){return Of})),n.d(e,"ɵdevModeEqual",(function(){return Pu})),n.d(e,"ɵisListLikeIterable",(function(){return qu})),n.d(e,"ɵChangeDetectorStatus",(function(){return _t})),n.d(e,"ɵisDefaultChangeDetectionStrategy",(function(){return Tt})),n.d(e,"ɵConsole",(function(){return Nm})),n.d(e,"ɵsetCurrentInjector",(function(){return et})),n.d(e,"ɵgetInjectableDef",(function(){return D})),n.d(e,"ɵAPP_ROOT",(function(){return Co})),n.d(e,"ɵDEFAULT_LOCALE_ID",(function(){return Dg})),n.d(e,"ɵivyEnabled",(function(){return Lm})),n.d(e,"ɵCodegenComponentFactoryResolver",(function(){return Hc})),n.d(e,"ɵclearResolutionOfComponentResourcesQueue",(function(){return Ru})),n.d(e,"ɵresolveComponentResources",(function(){return Su})),n.d(e,"ɵReflectionCapabilities",(function(){return uo})),n.d(e,"ɵRenderDebugInfo",(function(){return Qc})),n.d(e,"ɵ_sanitizeHtml",(function(){return br})),n.d(e,"ɵ_sanitizeStyle",(function(){return Tr})),n.d(e,"ɵ_sanitizeUrl",(function(){return Qa})),n.d(e,"ɵglobal",(function(){return U})),n.d(e,"ɵlooseIdentical",(function(){return Du})),n.d(e,"ɵstringify",(function(){return j})),n.d(e,"ɵmakeDecorator",(function(){return y})),n.d(e,"ɵisObservable",(function(){return el})),n.d(e,"ɵisPromise",(function(){return tl})),n.d(e,"ɵclearOverrides",(function(){return Bx})),n.d(e,"ɵinitServicesIfNeeded",(function(){return rx})),n.d(e,"ɵoverrideComponentView",(function(){return zx})),n.d(e,"ɵoverrideProvider",(function(){return Vx})),n.d(e,"ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR",(function(){return mg})),n.d(e,"ɵgetLocalePluralCase",(function(){return Eg})),n.d(e,"ɵfindLocaleData",(function(){return Lg})),n.d(e,"ɵLOCALE_DATA",(function(){return Cg})),n.d(e,"ɵLocaleDataIndex",(function(){return Rg})),n.d(e,"ɵɵattribute",(function(){return Wu})),n.d(e,"ɵɵattributeInterpolate1",(function(){return ad})),n.d(e,"ɵɵattributeInterpolate2",(function(){return rd})),n.d(e,"ɵɵattributeInterpolate3",(function(){return id})),n.d(e,"ɵɵattributeInterpolate4",(function(){return sd})),n.d(e,"ɵɵattributeInterpolate5",(function(){return od})),n.d(e,"ɵɵattributeInterpolate6",(function(){return ud})),n.d(e,"ɵɵattributeInterpolate7",(function(){return dd})),n.d(e,"ɵɵattributeInterpolate8",(function(){return ld})),n.d(e,"ɵɵattributeInterpolateV",(function(){return cd})),n.d(e,"ɵɵdefineBase",(function(){return zt})),n.d(e,"ɵɵdefineComponent",(function(){return Pt})),n.d(e,"ɵɵdefineDirective",(function(){return Bt})),n.d(e,"ɵɵdefinePipe",(function(){return Yt})),n.d(e,"ɵɵdefineNgModule",(function(){return Ft})),n.d(e,"ɵdetectChanges",(function(){return fd})),n.d(e,"ɵrenderComponent",(function(){return bc})),n.d(e,"ɵRender3ComponentFactory",(function(){return Ig})),n.d(e,"ɵRender3ComponentRef",(function(){return Ng})),n.d(e,"ɵɵdirectiveInject",(function(){return Td})),n.d(e,"ɵɵinjectAttribute",(function(){return Od})),n.d(e,"ɵɵinjectPipeChangeDetectorRef",(function(){return Sb})),n.d(e,"ɵɵgetFactoryOf",(function(){return Ra})),n.d(e,"ɵɵgetInheritedFactory",(function(){return Aa})),n.d(e,"ɵɵsetComponentScope",(function(){return Mt})),n.d(e,"ɵɵsetNgModuleScope",(function(){return Gt})),n.d(e,"ɵɵtemplateRefExtractor",(function(){return wb})),n.d(e,"ɵɵProvidersFeature",(function(){return jc})),n.d(e,"ɵɵInheritDefinitionFeature",(function(){return Nc})),n.d(e,"ɵɵNgOnChangesFeature",(function(){return Oc})),n.d(e,"ɵLifecycleHooksFeature",(function(){return xc})),n.d(e,"ɵRender3NgModuleRef",(function(){return Lp})),n.d(e,"ɵmarkDirty",(function(){return hd})),n.d(e,"ɵNgModuleFactory",(function(){return Dp})),n.d(e,"ɵNO_CHANGE",(function(){return ci})),n.d(e,"ɵɵcontainer",(function(){return gd})),n.d(e,"ɵɵnextContext",(function(){return ol})),n.d(e,"ɵɵelementStart",(function(){return Bd})),n.d(e,"ɵɵnamespaceHTML",(function(){return gn})),n.d(e,"ɵɵnamespaceMathML",(function(){return hn})),n.d(e,"ɵɵnamespaceSVG",(function(){return fn})),n.d(e,"ɵɵelement",(function(){return Hd})),n.d(e,"ɵɵlistener",(function(){return nl})),n.d(e,"ɵɵtext",(function(){return Ol})),n.d(e,"ɵɵtextInterpolate",(function(){return Sl})),n.d(e,"ɵɵtextInterpolate1",(function(){return Il})),n.d(e,"ɵɵtextInterpolate2",(function(){return Nl})),n.d(e,"ɵɵtextInterpolate3",(function(){return Cl})),n.d(e,"ɵɵtextInterpolate4",(function(){return Rl})),n.d(e,"ɵɵtextInterpolate5",(function(){return Al})),n.d(e,"ɵɵtextInterpolate6",(function(){return kl})),n.d(e,"ɵɵtextInterpolate7",(function(){return El})),n.d(e,"ɵɵtextInterpolate8",(function(){return Ll})),n.d(e,"ɵɵtextInterpolateV",(function(){return Dl})),n.d(e,"ɵɵembeddedViewStart",(function(){return Jd})),n.d(e,"ɵɵprojection",(function(){return fl})),n.d(e,"ɵɵpipeBind1",(function(){return Wp})),n.d(e,"ɵɵpipeBind2",(function(){return Kp})),n.d(e,"ɵɵpipeBind3",(function(){return $p})),n.d(e,"ɵɵpipeBind4",(function(){return Zp})),n.d(e,"ɵɵpipeBindV",(function(){return Jp})),n.d(e,"ɵɵpureFunction0",(function(){return Mp})),n.d(e,"ɵɵpureFunction1",(function(){return qp})),n.d(e,"ɵɵpureFunction2",(function(){return jp})),n.d(e,"ɵɵpureFunction3",(function(){return Fp})),n.d(e,"ɵɵpureFunction4",(function(){return Gp})),n.d(e,"ɵɵpureFunction5",(function(){return Vp})),n.d(e,"ɵɵpureFunction6",(function(){return zp})),n.d(e,"ɵɵpureFunction7",(function(){return Bp})),n.d(e,"ɵɵpureFunction8",(function(){return Yp})),n.d(e,"ɵɵpureFunctionV",(function(){return Hp})),n.d(e,"ɵɵgetCurrentView",(function(){return Xd})),n.d(e,"ɵgetDirectives",(function(){return sc})),n.d(e,"ɵgetHostElement",(function(){return uc})),n.d(e,"ɵɵrestoreView",(function(){return Ge})),n.d(e,"ɵɵcontainerRefreshStart",(function(){return bd})),n.d(e,"ɵɵcontainerRefreshEnd",(function(){return md})),n.d(e,"ɵɵqueryRefresh",(function(){return cb})),n.d(e,"ɵɵviewQuery",(function(){return hb})),n.d(e,"ɵɵstaticViewQuery",(function(){return fb})),n.d(e,"ɵɵstaticContentQuery",(function(){return mb})),n.d(e,"ɵɵloadViewQuery",(function(){return pb})),n.d(e,"ɵɵcontentQuery",(function(){return bb})),n.d(e,"ɵɵloadContentQuery",(function(){return vb})),n.d(e,"ɵɵelementEnd",(function(){return Yd})),n.d(e,"ɵɵhostProperty",(function(){return Xl})),n.d(e,"ɵɵproperty",(function(){return Hu})),n.d(e,"ɵɵpropertyInterpolate",(function(){return hl})),n.d(e,"ɵɵpropertyInterpolate1",(function(){return gl})),n.d(e,"ɵɵpropertyInterpolate2",(function(){return pl})),n.d(e,"ɵɵpropertyInterpolate3",(function(){return bl})),n.d(e,"ɵɵpropertyInterpolate4",(function(){return ml})),n.d(e,"ɵɵpropertyInterpolate5",(function(){return yl})),n.d(e,"ɵɵpropertyInterpolate6",(function(){return vl})),n.d(e,"ɵɵpropertyInterpolate7",(function(){return xl})),n.d(e,"ɵɵpropertyInterpolate8",(function(){return _l})),n.d(e,"ɵɵpropertyInterpolateV",(function(){return Tl})),n.d(e,"ɵɵupdateSyntheticHostBinding",(function(){return tc})),n.d(e,"ɵɵcomponentHostSyntheticListener",(function(){return al})),n.d(e,"ɵɵprojectionDef",(function(){return dl})),n.d(e,"ɵɵreference",(function(){return xd})),n.d(e,"ɵɵenableBindings",(function(){return Ce})),n.d(e,"ɵɵdisableBindings",(function(){return Re})),n.d(e,"ɵɵallocHostVars",(function(){return ku})),n.d(e,"ɵɵelementContainerStart",(function(){return Kd})),n.d(e,"ɵɵelementContainerEnd",(function(){return $d})),n.d(e,"ɵɵelementContainer",(function(){return Zd})),n.d(e,"ɵɵstyling",(function(){return wd})),n.d(e,"ɵɵstyleMap",(function(){return Ad})),n.d(e,"ɵɵstyleSanitizer",(function(){return Sd})),n.d(e,"ɵɵclassMap",(function(){return kd})),n.d(e,"ɵɵclassMapInterpolate1",(function(){return Pl})),n.d(e,"ɵɵclassMapInterpolate2",(function(){return Ml})),n.d(e,"ɵɵclassMapInterpolate3",(function(){return ql})),n.d(e,"ɵɵclassMapInterpolate4",(function(){return jl})),n.d(e,"ɵɵclassMapInterpolate5",(function(){return Fl})),n.d(e,"ɵɵclassMapInterpolate6",(function(){return Gl})),n.d(e,"ɵɵclassMapInterpolate7",(function(){return Vl})),n.d(e,"ɵɵclassMapInterpolate8",(function(){return zl})),n.d(e,"ɵɵclassMapInterpolateV",(function(){return Bl})),n.d(e,"ɵɵstyleProp",(function(){return Id})),n.d(e,"ɵɵstylePropInterpolate1",(function(){return Yl})),n.d(e,"ɵɵstylePropInterpolate2",(function(){return Hl})),n.d(e,"ɵɵstylePropInterpolate3",(function(){return Ul})),n.d(e,"ɵɵstylePropInterpolate4",(function(){return Wl})),n.d(e,"ɵɵstylePropInterpolate5",(function(){return Kl})),n.d(e,"ɵɵstylePropInterpolate6",(function(){return $l})),n.d(e,"ɵɵstylePropInterpolate7",(function(){return Zl})),n.d(e,"ɵɵstylePropInterpolate8",(function(){return Jl})),n.d(e,"ɵɵstylePropInterpolateV",(function(){return Ql})),n.d(e,"ɵɵstylingApply",(function(){return Pd})),n.d(e,"ɵɵclassProp",(function(){return Cd})),n.d(e,"ɵɵelementHostAttrs",(function(){return Ud})),n.d(e,"ɵɵselect",(function(){return Oi})),n.d(e,"ɵɵtextBinding",(function(){return wl})),n.d(e,"ɵɵtemplate",(function(){return pd})),n.d(e,"ɵɵembeddedViewEnd",(function(){return Qd})),n.d(e,"ɵstore",(function(){return vd})),n.d(e,"ɵɵload",(function(){return _d})),n.d(e,"ɵɵpipe",(function(){return Up})),n.d(e,"ɵwhenRendered",(function(){return _c})),n.d(e,"ɵɵi18n",(function(){return lp})),n.d(e,"ɵɵi18nAttributes",(function(){return cp})),n.d(e,"ɵɵi18nExp",(function(){return gp})),n.d(e,"ɵɵi18nStart",(function(){return np})),n.d(e,"ɵɵi18nEnd",(function(){return sp})),n.d(e,"ɵɵi18nApply",(function(){return pp})),n.d(e,"ɵɵi18nPostprocess",(function(){return ip})),n.d(e,"ɵi18nConfigureLocalize",(function(){return Tp})),n.d(e,"ɵɵi18nLocalize",(function(){return wp})),n.d(e,"ɵsetLocaleId",(function(){return Ip})),n.d(e,"ɵsetClassMetadata",(function(){return Pp})),n.d(e,"ɵɵresolveWindow",(function(){return Tn})),n.d(e,"ɵɵresolveDocument",(function(){return On})),n.d(e,"ɵɵresolveBody",(function(){return wn})),n.d(e,"ɵcompileComponent",(function(){return zb})),n.d(e,"ɵcompileDirective",(function(){return Bb})),n.d(e,"ɵcompileNgModule",(function(){return Eb})),n.d(e,"ɵcompileNgModuleDefs",(function(){return Lb})),n.d(e,"ɵpatchComponentDefWithScope",(function(){return jb})),n.d(e,"ɵresetCompiledComponents",(function(){return Mb})),n.d(e,"ɵflushModuleScopingQueueAsMuchAsPossible",(function(){return Ab})),n.d(e,"ɵtransitiveScopesFor",(function(){return Fb})),n.d(e,"ɵcompilePipe",(function(){return tm})),n.d(e,"ɵɵsanitizeHtml",(function(){return Or})),n.d(e,"ɵɵsanitizeStyle",(function(){return wr})),n.d(e,"ɵɵdefaultStyleSanitizer",(function(){return Ar})),n.d(e,"ɵɵsanitizeScript",(function(){return Nr})),n.d(e,"ɵɵsanitizeUrl",(function(){return Sr})),n.d(e,"ɵɵsanitizeResourceUrl",(function(){return Ir})),n.d(e,"ɵɵsanitizeUrlOrResourceUrl",(function(){return Rr})),n.d(e,"ɵbypassSanitizationTrustHtml",(function(){return Fa})),n.d(e,"ɵbypassSanitizationTrustStyle",(function(){return Ga})),n.d(e,"ɵbypassSanitizationTrustScript",(function(){return Va})),n.d(e,"ɵbypassSanitizationTrustUrl",(function(){return za})),n.d(e,"ɵbypassSanitizationTrustResourceUrl",(function(){return Ba})),n.d(e,"ɵgetLContext",(function(){return Dr})),n.d(e,"ɵNG_ELEMENT_ID",(function(){return Lt})),n.d(e,"ɵNG_COMPONENT_DEF",(function(){return Nt})),n.d(e,"ɵNG_DIRECTIVE_DEF",(function(){return Ct})),n.d(e,"ɵNG_PIPE_DEF",(function(){return Rt})),n.d(e,"ɵNG_MODULE_DEF",(function(){return At})),n.d(e,"ɵNG_BASE_DEF",(function(){return Et})),n.d(e,"ɵNG_INJECTABLE_DEF",(function(){return M})),n.d(e,"ɵNG_INJECTOR_DEF",(function(){return q})),n.d(e,"ɵcompileNgModuleFactory__POST_R3__",(function(){return _y})),n.d(e,"ɵisBoundToModule__POST_R3__",(function(){return Ty})),n.d(e,"ɵSWITCH_COMPILE_COMPONENT__POST_R3__",(function(){return um})),n.d(e,"ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__",(function(){return dm})),n.d(e,"ɵSWITCH_COMPILE_PIPE__POST_R3__",(function(){return lm})),n.d(e,"ɵSWITCH_COMPILE_NGMODULE__POST_R3__",(function(){return pm})),n.d(e,"ɵgetDebugNode__POST_R3__",(function(){return av})),n.d(e,"ɵSWITCH_COMPILE_INJECTABLE__POST_R3__",(function(){return Io})),n.d(e,"ɵSWITCH_IVY_ENABLED__POST_R3__",(function(){return Em})),n.d(e,"ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__",(function(){return to})),n.d(e,"ɵCompiler_compileModuleSync__POST_R3__",(function(){return Mm})),n.d(e,"ɵCompiler_compileModuleAsync__POST_R3__",(function(){return jm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__",(function(){return Gm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__",(function(){return zm})),n.d(e,"ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__",(function(){return $c})),n.d(e,"ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__",(function(){return Sf})),n.d(e,"ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__",(function(){return Cf})),n.d(e,"ɵSWITCH_RENDERER2_FACTORY__POST_R3__",(function(){return rf})),n.d(e,"ɵgetModuleFactory__POST_R3__",(function(){return My})),n.d(e,"ɵregisterNgModuleType",(function(){return Ap})),n.d(e,"ɵpublishGlobalUtil",(function(){return pc})),n.d(e,"ɵpublishDefaultGlobalUtils",(function(){return gc})),n.d(e,"ɵcreateInjector",(function(){return Do})),n.d(e,"ɵINJECTOR_IMPL__POST_R3__",(function(){return Vo})),n.d(e,"ɵregisterModuleFactory",(function(){return Cp})),n.d(e,"ɵEMPTY_ARRAY",(function(){return Th})),n.d(e,"ɵEMPTY_MAP",(function(){return Oh})),n.d(e,"ɵand",(function(){return pv})),n.d(e,"ɵccf",(function(){return Mh})),n.d(e,"ɵcmf",(function(){return Yx})),n.d(e,"ɵcrt",(function(){return Uf})),n.d(e,"ɵdid",(function(){return og})),n.d(e,"ɵeld",(function(){return bv})),n.d(e,"ɵgetComponentViewDefinitionFactory",(function(){return qh})),n.d(e,"ɵinlineInterpolate",(function(){return xh})),n.d(e,"ɵinterpolate",(function(){return vh})),n.d(e,"ɵmod",(function(){return Rh})),n.d(e,"ɵmpd",(function(){return Ch})),n.d(e,"ɵncd",(function(){return Iv})),n.d(e,"ɵnov",(function(){return Kh})),n.d(e,"ɵpid",(function(){return ug})),n.d(e,"ɵprd",(function(){return dg})),n.d(e,"ɵpad",(function(){return Rv})),n.d(e,"ɵpod",(function(){return Av})),n.d(e,"ɵppd",(function(){return Cv})),n.d(e,"ɵqud",(function(){return _v})),n.d(e,"ɵted",(function(){return Ev})),n.d(e,"ɵunv",(function(){return Hf})),n.d(e,"ɵvid",(function(){return Pv}));const p="__annotations__",b="__parameters__",m="__prop__metadata__";function y(t,e,n,a,r){const i=v(e);function s(...t){if(this instanceof s)return i.call(this,...t),this;const e=new s(...t);return function(n){return r&&r(n,...t),(n.hasOwnProperty(p)?n[p]:Object.defineProperty(n,p,{value:[]})[p]).push(e),a&&a(n),n}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s}function v(t){return function(...e){if(t){const n=t(...e);for(const t in n)this[t]=n[t]}}}function x(t,e,n){const a=v(e);function r(...t){if(this instanceof r)return a.apply(this,t),this;const e=new r(...t);return n.annotation=e,n;function n(t,n,a){const r=t.hasOwnProperty(b)?t[b]:Object.defineProperty(t,b,{value:[]})[b];for(;r.length<=a;)r.push(null);return(r[a]=r[a]||[]).push(e),t}}return n&&(r.prototype=Object.create(n.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r}function _(t,e,n,a){const r=v(e);function i(...t){if(this instanceof i)return r.apply(this,t),this;const e=new i(...t);return function(n,r){const i=n.constructor,s=i.hasOwnProperty(m)?i[m]:Object.defineProperty(i,m,{value:{}})[m];s[r]=s.hasOwnProperty(r)&&s[r]||[],s[r].unshift(e),a&&a(n,r,...t)}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i}const T=x("Inject",t=>({token:t})),O=x("Optional"),w=x("Self"),S=x("SkipSelf"),I=x("Host"),N=x("Attribute",t=>({attributeName:t}));var C=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}({});function R(t){for(let e in t)if(t[e]===R)return e;throw Error("Could not find renamed property on target object.")}function A(t,e){for(const n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}function k(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}const E=k;function L(t){return{factory:t.factory,providers:t.providers||[],imports:t.imports||[]}}function D(t){const e=t[M];return e&&e.token===t?e:null}function P(t){return t&&t.hasOwnProperty(q)?t[q]:null}const M=R({ngInjectableDef:R}),q=R({ngInjectorDef:R});function j(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map(j).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;const e=t.toString();if(null==e)return""+e;const n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}const F=R({__forward_ref__:R});function G(t){return t.__forward_ref__=G,t.toString=function(){return j(this())},t}function V(t){const e=t;return"function"==typeof e&&e.hasOwnProperty(F)&&e.__forward_ref__===G?e():t}const z="undefined"!=typeof globalThis&&globalThis,B="undefined"!=typeof window&&window,Y="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,H="undefined"!=typeof global&&global,U=z||H||B||Y;function W(){const t=U.ng;if(!t||!t.ɵcompilerFacade)throw new Error("Angular JIT compilation failed: '@angular/compiler' not loaded!\n  - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.\n  - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?\n  - Alternatively provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.");return t.ɵcompilerFacade}class K{constructor(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.ngInjectableDef=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.ngInjectableDef=k({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}toString(){return`InjectionToken ${this._desc}`}}const $=new K("INJECTOR",-1),Z=new Object,J=/\n/gm,Q=R({provide:String,useValue:R});let X,tt=void 0;function et(t){const e=tt;return tt=t,e}function nt(t){const e=X;return X=t,e}function at(t,e=C.Default){if(void 0===tt)throw new Error("inject() must be called from an injection context");return null===tt?st(t,void 0,e):tt.get(t,e&C.Optional?null:void 0,e)}function rt(t,e=C.Default){return(X||at)(t,e)}const it=rt;function st(t,e,n){const a=D(t);if(a&&"root"==a.providedIn)return void 0===a.value?a.value=a.factory():a.value;if(n&C.Optional)return null;if(void 0!==e)return e;throw new Error(`Injector: NOT_FOUND [${j(t)}]`)}function ot(t){const e=[];for(let n=0;n<t.length;n++){const a=V(t[n]);if(Array.isArray(a)){if(0===a.length)throw new Error("Arguments array must have arguments.");let t=void 0,n=C.Default;for(let e=0;e<a.length;e++){const r=a[e];r instanceof O||"Optional"===r.ngMetadataName||r===O?n|=C.Optional:r instanceof S||"SkipSelf"===r.ngMetadataName||r===S?n|=C.SkipSelf:r instanceof w||"Self"===r.ngMetadataName||r===w?n|=C.Self:t=r instanceof T||r===T?r.token:r}e.push(rt(t,n))}else e.push(rt(a))}return e}class ut{get(t,e=Z){if(e===Z){const e=new Error(`NullInjectorError: No provider for ${j(t)}!`);throw e.name="NullInjectorError",e}return e}}function dt(t,e,n,a){const r=t.ngTempTokenPath;throw e.__source&&r.unshift(e.__source),t.message=lt("\n"+t.message,r,n,a),t.ngTokenPath=r,t.ngTempTokenPath=null,t}function lt(t,e,n,a=null){t=t&&"\n"===t.charAt(0)&&"ɵ"==t.charAt(1)?t.substr(2):t;let r=j(e);if(e instanceof Array)r=e.map(j).join(" -> ");else if("object"==typeof e){let t=[];for(let n in e)if(e.hasOwnProperty(n)){let a=e[n];t.push(n+":"+("string"==typeof a?JSON.stringify(a):j(a)))}r=`{${t.join(", ")}}`}return`${n}${a?"("+a+")":""}[${r}]: ${t.replace(J,"\n  ")}`}const ct={"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵinject":rt,"ɵɵgetFactoryOf":function(t){const e=t,n=D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}};class ft{}class ht{}function gt(t,e){for(let n=0;n<t.length;n++)e.push(t[n])}function pt(t,e){void 0===e&&(e=t);for(let n=0;n<t.length;n++){let a=t[n];Array.isArray(a)?(e===t&&(e=t.slice(0,n)),pt(a,e)):e!==t&&e.push(a)}return e}function bt(t,e){t.forEach(t=>Array.isArray(t)?bt(t,e):e(t))}function mt(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function yt(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function vt(t){throw new Error(`ASSERTION ERROR: ${t}`)}const xt=function(){var t={OnPush:0,Default:1};return t[t.OnPush]="OnPush",t[t.Default]="Default",t}(),_t=function(){var t={CheckOnce:0,Checked:1,CheckAlways:2,Detached:3,Errored:4,Destroyed:5};return t[t.CheckOnce]="CheckOnce",t[t.Checked]="Checked",t[t.CheckAlways]="CheckAlways",t[t.Detached]="Detached",t[t.Errored]="Errored",t[t.Destroyed]="Destroyed",t}();function Tt(t){return null==t||t===xt.Default}const Ot=function(){var t={Emulated:0,Native:1,None:2,ShadowDom:3};return t[t.Emulated]="Emulated",t[t.Native]="Native",t[t.None]="None",t[t.ShadowDom]="ShadowDom",t}();function wt(t){return""+{toString:t}}const St={},It=[],Nt=R({ngComponentDef:R}),Ct=R({ngDirectiveDef:R}),Rt=R({ngPipeDef:R}),At=R({ngModuleDef:R}),kt=R({ngLocaleIdDef:R}),Et=R({ngBaseDef:R}),Lt=R({__NG_ELEMENT_ID__:R});let Dt=0;function Pt(t){const e=t.type,n=e.prototype,a={},r={type:e,providersResolver:null,consts:t.consts,vars:t.vars,factory:t.factory,template:t.template||null,ngContentSelectors:t.ngContentSelectors,hostBindings:t.hostBindings||null,contentQueries:t.contentQueries||null,declaredInputs:a,inputs:null,outputs:null,exportAs:t.exportAs||null,onChanges:null,onInit:n.ngOnInit||null,doCheck:n.ngDoCheck||null,afterContentInit:n.ngAfterContentInit||null,afterContentChecked:n.ngAfterContentChecked||null,afterViewInit:n.ngAfterViewInit||null,afterViewChecked:n.ngAfterViewChecked||null,onDestroy:n.ngOnDestroy||null,onPush:t.changeDetection===xt.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||Ot.Emulated,id:"c",styles:t.styles||It,_:null,setInput:null,schemas:t.schemas||null,tView:null};return r._=wt(()=>{const n=t.directives,i=t.features,s=t.pipes;r.id+=Dt++,r.inputs=Vt(t.inputs,a),r.outputs=Vt(t.outputs),i&&i.forEach(t=>t(r)),r.directiveDefs=n?()=>("function"==typeof n?n():n).map(qt):null,r.pipeDefs=s?()=>("function"==typeof s?s():s).map(jt):null,e.hasOwnProperty(M)||(e[M]=k({token:e,factory:t.factory}))}),r}function Mt(t,e,n){const a=t.ngComponentDef;a.directiveDefs=()=>e.map(qt),a.pipeDefs=()=>n.map(jt)}function qt(t){return Ht(t)||Ut(t)}function jt(t){return Wt(t)}function Ft(t){return{type:t.type,bootstrap:t.bootstrap||It,declarations:t.declarations||It,imports:t.imports||It,exports:t.exports||It,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}}function Gt(t,e){return wt(()=>{const n=$t(t,!0);n.declarations=e.declarations||It,n.imports=e.imports||It,n.exports=e.exports||It})}function Vt(t,e){if(null==t)return St;const n={};for(const a in t)if(t.hasOwnProperty(a)){let r=t[a],i=r;Array.isArray(r)&&(i=r[1],r=r[0]),n[r]=a,e&&(e[r]=i)}return n}function zt(t){const e={};return{inputs:Vt(t.inputs,e),declaredInputs:e,outputs:Vt(t.outputs),viewQuery:t.viewQuery||null,contentQueries:t.contentQueries||null,hostBindings:t.hostBindings||null}}const Bt=Pt;function Yt(t){return{name:t.name,factory:t.factory,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function Ht(t){return t[Nt]||null}function Ut(t){return t[Ct]||null}function Wt(t){return t[Rt]||null}function Kt(t){return t[Et]||null}function $t(t,e){const n=t[At]||null;if(!n&&!0===e)throw new Error(`Type ${j(t)} does not have 'ngModuleDef' property.`);return n}function Zt(t){return Array.isArray(t)&&"object"==typeof t[1]}function Jt(t){return Array.isArray(t)&&!0===t[1]}function Qt(t){return 0!=(4&t.flags)}function Xt(t){return 1==(1&t.flags)}function te(t){return null!==t.template}function ee(t){return 0!=(512&t[2])}class ne{constructor(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}function ae(t,e,n,a,r,i){const{onChanges:s,onInit:o,doCheck:u}=e;r>=0&&(!n.preOrderHooks||r===n.preOrderHooks.length)&&(s||o||u)&&(n.preOrderHooks||(n.preOrderHooks=[])).push(a),i>=0&&(!n.preOrderCheckHooks||i===n.preOrderCheckHooks.length)&&(s||u)&&(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(a),s&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,s),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,s)),o&&(n.preOrderHooks||(n.preOrderHooks=[])).push(-t,o),u&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,u),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,u))}function re(t,e){if(t.firstTemplatePass)for(let n=e.directiveStart,a=e.directiveEnd;n<a;n++){const e=t.data[n];e.afterContentInit&&(t.contentHooks||(t.contentHooks=[])).push(-n,e.afterContentInit),e.afterContentChecked&&((t.contentHooks||(t.contentHooks=[])).push(n,e.afterContentChecked),(t.contentCheckHooks||(t.contentCheckHooks=[])).push(n,e.afterContentChecked)),e.afterViewInit&&(t.viewHooks||(t.viewHooks=[])).push(-n,e.afterViewInit),e.afterViewChecked&&((t.viewHooks||(t.viewHooks=[])).push(n,e.afterViewChecked),(t.viewCheckHooks||(t.viewCheckHooks=[])).push(n,e.afterViewChecked)),null!=e.onDestroy&&(t.destroyHooks||(t.destroyHooks=[])).push(n,e.onDestroy)}}function ie(t,e,n,a){n||se(t,e.preOrderHooks,e.preOrderCheckHooks,n,0,void 0!==a?a:null)}function se(t,e,n,a,r,i){if(a)return;const s=(3&t[2])===r?e:n;s&&function(t,e,n,a){const r=null!=a?a:-1;let i=0;for(let s=void 0!==a?65535&t[18]:0;s<e.length;s++)if("number"==typeof e[s+1]){if(i=e[s],null!=a&&i>=a)break}else e[s]<0&&(t[18]+=65536),(i<r||-1==r)&&(oe(t,n,e,s),t[18]=(4294901760&t[18])+s+2),s++}(t,s,r,i),null==i&&(3&t[2])===r&&3!==r&&(t[2]&=1023,t[2]+=1)}function oe(t,e,n,a){const r=n[a]<0,i=n[a+1],s=t[r?-n[a]:n[a]];r?t[2]>>10<t[18]>>16&&(3&t[2])===e&&(t[2]+=1024,i.call(s)):i.call(s)}let ue=null;const de=new Map;let le,ce=null;function fe(t,e){return ce&&t===ce||(ce=t,e&&(ue=de.get(t)||null),ue=ue||{classesBitMask:0,classesIndex:1,stylesBitMask:0,stylesIndex:1}),ue}function he(){ue=null,ce=null}function ge(t){for(;Array.isArray(t);)t=t[0];return t}function pe(t,e){return ge(e[t+19])}function be(t,e){return ge(e[t.index])}function me(t,e){const n=t.index;return-1==n?null:ge(e[n])}function ye(t,e){return e[1].data[t+19]}function ve(t,e){return t[e+19]}function xe(t,e){const n=e[t];return Zt(n)?n:n[0]}function _e(t){return t.__ngContext__}function Te(t){const e=_e(t);return e?Array.isArray(e)?e:e.lView:null}function Oe(t){t[18]=0}let we,Se=null;function Ie(t){Se=t}function Ne(){return we}function Ce(){we=!0}function Re(){we=!1}function Ae(){return Le}let ke,Ee,Le,De=1,Pe=0,Me=0;function qe(t=null){on!==t&&(dn(null==t?-1:t),De=null==t?0:1,Pe=0,Me=0)}function je(){De+=1+Me,Pe=0,Me=0}function Fe(t){Pe+=t,Me=Math.max(Me,Pe)}function Ge(t){We=t}function Ve(){return ke}function ze(t,e){ke=t,Ee=e}function Be(t,e){ke=t,Le=e}function Ye(){return Ee}function He(){Ee=!1}function Ue(t=Le){return 4==(4&t[2])}let We=null,Ke=!1;function $e(){return Ke}function Ze(t){Ke=t}let Je=-1;function Qe(){return Je}function Xe(t){Je=t}let tn=0;function en(){return tn}function nn(t){tn=t}function an(t,e){const n=Le;return t&&(Je=t[1].bindingStartIndex),ke=e,Ee=!0,Le=We=t,n}function rn(t=1){return We=function(t,e){for(;t>0;)e=e[16],t--;return e}(t,We),We[9]}function sn(t,e){const n=Le[1];if(Ue(Le))Le[2]&=-5;else try{Oe(Le),e&&se(Le,n.viewHooks,n.viewCheckHooks,Ke,2,void 0)}finally{Le[2]&=-73,Le[7]=n.bindingStartIndex}an(t,null)}let on=-1;function un(){return on}function dn(t){on=t,he()}let ln,cn=null;function fn(){cn="http://www.w3.org/2000/svg"}function hn(){cn="http://www.w3.org/1998/MathML/"}function gn(){pn()}function pn(){cn=null}function bn(t){ln=t}function mn(){return ln}function yn(t,e){return!(t!=t&&e!=e)&&t!==e}function vn(t){return"string"==typeof t?t:null==t?"":""+t}function xn(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():vn(t)}const _n=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(U))();function Tn(t){return{name:"window",target:t.ownerDocument.defaultView}}function On(t){return{name:"document",target:t.ownerDocument}}function wn(t){return{name:"body",target:t.ownerDocument.body}}function Sn(t){return t.indexOf("�")>=0}function In(t){return t instanceof Function?t():t}function Nn(t,e){0===e?t[2]>0&&function(t){Rn(t,2|Cn(t))}(t):t[2]=e}function Cn(t){return t[1]}function Rn(t,e){t[1]=e}function An(t,e){return t[e+2]}function kn(t,e){return 1&t[e+0]}function En(t,e){return(1&kn(t,e))>0}function Ln(t,e){return t[e+0]>>1}function Dn(t,e,n){const a=kn(t,e);t[e+0]=a|n<<1}function Pn(t,e){return t[e+1]}function Mn(t,e,n){return t[e+3+n]}function qn(t,e){return!(!t||e!==t[2])}function jn(t){return(1&Cn(t))>0}function Fn(t){return(2&Cn(t))>0}function Gn(t){return 6+t[4]}function Vn(t,e){let n=Array.isArray(t)?t[0]:t,a=Array.isArray(e)?e[0]:e;return n instanceof String&&(n=n.toString()),a instanceof String&&(a=a.toString()),yn(n,a)}function zn(t){return null!=t&&""!==t}function Bn(t,e,n=" "){return t+(e.length&&t.length?n:"")+e}function Yn(t){return t.replace(/[a-z][A-Z]/g,t=>t.charAt(0)+"-"+t.charAt(1)).toLowerCase()}function Hn(t){return Un(t)?t[0]:t}function Un(t){return Array.isArray(t)&&t.length>=6&&"string"!=typeof t[1]}function Wn(t){const e=Hn(t);return e&&e[0]||""}function Kn(t){return 0!=(8&t.flags)}function $n(t){return 0!=(16&t.flags)}function Zn(t,e){return t[e+0]}function Jn(t,e,n){t[e+1]=n}function Qn(t,e){return t[e+1]}const Xn=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();function ta(t){return!!t.listen}const ea={createRenderer:(t,e)=>document};function na(t,e){const n=Ae()[12],a=ta(n);let r=0;for(;r<e.length;){const i=e[r];if("number"==typeof i){if(0!==i)break;r++;const s=e[r++],o=e[r++],u=e[r++];a?n.setAttribute(t,o,u,s):t.setAttributeNS(s,o,u)}else{const s=i,o=e[++r];ra(s)?a&&n.setProperty(t,s,o):a?n.setAttribute(t,s,o):t.setAttribute(s,o),r++}}return r}function aa(t){return 3===t||4===t||6===t}function ra(t){return"@"===t[0]}function ia(t){return-1!==t}function sa(t){return 32767&t}function oa(t){return t>>16}function ua(t,e){let n=oa(t),a=e;for(;n>0;)a=a[16],n--;return a}function da(t){const e=t[3];return Jt(e)?e[3]:e}function la(t){let e=t[6];for(;null!==e&&2===e.type;)e=(t=t[16])[6];return t}function ca(t){return function(t){let e=Zt(t)?t:Te(t);for(;e&&!(512&e[2]);)e=da(e);return e}(t)[9]}let fa=!0;function ha(t){const e=fa;return fa=t,e}let ga=0;function pa(t,e){const n=ma(t,e);if(-1!==n)return n;const a=e[1];a.firstTemplatePass&&(t.injectorIndex=e.length,ba(a.data,t),ba(e,null),ba(a.blueprint,null));const r=ya(t,e),i=sa(r),s=ua(r,e),o=t.injectorIndex;if(ia(r)){const t=s[1].data;for(let n=0;n<8;n++)e[o+n]=s[i+n]|t[i+n]}return e[o+8]=r,o}function ba(t,e){t.push(0,0,0,0,0,0,0,0,e)}function ma(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+8]?-1:t.injectorIndex}function ya(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let n=e[6],a=1;for(;n&&-1===n.injectorIndex;)n=(e=e[16])?e[6]:null,a++;return n?n.injectorIndex|a<<16:-1}function va(t,e,n){!function(t,e,n){let a="string"!=typeof n?n[Lt]:n.charCodeAt(0)||0;null==a&&(a=n[Lt]=ga++);const r=255&a,i=1<<r,s=64&r,o=32&r,u=e.data;128&r?s?o?u[t+7]|=i:u[t+6]|=i:o?u[t+5]|=i:u[t+4]|=i:s?o?u[t+3]|=i:u[t+2]|=i:o?u[t+1]|=i:u[t]|=i}(t,e,n)}function xa(t,e){if("class"===e)return Wn(t.classes);if("style"===e)return Wn(t.styles);const n=t.attrs;if(n){const t=n.length;let a=0;for(;a<t;){const r=n[a];if(aa(r))break;if(0===r)a+=2;else if("number"==typeof r)for(a++;a<t&&"string"==typeof n[a];)a++;else{if(r===e)return n[a+1];a+=2}}}return null}function _a(t,e,n,a=C.Default,r){if(t){const r=function(t){if("string"==typeof t)return t.charCodeAt(0)||0;const e=t[Lt];return"number"==typeof e&&e>0?255&e:e}(n);if("function"==typeof r){const i=Ve(),s=Ae();Be(t,e);try{const t=r();if(null!=t||a&C.Optional)return t;throw new Error(`No provider for ${xn(n)}!`)}finally{Be(i,s)}}else if("number"==typeof r){if(-1===r)return new Ca(t,e);let i=null,s=ma(t,e),o=-1,u=a&C.Host?la(e)[6]:null;for((-1===s||a&C.SkipSelf)&&(o=-1===s?ya(t,e):e[s+8],Na(a,!1)?(i=e[1],s=sa(o),e=ua(o,e)):s=-1);-1!==s;){o=e[s+8];const t=e[1];if(Ia(r,s,t.data)){const t=Oa(s,e,n,i,a,u);if(t!==Ta)return t}Na(a,e[1].data[s+8]===u)&&Ia(r,s,e)?(i=t,s=sa(o),e=ua(o,e)):s=-1}}}if(a&C.Optional&&void 0===r&&(r=null),0==(a&(C.Self|C.Host))){const t=e[10],i=nt(void 0);try{return t?t.get(n,r,a&C.Optional):st(n,r,a&C.Optional)}finally{nt(i)}}if(a&C.Optional)return r;throw new Error(`NodeInjector: NOT_FOUND [${xn(n)}]`)}const Ta={};function Oa(t,e,n,a,r,i){const s=e[1],o=s.data[t+8],u=wa(o,s,n,null==a?Xt(o)&&fa:a!=s&&3===o.type,r&C.Host&&i===o);return null!==u?Sa(s.data,e,u,o):Ta}function wa(t,e,n,a,r){const i=t.providerIndexes,s=e.data,o=65535&i,u=t.directiveStart,d=i>>16,l=r?o+d:t.directiveEnd;for(let c=a?o:o+d;c<l;c++){const t=s[c];if(c<u&&n===t||c>=u&&t.type===n)return c}if(r){const t=s[u];if(t&&te(t)&&t.type===n)return u}return null}function Sa(t,e,n,a){let r=e[n];if(null!==(i=r)&&"object"==typeof i&&Object.getPrototypeOf(i)==ne.prototype){const i=r;if(i.resolving)throw new Error(`Circular dep for ${xn(t[n])}`);const s=ha(i.canSeeViewProviders);let o;i.resolving=!0,i.injectImpl&&(o=nt(i.injectImpl));const u=Ve(),d=Ae();Be(a,e);try{r=e[n]=i.factory(void 0,t,e,a)}finally{i.injectImpl&&nt(o),ha(s),i.resolving=!1,Be(u,d)}}var i;return r}function Ia(t,e,n){const a=64&t,r=32&t;let i;return i=128&t?a?r?n[e+7]:n[e+6]:r?n[e+5]:n[e+4]:a?r?n[e+3]:n[e+2]:r?n[e+1]:n[e],!!(i&1<<t)}function Na(t,e){return!(t&C.Self||t&C.Host&&e)}class Ca{constructor(t,e){this._tNode=t,this._lView=e}get(t,e){return _a(this._tNode,this._lView,t,void 0,e)}}function Ra(t){const e=t,n=Ht(e)||Ut(e)||Wt(e)||D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}function Aa(t){const e=Ra(Object.getPrototypeOf(t.prototype).constructor);return null!==e?e:t=>new t}function ka(t){return t.ngDebugContext}function Ea(t){return t.ngOriginalError}function La(t,...e){t.error(...e)}class Da{constructor(){this._console=console}handleError(t){const e=this._findOriginalError(t),n=this._findContext(t),a=function(t){return t.ngErrorLogger||La}(t);a(this._console,"ERROR",t),e&&a(this._console,"ORIGINAL ERROR",e),n&&a(this._console,"ERROR CONTEXT",n)}_findContext(t){return t?ka(t)?ka(t):this._findContext(Ea(t)):null}_findOriginalError(t){let e=Ea(t);for(;e&&Ea(e);)e=Ea(e);return e}}const Pa={name:"custom-elements"},Ma={name:"no-errors-schema"},qa="__SANITIZER_TRUSTED_BRAND__";function ja(t,e){return t instanceof String&&t[qa]===e}function Fa(t){return Ya(t,"Html")}function Ga(t){return Ya(t,"Style")}function Va(t){return Ya(t,"Script")}function za(t){return Ya(t,"Url")}function Ba(t){return Ya(t,"ResourceUrl")}function Ya(t,e){const n=new String(t);return n[qa]=e,n}let Ha=!0,Ua=!1;function Wa(){return Ua=!0,Ha}function Ka(){if(Ua)throw new Error("Cannot enable prod mode after platform setup.");Ha=!1}class $a{constructor(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),this.inertBodyElement=this.inertDocument.body,null==this.inertBodyElement){const t=this.inertDocument.createElement("html");this.inertDocument.appendChild(t),this.inertBodyElement=this.inertDocument.createElement("body"),t.appendChild(this.inertBodyElement)}this.inertBodyElement.innerHTML='<svg><g onload="this.parentNode.remove()"></g></svg>',!this.inertBodyElement.querySelector||this.inertBodyElement.querySelector("svg")?(this.inertBodyElement.innerHTML='<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',this.getInertBodyElement=this.inertBodyElement.querySelector&&this.inertBodyElement.querySelector("svg img")&&function(){try{return!!window.DOMParser}catch(t){return!1}}()?this.getInertBodyElement_DOMParser:this.getInertBodyElement_InertDocument):this.getInertBodyElement=this.getInertBodyElement_XHR}getInertBodyElement_XHR(t){t="<body><remove></remove>"+t+"</body>";try{t=encodeURI(t)}catch(a){return null}const e=new XMLHttpRequest;e.responseType="document",e.open("GET","data:text/html;charset=utf-8,"+t,!1),e.send(void 0);const n=e.response.body;return n.removeChild(n.firstChild),n}getInertBodyElement_DOMParser(t){t="<body><remove></remove>"+t+"</body>";try{const e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(e){return null}}getInertBodyElement_InertDocument(t){const e=this.inertDocument.createElement("template");return"content"in e?(e.innerHTML=t,e):(this.inertBodyElement.innerHTML=t,this.defaultDoc.documentMode&&this.stripCustomNsAttrs(this.inertBodyElement),this.inertBodyElement)}stripCustomNsAttrs(t){const e=t.attributes;for(let a=e.length-1;0<a;a--){const n=e.item(a).name;"xmlns:ns1"!==n&&0!==n.indexOf("ns1:")||t.removeAttribute(n)}let n=t.firstChild;for(;n;)n.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(n),n=n.nextSibling}}const Za=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Ja=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;function Qa(t){return(t=String(t)).match(Za)||t.match(Ja)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe URL value ${t} (see http://g.co/ng/security#xss)`),"unsafe:"+t)}function Xa(t){return(t=String(t)).split(",").map(t=>Qa(t.trim())).join(", ")}function tr(t){const e={};for(const n of t.split(","))e[n]=!0;return e}function er(...t){const e={};for(const n of t)for(const t in n)n.hasOwnProperty(t)&&(e[t]=!0);return e}const nr=tr("area,br,col,hr,img,wbr"),ar=tr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),rr=tr("rp,rt"),ir=er(rr,ar),sr=er(nr,er(ar,tr("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")),er(rr,tr("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")),ir),or=tr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),ur=tr("srcset"),dr=er(or,ur,tr("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,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),tr("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")),lr=tr("script,style,template");class cr{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(t){let e=t.firstChild,n=!0;for(;e;)if(e.nodeType===Node.ELEMENT_NODE?n=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,n&&e.firstChild)e=e.firstChild;else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let t=this.checkClobberedElement(e,e.nextSibling);if(t){e=t;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")}startElement(t){const e=t.nodeName.toLowerCase();if(!sr.hasOwnProperty(e))return this.sanitizedSomething=!0,!lr.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a),e=t.name,r=e.toLowerCase();if(!dr.hasOwnProperty(r)){this.sanitizedSomething=!0;continue}let i=t.value;or[r]&&(i=Qa(i)),ur[r]&&(i=Xa(i)),this.buf.push(" ",e,'="',gr(i),'"')}return this.buf.push(">"),!0}endElement(t){const e=t.nodeName.toLowerCase();sr.hasOwnProperty(e)&&!nr.hasOwnProperty(e)&&(this.buf.push("</"),this.buf.push(e),this.buf.push(">"))}chars(t){this.buf.push(gr(t))}checkClobberedElement(t,e){if(e&&(t.compareDocumentPosition(e)&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 e}}const fr=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,hr=/([^\#-~ |!])/g;function gr(t){return t.replace(/&/g,"&amp;").replace(fr,(function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"})).replace(hr,(function(t){return"&#"+t.charCodeAt(0)+";"})).replace(/</g,"&lt;").replace(/>/g,"&gt;")}let pr;function br(t,e){let n=null;try{pr=pr||new $a(t);let a=e?String(e):"";n=pr.getInertBodyElement(a);let r=5,i=a;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,a=i,i=n.innerHTML,n=pr.getInertBodyElement(a)}while(a!==i);const s=new cr,o=s.sanitizeChildren(mr(n)||n);return Wa()&&s.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),o}finally{if(n){const t=mr(n)||n;for(;t.firstChild;)t.removeChild(t.firstChild)}}}function mr(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const yr=function(){var t={NONE:0,HTML:1,STYLE:2,SCRIPT:3,URL:4,RESOURCE_URL:5};return t[t.NONE]="NONE",t[t.HTML]="HTML",t[t.STYLE]="STYLE",t[t.SCRIPT]="SCRIPT",t[t.URL]="URL",t[t.RESOURCE_URL]="RESOURCE_URL",t}();class vr{}const xr=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|Z|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),_r=/^url\(([^)]+)\)$/;function Tr(t){if(!(t=String(t).trim()))return"";const e=t.match(_r);return e&&Qa(e[1])===e[1]||t.match(xr)&&function(t){let e=!0,n=!0;for(let a=0;a<t.length;a++){const r=t.charAt(a);"'"===r&&n?e=!e:'"'===r&&e&&(n=!n)}return e&&n}(t)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe style value ${t} (see http://g.co/ng/security#xss).`),"unsafe")}function Or(t){const e=kr();return e?e.sanitize(yr.HTML,t)||"":ja(t,"Html")?t.toString():br(document,vn(t))}function wr(t){const e=kr();return e?e.sanitize(yr.STYLE,t)||"":ja(t,"Style")?t.toString():Tr(vn(t))}function Sr(t){const e=kr();return e?e.sanitize(yr.URL,t)||"":ja(t,"Url")?t.toString():Qa(vn(t))}function Ir(t){const e=kr();if(e)return e.sanitize(yr.RESOURCE_URL,t)||"";if(ja(t,"ResourceUrl"))return t.toString();throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)")}function Nr(t){const e=kr();if(e)return e.sanitize(yr.SCRIPT,t)||"";if(ja(t,"Script"))return t.toString();throw new Error("unsafe value used in a script context")}function Cr(t,e){return"src"===e&&("embed"===t||"frame"===t||"iframe"===t||"media"===t||"script"===t)||"href"===e&&("base"===t||"link"===t)?Ir:Sr}function Rr(t,e,n){return Cr(e,n)(t)}const Ar=function(t,e,n){let a=!0;return 1&(n=n||3)&&(a="background-image"===t||"background"===t||"border-image"===t||"filter"===t||"list-style"===t||"list-style-image"===t||"clip-path"===t),2&n?a?wr(e):e:a};function kr(){const t=Ae();return t&&t[13]}const Er=/([A-Z])/g;function Lr(t){try{return null!=t?t.toString().slice(0,30):t}catch(e){return"[ERROR] Exception while trying to serialize the value"}}function Dr(t){let e=_e(t);if(e){if(Array.isArray(e)){const a=e;let r,i=void 0,s=void 0;if((n=t)&&n.constructor&&n.constructor.ngComponentDef){if(r=Gr(a,t),-1==r)throw new Error("The provided component was not found in the application");i=t}else if(function(t){return t&&t.constructor&&t.constructor.ngDirectiveDef}(t)){if(r=function(t,e){let n=t[1].firstChild;for(;n;){const a=n.directiveEnd;for(let r=n.directiveStart;r<a;r++)if(t[r]===e)return n.index;n=Fr(n)}return-1}(a,t),-1==r)throw new Error("The provided directive was not found in the application");s=Vr(r,a,!1)}else if(r=jr(a,t),-1==r)return null;const o=ge(a[r]),u=_e(o),d=u&&!Array.isArray(u)?u:Pr(a,r,o);if(i&&void 0===d.component&&(d.component=i,qr(d.component,d)),s&&void 0===d.directives){d.directives=s;for(let t=0;t<s.length;t++)qr(s[t],d)}qr(d.native,d),e=d}}else{const n=t;let a=n;for(;a=a.parentNode;){const t=_e(a);if(t){let a;if(a=Array.isArray(t)?t:t.lView,!a)return null;const r=jr(a,n);if(r>=0){const t=ge(a[r]),n=Pr(a,r,t);qr(t,n),e=n;break}}}}var n;return e||null}function Pr(t,e,n){return{lView:t,nodeIndex:e,native:n,component:void 0,directives:void 0,localRefs:void 0}}function Mr(t){let e,n=_e(t);if(Array.isArray(n)){const a=Gr(n,t);e=xe(a,n);const r=Pr(n,a,e[0]);r.component=t,qr(t,r),qr(r.native,r)}else e=xe(n.nodeIndex,n.lView);return e}function qr(t,e){t.__ngContext__=e}function jr(t,e){let n=t[1].firstChild;for(;n;){if(me(n,t)===e)return n.index;n=Fr(n)}return-1}function Fr(t){if(t.child)return t.child;if(t.next)return t.next;for(;t.parent&&!t.parent.next;)t=t.parent;return t.parent&&t.parent.next}function Gr(t,e){const n=t[1].components;if(n)for(let a=0;a<n.length;a++){const r=n[a];if(xe(r,t)[9]===e)return r}else if(xe(19,t)[9]===e)return 19;return-1}function Vr(t,e,n){const a=e[1].data[t];let r=a.directiveStart;return 0==r?It:(!n&&1&a.flags&&r++,e.slice(r,a.directiveEnd))}function zr(t){throw new Error(`Multiple components match node with tagname ${t.tagName}`)}function Br(){throw new Error("Cannot mix multi providers and regular providers")}function Yr(t,e){const n=t.length,a=t.indexOf(e),r=a+e.length;return!(-1===a||a>0&&" "!==t[a-1]||r<n&&" "!==t[r])}function Hr(t,e,n){return e===(0!==t.type||n?t.tagName:"ng-template")}function Ur(t,e,n){let a=4;const r=t.attrs||[],i=function(t){for(let e=0;e<t.length;e++)if(aa(t[e]))return e;return t.length}(r);let s=!1;for(let o=0;o<e.length;o++){const u=e[o];if("number"!=typeof u){if(!s)if(4&a){if(a=2|1&a,""!==u&&!Hr(t,u,n)||""===u&&1===e.length){if(Wr(a))return!1;s=!0}}else{const d=8&a?u:e[++o];if(8&a&&t.classes){if(!Yr(Wn(t.classes),d)){if(Wr(a))return!1;s=!0}continue}const l=Kr(8&a?"class":u,r,0==t.type&&"ng-template"!==t.tagName,n);if(-1===l){if(Wr(a))return!1;s=!0;continue}if(""!==d){let t;t=l>i?"":r[l+1];const e=8&a?t:null;if(e&&!Yr(e,d)||2&a&&d!==t){if(Wr(a))return!1;s=!0}}}}else{if(!s&&!Wr(a)&&!Wr(u))return!1;if(s&&Wr(u))continue;s=!1,a=u|1&a}}return Wr(a)||s}function Wr(t){return 0==(1&t)}function Kr(t,e,n,a){if(null===e)return-1;let r=0;if(a||!n){let n=!1;for(;r<e.length;){const a=e[r];if(a===t)return r;if(3===a||6===a)n=!0;else{if(1===a){let t=e[++r];for(;"string"==typeof t;)t=e[++r];continue}if(4===a)break;if(0===a){r+=4;continue}}r+=n?1:2}return-1}return function(t,e){let n=t.indexOf(4);if(n>-1)for(n++;n<t.length;){if(t[n]===e)return n;n++}return-1}(e,t)}function $r(t,e,n=!1){for(let a=0;a<e.length;a++)if(Ur(t,e[a],n))return!0;return!1}function Zr(t,e){t:for(let n=0;n<e.length;n++){const a=e[n];if(t.length===a.length){for(let e=0;e<t.length;e++)if(t[e]!==a[e])continue t;return!0}}return!1}let Jr=[];function Qr(t,e,n,a,r,i,s,o){const u=!a,d=fe(n,Fn(t)),l=u?0:d.classesIndex++;return!(!ti(t,e,l,a,r,i,s,o,!1)&&!o||(d.classesBitMask|=1<<l,0))}function Xr(t,e,n,a,r,i,s,o,u){const d=!a,l=fe(n,Fn(t)),c=d?0:l.stylesIndex++;return!(!ti(t,e,c,a,r,i,o,u,!!d||!!s&&s(a,null,1))&&!u||(l.stylesBitMask|=1<<c,0))}function ti(t,e,n,a,r,i,s,o,u){jn(t)||(s?function(t,e,n,a,r){Jr.unshift(t,e,n,a,r)}(t,n,a,r,u):(Jr.length&&ei(),ni(t,n,a,r,u)));const d=o||Vn(e[r],i);return d&&(e[r]=i),d}function ei(){let t=0;for(;t<Jr.length;)ni(Jr[t++],Jr[t++],Jr[t++],Jr[t++],Jr[t++]);Jr.length=0}function ni(t,e,n,a,r){let i=!1;if(n){let s=!1,o=Gn(t);for(;o<t.length;){const i=Pn(t,o),u=An(t,o);if(s=n<=u,s){n<u&&ai(t,o,n,r),ri(t,!1,o,a,e);break}o+=3+i}s||(ai(t,t.length,n,r),ri(t,!1,o,a,e),i=!0)}else ri(t,!0,3,a,e),i=!0;return i}function ai(t,e,n,a){t.splice(e,0,a?1:0,1,n,null),Dn(t,e,1)}function ri(t,e,n,a,r){const i=n+3;let s=i+Pn(t,n);if(e||s--,"number"==typeof a){for(let e=i;e<=s;e++)if(t[e]===a)return;t.splice(s,0,a),t[n+1]++,Dn(t,n,Ln(t,n)|1<<r)}else null!==a&&null==t[s]&&(t[s]=a)}function ii(t,e,n,a,r,i,s,o){return r&&a&&(function(t){if(!jn(t)){const e=Hn(t);e&&function(t,e){for(let n=1;n<e.length;n+=2){const a=Qn(e,n);a&&ni(t,-1,Zn(e,n),a,!1)}}(t,e),function(t){Rn(t,1|Cn(t))}(t)}}(a),function(t,e){return t&&e>0}(a,i))?(si(a,t,e,n,i,s,o),!0):r}function si(t,e,n,a,r,i,s){const o=!0===(u=r)?-1:!1===u?0:u;var u;const d=oi,l=(o&Ln(t,3))>0?1:0;let c=Gn(t);for(;c<t.length;){const r=Pn(t,c);if(o&Ln(t,c)){let o=!1;const u=An(t,c),f=r-1,h=Mn(t,c,f);for(let r=0;r<f;r++){const d=Mn(t,c,r),l=a[d];if(zn(l)){i(e,n,u,s&&En(t,c)?s(u,l,2):l,d),o=!0;break}}if(d){const r=d(t,e,n,a,i,s,l|(o?4:2),u,h);o=o||r}o||i(e,n,u,h)}c+=3+r}d&&d(t,e,n,a,i,s,l)}let oi=null;const ui=(t,e,n,a)=>{const r=e.style;a?(a=a.toString(),t&&ta(t)?t.setStyle(e,n,a,Xn.DashCase):r&&r.setProperty(n,a)):t&&ta(t)?t.removeStyle(e,n,Xn.DashCase):r&&r.removeProperty(n)},di=(t,e,n,a)=>{if(""!==n){const r=e.classList;a?t&&ta(t)?t.addClass(e,n):r&&r.add(n):t&&ta(t)?t.removeClass(e,n):r&&r.remove(n)}};function li(t,e,n,a){const r=Hn(n);if(r)for(let i=1;i<r.length;i+=2){const n=Zn(r,i),s=Qn(r,i);a?di(t,e,n,s):ui(t,e,n,s)}}const ci={},fi={marker:"element"},hi={marker:"comment"},gi=(t,e,n,a,r,i,s,o,u)=>{let d=!1;if(Pn(t,3)){let l=!0;const c=!o;c&&-2&s&&(l=!1,d=!0),l&&(d=function t(e,n,a,r,i,s,o,u,d,l){let c=!1;if(d<Pn(e,3)){const f=Mn(e,3,d),h=r[f];let g=function(t){return t>=yi.length&&yi.push(1),yi[t]}(d);for(;g<h.length;){const p=Zn(h,g),b=u&&p>u,m=!b&&p===u,y=Qn(h,g),v=zn(y);let x=t(e,n,a,r,i,s,b?o:bi(o,v,m),b?u:p,d+1,l);if(b){c||(c=x);break}if(!x&&mi(o,m)){const t=m&&!v,e=t?l:y,r=t?f:null;i(n,a,p,s?s(p,e,3):e,r),x=!0}c=x&&m,g+=2}if(yi[d]=g,1===h.length||!u)return t(e,n,a,r,i,s,o,u,d+1,l)}return c}(t,e,n,a,r,i,s,o||null,0,u||null)),c&&function(){for(let t=0;t<yi.length;t++)yi[t]=1}()}return d};function pi(){oi=gi}function bi(t,e,n){let a=t;return e||4&t||!(n||1&t)?(a|=4,a&=-3):(a|=2,a&=-5),a}function mi(t,e){let n=(1&t)>0;return n?4&t&&e&&(n=!1):2&t&&(n=e),n}const yi=[];function vi(t,e,n,a){for(let r=1;r<t.length;r+=2){const i=Zn(t,r);if(e<=i){let s=!1;if(i===e){const e=t[r];!a&&zn(e)||(s=!0,Jn(t,r,n))}else s=!0,t.splice(r,0,e,n);return s}}return t.push(e,n),!0}function xi(t,e){let n="";for(let a=1;a<t.length;a+=2){const r=Zn(t,a),i=Qn(t,a),s=Bn(r,e?"":i,":");n=Bn(n,s,e?" ":"; ")}return n}function _i(t){let e={};if(t)for(let n=1;n<t.length;n+=2){const a=Zn(t,n),r=Qn(t,n);e[a]=r}return e}class Ti{constructor(t,e,n){this.context=t,this._data=e,this._isClassBased=n,this._sanitizer=null}overrideSanitizer(t){this._sanitizer=t}get summary(){const t={};return this._mapValues((e,n,a)=>{t[e]={prop:e,value:n,bindingIndex:a}}),t}get values(){const t={};return this._mapValues((e,n)=>{t[e]=n}),t}_mapValues(t){Pn(this.context,3)>0&&pi();const e=this._isClassBased?null:this._sanitizer||mn();si(this.context,null,{},this._data,!0,(e,n,a,r,i)=>{t(a,r,i||null)},e)}}function Oi(t){wi(Ae(),t)}function wi(t,e){ie(t,t[1],$e(),e),dn(e)}const Si=(()=>Promise.resolve(null))();function Ii(t){const e=t[1],n=Ue(t);if(e.firstTemplatePass=!1,t[7]=e.bindingStartIndex,!n){const n=$e();ie(t,e,n,void 0),function(t){for(let e=t[14];null!==e;e=e[4])if(-1===e[2]&&Jt(e))for(let t=9;t<e.length;t++){const n=e[t];Ei(n,n[1],n[9])}}(t),Ni(e,t),Oe(t),se(t,e.contentHooks,e.contentCheckHooks,n,1,void 0),function(t,e){const n=un();try{if(t.expandoInstructions){let n=e[7]=t.expandoStartIndex;Xe(n);let a=-1,r=-1;for(let i=0;i<t.expandoInstructions.length;i++){const s=t.expandoInstructions[i];"number"==typeof s?(s<=0?(r=-s,qe(r),n+=9+t.expandoInstructions[++i],a=n):n+=s,Xe(n)):(null!==s&&(e[7]=n,s(2,ge(e[a]),r),je()),a++)}}}finally{qe(n)}}(e,t)}n&&e.staticContentQueries&&Ni(e,t),n&&!e.staticViewQueries||ls(2,e,t[9]),function(t,e){if(null!=e)for(let n=0;n<e.length;n++)as(t,e[n])}(t,e.components)}function Ni(t,e){const n=t.contentQueries;if(null!==n)for(let a=0;a<n.length;a+=2){const r=n[a],i=n[a+1];if(-1!==i){const n=t.data[i];nn(r),n.contentQueries(2,e[i],i)}}}function Ci(t,e){let n;const a=e||Ae()[12],r=cn;return n=ta(a)?a.createElement(t,r):null===r?a.createElement(t):a.createElementNS(r,t),n}function Ri(t,e,n,a,r,i,s,o,u,d){const l=e.blueprint.slice();return l[0]=r,l[2]=140|a,Oe(l),l[3]=l[16]=t,l[9]=n,l[11]=s||t&&t[11],l[12]=o||t&&t[12],l[13]=u||t&&t[13]||null,l[10]=d||t&&t[10]||null,l[6]=i,l}function Ai(t,e,n,a,r,i){const s=n+19,o=t.data[s]||function(t,e,n,a,r,i,s){const o=Ve(),u=Ye(),d=u?o:o&&o.parent,l=t.data[n]=Vi(0,d&&d!==e?d:null,a,n,r,i);return 0!==s&&t.firstChild||(t.firstChild=l),o&&(!u||null!=o.child||null===l.parent&&2!==o.type?u||(o.next=l):o.child=l),l}(t,e,s,a,r,i,n);return ze(o,!0),o}function ki(t,e,n,a){let r=t.node;return null==r&&(t.node=r=Vi(0,e,2,n,null,null)),a[6]=r}function Ei(t,e,n){const a=Ye(),r=Ve();let i;if(512&t[2])ss(ca(t));else{let s=!1;try{ze(null,!0),i=an(t,t[6]),Oe(t),Di(t,e.template,Pi(t),n),e.firstTemplatePass=!1,Ii(t),s=!0}finally{sn(i,s),ze(r,a)}}}function Li(t,e,n){const a=t[11],r=an(t,t[6]),i=!$e(),s=Ue(t);let o=!1;try{i&&!s&&a.begin&&a.begin(),s&&(n&&Di(t,n,1,e),Ii(t),t[2]&=-5),Oe(t),n&&Di(t,n,2,e),Ii(t),o=!0}finally{i&&!s&&a.end&&a.end(),sn(r,o)}}function Di(t,e,n,a){pn();const r=un();try{qe(null),2&n&&wi(t,0),e(n,a)}finally{dn(r)}}function Pi(t){return Ue(t)?1:2}function Mi(t,e,n){if(Qt(e)){const a=e.directiveEnd;for(let r=e.directiveStart;r<a;r++){const e=t.data[r];e.contentQueries&&e.contentQueries(1,n[r],r)}}}function qi(t,e,n,a=be){Ne()&&(function(t,e,n){const a=n.directiveStart,r=n.directiveEnd;!t.firstTemplatePass&&a<r&&pa(n,e);for(let i=a;i<r;i++){const a=t.data[i];te(a)&&ts(e,n,a),Ki(e,Sa(t.data,e,i,n),a,i)}}(t,e,n),function(t,e,n){const a=n.directiveStart,r=n.directiveEnd,i=t.expandoInstructions,s=t.firstTemplatePass,o=n.index-19,u=un();try{qe(o);for(let o=a;o<r;o++){const a=t.data[o],r=e[o];a.hostBindings?(Ui(a,i,r,n,s),je()):s&&i.push(null)}}finally{qe(u)}}(t,e,n),function(t,e,n){const a=e.localNames;if(a){let r=e.index+1;for(let i=0;i<a.length;i+=2){const s=a[i+1],o=-1===s?n(e,t):t[s];t[r++]=o}}}(e,n,a),qe(null))}function ji(t){return t.tView||(t.tView=Fi(-1,t.template,t.consts,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas))}function Fi(t,e,n,a,r,i,s,o){const u=19+n,d=u+a,l=function(t,e){const n=new Array(e).fill(null,0,t).fill(ci,t);return n[7]=t,n}(u,d);return l[1]={id:t,blueprint:l,template:e,queries:null,viewQuery:s,node:null,data:l.slice().fill(null,u),bindingStartIndex:u,expandoStartIndex:d,expandoInstructions:null,firstTemplatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof r?r():r,pipeRegistry:"function"==typeof i?i():i,firstChild:null,schemas:o}}function Gi(t,e){const n=t.createRenderer(null,null);return"string"==typeof e?ta(n)?n.selectRootElement(e):n.querySelector(e):e}function Vi(t,e,n,a,r,i){return{type:n,index:a,injectorIndex:e?e.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,propertyMetadataStartIndex:-1,propertyMetadataEndIndex:-1,flags:0,providerIndexes:0,tagName:r,attrs:i,localNames:null,initialInputs:void 0,inputs:void 0,outputs:void 0,tViews:null,next:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,classes:null}}function zi(t,e){const n=Ae()[1];let a=null;const r=t.directiveStart,i=t.directiveEnd;if(i>r){const t=0===e,s=n.data;for(let e=r;e<i;e++){const n=s[e],r=t?n.inputs:n.outputs;for(let t in r)if(r.hasOwnProperty(t)){a=a||{};const n=r[t];a.hasOwnProperty(t)?a[t].push(e,t,n):a[t]=[e,t,n]}}}return a}const Bi={class:"className",for:"htmlFor",formaction:"formAction",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"};function Yi(t,e,n,a,r,i){const s=Ae(),o=pe(t,s),u=ye(t,s);let d,l;if(!r&&(d=hs(u))&&(l=d[e]))ys(s,l,n),Xt(u)&&function(t,e){const n=xe(e,t);16&n[2]||(n[2]|=64)}(s,t+19);else if(3===u.type){!function(t,e,n,a,r){const i=e[7]-1,s=a[i];"�"==s[0]&&(a[i]=n+s,r||(-1==t.propertyMetadataStartIndex&&(t.propertyMetadataStartIndex=i),t.propertyMetadataEndIndex=i+1))}(u,s,e=Bi[e]||e,s[1].data,r);const t=i?i(u,s):s[12];n=null!=a?a(n,u.tagName||"",e):n,ta(t)?t.setProperty(o,e,n):ra(e)||(o.setProperty?o.setProperty(e,n):o[e]=n)}}function Hi(t,e,n,a){if(!Ne())return;const r=function(t,e,n){const a=t.directiveRegistry;let r=null;if(a)for(let i=0;i<a.length;i++){const s=a[i];$r(n,s.selectors,!1)&&(r||(r=[]),va(pa(n,e),t,s.type),te(s)?(1&n.flags&&zr(n),n.flags=1,r.unshift(s)):r.push(s))}return r}(t,e,n),i=a?{"":-1}:null;if(r){Qi(n,t.data.length,r.length);for(let t=0;t<r.length;t++){const e=r[t];e.providersResolver&&e.providersResolver(e)}Wi(t,n,r.length);const a=t.preOrderHooks&&t.preOrderHooks.length||0,s=t.preOrderCheckHooks&&t.preOrderCheckHooks.length||0,o=n.index-19;for(let n=0;n<r.length;n++){const u=r[n],d=t.data.length;Xi(t,e,u,u.factory),Ji(t.data.length-1,u,i),ae(d,u,t,o,a,s)}}i&&function(t,e,n){if(e){const a=t.localNames=[];for(let t=0;t<e.length;t+=2){const r=n[e[t+1]];if(null==r)throw new Error(`Export of name '${e[t+1]}' not found!`);a.push(e[t],r)}}}(n,a,i)}function Ui(t,e,n,a,r){const i=e.length;Ie(t),t.hostBindings(1,n,a.index-19),Ie(null),i===e.length&&r&&e.push(t.hostBindings)}function Wi(t,e,n){const a=-(e.index-19),r=t.data.length-(65535&e.providerIndexes);(t.expandoInstructions||(t.expandoInstructions=[])).push(a,r,n)}function Ki(t,e,n,a){const r=Ve();$i(t,r,e),r&&r.attrs&&function(t,e,n,a){let r=a.initialInputs;(void 0===r||t>=r.length)&&(r=function(t,e,n){const a=n.initialInputs||(n.initialInputs=[]);for(let s=a.length;s<=t;s++)a.push(null);const r=n.attrs;let i=0;for(;i<r.length;){const n=r[i];if(0===n){i+=4;continue}if(5===n){i+=2;continue}if("number"==typeof n)break;const s=e[n],o=r[i+1];void 0!==s&&(a[t]||(a[t]=[])).push(n,s,o),i+=2}return a}(t,n.inputs,a));const i=r[t];if(i){const t=n.setInput;for(let a=0;a<i.length;){const r=i[a++],s=i[a++],o=i[a++];t?n.setInput(e,o,r,s):e[s]=o}}}(a,e,n,r),t[1].firstTemplatePass&&n.contentQueries&&(r.flags|=4),te(n)&&(xe(r.index,t)[9]=e)}function $i(t,e,n){const a=be(e,t);qr(n,t),a&&qr(a,t)}function Zi(t){const e=Ae()[1];(e.components||(e.components=[])).push(t.index)}function Ji(t,e,n){if(n){if(e.exportAs)for(let a=0;a<e.exportAs.length;a++)n[e.exportAs[a]]=t;e.template&&(n[""]=t)}}function Qi(t,e,n){t.flags=1&t.flags,t.directiveStart=e,t.directiveEnd=e+n,t.providerIndexes=e}function Xi(t,e,n,a){t.data.push(n);const r=new ne(a,te(n),null);t.blueprint.push(r),e.push(r)}function ts(t,e,n){const a=be(e,t),r=ji(n),i=t[11],s=rs(t,Ri(t,r,null,n.onPush?64:16,t[e.index],e,i,i.createRenderer(a,n)));s[6]=e,t[e.index]=s,t[1].firstTemplatePass&&Zi(e)}function es(t,e,n,a,r,i){const s=pe(t,a),o=a[12];if(null==n)ta(o)?o.removeAttribute(s,e,i):s.removeAttribute(e);else{const u=ye(t,a),d=null==r?vn(n):r(n,u.tagName||"",e);ta(o)?o.setAttribute(s,e,d,i):i?s.setAttributeNS(i,e,d):s.setAttribute(e,d)}}function ns(t,e,n,a,r){return new Array(t,!0,r?-1:0,e,null,null,a,n,null)}function as(t,e){const n=xe(e,t);(128==(128&n[2])||Ue(t))&&80&n[2]&&(function(t){const e=t[1];for(let n=t.length;n<e.blueprint.length;n++)t[n]=e.blueprint[n]}(n),ds(n,n[9]))}function rs(t,e){return t[14]?t[15][4]=e:t[14]=e,t[15]=e,e}function is(t){for(;t;){t[2]|=64;const e=da(t);if(ee(t)&&!e)return t;t=e}return null}function ss(t){for(let e=0;e<t.components.length;e++){const n=t.components[e];Li(Te(n),n)}}function os(t,e){const n=t[11];n.begin&&n.begin();try{Ue(t)&&ds(t,e),ds(t,e)}catch(a){throw ms(t,a),a}finally{n.end&&n.end()}}function us(t){ss(t[9])}function ds(t,e){const n=t[1],a=an(t,t[6]),r=n.template,i=Ue(t);let s=!1;try{Oe(t),i&&ls(1,n,e),Di(t,r,Pi(t),e),Ii(t),s=!0}finally{sn(a,s)}}function ls(t,e,n){const a=e.viewQuery;null!==a&&(nn(0),a(t,n))}function cs(t,e="",n=""){const a=t[1].data,r=t[7]-1;return null==a[r]?a[r]="�"+e+"�"+n:null}const fs=Si;function hs(t){return void 0===t.inputs&&(t.inputs=zi(t,0)),t.inputs}function gs(t){return t[8]||(t[8]=[])}function ps(t){return t[1].cleanup||(t[1].cleanup=[])}function bs(t,e){return e[t.index][12]}function ms(t,e){const n=t[10],a=n?n.get(Da,null):null;a&&a.handleError(e)}function ys(t,e,n){const a=t[1];for(let r=0;r<e.length;){const i=e[r++],s=e[r++],o=e[r++],u=t[i],d=a.data[i];d.setInput?d.setInput(u,n,s,o):u[o]=n}}function vs(t,e,n){const a=pe(e,t),r=t[12];ta(r)?r.setValue(a,n):a.textContent=n}function xs(t,e,n){li(t,e,n.classes,!0),li(t,e,n.styles,!1)}function _s(t,e){const n=e[3];return-1===t.index?Jt(n)?n:null:n}function Ts(t,e){const n=_s(t,e);return n?Ps(e[12],n[7]):null}function Os(t,e,n,a,r){if(null!=a){let i,s=!1;Jt(a)?i=a:Zt(a)&&(s=!0,a=a[0]);const o=ge(a);0===t?Ls(e,n,o,r||null):1===t?js(e,o,s):2===t&&e.destroyNode(o),null!=i&&function(t,e,n,a,r){const i=n[7];i!==ge(n)&&Os(e,t,a,i,r);for(let s=9;s<n.length;s++)zs(t,e,n[s],a,i)}(e,t,i,n,r)}}function ws(t,e){return ta(e)?e.createText(vn(t)):e.createTextNode(vn(t))}function Ss(t,e,n){const a=Ts(t[1].node,t);a&&zs(t[12],e?0:1,t,a,n)}function Is(t,e,n){const a=9+n,r=e.length;n>0&&(e[a-1][4]=t),n<r-9?(t[4]=e[a],mt(e,9+n,t)):(e.push(t),t[4]=null),t[3]=e;const i=t[17];null!==i&&e!==i&&function(t,e){const n=t[5];null===n?t[5]=[e]:n.push(e)}(i,t);const s=t[5];null!==s&&s.insertView(t[1]),t[2]|=128}function Ns(t,e){const n=t[5],a=n.indexOf(e);n.splice(a,1)}function Cs(t,e){if(t.length<=9)return;const n=9+e,a=t[n];if(a){const r=a[17];null!==r&&r!==t&&Ns(r,a),e>0&&(t[n-1][4]=a[4]);const i=yt(t,9+e);Ss(a,!1);const s=i[5];null!==s&&s.detachView(i[1]),a[3]=null,a[4]=null,a[2]&=-129}return a}function Rs(t,e){const n=Cs(t,e);n&&As(n)}function As(t){if(!(256&t[2])){const e=t[12];ta(e)&&e.destroyNode&&zs(e,2,t,null,null),function(t){let e=t[14];if(!e)return Es(t);for(;e;){let n=null;if(Zt(e))n=e[14];else{const t=e[9];t&&(n=t)}if(!n){for(;e&&!e[4]&&e!==t;)Es(e),e=ks(e,t);Es(e||t),n=e&&e[4]}e=n}}(t)}}function ks(t,e){let n;return Zt(t)&&(n=t[6])&&2===n.type?_s(n,t):t[3]===e?null:t[3]}function Es(t){if(Zt(t)&&!(256&t[2])){t[2]&=-129,t[2]|=256,function(t){const e=t[1];let n;if(null!=e&&null!=(n=e.destroyHooks))for(let a=0;a<n.length;a+=2){const e=t[n[a]];e instanceof ne||n[a+1].call(e)}}(t),function(t){const e=t[1].cleanup;if(null!==e){const n=t[8];for(let a=0;a<e.length-1;a+=2)if("string"==typeof e[a]){const r=e[a+1],i="function"==typeof r?r(t):ge(t[r]),s=n[e[a+2]],o=e[a+3];"boolean"==typeof o?i.removeEventListener(e[a],s,o):o>=0?n[o]():n[-o].unsubscribe(),a+=2}else e[a].call(n[e[a+1]]);t[8]=null}}(t);const e=t[6];e&&3===e.type&&ta(t[12])&&t[12].destroy();const n=t[17];if(null!==n&&Jt(t[3])){n!==t[3]&&Ns(n,t);const e=t[5];null!==e&&e.detachView(t[1])}}}function Ls(t,e,n,a){ta(t)?t.insertBefore(e,n,a):e.insertBefore(n,a,!0)}function Ds(t,e,n,a){null!==a?Ls(t,e,n,a):function(t,e,n){ta(t)?t.appendChild(e,n):e.appendChild(n)}(t,e,n)}function Ps(t,e){return ta(t)?t.parentNode(e):e.parentNode}function Ms(t,e,n){const a=function(t,e){if(ee(e))return Ps(e[12],be(t,e));const n=function(t){for(;null!=t.parent&&(4===t.parent.type||5===t.parent.type);)t=t.parent;return t}(t),a=n.parent;if(null==a){const t=e[6];return 2===t.type?Ts(t,e):function(t){const e=t[6];return e&&3===e.type?be(e,da(t)):null}(e)}{const t=n&&5===n.type;if(t&&2&n.flags)return be(n,e).parentNode;if(1&a.flags&&!t){const t=e[1].data,n=t[t[a.index].directiveStart].encapsulation;if(n!==Ot.ShadowDom&&n!==Ot.Native)return null}return be(a,e)}}(e,n);if(null!=a){const r=n[12],i=function(t,e){if(2===t.type){const n=_s(t,e);return qs(n.indexOf(e,9)-9,n)}return 4===t.type||5===t.type?be(t,e):null}(e.parent||n[6],n);if(Array.isArray(t))for(let e of t)Ds(r,a,e,i);else Ds(r,a,t,i)}}function qs(t,e){const n=9+t+1;if(n<e.length){const t=e[n],a=t[6].child;return null!==a?me(a,t):e[7]}return e[7]}function js(t,e,n){const a=Ps(t,e);a&&function(t,e,n,a){ta(t)?t.removeChild(e,n,a):e.removeChild(n)}(t,a,e,n)}function Fs(t,e,n,a){const r=a[3];let i=a[6].projection[n];if(Array.isArray(i))Ms(i,e,t);else for(;i;)32&i.flags||(1===i.type?Fs(t,e,i.projection,la(r)):(i.flags|=2,Vs(i,e,t,r))),i=i.projectionNext}function Gs(t,e,n,a){for(;t;)Vs(t,e,n,a),t=t.next}function Vs(t,e,n,a){const r=be(t,a);Ms(r,e,n),qr(r,a);const i=a[t.index];if(0===t.type)for(let s=9;s<i.length;s++)Ss(i[s],!0,i[7]);else if(5===t.type){let e=t.child;Gs(e,e,a,a)}else 4===t.type&&Gs(t.child,e,n,a),Jt(i)&&Ms(i[7],e,n)}function zs(t,e,n,a,r){let i=n[1].node.child;for(;null!==i;)Bs(t,e,n,i,a,r),i=i.next}function Bs(t,e,n,a,r,i){const s=a.type;32&a.flags||(4===s||5===s?function(t,e,n,a,r,i){Os(e,t,r,n[a.index],i);let s=a.child;for(;s;)Bs(t,e,n,s,r,i),s=s.next}(t,e,n,a,r,i):1===s?function(t,e,n,a,r,i){const s=la(n),o=s[6].projection[a.projection];if(void 0!==o)if(Array.isArray(o))for(let u=0;u<o.length;u++)Os(e,t,r,o[u],i);else{let n=o;const a=s[3];for(;null!==n;)Bs(t,e,a,n,r,i),n=n.projectionNext}}(t,e,n,a,r,i):Os(e,t,r,n[a.index],i))}class Ys{constructor(t,e,n){this._context=e,this._componentIndex=n,this._appRef=null,this._viewContainerRef=null,this._tViewNode=null,this._lView=t}get rootNodes(){return null==this._lView[0]?function t(e,n,a){let r=n.child;for(;r;){const n=me(r,e);if(n&&a.push(n),4===r.type)t(e,r,a);else if(1===r.type){const t=la(e),n=t[6],i=da(t);let s=n.projection[r.projection];for(;s&&i;)a.push(be(s,i)),s=s.next}r=r.next}return a}(this._lView,this._lView[6],[]):[]}get context(){return this._context?this._context:this._lookUpContext()}get destroyed(){return 256==(256&this._lView[2])}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._viewContainerRef){const t=this._viewContainerRef.indexOf(this);t>-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}As(this._lView)}onDestroy(t){var e,n;n=t,gs(e=this._lView).push(n),e[1].firstTemplatePass&&ps(e).push(e[8].length-1,null)}markForCheck(){is(this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){os(this._lView,this.context)}checkNoChanges(){!function(t,e){Ze(!0);try{os(t,e)}finally{Ze(!1)}}(this._lView,this.context)}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}detachFromAppRef(){this._appRef=null,function(t){zs(t[12],1,t,null,null)}(this._lView)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}_lookUpContext(){return this._context=da(this._lView)[this._componentIndex]}}class Hs extends Ys{constructor(t){super(t,null,-1),this._view=t}detectChanges(){us(this._view)}checkNoChanges(){!function(t){Ze(!0);try{us(t)}finally{Ze(!1)}}(this._view)}get context(){return null}}let Us,Ws,Ks;function $s(t,e,n){return Us||(Us=class extends t{}),new Us(be(e,n))}function Zs(t,e,n,a){return Ws||(Ws=class extends t{constructor(t,e,n){super(),this._declarationView=t,this._declarationTContainer=e,this.elementRef=n}createEmbeddedView(t){const e=this._declarationTContainer.tViews,n=function(t,e,n,a){const r=Ye(),i=Ve();ze(null,!0);const s=Ri(n,t,e,16,null,null);return s[16]=n,ki(t,null,-1,s),t.firstTemplatePass&&(t.node.injectorIndex=a),ze(i,r),s}(e,t,this._declarationView,this._declarationTContainer.injectorIndex);n[17]=this._declarationView[this._declarationTContainer.index];const a=this._declarationView[5];null!==a&&(n[5]=a.createEmbeddedView(e)),Ei(n,e,t);const r=new Ys(n,t,-1);return r._tViewNode=n[6],r}}),0===n.type?new Ws(a,n,$s(e,n,a)):null}function Js(t,e,n,a){let r;Ks||(Ks=class extends t{constructor(t,e,n){super(),this._lContainer=t,this._hostTNode=e,this._hostView=n}get element(){return $s(e,this._hostTNode,this._hostView)}get injector(){return new Ca(this._hostTNode,this._hostView)}get parentInjector(){const t=ya(this._hostTNode,this._hostView),e=ua(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){const t=n.parent.injectorIndex;let e=n.parent;for(;null!=e.parent&&t==e.injectorIndex;)e=e.parent;return e}let a=oa(t),r=e,i=e[6];for(;a>1;)r=r[16],i=r[6],a--;return i}(t,this._hostView,this._hostTNode);return ia(t)&&null!=n?new Ca(n,e):new Ca(null,this._hostView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){return null!==this._lContainer[8]&&this._lContainer[8][t]||null}get length(){return this._lContainer.length-9}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;!r&&null==t.ngModule&&i&&(r=i.get(ft,null));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");this.allocateContainerIfNeeded();const n=t._lView,a=this._adjustIndex(e);return Jt(n[3])?this.move(t,a):(Is(n,this._lContainer,a),Ss(n,!0,qs(a,this._lContainer)),t.attachToViewContainerRef(this),mt(this._lContainer[8],a,t),t)}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this.indexOf(t);return-1!==n&&this.detach(n),this.insert(t,e),t}indexOf(t){return null!==this._lContainer[8]?this._lContainer[8].indexOf(t):0}remove(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1);Rs(this._lContainer,e),yt(this._lContainer[8],e)}detach(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1),n=Cs(this._lContainer,e);return n&&null!=yt(this._lContainer[8],e)?new Ys(n,n[9],-1):null}_adjustIndex(t,e=0){return null==t?this.length+e:t}allocateContainerIfNeeded(){null===this._lContainer[8]&&(this._lContainer[8]=[])}});const i=a[n.index];if(Jt(i))r=i,r[2]=-1;else{let t;if(t=4===n.type?ge(i):a[12].createComment(""),ee(a)){const e=a[12],r=be(n,a);Ls(e,Ps(e,r),t,function(t,e){return ta(t)?t.nextSibling(e):e.nextSibling}(e,r))}else Ms(t,n,a);a[n.index]=r=ns(i,a,t,n,!0),rs(a,r)}return new Ks(r,n,a)}function Qs(t=!1){return function(t,e,n){if(Xt(t)&&!n){const n=t.directiveStart,a=xe(t.index,e);return new Ys(a,null,n)}if(3===t.type||0===t.type||4===t.type){const t=la(e);return new Ys(t,t[9],-1)}return null}(Ve(),Ae(),t)}let Xs=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>eo(),t})();const to=Qs,eo=(...t)=>{},no=Function;function ao(t){return"function"==typeof t}const ro=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/,io=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,so=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,oo=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s+super\(\.\.\.arguments\)/;class uo{constructor(t){this._reflect=t||U.Reflect}isReflectionEnabled(){return!0}factory(t){return(...e)=>new t(...e)}_zipTypesAndAnnotations(t,e){let n;n=new Array(void 0===t?e.length:t.length);for(let a=0;a<n.length;a++)n[a]=void 0===t?[]:t[a]&&t[a]!=Object?[t[a]]:[],e&&null!=e[a]&&(n[a]=n[a].concat(e[a]));return n}_ownParameters(t,e){if(n=t.toString(),ro.test(n)||oo.test(n)||io.test(n)&&!so.test(n))return null;var n;if(t.parameters&&t.parameters!==e.parameters)return t.parameters;const a=t.ctorParameters;if(a&&a!==e.ctorParameters){const t="function"==typeof a?a():a,e=t.map(t=>t&&t.type),n=t.map(t=>t&&lo(t.decorators));return this._zipTypesAndAnnotations(e,n)}const r=t.hasOwnProperty(b)&&t[b],i=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",t);return i||r?this._zipTypesAndAnnotations(i,r):new Array(t.length).fill(void 0)}parameters(t){if(!ao(t))return[];const e=co(t);let n=this._ownParameters(t,e);return n||e===Object||(n=this.parameters(e)),n||[]}_ownAnnotations(t,e){if(t.annotations&&t.annotations!==e.annotations){let e=t.annotations;return"function"==typeof e&&e.annotations&&(e=e.annotations),e}return t.decorators&&t.decorators!==e.decorators?lo(t.decorators):t.hasOwnProperty(p)?t[p]:null}annotations(t){if(!ao(t))return[];const e=co(t),n=this._ownAnnotations(t,e)||[];return(e!==Object?this.annotations(e):[]).concat(n)}_ownPropMetadata(t,e){if(t.propMetadata&&t.propMetadata!==e.propMetadata){let e=t.propMetadata;return"function"==typeof e&&e.propMetadata&&(e=e.propMetadata),e}if(t.propDecorators&&t.propDecorators!==e.propDecorators){const e=t.propDecorators,n={};return Object.keys(e).forEach(t=>{n[t]=lo(e[t])}),n}return t.hasOwnProperty(m)?t[m]:null}propMetadata(t){if(!ao(t))return{};const e=co(t),n={};if(e!==Object){const t=this.propMetadata(e);Object.keys(t).forEach(e=>{n[e]=t[e]})}const a=this._ownPropMetadata(t,e);return a&&Object.keys(a).forEach(t=>{const e=[];n.hasOwnProperty(t)&&e.push(...n[t]),e.push(...a[t]),n[t]=e}),n}ownPropMetadata(t){return ao(t)&&this._ownPropMetadata(t,co(t))||{}}hasLifecycleHook(t,e){return t instanceof no&&e in t.prototype}guards(t){return{}}getter(t){return new Function("o","return o."+t+";")}setter(t){return new Function("o","v","return o."+t+" = v;")}method(t){return new Function("o","args",`if (!o.${t}) throw new Error('"${t}" is undefined');\n        return o.${t}.apply(o, args);`)}importUri(t){return"object"==typeof t&&t.filePath?t.filePath:`./${j(t)}`}resourceUri(t){return`./${j(t)}`}resolveIdentifier(t,e,n,a){return a}resolveEnum(t,e){return t[e]}}function lo(t){return t?t.map(t=>new(0,t.type.annotationCls)(...t.args?t.args:[])):[]}function co(t){const e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}let fo=null;function ho(){return fo=fo||new uo}function go(t){return po(ho().parameters(t))}function po(t){const e=W();return t.map(t=>function(t,e){const n={token:null,host:!1,optional:!1,resolved:t.R3ResolvedDependencyType.Token,self:!1,skipSelf:!1};function a(e){n.resolved=t.R3ResolvedDependencyType.Token,n.token=e}if(Array.isArray(e)){if(0===e.length)throw new Error("Dependency array must have arguments.");for(let r=0;r<e.length;r++){const i=e[r];if(void 0!==i)if(i instanceof O||"Optional"===i.__proto__.ngMetadataName)n.optional=!0;else if(i instanceof S||"SkipSelf"===i.__proto__.ngMetadataName)n.skipSelf=!0;else if(i instanceof w||"Self"===i.__proto__.ngMetadataName)n.self=!0;else if(i instanceof I||"Host"===i.__proto__.ngMetadataName)n.host=!0;else if(i instanceof T)n.token=i.token;else if(i instanceof N){if(void 0===i.attributeName)throw new Error("Attribute name must be defined.");n.token=i.attributeName,n.resolved=t.R3ResolvedDependencyType.Attribute}else i===Xs?(n.token=i,n.resolved=t.R3ResolvedDependencyType.ChangeDetectorRef):a(i)}}else a(e);return n}(e,t))}function bo(t,e){let n=null;t.hasOwnProperty(M)||Object.defineProperty(t,M,{get:()=>{if(null===n){const a=e||{providedIn:null},r=yo(a)||xo(a)||vo(a)||_o(a),i={name:t.name,type:t,typeArgumentCount:0,providedIn:a.providedIn,ctorDeps:go(t),userDeps:void 0};if((yo(a)||xo(a))&&void 0!==a.deps&&(i.userDeps=po(a.deps)),r)if(yo(a))i.useClass=a.useClass;else if(vo(a))i.useValue=a.useValue;else if(xo(a))i.useFactory=a.useFactory;else{if(!_o(a))throw new Error("Unreachable state.");i.useExisting=a.useExisting}else i.useClass=t;n=W().compileInjectable(ct,`ng:///${t.name}/ngInjectableDef.js`,i)}return n}})}const mo=R({provide:String,useValue:R});function yo(t){return void 0!==t.useClass}function vo(t){return mo in t}function xo(t){return void 0!==t.useFactory}function _o(t){return void 0!==t.useExisting}const To=R({provide:String,useValue:R}),Oo=[];function wo(t,e){if(!e){const e=(new uo).parameters(t);return()=>new t(...ot(e))}if(To in e){const t=e;return()=>t.useValue}if(e.useExisting){const t=e;return()=>rt(t.useExisting)}if(e.useFactory){const t=e;return()=>t.useFactory(...ot(t.deps||Oo))}if(e.useClass){const n=e;let a=e.deps;if(!a){const e=new uo;a=e.parameters(t)}return()=>new n.useClass(...ot(a))}{let n=e.deps;if(!n){const e=new uo;n=e.parameters(t)}return()=>new t(...ot(n))}}const So=y("Injectable",void 0,void 0,void 0,(t,e)=>No(t,e)),Io=bo,No=function(t,e){e&&void 0!==e.providedIn&&!D(t)&&(t.ngInjectableDef=k({token:t,providedIn:e.providedIn,factory:wo(t,e)}))},Co=new K("The presence of this token marks an injector as being the root injector."),Ro={},Ao={},ko=[];let Eo=void 0;function Lo(){return void 0===Eo&&(Eo=new ut),Eo}function Do(t,e=null,n=null,a){return e=e||Lo(),new Po(t,n,e,a)}class Po{constructor(t,e,n,a=null){this.parent=n,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;const r=[];bt([t],t=>this.processInjectorType(t,[],r)),e&&bt(e,n=>this.processProvider(n,t,e)),this.records.set($,jo(void 0,this)),this.isRootInjector=this.records.has(Co),this.injectorDefTypes.forEach(t=>this.get(t)),this.source=a||("object"==typeof t?null:j(t))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(t=>t.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(t,e=Z,n=C.Default){this.assertNotDestroyed();const a=et(this);try{if(!(n&C.SkipSelf)){let e=this.records.get(t);if(void 0===e){const n=("function"==typeof(r=t)||"object"==typeof r&&r instanceof K)&&D(t);n&&this.injectableDefInScope(n)&&(e=jo(Mo(t),Ro),this.records.set(t,e))}if(void 0!==e)return this.hydrate(t,e)}return(n&C.Self?Lo():this.parent).get(t,n&C.Optional?null:e)}catch(i){if("NullInjectorError"===i.name){if((i.ngTempTokenPath=i.ngTempTokenPath||[]).unshift(j(t)),a)throw i;return dt(i,t,"R3InjectorError",this.source)}throw i}finally{et(a)}var r}toString(){const t=[];return this.records.forEach((e,n)=>t.push(j(n))),`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(t,e,n){if(!(t=V(t)))return!1;let a=P(t);const r=null==a&&t.ngModule||void 0,i=void 0===r?t:r,s=-1!==n.indexOf(i);if(void 0!==r&&(a=P(r)),null==a)return!1;if(this.injectorDefTypes.add(i),this.records.set(i,jo(a.factory,Ro)),null!=a.imports&&!s){let t;n.push(i);try{bt(a.imports,a=>{this.processInjectorType(a,e,n)&&(void 0===t&&(t=[]),t.push(a))})}finally{}if(void 0!==t)for(let e=0;e<t.length;e++){const{ngModule:n,providers:a}=t[e];bt(a,t=>this.processProvider(t,n,a||ko))}}const o=a.providers;if(null!=o&&!s){const e=t;bt(o,t=>this.processProvider(t,e,o))}return void 0!==r&&void 0!==t.providers}processProvider(t,e,n){let a=Go(t=V(t))?t:V(t&&t.provide);const r=function(t,e,n){let a=qo(t,e,n);return Fo(t)?jo(void 0,t.useValue):jo(a,Ro)}(t,e,n);if(Go(t)||!0!==t.multi){const t=this.records.get(a);t&&void 0!==t.multi&&Br()}else{let e=this.records.get(a);e?void 0===e.multi&&Br():(e=jo(void 0,Ro,!0),e.factory=()=>ot(e.multi),this.records.set(a,e)),a=t,e.multi.push(t)}this.records.set(a,r)}hydrate(t,e){var n;return e.value===Ao?function(t){throw new Error(`Cannot instantiate cyclic dependency! ${t}`)}(j(t)):e.value===Ro&&(e.value=Ao,e.value=e.factory()),"object"==typeof e.value&&e.value&&null!==(n=e.value)&&"object"==typeof n&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value}injectableDefInScope(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||"root"===t.providedIn&&this.isRootInjector:this.injectorDefTypes.has(t.providedIn))}}function Mo(t){const e=D(t);if(null!==e)return e.factory;const n=P(t);if(null!==n)return n.factory;if(t instanceof K)throw new Error(`Token ${j(t)} is missing an ngInjectableDef definition.`);if(t instanceof Function)return function(t){const e=t.length;if(e>0){const n=new Array(e).fill("?");throw new Error(`Can't resolve all parameters for ${j(t)}: (${n.join(", ")}).`)}const n=(a=t)&&a[M]?(console.warn(`DEPRECATED: DI is instantiating a token "${a.name}" that inherits its @Injectable decorator but does not provide one itself.\n`+`This will become an error in v10. Please add @Injectable() to the "${a.name}" class.`),a[M]):null;var a;return null!==n?()=>n.factory(t):()=>new t}(t);throw new Error("unreachable")}function qo(t,e,n){let a=void 0;if(Go(t))return Mo(V(t));if(Fo(t))a=()=>V(t.useValue);else if((r=t)&&r.useExisting)a=()=>rt(V(t.useExisting));else if(function(t){return!(!t||!t.useFactory)}(t))a=()=>t.useFactory(...ot(t.deps||[]));else{const r=V(t&&(t.useClass||t.provide));if(r||function(t,e,n){let a="";throw t&&e&&(a=` - only instances of Provider and Type are allowed, got: [${e.map(t=>t==n?"?"+n+"?":"...").join(", ")}]`),new Error(`Invalid provider for the NgModule '${j(t)}'`+a)}(e,n,t),!function(t){return!!t.deps}(t))return Mo(r);a=()=>new r(...ot(t.deps))}var r;return a}function jo(t,e,n=!1){return{factory:t,value:e,multi:n?[]:void 0}}function Fo(t){return null!==t&&"object"==typeof t&&Q in t}function Go(t){return"function"==typeof t}function Vo(t,e,n){return Do({name:n},e,t,n)}const zo=function(t,e,n){return new Ko(t,e,n)};let Bo=(()=>{class t{static create(t,e){return Array.isArray(t)?zo(t,e,""):zo(t.providers,t.parent,t.name||"")}}return t.THROW_IF_NOT_FOUND=Z,t.NULL=new ut,t.ngInjectableDef=k({token:t,providedIn:"any",factory:()=>rt($)}),t.__NG_ELEMENT_ID__=-1,t})();const Yo=function(t){return t},Ho=[],Uo=Yo,Wo=function(){return Array.prototype.slice.call(arguments)};class Ko{constructor(t,e=Bo.NULL,n=null){this.parent=e,this.source=n;const a=this._records=new Map;a.set(Bo,{token:Bo,fn:Yo,deps:Ho,value:this,useNew:!1}),a.set($,{token:$,fn:Yo,deps:Ho,value:this,useNew:!1}),function t(e,n){if(n)if((n=V(n))instanceof Array)for(let a=0;a<n.length;a++)t(e,n[a]);else{if("function"==typeof n)throw Zo("Function/Class not supported",n);if(!n||"object"!=typeof n||!n.provide)throw Zo("Unexpected provider",n);{let t=V(n.provide);const a=function(t){const e=function(t){let e=Ho;const n=t.deps;if(n&&n.length){e=[];for(let t=0;t<n.length;t++){let a=6,r=V(n[t]);if(r instanceof Array)for(let t=0,e=r;t<e.length;t++){const n=e[t];n instanceof O||n==O?a|=1:n instanceof S||n==S?a&=-3:n instanceof w||n==w?a&=-5:r=n instanceof T?n.token:V(n)}e.push({token:r,options:a})}}else if(t.useExisting)e=[{token:V(t.useExisting),options:6}];else if(!(n||Q in t))throw Zo("'deps' required",t);return e}(t);let n=Yo,a=Ho,r=!1,i=V(t.provide);if(Q in t)a=t.useValue;else if(t.useFactory)n=t.useFactory;else if(t.useExisting);else if(t.useClass)r=!0,n=V(t.useClass);else{if("function"!=typeof i)throw Zo("StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable",t);r=!0,n=i}return{deps:e,fn:n,useNew:r,value:a}}(n);if(!0===n.multi){let a=e.get(t);if(a){if(a.fn!==Wo)throw $o(t)}else e.set(t,a={token:n.provide,deps:[],useNew:!1,fn:Wo,value:Ho});t=n,a.deps.push({token:t,options:6})}const r=e.get(t);if(r&&r.fn==Wo)throw $o(t);e.set(t,a)}}}(a,t)}get(t,e,n=C.Default){const a=this._records.get(t);try{return function t(e,n,a,r,i,s){try{return function(e,n,a,r,i,s){let o;if(!n||s&C.SkipSelf)s&C.Self||(o=r.get(e,i,C.Default));else{if(o=n.value,o==Uo)throw Error("ɵCircular dependency");if(o===Ho){n.value=Uo;let e=void 0,i=n.useNew,s=n.fn,u=n.deps,d=Ho;if(u.length){d=[];for(let e=0;e<u.length;e++){const n=u[e],i=n.options,s=2&i?a.get(n.token):void 0;d.push(t(n.token,s,a,s||4&i?r:Bo.NULL,1&i?null:Bo.THROW_IF_NOT_FOUND,C.Default))}}n.value=o=i?new s(...d):s.apply(e,d)}}return o}(e,n,a,r,i,s)}catch(o){throw o instanceof Error||(o=new Error(o)),(o.ngTempTokenPath=o.ngTempTokenPath||[]).unshift(e),n&&n.value==Uo&&(n.value=Ho),o}}(t,a,this._records,this.parent,e,n)}catch(r){return dt(r,t,"StaticInjectorError",this.source)}}toString(){const t=[];return this._records.forEach((e,n)=>t.push(j(n))),`StaticInjector[${t.join(", ")}]`}}function $o(t){return Zo("Cannot mix multi providers and regular providers",t)}function Zo(t,e){return new Error(lt(t,e,"StaticInjectorError"))}function Jo(t){return t.length>1?" ("+function(t){const e=[];for(let n=0;n<t.length;++n){if(e.indexOf(t[n])>-1)return e.push(t[n]),e;e.push(t[n])}return e}(t.slice().reverse()).map(t=>j(t.token)).join(" -> ")+")":""}function Qo(t,e,n,a){const r=[e],i=n(r),s=a?function(t,e){const n=`${t} caused by: ${e instanceof Error?e.message:e}`,a=Error(n);return a.ngOriginalError=e,a}(i,a):Error(i);return s.addKey=Xo,s.keys=r,s.injectors=[t],s.constructResolvingMessage=n,s.ngOriginalError=a,s}function Xo(t,e){this.injectors.push(t),this.keys.push(e),this.message=this.constructResolvingMessage(this.keys)}function tu(t,e){const n=[];for(let a=0,r=e.length;a<r;a++){const t=e[a];n.push(t&&0!=t.length?t.map(j).join(" "):"?")}return Error("Cannot resolve all parameters for '"+j(t)+"'("+n.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+j(t)+"' is decorated with Injectable.")}class eu{constructor(t,e){if(this.token=t,this.id=e,!t)throw new Error("Token must be defined!");this.displayName=j(this.token)}static get(t){return au.get(V(t))}static get numberOfKeys(){return au.numberOfKeys}}class nu{constructor(){this._allKeys=new Map}get(t){if(t instanceof eu)return t;if(this._allKeys.has(t))return this._allKeys.get(t);const e=new eu(t,eu.numberOfKeys);return this._allKeys.set(t,e),e}get numberOfKeys(){return this._allKeys.size}}const au=new nu;class ru{constructor(t){this.reflectionCapabilities=t}updateCapabilities(t){this.reflectionCapabilities=t}factory(t){return this.reflectionCapabilities.factory(t)}parameters(t){return this.reflectionCapabilities.parameters(t)}annotations(t){return this.reflectionCapabilities.annotations(t)}propMetadata(t){return this.reflectionCapabilities.propMetadata(t)}hasLifecycleHook(t,e){return this.reflectionCapabilities.hasLifecycleHook(t,e)}getter(t){return this.reflectionCapabilities.getter(t)}setter(t){return this.reflectionCapabilities.setter(t)}method(t){return this.reflectionCapabilities.method(t)}importUri(t){return this.reflectionCapabilities.importUri(t)}resourceUri(t){return this.reflectionCapabilities.resourceUri(t)}resolveIdentifier(t,e,n,a){return this.reflectionCapabilities.resolveIdentifier(t,e,n,a)}resolveEnum(t,e){return this.reflectionCapabilities.resolveEnum(t,e)}}const iu=new ru(new uo);class su{constructor(t,e,n){this.key=t,this.optional=e,this.visibility=n}static fromKey(t){return new su(t,!1,null)}}const ou=[];class uu{constructor(t,e,n){this.key=t,this.resolvedFactories=e,this.multiProvider=n,this.resolvedFactory=this.resolvedFactories[0]}}class du{constructor(t,e){this.factory=t,this.dependencies=e}}function lu(t){let e,n;if(t.useClass){const a=V(t.useClass);e=iu.factory(a),n=hu(a)}else t.useExisting?(e=t=>t,n=[su.fromKey(eu.get(t.useExisting))]):t.useFactory?(e=t.useFactory,n=function(t,e){if(e){const n=e.map(t=>[t]);return e.map(e=>gu(t,e,n))}return hu(t)}(t.useFactory,t.deps)):(e=()=>t.useValue,n=ou);return new du(e,n)}function cu(t){return new uu(eu.get(t.provide),[lu(t)],t.multi||!1)}function fu(t){const e=function(t,e){for(let n=0;n<t.length;n++){const a=t[n],r=e.get(a.key.id);if(r){if(a.multiProvider!==r.multiProvider)throw Error(`Cannot mix multi providers and regular providers, got: ${r} ${a}`);if(a.multiProvider)for(let t=0;t<a.resolvedFactories.length;t++)r.resolvedFactories.push(a.resolvedFactories[t]);else e.set(a.key.id,a)}else{let t;t=a.multiProvider?new uu(a.key,a.resolvedFactories.slice(),a.multiProvider):a,e.set(a.key.id,t)}}return e}(function t(e,n){return e.forEach(e=>{if(e instanceof no)n.push({provide:e,useClass:e});else if(e&&"object"==typeof e&&void 0!==e.provide)n.push(e);else{if(!(e instanceof Array))throw Error(`Invalid provider - only instances of Provider and Type are allowed, got: ${e}`);t(e,n)}}),n}(t,[]).map(cu),new Map);return Array.from(e.values())}function hu(t){const e=iu.parameters(t);if(!e)return[];if(e.some(t=>null==t))throw tu(t,e);return e.map(n=>gu(t,n,e))}function gu(t,e,n){let a=null,r=!1;if(!Array.isArray(e))return pu(e instanceof T?e.token:e,r,null);let i=null;for(let s=0;s<e.length;++s){const t=e[s];t instanceof no?a=t:t instanceof T?a=t.token:t instanceof O?r=!0:t instanceof w||t instanceof S?i=t:t instanceof K&&(a=t)}if(a=V(a),null!=a)return pu(a,r,i);throw tu(t,n)}function pu(t,e,n){return new su(eu.get(t),e,n)}const bu=new Object;class mu{static resolve(t){return fu(t)}static resolveAndCreate(t,e){const n=mu.resolve(t);return mu.fromResolvedProviders(n,e)}static fromResolvedProviders(t,e){return new yu(t,e)}}let yu=(()=>{class t{constructor(t,e){this._constructionCounter=0,this._providers=t,this.parent=e||null;const n=t.length;this.keyIds=new Array(n),this.objs=new Array(n);for(let a=0;a<n;a++)this.keyIds[a]=t[a].key.id,this.objs[a]=bu}get(t,e=Z){return this._getByKey(eu.get(t),null,e)}resolveAndCreateChild(t){const e=mu.resolve(t);return this.createChildFromResolved(e)}createChildFromResolved(e){const n=new t(e);return n.parent=this,n}resolveAndInstantiate(t){return this.instantiateResolved(mu.resolve([t])[0])}instantiateResolved(t){return this._instantiateProvider(t)}getProviderAtIndex(t){if(t<0||t>=this._providers.length)throw function(t){return Error(`Index ${t} is out-of-bounds.`)}(t);return this._providers[t]}_new(t){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw Qo(this,t.key,(function(t){return`Cannot instantiate cyclic dependency!${Jo(t)}`}));return this._instantiateProvider(t)}_getMaxNumberOfObjects(){return this.objs.length}_instantiateProvider(t){if(t.multiProvider){const e=new Array(t.resolvedFactories.length);for(let n=0;n<t.resolvedFactories.length;++n)e[n]=this._instantiate(t,t.resolvedFactories[n]);return e}return this._instantiate(t,t.resolvedFactories[0])}_instantiate(t,e){const n=e.factory;let a,r;try{a=e.dependencies.map(t=>this._getByReflectiveDependency(t))}catch(s){throw s.addKey&&s.addKey(this,t.key),s}try{r=n(...a)}catch(s){throw Qo(this,t.key,(function(t){const e=j(t[0].token);return`${i.message}: Error during instantiation of ${e}!${Jo(t)}.`}),i=s)}var i;return r}_getByReflectiveDependency(t){return this._getByKey(t.key,t.visibility,t.optional?null:Z)}_getByKey(e,n,a){return e===t.INJECTOR_KEY?this:n instanceof w?this._getByKeySelf(e,a):this._getByKeyDefault(e,a,n)}_getObjByKeyId(t){for(let e=0;e<this.keyIds.length;e++)if(this.keyIds[e]===t)return this.objs[e]===bu&&(this.objs[e]=this._new(this._providers[e])),this.objs[e];return bu}_throwOrNull(t,e){if(e!==Z)return e;throw function(t,e){return Qo(t,e,(function(t){return`No provider for ${j(t[0].token)}!${Jo(t)}`}))}(this,t)}_getByKeySelf(t,e){const n=this._getObjByKeyId(t.id);return n!==bu?n:this._throwOrNull(t,e)}_getByKeyDefault(e,n,a){let r;for(r=a instanceof S?this.parent:this;r instanceof t;){const t=r,n=t._getObjByKeyId(e.id);if(n!==bu)return n;r=t.parent}return null!==r?r.get(e.token,n):this._throwOrNull(e,n)}get displayName(){return`ReflectiveInjector(providers: [${function(t,e){const n=new Array(t._providers.length);for(let a=0;a<t._providers.length;++a)n[a]=e(t.getProviderAtIndex(a));return n}(this,t=>' "'+t.key.displayName+'" ').join(", ")}])`}toString(){return this.displayName}}return t.INJECTOR_KEY=eu.get(Bo),t})();const vu=new K("AnalyzeForEntryComponents");class xu{}const _u=_("ContentChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!1,descendants:!1},e),xu),Tu=_("ContentChild",(t,e={})=>Object.assign({selector:t,first:!0,isViewQuery:!1,descendants:!0},e),xu),Ou=_("ViewChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!0,descendants:!0},e),xu),wu=_("ViewChild",(t,e)=>Object.assign({selector:t,first:!0,isViewQuery:!0,descendants:!0},e),xu);function Su(t){const e=[],n=new Map;function a(e){let a=n.get(e);if(!a){const r=t(e);n.set(e,a=r.then(Au))}return a}return Iu.forEach((t,n)=>{const r=[];t.templateUrl&&r.push(a(t.templateUrl).then(e=>{t.template=e}));const i=t.styleUrls,s=t.styles||(t.styles=[]),o=t.styles.length;i&&i.forEach((e,n)=>{s.push(""),r.push(a(e).then(a=>{s[o+n]=a,i.splice(i.indexOf(e),1),0==i.length&&(t.styleUrls=void 0)}))});const u=Promise.all(r).then(()=>function(t){Nu.delete(t)}(n));e.push(u)}),Ru(),Promise.all(e).then(()=>{})}let Iu=new Map;const Nu=new Set;function Cu(t){return!!(t.templateUrl&&!t.hasOwnProperty("template")||t.styleUrls&&t.styleUrls.length)}function Ru(){const t=Iu;return Iu=new Map,t}function Au(t){return"string"==typeof t?t:t.text()}function ku(t){const e=Ae(),n=e[1];n.firstTemplatePass&&(function(t,e,n){const a=t.expandoInstructions,r=a.length;r>=2&&a[r-2]===e.hostBindings?a[r-1]=a[r-1]+n:a.push(e.hostBindings,n)}(n,Se,t),function(t,e,n){for(let a=0;a<n;a++)e.push(ci),t.blueprint.push(ci),t.data.push(null)}(n,e,t))}let Eu=null;function Lu(){if(!Eu){const t=U.Symbol;if(t&&t.iterator)Eu=t.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let e=0;e<t.length;++e){const n=t[e];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(Eu=n)}}}return Eu}function Du(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}function Pu(t,e){const n=qu(t),a=qu(e);if(n&&a)return function(t,e,n){const a=t[Lu()](),r=e[Lu()]();for(;;){const t=a.next(),e=r.next();if(t.done&&e.done)return!0;if(t.done||e.done)return!1;if(!n(t.value,e.value))return!1}}(t,e,Pu);{const r=t&&("object"==typeof t||"function"==typeof t),i=e&&("object"==typeof e||"function"==typeof e);return!(n||!r||a||!i)||Du(t,e)}}class Mu{constructor(t){this.wrapped=t}static wrap(t){return new Mu(t)}static unwrap(t){return Mu.isWrapped(t)?t.wrapped:t}static isWrapped(t){return t instanceof Mu}}function qu(t){return!!ju(t)&&(Array.isArray(t)||!(t instanceof Map)&&Lu()in t)}function ju(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function Fu(t,e,n){return t[e]=n}function Gu(t,e){return t[e]}function Vu(t,e,n){return!!yn(t[e],n)&&(t[e]=n,!0)}function zu(t,e,n,a){const r=Vu(t,e,n);return Vu(t,e+1,a)||r}function Bu(t,e,n,a,r){const i=zu(t,e,n,a);return Vu(t,e+2,r)||i}function Yu(t,e,n,a,r,i){const s=zu(t,e,n,a);return zu(t,e+2,r,i)||s}function Hu(t,e,n){const a=un(),r=Uu(Ae(),e);return r!==ci&&Yi(a,t,r,n),Hu}function Uu(t,e){const n=t[7]++;return cs(t),Vu(t,n,e)?e:ci}function Wu(t,e,n,a){const r=un(),i=Ae(),s=Uu(i,e);return s!==ci&&es(r,t,s,i,n,a),Wu}function Ku(t,e){let n=!1;const a=t[1].data;let r=t[7];if(null==a[r]){for(let t=2;t<e.length;t+=2)a[r++]=e[t];r=t[7]}for(let s=1;s<e.length;s+=2)n=Vu(t,r++,e[s])||n;if(t[7]=r,cs(t,e[0],e[e.length-1]),!n)return ci;let i=e[0];for(let s=1;s<e.length;s+=2)i+=vn(e[s])+e[s+1];return i}function $u(t,e,n,a){const r=Vu(t,t[7]++,n);return cs(t,e,a),r?e+vn(n)+a:ci}function Zu(t,e,n,a,r,i){const s=t[7],o=zu(t,s,n,r);return t[7]+=2,cs(t,e,i)&&(t[1].data[s]=a),o?e+vn(n)+a+vn(r)+i:ci}function Ju(t,e,n,a,r,i,s,o){const u=t[7],d=Bu(t,u,n,r,s);if(t[7]+=3,cs(t,e,o)){const e=t[1].data;e[u]=a,e[u+1]=i}return d?e+vn(n)+a+vn(r)+i+vn(s)+o:ci}function Qu(t,e,n,a,r,i,s,o,u,d){const l=t[7],c=Yu(t,l,n,r,s,u);if(t[7]+=4,cs(t,e,d)){const e=t[1].data;e[l]=a,e[l+1]=i,e[l+2]=o}return c?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+d:ci}function Xu(t,e,n,a,r,i,s,o,u,d,l,c){const f=t[7];let h=Yu(t,f,n,r,s,u);if(h=Vu(t,f+4,l)||h,t[7]+=5,cs(t,e,c)){const e=t[1].data;e[f]=a,e[f+1]=i,e[f+2]=o,e[f+3]=d}return h?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+d+vn(l)+c:ci}function td(t,e,n,a,r,i,s,o,u,d,l,c,f,h){const g=t[7];let p=Yu(t,g,n,r,s,u);if(p=zu(t,g+4,l,f)||p,t[7]+=6,cs(t,e,h)){const e=t[1].data;e[g]=a,e[g+1]=i,e[g+2]=o,e[g+3]=d,e[g+4]=c}return p?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+d+vn(l)+c+vn(f)+h:ci}function ed(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p){const b=t[7];let m=Yu(t,b,n,r,s,u);if(m=Bu(t,b+4,l,f,g)||m,t[7]+=7,cs(t,e,p)){const e=t[1].data;e[b]=a,e[b+1]=i,e[b+2]=o,e[b+3]=d,e[b+4]=c,e[b+5]=h}return m?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+d+vn(l)+c+vn(f)+h+vn(g)+p:ci}function nd(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m){const y=t[7];let v=Yu(t,y,n,r,s,u);if(v=Yu(t,y+4,l,f,g,b)||v,t[7]+=8,cs(t,e,m)){const e=t[1].data;e[y]=a,e[y+1]=i,e[y+2]=o,e[y+3]=d,e[y+4]=c,e[y+5]=h,e[y+6]=p}return v?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+d+vn(l)+c+vn(f)+h+vn(g)+p+vn(b)+m:ci}function ad(t,e,n,a,r,i){const s=un(),o=Ae(),u=$u(o,e,n,a);return u!==ci&&es(s,t,u,o,r,i),ad}function rd(t,e,n,a,r,i,s,o){const u=un(),d=Ae(),l=Zu(d,e,n,a,r,i);return l!==ci&&es(u,t,l,d,s,o),rd}function id(t,e,n,a,r,i,s,o,u,d){const l=un(),c=Ae(),f=Ju(c,e,n,a,r,i,s,o);return f!==ci&&es(l,t,f,c,u,d),id}function sd(t,e,n,a,r,i,s,o,u,d,l,c){const f=un(),h=Ae(),g=Qu(h,e,n,a,r,i,s,o,u,d);return g!==ci&&es(f,t,g,h,l,c),sd}function od(t,e,n,a,r,i,s,o,u,d,l,c,f,h){const g=un(),p=Ae(),b=Xu(p,e,n,a,r,i,s,o,u,d,l,c);return b!==ci&&es(g,t,b,p,f,h),od}function ud(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p){const b=un(),m=Ae(),y=td(m,e,n,a,r,i,s,o,u,d,l,c,f,h);return y!==ci&&es(b,t,y,m,g,p),ud}function dd(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m){const y=un(),v=Ae(),x=ed(v,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p);return x!==ci&&es(y,t,x,v,b,m),dd}function ld(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m,y,v){const x=un(),_=Ae(),T=nd(_,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m);return T!==ci&&es(x,t,T,_,y,v),ld}function cd(t,e,n,a){const r=un(),i=Ae(),s=Ku(i,e);return s!==ci&&es(r,t,s,i,n,a),cd}function fd(t){os(Mr(t),t)}function hd(t){!function(t,e){const n=0===t.flags;if(t.flags|=1,n&&t.clean==Si){let e;t.clean=new Promise(t=>e=t),t.scheduler(()=>{if(1&t.flags&&(t.flags&=-2,ss(t)),2&t.flags){t.flags&=-3;const e=t.playerHandler;e&&e.flushPlayers()}t.clean=Si,e(null)})}}(is(Mr(t))[9])}function gd(t){const e=Ae(),n=yd(e,t,null,null);e[1].firstTemplatePass&&(n.tViews=[]),He()}function pd(t,e,n,a,r,i,s,o){const u=Ae(),d=u[1],l=yd(u,t,r||null,i||null);if(d.firstTemplatePass){Hi(d,u,l,s||null);const t=l.tViews=Fi(-1,e,n,a,d.directiveRegistry,d.pipeRegistry,null,null);null!==d.queries&&(d.queries.template(d,l),t.queries=d.queries.embeddedTView(l))}qi(d,u,l,o),qr(be(l,u),u),re(d,l),He()}function bd(t){const e=Ae(),n=e[1];ze(ve(n.data,t),!0),e[t+19][2]=0,ie(e,n,$e(),void 0)}function md(){let t=Ve();Ye()?He():(t=t.parent,ze(t,!1));const e=Ae()[t.index],n=e[2];for(;n<e.length-9;)Rs(e,n)}function yd(t,e,n,a){const r=e+19,i=t[r]=t[12].createComment(""),s=Ai(t[1],t[6],e,0,n,a),o=t[r]=ns(i,t,i,s);return Ms(i,s,t),rs(t,o),s}function vd(t,e){const n=Ae(),a=n[1],r=t+19;r>=a.data.length&&(a.data[r]=null,a.blueprint[r]=null),n[r]=e}function xd(t){return ve(We,t)}function _d(t){return ve(Ae(),t)}function Td(t,e=C.Default){t=V(t);const n=Ae();return null==n?rt(t,e):_a(Ve(),n,t,e)}function Od(t){return xa(Ve(),t)}function wd(){var t,e;Ae()[1].firstTemplatePass&&(t=Ve(),e=jd(),Nn(Gd(t),e),Nn(Fd(t),e))}function Sd(t){bn(t)}function Id(t,e,n){Nd(un(),t,e,n)}function Nd(t,e,n,a){Rd(t,Ae()[7]++,e,function(t,e){if(t===ci)return t;let n=null;return null!==t&&(n=e?vn(t)+e:t),n}(n,a),!1,zd())}function Cd(t,e){const n=Ae()[7]++;Rd(un(),n,t,e,!0,zd())}function Rd(t,e,n,a,r,i){const s=Ae(),o=ye(t,s),u=be(o,s);let d=!1;if(a!==ci)if(r)d=Qr(Gd(o),s,u,n,e,a,i,!1);else{const t=mn();d=Xr(Fd(o),s,u,n,e,a,t,i,!1)}return d}function Ad(t){const e=un(),n=Ae(),a=ye(e,n),r=Fd(a),i=jd(),s=n[7]++;!i&&$n(a)&&t!==ci&&(Dd(r,n,a,s,t,!1),t=ci),Ld(e,r,s,t,!1,zd())}function kd(t){Ed(un(),t)}function Ed(t,e){const n=Ae(),a=ye(t,n),r=Gd(a),i=jd(),s=n[7]++;!i&&Kn(a)&&e!==ci&&(Dd(r,n,a,s,e,!0),e=ci),Ld(t,r,s,e,!0,zd())}function Ld(t,e,n,a,r,i){pi();const s=Ae();let o=!1;if(a!==ci){const u=be(ye(t,s),s),d=s[n];o=Vn(d,a);const l=function(t,e,n){const a=Array.isArray(t)?t:[null];a[0]=e||null;for(let o=1;o<a.length;o+=2)Jn(a,o,null);let r,i=null,s=!1;if("string"==typeof e?e.length&&(i=e.split(/\s+/),s=!0):(i=e?Object.keys(e):null,r=e),i)for(let o=0;o<i.length;o++){const t=i[o];vi(a,n?Yn(t):t,!!s||r[t],!0)}return a}(d,a,!r);r?Qr(e,s,u,null,n,l,i,o):Xr(e,s,u,null,n,l,mn(),i,o)}return o}function Dd(t,e,n,a,r,i){e[a]!==r&&((r||jn(t))&&ys(e,n.inputs[i?"class":"style"],function(t,e,n){let a=e;var r;return t.length>0&&(a=n?Bn(t,((r=e)&&"string"!=typeof r&&(r=Object.keys(r).join(" ")),r||"")):Bn(t,function(t){let e="";if(t){const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];e=Bn(e,`${r}:${t[r]}`,";")}}return e}(e),";")),a}(Wn(t),r,i)),e[a]=r)}function Pd(){const t=un(),e=Ae(),n=ye(t,e),a=function(t,e){return 3===t.type?e[12]:null}(n,e),r=be(n,e),i=jd(),s=mn();(function(t,e,n,a,r,i,s){const o=n?Fn(n):!!a&&Fn(a),u=qn(n,i),d=qn(a,i);Jr.length&&(u||d)&&ei();const l=fe(r,o),c=ii(t,r,e,n,u,l.classesBitMask,di,null),f=ii(t,r,e,a,d,l.stylesBitMask,ui,s);c&&f?(he(),o&&function(t){de.delete(t)}(r)):o&&function(t,e){de.set(t,e)}(r,l)})(a,e,Gd(n),Fd(n),r,i,s),bn(null)}function Md(t,e,n){let a=!1,r=Hn(t.styles),i=Hn(t.classes),s=-1;for(let o=n;o<e.length;o++){const t=e[o];"number"==typeof t?s=t:1==s?(i=i||[""],vi(i,t,!0),a=!0):2==s&&(r=r||[""],vi(r,t,e[++o]),a=!0)}return i&&i.length>1&&(t.classes||(t.classes=i),qd(t.classes,xi(i,!0))),r&&r.length>1&&(t.styles||(t.styles=r),qd(t.styles,xi(r,!1))),a}function qd(t,e){Hn(t)[0]=e}function jd(){return De+Pe}function Fd(t){return Vd(t,!1)}function Gd(t){return Vd(t,!0)}function Vd(t,e){let n=e?t.classes:t.styles;return Un(n)||(n=[n||[""],0,0,1,0,"--MAP--"],e?t.classes=n:t.styles=n),n}function zd(){return Me>0}function Bd(t,e,n,a){const r=Ae(),i=r[1],s=r[t+19]=Ci(e),o=r[12],u=Ai(i,r[6],t,3,e,n||null);if(null!=n){const t=na(s,n);i.firstTemplatePass&&Md(u,n,t)}if(xs(o,s,u),Ms(s,u,r),0===le&&qr(s,r),le++,i.firstTemplatePass){Hi(i,r,u,a||null);const t=hs(u);t&&t.hasOwnProperty("class")&&(u.flags|=8),t&&t.hasOwnProperty("style")&&(u.flags|=16),null!==i.queries&&i.queries.elementStart(i,u)}qi(i,r,u),Mi(i,u,r)}function Yd(){let t=Ve();Ye()?He():(t=t.parent,ze(t,!1));const e=t,n=Ae(),a=n[1];re(a,t),le--,a.firstTemplatePass&&null!==a.queries&&Qt(t)&&a.queries.elementEnd(t),Kn(e)&&e.classes&&Wd(e.classes,n,e.inputs.class),$n(e)&&e.styles&&Wd(e.styles,n,e.inputs.style)}function Hd(t,e,n,a){Bd(t,e,n,a),Yd()}function Ud(t){const e=un(),n=Ae(),a=n[1],r=ye(e,n);if(3===r.type){const e=be(r,n),i=na(e,t);a.firstTemplatePass&&Md(r,t,i)&&xs(n[12],e,r)}}function Wd(t,e,n){ys(e,n,Wn(t)||null)}function Kd(t,e,n){const a=Ae(),r=a[1],i=a[t+19]=a[12].createComment(""),s=Ai(r,a[6],t,4,"ng-container",e||null);e&&r.firstTemplatePass&&Md(s,e,0),Ms(i,s,a),r.firstTemplatePass&&(Hi(r,a,s,n||null),r.queries&&r.queries.elementStart(r,s)),qi(r,a,s),qr(i,a),Mi(r,s,a)}function $d(){let t=Ve();const e=Ae()[1];Ye()?He():(t=t.parent,ze(t,!1)),re(e,t),e.firstTemplatePass&&null!==e.queries&&Qt(t)&&e.queries.elementEnd(t)}function Zd(t,e,n){Kd(t,e,n),$d()}function Jd(t,e,n){const a=Ae(),r=Ve(),i=2===r.type?r.parent:r,s=a[i.index];let o=function(t,e,n){for(let a=e+9;a<t.length;a++){const e=t[a][1].id;if(e===n)return t[a];if(!(e<n))break;Rs(t,a-9)}return null}(s,s[2],t);if(o)Ee=!0,an(o,o[1].node);else{o=Ri(a,function(t,e,n,a){const r=Ae()[1],i=a.tViews;return(t>=i.length||null==i[t])&&(i[t]=Fi(t,null,e,n,r.directiveRegistry,r.pipeRegistry,null,null)),i[t]}(t,e,n,i),null,16,null,null);const s=Ye()?r:r&&r.parent;ki(o[1],s,t,o),an(o,o[1].node)}return s&&(Ue(o)&&Is(o,s,s[2]),s[2]++),Ue(o)?3:2}function Qd(){const t=Ae(),e=t[6];Ue(t)&&(Ii(t),t[2]&=-5),Oe(t),Ii(t),sn(t[3][3],!0),ze(e,!1)}function Xd(){return Ae()}function tl(t){return!!t&&"function"==typeof t.then}function el(t){return!!t&&"function"==typeof t.subscribe}function nl(t,e,n=!1,a){rl(t,e,n,a)}function al(t,e,n=!1,a){rl(t,e,n,a,bs)}function rl(t,e,n=!1,a,r){const i=Ae(),s=Ve(),o=i[1],u=o.firstTemplatePass&&(o.cleanup||(o.cleanup=[]));let d=!0;if(3===s.type){const o=be(s,i),l=a?a(o):St,c=l.target||o,f=r?r(s,i):i[12],h=gs(i),g=h.length,p=a?t=>a(ge(t[s.index])).target:s.index;if(ta(f)){let n=null;if(!a&&function(t){return t.directiveEnd>t.directiveStart}(s)&&(n=function(t,e,n){const a=t[1].cleanup;if(null!=a)for(let r=0;r<a.length-1;r+=2){const i=a[r];if(i===e&&a[r+1]===n){const e=t[8],n=a[r+2];return e.length>n?e[n]:null}"string"==typeof i&&(r+=2)}return null}(i,t,s.index)),null!==n)e.__ngNextListenerFn__=n.__ngNextListenerFn__,n.__ngNextListenerFn__=e,d=!1;else{e=sl(s,i,e,!1);const n=f.listen(l.name||c,t,e);h.push(e,n),u&&u.push(t,p,g,g+1)}}else e=sl(s,i,e,!0),c.addEventListener(t,e,n),h.push(e),u&&u.push(t,p,g,n)}void 0===s.outputs&&(s.outputs=zi(s,1));const l=s.outputs;let c;if(d&&l&&(c=l[t])){const n=c.length;if(n){const a=gs(i);for(let r=0;r<n;r+=3){const n=i[c[r]][c[r+2]].subscribe(e),o=a.length;a.push(e,n),u&&u.push(t,s.index,o,-(o+1))}}}}function il(t,e,n){try{return!1!==e(n)}catch(a){return ms(t,a),!1}}function sl(t,e,n,a){return function r(i){const s=1&t.flags?xe(t.index,e):e;0==(32&e[2])&&is(s);let o=il(e,n,i),u=r.__ngNextListenerFn__;for(;u;)o=il(e,u,i)&&o,u=u.__ngNextListenerFn__;return a&&!1===o&&(i.preventDefault(),i.returnValue=!1),o}}function ol(t=1){return rn(t)}function ul(t,e){let n=null;const a=function(t){const e=t.attrs;if(null!=e){const t=e.indexOf(5);if(0==(1&t))return e[t+1]}return null}(t);for(let r=0;r<e.length;r++){const i=e[r];if("*"!==i){if(null===a?$r(t,i,!0):Zr(a,i))return r}else n=r}return n}function dl(t){const e=la(Ae())[6];if(!e.projection){const n=e.projection=new Array(t?t.length:1).fill(null),a=n.slice();let r=e.child;for(;null!==r;){const e=t?ul(r,t):0;null!==e&&(a[e]?a[e].projectionNext=r:n[e]=r,a[e]=r),r=r.next}}}let ll=!1;function cl(t){ll=t}function fl(t,e=0,n){const a=Ae(),r=Ai(a[1],a[6],t,1,null,n||null);null===r.projection&&(r.projection=e),He(),ll||Fs(a,r,e,la(a))}function hl(t,e,n){return gl(t,"",e,"",n),hl}function gl(t,e,n,a,r){const i=un(),s=$u(Ae(),e,n,a);return s!==ci&&Yi(i,t,s,r),gl}function pl(t,e,n,a,r,i,s){const o=un(),u=Zu(Ae(),e,n,a,r,i);return u!==ci&&Yi(o,t,u,s),pl}function bl(t,e,n,a,r,i,s,o,u){const d=un(),l=Ju(Ae(),e,n,a,r,i,s,o);return l!==ci&&Yi(d,t,l,u),bl}function ml(t,e,n,a,r,i,s,o,u,d,l){const c=un(),f=Qu(Ae(),e,n,a,r,i,s,o,u,d);return f!==ci&&Yi(c,t,f,l),ml}function yl(t,e,n,a,r,i,s,o,u,d,l,c,f){const h=un(),g=Xu(Ae(),e,n,a,r,i,s,o,u,d,l,c);return g!==ci&&Yi(h,t,g,f),yl}function vl(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g){const p=un(),b=td(Ae(),e,n,a,r,i,s,o,u,d,l,c,f,h);return b!==ci&&Yi(p,t,b,g),vl}function xl(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b){const m=un(),y=ed(Ae(),e,n,a,r,i,s,o,u,d,l,c,f,h,g,p);return y!==ci&&Yi(m,t,y,b),xl}function _l(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m,y){const v=un(),x=nd(Ae(),e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m);return x!==ci&&Yi(v,t,x,y),_l}function Tl(t,e,n){const a=un(),r=Ku(Ae(),e);return r!==ci&&Yi(a,t,r,n),Tl}function Ol(t,e){const n=Ae(),a=n[t+19]=ws(e,n[12]),r=Ai(n[1],n[6],t,3,null,null);He(),Ms(a,r,n)}function wl(t){const e=Ae(),n=un(),a=Uu(e,t);a!==ci&&vs(e,n,vn(a))}function Sl(t){return Il("",t,""),Sl}function Il(t,e,n){const a=un(),r=Ae(),i=$u(r,t,e,n);return i!==ci&&vs(r,a,i),Il}function Nl(t,e,n,a,r){const i=un(),s=Ae(),o=Zu(s,t,e,n,a,r);return o!==ci&&vs(s,i,o),Nl}function Cl(t,e,n,a,r,i,s){const o=un(),u=Ae(),d=Ju(u,t,e,n,a,r,i,s);return d!==ci&&vs(u,o,d),Cl}function Rl(t,e,n,a,r,i,s,o,u){const d=un(),l=Ae(),c=Qu(l,t,e,n,a,r,i,s,o,u);return c!==ci&&vs(l,d,c),Rl}function Al(t,e,n,a,r,i,s,o,u,d,l){const c=un(),f=Ae(),h=Xu(f,t,e,n,a,r,i,s,o,u,d,l);return h!==ci&&vs(f,c,h),Al}function kl(t,e,n,a,r,i,s,o,u,d,l,c,f){const h=un(),g=Ae(),p=td(g,t,e,n,a,r,i,s,o,u,d,l,c,f);return p!==ci&&vs(g,h,p),kl}function El(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g){const p=un(),b=Ae(),m=ed(b,t,e,n,a,r,i,s,o,u,d,l,c,f,h,g);return m!==ci&&vs(b,p,m),El}function Ll(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b){const m=un(),y=Ae(),v=nd(y,t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b);return v!==ci&&vs(y,m,v),Ll}function Dl(t){const e=un(),n=Ae(),a=Ku(n,t);return a!==ci&&vs(n,e,a),Dl}function Pl(t,e,n){const a=$u(Ae(),t,e,n);Ed(un(),a)}function Ml(t,e,n,a,r){const i=Zu(Ae(),t,e,n,a,r);Ed(un(),i)}function ql(t,e,n,a,r,i,s){const o=Ju(Ae(),t,e,n,a,r,i,s);Ed(un(),o)}function jl(t,e,n,a,r,i,s,o,u){const d=Qu(Ae(),t,e,n,a,r,i,s,o,u);Ed(un(),d)}function Fl(t,e,n,a,r,i,s,o,u,d,l){const c=Xu(Ae(),t,e,n,a,r,i,s,o,u,d,l);Ed(un(),c)}function Gl(t,e,n,a,r,i,s,o,u,d,l,c,f){const h=td(Ae(),t,e,n,a,r,i,s,o,u,d,l,c,f);Ed(un(),h)}function Vl(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g){const p=ed(Ae(),t,e,n,a,r,i,s,o,u,d,l,c,f,h,g);Ed(un(),p)}function zl(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b){const m=nd(Ae(),t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b);Ed(un(),m)}function Bl(t){const e=Ku(Ae(),t);Ed(un(),e)}function Yl(t,e,n,a,r){const i=$u(Ae(),e,n,a);return Nd(un(),t,i,r),Yl}function Hl(t,e,n,a,r,i,s){const o=Zu(Ae(),e,n,a,r,i);return Nd(un(),t,o,s),Hl}function Ul(t,e,n,a,r,i,s,o,u){const d=Ju(Ae(),e,n,a,r,i,s,o);return Nd(un(),t,d,u),Ul}function Wl(t,e,n,a,r,i,s,o,u,d,l){const c=Qu(Ae(),e,n,a,r,i,s,o,u,d);return Nd(un(),t,c,l),Wl}function Kl(t,e,n,a,r,i,s,o,u,d,l,c,f){const h=Xu(Ae(),e,n,a,r,i,s,o,u,d,l,c);return Nd(un(),t,h,f),Kl}function $l(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g){const p=td(Ae(),e,n,a,r,i,s,o,u,d,l,c,f,h);return Nd(un(),t,p,g),$l}function Zl(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b){const m=ed(Ae(),e,n,a,r,i,s,o,u,d,l,c,f,h,g,p);return Nd(un(),t,m,b),Zl}function Jl(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m,y){const v=nd(Ae(),e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m);return Nd(un(),t,v,y),Jl}function Ql(t,e,n){const a=Ku(Ae(),e);return Nd(un(),t,a,n),Ql}function Xl(t,e,n){const a=un(),r=Uu(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0),Xl}function tc(t,e,n){const a=un(),r=Uu(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0,bs),tc}function ec(t){const e=dc(t);return void 0===e.component&&(e.component=function(t,e){const n=e[1].data[t];return 1&n.flags?e[n.directiveStart]:null}(e.nodeIndex,e.lView)),e.component}function nc(t){return dc(t).lView[9]}function ac(t){let e,n=oc(t).lView;for(;null===n[0]&&(e=da(n));)n=e;return 512&n[2]?null:n[9]}function rc(t){return[...ca(t).components]}function ic(t){const e=oc(t);return new Ca(e.lView[1].data[e.nodeIndex],e.lView)}function sc(t){const e=oc(t);return void 0===e.directives&&(e.directives=Vr(e.nodeIndex,e.lView,!1)),e.directives||[]}function oc(t,e=!0){const n=Dr(t);if(!n&&e)throw new Error("Invalid ng target");return n}function uc(t){return Dr(t).native}function dc(t){if(!(t instanceof Node))throw new Error("Expecting instance of DOM Node");return oc(t)}function lc(t){return"boolean"==typeof t.useCapture}function cc(t){const e=dc(t).lView,n=e[8],a=e[1].cleanup,r=[];if(a&&n)for(let i=0;i<a.length;){const s=a[i++],o=a[i++];if("string"==typeof s){const u=s,d=ge(e[o]),l=n[a[i++]],c=a[i++],f="boolean"==typeof c?c:!(c>=0)&&null;t==d&&r.push({element:t,name:u,callback:l,useCapture:f})}}return r.sort(fc),r}function fc(t,e){return t.name==e.name?0:t.name<e.name?-1:1}let hc=!1;function gc(){hc||(hc=!0,pc("getComponent",ec),pc("getContext",nc),pc("getListeners",cc),pc("getViewComponent",ac),pc("getHostElement",uc),pc("getInjector",ic),pc("getRootComponents",rc),pc("getDirectives",sc),pc("markDirty",hd))}function pc(t,e){if(U){let n=U.ng;n||(n=U.ng={}),n[t]=e}}function bc(t,e={}){qe(null);const n=e.rendererFactory||ea,a=e.sanitizer||null,r=Ht(t);r.type!=t&&(r.type=t);const i=Gi(n,e.host||r.selectors[0][0]),s=r.onPush?576:528,o=vc(e.scheduler,e.playerHandler),u=n.createRenderer(i,r),d=Ri(null,Fi(-1,null,1,0,null,null,null,null),o,s,null,null,n,u,void 0,e.injector||null),l=an(d,null);let c,f=!1;try{n.begin&&n.begin();const t=mc(i,r,d,n,u,a);c=yc(t,r,d,o,e.hostFeatures||null),rs(d,t),Ii(d),d[2]&=-5,Oe(d),Ii(d),f=!0}finally{sn(l,f),n.end&&n.end()}return c}function mc(t,e,n,a,r,i){Ee=!1,ke=null,le=0,we=!0,bn(null),he(),de.clear();const s=n[1];n[19]=t;const o=Ai(s,null,0,3,null,null),u=Ri(n,ji(e),null,e.onPush?64:16,n[19],o,a,r,i);return s.firstTemplatePass&&(va(pa(o,n),s,e.type),o.flags=1,Qi(o,n.length,1),Zi(o)),n[19]=u}function yc(t,e,n,a,r){const i=n[1],s=function(t,e,n){const a=Ve();t.firstTemplatePass&&(n.providersResolver&&n.providersResolver(n),Wi(t,a,1),Xi(t,e,n,n.factory));const r=Sa(t.data,e,e.length-1,a);return $i(e,a,r),r}(i,n,e);a.components.push(s),t[9]=s,r&&r.forEach(t=>t(s,e)),e.contentQueries&&e.contentQueries(1,s,n.length-1);const o=Ve();return i.firstTemplatePass&&e.hostBindings&&(qe(o.index-19),Ui(e,i.expandoInstructions,s,o,i.firstTemplatePass),qe(null)),s}function vc(t,e){return{components:[],scheduler:t||_n,clean:fs,playerHandler:e||null,flags:0}}function xc(t,e){const n=Te(t)[1],a=n.data.length-1;ae(a,e,n,-1,-1,-1),re(n,{directiveStart:a,directiveEnd:a+1})}function _c(t){return ca(t).clean}class Tc{constructor(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}isFirstChange(){return this.firstChange}}function Oc(){return wc.ngInherit=!0,wc}function wc(t){t.type.prototype.ngOnChanges&&(t.setInput=Sc,t.onChanges=function(){const t=Ic(this),e=t&&t.current;if(e){const n=t.previous;if(n===St)t.previous=e;else for(let t in e)n[t]=e[t];t.current=null,this.ngOnChanges(e)}})}function Sc(t,e,n,a){const r=Ic(t)||function(t,e){return t.__ngSimpleChanges__=e}(t,{previous:St,current:null}),i=r.current||(r.current={}),s=r.previous,o=this.declaredInputs[n],u=s[o];i[o]=new Tc(u&&u.currentValue,e,s===St),t[a]=e}function Ic(t){return t.__ngSimpleChanges__||null}function Nc(t){let e=Object.getPrototypeOf(t.type.prototype).constructor;for(;e;){let n=void 0;if(te(t))n=e.ngComponentDef||e.ngDirectiveDef;else{if(e.ngComponentDef)throw new Error("Directives cannot inherit Components");n=e.ngDirectiveDef}const a=e.ngBaseDef;if(a||n){const e=t;e.inputs=Cc(t.inputs),e.declaredInputs=Cc(t.declaredInputs),e.outputs=Cc(t.outputs)}if(a){const e=a.viewQuery,n=a.contentQueries,r=a.hostBindings;r&&kc(t,r),e&&Rc(t,e),n&&Ac(t,n),A(t.inputs,a.inputs),A(t.declaredInputs,a.declaredInputs),A(t.outputs,a.outputs)}if(n){const e=n.hostBindings;e&&kc(t,e);const a=n.viewQuery,r=n.contentQueries;a&&Rc(t,a),r&&Ac(t,r),A(t.inputs,n.inputs),A(t.declaredInputs,n.declaredInputs),A(t.outputs,n.outputs),t.afterContentChecked=t.afterContentChecked||n.afterContentChecked,t.afterContentInit=t.afterContentInit||n.afterContentInit,t.afterViewChecked=t.afterViewChecked||n.afterViewChecked,t.afterViewInit=t.afterViewInit||n.afterViewInit,t.doCheck=t.doCheck||n.doCheck,t.onDestroy=t.onDestroy||n.onDestroy,t.onInit=t.onInit||n.onInit;const i=n.features;if(i)for(const n of i)n&&n.ngInherit&&n(t)}else{const n=e.prototype;n&&(t.afterContentChecked=t.afterContentChecked||n.ngAfterContentChecked,t.afterContentInit=t.afterContentInit||n.ngAfterContentInit,t.afterViewChecked=t.afterViewChecked||n.ngAfterViewChecked,t.afterViewInit=t.afterViewInit||n.ngAfterViewInit,t.doCheck=t.doCheck||n.ngDoCheck,t.onDestroy=t.onDestroy||n.ngOnDestroy,t.onInit=t.onInit||n.ngOnInit,n.ngOnChanges&&Oc()(t))}e=Object.getPrototypeOf(e)}}function Cc(t){return t===St?{}:t===It?[]:t}function Rc(t,e){const n=t.viewQuery;t.viewQuery=n?(t,a)=>{e(t,a),n(t,a)}:e}function Ac(t,e){const n=t.contentQueries;t.contentQueries=n?(t,a,r)=>{e(t,a,r),n(t,a,r)}:e}function kc(t,e){const n=t.hostBindings;e!==n&&(t.hostBindings=n?(t,a,r)=>{Fe(1);try{e(t,a,r)}finally{Fe(-1)}n(t,a,r)}:e)}function Ec(t,e,n,a,r){if(t=V(t),Array.isArray(t))for(let i=0;i<t.length;i++)Ec(t[i],e,n,a,r);else{const i=Ae(),s=i[1];let o=Go(t)?t:V(t.provide),u=qo(t);const d=Ve(),l=65535&d.providerIndexes,c=d.directiveStart,f=d.providerIndexes>>16;if(t.useClass||Go(t)){const n=(t.useClass||t).prototype.ngOnDestroy;n&&(s.destroyHooks||(s.destroyHooks=[])).push(e.length,n)}if(Go(t)||!t.multi){const t=new ne(u,r,Td),a=Dc(o,e,r?l:l+f,c);-1==a?(va(pa(d,i),s,o),e.push(o),d.directiveStart++,d.directiveEnd++,r&&(d.providerIndexes+=65536),n.push(t),i.push(t)):(n[a]=t,i[a]=t)}else{const t=Dc(o,e,l+f,c),h=Dc(o,e,l,l+f),g=t>=0&&n[t],p=h>=0&&n[h];if(r&&!p||!r&&!g){va(pa(d,i),s,o);const t=function(t,e,n,a,r){const i=new ne(t,n,Td);return i.multi=[],i.index=e,i.componentProviders=0,Lc(i,r,a&&!n),i}(r?Mc:Pc,n.length,r,a,u);!r&&p&&(n[h].providerFactory=t),e.push(o),d.directiveStart++,d.directiveEnd++,r&&(d.providerIndexes+=65536),n.push(t),i.push(t)}else Lc(n[r?h:t],u,!r&&a);!r&&a&&p&&n[h].componentProviders++}}}function Lc(t,e,n){t.multi.push(e),n&&t.componentProviders++}function Dc(t,e,n,a){for(let r=n;r<a;r++)if(e[r]===t)return r;return-1}function Pc(t,e,n,a){return qc(this.multi,[])}function Mc(t,e,n,a){const r=this.multi;let i;if(this.providerFactory){const t=this.providerFactory.componentProviders,s=Sa(e,n,this.providerFactory.index,a);i=s.slice(0,t),qc(r,i);for(let e=t;e<s.length;e++)i.push(s[e])}else i=[],qc(r,i);return i}function qc(t,e){for(let n=0;n<t.length;n++)e.push((0,t[n])());return e}function jc(t,e=[]){return n=>{n.providersResolver=(n,a)=>function(t,e,n){const a=Ae()[1];if(a.firstTemplatePass){const r=te(t);Ec(n,a.data,a.blueprint,r,!0),Ec(e,a.data,a.blueprint,r,!1)}}(n,a?a(t):t,e)}}class Fc{}class Gc{}function Vc(t){const e=Error(`No component factory found for ${j(t)}. Did you add it to @NgModule.entryComponents?`);return e[zc]=t,e}const zc="ngComponent";class Bc{resolveComponentFactory(t){throw Vc(t)}}let Yc=(()=>{class t{}return t.NULL=new Bc,t})();class Hc{constructor(t,e,n){this._parent=e,this._ngModule=n,this._factories=new Map;for(let a=0;a<t.length;a++){const e=t[a];this._factories.set(e.componentType,e)}}resolveComponentFactory(t){let e=this._factories.get(t);if(!e&&this._parent&&(e=this._parent.resolveComponentFactory(t)),!e)throw Vc(t);return new Uc(e,this._ngModule)}}class Uc extends Gc{constructor(t,e){super(),this.factory=t,this.ngModule=e,this.selector=t.selector,this.componentType=t.componentType,this.ngContentSelectors=t.ngContentSelectors,this.inputs=t.inputs,this.outputs=t.outputs}create(t,e,n,a){return this.factory.create(t,e,n,a||this.ngModule)}}function Wc(...t){}let Kc=(()=>{class t{constructor(t){this.nativeElement=t}}return t.__NG_ELEMENT_ID__=()=>Zc(t),t})();const $c=function(t){return $s(t,Ve(),Ae())},Zc=Wc;class Jc{constructor(t,e,n,a,r,i){this.id=t,this.templateUrl=e,this.slotCount=n,this.encapsulation=a,this.styles=r,this.animations=i}}class Qc{}class Xc{}class tf{}class ef{}const nf=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();let af=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>sf(),t})();const rf=function(){const t=Ae(),e=xe(Ve().index,t);return function(t){const e=t[12];if(ta(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}(Zt(e)?e:t)},sf=Wc;class of{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const uf=new of("8.2.14");class df{constructor(){}supports(t){return qu(t)}create(t){return new cf(t)}}const lf=(t,e)=>e;class cf{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||lf}forEachItem(t){let e;for(e=this._itHead;null!==e;e=e._next)t(e)}forEachOperation(t){let e=this._itHead,n=this._removalsHead,a=0,r=null;for(;e||n;){const i=!n||e&&e.currentIndex<pf(n,a,r)?e:n,s=pf(i,a,r),o=i.currentIndex;if(i===n)a--,n=n._nextRemoved;else if(e=e._next,null==i.previousIndex)a++;else{r||(r=[]);const t=s-a,e=o-a;if(t!=e){for(let n=0;n<t;n++){const a=n<r.length?r[n]:r[n]=0,i=a+n;e<=i&&i<t&&(r[n]=a+1)}r[i.previousIndex]=e-t}}s!==o&&t(i,s,o)}}forEachPreviousItem(t){let e;for(e=this._previousItHead;null!==e;e=e._nextPrevious)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachMovedItem(t){let e;for(e=this._movesHead;null!==e;e=e._nextMoved)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}forEachIdentityChange(t){let e;for(e=this._identityChangesHead;null!==e;e=e._nextIdentityChange)t(e)}diff(t){if(null==t&&(t=[]),!qu(t))throw new Error(`Error trying to diff '${j(t)}'. Only arrays and iterables are allowed`);return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e,n,a,r=this._itHead,i=!1;if(Array.isArray(t)){this.length=t.length;for(let e=0;e<this.length;e++)n=t[e],a=this._trackByFn(e,n),null!==r&&Du(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,n,a,e)),Du(r.item,n)||this._addIdentityChange(r,n)):(r=this._mismatch(r,n,a,e),i=!0),r=r._next}else e=0,function(t,e){if(Array.isArray(t))for(let n=0;n<t.length;n++)e(t[n]);else{const n=t[Lu()]();let a;for(;!(a=n.next()).done;)e(a.value)}}(t,t=>{a=this._trackByFn(e,t),null!==r&&Du(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,t,a,e)),Du(r.item,t)||this._addIdentityChange(r,t)):(r=this._mismatch(r,t,a,e),i=!0),r=r._next,e++}),this.length=e;return this._truncate(r),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,e;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=e)t.previousIndex=t.currentIndex,e=t._nextMoved;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,e,n,a){let r;return null===t?r=this._itTail:(r=t._prev,this._remove(t)),null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,a))?(Du(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,r,a)):null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(Du(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,r,a)):t=this._addAfter(new ff(e,n),r,a),t}_verifyReinsertion(t,e,n,a){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null);return null!==r?t=this._reinsertAfter(r,t._prev,a):t.currentIndex!=a&&(t.currentIndex=a,this._addToMoves(t,a)),t}_truncate(t){for(;null!==t;){const e=t._next;this._addToRemovals(this._unlink(t)),t=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(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const a=t._prevRemoved,r=t._nextRemoved;return null===a?this._removalsHead=r:a._nextRemoved=r,null===r?this._removalsTail=a:r._prevRemoved=a,this._insertAfter(t,e,n),this._addToMoves(t,n),t}_moveAfter(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t}_addAfter(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,e,n){const a=null===e?this._itHead:e._next;return t._next=a,t._prev=e,null===a?this._itTail=t:a._prev=t,null===e?this._itHead=t:e._next=t,null===this._linkedRecords&&(this._linkedRecords=new gf),this._linkedRecords.put(t),t.currentIndex=n,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t}_addToMoves(t,e){return t.previousIndex===e?t:(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t,t)}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new gf),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,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class ff{constructor(t,e){this.item=t,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 hf{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,e){let n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&Du(n.trackById,t))return n;return null}remove(t){const e=t._prevDup,n=t._nextDup;return null===e?this._head=n:e._nextDup=n,null===n?this._tail=e:n._prevDup=e,null===this._head}}class gf{constructor(){this.map=new Map}put(t){const e=t.trackById;let n=this.map.get(e);n||(n=new hf,this.map.set(e,n)),n.add(t)}get(t,e){const n=this.map.get(t);return n?n.get(t,e):null}remove(t){const e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function pf(t,e,n){const a=t.previousIndex;if(null===a)return a;let r=0;return n&&a<n.length&&(r=n[a]),a+e+r}class bf{constructor(){}supports(t){return t instanceof Map||ju(t)}create(){return new mf}}class mf{constructor(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}get isDirty(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead}forEachItem(t){let e;for(e=this._mapHead;null!==e;e=e._next)t(e)}forEachPreviousItem(t){let e;for(e=this._previousMapHead;null!==e;e=e._nextPrevious)t(e)}forEachChangedItem(t){let e;for(e=this._changesHead;null!==e;e=e._nextChanged)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}diff(t){if(t){if(!(t instanceof Map||ju(t)))throw new Error(`Error trying to diff '${j(t)}'. Only maps and objects are allowed`)}else t=new Map;return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e=this._mapHead;if(this._appendAfter=null,this._forEach(t,(t,n)=>{if(e&&e.key===n)this._maybeAddToChanges(e,t),this._appendAfter=e,e=e._next;else{const a=this._getOrCreateRecordForKey(n,t);e=this._insertBeforeOrAppend(e,a)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let t=e;null!==t;t=t._nextRemoved)t===this._mapHead&&(this._mapHead=null),this._records.delete(t.key),t._nextRemoved=t._next,t.previousValue=t.currentValue,t.currentValue=null,t._prev=null,t._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,e){if(t){const n=t._prev;return e._next=t,e._prev=n,t._prev=e,n&&(n._next=e),t===this._mapHead&&(this._mapHead=e),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(t,e){if(this._records.has(t)){const n=this._records.get(t);this._maybeAddToChanges(n,e);const a=n._prev,r=n._next;return a&&(a._next=r),r&&(r._prev=a),n._next=null,n._prev=null,n}const n=new yf(t);return this._records.set(t,n),n.currentValue=e,this._addToAdditions(n),n}_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,e){Du(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,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,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(n=>e(t[n],n))}}class yf{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}}let vf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(null!=n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new O]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(null!=e)return e;throw new Error(`Cannot find a differ supporting object '${t}' of type '${n=t,n.name||typeof n}'`);var n}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new df])}),t})(),xf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new O]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(e)return e;throw new Error(`Cannot find a differ supporting object '${t}'`)}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new bf])}),t})();const _f=[new bf],Tf=new vf([new df]),Of=new xf(_f);let wf=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>If(t,Kc),t})();const Sf=function(t,e){return Zs(t,e,Ve(),Ae())},If=Wc;let Nf=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>Rf(t,Kc),t})();const Cf=function(t,e){return Js(t,e,Ve(),Ae())},Rf=Wc;function Af(t,e,n,a){let r=`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '${e}'. Current value: '${n}'.`;return a&&(r+=" It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook ?"),function(t,e){const n=new Error(t);return kf(n,e),n}(r,t)}function kf(t,e){t.ngDebugContext=e,t.ngErrorLogger=e.logError.bind(e)}function Ef(t){return new Error(`ViewDestroyedError: Attempt to use a destroyed view: ${t}`)}function Lf(t,e,n){const a=t.state,r=1792&a;return r===e?(t.state=-1793&a|n,t.initIndex=-1,!0):r===n}function Df(t,e,n){return(1792&t.state)===e&&t.initIndex<=n&&(t.initIndex=n+1,!0)}function Pf(t,e){return t.nodes[e]}function Mf(t,e){return t.nodes[e]}function qf(t,e){return t.nodes[e]}function jf(t,e){return t.nodes[e]}function Ff(t,e){return t.nodes[e]}class Gf{}const Vf={setCurrentNode:void 0,createRootView:void 0,createEmbeddedView:void 0,createComponentView:void 0,createNgModuleRef:void 0,overrideProvider:void 0,overrideComponentView:void 0,clearOverrides:void 0,checkAndUpdateView:void 0,checkNoChangesView:void 0,destroyView:void 0,resolveDep:void 0,createDebugContext:void 0,handleEvent:void 0,updateDirectives:void 0,updateRenderer:void 0,dirtyParentQueries:void 0},zf=()=>{},Bf=new Map;function Yf(t){let e=Bf.get(t);return e||(e=j(t)+"_"+Bf.size,Bf.set(t,e)),e}function Hf(t,e,n,a){if(Mu.isWrapped(a)){a=Mu.unwrap(a);const r=t.def.nodes[e].bindingIndex+n,i=Mu.unwrap(t.oldValues[r]);t.oldValues[r]=new Mu(i)}return a}function Uf(t){return{id:"$$undefined",styles:t.styles,encapsulation:t.encapsulation,data:t.data}}let Wf=0;function Kf(t,e,n,a){return!(!(2&t.state)&&Du(t.oldValues[e.bindingIndex+n],a))}function $f(t,e,n,a){return!!Kf(t,e,n,a)&&(t.oldValues[e.bindingIndex+n]=a,!0)}function Zf(t,e,n,a){const r=t.oldValues[e.bindingIndex+n];if(1&t.state||!Pu(r,a)){const i=e.bindings[n].name;throw Af(Vf.createDebugContext(t,e.nodeIndex),`${i}: ${r}`,`${i}: ${a}`,0!=(1&t.state))}}function Jf(t){let e=t;for(;e;)2&e.def.flags&&(e.state|=8),e=e.viewContainerParent||e.parent}function Qf(t,e){let n=t;for(;n&&n!==e;)n.state|=64,n=n.viewContainerParent||n.parent}function Xf(t,e,n,a){try{return Jf(33554432&t.def.nodes[e].flags?Mf(t,e).componentView:t),Vf.handleEvent(t,e,n,a)}catch(r){t.root.errorHandler.handleError(r)}}function th(t){return t.parent?Mf(t.parent,t.parentNodeDef.nodeIndex):null}function eh(t){return t.parent?t.parentNodeDef.parent:null}function nh(t,e){switch(201347067&e.flags){case 1:return Mf(t,e.nodeIndex).renderElement;case 2:return Pf(t,e.nodeIndex).renderText}}function ah(t){return!!t.parent&&!!(32768&t.parentNodeDef.flags)}function rh(t){return!(!t.parent||32768&t.parentNodeDef.flags)}function ih(t){return 1<<t%32}function sh(t){const e={};let n=0;const a={};return t&&t.forEach(([t,r])=>{"number"==typeof t?(e[t]=r,n|=ih(t)):a[t]=r}),{matchedQueries:e,references:a,matchedQueryIds:n}}function oh(t,e){return t.map(t=>{let n,a;return Array.isArray(t)?[a,n]=t:(a=0,n=t),n&&("function"==typeof n||"object"==typeof n)&&e&&Object.defineProperty(n,"__source",{value:e,configurable:!0}),{flags:a,token:n,tokenKey:Yf(n)}})}function uh(t,e,n){let a=n.renderParent;return a?0==(1&a.flags)||0==(33554432&a.flags)||a.element.componentRendererType&&a.element.componentRendererType.encapsulation===Ot.Native?Mf(t,n.renderParent.nodeIndex).renderElement:void 0:e}const dh=new WeakMap;function lh(t){let e=dh.get(t);return e||(e=t(()=>zf),e.factory=t,dh.set(t,e)),e}function ch(t,e,n,a,r){3===e&&(n=t.renderer.parentNode(nh(t,t.def.lastRenderRootNode))),fh(t,e,0,t.def.nodes.length-1,n,a,r)}function fh(t,e,n,a,r,i,s){for(let o=n;o<=a;o++){const n=t.def.nodes[o];11&n.flags&&gh(t,n,e,r,i,s),o+=n.childCount}}function hh(t,e,n,a,r,i){let s=t;for(;s&&!ah(s);)s=s.parent;const o=s.parent,u=eh(s),d=u.nodeIndex+u.childCount;for(let l=u.nodeIndex+1;l<=d;l++){const t=o.def.nodes[l];t.ngContentIndex===e&&gh(o,t,n,a,r,i),l+=t.childCount}if(!o.parent){const s=t.root.projectableNodes[e];if(s)for(let e=0;e<s.length;e++)ph(t,s[e],n,a,r,i)}}function gh(t,e,n,a,r,i){if(8&e.flags)hh(t,e.ngContent.index,n,a,r,i);else{const s=nh(t,e);if(3===n&&33554432&e.flags&&48&e.bindingFlags?(16&e.bindingFlags&&ph(t,s,n,a,r,i),32&e.bindingFlags&&ph(Mf(t,e.nodeIndex).componentView,s,n,a,r,i)):ph(t,s,n,a,r,i),16777216&e.flags){const s=Mf(t,e.nodeIndex).viewContainer._embeddedViews;for(let t=0;t<s.length;t++)ch(s[t],n,a,r,i)}1&e.flags&&!e.element.name&&fh(t,n,e.nodeIndex+1,e.nodeIndex+e.childCount,a,r,i)}}function ph(t,e,n,a,r,i){const s=t.renderer;switch(n){case 1:s.appendChild(a,e);break;case 2:s.insertBefore(a,e,r);break;case 3:s.removeChild(a,e);break;case 0:i.push(e)}}const bh=/^:([^:]+):(.+)$/;function mh(t){if(":"===t[0]){const e=t.match(bh);return[e[1],e[2]]}return["",t]}function yh(t){let e=0;for(let n=0;n<t.length;n++)e|=t[n].flags;return e}function vh(t,e){let n="";for(let a=0;a<2*t;a+=2)n=n+e[a]+_h(e[a+1]);return n+e[2*t]}function xh(t,e,n,a,r,i,s,o,u,d,l,c,f,h,g,p,b,m,y,v){switch(t){case 1:return e+_h(n)+a;case 2:return e+_h(n)+a+_h(r)+i;case 3:return e+_h(n)+a+_h(r)+i+_h(s)+o;case 4:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+d;case 5:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+d+_h(l)+c;case 6:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+d+_h(l)+c+_h(f)+h;case 7:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+d+_h(l)+c+_h(f)+h+_h(g)+p;case 8:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+d+_h(l)+c+_h(f)+h+_h(g)+p+_h(b)+m;case 9:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+d+_h(l)+c+_h(f)+h+_h(g)+p+_h(b)+m+_h(y)+v;default:throw new Error("Does not support more than 9 expressions")}}function _h(t){return null!=t?t.toString():""}const Th=[],Oh={},wh=new Object,Sh=Yf(Bo),Ih=Yf($),Nh=Yf(ft);function Ch(t,e,n,a){return n=V(n),{index:-1,deps:oh(a,j(e)),flags:t,token:e,value:n}}function Rh(t){const e={},n=[];let a=!1;for(let r=0;r<t.length;r++){const i=t[r];i.token===Co&&!0===i.value&&(a=!0),1073741824&i.flags&&n.push(i.token),i.index=r,e[Yf(i.token)]=i}return{factory:null,providersByKey:e,providers:t,modules:n,isRoot:a}}function Ah(t,e,n=Bo.THROW_IF_NOT_FOUND){const a=et(t);try{if(8&e.flags)return e.token;if(2&e.flags&&(n=null),1&e.flags)return t._parent.get(e.token,n);const s=e.tokenKey;switch(s){case Sh:case Ih:case Nh:return t}const o=t._def.providersByKey[s];let u;if(o){let e=t._providers[o.index];return void 0===e&&(e=t._providers[o.index]=kh(t,o)),e===wh?void 0:e}if((u=D(e.token))&&(r=t,null!=(i=u).providedIn&&(function(t,e){return t._def.modules.indexOf(e)>-1}(r,i.providedIn)||"root"===i.providedIn&&r._def.isRoot))){const n=t._providers.length;return t._def.providers[n]=t._def.providersByKey[e.tokenKey]={flags:5120,value:u.factory,deps:[],index:n,token:e.token},t._providers[n]=wh,t._providers[n]=kh(t,t._def.providersByKey[e.tokenKey])}return 4&e.flags?n:t._parent.get(e.token,n)}finally{et(a)}var r,i}function kh(t,e){let n;switch(201347067&e.flags){case 512:n=function(t,e,n){const a=n.length;switch(a){case 0:return new e;case 1:return new e(Ah(t,n[0]));case 2:return new e(Ah(t,n[0]),Ah(t,n[1]));case 3:return new e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=new Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return new e(...r)}}(t,e.value,e.deps);break;case 1024:n=function(t,e,n){const a=n.length;switch(a){case 0:return e();case 1:return e(Ah(t,n[0]));case 2:return e(Ah(t,n[0]),Ah(t,n[1]));case 3:return e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return e(...r)}}(t,e.value,e.deps);break;case 2048:n=Ah(t,e.deps[0]);break;case 256:n=e.value}return n===wh||null===n||"object"!=typeof n||131072&e.flags||"function"!=typeof n.ngOnDestroy||(e.flags|=131072),void 0===n?wh:n}function Eh(t,e){const n=t.viewContainer._embeddedViews;if((null==e||e>=n.length)&&(e=n.length-1),e<0)return null;const a=n[e];return a.viewContainerParent=null,yt(n,e),Vf.dirtyParentQueries(a),Dh(a),a}function Lh(t,e,n){const a=e?nh(e,e.def.lastRenderRootNode):t.renderElement,r=n.renderer.parentNode(a),i=n.renderer.nextSibling(a);ch(n,2,r,i,void 0)}function Dh(t){ch(t,3,null,null,void 0)}const Ph=new Object;function Mh(t,e,n,a,r,i){return new jh(t,e,n,a,r,i)}function qh(t){return t.viewDefFactory}class jh extends Gc{constructor(t,e,n,a,r,i){super(),this.selector=t,this.componentType=e,this._inputs=a,this._outputs=r,this.ngContentSelectors=i,this.viewDefFactory=n}get inputs(){const t=[],e=this._inputs;for(let n in e)t.push({propName:n,templateName:e[n]});return t}get outputs(){const t=[];for(let e in this._outputs)t.push({propName:e,templateName:this._outputs[e]});return t}create(t,e,n,a){if(!a)throw new Error("ngModule should be provided");const r=lh(this.viewDefFactory),i=r.nodes[0].element.componentProvider.nodeIndex,s=Vf.createRootView(t,e||[],n,r,a,Ph),o=qf(s,i).instance;return n&&s.renderer.setAttribute(Mf(s,0).renderElement,"ng-version",uf.full),new Fh(s,new Bh(s),o)}}class Fh extends Fc{constructor(t,e,n){super(),this._view=t,this._viewRef=e,this._component=n,this._elDef=this._view.def.nodes[0],this.hostView=e,this.changeDetectorRef=e,this.instance=n}get location(){return new Kc(Mf(this._view,this._elDef.nodeIndex).renderElement)}get injector(){return new Wh(this._view,this._elDef)}get componentType(){return this._component.constructor}destroy(){this._viewRef.destroy()}onDestroy(t){this._viewRef.onDestroy(t)}}function Gh(t,e,n){return new Vh(t,e,n)}class Vh{constructor(t,e,n){this._view=t,this._elDef=e,this._data=n,this._embeddedViews=[]}get element(){return new Kc(this._data.renderElement)}get injector(){return new Wh(this._view,this._elDef)}get parentInjector(){let t=this._view,e=this._elDef.parent;for(;!e&&t;)e=eh(t),t=t.parent;return t?new Wh(t,e):new Wh(this._view,null)}clear(){for(let t=this._embeddedViews.length-1;t>=0;t--){const e=Eh(this._data,t);Vf.destroyView(e)}}get(t){const e=this._embeddedViews[t];if(e){const t=new Bh(e);return t.attachToViewContainerRef(this),t}return null}get length(){return this._embeddedViews.length}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;r||t instanceof Uc||(r=i.get(ft));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");const n=t;return function(t,e,n,a){let r=e.viewContainer._embeddedViews;null==n&&(n=r.length),a.viewContainerParent=t,mt(r,n,a),function(t,e){const n=th(e);if(!n||n===t||16&e.state)return;e.state|=16;let a=n.template._projectedViews;a||(a=n.template._projectedViews=[]),a.push(e),function(t,e){if(4&e.flags)return;t.nodeFlags|=4,e.flags|=4;let n=e.parent;for(;n;)n.childFlags|=4,n=n.parent}(e.parent.def,e.parentNodeDef)}(e,a),Vf.dirtyParentQueries(a),Lh(e,n>0?r[n-1]:null,a)}(this._view,this._data,e,n._view),n.attachToViewContainerRef(this),t}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this._embeddedViews.indexOf(t._view);return function(t,e,n){const a=t.viewContainer._embeddedViews,r=a[e];yt(a,e),null==n&&(n=a.length),mt(a,n,r),Vf.dirtyParentQueries(r),Dh(r),Lh(t,n>0?a[n-1]:null,r)}(this._data,n,e),t}indexOf(t){return this._embeddedViews.indexOf(t._view)}remove(t){const e=Eh(this._data,t);e&&Vf.destroyView(e)}detach(t){const e=Eh(this._data,t);return e?new Bh(e):null}}function zh(t){return new Bh(t)}class Bh{constructor(t){this._view=t,this._viewContainerRef=null,this._appRef=null}get rootNodes(){return function(t){const e=[];return ch(t,0,void 0,void 0,e),e}(this._view)}get context(){return this._view.context}get destroyed(){return 0!=(128&this._view.state)}markForCheck(){Jf(this._view)}detach(){this._view.state&=-5}detectChanges(){const t=this._view.root.rendererFactory;t.begin&&t.begin();try{Vf.checkAndUpdateView(this._view)}finally{t.end&&t.end()}}checkNoChanges(){Vf.checkNoChangesView(this._view)}reattach(){this._view.state|=4}onDestroy(t){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(t)}destroy(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),Vf.destroyView(this._view)}detachFromAppRef(){this._appRef=null,Dh(this._view),Vf.dirtyParentQueries(this._view)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}}function Yh(t,e){return new Hh(t,e)}class Hh extends wf{constructor(t,e){super(),this._parentView=t,this._def=e}createEmbeddedView(t){return new Bh(Vf.createEmbeddedView(this._parentView,this._def,this._def.element.template,t))}get elementRef(){return new Kc(Mf(this._parentView,this._def.nodeIndex).renderElement)}}function Uh(t,e){return new Wh(t,e)}class Wh{constructor(t,e){this.view=t,this.elDef=e}get(t,e=Bo.THROW_IF_NOT_FOUND){return Vf.resolveDep(this.view,this.elDef,!!this.elDef&&0!=(33554432&this.elDef.flags),{flags:0,token:t,tokenKey:Yf(t)},e)}}function Kh(t,e){const n=t.def.nodes[e];if(1&n.flags){const e=Mf(t,n.nodeIndex);return n.element.template?e.template:e.renderElement}if(2&n.flags)return Pf(t,n.nodeIndex).renderText;if(20240&n.flags)return qf(t,n.nodeIndex).instance;throw new Error(`Illegal state: read nodeValue for node index ${e}`)}function $h(t){return new Zh(t.renderer)}class Zh{constructor(t){this.delegate=t}selectRootElement(t){return this.delegate.selectRootElement(t)}createElement(t,e){const[n,a]=mh(e),r=this.delegate.createElement(a,n);return t&&this.delegate.appendChild(t,r),r}createViewRoot(t){return t}createTemplateAnchor(t){const e=this.delegate.createComment("");return t&&this.delegate.appendChild(t,e),e}createText(t,e){const n=this.delegate.createText(e);return t&&this.delegate.appendChild(t,n),n}projectNodes(t,e){for(let n=0;n<e.length;n++)this.delegate.appendChild(t,e[n])}attachViewAfter(t,e){const n=this.delegate.parentNode(t),a=this.delegate.nextSibling(t);for(let r=0;r<e.length;r++)this.delegate.insertBefore(n,e[r],a)}detachView(t){for(let e=0;e<t.length;e++){const n=t[e],a=this.delegate.parentNode(n);this.delegate.removeChild(a,n)}}destroyView(t,e){for(let n=0;n<e.length;n++)this.delegate.destroyNode(e[n])}listen(t,e,n){return this.delegate.listen(t,e,n)}listenGlobal(t,e,n){return this.delegate.listen(t,e,n)}setElementProperty(t,e,n){this.delegate.setProperty(t,e,n)}setElementAttribute(t,e,n){const[a,r]=mh(e);null!=n?this.delegate.setAttribute(t,r,n,a):this.delegate.removeAttribute(t,r,a)}setBindingDebugInfo(t,e,n){}setElementClass(t,e,n){n?this.delegate.addClass(t,e):this.delegate.removeClass(t,e)}setElementStyle(t,e,n){null!=n?this.delegate.setStyle(t,e,n):this.delegate.removeStyle(t,e)}invokeElementMethod(t,e,n){t[e].apply(t,n)}setText(t,e){this.delegate.setValue(t,e)}animate(){throw new Error("Renderer.animate is no longer supported!")}}function Jh(t,e,n,a){return new Qh(t,e,n,a)}class Qh{constructor(t,e,n,a){this._moduleType=t,this._parent=e,this._bootstrapComponents=n,this._def=a,this._destroyListeners=[],this._destroyed=!1,this.injector=this,function(t){const e=t._def,n=t._providers=new Array(e.providers.length);for(let a=0;a<e.providers.length;a++){const r=e.providers[a];4096&r.flags||void 0===n[a]&&(n[a]=kh(t,r))}}(this)}get(t,e=Bo.THROW_IF_NOT_FOUND,n=C.Default){let a=0;return n&C.SkipSelf?a|=1:n&C.Self&&(a|=4),Ah(this,{token:t,tokenKey:Yf(t),flags:a},e)}get instance(){return this.get(this._moduleType)}get componentFactoryResolver(){return this.get(Yc)}destroy(){if(this._destroyed)throw new Error(`The ng module ${j(this.instance.constructor)} has already been destroyed.`);this._destroyed=!0,function(t,e){const n=t._def,a=new Set;for(let r=0;r<n.providers.length;r++)if(131072&n.providers[r].flags){const e=t._providers[r];if(e&&e!==wh){const t=e.ngOnDestroy;"function"!=typeof t||a.has(e)||(t.apply(e),a.add(e))}}}(this),this._destroyListeners.forEach(t=>t())}onDestroy(t){this._destroyListeners.push(t)}}const Xh=Yf(Xc),tg=Yf(af),eg=Yf(Kc),ng=Yf(Nf),ag=Yf(wf),rg=Yf(Xs),ig=Yf(Bo),sg=Yf($);function og(t,e,n,a,r,i,s,o){const u=[];if(s)for(let l in s){const[t,e]=s[l];u[t]={flags:8,name:l,nonMinifiedName:e,ns:null,securityContext:null,suffix:null}}const d=[];if(o)for(let l in o)d.push({type:1,propName:l,target:null,eventName:o[l]});return lg(t,e|=16384,n,a,r,r,i,u,d)}function ug(t,e,n){return lg(-1,t|=16,null,0,e,e,n)}function dg(t,e,n,a,r){return lg(-1,t,e,0,n,a,r)}function lg(t,e,n,a,r,i,s,o,u){const{matchedQueries:d,references:l,matchedQueryIds:c}=sh(n);u||(u=[]),o||(o=[]),i=V(i);const f=oh(s,j(r));return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:d,matchedQueryIds:c,references:l,ngContentIndex:-1,childCount:a,bindings:o,bindingFlags:yh(o),outputs:u,element:null,provider:{token:r,value:i,deps:f},text:null,query:null,ngContent:null}}function cg(t,e){return pg(t,e)}function fg(t,e){let n=t;for(;n.parent&&!ah(n);)n=n.parent;return bg(n.parent,eh(n),!0,e.provider.value,e.provider.deps)}function hg(t,e){const n=bg(t,e.parent,(32768&e.flags)>0,e.provider.value,e.provider.deps);if(e.outputs.length)for(let a=0;a<e.outputs.length;a++){const r=e.outputs[a],i=n[r.propName];if(!el(i))throw new Error(`@Output ${r.propName} not initialized in '${n.constructor.name}'.`);{const n=i.subscribe(gg(t,e.parent.nodeIndex,r.eventName));t.disposables[e.outputIndex+a]=n.unsubscribe.bind(n)}}return n}function gg(t,e,n){return a=>Xf(t,e,n,a)}function pg(t,e){const n=(8192&e.flags)>0,a=e.provider;switch(201347067&e.flags){case 512:return bg(t,e.parent,n,a.value,a.deps);case 1024:return function(t,e,n,a,r){const i=r.length;switch(i){case 0:return a();case 1:return a(yg(t,e,n,r[0]));case 2:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return a(...s)}}(t,e.parent,n,a.value,a.deps);case 2048:return yg(t,e.parent,n,a.deps[0]);case 256:return a.value}}function bg(t,e,n,a,r){const i=r.length;switch(i){case 0:return new a;case 1:return new a(yg(t,e,n,r[0]));case 2:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=new Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return new a(...s)}}const mg={};function yg(t,e,n,a,r=Bo.THROW_IF_NOT_FOUND){if(8&a.flags)return a.token;const i=t;2&a.flags&&(r=null);const s=a.tokenKey;s===rg&&(n=!(!e||!e.element.componentView)),e&&1&a.flags&&(n=!1,e=e.parent);let o=t;for(;o;){if(e)switch(s){case Xh:return $h(vg(o,e,n));case tg:return vg(o,e,n).renderer;case eg:return new Kc(Mf(o,e.nodeIndex).renderElement);case ng:return Mf(o,e.nodeIndex).viewContainer;case ag:if(e.element.template)return Mf(o,e.nodeIndex).template;break;case rg:return zh(vg(o,e,n));case ig:case sg:return Uh(o,e);default:const t=(n?e.element.allProviders:e.element.publicProviders)[s];if(t){let e=qf(o,t.nodeIndex);return e||(e={instance:pg(o,t)},o.nodes[t.nodeIndex]=e),e.instance}}n=ah(o),e=eh(o),o=o.parent,4&a.flags&&(o=null)}const u=i.root.injector.get(a.token,mg);return u!==mg||r===mg?u:i.root.ngModule.injector.get(a.token,r)}function vg(t,e,n){let a;if(n)a=Mf(t,e.nodeIndex).componentView;else for(a=t;a.parent&&!ah(a);)a=a.parent;return a}function xg(t,e,n,a,r,i){if(32768&n.flags){const e=Mf(t,n.parent.nodeIndex).componentView;2&e.def.flags&&(e.state|=8)}if(e.instance[n.bindings[a].name]=r,524288&n.flags){i=i||{};const e=Mu.unwrap(t.oldValues[n.bindingIndex+a]);i[n.bindings[a].nonMinifiedName]=new Tc(e,r,0!=(2&t.state))}return t.oldValues[n.bindingIndex+a]=r,i}function _g(t,e){if(!(t.def.nodeFlags&e))return;const n=t.def.nodes;let a=0;for(let r=0;r<n.length;r++){const i=n[r];let s=i.parent;for(!s&&i.flags&e&&Og(t,r,i.flags&e,a++),0==(i.childFlags&e)&&(r+=i.childCount);s&&1&s.flags&&r===s.nodeIndex+s.childCount;)s.directChildFlags&e&&(a=Tg(t,s,e,a)),s=s.parent}}function Tg(t,e,n,a){for(let r=e.nodeIndex+1;r<=e.nodeIndex+e.childCount;r++){const e=t.def.nodes[r];e.flags&n&&Og(t,r,e.flags&n,a++),r+=e.childCount}return a}function Og(t,e,n,a){const r=qf(t,e);if(!r)return;const i=r.instance;i&&(Vf.setCurrentNode(t,e),1048576&n&&Df(t,512,a)&&i.ngAfterContentInit(),2097152&n&&i.ngAfterContentChecked(),4194304&n&&Df(t,768,a)&&i.ngAfterViewInit(),8388608&n&&i.ngAfterViewChecked(),131072&n&&i.ngOnDestroy())}function wg(t){const e=[];for(let n in t)t.hasOwnProperty(n)&&e.push({propName:t[n],templateName:n});return e}const Sg=new K("SCHEDULER_TOKEN",{providedIn:"root",factory:()=>_n});class Ig extends Gc{constructor(t,e){super(),this.componentDef=t,this.ngModule=e,this.componentType=t.type,this.selector=t.selectors[0][0]||"div",this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!e}get inputs(){return wg(this.componentDef.inputs)}get outputs(){return wg(this.componentDef.outputs)}create(t,e,n,a){const r=(a=a||this.ngModule)?function(t,e){return{get:(n,a,r)=>{const i=t.get(n,mg,r);return i!==mg||a===mg?i:e.get(n,a,r)}}}(t,a.injector):t,i=r.get(ef,ea),s=r.get(vr,null);pn();const o=n?Gi(i,n):Ci(this.selector,i.createRenderer(null,this.componentDef)),u=this.componentDef.onPush?576:528,d="string"==typeof n&&/^#root-ng-internal-isolated-\d+/.test(n),l=vc(),c=i.createRenderer(o,this.componentDef);n&&o&&(ta(c)?c.setAttribute(o,"ng-version",uf.full):o.setAttribute("ng-version",uf.full));const f=Ri(null,Fi(-1,null,1,0,null,null,null,null),l,u,null,null,i,c,s,r),h=an(f,null);let g,p,b=!1;try{const t=mc(o,this.componentDef,f,i,c);p=ye(0,f),e&&(p.projection=e.map(t=>Array.from(t))),g=yc(t,this.componentDef,f,l,[xc]),rs(f,t),Ii(f),b=!0}finally{sn(h,b)}const m=new Ng(this.componentType,g,$s(Kc,p,f),f,p);return n&&!d||(m.hostView._tViewNode.child=p),m}}class Ng extends Fc{constructor(t,e,n,a,r){super(),this.location=n,this._rootLView=a,this._tNode=r,this.destroyCbs=[],this.instance=e,this.hostView=this.changeDetectorRef=new Hs(a),this.hostView._tViewNode=ki(a[1],null,-1,a),this.componentType=t}get injector(){return new Ca(this._tNode,this._rootLView)}destroy(){this.destroyCbs&&(this.destroyCbs.forEach(t=>t()),this.destroyCbs=null,!this.hostView.destroyed&&this.hostView.destroy())}onDestroy(t){this.destroyCbs&&this.destroyCbs.push(t)}}const Cg={},Rg=function(){var t={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencySymbol:15,CurrencyName:16,Currencies:17,PluralCase:18,ExtraData:19};return t[t.LocaleId]="LocaleId",t[t.DayPeriodsFormat]="DayPeriodsFormat",t[t.DayPeriodsStandalone]="DayPeriodsStandalone",t[t.DaysFormat]="DaysFormat",t[t.DaysStandalone]="DaysStandalone",t[t.MonthsFormat]="MonthsFormat",t[t.MonthsStandalone]="MonthsStandalone",t[t.Eras]="Eras",t[t.FirstDayOfWeek]="FirstDayOfWeek",t[t.WeekendRange]="WeekendRange",t[t.DateFormat]="DateFormat",t[t.TimeFormat]="TimeFormat",t[t.DateTimeFormat]="DateTimeFormat",t[t.NumberSymbols]="NumberSymbols",t[t.NumberFormats]="NumberFormats",t[t.CurrencySymbol]="CurrencySymbol",t[t.CurrencyName]="CurrencyName",t[t.Currencies]="Currencies",t[t.PluralCase]="PluralCase",t[t.ExtraData]="ExtraData",t}(),Ag=void 0;var kg=["en",[["a","p"],["AM","PM"],Ag],[["AM","PM"],Ag,Ag],[["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"]],Ag,[["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"]],Ag,[["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}",Ag,"{1} 'at' {0}",Ag],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){let e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}];function Eg(t){return Lg(t)[Rg.PluralCase]}function Lg(t){const e=t.toLowerCase().replace(/_/g,"-");let n=Cg[e];if(n)return n;const a=e.split("-")[0];if(n=Cg[a],n)return n;if("en"===a)return kg;throw new Error(`Missing locale data for the locale "${t}".`)}const Dg="en-US",Pg=/^\s*(�\d+:?\d*�)\s*,\s*(select|plural)\s*,/,Mg=/�\/?\*(\d+:\d+)�/gi,qg=/�(\/?[#*!]\d+):?\d*�/gi,jg=/�(\d+):?\d*�/gi,Fg=/({\s*�\d+:?\d*�\s*,\s*\S{6}\s*,[\s\S]*})/gi,Gg=/\[(�.+?�?)\]/,Vg=/\[(�.+?�?)\]|(�\/?\*\d+:\d+�)/g,zg=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,Bg=/{([A-Z0-9_]+)}/g,Yg=/�I18N_EXP_(ICU(_\d+)?)�/g,Hg=/\/\*/,Ug=/\d+\:(\d+)/;function Wg(t){if(!t)return[];let e=0;const n=[],a=[],r=/[{}]/g;let i;for(r.lastIndex=0;i=r.exec(t);){const r=i.index;if("}"==i[0]){if(n.pop(),0==n.length){const n=t.substring(e,r);Pg.test(n)?a.push(Kg(n)):a.push(n),e=r+1}}else{if(0==n.length){const n=t.substring(e,r);a.push(n),e=r+1}n.push("{")}}const s=t.substring(e);return a.push(s),a}function Kg(t){const e=[],n=[];let a=1,r=0;const i=Wg(t=t.replace(Pg,(function(t,e,n){return a="select"===n?0:1,r=parseInt(e.substr(1),10),""})));for(let s=0;s<i.length;){let t=i[s++].trim();1===a&&(t=t.replace(/\s*(?:=)?(\w+)\s*/,"$1")),t.length&&e.push(t);const r=Wg(i[s++]);e.length>n.length&&n.push(r)}return'Missing key "other" in ICU statement.',e.indexOf("other")<=-1&&vt('Missing key "other" in ICU statement.'),{type:a,mainBinding:r,cases:e,values:n}}function $g(t){let e,n,a="",r=0,i=!1;for(;null!==(e=Mg.exec(t));)i?e[0]===`�/*${n}�`&&(r=e.index,i=!1):(a+=t.substring(r,e.index+e[0].length),n=e[1],i=!0);return a+=t.substr(r),a}function Zg(t,e,n,a=null){const r=[null,null],i=t.split(jg);let s=0;for(let o=0;o<i.length;o++){const t=i[o];if(1&o){const e=parseInt(t,10);r.push(-1-e),s|=tp(e)}else""!==t&&r.push(t)}return r.push(e<<2|(n?1:0)),n&&r.push(n,a),r[0]=s,r[1]=r.length-2,r}function Jg(t,e=0){let n;e|=tp(t.mainBinding);for(let a=0;a<t.values.length;a++){const r=t.values[a];for(let t=0;t<r.length;t++){const a=r[t];if("string"==typeof a)for(;n=jg.exec(a);)e|=tp(parseInt(n[1],10));else e=Jg(a,e)}}return e}const Qg=[];let Xg=-1;function tp(t){return 1<<Math.min(t,31)}const ep=[];function np(t,e,n){const a=Ae()[1];Qg[++Xg]=t,cl(!0),a.firstTemplatePass&&null===a.data[t+19]&&function(t,e,n,a){const r=Ae(),i=t.blueprint.length-19;ap=0;const s=Ve(),o=Ye()?Ve():s&&s.parent;let u=o&&o!==r[6]?o.index-19:e,d=0;ep[d]=u;const l=[];e>0&&s!==o&&l.push(s.index<<3|0);const c=[],f=[],h=(g=function(t,e){if("number"!=typeof e)return $g(t);{const n=t.indexOf(`:${e}�`)+2+e.toString().length,a=t.search(new RegExp(`�\\/\\*\\d+:${e}�`));return $g(t.substring(n,a))}}(n,a),g.replace(xp," ")).split(qg);var g;for(let p=0;p<h.length;p++){let t=h[p];if(1&p)if("/"===t.charAt(0)){if("#"===t.charAt(1)){const e=parseInt(t.substr(2),10);u=ep[--d],l.push(e<<3|5)}}else{const e=parseInt(t.substr(1),10);l.push(e<<3|0,u<<17|1),"#"===t.charAt(0)&&(ep[++d]=u=e)}else{const e=Wg(t);for(let t=0;t<e.length;t++)if(1&t){const n=i+ap++;l.push(hi,"",n,u<<17|1);const a=e[t],r=Jg(a);mp(f,a,n,n);const s=f.length-1;c.push(tp(a.mainBinding),3,-1-a.mainBinding,n<<2|2,s,r,2,n<<2|3,s)}else if(""!==e[t]){const n=e[t],a=n.match(jg),r=i+ap++;l.push(a?"":n,r,u<<17|1),a&&gt(Zg(n,r),c)}}}ap>0&&function(t,e){if(e>0){const n=t[1];if(n.firstTemplatePass){for(let a=0;a<e;a++)n.blueprint.push(null),n.data.push(null),t.push(null);n.expandoInstructions?n.expandoInstructions.push(e):n.expandoStartIndex+=e}}}(r,ap),t.data[e+19]={vars:ap,create:l,update:c,icus:f.length?f:null}}(a,t,e,n)}let ap;function rp(t,e,n,a){const r=t.next;n||(n=e),n===e&&t!==e.child?(t.next=e.child,e.child=t):n!==e&&t!==n.next?(t.next=n.next,n.next=t):t.next=null,e!==a[6]&&(t.parent=e);let i=t.next;for(;i;)i.next===t&&(i.next=r),i=i.next;if(1===t.type)return Fs(a,t,t.projection,la(a)),t;Ms(be(t,a),t,a);const s=a[t.index];return 0!==t.type&&Jt(s)&&Ms(s[7],t,a),t}function ip(t,e={}){let n=t;if(Gg.test(t)){const t={},e=[0];n=n.replace(Vg,(n,a,r)=>{const i=a||r,s=t[i]||[];if(s.length||(i.split("|").forEach(t=>{const e=t.match(Ug),n=e?parseInt(e[1],10):0,a=Hg.test(t);s.push([n,a,t])}),t[i]=s),!s.length)throw new Error(`i18n postprocess: unmatched placeholder - ${i}`);const o=e[e.length-1];let u=0;for(let t=0;t<s.length;t++)if(s[t][0]===o){u=t;break}const[d,l,c]=s[u];return l?e.pop():o!==d&&e.push(d),s.splice(u,1),c})}return Object.keys(e).length?(n=n.replace(zg,(t,n,a,r,i,s)=>e.hasOwnProperty(a)?`${n}${e[a]}${s}`:t),n=n.replace(Bg,(t,n)=>e.hasOwnProperty(n)?e[n]:t),n=n.replace(Yg,(t,n)=>{if(e.hasOwnProperty(n)){const a=e[n];if(!a.length)throw new Error(`i18n postprocess: unmatched ICU - ${t} with key: ${n}`);return a.shift()}return t}),n):n}function sp(){!function(t){const e=Ae(),n=Qg[Xg--],a=t.data[n+19];let r=Ve();const i=up(n,a.create,0,e);for(let s=n+1;s<=r.index-19;s++)-1===i.indexOf(s)&&dp(s,e)}(Ae()[1]),cl(!1)}function op(t,e,n,a,r){const i=Ve();t[e+19]=a;const s=Ai(t[1],t[6],e,n,r,null);return i.next===s&&(i.next=null),s}function up(t,e,n,a){const r=Ae()[12];let i=null,s=null;const o=[];for(let u=0;u<e.length;u++){const n=e[u];if("string"==typeof n){const t=ws(n,r),d=e[++u];s=i,i=op(a,d,3,t,null),o.push(d),He()}else if("number"==typeof n)switch(7&n){case 1:const r=n>>>17;let d;d=r===t?a[6]:ye(r,a),s=rp(i,d,s,a);break;case 0:const l=n>>>3;o.push(l),s=i,i=ye(l,a),i&&ze(i,3===i.type);break;case 5:s=i=ye(n>>>3,a),ze(i,!1);break;case 4:es(n>>>3,e[++u],e[++u],a);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}else switch(n){case hi:const t=e[++u],d=e[++u],l=r.createComment(t);s=i,i=op(a,d,5,l,null),o.push(d),qr(l,a),i.activeCaseIndex=null,He();break;case fi:const c=e[++u],f=e[++u];s=i,i=op(a,f,3,r.createElement(c),c),o.push(f);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}}return He(),o}function dp(t,e){const n=ye(t,e),a=pe(t,e);a&&js(e[12],a);const r=_d(t);if(Jt(r)){const t=r;0!==n.type&&js(e[12],t[7])}n.flags|=32}function lp(t,e,n){np(t,e,n),sp()}function cp(t,e){!function(t,e,n){const a=Ve().index-19,r=[];for(let i=0;i<n.length;i+=2){const s=n[i],o=n[i+1].split(Fg);for(let n=0;n<o.length;n++){const i=o[n];if(1&n)throw new Error("ICU expressions are not yet supported in attributes");if(""!==i)if(i.match(jg))t.firstTemplatePass&&null===t.data[e+19]&&gt(Zg(i,a,s),r);else{const t=Ae();es(a,s,i,t);const e=ye(a,t),n=e.inputs&&e.inputs[s];n&&ys(t,n,i)}}}t.firstTemplatePass&&null===t.data[e+19]&&(t.data[e+19]=r)}(Ae()[1],t,e)}let fp=0,hp=0;function gp(t){return Uu(Ae(),t)!==ci&&(fp|=1<<hp),hp++,gp}function pp(t){if(hp){const e=Ae(),n=e[1].data[t+19];let a,r=null;Array.isArray(n)?a=n:(a=n.update,r=n.icus),function t(e,n,a,r,i,s=!1){let o=!1;for(let u=0;u<e.length;u++){const d=e[u],l=e[++u];if(s||d&r){let s="";for(let d=u+1;d<=u+l;d++){const u=e[d];if("string"==typeof u)s+=u;else if("number"==typeof u)if(u<0)s+=vn(i[a-u]);else{const l=u>>>2;let c,f,h;switch(3&u){case 1:Yi(l,e[++d],s,e[++d]);break;case 0:vs(i,l,s);break;case 2:if(c=e[++d],f=n[c],h=ye(l,i),null!==h.activeCaseIndex){const t=f.remove[h.activeCaseIndex];for(let e=0;e<t.length;e++){const a=t[e];switch(7&a){case 3:dp(a>>>3,i);break;case 6:const r=ye(t[e+1]>>>3,i).activeCaseIndex;null!==r&&gt(n[a>>>3].remove[r],t)}}}const u=bp(f,s);h.activeCaseIndex=-1!==u?u:null,up(-1,f.create[u],0,i),o=!0;break;case 3:c=e[++d],f=n[c],h=ye(l,i),t(f.update[h.activeCaseIndex],n,a,r,i,o)}}}}u+=l}}(a,r,e[7]-hp-1,fp,e),fp=0,hp=0}}function bp(t,e){let n=t.cases.indexOf(e);if(-1===n)switch(t.type){case 1:{const a=function(t,e){switch(Eg(e)(t)){case 0:return"zero";case 1:return"one";case 2:return"two";case 3:return"few";case 4:return"many";default:return"other"}}(e,Sp);n=t.cases.indexOf(a),-1===n&&"other"!==a&&(n=t.cases.indexOf("other"));break}case 0:n=t.cases.indexOf("other")}return n}function mp(t,e,n,a){const r=[],i=[],s=[],o=[],u=[];for(let d=0;d<e.values.length;d++){const l=e.values[d],c=[];for(let t=0;t<l.length;t++){const e=l[t];if("string"!=typeof e){const n=c.push(e)-1;l[t]=`\x3c!--�${n}�--\x3e`}}const f=yp(l.join(""),n,c,t,a);r.push(f.create),i.push(f.remove),s.push(f.update),o.push(f.vars),u.push(f.childIcus)}t.push({type:e.type,vars:o,childIcus:u,cases:e.cases,create:r,remove:i,update:s}),ap+=Math.max(...o)}function yp(t,e,n,a,r){const i=new $a(document).getInertBodyElement(t);if(!i)throw new Error("Unable to generate inert body element");const s={vars:0,childIcus:[],create:[],remove:[],update:[]};return function t(e,n,a,r,i,s){if(e){const o=[];for(;e;){const u=e.nextSibling,d=s+ ++n.vars;switch(e.nodeType){case Node.ELEMENT_NODE:const u=e,l=u.tagName.toLowerCase();if(sr.hasOwnProperty(l)){n.create.push(fi,l,d,a<<17|1);const o=u.attributes;for(let t=0;t<o.length;t++){const e=o.item(t),a=e.name.toLowerCase();e.value.match(jg)?dr.hasOwnProperty(a)&&gt(or[a]?Zg(e.value,d,e.name,Qa):ur[a]?Zg(e.value,d,e.name,Xa):Zg(e.value,d,e.name),n.update):n.create.push(d<<3|4,e.name,e.value)}t(e.firstChild,n,d,r,i,s),n.remove.push(d<<3|3)}else n.vars--;break;case Node.TEXT_NODE:const c=e.textContent||"",f=c.match(jg);n.create.push(f?"":c,d,a<<17|1),n.remove.push(d<<3|3),f&&gt(Zg(c,d),n.update);break;case Node.COMMENT_NODE:const h=vp.exec(e.textContent||"");if(h){const t=parseInt(h[1],10);n.create.push(hi,"",d,a<<17|1),o.push([r[t],d])}else n.vars--;break;default:n.vars--}e=u}for(let t=0;t<o.length;t++){const e=o[t][0],a=o[t][1];mp(i,e,a,s+n.vars);const r=i.length-1;n.vars+=Math.max(...i[r].vars),n.childIcus.push(r);const u=Jg(e);n.update.push(tp(e.mainBinding),3,-1-e.mainBinding,a<<2|2,r,u,2,a<<2|3,r),n.remove.push(r<<3|6,a<<3|3)}}}((mr(i)||i).firstChild,s,e,n,a,r),s}const vp=/�(\d+)�/,xp=/\uE500/g;let _p={};function Tp(t={translations:{}}){_p=t.translations}const Op=/\{\$(.*?)\}/g;function wp(t,e){return void 0!==_p[t]&&(t=_p[t]),void 0!==e&&Object.keys(e).length?t.replace(Op,(t,n)=>e[n]||""):t}let Sp=Dg;function Ip(t){null==t&&vt("Expected localeId to be defined"),"string"==typeof t&&(Sp=t.toLowerCase().replace(/_/g,"-"))}const Np=new Map;function Cp(t,e){const n=Np.get(t);Rp(t,n&&n.moduleType,e.moduleType),Np.set(t,e)}function Rp(t,e,n){if(e&&e!==n)throw new Error(`Duplicate module registered for ${t} - ${j(e)} vs ${j(e.name)}`)}function Ap(t){if(null!==t.ngModuleDef.id){const e=t.ngModuleDef.id;Rp(e,Np.get(e),t),Np.set(e,t)}let e=t.ngModuleDef.imports;e instanceof Function&&(e=e()),e&&e.forEach(t=>Ap(t))}function kp(t){return Np.get(t)}const Ep={provide:Yc,useClass:class extends Yc{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const e=Ht(t);return new Ig(e,this.ngModule)}},deps:[ft]};class Lp extends ft{constructor(t,e){super(),this._parent=e,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[];const n=$t(t),a=t[kt]||null;a&&Ip(a),this._bootstrapComponents=In(n.bootstrap),this._r3Injector=Do(t,e,[{provide:ft,useValue:this},Ep],j(t)),this.instance=this.get(t)}get(t,e=Bo.THROW_IF_NOT_FOUND,n=C.Default){return t===Bo||t===ft||t===$?this:this._r3Injector.get(t,e,n)}get componentFactoryResolver(){return this.get(Yc)}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class Dp extends ht{constructor(t){super(),this.moduleType=t,null!==$t(t)&&Ap(t)}create(t){return new Lp(this.moduleType,t)}}function Pp(t,e,n,a){return wt(()=>{const r=t,i=r.prototype?Object.getPrototypeOf(r.prototype):null,s=i&&i.constructor;null!==e&&(void 0===r.decorators||s&&s.decorators===r.decorators?r.decorators=e:r.decorators.push(...e)),null!==n&&(r.ctorParameters=n),null!==a&&(r.propDecorators=void 0===r.propDecorators||s&&s.propDecorators===r.propDecorators?a:Object.assign({},r.propDecorators,a))})}function Mp(t,e,n){const a=Qe()+t,r=Ae();return Ue()?Fu(r,a,n?e.call(n):e()):Gu(r,a)}function qp(t,e,n,a){const r=Ae(),i=Qe()+t;return Vu(r,i,n)?Fu(r,i+1,a?e.call(a,n):e(n)):Gu(r,i+1)}function jp(t,e,n,a,r){const i=Qe()+t,s=Ae();return zu(s,i,n,a)?Fu(s,i+2,r?e.call(r,n,a):e(n,a)):Gu(s,i+2)}function Fp(t,e,n,a,r,i){const s=Qe()+t,o=Ae();return Bu(o,s,n,a,r)?Fu(o,s+3,i?e.call(i,n,a,r):e(n,a,r)):Gu(o,s+3)}function Gp(t,e,n,a,r,i,s){const o=Qe()+t,u=Ae();return Yu(u,o,n,a,r,i)?Fu(u,o+4,s?e.call(s,n,a,r,i):e(n,a,r,i)):Gu(u,o+4)}function Vp(t,e,n,a,r,i,s,o){const u=Qe()+t,d=Ae(),l=Yu(d,u,n,a,r,i);return Vu(d,u+4,s)||l?Fu(d,u+5,o?e.call(o,n,a,r,i,s):e(n,a,r,i,s)):Gu(d,u+5)}function zp(t,e,n,a,r,i,s,o,u){const d=Qe()+t,l=Ae(),c=Yu(l,d,n,a,r,i);return zu(l,d+4,s,o)||c?Fu(l,d+6,u?e.call(u,n,a,r,i,s,o):e(n,a,r,i,s,o)):Gu(l,d+6)}function Bp(t,e,n,a,r,i,s,o,u,d){const l=Qe()+t,c=Ae();let f=Yu(c,l,n,a,r,i);return Bu(c,l+4,s,o,u)||f?Fu(c,l+7,d?e.call(d,n,a,r,i,s,o,u):e(n,a,r,i,s,o,u)):Gu(c,l+7)}function Yp(t,e,n,a,r,i,s,o,u,d,l){const c=Qe()+t,f=Ae(),h=Yu(f,c,n,a,r,i);return Yu(f,c+4,s,o,u,d)||h?Fu(f,c+8,l?e.call(l,n,a,r,i,s,o,u,d):e(n,a,r,i,s,o,u,d)):Gu(f,c+8)}function Hp(t,e,n,a){let r=Qe()+t,i=!1;const s=Ae();for(let o=0;o<n.length;o++)Vu(s,r++,n[o])&&(i=!0);return i?Fu(s,r,e.apply(a,n)):Gu(s,r)}function Up(t,e){const n=Ae()[1];let a;const r=t+19;n.firstTemplatePass?(a=function(t,e){if(e)for(let n=e.length-1;n>=0;n--){const a=e[n];if(t===a.name)return a}throw new Error(`The pipe '${t}' could not be found!`)}(e,n.pipeRegistry),n.data[r]=a,a.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(r,a.onDestroy)):a=n.data[r];const i=a.factory();return vd(t,i),i}function Wp(t,e,n){const a=_d(t);return Xp(Qp(t)?qp(e,a.transform,n,a):a.transform(n))}function Kp(t,e,n,a){const r=_d(t);return Xp(Qp(t)?jp(e,r.transform,n,a,r):r.transform(n,a))}function $p(t,e,n,a,r){const i=_d(t);return Xp(Qp(t)?Fp(e,i.transform,n,a,r,i):i.transform(n,a,r))}function Zp(t,e,n,a,r,i){const s=_d(t);return Xp(Qp(t)?Gp(e,s.transform,n,a,r,i,s):s.transform(n,a,r,i))}function Jp(t,e,n){const a=_d(t);return Xp(Qp(t)?Hp(e,a.transform,n,a):a.transform.apply(a,n))}function Qp(t){return Ae()[1].data[t+19].pure}function Xp(t){if(Mu.isWrapped(t)){t=Mu.unwrap(t);const e=Ae();e[e[7]]=ci}return t}class tb extends a.a{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,e,n){let a,i=t=>null,s=()=>null;t&&"object"==typeof t?(a=this.__isAsync?e=>{setTimeout(()=>t.next(e))}:e=>{t.next(e)},t.error&&(i=this.__isAsync?e=>{setTimeout(()=>t.error(e))}:e=>{t.error(e)}),t.complete&&(s=this.__isAsync?()=>{setTimeout(()=>t.complete())}:()=>{t.complete()})):(a=this.__isAsync?e=>{setTimeout(()=>t(e))}:e=>{t(e)},e&&(i=this.__isAsync?t=>{setTimeout(()=>e(t))}:t=>{e(t)}),n&&(s=this.__isAsync?()=>{setTimeout(()=>n())}:()=>{n()}));const o=super.subscribe(a,i,s);return t instanceof r.a&&t.add(o),o}}function eb(){return this._results[Lu()]()}class nb{constructor(){this.dirty=!0,this._results=[],this.changes=new tb,this.length=0;const t=Lu(),e=nb.prototype;e[t]||(e[t]=eb)}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,e){return this._results.reduce(t,e)}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){this._results=pt(t),this.dirty=!1,this.length=this._results.length,this.last=this._results[this.length-1],this.first=this._results[0]}notifyOnChanges(){this.changes.emit(this)}setDirty(){this.dirty=!0}destroy(){this.changes.complete(),this.changes.unsubscribe()}}class ab{constructor(t){this.queryList=t,this.matches=null}clone(){return new ab(this.queryList)}setDirty(){this.queryList.setDirty()}}class rb{constructor(t=[]){this.queries=t}createEmbeddedView(t){const e=t.queries;if(null!==e){const n=null!==t.contentQueries?t.contentQueries[0]:e.length,a=new Array(n);for(let t=0;t<n;t++){const n=e.getByIndex(t);a[t]=this.queries[n.indexInDeclarationView].clone()}return new rb(a)}return null}insertView(t){this.dirtyQueriesWithMatches(t)}detachView(t){this.dirtyQueriesWithMatches(t)}dirtyQueriesWithMatches(t){for(let e=0;e<this.queries.length;e++)null!==Ob(t,e).matches&&this.queries[e].setDirty()}}class ib{constructor(t,e,n,a=null){this.predicate=t,this.descendants=e,this.isStatic=n,this.read=a}}class sb{constructor(t=[]){this.queries=t}elementStart(t,e){for(let n of this.queries)n.elementStart(t,e)}elementEnd(t){for(let e of this.queries)e.elementEnd(t)}embeddedTView(t){let e=null;for(let n=0;n<this.length;n++){const a=null!==e?e.length:0,r=this.getByIndex(n).embeddedTView(t,a);r&&(r.indexInDeclarationView=n,null!==e?e.push(r):e=[r])}return null!==e?new sb(e):null}template(t,e){for(let n of this.queries)n.template(t,e)}getByIndex(t){return this.queries[t]}get length(){return this.queries.length}track(t){this.queries.push(t)}}class ob{constructor(t,e=-1){this.metadata=t,this.matches=null,this.indexInDeclarationView=-1,this.crossesNgTemplate=!1,this._appliesToNextNode=!0,this._declarationNodeIndex=e}elementStart(t,e){this.isApplyingToNode(e)&&this.matchTNode(t,e)}elementEnd(t){this._declarationNodeIndex===t.index&&(this._appliesToNextNode=!1)}template(t,e){this.elementStart(t,e)}embeddedTView(t,e){return this.isApplyingToNode(t)?(this.crossesNgTemplate=!0,this.addMatch(-t.index,e),new ob(this.metadata)):null}isApplyingToNode(t){return this._appliesToNextNode&&!1===this.metadata.descendants?this._declarationNodeIndex===(t.parent?t.parent.index:-1):this._appliesToNextNode}matchTNode(t,e){if(Array.isArray(this.metadata.predicate)){const n=this.metadata.predicate;for(let a=0;a<n.length;a++)this.matchTNodeWithReadOption(t,e,ub(e,n[a]))}else{const n=this.metadata.predicate;n===wf?0===e.type&&this.matchTNodeWithReadOption(t,e,-1):this.matchTNodeWithReadOption(t,e,wa(e,t,n,!1,!1))}}matchTNodeWithReadOption(t,e,n){if(null!==n){const a=this.metadata.read;if(null!==a)if(a===Kc||a===Nf||a===wf&&0===e.type)this.addMatch(e.index,-2);else{const n=wa(e,t,a,!1,!1);null!==n&&this.addMatch(e.index,n)}else this.addMatch(e.index,n)}}addMatch(t,e){null===this.matches?this.matches=[t,e]:this.matches.push(t,e)}}function ub(t,e){const n=t.localNames;if(null!==n)for(let a=0;a<n.length;a+=2)if(n[a]===e)return n[a+1];return null}function db(t,e,n,a){return-1===n?function(t,e){return 3===t.type||4===t.type?$s(Kc,t,e):0===t.type?Zs(wf,Kc,t,e):null}(e,t):-2===n?function(t,e,n){return n===Kc?$s(Kc,e,t):n===wf?Zs(wf,Kc,e,t):n===Nf?Js(Nf,Kc,e,t):void 0}(t,e,a):Sa(t[1].data,t,n,e)}function lb(t,e,n){const a=t[5].queries[n];if(null===a.matches){const n=t[1].data,r=e.matches,i=new Array(r.length/2);for(let a=0;a<r.length;a+=2){const s=r[a];i[a/2]=s<0?null:db(t,n[s],r[a+1],e.metadata.read)}a.matches=i}return a.matches}function cb(t){const e=Ae(),n=en();nn(n+1);const a=Ob(e[1],n);if(t.dirty&&Ue()===a.metadata.isStatic){if(null===a.matches)t.reset([]);else{const r=a.crossesNgTemplate?function t(e,n,a){const r=e[1].queries.getByIndex(n),i=r.matches;if(null!==i){const s=lb(e,r,n);for(let n=0;n<i.length;n+=2){const r=i[n];if(r>0)a.push(s[n/2]);else{const s=i[n+1],o=e[-r];for(let e=9;e<o.length;e++){const n=o[e];n[17]===n[3]&&t(n,s,a)}if(null!==o[5])for(let e of o[5])t(e,s,a)}}}return a}(e,n,[]):lb(e,a,n);t.reset(r),t.notifyOnChanges()}return!0}return!1}function fb(t,e,n){gb(Ae(),t,e,n,!0)}function hb(t,e,n){gb(Ae(),t,e,n,!1)}function gb(t,e,n,a,r){const i=t[1];i.firstTemplatePass&&(Tb(i,new ib(e,n,r,a),-1),r&&(i.staticViewQueries=!0)),_b(t)}function pb(){return xb(Ae(),en())}function bb(t,e,n,a){yb(Ae(),e,n,a,!1,Ve(),t)}function mb(t,e,n,a){yb(Ae(),e,n,a,!0,Ve(),t)}function yb(t,e,n,a,r,i,s){const o=t[1];o.firstTemplatePass&&(Tb(o,new ib(e,n,r,a),i.index),function(t,e){const n=t.contentQueries||(t.contentQueries=[]);e!==(t.contentQueries.length?n[n.length-1]:-1)&&n.push(t.queries.length-1,e)}(o,s),r&&(o.staticContentQueries=!0)),_b(t)}function vb(){return xb(Ae(),en())}function xb(t,e){return t[5].queries[e].queryList}function _b(t){const e=new nb;!function(t,e,n){const a=gs(t);a.push(e),t[1].firstTemplatePass&&ps(t).push(n,a.length-1)}(t,e,e.destroy),null===t[5]&&(t[5]=new rb),t[5].queries.push(new ab(e))}function Tb(t,e,n){null===t.queries&&(t.queries=new sb),t.queries.track(new ob(e,n))}function Ob(t,e){return t.queries.getByIndex(e)}function wb(t,e){return Zs(wf,Kc,t,e)}function Sb(t=C.Default){const e=Qs(!0);if(null!=e||t&C.Optional)return e;throw new Error("No provider for ChangeDetectorRef!")}const Ib=(()=>({"ɵɵattribute":Wu,"ɵɵattributeInterpolate1":ad,"ɵɵattributeInterpolate2":rd,"ɵɵattributeInterpolate3":id,"ɵɵattributeInterpolate4":sd,"ɵɵattributeInterpolate5":od,"ɵɵattributeInterpolate6":ud,"ɵɵattributeInterpolate7":dd,"ɵɵattributeInterpolate8":ld,"ɵɵattributeInterpolateV":cd,"ɵɵdefineBase":zt,"ɵɵdefineComponent":Pt,"ɵɵdefineDirective":Bt,"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵdefineNgModule":Ft,"ɵɵdefinePipe":Yt,"ɵɵdirectiveInject":Td,"ɵɵgetFactoryOf":Ra,"ɵɵgetInheritedFactory":Aa,"ɵɵinject":rt,"ɵɵinjectAttribute":Od,"ɵɵinjectPipeChangeDetectorRef":Sb,"ɵɵtemplateRefExtractor":wb,"ɵɵNgOnChangesFeature":Oc,"ɵɵProvidersFeature":jc,"ɵɵInheritDefinitionFeature":Nc,"ɵɵcontainer":gd,"ɵɵnextContext":ol,"ɵɵcontainerRefreshStart":bd,"ɵɵcontainerRefreshEnd":md,"ɵɵnamespaceHTML":gn,"ɵɵnamespaceMathML":hn,"ɵɵnamespaceSVG":fn,"ɵɵenableBindings":Ce,"ɵɵdisableBindings":Re,"ɵɵallocHostVars":ku,"ɵɵelementStart":Bd,"ɵɵelementEnd":Yd,"ɵɵelement":Hd,"ɵɵelementContainerStart":Kd,"ɵɵelementContainerEnd":$d,"ɵɵelementContainer":Zd,"ɵɵpureFunction0":Mp,"ɵɵpureFunction1":qp,"ɵɵpureFunction2":jp,"ɵɵpureFunction3":Fp,"ɵɵpureFunction4":Gp,"ɵɵpureFunction5":Vp,"ɵɵpureFunction6":zp,"ɵɵpureFunction7":Bp,"ɵɵpureFunction8":Yp,"ɵɵpureFunctionV":Hp,"ɵɵgetCurrentView":Xd,"ɵɵrestoreView":Ge,"ɵɵlistener":nl,"ɵɵload":_d,"ɵɵprojection":fl,"ɵɵupdateSyntheticHostBinding":tc,"ɵɵcomponentHostSyntheticListener":al,"ɵɵpipeBind1":Wp,"ɵɵpipeBind2":Kp,"ɵɵpipeBind3":$p,"ɵɵpipeBind4":Zp,"ɵɵpipeBindV":Jp,"ɵɵprojectionDef":dl,"ɵɵhostProperty":Xl,"ɵɵproperty":Hu,"ɵɵpropertyInterpolate":hl,"ɵɵpropertyInterpolate1":gl,"ɵɵpropertyInterpolate2":pl,"ɵɵpropertyInterpolate3":bl,"ɵɵpropertyInterpolate4":ml,"ɵɵpropertyInterpolate5":yl,"ɵɵpropertyInterpolate6":vl,"ɵɵpropertyInterpolate7":xl,"ɵɵpropertyInterpolate8":_l,"ɵɵpropertyInterpolateV":Tl,"ɵɵpipe":Up,"ɵɵqueryRefresh":cb,"ɵɵviewQuery":hb,"ɵɵstaticViewQuery":fb,"ɵɵstaticContentQuery":mb,"ɵɵloadViewQuery":pb,"ɵɵcontentQuery":bb,"ɵɵloadContentQuery":vb,"ɵɵreference":xd,"ɵɵelementHostAttrs":Ud,"ɵɵclassMap":kd,"ɵɵclassMapInterpolate1":Pl,"ɵɵclassMapInterpolate2":Ml,"ɵɵclassMapInterpolate3":ql,"ɵɵclassMapInterpolate4":jl,"ɵɵclassMapInterpolate5":Fl,"ɵɵclassMapInterpolate6":Gl,"ɵɵclassMapInterpolate7":Vl,"ɵɵclassMapInterpolate8":zl,"ɵɵclassMapInterpolateV":Bl,"ɵɵstyling":wd,"ɵɵstyleMap":Ad,"ɵɵstyleProp":Id,"ɵɵstylePropInterpolate1":Yl,"ɵɵstylePropInterpolate2":Hl,"ɵɵstylePropInterpolate3":Ul,"ɵɵstylePropInterpolate4":Wl,"ɵɵstylePropInterpolate5":Kl,"ɵɵstylePropInterpolate6":$l,"ɵɵstylePropInterpolate7":Zl,"ɵɵstylePropInterpolate8":Jl,"ɵɵstylePropInterpolateV":Ql,"ɵɵstyleSanitizer":Sd,"ɵɵstylingApply":Pd,"ɵɵclassProp":Cd,"ɵɵselect":Oi,"ɵɵtemplate":pd,"ɵɵtext":Ol,"ɵɵtextBinding":wl,"ɵɵtextInterpolate":Sl,"ɵɵtextInterpolate1":Il,"ɵɵtextInterpolate2":Nl,"ɵɵtextInterpolate3":Cl,"ɵɵtextInterpolate4":Rl,"ɵɵtextInterpolate5":Al,"ɵɵtextInterpolate6":kl,"ɵɵtextInterpolate7":El,"ɵɵtextInterpolate8":Ll,"ɵɵtextInterpolateV":Dl,"ɵɵembeddedViewStart":Jd,"ɵɵembeddedViewEnd":Qd,"ɵɵi18n":lp,"ɵɵi18nAttributes":cp,"ɵɵi18nExp":gp,"ɵɵi18nStart":np,"ɵɵi18nEnd":sp,"ɵɵi18nApply":pp,"ɵɵi18nPostprocess":ip,"ɵɵi18nLocalize":wp,"ɵɵresolveWindow":Tn,"ɵɵresolveDocument":On,"ɵɵresolveBody":wn,"ɵɵsetComponentScope":Mt,"ɵɵsetNgModuleScope":Gt,"ɵɵsanitizeHtml":Or,"ɵɵsanitizeStyle":wr,"ɵɵdefaultStyleSanitizer":Ar,"ɵɵsanitizeResourceUrl":Ir,"ɵɵsanitizeScript":Nr,"ɵɵsanitizeUrl":Sr,"ɵɵsanitizeUrlOrResourceUrl":Rr}))(),Nb=[],Cb=[];let Rb=!1;function Ab(){if(!Rb){Rb=!0;try{for(let t=Cb.length-1;t>=0;t--){const{moduleType:e,ngModule:n}=Cb[t];n.declarations&&n.declarations.every(kb)&&(Cb.splice(t,1),qb(e,n))}}finally{Rb=!1}}}function kb(t){return Array.isArray(t)?t.every(kb):!!V(t)}function Eb(t,e={}){Lb(t,e),function(t,e){Cb.push({moduleType:t,ngModule:e})}(t,e)}function Lb(t,e,n=!1){const a=pt(e.declarations||Nb);let r=null;Object.defineProperty(t,At,{configurable:!0,get:()=>(null===r&&(r=W().compileNgModule(Ib,`ng:///${t.name}/ngModuleDef.js`,{type:t,bootstrap:pt(e.bootstrap||Nb).map(V),declarations:a.map(V),imports:pt(e.imports||Nb).map(V).map(Gb),exports:pt(e.exports||Nb).map(V).map(Gb),emitInline:!0,schemas:e.schemas?pt(e.schemas):null,id:e.id||null})),r)});let i=null;Object.defineProperty(t,q,{get:()=>{if(null===i){const n={name:t.name,type:t,deps:go(t),providers:e.providers||Nb,imports:[(e.imports||Nb).map(V),(e.exports||Nb).map(V)]};i=W().compileInjector(Ib,`ng:///${t.name}/ngInjectorDef.js`,n)}return i},configurable:!1})}let Db=new Map,Pb=new Map;function Mb(){Db=new Map,Pb=new Map,Cb.length=0}function qb(t,e){const n=pt(e.declarations||Nb),a=Fb(t);n.forEach(e=>{e.hasOwnProperty(Nt)?jb(Ht(e),a):e.hasOwnProperty(Ct)||e.hasOwnProperty(Rt)||(e.ngSelectorScope=t)})}function jb(t,e){t.directiveDefs=()=>Array.from(e.compilation.directives).map(t=>t.hasOwnProperty(Nt)?Ht(t):Ut(t)).filter(t=>!!t),t.pipeDefs=()=>Array.from(e.compilation.pipes).map(t=>Wt(t)),t.schemas=e.schemas,t.tView=null}function Fb(t,e){if(!Vb(t))throw new Error(`${t.name} does not have an ngModuleDef`);const n=$t(t);if(null!==n.transitiveCompileScopes)return n.transitiveCompileScopes;const a={schemas:n.schemas||null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return In(n.declarations).forEach(t=>{Wt(t)?a.compilation.pipes.add(t):a.compilation.directives.add(t)}),In(n.imports).forEach(t=>{const n=t;if(!Vb(n))throw new Error(`Importing ${n.name} which does not have an ngModuleDef`);e&&e(n);const r=Fb(n,e);r.exported.directives.forEach(t=>a.compilation.directives.add(t)),r.exported.pipes.forEach(t=>a.compilation.pipes.add(t))}),In(n.exports).forEach(t=>{const n=t;if(Vb(n)){const t=Fb(n,e);t.exported.directives.forEach(t=>{a.compilation.directives.add(t),a.exported.directives.add(t)}),t.exported.pipes.forEach(t=>{a.compilation.pipes.add(t),a.exported.pipes.add(t)})}else Wt(n)?a.exported.pipes.add(n):a.exported.directives.add(n)}),n.transitiveCompileScopes=a,a}function Gb(t){return function(t){return void 0!==t.ngModule}(t)?t.ngModule:t}function Vb(t){return!!$t(t)}function zb(t,e){let n=null;!function(t,e){Cu(e)&&(Iu.set(t,e),Nu.add(t))}(t,e),Object.defineProperty(t,Nt,{get:()=>{const a=W();if(null===n){if(Cu(e)){const n=[`Component '${t.name}' is not resolved:`];throw e.templateUrl&&n.push(` - templateUrl: ${e.templateUrl}`),e.styleUrls&&e.styleUrls.length&&n.push(` - styleUrls: ${JSON.stringify(e.styleUrls)}`),n.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(n.join("\n"))}const r=e.templateUrl||`ng:///${t.name}/template.html`,i=Object.assign({},Hb(t,e),{typeSourceSpan:a.createParseSourceSpan("Component",t.name,r),template:e.template||"",preserveWhitespaces:e.preserveWhitespaces||!1,styles:e.styles||It,animations:e.animations,directives:[],changeDetection:e.changeDetection,pipes:new Map,encapsulation:e.encapsulation||Ot.Emulated,interpolation:e.interpolation,viewProviders:e.viewProviders||null});if(i.usesInheritance&&Ub(t),n=a.compileComponent(Ib,r,i),Ab(),void 0!==t.ngSelectorScope){const e=Fb(t.ngSelectorScope);jb(n,e)}}return n},configurable:!1}),bo(t)}function Bb(t,e){let n=null;Object.defineProperty(t,Ct,{get:()=>{if(null===n){const a=t&&t.name,r=`ng:///${a}/ngDirectiveDef.js`,i=W(),s=Hb(t,e);s.typeSourceSpan=i.createParseSourceSpan("Directive",a,r),s.usesInheritance&&Ub(t),n=i.compileDirective(Ib,r,s)}return n},configurable:!1}),bo(t)}function Yb(t){return Object.getPrototypeOf(t.prototype)===Object.prototype}function Hb(t,e){const n=ho().ownPropMetadata(t);return{name:t.name,type:t,typeArgumentCount:0,selector:e.selector,deps:go(t),host:e.host||St,propMetadata:n,inputs:e.inputs||It,outputs:e.outputs||It,queries:Zb(t,n,Jb),lifecycle:{usesOnChanges:t.prototype.hasOwnProperty("ngOnChanges")},typeSourceSpan:null,usesInheritance:!Yb(t),exportAs:(a=e.exportAs,void 0===a?null:a.split(",").map(t=>t.trim())),providers:e.providers||null,viewQueries:Zb(t,n,Qb)};var a}function Ub(t){const e=Object.prototype;let n=Object.getPrototypeOf(t);for(;n&&n!==e;){if(!Ut(n)&&!Ht(n)&&!Kt(n)){const t=Kb(n);t&&Wb(n,t)}n=Object.getPrototypeOf(n)}}function Wb(t,e){let n=null;Object.defineProperty(t,Et,{get:()=>{if(null===n){const a=`ng://${t&&t.name}/ngBaseDef.js`,r=W();n=r.compileBase(Ib,a,e)}return n},configurable:!1})}function Kb(t){const e=ho().ownPropMetadata(t),n=Zb(t,e,Qb),a=Zb(t,e,Jb);let r,i,s=!1;for(const o in e)e[o].forEach(t=>{const e=t.ngMetadataName;"Input"===e?(r=r||{},r[o]=t.bindingPropertyName?[t.bindingPropertyName,o]:o):"Output"===e?(i=i||{},i[o]=t.bindingPropertyName||o):"HostBinding"!==e&&"HostListener"!==e||(s=!0)});return r||i||n.length||a.length||s?{name:t.name,type:t,inputs:r,outputs:i,viewQueries:n,queries:a,propMetadata:e}:null}function $b(t,e){return{propertyName:t,predicate:(n=e.selector,"string"==typeof n?n.split(",").map(t=>t.trim()):V(n)),descendants:e.descendants,first:e.first,read:e.read?e.read:null,static:!!e.static};var n}function Zb(t,e,n){const a=[];for(const r in e)if(e.hasOwnProperty(r)){const i=e[r];i.forEach(e=>{if(n(e)){if(!e.selector)throw new Error(`Can't construct a query for the property "${r}" of `+`"${xn(t)}" since the query selector wasn't defined.`);if(i.some(Xb))throw new Error("Cannot combine @Input decorators with query decorators");a.push($b(r,e))}})}return a}function Jb(t){const e=t.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function Qb(t){const e=t.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function Xb(t){return"Input"===t.ngMetadataName}function tm(t,e){let n=null;Object.defineProperty(t,Rt,{get:()=>{if(null===n){const a=t.name;n=W().compilePipe(Ib,`ng:///${a}/ngPipeDef.js`,{type:t,typeArgumentCount:0,name:a,deps:go(t),pipeName:e.name,pure:void 0===e.pure||e.pure})}return n},configurable:!1})}const em=y("Directive",(t={})=>t,void 0,void 0,(t,e)=>fm(t,e)),nm=y("Component",(t={})=>Object.assign({changeDetection:xt.Default},t),em,void 0,(t,e)=>cm(t,e)),am=y("Pipe",t=>Object.assign({pure:!0},t),void 0,void 0,(t,e)=>hm(t,e)),rm=_("Input",t=>({bindingPropertyName:t})),im=_("Output",t=>({bindingPropertyName:t})),sm=_("HostBinding",t=>({hostPropertyName:t})),om=_("HostListener",(t,e)=>({eventName:t,args:e})),um=zb,dm=Bb,lm=tm,cm=Wc,fm=Wc,hm=Wc,gm=y("NgModule",t=>t,void 0,void 0,(t,e)=>bm(t,e)),pm=Eb,bm=function(t,e){let n=e&&e.imports||[];e&&e.exports&&(n=[...n,e.exports]),t.ngInjectorDef=L({factory:wo(t,{useClass:t}),providers:e&&e.providers,imports:n})},mm=new K("Application Initializer");class ym{constructor(t){this.appInits=t,this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}runInitializers(){if(this.initialized)return;const t=[],e=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let n=0;n<this.appInits.length;n++){const e=this.appInits[n]();tl(e)&&t.push(e)}Promise.all(t).then(()=>{e()}).catch(t=>{this.reject(t)}),0===t.length&&e(),this.initialized=!0}}const vm=new K("AppId");function xm(){return`${Tm()}${Tm()}${Tm()}`}const _m={provide:vm,useFactory:xm,deps:[]};function Tm(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const Om=new K("Platform Initializer"),wm=new K("Platform ID"),Sm=new K("appBootstrapListener"),Im=new K("Application Packages Root URL");class Nm{log(t){console.log(t)}warn(t){console.warn(t)}}const Cm=new K("LocaleId"),Rm=new K("Translations"),Am=new K("TranslationsFormat"),km=function(){var t={Error:0,Warning:1,Ignore:2};return t[t.Error]="Error",t[t.Warning]="Warning",t[t.Ignore]="Ignore",t}(),Em=!0,Lm=!1;class Dm{constructor(t,e){this.ngModuleFactory=t,this.componentFactories=e}}function Pm(){throw new Error("Runtime compiler is not loaded")}const Mm=function(t){return new Dp(t)},qm=Pm,jm=function(t){return Promise.resolve(Mm(t))},Fm=Pm,Gm=function(t){const e=Mm(t),n=In($t(t).declarations).reduce((t,e)=>{const n=Ht(e);return n&&t.push(new Ig(n)),t},[]);return new Dm(e,n)},Vm=Pm,zm=function(t){return Promise.resolve(Gm(t))},Bm=Pm;class Ym{constructor(){this.compileModuleSync=qm,this.compileModuleAsync=Fm,this.compileModuleAndAllComponentsSync=Vm,this.compileModuleAndAllComponentsAsync=Bm}clearCache(){}clearCacheFor(t){}getModuleId(t){}}const Hm=new K("compilerOptions");class Um{}let Wm,Km;function $m(){const t=U.wtf;return!(!t||(Wm=t.trace,!Wm)||(Km=Wm.events,0))}function Zm(t,e=null){return Km.createScope(t,e)}function Jm(t,e){return Wm.leaveScope(t,e),e}function Qm(t,e){return Wm.beginTimeRange(t,e)}function Xm(t){Wm.endTimeRange(t)}const ty=$m();function ey(t,e){return null}const ny=ty?Zm:(t,e)=>ey,ay=ty?Jm:(t,e)=>e,ry=ty?Qm:(t,e)=>null,iy=ty?Xm:t=>null,sy=(()=>Promise.resolve(0))();function oy(t){"undefined"==typeof Zone?sy.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}class uy{constructor({enableLongStackTrace:t=!1}){if(this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb(!1),this.onMicrotaskEmpty=new tb(!1),this.onStable=new tb(!1),this.onError=new tb(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");var e;Zone.assertZonePatched(),this._nesting=0,this._outer=this._inner=Zone.current,Zone.wtfZoneSpec&&(this._inner=this._inner.fork(Zone.wtfZoneSpec)),Zone.TaskTrackingZoneSpec&&(this._inner=this._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(this._inner=this._inner.fork(Zone.longStackTraceZoneSpec)),(e=this)._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(t,n,a,r,i,s)=>{try{return fy(e),t.invokeTask(a,r,i,s)}finally{hy(e)}},onInvoke:(t,n,a,r,i,s,o)=>{try{return fy(e),t.invoke(a,r,i,s,o)}finally{hy(e)}},onHasTask:(t,n,a,r)=>{t.hasTask(a,r),n===a&&("microTask"==r.change?(e.hasPendingMicrotasks=r.microTask,cy(e)):"macroTask"==r.change&&(e.hasPendingMacrotasks=r.macroTask))},onHandleError:(t,n,a,r)=>(t.handleError(a,r),e.runOutsideAngular(()=>e.onError.emit(r)),!1)})}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!uy.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(uy.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(t,e,n){return this._inner.run(t,e,n)}runTask(t,e,n,a){const r=this._inner,i=r.scheduleEventTask("NgZoneEvent: "+a,t,ly,dy,dy);try{return r.runTask(i,e,n)}finally{r.cancelTask(i)}}runGuarded(t,e,n){return this._inner.runGuarded(t,e,n)}runOutsideAngular(t){return this._outer.run(t)}}function dy(){}const ly={};function cy(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function fy(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function hy(t){t._nesting--,cy(t)}class gy{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb,this.onMicrotaskEmpty=new tb,this.onStable=new tb,this.onError=new tb}run(t){return t()}runGuarded(t){return t()}runOutsideAngular(t){return t()}runTask(t){return t()}}class py{constructor(t){this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?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:()=>{uy.assertNotInAngularZone(),oy(()=>{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())oy(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(e=>!e.updateCb||!e.updateCb(t)||(clearTimeout(e.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,e,n){let a=-1;e&&e>0&&(a=setTimeout(()=>{this._callbacks=this._callbacks.filter(t=>t.timeoutId!==a),t(this._didWork,this.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:a,updateCb:n})}whenStable(t,e,n){if(n&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(t,e,n),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(t,e,n){return[]}}class by{constructor(){this._applications=new Map,xy.addToWindow(this)}registerApplication(t,e){this._applications.set(t,e)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,e=!0){return xy.findTestabilityInTree(this,t,e)}}class my{addToWindow(t){}findTestabilityInTree(t,e,n){return null}}function yy(t){xy=t}let vy,xy=new my;function _y(t,e,n){const a=new Dp(n);if(0===Iu.size)return Promise.resolve(a);const r=function(t){const e=[];return t.forEach(t=>t&&e.push(...t)),e}(t.get(Hm,[]).concat(e).map(t=>t.providers));if(0===r.length)return Promise.resolve(a);const i=W(),s=Bo.create({providers:r}).get(i.ResourceLoader);return Su(t=>Promise.resolve(s.get(t))).then(()=>a)}function Ty(t){return t.isBoundToModule}const Oy=new K("AllowMultipleToken");class wy{constructor(t,e){this.name=t,this.token=e}}function Sy(t){if(vy&&!vy.destroyed&&!vy.injector.get(Oy,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");vy=t.get(Ay);const e=t.get(Om,null);return e&&e.forEach(t=>t()),vy}function Iy(t,e,n=[]){const a=`Platform: ${e}`,r=new K(a);return(e=[])=>{let i=Ry();if(!i||i.injector.get(Oy,!1))if(t)t(n.concat(e).concat({provide:r,useValue:!0}));else{const t=n.concat(e).concat({provide:r,useValue:!0});Sy(Bo.create({providers:t,name:a}))}return Ny(r)}}function Ny(t){const e=Ry();if(!e)throw new Error("No platform exists!");if(!e.injector.get(t,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return e}function Cy(){vy&&!vy.destroyed&&vy.destroy()}function Ry(){return vy&&!vy.destroyed?vy:null}class Ay{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,e){const n=function(t){let e;return e="noop"===t?new gy:("zone.js"===t?void 0:t)||new uy({enableLongStackTrace:Wa()}),e}(e?e.ngZone:void 0),a=[{provide:uy,useValue:n}];return n.run(()=>{const e=Bo.create({providers:a,parent:this.injector,name:t.moduleType.name}),r=t.create(e),i=r.injector.get(Da,null);if(!i)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return Lm&&Ip(r.injector.get(Cm,Dg)||Dg),r.onDestroy(()=>Ly(this._modules,r)),n.runOutsideAngular(()=>n.onError.subscribe({next:t=>{i.handleError(t)}})),function(t,e,n){try{const a=n();return tl(a)?a.catch(n=>{throw e.runOutsideAngular(()=>t.handleError(n)),n}):a}catch(a){throw e.runOutsideAngular(()=>t.handleError(a)),a}}(i,n,()=>{const t=r.injector.get(ym);return t.runInitializers(),t.donePromise.then(()=>(this._moduleDoBootstrap(r),r))})})}bootstrapModule(t,e=[]){const n=ky({},e);return function(t,e,n){return t.get(Um).createCompiler([e]).compileModuleAsync(n)}(this.injector,n,t).then(t=>this.bootstrapModuleFactory(t,n))}_moduleDoBootstrap(t){const e=t.injector.get(Ey);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(t=>e.bootstrap(t));else{if(!t.instance.ngDoBootstrap)throw new Error(`The module ${j(t.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. `+"Please define one of these.");t.instance.ngDoBootstrap(e)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(t=>t.destroy()),this._destroyListeners.forEach(t=>t()),this._destroyed=!0}get destroyed(){return this._destroyed}}function ky(t,e){return Array.isArray(e)?e.reduce(ky,t):Object.assign({},t,e)}let Ey=(()=>{class t{constructor(t,e,n,a,r,o){this._zone=t,this._console=e,this._injector=n,this._exceptionHandler=a,this._componentFactoryResolver=r,this._initStatus=o,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=Wa(),this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const d=new i.a(t=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{t.next(this._stable),t.complete()})}),l=new i.a(t=>{let e;this._zone.runOutsideAngular(()=>{e=this._zone.onStable.subscribe(()=>{uy.assertNotInAngularZone(),oy(()=>{this._stable||this._zone.hasPendingMacrotasks||this._zone.hasPendingMicrotasks||(this._stable=!0,t.next(!0))})})});const n=this._zone.onUnstable.subscribe(()=>{uy.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{t.next(!1)}))});return()=>{e.unsubscribe(),n.unsubscribe()}});this.isStable=Object(s.a)(d,l.pipe(t=>{return u()((e=g,function(t){let n;n="function"==typeof e?e:function(){return e};const a=Object.create(t,f);return a.source=t,a.subjectFactory=n,a})(t));var e}))}bootstrap(t,e){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let n;n=t instanceof Gc?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);const a=n instanceof Uc?null:this._injector.get(ft),r=n.create(Bo.NULL,[],e||n.selector,a);r.onDestroy(()=>{this._unloadComponent(r)});const i=r.injector.get(py,null);return i&&r.injector.get(by).registerApplication(r.location.nativeElement,i),this._loadComponent(r),Wa()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),r}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");const e=t._tickScope();try{this._runningTick=!0;for(let t of this._views)t.detectChanges();if(this._enforceNoNewChanges)for(let t of this._views)t.checkNoChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1,ay(e)}}attachView(t){const e=t;this._views.push(e),e.attachToAppRef(this)}detachView(t){const e=t;Ly(this._views,e),e.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(Sm,[]).concat(this._bootstrapListeners).forEach(e=>e(t))}_unloadComponent(t){this.detachView(t.hostView),Ly(this.components,t)}ngOnDestroy(){this._views.slice().forEach(t=>t.destroy())}get viewCount(){return this._views.length}}return t._tickScope=ny("ApplicationRef#tick()"),t})();function Ly(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}class Dy{}function Py(t){const e=kp(t);if(!e)throw jy(t);return e}function My(t){const e=kp(t);if(!e)throw jy(t);return new Dp(e)}const qy=Py;function jy(t){return new Error(`No module with ID ${t} loaded`)}class Fy{}const Gy={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};class Vy{constructor(t,e){this._compiler=t,this._config=e||Gy}load(t){return!Lm&&this._compiler instanceof Ym?this.loadFactory(t):this.loadAndCompile(t)}loadAndCompile(t){let[e,a]=t.split("#");return void 0===a&&(a="default"),n("crnd")(e).then(t=>t[a]).then(t=>zy(t,e,a)).then(t=>this._compiler.compileModuleAsync(t))}loadFactory(t){let[e,a]=t.split("#"),r="NgFactory";return void 0===a&&(a="default",r=""),n("crnd")(this._config.factoryPathPrefix+e+this._config.factoryPathSuffix).then(t=>t[a+r]).then(t=>zy(t,e,a))}}function zy(t,e,n){if(!t)throw new Error(`Cannot find '${n}' in '${e}'`);return t}class By extends Xs{}class Yy extends By{}class Hy{constructor(t,e){this.name=t,this.callback=e}}class Uy{constructor(t,e,n){this.listeners=[],this.parent=null,this._debugContext=n,this.nativeNode=t,e&&e instanceof Wy&&e.addChild(this)}get injector(){return this._debugContext.injector}get componentInstance(){return this._debugContext.component}get context(){return this._debugContext.context}get references(){return this._debugContext.references}get providerTokens(){return this._debugContext.providerTokens}}class Wy extends Uy{constructor(t,e,n){super(t,e,n),this.properties={},this.attributes={},this.classes={},this.styles={},this.childNodes=[],this.nativeElement=t}addChild(t){t&&(this.childNodes.push(t),t.parent=this)}removeChild(t){const e=this.childNodes.indexOf(t);-1!==e&&(t.parent=null,this.childNodes.splice(e,1))}insertChildrenAfter(t,e){const n=this.childNodes.indexOf(t);-1!==n&&(this.childNodes.splice(n+1,0,...e),e.forEach(e=>{e.parent&&e.parent.removeChild(e),t.parent=this}))}insertBefore(t,e){const n=this.childNodes.indexOf(t);-1===n?this.addChild(e):(e.parent&&e.parent.removeChild(e),e.parent=this,this.childNodes.splice(n,0,e))}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return function t(e,n,a){e.childNodes.forEach(e=>{e instanceof Wy&&(n(e)&&a.push(e),t(e,n,a))})}(this,t,e),e}queryAllNodes(t){const e=[];return function t(e,n,a){e instanceof Wy&&e.childNodes.forEach(e=>{n(e)&&a.push(e),e instanceof Wy&&t(e,n,a)})}(this,t,e),e}get children(){return this.childNodes.filter(t=>t instanceof Wy)}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name==t&&n.callback(e)})}}function Ky(t){return t.map(t=>t.nativeElement)}class $y{constructor(t){this.nativeNode=t}get parent(){const t=this.nativeNode.parentNode;return t?new Zy(t):null}get injector(){return ic(this.nativeNode)}get componentInstance(){const t=this.nativeNode;return t&&(ec(t)||ac(t))}get context(){return ec(this.nativeNode)||nc(this.nativeNode)}get listeners(){return cc(this.nativeNode).filter(lc)}get references(){return function(t){const e=oc(t);return void 0===e.localRefs&&(e.localRefs=function(t,e){const n=t[1].data[e];if(n&&n.localNames){const e={};let a=n.index+1;for(let r=0;r<n.localNames.length;r+=2)e[n.localNames[r]]=t[a],a++;return e}return null}(e.lView,e.nodeIndex)),e.localRefs||{}}(this.nativeNode)}get providerTokens(){return function(t){const e=oc(t,!1);if(!e)return[];const n=e.lView[1],a=n.data[e.nodeIndex],r=[],i=a.directiveEnd;for(let o=65535&a.providerIndexes;o<i;o++){let t=n.data[o];void 0!==(s=t).type&&void 0!==s.template&&void 0!==s.declaredInputs&&(t=t.type),r.push(t)}var s;return r}(this.nativeNode)}}class Zy extends $y{constructor(t){super(t)}get nativeElement(){return this.nativeNode.nodeType==Node.ELEMENT_NODE?this.nativeNode:null}get name(){return this.nativeElement.nodeName}get properties(){const t=oc(this.nativeNode),e=t.lView,n=e[1].data,a=n[t.nodeIndex],r=function(t,e,n){const a={};let r=function(t,e){let n=t-1,a=e[n];for(;"string"==typeof a&&!Sn(a);)a=e[--n];return n+1}(t.propertyMetadataStartIndex,n);for(;r<t.propertyMetadataEndIndex;){let t,i=n[r];for(;!Sn(i);)t=(t||"")+vn(e[r])+n[r],i=n[++r];t=void 0===t?e[r]:t+=e[r];const s=i.split("�"),o=s[0];o&&(a[o]=s[1]&&s[2]?s[1]+t+s[2]:t),r++}return a}(a,e,n),i=function(t,e,n){const a={};let r=t.directiveEnd,i=n[r];for(;"string"==typeof i;)a[i.split("�")[0]]=e[r],i=n[++r];return a}(a,e,n),s=function(t){const e=t.classes;let n="";for(const a of Object.keys(e))e[a]&&(n=n?n+` ${a}`:a);return n}(this),o=Object.assign({},r,i);return s&&(o.className=o.className?o.className+` ${s}`:s),o}get attributes(){const t={},e=this.nativeElement;if(!e)return t;const n=oc(e),a=n.lView[1].data[n.nodeIndex].attrs,r=[];if(a){let e=0;for(;e<a.length;){const n=a[e];if("string"!=typeof n)break;t[n]=a[e+1],r.push(n.toLowerCase()),e+=2}}const i=e.attributes;for(let s=0;s<i.length;s++){const e=i[s];-1===r.indexOf(e.name)&&(t[e.name]=e.value)}return t}get styles(){return Jy(this.nativeElement,!1)}get classes(){return Jy(this.nativeElement,!0)}get childNodes(){const t=this.nativeNode.childNodes,e=[];for(let n=0;n<t.length;n++)e.push(av(t[n]));return e}get children(){const t=this.nativeElement;if(!t)return[];const e=t.children,n=[];for(let a=0;a<e.length;a++)n.push(av(e[a]));return n}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return Qy(this,t,e,!0),e}queryAllNodes(t){const e=[];return Qy(this,t,e,!1),e}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name===t&&n.callback(e)})}}function Jy(t,e){if(t){const n=dc(t),a=n.lView,r=a[1].data[n.nodeIndex];return e?Un(r.classes)?new Ti(r.classes,a,!0).values:_i(r.classes):Un(r.styles)?new Ti(r.styles,a,!1).values:_i(r.styles)}return{}}function Qy(t,e,n,a){const r=oc(t.nativeNode);Xy(r.lView[1].data[r.nodeIndex],r.lView,e,n,a,t.nativeNode)}function Xy(t,e,n,a,r,i){const s=me(t,e);if(3===t.type||4===t.type){if(ev(s,n,a,r,i),Xt(t)){const s=xe(t.index,e);s&&s[1].firstChild&&Xy(s[1].firstChild,s,n,a,r,i)}else t.child&&Xy(t.child,e,n,a,r,i),s&&function t(e,n,a,r){const i=e.childNodes,s=i.length;for(let o=0;o<s;o++){const e=i[o],s=rv(e);s&&(r&&s instanceof Zy&&n(s)&&-1===a.indexOf(s)?a.push(s):!r&&n(s)&&-1===a.indexOf(s)&&a.push(s),t(e,n,a,r))}}(s,n,a,r);const o=e[t.index];Jt(o)&&tv(o,n,a,r,i)}else if(0===t.type){const s=e[t.index];ev(s[7],n,a,r,i),tv(s,n,a,r,i)}else if(1===t.type){const s=la(e),o=s[6].projection[t.projection];if(Array.isArray(o))for(let t of o)ev(t,n,a,r,i);else if(o){const t=s[3];Xy(t[1].data[o.index],t,n,a,r,i)}}else t.child&&Xy(t.child,e,n,a,r,i);if(i!==s){const s=2&t.flags?t.projectionNext:t.next;s&&Xy(s,e,n,a,r,i)}}function tv(t,e,n,a,r){for(let i=9;i<t.length;i++){const s=t[i];Xy(s[1].node,s,e,n,a,r)}}function ev(t,e,n,a,r){if(r!==t){const r=rv(t);if(!r)return;a&&r instanceof Zy&&e(r)&&-1===n.indexOf(r)?n.push(r):!a&&e(r)&&-1===n.indexOf(r)&&n.push(r)}}const nv=new Map;function av(t){return t instanceof Node?(t.hasOwnProperty("__ng_debug__")||(t.__ng_debug__=t.nodeType==Node.ELEMENT_NODE?new Zy(t):new $y(t)),t.__ng_debug__):null}const rv=function(t){return nv.get(t)||null};function iv(t){nv.set(t.nativeNode,t)}const sv=Uy,ov=Wy,uv=Iy(null,"core",[{provide:wm,useValue:"unknown"},{provide:Ay,deps:[Bo]},{provide:by,deps:[]},{provide:Nm,deps:[]}]);function dv(){return Tf}function lv(){return Of}function cv(t){return t?(Lm&&Ip(t),t):Dg}const fv=[{provide:Ey,useClass:Ey,deps:[uy,Nm,Bo,Da,Yc,ym]},{provide:Sg,deps:[uy],useFactory:hv},{provide:ym,useClass:ym,deps:[[new O,mm]]},{provide:Ym,useClass:Ym,deps:[]},_m,{provide:vf,useFactory:dv,deps:[]},{provide:xf,useFactory:lv,deps:[]},{provide:Cm,useFactory:cv,deps:[[new T(Cm),new O,new S]]}];function hv(t){let e=[];return t.onStable.subscribe(()=>{for(;e.length;)e.pop()()}),function(t){e.push(t)}}class gv{constructor(t){}}function pv(t,e,n,a,r,i){t|=1;const{matchedQueries:s,references:o,matchedQueryIds:u}=sh(e);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,flags:t,checkIndex:-1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:s,matchedQueryIds:u,references:o,ngContentIndex:n,childCount:a,bindings:[],bindingFlags:0,outputs:[],element:{ns:null,name:null,attrs:null,template:i?lh(i):null,componentProvider:null,componentView:null,componentRendererType:null,publicProviders:null,allProviders:null,handleEvent:r||zf},provider:null,text:null,query:null,ngContent:null}}function bv(t,e,n,a,r,i,s=[],o,u,d,l,c){d||(d=zf);const{matchedQueries:f,references:h,matchedQueryIds:g}=sh(n);let p=null,b=null;i&&([p,b]=mh(i)),o=o||[];const m=new Array(o.length);for(let x=0;x<o.length;x++){const[t,e,n]=o[x],[a,r]=mh(e);let i=void 0,s=void 0;switch(15&t){case 4:s=n;break;case 1:case 8:i=n}m[x]={flags:t,ns:a,name:r,nonMinifiedName:r,securityContext:i,suffix:s}}u=u||[];const y=new Array(u.length);for(let x=0;x<u.length;x++){const[t,e]=u[x];y[x]={type:0,target:t,eventName:e,propName:null}}const v=(s=s||[]).map(([t,e])=>{const[n,a]=mh(t);return[n,a,e]});return c=function(t){if(t&&"$$undefined"===t.id){const e=null!=t.encapsulation&&t.encapsulation!==Ot.None||t.styles.length||Object.keys(t.data).length;t.id=e?`c${Wf++}`:"$$empty"}return t&&"$$empty"===t.id&&(t=null),t||null}(c),l&&(e|=33554432),{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e|=1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:f,matchedQueryIds:g,references:h,ngContentIndex:a,childCount:r,bindings:m,bindingFlags:yh(m),outputs:y,element:{ns:p,name:b,attrs:v,template:null,componentProvider:null,componentView:l||null,componentRendererType:c,publicProviders:null,allProviders:null,handleEvent:d||zf},provider:null,text:null,query:null,ngContent:null}}function mv(t,e,n){const a=n.element,r=t.root.selectorOrNode,i=t.renderer;let s;if(t.parent||!r){s=a.name?i.createElement(a.name,a.ns):i.createComment("");const r=uh(t,e,n);r&&i.appendChild(r,s)}else s=i.selectRootElement(r,!!a.componentRendererType&&a.componentRendererType.encapsulation===Ot.ShadowDom);if(a.attrs)for(let o=0;o<a.attrs.length;o++){const[t,e,n]=a.attrs[o];i.setAttribute(s,e,n,t)}return s}function yv(t,e,n,a){for(let s=0;s<n.outputs.length;s++){const o=n.outputs[s],u=vv(t,n.nodeIndex,(i=o.eventName,(r=o.target)?`${r}:${i}`:i));let d=o.target,l=t;"component"===o.target&&(d=null,l=e);const c=l.renderer.listen(d||a,o.eventName,u);t.disposables[n.outputIndex+s]=c}var r,i}function vv(t,e,n){return a=>Xf(t,e,n,a)}function xv(t,e,n,a){if(!$f(t,e,n,a))return!1;const r=e.bindings[n],i=Mf(t,e.nodeIndex),s=i.renderElement,o=r.name;switch(15&r.flags){case 1:!function(t,e,n,a,r,i){const s=e.securityContext;let o=s?t.root.sanitizer.sanitize(s,i):i;o=null!=o?o.toString():null;const u=t.renderer;null!=i?u.setAttribute(n,r,o,a):u.removeAttribute(n,r,a)}(t,r,s,r.ns,o,a);break;case 2:!function(t,e,n,a){const r=t.renderer;a?r.addClass(e,n):r.removeClass(e,n)}(t,s,o,a);break;case 4:!function(t,e,n,a,r){let i=t.root.sanitizer.sanitize(yr.STYLE,r);if(null!=i){i=i.toString();const t=e.suffix;null!=t&&(i+=t)}else i=null;const s=t.renderer;null!=i?s.setStyle(n,a,i):s.removeStyle(n,a)}(t,r,s,o,a);break;case 8:!function(t,e,n,a,r){const i=e.securityContext;let s=i?t.root.sanitizer.sanitize(i,r):r;t.renderer.setProperty(n,a,s)}(33554432&e.flags&&32&r.flags?i.componentView:t,r,s,o,a)}return!0}function _v(t,e,n){let a=[];for(let r in n)a.push({propName:r,bindingType:n[r]});return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,ngContentIndex:-1,matchedQueries:{},matchedQueryIds:0,references:{},childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:{id:e,filterId:ih(e),bindings:a},ngContent:null}}function Tv(t){const e=t.def.nodeMatchedQueries;for(;t.parent&&rh(t);){let n=t.parentNodeDef;t=t.parent;const a=n.nodeIndex+n.childCount;for(let r=0;r<=a;r++){const a=t.def.nodes[r];67108864&a.flags&&536870912&a.flags&&(a.query.filterId&e)===a.query.filterId&&Ff(t,r).setDirty(),!(1&a.flags&&r+a.childCount<n.nodeIndex)&&67108864&a.childFlags&&536870912&a.childFlags||(r+=a.childCount)}}if(134217728&t.def.nodeFlags)for(let n=0;n<t.def.nodes.length;n++){const e=t.def.nodes[n];134217728&e.flags&&536870912&e.flags&&Ff(t,n).setDirty(),n+=e.childCount}}function Ov(t,e){const n=Ff(t,e.nodeIndex);if(!n.dirty)return;let a,r=void 0;if(67108864&e.flags){const n=e.parent.parent;r=wv(t,n.nodeIndex,n.nodeIndex+n.childCount,e.query,[]),a=qf(t,e.parent.nodeIndex).instance}else 134217728&e.flags&&(r=wv(t,0,t.def.nodes.length-1,e.query,[]),a=t.component);n.reset(r);const i=e.query.bindings;let s=!1;for(let o=0;o<i.length;o++){const t=i[o];let e;switch(t.bindingType){case 0:e=n.first;break;case 1:e=n,s=!0}a[t.propName]=e}s&&n.notifyOnChanges()}function wv(t,e,n,a,r){for(let i=e;i<=n;i++){const e=t.def.nodes[i],n=e.matchedQueries[a.id];if(null!=n&&r.push(Sv(t,e,n)),1&e.flags&&e.element.template&&(e.element.template.nodeMatchedQueries&a.filterId)===a.filterId){const n=Mf(t,i);if((e.childMatchedQueries&a.filterId)===a.filterId&&(wv(t,i+1,i+e.childCount,a,r),i+=e.childCount),16777216&e.flags){const t=n.viewContainer._embeddedViews;for(let e=0;e<t.length;e++){const i=t[e],s=th(i);s&&s===n&&wv(i,0,i.def.nodes.length-1,a,r)}}const s=n.template._projectedViews;if(s)for(let t=0;t<s.length;t++){const e=s[t];wv(e,0,e.def.nodes.length-1,a,r)}}(e.childMatchedQueries&a.filterId)!==a.filterId&&(i+=e.childCount)}return r}function Sv(t,e,n){if(null!=n)switch(n){case 1:return Mf(t,e.nodeIndex).renderElement;case 0:return new Kc(Mf(t,e.nodeIndex).renderElement);case 2:return Mf(t,e.nodeIndex).template;case 3:return Mf(t,e.nodeIndex).viewContainer;case 4:return qf(t,e.nodeIndex).instance}}function Iv(t,e){return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:8,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:t,childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:null,ngContent:{index:e}}}function Nv(t,e,n){const a=uh(t,e,n);a&&hh(t,n.ngContent.index,1,a,null,void 0)}function Cv(t,e){return kv(128,t,new Array(e+1))}function Rv(t,e){return kv(32,t,new Array(e))}function Av(t,e){const n=Object.keys(e),a=n.length,r=new Array(a);for(let i=0;i<a;i++){const t=n[i];r[e[t]]=t}return kv(64,t,r)}function kv(t,e,n){const a=new Array(n.length);for(let r=0;r<n.length;r++){const t=n[r];a[r]={flags:8,name:t,ns:null,nonMinifiedName:t,securityContext:null,suffix:null}}return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:e,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:-1,childCount:0,bindings:a,bindingFlags:yh(a),outputs:[],element:null,provider:null,text:null,query:null,ngContent:null}}function Ev(t,e,n){const a=new Array(n.length-1);for(let r=1;r<n.length;r++)a[r-1]={flags:8,name:null,ns:null,nonMinifiedName:null,securityContext:null,suffix:n[r]};return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:2,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:e,childCount:0,bindings:a,bindingFlags:8,outputs:[],element:null,provider:null,text:{prefix:n[0]},query:null,ngContent:null}}function Lv(t,e,n){let a;const r=t.renderer;a=r.createText(n.text.prefix);const i=uh(t,e,n);return i&&r.appendChild(i,a),{renderText:a}}function Dv(t,e){return(null!=t?t.toString():"")+e.suffix}function Pv(t,e,n,a){let r=0,i=0,s=0,o=0,u=0,d=null,l=null,c=!1,f=!1,h=null;for(let g=0;g<e.length;g++){const t=e[g];if(t.nodeIndex=g,t.parent=d,t.bindingIndex=r,t.outputIndex=i,t.renderParent=l,s|=t.flags,u|=t.matchedQueryIds,t.element){const e=t.element;e.publicProviders=d?d.element.publicProviders:Object.create(null),e.allProviders=e.publicProviders,c=!1,f=!1,t.element.template&&(u|=t.element.template.nodeMatchedQueries)}if(qv(d,t,e.length),r+=t.bindings.length,i+=t.outputs.length,!l&&3&t.flags&&(h=t),20224&t.flags){c||(c=!0,d.element.publicProviders=Object.create(d.element.publicProviders),d.element.allProviders=d.element.publicProviders);const e=0!=(32768&t.flags);0==(8192&t.flags)||e?d.element.publicProviders[Yf(t.provider.token)]=t:(f||(f=!0,d.element.allProviders=Object.create(d.element.publicProviders)),d.element.allProviders[Yf(t.provider.token)]=t),e&&(d.element.componentProvider=t)}if(d?(d.childFlags|=t.flags,d.directChildFlags|=t.flags,d.childMatchedQueries|=t.matchedQueryIds,t.element&&t.element.template&&(d.childMatchedQueries|=t.element.template.nodeMatchedQueries)):o|=t.flags,t.childCount>0)d=t,Mv(t)||(l=t);else for(;d&&g===d.nodeIndex+d.childCount;){const t=d.parent;t&&(t.childFlags|=d.childFlags,t.childMatchedQueries|=d.childMatchedQueries),d=t,l=d&&Mv(d)?d.renderParent:d}}return{factory:null,nodeFlags:s,rootNodeFlags:o,nodeMatchedQueries:u,flags:t,nodes:e,updateDirectives:n||zf,updateRenderer:a||zf,handleEvent:(t,n,a,r)=>e[n].element.handleEvent(t,a,r),bindingCount:r,outputCount:i,lastRenderRootNode:h}}function Mv(t){return 0!=(1&t.flags)&&null===t.element.name}function qv(t,e,n){const a=e.element&&e.element.template;if(a){if(!a.lastRenderRootNode)throw new Error("Illegal State: Embedded templates without nodes are not allowed!");if(a.lastRenderRootNode&&16777216&a.lastRenderRootNode.flags)throw new Error(`Illegal State: Last root node of a template can't have embedded views, at index ${e.nodeIndex}!`)}if(20224&e.flags&&0==(1&(t?t.flags:0)))throw new Error(`Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index ${e.nodeIndex}!`);if(e.query){if(67108864&e.flags&&(!t||0==(16384&t.flags)))throw new Error(`Illegal State: Content Query nodes need to be children of directives, at index ${e.nodeIndex}!`);if(134217728&e.flags&&t)throw new Error(`Illegal State: View Query nodes have to be top level nodes, at index ${e.nodeIndex}!`)}if(e.childCount){const a=t?t.nodeIndex+t.childCount:n-1;if(e.nodeIndex<=a&&e.nodeIndex+e.childCount>a)throw new Error(`Illegal State: childCount of node leads outside of parent, at index ${e.nodeIndex}!`)}}function jv(t,e,n,a){const r=Vv(t.root,t.renderer,t,e,n);return zv(r,t.component,a),Bv(r),r}function Fv(t,e,n){const a=Vv(t,t.renderer,null,null,e);return zv(a,n,n),Bv(a),a}function Gv(t,e,n,a){const r=e.element.componentRendererType;let i;return i=r?t.root.rendererFactory.createRenderer(a,r):t.root.renderer,Vv(t.root,i,t,e.element.componentProvider,n)}function Vv(t,e,n,a,r){const i=new Array(r.nodes.length),s=r.outputCount?new Array(r.outputCount):null;return{def:r,parent:n,viewContainerParent:null,parentNodeDef:a,context:null,component:null,nodes:i,state:13,root:t,renderer:e,oldValues:new Array(r.bindingCount),disposables:s,initIndex:-1}}function zv(t,e,n){t.component=e,t.context=n}function Bv(t){let e;ah(t)&&(e=Mf(t.parent,t.parentNodeDef.parent.nodeIndex).renderElement);const n=t.def,a=t.nodes;for(let r=0;r<n.nodes.length;r++){const i=n.nodes[r];let s;switch(Vf.setCurrentNode(t,r),201347067&i.flags){case 1:const n=mv(t,e,i);let o=void 0;if(33554432&i.flags){const e=lh(i.element.componentView);o=Vf.createComponentView(t,i,e,n)}yv(t,o,i,n),s={renderElement:n,componentView:o,viewContainer:null,template:i.element.template?Yh(t,i):void 0},16777216&i.flags&&(s.viewContainer=Gh(t,i,s));break;case 2:s=Lv(t,e,i);break;case 512:case 1024:case 2048:case 256:s=a[r],s||4096&i.flags||(s={instance:cg(t,i)});break;case 16:s={instance:fg(t,i)};break;case 16384:s=a[r],s||(s={instance:hg(t,i)}),32768&i.flags&&zv(Mf(t,i.parent.nodeIndex).componentView,s.instance,s.instance);break;case 32:case 64:case 128:s={value:void 0};break;case 67108864:case 134217728:s=new nb;break;case 8:Nv(t,e,i),s=void 0}a[r]=s}Qv(t,Jv.CreateViewNodes),nx(t,201326592,268435456,0)}function Yv(t){Wv(t),Vf.updateDirectives(t,1),Xv(t,Jv.CheckNoChanges),Vf.updateRenderer(t,1),Qv(t,Jv.CheckNoChanges),t.state&=-97}function Hv(t){1&t.state?(t.state&=-2,t.state|=2):t.state&=-3,Lf(t,0,256),Wv(t),Vf.updateDirectives(t,0),Xv(t,Jv.CheckAndUpdate),nx(t,67108864,536870912,0);let e=Lf(t,256,512);_g(t,2097152|(e?1048576:0)),Vf.updateRenderer(t,0),Qv(t,Jv.CheckAndUpdate),nx(t,134217728,536870912,0),e=Lf(t,512,768),_g(t,8388608|(e?4194304:0)),2&t.def.flags&&(t.state&=-9),t.state&=-97,Lf(t,768,1024)}function Uv(t,e,n,a,r,i,s,o,u,d,l,c,f){return 0===n?function(t,e,n,a,r,i,s,o,u,d,l,c){switch(201347067&e.flags){case 1:return function(t,e,n,a,r,i,s,o,u,d,l,c){const f=e.bindings.length;let h=!1;return f>0&&xv(t,e,0,n)&&(h=!0),f>1&&xv(t,e,1,a)&&(h=!0),f>2&&xv(t,e,2,r)&&(h=!0),f>3&&xv(t,e,3,i)&&(h=!0),f>4&&xv(t,e,4,s)&&(h=!0),f>5&&xv(t,e,5,o)&&(h=!0),f>6&&xv(t,e,6,u)&&(h=!0),f>7&&xv(t,e,7,d)&&(h=!0),f>8&&xv(t,e,8,l)&&(h=!0),f>9&&xv(t,e,9,c)&&(h=!0),h}(t,e,n,a,r,i,s,o,u,d,l,c);case 2:return function(t,e,n,a,r,i,s,o,u,d,l,c){let f=!1;const h=e.bindings,g=h.length;if(g>0&&$f(t,e,0,n)&&(f=!0),g>1&&$f(t,e,1,a)&&(f=!0),g>2&&$f(t,e,2,r)&&(f=!0),g>3&&$f(t,e,3,i)&&(f=!0),g>4&&$f(t,e,4,s)&&(f=!0),g>5&&$f(t,e,5,o)&&(f=!0),g>6&&$f(t,e,6,u)&&(f=!0),g>7&&$f(t,e,7,d)&&(f=!0),g>8&&$f(t,e,8,l)&&(f=!0),g>9&&$f(t,e,9,c)&&(f=!0),f){let f=e.text.prefix;g>0&&(f+=Dv(n,h[0])),g>1&&(f+=Dv(a,h[1])),g>2&&(f+=Dv(r,h[2])),g>3&&(f+=Dv(i,h[3])),g>4&&(f+=Dv(s,h[4])),g>5&&(f+=Dv(o,h[5])),g>6&&(f+=Dv(u,h[6])),g>7&&(f+=Dv(d,h[7])),g>8&&(f+=Dv(l,h[8])),g>9&&(f+=Dv(c,h[9]));const p=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(p,f)}return f}(t,e,n,a,r,i,s,o,u,d,l,c);case 16384:return function(t,e,n,a,r,i,s,o,u,d,l,c){const f=qf(t,e.nodeIndex),h=f.instance;let g=!1,p=void 0;const b=e.bindings.length;return b>0&&Kf(t,e,0,n)&&(g=!0,p=xg(t,f,e,0,n,p)),b>1&&Kf(t,e,1,a)&&(g=!0,p=xg(t,f,e,1,a,p)),b>2&&Kf(t,e,2,r)&&(g=!0,p=xg(t,f,e,2,r,p)),b>3&&Kf(t,e,3,i)&&(g=!0,p=xg(t,f,e,3,i,p)),b>4&&Kf(t,e,4,s)&&(g=!0,p=xg(t,f,e,4,s,p)),b>5&&Kf(t,e,5,o)&&(g=!0,p=xg(t,f,e,5,o,p)),b>6&&Kf(t,e,6,u)&&(g=!0,p=xg(t,f,e,6,u,p)),b>7&&Kf(t,e,7,d)&&(g=!0,p=xg(t,f,e,7,d,p)),b>8&&Kf(t,e,8,l)&&(g=!0,p=xg(t,f,e,8,l,p)),b>9&&Kf(t,e,9,c)&&(g=!0,p=xg(t,f,e,9,c,p)),p&&h.ngOnChanges(p),65536&e.flags&&Df(t,256,e.nodeIndex)&&h.ngOnInit(),262144&e.flags&&h.ngDoCheck(),g}(t,e,n,a,r,i,s,o,u,d,l,c);case 32:case 64:case 128:return function(t,e,n,a,r,i,s,o,u,d,l,c){const f=e.bindings;let h=!1;const g=f.length;if(g>0&&$f(t,e,0,n)&&(h=!0),g>1&&$f(t,e,1,a)&&(h=!0),g>2&&$f(t,e,2,r)&&(h=!0),g>3&&$f(t,e,3,i)&&(h=!0),g>4&&$f(t,e,4,s)&&(h=!0),g>5&&$f(t,e,5,o)&&(h=!0),g>6&&$f(t,e,6,u)&&(h=!0),g>7&&$f(t,e,7,d)&&(h=!0),g>8&&$f(t,e,8,l)&&(h=!0),g>9&&$f(t,e,9,c)&&(h=!0),h){const h=jf(t,e.nodeIndex);let p;switch(201347067&e.flags){case 32:p=new Array(f.length),g>0&&(p[0]=n),g>1&&(p[1]=a),g>2&&(p[2]=r),g>3&&(p[3]=i),g>4&&(p[4]=s),g>5&&(p[5]=o),g>6&&(p[6]=u),g>7&&(p[7]=d),g>8&&(p[8]=l),g>9&&(p[9]=c);break;case 64:p={},g>0&&(p[f[0].name]=n),g>1&&(p[f[1].name]=a),g>2&&(p[f[2].name]=r),g>3&&(p[f[3].name]=i),g>4&&(p[f[4].name]=s),g>5&&(p[f[5].name]=o),g>6&&(p[f[6].name]=u),g>7&&(p[f[7].name]=d),g>8&&(p[f[8].name]=l),g>9&&(p[f[9].name]=c);break;case 128:const t=n;switch(g){case 1:p=t.transform(n);break;case 2:p=t.transform(a);break;case 3:p=t.transform(a,r);break;case 4:p=t.transform(a,r,i);break;case 5:p=t.transform(a,r,i,s);break;case 6:p=t.transform(a,r,i,s,o);break;case 7:p=t.transform(a,r,i,s,o,u);break;case 8:p=t.transform(a,r,i,s,o,u,d);break;case 9:p=t.transform(a,r,i,s,o,u,d,l);break;case 10:p=t.transform(a,r,i,s,o,u,d,l,c)}}h.value=p}return h}(t,e,n,a,r,i,s,o,u,d,l,c);default:throw"unreachable"}}(t,e,a,r,i,s,o,u,d,l,c,f):function(t,e,n){switch(201347067&e.flags){case 1:return function(t,e,n){let a=!1;for(let r=0;r<n.length;r++)xv(t,e,r,n[r])&&(a=!0);return a}(t,e,n);case 2:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){let r="";for(let t=0;t<n.length;t++)r+=Dv(n[t],a[t]);r=e.text.prefix+r;const i=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(i,r)}return r}(t,e,n);case 16384:return function(t,e,n){const a=qf(t,e.nodeIndex),r=a.instance;let i=!1,s=void 0;for(let o=0;o<n.length;o++)Kf(t,e,o,n[o])&&(i=!0,s=xg(t,a,e,o,n[o],s));return s&&r.ngOnChanges(s),65536&e.flags&&Df(t,256,e.nodeIndex)&&r.ngOnInit(),262144&e.flags&&r.ngDoCheck(),i}(t,e,n);case 32:case 64:case 128:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){const r=jf(t,e.nodeIndex);let i;switch(201347067&e.flags){case 32:i=n;break;case 64:i={};for(let r=0;r<n.length;r++)i[a[r].name]=n[r];break;case 128:const t=n[0],e=n.slice(1);i=t.transform(...e)}r.value=i}return r}(t,e,n);default:throw"unreachable"}}(t,e,a)}function Wv(t){const e=t.def;if(4&e.nodeFlags)for(let n=0;n<e.nodes.length;n++){const a=e.nodes[n];if(4&a.flags){const e=Mf(t,n).template._projectedViews;if(e)for(let n=0;n<e.length;n++){const a=e[n];a.state|=32,Qf(a,t)}}else 0==(4&a.childFlags)&&(n+=a.childCount)}}function Kv(t,e,n,a,r,i,s,o,u,d,l,c,f){return 0===n?function(t,e,n,a,r,i,s,o,u,d,l,c){const f=e.bindings.length;f>0&&Zf(t,e,0,n),f>1&&Zf(t,e,1,a),f>2&&Zf(t,e,2,r),f>3&&Zf(t,e,3,i),f>4&&Zf(t,e,4,s),f>5&&Zf(t,e,5,o),f>6&&Zf(t,e,6,u),f>7&&Zf(t,e,7,d),f>8&&Zf(t,e,8,l),f>9&&Zf(t,e,9,c)}(t,e,a,r,i,s,o,u,d,l,c,f):function(t,e,n){for(let a=0;a<n.length;a++)Zf(t,e,a,n[a])}(t,e,a),!1}function $v(t,e){if(Ff(t,e.nodeIndex).dirty)throw Af(Vf.createDebugContext(t,e.nodeIndex),`Query ${e.query.id} not dirty`,`Query ${e.query.id} dirty`,0!=(1&t.state))}function Zv(t){if(!(128&t.state)){if(Xv(t,Jv.Destroy),Qv(t,Jv.Destroy),_g(t,131072),t.disposables)for(let e=0;e<t.disposables.length;e++)t.disposables[e]();!function(t){if(!(16&t.state))return;const e=th(t);if(e){const n=e.template._projectedViews;n&&(yt(n,n.indexOf(t)),Vf.dirtyParentQueries(t))}}(t),t.renderer.destroyNode&&function(t){const e=t.def.nodes.length;for(let n=0;n<e;n++){const e=t.def.nodes[n];1&e.flags?t.renderer.destroyNode(Mf(t,n).renderElement):2&e.flags?t.renderer.destroyNode(Pf(t,n).renderText):(67108864&e.flags||134217728&e.flags)&&Ff(t,n).destroy()}}(t),ah(t)&&t.renderer.destroy(),t.state|=128}}const Jv=function(){var t={CreateViewNodes:0,CheckNoChanges:1,CheckNoChangesProjectedViews:2,CheckAndUpdate:3,CheckAndUpdateProjectedViews:4,Destroy:5};return t[t.CreateViewNodes]="CreateViewNodes",t[t.CheckNoChanges]="CheckNoChanges",t[t.CheckNoChangesProjectedViews]="CheckNoChangesProjectedViews",t[t.CheckAndUpdate]="CheckAndUpdate",t[t.CheckAndUpdateProjectedViews]="CheckAndUpdateProjectedViews",t[t.Destroy]="Destroy",t}();function Qv(t,e){const n=t.def;if(33554432&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];33554432&r.flags?tx(Mf(t,a).componentView,e):0==(33554432&r.childFlags)&&(a+=r.childCount)}}function Xv(t,e){const n=t.def;if(16777216&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];if(16777216&r.flags){const n=Mf(t,a).viewContainer._embeddedViews;for(let t=0;t<n.length;t++)tx(n[t],e)}else 0==(16777216&r.childFlags)&&(a+=r.childCount)}}function tx(t,e){const n=t.state;switch(e){case Jv.CheckNoChanges:0==(128&n)&&(12==(12&n)?Yv(t):64&n&&ex(t,Jv.CheckNoChangesProjectedViews));break;case Jv.CheckNoChangesProjectedViews:0==(128&n)&&(32&n?Yv(t):64&n&&ex(t,e));break;case Jv.CheckAndUpdate:0==(128&n)&&(12==(12&n)?Hv(t):64&n&&ex(t,Jv.CheckAndUpdateProjectedViews));break;case Jv.CheckAndUpdateProjectedViews:0==(128&n)&&(32&n?Hv(t):64&n&&ex(t,e));break;case Jv.Destroy:Zv(t);break;case Jv.CreateViewNodes:Bv(t)}}function ex(t,e){Xv(t,e),Qv(t,e)}function nx(t,e,n,a){if(!(t.def.nodeFlags&e&&t.def.nodeFlags&n))return;const r=t.def.nodes.length;for(let i=0;i<r;i++){const r=t.def.nodes[i];if(r.flags&e&&r.flags&n)switch(Vf.setCurrentNode(t,r.nodeIndex),a){case 0:Ov(t,r);break;case 1:$v(t,r)}r.childFlags&e&&r.childFlags&n||(i+=r.childCount)}}let ax=!1;function rx(){if(ax)return;ax=!0;const t=Wa()?{setCurrentNode:Nx,createRootView:sx,createEmbeddedView:ux,createComponentView:dx,createNgModuleRef:lx,overrideProvider:gx,overrideComponentView:px,clearOverrides:bx,checkAndUpdateView:xx,checkNoChangesView:_x,destroyView:Tx,createDebugContext:(t,e)=>new Px(t,e),handleEvent:Cx,updateDirectives:Rx,updateRenderer:Ax}:{setCurrentNode:()=>{},createRootView:ix,createEmbeddedView:jv,createComponentView:Gv,createNgModuleRef:Jh,overrideProvider:zf,overrideComponentView:zf,clearOverrides:zf,checkAndUpdateView:Hv,checkNoChangesView:Yv,destroyView:Zv,createDebugContext:(t,e)=>new Px(t,e),handleEvent:(t,e,n,a)=>t.def.handleEvent(t,e,n,a),updateDirectives:(t,e)=>t.def.updateDirectives(0===e?yx:vx,t),updateRenderer:(t,e)=>t.def.updateRenderer(0===e?yx:vx,t)};Vf.setCurrentNode=t.setCurrentNode,Vf.createRootView=t.createRootView,Vf.createEmbeddedView=t.createEmbeddedView,Vf.createComponentView=t.createComponentView,Vf.createNgModuleRef=t.createNgModuleRef,Vf.overrideProvider=t.overrideProvider,Vf.overrideComponentView=t.overrideComponentView,Vf.clearOverrides=t.clearOverrides,Vf.checkAndUpdateView=t.checkAndUpdateView,Vf.checkNoChangesView=t.checkNoChangesView,Vf.destroyView=t.destroyView,Vf.resolveDep=yg,Vf.createDebugContext=t.createDebugContext,Vf.handleEvent=t.handleEvent,Vf.updateDirectives=t.updateDirectives,Vf.updateRenderer=t.updateRenderer,Vf.dirtyParentQueries=Tv}function ix(t,e,n,a,r,i){const s=r.injector.get(ef);return Fv(ox(t,r,s,e,n),a,i)}function sx(t,e,n,a,r,i){const s=r.injector.get(ef),o=ox(t,r,new Fx(s),e,n),u=mx(a);return qx(Ox.create,Fv,null,[o,u,i])}function ox(t,e,n,a,r){const i=e.injector.get(vr),s=e.injector.get(Da),o=n.createRenderer(null,null);return{ngModule:e,injector:t,projectableNodes:a,selectorOrNode:r,sanitizer:i,rendererFactory:n,renderer:o,errorHandler:s}}function ux(t,e,n,a){const r=mx(n);return qx(Ox.create,jv,null,[t,e,r,a])}function dx(t,e,n,a){return n=hx.get(e.element.componentProvider.provider.token)||mx(n),qx(Ox.create,Gv,null,[t,e,n,a])}function lx(t,e,n,a){return Jh(t,e,n,function(t){const{hasOverrides:e,hasDeprecatedOverrides:n}=function(t){let e=!1,n=!1;return 0===cx.size?{hasOverrides:e,hasDeprecatedOverrides:n}:(t.providers.forEach(t=>{const a=cx.get(t.token);3840&t.flags&&a&&(e=!0,n=n||a.deprecatedBehavior)}),t.modules.forEach(t=>{fx.forEach((a,r)=>{D(r).providedIn===t&&(e=!0,n=n||a.deprecatedBehavior)})}),{hasOverrides:e,hasDeprecatedOverrides:n})}(t);return e?(function(t){for(let e=0;e<t.providers.length;e++){const a=t.providers[e];n&&(a.flags|=4096);const r=cx.get(a.token);r&&(a.flags=-3841&a.flags|r.flags,a.deps=oh(r.deps),a.value=r.value)}if(fx.size>0){let e=new Set(t.modules);fx.forEach((a,r)=>{if(e.has(D(r).providedIn)){let e={token:r,flags:a.flags|(n?4096:0),deps:oh(a.deps),value:a.value,index:t.providers.length};t.providers.push(e),t.providersByKey[Yf(r)]=e}})}}(t=t.factory(()=>zf)),t):t}(a))}const cx=new Map,fx=new Map,hx=new Map;function gx(t){let e;cx.set(t.token,t),"function"==typeof t.token&&(e=D(t.token))&&"function"==typeof e.providedIn&&fx.set(t.token,t)}function px(t,e){const n=lh(qh(e)),a=lh(n.nodes[0].element.componentView);hx.set(t,a)}function bx(){cx.clear(),fx.clear(),hx.clear()}function mx(t){if(0===cx.size)return t;const e=function(t){const e=[];let n=null;for(let a=0;a<t.nodes.length;a++){const r=t.nodes[a];1&r.flags&&(n=r),n&&3840&r.flags&&cx.has(r.provider.token)&&(e.push(n.nodeIndex),n=null)}return e}(t);if(0===e.length)return t;t=t.factory(()=>zf);for(let a=0;a<e.length;a++)n(t,e[a]);return t;function n(t,e){for(let n=e+1;n<t.nodes.length;n++){const e=t.nodes[n];if(1&e.flags)return;if(3840&e.flags){const t=e.provider,n=cx.get(t.token);n&&(e.flags=-3841&e.flags|n.flags,t.deps=oh(n.deps),t.value=n.value)}}}}function yx(t,e,n,a,r,i,s,o,u,d,l,c,f){const h=t.def.nodes[e];return Uv(t,h,n,a,r,i,s,o,u,d,l,c,f),224&h.flags?jf(t,e).value:void 0}function vx(t,e,n,a,r,i,s,o,u,d,l,c,f){const h=t.def.nodes[e];return Kv(t,h,n,a,r,i,s,o,u,d,l,c,f),224&h.flags?jf(t,e).value:void 0}function xx(t){return qx(Ox.detectChanges,Hv,null,[t])}function _x(t){return qx(Ox.checkNoChanges,Yv,null,[t])}function Tx(t){return qx(Ox.destroy,Zv,null,[t])}const Ox=function(){var t={create:0,detectChanges:1,checkNoChanges:2,destroy:3,handleEvent:4};return t[t.create]="create",t[t.detectChanges]="detectChanges",t[t.checkNoChanges]="checkNoChanges",t[t.destroy]="destroy",t[t.handleEvent]="handleEvent",t}();let wx,Sx,Ix;function Nx(t,e){Sx=t,Ix=e}function Cx(t,e,n,a){return Nx(t,e),qx(Ox.handleEvent,t.def.handleEvent,null,[t,e,n,a])}function Rx(t,e){if(128&t.state)throw Ef(Ox[wx]);return Nx(t,Lx(t,0)),t.def.updateDirectives((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),16384&i.flags&&Nx(t,Lx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function Ax(t,e){if(128&t.state)throw Ef(Ox[wx]);return Nx(t,Dx(t,0)),t.def.updateRenderer((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),3&i.flags&&Nx(t,Dx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function kx(t,e,n,a){if(Uv(t,e,n,...a)){const s=1===n?a[0]:a;if(16384&e.flags){const n={};for(let t=0;t<e.bindings.length;t++){const a=e.bindings[t],o=s[t];8&a.flags&&(n[(r=a.nonMinifiedName,i=void 0,i=r.replace(/[$@]/g,"_"),`ng-reflect-${r=i.replace(Er,(...t)=>"-"+t[1].toLowerCase())}`)]=Lr(o))}const a=e.parent,o=Mf(t,a.nodeIndex).renderElement;if(a.element.name)for(let e in n){const a=n[e];null!=a?t.renderer.setAttribute(o,e,a):t.renderer.removeAttribute(o,e)}else t.renderer.setValue(o,`bindings=${JSON.stringify(n,null,2)}`)}}var r,i}function Ex(t,e,n,a){Kv(t,e,n,...a)}function Lx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(16384&e.flags&&e.bindings&&e.bindings.length)return n}return null}function Dx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(3&e.flags&&e.bindings&&e.bindings.length)return n}return null}class Px{constructor(t,e){this.view=t,this.nodeIndex=e,null==e&&(this.nodeIndex=e=0),this.nodeDef=t.def.nodes[e];let n=this.nodeDef,a=t;for(;n&&0==(1&n.flags);)n=n.parent;if(!n)for(;!n&&a;)n=eh(a),a=a.parent;this.elDef=n,this.elView=a}get elOrCompView(){return Mf(this.elView,this.elDef.nodeIndex).componentView||this.view}get injector(){return Uh(this.elView,this.elDef)}get component(){return this.elOrCompView.component}get context(){return this.elOrCompView.context}get providerTokens(){const t=[];if(this.elDef)for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&t.push(n.provider.token),e+=n.childCount}return t}get references(){const t={};if(this.elDef){Mx(this.elView,this.elDef,t);for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&Mx(this.elView,n,t),e+=n.childCount}}return t}get componentRenderElement(){const t=function(t){for(;t&&!ah(t);)t=t.parent;return t.parent?Mf(t.parent,eh(t).nodeIndex):null}(this.elOrCompView);return t?t.renderElement:void 0}get renderNode(){return 2&this.nodeDef.flags?nh(this.view,this.nodeDef):nh(this.elView,this.elDef)}logError(t,...e){let n,a;2&this.nodeDef.flags?(n=this.view.def,a=this.nodeDef.nodeIndex):(n=this.elView.def,a=this.elDef.nodeIndex);const r=function(t,e){let n=-1;for(let a=0;a<=e;a++)3&t.nodes[a].flags&&n++;return n}(n,a);let i=-1;n.factory(()=>(i++,i===r?t.error.bind(t,...e):zf)),i<r&&(t.error("Illegal state: the ViewDefinitionFactory did not call the logger!"),t.error(...e))}}function Mx(t,e,n){for(let a in e.references)n[a]=Sv(t,e,e.references[a])}function qx(t,e,n,a){const r=wx,i=Sx,s=Ix;try{wx=t;const o=e.apply(n,a);return Sx=i,Ix=s,wx=r,o}catch(o){if(ka(o)||!Sx)throw o;throw function(t,e){return t instanceof Error||(t=new Error(t.toString())),kf(t,e),t}(o,jx())}}function jx(){return Sx?new Px(Sx,Ix):null}class Fx{constructor(t){this.delegate=t}createRenderer(t,e){return new Gx(this.delegate.createRenderer(t,e))}begin(){this.delegate.begin&&this.delegate.begin()}end(){this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.delegate.whenRenderingDone?this.delegate.whenRenderingDone():Promise.resolve(null)}}class Gx{constructor(t){this.delegate=t,this.debugContextFactory=jx,this.data=this.delegate.data}createDebugContext(t){return this.debugContextFactory(t)}destroyNode(t){const e=rv(t);!function(t){nv.delete(t.nativeNode)}(e),e instanceof Uy&&(e.listeners.length=0),this.delegate.destroyNode&&this.delegate.destroyNode(t)}destroy(){this.delegate.destroy()}createElement(t,e){const n=this.delegate.createElement(t,e),a=this.createDebugContext(n);if(a){const e=new Wy(n,null,a);e.name=t,iv(e)}return n}createComment(t){const e=this.delegate.createComment(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}createText(t){const e=this.delegate.createText(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}appendChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.addChild(a),this.delegate.appendChild(t,e)}insertBefore(t,e,n){const a=rv(t),r=rv(e),i=rv(n);a&&r&&a instanceof Wy&&a.insertBefore(i,r),this.delegate.insertBefore(t,e,n)}removeChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.removeChild(a),this.delegate.removeChild(t,e)}selectRootElement(t,e){const n=this.delegate.selectRootElement(t,e),a=jx();return a&&iv(new Wy(n,null,a)),n}setAttribute(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.attributes[a?a+":"+e:e]=n),this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.attributes[n?n+":"+e:e]=null),this.delegate.removeAttribute(t,e,n)}addClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!0),this.delegate.addClass(t,e)}removeClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!1),this.delegate.removeClass(t,e)}setStyle(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.styles[e]=n),this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.styles[e]=null),this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.properties[e]=n),this.delegate.setProperty(t,e,n)}listen(t,e,n){if("string"!=typeof t){const a=rv(t);a&&a.listeners.push(new Hy(e,n))}return this.delegate.listen(t,e,n)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setValue(t,e){return this.delegate.setValue(t,e)}}function Vx(t){return rx(),Vf.overrideProvider(t)}function zx(t,e){return rx(),Vf.overrideComponentView(t,e)}function Bx(){return rx(),Vf.clearOverrides()}function Yx(t,e,n){return new Hx(t,e,n)}class Hx extends ht{constructor(t,e,n){super(),this.moduleType=t,this._bootstrapComponents=e,this._ngModuleDefFactory=n}create(t){rx();const e=function(t){const e=Array.from(t.providers),n=Array.from(t.modules),a={};for(const r in t.providersByKey)a[r]=t.providersByKey[r];return{factory:t.factory,isRoot:t.isRoot,providers:e,modules:n,providersByKey:a}}(lh(this._ngModuleDefFactory));return Vf.createNgModuleRef(this.moduleType,t||Bo.NULL,this._bootstrapComponents,e)}}},"8YOa":function(t,e,n){var a=n("0BK2"),r=n("hh1v"),i=n("UTVS"),s=n("m/L8").f,o=n("kOOl"),u=n("uy83"),d=o("meta"),l=0,c=Object.isExtensible||function(){return!0},f=function(t){s(t,d,{value:{objectID:"O"+ ++l,weakData:{}}})},h=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,d)){if(!c(t))return"F";if(!e)return"E";f(t)}return t[d].objectID},getWeakData:function(t,e){if(!i(t,d)){if(!c(t))return!0;if(!e)return!1;f(t)}return t[d].weakData},onFreeze:function(t){return u&&h.REQUIRED&&c(t)&&!i(t,d)&&f(t),t}};a[d]=!0},"8j5A":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="it-IT">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Attiva/Disattiva barra di navigazione</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servizi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configurazione</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduli Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blocco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Immagini</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Esecuzione della copia speculare</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI </target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>File system</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utenti</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimenti</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selezionare una lingua</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Caricamento pannello dati in corso...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selezione ora di Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Impostazioni di ripristino</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Indietro</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Non è stato possibile caricare i dati.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selezionato</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trovato</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>totale</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrizione</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrizione lunga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Default</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Default del daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valori</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salva</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizzatore mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Caricamento in corso...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sì.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annulla</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Chiudi</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Elenco degli host</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Prestazioni complessive</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nessuna voce trovata</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log dei cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log delle revisioni</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Caricamento della configurazione in corso...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Impossibile caricare la configurazione.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifica modulo Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Il valore immesso non è un UUID valido, ad es.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Il valore immesso deve essere un indirizzo IP valido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Il valore immesso deve essere un numero.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Il valore immesso deve essere un numero o un decimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aggiorna</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mappa mon modificata</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoca mappa mon</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con richiesta</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon richiesto</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Nel quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Non nel quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Aggiungi</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funzioni</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD in tutto il cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Invia</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzate...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorità di recupero OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorità</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizza valori di priorità</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Il valore deve essere compreso tra 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ripesa</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Elenco degli OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valore</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifica</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Elimina</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiche</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Client</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Può accedere qualsiasi client</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Indirizzi</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obbligatorio</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve contenere uno o più valori delimitati da virgole</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Ad esempio:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo di accesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Esegui squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Aggiungi client</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Nessun cluster disponibile --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selezionare il cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Aggiungi daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend di storage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Nessun pool di dati disponibile --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selezionare il backend di storage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utente Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Nessun utente disponibile --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selezionare l\'utente Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Nessun client disponibile --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selezionare il client Cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Abilita etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Percorso CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Il percorso deve iniziare con una barra \'/\' e può essere seguito da una parola</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Viene creata la nuova directory</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Percorso</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Il percorso può essere solo una singola barra \'/\' o parola</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Viene creato il nuovo compartimento</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocollo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>I client non possono montare le sottodirectory (ad es. se Tag = foo, il client non può montare foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Tag, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Pseudo, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Nessun tipo di accesso disponibile --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selezionare il tipo di accesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Nessuno squash disponibile --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selezionare il tipo di squash dell\'ID utente da eseguire --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocollo di trasporto</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Benvenuto in Ceph.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome utente necessario</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Password richiesta</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Spiacenti, l\'utente non esiste in Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Non consentito</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Spiacenti, non è consentito visualizzare ciò che si stava cercando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configurazione RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Rimuovere il valore della configurazione locale. Al suo posto verrà ereditato e utilizzato il valore della configurazione superiore.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Il valore minimo è 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Elenco dei pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Il nome può contenere solo caratteri alfanumerici, trattini e caratteri di sottolineatura.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Il nome del profilo del codice di cancellazione selezionato è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porzioni di dati (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve essere uguale o maggiore di 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porzioni di codice (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve essere uguale o maggiore di 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Stima durata (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Località (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio di errore Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Località Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nessuno</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Tecnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Dimensione del pacchetto</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Radice Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe dispositivo Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualsiasi</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directory</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Il nome del pool Ceph scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo di pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selezionare un tipo di pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>È necessario almeno un gruppo di posizionamento.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Il cluster non può gestire questo numero eccessivo di gruppi di posizionamento. Ricalcolare il numero di gruppi di posizionamento necessari.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Guida per il calcolo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Dimensioni replicate</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sovrascritture EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applicazioni</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Nessun profilo del codice di cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selezionare un profilo del codice di cancellazione --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selezionare una regola Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regola Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Passaggi Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compressione</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modalità</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Nessun algoritmo di compressione della cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ad es. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Il valore deve essere maggiore di 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Dimensioni massime del blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ad es. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Il valore deve essere maggiore delle dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapporto</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapporto di compressione</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Il valore deve essere compreso tra 0,0 e 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ad es. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Dettagli</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Dettagli sulle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Dettagli livelli cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Sposta un\'immagine nel cestino</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protezione scade alle</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato data errato. Utilizzare "AAAA-MM-GG HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protezione è già scaduta. Selezionare una data futura o lasciarla vuota.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Sposta immagine</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Panoramica</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinazioni</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticazione rilevazione</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utente</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n              possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Password</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utente reciproco</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Password reciproca</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informazioni disponibili:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinazioni iSCSI non disponibili</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creato</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Dimensioni</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Oggetti</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Dimensioni oggetto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Totale soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Conteggio di striping</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Superiore</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefisso nome blocco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordine</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Immagine</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Questa impostazione sostituisce il valore globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globale</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Questo è il valore globale. Nessun valore di opzione è stato impostato per questa immagine.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' non sono consentiti.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Nessun pool rbd disponibile --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selezionare un pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utilizza un pool di dati dedicato</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicato che archivia i dati oggetto dell\'RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>È necessario aumentare le dimensioni.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzate</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selezionare l\'unità di striping --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificato il numero di striping.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unità di striping è maggiore delle dimensioni dell\'oggetto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Numero di striping</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificata l\'unità di striping.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Il numero di striping deve essere maggiore di 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Si sta per eseguire il rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Elimina definitivamente contenuto del cestino</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tutto</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Ripristina immagine</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Per ripristinare,</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digitare il nuovo nome dell\'immagine e fare clic su</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nuovo nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Scaduto alle</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protetto fino alle</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Di solito non è necessario modificare questi parametri rispetto ai valori di default.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Impostazioni</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Conferma</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Impostazioni avanzate</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN di destinazione</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN contiene un modello errato.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Ad esempio: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Ulteriori informazioni</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Questa destinazione contiene impostazioni avanzate modificate.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portali</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Aggiungi portale</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Questa immagine contiene impostazioni modificate.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Aggiungi immagine</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticazione ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniziatori</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniziatore</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN dell\'iniziatore deve essere univoco.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n                        possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'iniziatore appartiene a un gruppo. Le immagini verranno configurate nel gruppo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nessun elemento aggiunto.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Aggiungi iniziatore</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppi</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Aggiungi gruppo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Cestino</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemi</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizzazione in corso</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifica modalità speculare per il pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>È necessario rimuovere i cluster peer prima di disabilitare la copia speculare.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Il nome del cluster non è valido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX non è valido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Indirizzi dei monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Indirizzi con valori delimitati da virgole...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'indirizzo del monitor non è valido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chiave CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chiave con codifica Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La chiave CephX deve essere con codifica Base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contatori delle prestazioni non disponibili</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Elenco dei daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contatori delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Caricamento dati compartimento in corso...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Il valore non è valido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Il nome scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selezionare un utente --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Abilitato</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo di indice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regola di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Contrassegno</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Contrassegno massimo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versione</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versione master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Ora di modifica</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Gruppo di zone</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota compartimenti</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Dimensioni massime</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimitato</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Numero massimo di oggetti</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome utente</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selezionare un nome utente --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Generazione automatica chiave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chiave di accesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chiave segreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Indirizzo e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Sospeso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Numero massimo di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Sottoutenti</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utenti</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostra</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chiavi</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selezionare un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorizzazione</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selezionare un\'autorizzazione --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Sottoutente</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID del sottoutente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lettura, scrittura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pieno</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chiave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Generazione automatica segreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Caricamento dati utente in corso...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Impossibile caricare i dati utente.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Non è un indirizzo e-mail valido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'indirizzo e-mail scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Numero max. di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Disabilitato</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizzato</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chiave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Non esistono sottoutenti.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Non esistono chiavi.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Non esistono capacità.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Dimensioni illimitate</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Dimensione max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Oggetti illimitati</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Numero max. di oggetti</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Il valore immesso deve essere &gt;= a 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrizione...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorizzazioni</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Ruoli</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Conferma password</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>La password di conferma non corrisponde alla password.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail non valida.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Si stanno per rimuovere le autorizzazioni di "lettura/aggiornamento utente" dal proprio utente.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se si continua, non è più possibile aggiungere o rimuovere ruoli da qualsiasi utente.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Continuare?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Guida</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentazione</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Informazioni su</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Impostazioni del dashboard</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestione utenti</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utente connesso</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Disconnetti</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributi (mappa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadati non disponibili</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadati</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contatore delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Scritture</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Letture</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Istogramma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valori attuali</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origine</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Livello</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Può essere aggiornato al runtime (modificabile)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valori di enumerazione</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Vedere anche</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stato del cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server di metadati</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI Gateway</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Velocità effettiva client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lettura/scrittura client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Velocità effettiva di recupero</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Pulitura</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Prestazioni</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacità di base</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Gruppi di posizionamento per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stato gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Classificazioni</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Attuale</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticazione rilevazione aggiornata</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Non sono disponibili pool.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Non sono disponibili immagini.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Non sono disponibili immagini. Assicurarsi di aggiungere un\'immagine alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Non sono disponibili iniziatori. Assicurarsi di aggiungere un iniziatore alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destinazione</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O da</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Istanza</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avanzamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modalità di modifica</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Aggiungi peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifica peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Elimina peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Sequenza iniziale</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Locale</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>peer copia speculare</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chiave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Appiattimento profondo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Su strati</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Blocco esclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mappa oggetti (richiede il blocco escluso)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (richiede il blocco esclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Esegui rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Eliminato alle</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stato</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versione</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>root</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon in standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Classificazione</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Task</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilizzo</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aggiornato</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>È possibile aggiornare il valore al runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>I daemon/client non estraggono questo valore dal\n      database della configurazione di monitoraggio. Non è consentito impostare questa opzione tramite \'ceph config\n      set ...\'. È necessario configurare questa opzione tramite ceph.conf o dalla\n      riga di comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'opzione diventa attiva solo all\'avvio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'opzione interessa solo la creazione del cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'opzione interessa solo la creazione del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servizio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valore attuale</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modificabile</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Abilita</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Disabilita</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Riconnessione in corso. Attendere.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Indirizzo pubblico</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessioni aperte</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nessuno in entrata</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Gli OSD che sono stati contrassegnati come disattivi in precedenza non verranno contrassegnati nuovamente come attivi all\'avvio</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nessuno in uscita</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Gli OSD non verranno disattivati automaticamente dopo l\'intervallo configurato</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nessuno attivo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Non è consentito l\'avvio degli OSD</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nessuno disattivo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>I rapporti di errore degli OSD vengono ignorati in modo che i monitor non disattivino gli OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Sospendi</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Sospende le operazioni di lettura e scrittura</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nessuna pulitura</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Pulitura disabilitata</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nessun pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Pulitura approfondita disabilitata</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Nessuna operazione di recupero</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nessun recupero</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usa ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir eliminate definitivamente</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Gli OSD contengono set di snap convertiti</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Eliminazioni recuperi</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Eliminazioni eseguite durante il recupero invece del peering</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite rigido log gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Inserisce un limite rigido alla lunghezza del log del gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD aggiornati</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>esterno</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>interno</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>in basso</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Contrassegna</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perso</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>contrassegnato come perso</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>elimina</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Numero max di recuperi informazioni</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Numero max di recuperi attivi</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Avvio singolo numero max di recuperi</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Sospensione recupero</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Lavoro</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravità</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Avviato</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilizzato</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Pulisci</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In funzione</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>su</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>nessun file system</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>attivo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon attivo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target> quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Il servizio NFS Ganesha non è configurato.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Trasporto</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>File system CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(ereditato dalla configurazione globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>importato dalla configurazione globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selezionare il tipo di squash dell\'ID utente che viene eseguito --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Non vi sono daemon disponibili.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modalità cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Numero minimo di giorni per la rimozione</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Numero minimo di giorni per la cancellazione</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Numero max di byte di destinazione</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Numero max di oggetti di destinazione</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Non sono state aggiunte applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Raggiunto il limite di applicazioni</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un pool può contenere solo fino a quattro definizioni delle applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caratteri consentiti \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La lunghezza massima è di 128 caratteri</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtra o aggiungi applicazioni</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Aggiungi applicazione</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Dimensioni della replica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ultima modifica</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profilo con codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimenti</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utente</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utenti</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ambito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lettura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crea</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Ruolo di sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aggiorna utente</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continua</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Si è stati automaticamente disconnessi perché i ruoli sono stati modificati.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Ogni oggetto è suddiviso in porzioni di dati, ciascuna delle quali è memorizzata su un diverso OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcola le porzioni di codice relative a ciascun oggetto e le memorizza su diversi OSD.\n      Il numero di porzioni di codice è anche il numero degli OSD che è possibile disattivare senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Il plugin jerasure è il plugin più generico e flessibile,\n          ed è anche il plugin di default dei pool con codice di cancellazione di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La tecnica più flessibile è reed_sol_van: è sufficiente impostare k\n          ed m. La tecnica cauchy_good può essere più rapida ma occorre selezionare attentamente la dimensione del\n          pacchetto. reed_sol_r6_op, liberation, blaum_roth, liber8tion sono tutti equivalenti a RAID6,\n          nel senso che è possibile configurarli solo con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codifica viene eseguita su pacchetti di dimensioni in byte, uno alla volta.\n          È difficile scegliere la dimensione del pacchetto corretta.\n          La documentazione su jerasure fornisce informazioni esaustive su questo argomento.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con il plugin di jerasure, quando un oggetto con codice di cancellazione viene memorizzato su\n          più OSD, il recupero della perdita di un OSD richiede la lettura di tutti gli altri.\n          Ad esempio, se jerasure è configurato con k=8 e m=4, la perdita di un OSD richiede la lettura\n          degli altri undici per il ripristino.\n\n          Il plugin del codice di cancellazione lrc crea porzioni di parità locali che è possibile recuperare utilizzando un\n          minor numero di OSD. Ad esempio, se lrc è configurato con k=8, m=4 e l=4, crea\n          una porzione di parità aggiuntiva ogni quattro OSD. Quando si perde un singolo OSD, è possibile\n          recuperarlo solo con quattro OSD invece che con undici.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Raggruppa le porzioni di codice e dati in set di località dimensione. Ad esempio,\n          per k=4 e m=2, se località=3 vengono creati due gruppi su tre. È possibile recuperare ciascun set\n          senza leggere le porzioni di un altro set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Il tipo di compartimento Crush in cui viene memorizzato ciascun set di porzioni definito\n          dall\'utente. Ad esempio, se è impostato su rack, ciascun gruppo di porzioni viene\n          posizionato in un diverso rack. Viene utilizzato per creare un passaggio della regola CRUSH come il passaggio choose\n          rack. Se non è impostato, il raggruppamento non viene eseguito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Il plugin ISA incapsula la libreria ISA. Viene eseguito solo su processori Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Il plugin ISA è disponibile in due formati Reed Solomon.\n          Se è impostato reed_sol_van, il formato è Vandermonde, se è impostato cauchy, il formato è Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Il plugin shec incapsula la libreria SHEC multipla.\n          Consente a Ceph di recuperare i dati in modo più efficiente rispetto ai codici Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Il numero di compartimenti di parità, ciascuno dei quali include i singoli compartimenti di dati\n          nell\'intervallo di calcolo. Il numero viene utilizzato come strumento di stima della durabilità. Ad esempio, se c=2,\n          è possibile disattivare 2 OSD senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Il nome del compartimento Crush utilizzato per il primo passaggio della regola CRUSH.\n      Ad esempio il passaggio take default.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Assicurarsi che non esistano due porzioni in un compartimento con lo stesso dominio\n      di errore. Ad esempio, se il dominio di errore è l\'host, non verranno memorizzate due porzioni sullo stesso\n      host. Viene utilizzato per creare un passaggio della regola CRUSH come passaggio chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Limitare il posizionamento ai dispositivi di una classe specifica\n      (ad es. ssd o hdd) usando i nomi delle classi di dispositivi Crush nella mappa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Impostare il nome della directory da cui viene caricato il plugin del codice di cancellazione.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Consente tutte le operazioni</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Consente solo le operazioni che non modificano il server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Non consente operazioni di lettura o scrittura, ma consente qualsiasi altra operazione</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Non consente operazioni di lettura o scrittura o qualsiasi operazione che modifichi gli attributi dei file o il contenuto della directory</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Non consente alcun accesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selezionare la priorità --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Bassa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informazioni</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ultimi 5 minuti</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ultimi 15 minuti</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ultimi 30 minuti</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ultima ora (Default)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ultime 3 ore</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ultime 6 ore</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ultime 12 ore</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ultime 24 ore</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ieri</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Oggi</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Fino a oggi</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Giorno prima di ieri</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ultimi 2 giorni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Questo giorno della scorsa settimana</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Settimana precedente</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Questa settimana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Fino a questa settimana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ultimi 7 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mese precedente</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Questo mese</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Fino a questo mese</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ultimi 30 giorni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ultimi 90 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ultimi 6 mesi</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ultimo anno</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Anno precedente</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Fino a quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ultimi 2 anni</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ultimi 5 anni</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nessun elemento selezionato.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deselezionare l\'elemento per selezionare di nuovo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target> Raggiunto il limite per la selezione</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtra tag</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Aggiungi badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Non vi sono elementi disponibili.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clona</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Eliminazione definitiva</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Appiattisci</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Declassa</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Attiva</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Contrassegna come perso</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Disattiva</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteggi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Rinomina</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Ripristina</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Sposta nel cestino</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Rimuovi protezione</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Eliminato</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonato</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiato</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Appiattito</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Ripristinato</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback eseguito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sì</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualità di servizio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite di BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Il limite desiderato di byte I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite di IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Il limite desiderato di operazioni I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Il limite desiderato dei byte letti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite di IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Il limite desiderato di operazioni di lettura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite di BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Il limite desiderato di byte scritti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Il limite desiderato di operazioni di scrittura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Burst BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Il limite di burst desiderato dei byte di I/O.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Burst IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di I/O.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Burst BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Il limite di burst desiderato dei byte letti.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Burst IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di lettura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Burst BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Il limite di burst desiderato dei byte scritti.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Burst di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di scrittura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>In esecuzione</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>esegui</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Eseguito</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>task sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creazione in corso</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crea</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aggiornamento in corso</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aggiorna</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonazione in corso</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clona</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copia in corso</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copia</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Appiattimento</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>appiattisci</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback in corso</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Spostamento in corso</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>sposta</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Spostato</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossibile trovare l\'immagine.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Ripristino in corso</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>ripristina</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>tutti i pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossibile disabilitare l\'esecuzione della copia speculare perché contiene un peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"8mBD":function(t,e,n){!function(t){"use strict";t.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"8xTl":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.upperFirst(t)}}},"9/5/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,o="object"==typeof global&&global&&global.Object===Object&&global,u="object"==typeof self&&self&&self.Object===Object&&self,d=o||u||Function("return this")(),l=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return d.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==l.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var o=r.test(t);return o||i.test(t)?s(t.slice(2),o?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a,r,i,s,o,u,d=0,l=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,d=e,s=t.apply(i,n)}function v(t){return d=t,o=setTimeout(_,e),l?y(t):s}function x(t){var n=t-u;return void 0===u||n>=e||n<0||b&&t-d>=i}function _(){var t=h();if(x(t))return T(t);o=setTimeout(_,function(t){var n=e-(t-u);return b?f(n,i-(t-d)):n}(t))}function T(t){return o=void 0,m&&a?y(t):(a=r=void 0,s)}function O(){var t=h(),n=x(t);if(a=arguments,r=this,u=t,n){if(void 0===o)return v(u);if(b)return o=setTimeout(_,e),y(u)}return void 0===o&&(o=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(l=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==o&&clearTimeout(o),d=0,a=u=r=o=void 0},O.flush=function(){return void 0===o?s:T(h())},O}},"93I0":function(t,e,n){var a=n("VpIT"),r=n("kOOl"),i=a("keys");t.exports=function(t){return i[t]||(i[t]=r(t))}},"978R":function(t,e,n){"use strict";n.d(e,"a",(function(){return d})),n.d(e,"b",(function(){return l})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return h}));var a=n("8Y7J"),r=n("hpHm"),i=n("mrSG"),s=n("z/SZ"),o=n("2uy1"),u=n("PqYM");class d{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="hover focus",this.delay=0}}class l{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}ngAfterViewInit(){this.classMap={in:!1,fade:!1},this.classMap[this.placement]=!0,this.classMap[`tooltip-${this.placement}`]=!0,this.classMap.in=!0,this.animation&&(this.classMap.fade=!0),this.containerClass&&(this.classMap[this.containerClass]=!0)}}let c=0,f=(()=>{class t{constructor(t,e,n,r,i,s){this._elementRef=r,this._renderer=i,this._positionService=s,this.tooltipId=c++,this.tooltipChange=new a.EventEmitter,this.containerClass="",this.tooltipAnimation=!0,this.tooltipFadeDuration=150,this.tooltipStateChanged=new a.EventEmitter,this._tooltip=e.createLoader(this._elementRef,t,this._renderer).provide({provide:d,useValue:n}),Object.assign(this,n),this.onShown=this._tooltip.onShown,this.onHidden=this._tooltip.onHidden}get isOpen(){return this._tooltip.isShown}set isOpen(t){t?this.show():this.hide()}set htmlContent(t){Object(r.i)("tooltipHtml was deprecated, please use `tooltip` instead"),this.tooltip=t}set _placement(t){Object(r.i)("tooltipPlacement was deprecated, please use `placement` instead"),this.placement=t}set _isOpen(t){Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen=t}get _isOpen(){return Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen}set _enable(t){Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled=!t}get _enable(){return Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled}set _appendToBody(t){Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),this.container=t?"body":this.container}get _appendToBody(){return Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),"body"===this.container}set _popupClass(t){Object(r.i)("tooltipClass deprecated")}set _tooltipContext(t){Object(r.i)("tooltipContext deprecated")}set _tooltipPopupDelay(t){Object(r.i)("tooltipPopupDelay is deprecated, use `delay` instead"),this.delay=t}get _tooltipTrigger(){return Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers}set _tooltipTrigger(t){Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers=(t||"").toString()}ngOnInit(){this._tooltip.listen({triggers:this.triggers,show:()=>this.show()}),this.tooltipChange.subscribe(t=>{t||this._tooltip.hide()}),this.onShown.subscribe(()=>{this.setAriaDescribedBy()}),this.onHidden.subscribe(()=>{this.setAriaDescribedBy()})}setAriaDescribedBy(){this._ariaDescribedby=this.isOpen?`tooltip-${this.tooltipId}`:null,this._ariaDescribedby?this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ariaDescribedby):this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby")}toggle(){if(this.isOpen)return this.hide();this.show()}show(){if(this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}}),this.isOpen||this.isDisabled||this._delayTimeoutId||!this.tooltip)return;const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._tooltip.attach(l).to(this.container).position({attachment:this.placement}).show({content:this.tooltip,placement:this.placement,containerClass:this.containerClass,id:`tooltip-${this.tooltipId}`})},e=()=>{this._tooltipCancelShowFn&&this._tooltipCancelShowFn()};if(this.delay){const n=Object(u.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._tooltipCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this._tooltip.isShown&&(this._tooltip.instance.classMap.in=!1,setTimeout(()=>{this._tooltip.hide()},this.tooltipFadeDuration))}ngOnDestroy(){this._tooltip.dispose(),this.tooltipChange.unsubscribe(),this.onShown.unsubscribe(),this.onHidden.unsubscribe()}}return Object(i.__decorate)([Object(r.a)(),Object(i.__metadata)("design:type",Object)],t.prototype,"tooltip",void 0),t})();class h{static forRoot(){return{ngModule:h,providers:[d,s.a,o.a]}}}},"9Nap":function(t,e,n){var a=n("/9aa");t.exports=function(t){if("string"==typeof t||a(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},"9Xeq":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"9d/t":function(t,e,n){var a=n("AO7/"),r=n("xrYK"),i=n("tiKp")("toStringTag"),s="Arguments"==r(function(){return arguments}());t.exports=a?r:function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=Object(t),i))?n:s?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},"9ggG":function(t,e,n){var a=n("Z0cm"),r=n("/9aa"),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;t.exports=function(t,e){if(a(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!r(t))||s.test(t)||!i.test(t)||null!=e&&t in Object(e)}},"9nlD":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("LvDl"),r=n("2Vo4"),i=n("XNiG"),s=n("mtw6"),o=n("G1I9"),u=n("a0VL"),d=n("ufoC"),l=n("8Y7J"),c=n("EApP");let f=(()=>{class t{constructor(t,e,n){this.toastr=t,this.taskMessageService=e,this.cdDatePipe=n,this.hideToasties=!1,this.dataSource=new r.a([]),this.data$=this.dataSource.asObservable(),this.sidebarSubject=new i.a,this.queued=[],this.KEY="cdNotifications";const s=localStorage.getItem(this.KEY);let u=[];a.isString(s)&&(u=JSON.parse(s,(t,e)=>a.isPlainObject(e)?a.assign(new o.a,e):e)),this.dataSource.next(u)}removeAll(){localStorage.removeItem(this.KEY),this.dataSource.next([])}remove(t){const e=this.dataSource.getValue();e.splice(t,1),this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}save(t){const e=this.dataSource.getValue();for(e.push(t),e.sort((t,e)=>t.timestamp>e.timestamp?-1:1);e.length>10;)e.pop();this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}show(t,e,n,r,i){return window.setTimeout(()=>{let s;s=a.isFunction(t)?t():a.isObject(t)?t:new o.b(t,e,n,r,i),this.queueToShow(s)},10)}queueToShow(t){this.cancel(this.queuedTimeoutId),this.queued.find(e=>a.isEqual(e,t))||this.queued.push(t),this.queuedTimeoutId=window.setTimeout(()=>{this.showQueued()},500)}showQueued(){this.getUnifiedTitleQueue().forEach(t=>{const e=new o.a(t);e.isFinishedTask||this.save(e),this.showToasty(e)})}getUnifiedTitleQueue(){return Object.values(this.queueShiftByTitle()).map(t=>{const e=t[0];return t.length>1&&(e.message="<ul>"+t.map(t=>`<li>${t.message}</li>`).join("")+"</ul>"),e})}queueShiftByTitle(){const t={};let e;for(;e=this.queued.shift();)t[e.title]||(t[e.title]=[]),t[e.title].push(e);return t}showToasty(t){this.hideToasties||this.toastr[["error","info","success"][t.type]]((t.message?t.message+"<br>":"")+this.renderTimeAndApplicationHtml(t),t.title,t.options)}renderTimeAndApplicationHtml(t){return`<small class="date">${this.cdDatePipe.transform(t.timestamp)}</small><i class="float-right custom-icon ${t.applicationClass}" title="${t.application}"></i>`}notifyTask(t,e=!0){const n=this.finishedTaskToNotification(t,e);return n.isFinishedTask=!0,this.show(n)}finishedTaskToNotification(t,e=!0){let n;return n=t.success&&e?new o.b(s.a.success,this.taskMessageService.getSuccessTitle(t)):new o.b(s.a.error,this.taskMessageService.getErrorTitle(t),this.taskMessageService.getErrorMessage(t)),n.isFinishedTask=!0,n}cancel(t){window.clearTimeout(t)}suspendToasties(t){this.hideToasties=t}toggleSidebar(t=!1){this.sidebarSubject.next(t)}}return t.ngInjectableDef=l["ɵɵdefineInjectable"]({factory:function(){return new t(l["ɵɵinject"](c.j),l["ɵɵinject"](d.a),l["ɵɵinject"](u.a))},token:t,providedIn:"root"}),t})()},"9ppp":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t})()},"9rRi":function(t,e,n){!function(t){"use strict";t.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},"A+xa":function(t,e,n){!function(t){"use strict";t.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){return t+(/сехет$/i.exec(t)?"рен":/ҫул$/i.exec(t)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("wd/R"))},A2ZE:function(t,e,n){var a=n("HAuM");t.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},A90E:function(t,e,n){var a=n("6sVZ"),r=n("V6Ve"),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return r(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},"AO7/":function(t,e,n){var a={};a[n("tiKp")("toStringTag")]="z",t.exports="[object z]"===String(a)},AP2z:function(t,e,n){var a=n("nmnc"),r=Object.prototype,i=r.hasOwnProperty,s=r.toString,o=a?a.toStringTag:void 0;t.exports=function(t){var e=i.call(t,o),n=t[o];try{t[o]=void 0;var a=!0}catch(u){}var r=s.call(t);return a&&(e?t[o]=n:delete t[o]),r}},AQ68:function(t,e,n){!function(t){"use strict";t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("wd/R"))},AWcq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("yJti");class r{constructor(){this.vcs=a.a}ngOnInit(){}}},AfCQ:function(t,e,n){"use strict";var a=n("2Vo4"),r=n("qgXg"),i=n("HDdC"),s=n("pxpQ"),o=n("Kqap"),u=n("lJxs"),d=n("7o/Q");class l{constructor(t,e){this.compare=t,this.keySelector=e}call(t,e){return e.subscribe(new c(t,this.compare,this.keySelector))}}class c extends d.a{constructor(t,e,n){super(t),this.keySelector=n,this.hasKey=!1,"function"==typeof e&&(this.compare=e)}compare(t,e){return t===e}_next(t){let e;try{const{keySelector:n}=this;e=n?n(t):t}catch(a){return this.destination.error(a)}let n=!1;if(this.hasKey)try{const{compare:t}=this;n=t(this.key,e)}catch(a){return this.destination.error(a)}else this.hasKey=!0;n||(this.key=e,this.destination.next(t))}}n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return h}));class f extends a.a{constructor(t,e,n){super(t),e.pipe(Object(s.b)(r.a)).pipe(Object(o.a)((t,e)=>e?n(t,e):t,t)).subscribe(t=>this.next(t))}}class h extends i.a{constructor(t,e,n){super(),this._dispatcher=t,this._reducer=e,this.source=n}select(t){return this.source.pipe(Object(u.a)(t)).pipe(t=>t.lift(new l(void 0,void 0)))}lift(t){const e=new h(this._dispatcher,this._reducer,this);return e.operator=t,e}dispatch(t){this._dispatcher.next(t)}next(t){this._dispatcher.next(t)}error(t){this._dispatcher.error(t)}complete(){}}},AiMb:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-CN">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切换导航</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>仪表盘</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>集群</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>对应的服务</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>配置项</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 索引</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>日志</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>块设备</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>镜像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>文件系统</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>请选择语言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在加载面板的相关数据…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 时间选择工具</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重新设置</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>无法加载数据。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>选中个数</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>命中个数</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>总数</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名称</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>解释</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>更详尽的解释</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>缺省值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>守护进程的缺省值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>可选值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>检查 CRUSH 索引图</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在加载…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主机名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>请填写此栏目!</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我确定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>关闭</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主机列表</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>总体性能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>无法找到相关条目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>集群日志</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>审计日志</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在加载相关配置信息...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>配置信息无法加载。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>编辑 Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>输入值不是有效的 UUID,如:67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>输入的应该是个有效的 IP 地址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>输入须为数字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>输入的应该是一个浮点数或者十进制整数。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>集群 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改时间</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con </target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>添加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>特性</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>集群范围的 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>高级设置…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 恢复优先级</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>优先级</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自定义优先级</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>这个字段是必填的!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>权重值必须在 0 和 1 之间</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重设权重</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度}}</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 列表</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>编辑</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>健康状况</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>统计数据</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>客户端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何客户端均可访问</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>地址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填项</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必须包含一个或多个逗号分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>访问类型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>添加客户端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 无可用集群 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 请选择一个集群 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>添加守护进程</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>存储后端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 没有可用的数据存储池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 请选择存储后端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>对象网关用户</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 无可选用户 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 请选择对象网关用户 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 用户 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 无可用客户端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 请选择 cephx 客户端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名称</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全标签</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>启用安全标签</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路径</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路径需以“/”开头,后面可跟单词</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>将创建新文件夹</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路径</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路径只能是单个“/”或单词</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>将创建新的桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 协议</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 标签</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>客户端不能装入子目录(即如果标记为 foo,则客户端无法装入 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同标记选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>伪</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同伪选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 没有可用的访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 选择访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 没有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>传输协议</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>欢迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>请输入用户名</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>请输入密码</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登录</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,此用户不存在。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止访问</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您无权访问这个页面。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 配置</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>删除本地的配置项,改用更高作用域的配置值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值为 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>存储池列表</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名称只能由字母、数字、短划线和下划线组成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>此纠删码配置名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>纠删码算法</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>数据块 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必须大于等于 2</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>校验块 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必须大于等于 1</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久因子 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>局部性因子 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 局部性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>无</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>packetsize</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 设备类型</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目录</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名称…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>此 Ceph 存储池名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>存储池类型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 请选择存储池的类型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>归置组 (PG)</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一个归置组!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的集群没法支持这么多的 PG。请重新计算需要的 PG 个数。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>在线 PG 计算器</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>标志</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 重写 (overwrite)</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>应用类型</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 无纠删码配置可选 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 请选择一个纠删码配置 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 算法规则组</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 选择 CRUSH 规则 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 规则</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步骤</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>压缩</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 无可用的纠删码压缩算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>比如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>取值必须大于 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>blob 大小上限</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>如 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>取值必须大于 blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比例</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>压缩率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>取值必须在 0.0 和 1.0 之间</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>详情</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>性能详情</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>缓存层详细信息</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>将映像移至回收站</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保护期一直到</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>无保护</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式有问题。请使用“YYYY-MM-DD HH:mm:ss”。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保护期限已经过了。请设置一个将来的日期,或者清空不填。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移动映像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概览</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密码</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>互认证用户</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>互认证密码</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用信息:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>无可用 iSCSI 目标</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>数据存储池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>对象数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>对象大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>供给容量</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>总供给容量</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>条带单元</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父节点</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>块存储名字前缀</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>order</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此设置会覆盖全局值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全局</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>该值为全局值。没有为此映像设置此选项的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允许使用“/”和“@”。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 没有可用的 RBD 存储池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 请选择存储池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用一个专用的数据池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>数据池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>为保存 RBD 的对象数据单独分配的存储池。</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您需要设置大一些的容量。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>条带</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>条带单元大小</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 选择条带单元大小 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>因为设置了条带个数,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>条带单元大小超过了对象大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>因为设置了条带单元大小,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>条带的个数必须大于 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您即将进行回滚操作</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清空回收站</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全选</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>存储池:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>存储池名称…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>恢复映像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>要恢复</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>输入映像的新名称,并点击</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名称</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>过期时间</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保护期限</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 结构图</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常无须改变这些默认参数值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>设置</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>后备存储</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>确认</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目标限定名</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 格式错误。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多信息</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目标的高级设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>端口</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>添加端口</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此映像的设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>添加映像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 身份验证</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>客户端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>授权人 IQN 必须唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>授权人属于群组。映像须在群组中进行设置。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>无项目添加。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>添加授权人</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>添加群组</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>回收站</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>已就绪</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>编辑存储池镜像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在禁用镜像功能前必须先移除同伴集群。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {编辑} other {添加} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>集群名称</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>集群名称无效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 无效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Monitor 地址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗号分割的地址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Monitor 地址无效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 密钥</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 编码的密钥...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 密钥必须是 base64 编码的。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>无法读取性能计数器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>守护进程列表</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在加载存储桶数据…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>输入值无效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所选名称已经被使用。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 请选择一个用户 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>开启</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引类型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>归置规则</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>标识</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>max marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改时间</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>zonegroup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>存储桶配额</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大数目</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>无限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大对象数目</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>用户名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 请选择用户名 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>访问密钥</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密密钥</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>冻结</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系统</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大存储桶数目</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>用户权限</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>用户配额</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>显示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 请选择一个类型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 请选择权限类型 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所选的子用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>读、写</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 密钥</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在加载用户数据…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>用户数据无法加载。 </target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所选的用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>无效的邮箱地址。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>此邮箱地址已被使用。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>存储桶个数的上限</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自定义</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 密钥</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>没有子用户。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>没有任何密钥。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>权限为空。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>空间无限制</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>空间上限</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>对象个数无限制</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>对象个数上限</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>设置的值必须 &gt;= 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>确认密码</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>密码和之前的输入不匹配。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>邮箱地址无效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您即将取消您自己用户的 "user read / update" 权限。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>如果您继续的话,您以后就没办法为其他用户添加或者删除角色了。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>您确实要继续吗?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>帮助</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文档</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>关于</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>仪表盘设置</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>用户管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登录的用户</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>OSD map</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>元数据不可用</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>相关元数据</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>写入请求</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>读取请求</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>直方图</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>下限</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>上限</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>来源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>级别</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在运行时更新(可编辑)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>可选项</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>参见</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>集群状态</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>manager 守护进程</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>metadata 服务器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 网关</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>客户端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>客户端吞吐量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>客户端读/写</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>恢复吞吐量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>洗刷</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>性能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>基本容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每个 OSD 的 PG 数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 状态</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>当前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>无可用端口。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>无可用映像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>无可用映像。请确保为目标添加一个映像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>无可用授权人。请确保为目标添加一个授权人。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>活动/优化自</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>实例</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>进度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>编辑模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>添加 peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>编辑 peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>删除 peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 本地</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 远程</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>镜像 peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>完全展开</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分层</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>互斥锁</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>object map(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>日志(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>无保护的</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照回滚</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>定点删除</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>备用服务</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活跃度</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新完成</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>该值可在运行时更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>服务器或客户端不会主动从 monitor 的配置数据库读取这个配置。\n 所以不能用“ceph config set ...”设置它。但是可以通过\n ceph.conf 或者用命令行进行配置。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>该配置只有在服务启动的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>该配置只在创建集群的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>该配置只在服务创建的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服务</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可编辑</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>启用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新连接,请稍候…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>外部地址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>活动会话</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止加入</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前被除名的 OSD 在启动之后,不会被加入集群</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止除名</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>在发现 OSD 没有响应之后一段时间,该 OSD 会被踢出集群。该标志会禁止这个功能。</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止启用</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允许 OSD 启动</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止停用</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>当前不受理对 OSD 的失效报告,因而 monitor 不会停用 OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暂停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暂停读写</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止洗刷</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深层洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已推迟</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止恢复</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 恢复已推迟</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>老版本的快照已全部升级</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 上的快照已全部转换完毕</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>在恢复时进行删除操作</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在恢复时,而非对齐阶段进行删除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 日志硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>为 pg 日志长度添加硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>除名</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>加入</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 丢失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已标记丢失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已销毁</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填量</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>最大活跃恢复请求数</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>最大单次恢复操作数</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>恢复/回填操作间隔睡眠时间</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>任务</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>严重程度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已启动</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>空闲</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>正常</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>运行中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警报</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>启用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>无文件系统</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待机</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>工作的守护进程</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 服务的配置还没有完成。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>传输</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 用户</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 文件系统</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(继承自全局配置)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>继承自全局配置</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>没有可用的守护进程。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>缓存模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>最少延迟赶出时间</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>最少延迟刷回时间</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目标器最大字节数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目标器最大对象数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>还没有任何应用标记</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>应用标记到了上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一个存储池最多能有四个应用标记。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>可用的字符为“_a-zA-Z0-9”</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>长度限制为 128 个字符</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>添加应用标记或根据其进行筛选</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>添加应用标记</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最后修改时间</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 规则集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>作用范围</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>读权限</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>新建</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系统角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新用户</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>继续</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您被自动登出,因为您的角色有了变动。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target> 各对象都被分割为数据块,分别存储于不同 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>计算各对象的编码块、并存储于不同 OSD 。\n编码块的数量等同于在不丢数据的前提下允许同时失效的 OSD 数量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasure 插件是最通用、最灵活的插件,\n也是 Ceph 纠删码存储池的默认插件。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>reed_sol_van 技术更灵活:它足以设置 k 和 m 值。 \ncauchy_good 技术更快,但你得谨慎地选择 packetsize 值。\nreed_sol_r6_op 、 liberation 、 blaum_roth 、 liber8tion 都是与 RAID6 等价的技术,\n它们只能配置为 m=2 。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target> 以 bytes 大小的包为单位进行编码。\n确定合适的包尺寸很难, \njerasure 文档对此有很详细的描述。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>用 jerasure 插件时,纠删码编码的对象存储在多个 OSD 上,\n丢失一个 OSD 的恢复过程需读取所有其他的 OSD 。\n比如 jerasure 的配置为 k=8 且 m=4 ,丢失一个 OSD 后需读取其他 11 个 OSD 才能恢复。\n\nlrc 纠删码插件创建的是局部校验块,这样只需较少的 OSD 即可恢复。\n比如 lrc 的配置为 k=8 、 m=4 且 l=4 ,它将为每四个 OSD 创建额外的校验块,\n当一个 OSD 丢失时,它只需四个 OSD 即可恢复,而不需要十一个。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>把编码块和数据块分组为大小为 locality 的集合。\n比如, k=4 且 m=2 时,若设置 locality=3 ,将会分组为大小为三的两组,\n这样各组都能自行恢复,无需从另一组读数据块。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定义的块集合将按哪种 crush 桶类型存储。\n比如,若设置为 rack ,大小为 l 块的各组将被存入不同的机架,\n此值会被用于创建类似 step choose rack 的规则集。\n如果没设置,就不会这样分组。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 插件封装了 ISA 库。它只能运行在 Intel 处理器上。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 插件包含两种 Reed Solomon 编码形式。\n设置为 reed_sol_van 表示用 Vandermonde 算法,设置为 cauchy 表示用 Cauchy 算法。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 插件封装了 multiple SHEC 库。\n与 Reed Solomon 编码相比,它能使 Ceph 更高效地恢复数据。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target> 奇偶校验块数量,它们在各自的计算范围内包含了各数据块。\n此数值被用作持久性估值。\n例如,假设 c=2 ,就是说不丟数据的情况下可损失 2 个 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>规则集第一步所指向的 CRUSH 桶之名,\n如 step take default 。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>确保两个编码块不会存在于同一故障域的桶里面。\n比如,假设故障域是 host ,就不会有两个编码块存储到同一主机;\n此值用于在规则集中创建类似 step chooseleaf host 的步骤。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 索引中的 crush 设备类名,\n将归置限制于特定类的设备(例如,ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>设置纠删码插件所在目录。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允许所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>只允许不修改服务器端数据的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>禁止读写,但是允许其他的操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>禁止读、写以及任何可能修改文件内容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止访问</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 选择优先级 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>信息</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>过去 5 分钟</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>过去 15 分钟</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>过去 30 分钟</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>过去 1 小时(默认)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>过去 3 小时</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>过去 6 小时</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>过去 12 小时</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>过去 24 小时</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到现在为止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>过去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上周的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上个星期</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本周</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本周以来</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>过去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上个月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>当月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月以来</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>过去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>过去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>过去 6 个月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>过去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年以来</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>过去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>过去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>无选中项目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消选择</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>达到选择项数上限。</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>过滤标签</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>添加 badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>无可选项目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>标记为停用</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>标记为加入</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>标记为丢失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>标记为已除名</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保护</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>恢复</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至回收站</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>解除保护</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>删除完成</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>克隆完成</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>复制完成</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>展开完成</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>回滚完成</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服务质量 (QoS)</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>读 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒内读取的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>读 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒读操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>写 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒内写入的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>写 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒写操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>读 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的读取的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>读 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的读操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>写 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的写入的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>写 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的写操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在执行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>执行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>执行完毕</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任务</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在创建</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在删除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在复制</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在展开</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在回滚</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>无法找到映像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有存储池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>因为包含同伴集群,无法禁用镜像功能</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Avrn:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("aexS"),r=n("8Y7J"),i=n("iInd");let s=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"]),!1)}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.m),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},AvvY:function(t,e,n){!function(t){"use strict";t.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(t,e){return 12===t&&(t=0),"രാത്രി"===e&&t>=4||"ഉച്ച കഴിഞ്ഞ്"===e||"വൈകുന്നേരം"===e?t+12:t},meridiem:function(t,e,n){return t<4?"രാത്രി":t<12?"രാവിലെ":t<17?"ഉച്ച കഴിഞ്ഞ്":t<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("wd/R"))},AxL3:function(t,e){var n=!("undefined"==typeof window||!window.document||!window.document.createElement);t.exports=n},B55N:function(t,e,n){!function(t){"use strict";t.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,n){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()<t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("wd/R"))},B8du:function(t,e){t.exports=function(){return!1}},BFxc:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return function(e){return 0===t?Object(i.b)():e.lift(new o(t))}}class o{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new u(t,this.total))}}class u extends a.a{constructor(t,e){super(t),this.total=e,this.ring=new Array,this.count=0}_next(t){const e=this.ring,n=this.total,a=this.count++;e.length<n?e.push(t):e[a%n]=t}_complete(){const t=this.destination;let e=this.count;if(e>0){const n=this.count>=this.total?this.total:this.count,a=this.ring;for(let r=0;r<n;r++){const r=e++%n;t.next(a[r])}}t.complete()}}},BQkM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return`${t} IOPS`}}},BVg3:function(t,e,n){!function(t){"use strict";function e(t){return t%100==11||t%10!=1}function n(t,n,a,r){var i=t+" ";switch(a){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return e(t)?i+(n||r?"sekúndur":"sekúndum"):i+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return e(t)?i+(n||r?"mínútur":"mínútum"):n?i+"mínúta":i+"mínútu";case"hh":return e(t)?i+(n||r?"klukkustundir":"klukkustundum"):i+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return e(t)?n?i+"dagar":i+(r?"daga":"dögum"):n?i+"dagur":i+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return e(t)?n?i+"mánuðir":i+(r?"mánuði":"mánuðum"):n?i+"mánuður":i+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return e(t)?i+(n||r?"ár":"árum"):i+(n||r?"ár":"ári")}}t.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},BiGR:function(t,e,n){var a=n("nmnc"),r=n("03A+"),i=n("Z0cm"),s=a?a.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||r(t)||!!(s&&t&&t[s])}},Bs8V:function(t,e,n){var a=n("g6v/"),r=n("0eef"),i=n("XGwC"),s=n("/GqU"),o=n("wE6v"),u=n("UTVS"),d=n("DPsx"),l=Object.getOwnPropertyDescriptor;e.f=a?l:function(t,e){if(t=s(t),e=o(e,!0),d)try{return l(t,e)}catch(n){}if(u(t,e))return i(!r.f.call(t,e),t[e])}},ByF4:function(t,e,n){!function(t){"use strict";t.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},C523:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(t,e,n,a){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=a,this.dragEventHandler=this.onDrag.bind(this)}return t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("drag",t.dragEventHandler)}))},t.prototype.ngDoCheck=function(){this.renderer.setAttribute(this.el.nativeElement,"draggable",this.treeDragEnabled?"true":"false")},t.prototype.ngOnDestroy=function(){this.el.nativeElement.removeEventListener("drag",this.dragEventHandler)},t.prototype.onDragStart=function(t){t.dataTransfer.setData("text",t.target.id),this.treeDraggedElement.set(this.draggedElement),this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragStart",t)},t.prototype.onDrag=function(t){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("drag",t)},t.prototype.onDragEnd=function(){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragEnd"),this.treeDraggedElement.set(null)},i([Object(a.Input)("treeDrag"),s("design:type",Object)],t.prototype,"draggedElement",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeDragEnabled",void 0),i([Object(a.HostListener)("dragstart",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDragStart",null),i([Object(a.HostListener)("dragend"),s("design:type",Function),s("design:paramtypes",[]),s("design:returntype",void 0)],t.prototype,"onDragEnd",null),i([Object(a.Directive)({selector:"[treeDrag]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},C6Ij:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),o=n("SVse");n("AWcq"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return p}));var u=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","info"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Retrieving data"])),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please wait..."]))],(function(t,e){var n=e.component;t(e,1,0,"info"),t(e,5,0,n.statusFor)}),null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","warning"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Displaying previously cached data"])),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["."]))],(function(t,e){var n=e.component;t(e,1,0,"warning"),t(e,5,0,n.statusFor)}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Could not load data"])),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please check the cluster health."]))],(function(t,e){var n=e.component;t(e,1,0,"error"),t(e,5,0,n.statusFor)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.status===n.vcs.ValueNone),t(e,3,0,n.status===n.vcs.ValueStale),t(e,5,0,n.status===n.vcs.ValueException)}),null)}},CFvb:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={LEFT:37,UP:38,RIGHT:39,DOWN:40,ENTER:13,SPACE:32,CONTEXT_MENU:32}},CH3K:function(t,e){t.exports=function(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}},CMye:function(t,e,n){var a=n("GoyQ");t.exports=function(t){return t==t&&!a(t)}},CNMR:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return u}));var a=n("mrSG"),r=n("8Y7J"),i=n("hpHm");class s{constructor(){this.type="warning",this.dismissible=!1,this.dismissOnTimeout=void 0}}let o=(()=>{class t{constructor(t,e){this.changeDetection=e,this.type="warning",this.dismissible=!1,this.isOpen=!0,this.onClose=new r.EventEmitter,this.onClosed=new r.EventEmitter,this.classes="",this.dismissibleChange=new r.EventEmitter,Object.assign(this,t),this.dismissibleChange.subscribe(t=>{this.classes=this.dismissible?"alert-dismissible":"",this.changeDetection.markForCheck()})}ngOnInit(){this.dismissOnTimeout&&setTimeout(()=>this.close(),parseInt(this.dismissOnTimeout,10))}close(){this.isOpen&&(this.onClose.emit(this),this.isOpen=!1,this.changeDetection.markForCheck(),this.onClosed.emit(this))}}return Object(a.__decorate)([Object(i.a)(),Object(a.__metadata)("design:type",Object)],t.prototype,"dismissible",void 0),t})();class u{static forRoot(){return{ngModule:u,providers:[s]}}}},CZoQ:function(t,e){t.exports=function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}},Cfvw:function(t,e,n){"use strict";var a=n("HDdC"),r=n("SeVD"),i=n("quSY"),s=n("kJWO"),o=n("jZKg"),u=n("Lhse"),d=n("c2HN"),l=n("I55L");function c(t,e){return e?function(t,e){if(null!=t){if(function(t){return t&&"function"==typeof t[s.a]}(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>{const r=t[s.a]();a.add(r.subscribe({next(t){a.add(e.schedule(()=>n.next(t)))},error(t){a.add(e.schedule(()=>n.error(t)))},complete(){a.add(e.schedule(()=>n.complete()))}}))})),a})}(t,e);if(Object(d.a)(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>t.then(t=>{a.add(e.schedule(()=>{n.next(t),a.add(e.schedule(()=>n.complete()))}))},t=>{a.add(e.schedule(()=>n.error(t)))}))),a})}(t,e);if(Object(l.a)(t))return Object(o.a)(t,e);if(function(t){return t&&"function"==typeof t[u.a]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.a(n=>{const a=new i.a;let r;return a.add(()=>{r&&"function"==typeof r.return&&r.return()}),a.add(e.schedule(()=>{r=t[u.a](),a.add(e.schedule((function(){if(n.closed)return;let t,e;try{const n=r.next();t=n.value,e=n.done}catch(a){return void n.error(a)}e?n.complete():(n.next(t),this.schedule())})))})),a})}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}(t,e):t instanceof a.a?t:new a.a(Object(r.a)(t))}n.d(e,"a",(function(){return c}))},ChqD:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},CjzT:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},CoRJ:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n("wd/R"))},CoVI:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("2vnA"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(t,e){this.templateRef=t,this.viewContainer=e,this.templateBindings={}}return t.prototype.ngOnInit=function(){this.view=this.viewContainer.createEmbeddedView(this.templateRef),this.dispose&&this.dispose(),this.shouldDetach()&&this.view.detach(),this.autoDetect(this.view)},t.prototype.shouldDetach=function(){return this.treeMobxAutorun&&this.treeMobxAutorun.detach},t.prototype.autoDetect=function(t){this.dispose=Object(r.b)((function(){return t.detectChanges()}))},t.prototype.ngOnDestroy=function(){this.dispose&&this.dispose()},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeMobxAutorun",void 0),i([Object(a.Directive)({selector:"[treeMobxAutorun]"}),s("design:paramtypes",[a.TemplateRef,a.ViewContainerRef])],t)}()},Cwc5:function(t,e,n){var a=n("NKxu"),r=n("Npjl");t.exports=function(t,e){var n=r(t,e);return a(n)?n:void 0}},CxY0:function(t,e,n){"use strict";var a=n("nYho"),r=n("Nehr");function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=v,e.resolve=function(t,e){return v(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?v(t,!1,!0).resolveObject(e):e},e.format=function(t){return r.isString(t)&&(t=v(t)),t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var s=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,d=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(d),c=["%","/","?",";","#"].concat(l),f=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n("r8II");function v(t,e,n){if(t&&r.isObject(t)&&t instanceof i)return t;var a=new i;return a.parse(t,e,n),a}i.prototype.parse=function(t,e,n){if(!r.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),o=-1!==i&&i<t.indexOf("#")?"?":"#",d=t.split(o);d[0]=d[0].replace(/\\/g,"/");var v=t=d.join(o);if(v=v.trim(),!n&&1===t.split("#").length){var x=u.exec(v);if(x)return this.path=v,this.href=v,this.pathname=x[1],x[2]?(this.search=x[2],this.query=e?y.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var _=s.exec(v);if(_){var T=(_=_[0]).toLowerCase();this.protocol=T,v=v.substr(_.length)}if(n||_||v.match(/^\/\/[^@\/]+@[^@\/]+/)){var O="//"===v.substr(0,2);!O||_&&b[_]||(v=v.substr(2),this.slashes=!0)}if(!b[_]&&(O||_&&!m[_])){for(var w,S,I=-1,N=0;N<f.length;N++)-1!==(C=v.indexOf(f[N]))&&(-1===I||C<I)&&(I=C);for(-1!==(S=-1===I?v.lastIndexOf("@"):v.lastIndexOf("@",I))&&(w=v.slice(0,S),v=v.slice(S+1),this.auth=decodeURIComponent(w)),I=-1,N=0;N<c.length;N++){var C;-1!==(C=v.indexOf(c[N]))&&(-1===I||C<I)&&(I=C)}-1===I&&(I=v.length),this.host=v.slice(0,I),v=v.slice(I),this.parseHost(),this.hostname=this.hostname||"";var R="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!R)for(var A=this.hostname.split(/\./),k=(N=0,A.length);N<k;N++){var E=A[N];if(E&&!E.match(h)){for(var L="",D=0,P=E.length;D<P;D++)E.charCodeAt(D)>127?L+="x":L+=E[D];if(!L.match(h)){var M=A.slice(0,N),q=A.slice(N+1),j=E.match(g);j&&(M.push(j[1]),q.unshift(j[2])),q.length&&(v="/"+q.join(".")+v),this.hostname=M.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),R||(this.hostname=a.toASCII(this.hostname)),this.host=(this.hostname||"")+(this.port?":"+this.port:""),this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==v[0]&&(v="/"+v))}if(!p[T])for(N=0,k=l.length;N<k;N++){var F=l[N];if(-1!==v.indexOf(F)){var G=encodeURIComponent(F);G===F&&(G=escape(F)),v=v.split(F).join(G)}}var V=v.indexOf("#");-1!==V&&(this.hash=v.substr(V),v=v.slice(0,V));var z=v.indexOf("?");return-1!==z?(this.search=v.substr(z),this.query=v.substr(z+1),e&&(this.query=y.parse(this.query)),v=v.slice(0,z)):e&&(this.search="",this.query={}),v&&(this.pathname=v),m[T]&&this.hostname&&!this.pathname&&(this.pathname="/"),(this.pathname||this.search)&&(this.path=(this.pathname||"")+(this.search||"")),this.href=this.format(),this},i.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",a=this.hash||"",i=!1,s="";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&r.isObject(this.query)&&Object.keys(this.query).length&&(s=y.stringify(this.query));var o=this.search||s&&"?"+s||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||m[e])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),a&&"#"!==a.charAt(0)&&(a="#"+a),o&&"?"!==o.charAt(0)&&(o="?"+o),e+i+(n=n.replace(/[?#]/g,(function(t){return encodeURIComponent(t)})))+(o=o.replace("#","%23"))+a},i.prototype.resolve=function(t){return this.resolveObject(v(t,!1,!0)).format()},i.prototype.resolveObject=function(t){if(r.isString(t)){var e=new i;e.parse(t,!1,!0),t=e}for(var n=new i,a=Object.keys(this),s=0;s<a.length;s++){var o=a[s];n[o]=this[o]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var u=Object.keys(t),d=0;d<u.length;d++){var l=u[d];"protocol"!==l&&(n[l]=t[l])}return m[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!m[t.protocol]){for(var c=Object.keys(t),f=0;f<c.length;f++){var h=c[f];n[h]=t[h]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||b[t.protocol])n.pathname=t.pathname;else{for(var g=(t.pathname||"").split("/");g.length&&!(t.host=g.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==g[0]&&g.unshift(""),g.length<2&&g.unshift(""),n.pathname=g.join("/")}return n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,(n.pathname||n.search)&&(n.path=(n.pathname||"")+(n.search||"")),n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var p=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),v=y||p||n.host&&t.pathname,x=v,_=n.pathname&&n.pathname.split("/")||[],T=(g=t.pathname&&t.pathname.split("/")||[],n.protocol&&!m[n.protocol]);if(T&&(n.hostname="",n.port=null,n.host&&(""===_[0]?_[0]=n.host:_.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===g[0]?g[0]=t.host:g.unshift(t.host)),t.host=null),v=v&&(""===g[0]||""===_[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,_=g;else if(g.length)_||(_=[]),_.pop(),_=_.concat(g),n.search=t.search,n.query=t.query;else if(!r.isNullOrUndefined(t.search))return T&&(n.hostname=n.host=_.shift(),(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.host=n.hostname=N.shift())),n.search=t.search,n.query=t.query,r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!_.length)return n.pathname=null,n.path=n.search?"/"+n.search:null,n.href=n.format(),n;for(var O=_.slice(-1)[0],w=(n.host||t.host||_.length>1)&&("."===O||".."===O)||""===O,S=0,I=_.length;I>=0;I--)"."===(O=_[I])?_.splice(I,1):".."===O?(_.splice(I,1),S++):S&&(_.splice(I,1),S--);if(!v&&!x)for(;S--;S)_.unshift("..");!v||""===_[0]||_[0]&&"/"===_[0].charAt(0)||_.unshift(""),w&&"/"!==_.join("/").substr(-1)&&_.push("");var N,C=""===_[0]||_[0]&&"/"===_[0].charAt(0);return T&&(n.hostname=n.host=C?"":_.length?_.shift():"",(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.host=n.hostname=N.shift())),(v=v||n.host&&_.length)&&!C&&_.unshift(""),_.length?n.pathname=_.join("/"):(n.pathname=null,n.path=null),r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var t=this.host,e=o.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},"D/JM":function(t,e,n){!function(t){"use strict";t.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},D0XW:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("3N8a");const r=new(n("IjjT").a)(a.a)},D4zM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.elementRef=t,this.renderer=e}ngOnInit(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()}getInputElement(){return document.getElementById(this.cdPasswordButton)}update(){const t=this.getInputElement();t&&"text"===t.type?(this.renderer.removeClass(this.iElement,"fa-eye"),this.renderer.addClass(this.iElement,"fa-eye-slash")):(this.renderer.removeClass(this.iElement,"fa-eye-slash"),this.renderer.addClass(this.iElement,"fa-eye"))}onClick(){const t=this.getInputElement();t.type="password"===t.type?"text":"password",this.update()}}},DH7j:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>Array.isArray||(t=>t&&"number"==typeof t.length))()},"DKr+":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["thodde secondanim","thodde second"],ss:[t+" secondanim",t+" second"],m:["eka mintan","ek minute"],mm:[t+" mintanim",t+" mintam"],h:["eka voran","ek vor"],hh:[t+" voranim",t+" voram"],d:["eka disan","ek dis"],dd:[t+" disanim",t+" dis"],M:["eka mhoinean","ek mhoino"],MM:[t+" mhoineanim",t+" mhoine"],y:["eka vorsan","ek voros"],yy:[t+" vorsanim",t+" vorsam"]};return e?r[n][0]:r[n][1]}t.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(t,e){switch(e){case"D":return t+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return t}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(t,e){return 12===t&&(t=0),"rati"===e?t<4?t:t+12:"sokalli"===e?t:"donparam"===e?t>12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokalli":t<16?"donparam":t<20?"sanje":"rati"}})}(n("wd/R"))},DNAf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t,e){this.customValidations={},this.i18n=e,this.empty=this.i18n("No items selected."),this.selectionLimit={tooltip:this.i18n("Deselect item to select again"),text:this.i18n("Selection limit reached")},this.filter=this.i18n("Filter tags"),this.add=this.i18n("Add badge"),this.noOptions=this.i18n("There are no items available."),a.merge(this,t)}}},DPsx:function(t,e,n){var a=n("g6v/"),r=n("0Dky"),i=n("zBJ4");t.exports=!a&&!r((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},DSRE:function(t,e,n){(function(t){var a=n("Kz5y"),r=n("B8du"),i=e&&!e.nodeType&&e,s=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=s&&s.exports===i?a.Buffer:void 0;t.exports=(o?o.isBuffer:void 0)||r}).call(this,n("YuTi")(t))},DSvg:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("vkgz"),r=n("aexS"),i=n("8Y7J"),s=n("IheW"),o=n("iInd"),u=n("pL04");let d=(()=>{class t{constructor(t,e,n){this.authStorageService=t,this.http=e,this.router=n}check(t){return this.http.post("api/auth/check",{token:t})}login(t){return this.http.post("api/auth",t).pipe(Object(a.a)(t=>{this.authStorageService.set(t.username,t.token,t.permissions,t.sso,t.pwdExpirationDate,t.pwdUpdateRequired)}))}logout(t=null){return this.http.post("api/auth/logout",null).subscribe(e=>{this.router.navigate(["/login"],{skipLocationChange:!0}),this.authStorageService.remove(),t&&t(),window.location.replace(e.redirect_url)})}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](r.a),i["ɵɵinject"](s.c),i["ɵɵinject"](o.m))},token:t,providedIn:u.a}),t})()},Dkky:function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},Dmvi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},DoHr:function(t,e,n){!function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};t.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'ıncı";var a=t%10;return t+(e[a]||e[t%100-a]||e[t>=100?100:null])}},week:{dow:1,doy:7}})}(n("wd/R"))},DqMs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("IZUe"),s=n("MdoF"),o=n("CNMR");n("/NlG"),n("GiVz"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return v}));var u=a["ɵcrt"]({encapsulation:0,styles:[[".alert-panel-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:.5em}.alert-panel-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"td",[["class","alert-panel-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpad"](4,1)],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""),i=t(e,4,0,n.icons.large3x);t(e,3,0,r,i)}),null)}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](9,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.showIcon),t(e,5,0,n.showTitle),t(e,9,0,a["ɵnov"](e.parent,6))}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"i",[["aria-hidden","true"]],[[8,"className",0]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""))}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.showIcon),t(e,4,0,n.showTitle),t(e,7,0,a["ɵnov"](e.parent,6))}),null)}function m(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"button",[["autofocus",""],["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.backAction.emit()&&a),a}),null,null)),a["ɵdid"](2,4210688,null,0,i.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),(t()(),a["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,2,0,"")}),null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"alert",[],null,null,null,s.c,s.b)),a["ɵdid"](1,114688,null,0,o.a,[o.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,3,"table",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["slim",2]],null,0,null,b)),(t()(),a["ɵand"](0,[["content",2]],null,0,null,m)),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](8,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.bootstrapClass,"")),t(e,4,0,"normal"===n.size,a["ɵnov"](e,5)),t(e,8,0,n.backAction.observers.length>0)}),null)}},"Dw+G":function(t,e,n){var a=n("juv8"),r=n("mTTR");t.exports=function(t,e){return t&&a(e,r(e),t)}},Dwqy:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("wd/R");class r{constructor(){}transform(t){return t?a(1e3*t).fromNow():"unknown"}}},DxQv:function(t,e,n){!function(t){"use strict";t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},DzJC:function(t,e,n){var a=n("sEfC"),r=n("GoyQ");t.exports=function(t,e,n){var i=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return r(n)&&(i="leading"in n?!!n.leading:i,s="trailing"in n?!!n.trailing:s),a(t,e,{leading:i,maxWait:e,trailing:s})}},Dzi0:function(t,e,n){!function(t){"use strict";t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},"E+lV":function(t,e,n){!function(t){"use strict";var e={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},E2fk:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return"[INF]"===t?"info":"[WRN]"===t?"warn":"[ERR]"===t?"err":""}}},E2jh:function(t,e,n){var a,r=n("2gN3"),i=(a=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";t.exports=function(t){return!!i&&i in t}},E9XD:function(t,e,n){"use strict";var a=n("I+eb"),r=n("1Y/n").left,i=n("pkCn"),s=n("rkAj"),o=i("reduce"),u=s("reduce",{1:0});a({target:"Array",proto:!0,forced:!o||!u},{reduce:function(t){return r(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},EA7m:function(t,e,n){var a=n("zZ0H"),r=n("Ioao"),i=n("wclG");t.exports=function(t,e){return i(r(t,e,a),t+"")}},EApP:function(t,e,n){"use strict";n.d(e,"a",(function(){return _})),n.d(e,"b",(function(){return l})),n.d(e,"c",(function(){return v})),n.d(e,"d",(function(){return o})),n.d(e,"e",(function(){return S})),n.d(e,"f",(function(){return N})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return O})),n.d(e,"i",(function(){return T})),n.d(e,"j",(function(){return y}));var a=n("8Y7J"),r=n("XNiG"),i=n("cUpR"),s=n("SVse");let o=class{};class u{constructor(t,e,n,a,i,s){this.toastId=t,this.config=e,this.message=n,this.title=a,this.toastType=i,this.toastRef=s,this._onTap=new r.a,this._onAction=new r.a,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(t){this._onAction.next(t)}onAction(){return this._onAction.asObservable()}}const d={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing"},l=new a.InjectionToken("ToastConfig");class c{constructor(t,e){this.component=t,this.injector=e}attach(t,e){return this._attachedHost=t,t.attach(this,e)}detach(){const t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()}get isAttached(){return null!=this._attachedHost}setAttachedHost(t){this._attachedHost=t}}class f extends class{attach(t,e){return this._attachedPortal=t,this.attachComponentPortal(t,e)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(t){this._disposeFn=t}}{constructor(t,e,n){super(),this._hostDomElement=t,this._componentFactoryResolver=e,this._appRef=n}attachComponentPortal(t,e){const n=this._componentFactoryResolver.resolveComponentFactory(t.component);let a;return a=n.create(t.injector),this._appRef.attachView(a.hostView),this.setDisposeFn(()=>{this._appRef.detachView(a.hostView),a.destroy()}),e?this._hostDomElement.insertBefore(this._getComponentRootNode(a),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(a)),a}_getComponentRootNode(t){return t.hostView.rootNodes[0]}}let h=(()=>{let t=class{constructor(t){this._document=t}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const t=this._document.createElement("div");t.classList.add("overlay-container"),this._document.body.appendChild(t),this._containerElement=t}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class g{constructor(t){this._portalHost=t}attach(t,e=!0){return this._portalHost.attach(t,e)}detach(){return this._portalHost.detach()}}let p=(()=>{let t=class{constructor(t,e,n,a){this._overlayContainer=t,this._componentFactoryResolver=e,this._appRef=n,this._document=a,this._paneElements=new Map}create(t,e){return this._createOverlayRef(this.getPaneElement(t,e))}getPaneElement(t="",e){return this._paneElements.get(e)||this._paneElements.set(e,{}),this._paneElements.get(e)[t]||(this._paneElements.get(e)[t]=this._createPaneElement(t,e)),this._paneElements.get(e)[t]}_createPaneElement(t,e){const n=this._document.createElement("div");return n.id="toast-container",n.classList.add(t),n.classList.add("toast-container"),e?e.getContainerElement().appendChild(n):this._overlayContainer.getContainerElement().appendChild(n),n}_createPortalHost(t){return new f(t,this._componentFactoryResolver,this._appRef)}_createOverlayRef(t){return new g(this._createPortalHost(t))}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(h),Object(a["ɵɵinject"])(a.ComponentFactoryResolver),Object(a["ɵɵinject"])(a.ApplicationRef),Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class b{constructor(t){this._overlayRef=t,this.duplicatesCount=0,this._afterClosed=new r.a,this._activate=new r.a,this._manualClose=new r.a,this._resetTimeout=new r.a,this._countDuplicate=new r.a}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(t,e){t&&this._resetTimeout.next(),e&&this._countDuplicate.next(++this.duplicatesCount)}}class m{constructor(t,e){this._toastPackage=t,this._parentInjector=e}get(t,e,n){return t===u?this._toastPackage:this._parentInjector.get(t,e,n)}}let y=(()=>{let t=class{constructor(t,e,n,a,r){this.overlay=e,this._injector=n,this.sanitizer=a,this.ngZone=r,this.currentlyActive=0,this.toasts=[],this.index=0,this.toastrConfig=Object.assign({},t.default,t.config),t.config.iconClasses&&(this.toastrConfig.iconClasses=Object.assign({},t.default.iconClasses,t.config.iconClasses))}show(t,e,n={},a=""){return this._preBuildNotification(a,t,e,this.applyConfig(n))}success(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.success||"",t,e,this.applyConfig(n))}error(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.error||"",t,e,this.applyConfig(n))}info(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.info||"",t,e,this.applyConfig(n))}warning(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",t,e,this.applyConfig(n))}clear(t){for(const e of this.toasts)if(void 0!==t){if(e.toastId===t)return void e.toastRef.manualClose()}else e.toastRef.manualClose()}remove(t){const e=this._findToast(t);if(!e)return!1;if(e.activeToast.toastRef.close(),this.toasts.splice(e.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length)return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){const t=this.toasts[this.currentlyActive].toastRef;t.isInactive()||(this.currentlyActive=this.currentlyActive+1,t.activate())}return!0}findDuplicate(t,e,n){for(const a of this.toasts)if(a.message===t)return a.toastRef.onDuplicate(e,n),a;return null}applyConfig(t={}){return Object.assign({},this.toastrConfig,t)}_findToast(t){for(let e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===t)return{index:e,activeToast:this.toasts[e]};return null}_preBuildNotification(t,e,n,a){return a.onActivateTick?this.ngZone.run(()=>this._buildNotification(t,e,n,a)):this._buildNotification(t,e,n,a)}_buildNotification(t,e,n,r){if(!r.toastComponent)throw new Error("toastComponent required");const i=this.findDuplicate(e,this.toastrConfig.resetTimeoutOnDuplicate&&r.timeOut>0,this.toastrConfig.countDuplicates);if(e&&this.toastrConfig.preventDuplicates&&null!==i)return i;this.previousToastMessage=e;let s=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(s=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));const o=this.overlay.create(r.positionClass,this.overlayContainer);this.index=this.index+1;let d=e;e&&r.enableHtml&&(d=this.sanitizer.sanitize(a.SecurityContext.HTML,e));const l=new b(o),f=new u(this.index,r,d,n,t,l),h=new m(f,this._injector),g=new c(r.toastComponent,h),p=o.attach(g,this.toastrConfig.newestOnTop);l.componentInstance=p._component;const y={toastId:this.index,message:e||"",toastRef:l,onShown:l.afterActivate(),onHidden:l.afterClosed(),onTap:f.onTap(),onAction:f.onAction(),portal:p};return s||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{y.toastRef.activate()})),this.toasts.push(y),y}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(l),Object(a["ɵɵinject"])(p),Object(a["ɵɵinject"])(a.INJECTOR),Object(a["ɵɵinject"])(i.b),Object(a["ɵɵinject"])(a.NgZone))},token:t,providedIn:"root"}),t})(),v=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.ngZone=n,this.width=-1,this.toastClasses="",this.state={value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}},this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state.value)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state=Object.assign({},this.state,{value:"active"}),!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object.assign({},this.state,{value:"active"}),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object.assign({},this.state,{value:"removed"}),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state.value&&(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(t),e)):this.timeout=setTimeout(()=>t(),e)}outsideInterval(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(t),e)):this.intervalId=setInterval(()=>t(),e)}runInsideAngular(t){this.ngZone?this.ngZone.run(()=>t()):t()}};var x;const _=Object.assign({},d,{toastComponent:v});let T=x=class{static forRoot(t={}){return{ngModule:x,providers:[{provide:l,useValue:{default:_,config:t}}]}}},O=class{static forRoot(t={}){return{ngModule:T,providers:[{provide:l,useValue:{default:d,config:t}}]}}};var w;let S=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.appRef=n,this.width=-1,this.toastClasses="",this.state="inactive",this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state="active",!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state&&(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}};const I=Object.assign({},d,{toastComponent:S});let N=w=class{static forRoot(t={}){return{ngModule:w,providers:[{provide:l,useValue:{default:I,config:t}}]}}}},EEGq:function(t,e,n){var a=n("juv8"),r=n("oCl/");t.exports=function(t,e){return a(t,r(t),e)}},EEJc:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("ajRT");n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return s})),n.d(e,"a",(function(){return u}));var i=a["ɵcrt"]({encapsulation:0,styles:[[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:5px 5px 0 0}  .modal-footer{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:0 0 5px 5px}  .modal-body{max-height:70vh;overflow-y:auto;overflow-x:hidden}"]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"h4",[["class","modal-title float-left"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),a["ɵncd"](null,1)],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-modal",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.a,[],null,null)],null,null)}var u=a["ɵccf"]("cd-modal",r.a,o,{modalRef:"modalRef"},{hide:"hide"},[".modal-title",".modal-content"])},ENF9:function(t,e,n){"use strict";var a,r=n("2oRo"),i=n("4syw"),s=n("8YOa"),o=n("bWFh"),u=n("rKzb"),d=n("hh1v"),l=n("afO8").enforce,c=n("f5p1"),f=!r.ActiveXObject&&"ActiveXObject"in r,h=Object.isExtensible,g=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},p=t.exports=o("WeakMap",g,u);if(c&&f){a=u.getConstructor(g,"WeakMap",!0),s.REQUIRED=!0;var b=p.prototype,m=b.delete,y=b.has,v=b.get,x=b.set;i(b,{delete:function(t){if(d(t)&&!h(t)){var e=l(this);return e.frozen||(e.frozen=new a),m.call(this,t)||e.frozen.delete(t)}return m.call(this,t)},has:function(t){if(d(t)&&!h(t)){var e=l(this);return e.frozen||(e.frozen=new a),y.call(this,t)||e.frozen.has(t)}return y.call(this,t)},get:function(t){if(d(t)&&!h(t)){var e=l(this);return e.frozen||(e.frozen=new a),y.call(this,t)?v.call(this,t):e.frozen.get(t)}return v.call(this,t)},set:function(t,e){if(d(t)&&!h(t)){var n=l(this);n.frozen||(n.frozen=new a),y.call(this,t)?x.call(this,t,e):n.frozen.set(t,e)}else x.call(this,t,e);return this}})}},EOgW:function(t,e,n){!function(t){"use strict";t.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(t){return"หลังเที่ยง"===t},meridiem:function(t,e,n){return t<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("wd/R"))},ES0t:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("KOzp"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".bs3.popover-top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .popover.bottom[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -4px;\n    }\n    .bs3.bs-popover-left[_nghost-%COMP%] {\n      margin-right: .5rem;\n    }\n    .bs3.bs-popover-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-popover-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%]{\n      margin: .3rem 0;\n    }"],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"h3",[["class","popover-title popover-header"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function u(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","popover-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"div",[["class","popover-content popover-body"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){t(e,2,0,e.component.title)}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"popover-container",[["role","tooltip"],["style","display:block;"]],[[8,"className",0],[2,"show",null],[2,"bs3",null]],null,null,u,s)),a["ɵdid"](1,49152,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"popover in popover-"+a["ɵnov"](e,1).placement+" bs-popover-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3)}))}var l=a["ɵccf"]("popover-container",r.b,d,{placement:"placement",title:"title"},{},["*"])},EY2u:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("HDdC");const r=new a.a(t=>t.complete());function i(t){return t?function(t){return new a.a(e=>t.schedule(()=>e.complete()))}(t):r}},EgGo:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("SVse"),r=n("sne2");class i{constructor(t){this.base=t}static concatURLSegments(t){return t.reduce(a.Location.joinWithSlash)}static buildURL(t,...e){return i.concatURLSegments([...t?["/"]:[],...e])}getURL(t,e=!0,...n){return i.buildURL(e,this.base,t,...n)}getCreate(t=!0){return this.getURL(r.e.CREATE,t)}getCreateFrom(t,e=!0){return this.getURL(r.e.CREATE,e,t)}getDelete(t=!0){return this.getURL(r.e.DELETE,t)}getEdit(t,e=!0){return this.getURL(r.e.EDIT,e,t)}getUpdate(t,e=!0){return this.getURL(r.e.UPDATE,e,t)}getAdd(t=!0){return this.getURL(r.e.ADD,t)}getRemove(t=!0){return this.getURL(r.e.REMOVE,t)}getRecreate(t,e=!0){return this.getURL(r.e.RECREATE,e,t)}}},EiPl:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="de-DE">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Navigation umschalten</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitore</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH-Zuordnung</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager-Module</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Protokolle</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Überwachung</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Block</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Spiegelung</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektgateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Daten \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>werden abgerufen. Bitte warten...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zuvor zwischengespeicherte Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  für \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> werden angezeigt.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> konnten nicht geladen werden.\n  Prüfen Sie die Clusterintegrität.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Benachrichtigungen löschen</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Benachrichtigungen entfernen</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Dauer:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Es sind keine Benachrichtigungen verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Aufträge und Benachrichtigungen</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sprache auswählen</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Bereichsdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Überwachungsfunktion.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Das Grafana-Dashboard ist nicht vorhanden. In der\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> wird beschrieben,\n  wie Grafana Dashboards hinzugefügt werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana-Zeitauswahl</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Einstellungen für Zurücksetzungen</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Entfernen Sie den aktuellen Konfigurationswert. Stattdessen wird der Standard-Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zurück</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>weniger als 1 \n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag(en) ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Das Modul "Orchestrator" ist nicht verfügbar. Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>zum Konfigurieren und Aktivieren dieses Moduls.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Daten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Filter löschen</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>ausgewählt</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>gefunden</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>insgesamt</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Name</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Detaillierte Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Standard</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon-Standard</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Werte</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Standard --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>wahr</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>falsch</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Speichern</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH-Betrachter</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Laden...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Hostname</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Dies ist ein Pflichtfeld.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Der ausgewählte Hostname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten Einträge \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ja, ich bin sicher.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Abbrechen</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Schließen</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste mit Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Gesamtleistung</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Keine Einträge gefunden</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Clusterprotokolle</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Revisionsprotokoll</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorität:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Schlüsselwort:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datumsauswahl</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Zeitraum:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Konfiguration wird geladen...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Die Konfiguration konnte nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Manager-Modul bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Der eingegebene Wert ist kein gültiger UUID, z. B.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Der eingegebene Wert muss eine gültige IP-Adresse sein.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er muss kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er muss größer als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Der eingegebene Wert muss eine Zahl sein.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Der eingegebene Wert muss eine Zahl oder Dezimalzahl sein.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualisiere</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Cluster-ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Monmap geändert</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Monmap-Epoche</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>erforderliche Verbindung</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>erforderliche Überwachung</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>In Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nicht in Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>Vorschau der OSD-Erstellung</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> Laufwerke\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Geteilte Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL Slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>Wie viele OSDs pro WAL-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Geben Sie 0 an, um das Orchestrator-Backend entscheiden zu lassen.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB Slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>Wie viele OSDs pro DB-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funktionen</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Vorschau</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Clusterweite OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Absenden</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Erweitert...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Erweiterte Konfigurationsoptionen</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD-Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorität</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Prioritätswerte anpassen</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Dies ist ein Pflichtfeld!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Der Wert muss zwischen 0 und 1 liegen.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Neu gewichten</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Tief } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {tief } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD-Liste</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Aktive Warnungen</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>Alle Warnungen</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Wählen Sie das zu vergleichende Attribut --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wert</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Regulären Ausdruck verwenden</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Das Bearbeiten einer Stummschaltung löscht die Vorherige und legt eine neue Stummschaltung an.</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Ersteller</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Kommentar</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Startzeit</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Wenn die Startzeit in der Vergangenheit liegt, wird die Erstellungszeit verwendet</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Dauer</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Ende</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Integrität</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiken</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für NFS Ganesha.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Jeder Client hat Zugriff</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adressen</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Pflichtfeld</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Muss mindestens einen kommagetrennten Wert enthalten</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Beispielsweise:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Zugriffstyp</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Clients hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Kein Cluster verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Cluster auswählen --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Daemon hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Speicher-Back-End</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Keine Datenpools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Speicher-Back-End auswählen --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Objektgatewaybenutzer</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Keine Benutzer verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Objektgatewaybenutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS-Benutzer-ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- keine Clients verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx-Client auswählen --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS-Name</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Kein CephFS Dateisystem verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- CephFS Dateisystem auswählen --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Sicherheitsbezeichnung</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Sicherheitsbezeichnung aktivieren</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS-Pfad</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Pfad muss mit einem \'/\' beginnen und kann von einem Wort gefolgt werden</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Neues Verzeichnis wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Pfad</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Pfad darf nur ein einzelner \'/\' oder ein Wort sein</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Neuer Bucket wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS-Tag</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativer Zugriff für \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Mountpunkte (dürfen keinen führenden / enthalten)\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clients können Unterverzeichnisse möglicherweise nicht mounten (d. h. wenn der Pfad = foo ist, kann der Client foo/baz möglicherweise nicht mounten).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Tag-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Die Position dieses \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Exports\n                auf dem \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo-Dateisystem\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (muss eindeutig sein).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Pseudo-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Kein Zugriffstyp verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Zugriffstyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>Das NFS-Backend für das Objektgateway besitzt eine Reihe von\n Einschränkungen, die Schreibvorgänge von Anwendungen auf diese\n Freigaben ernsthaft beeinträchtigen. Bitte konsultieren Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> für weitere Informationen, bevor Sie den Schreibzugriff aktivieren.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Kein Squash verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportprotokoll</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Altes Passwort</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Das alte und neue Passwort müssen unterschiedlich sein.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Neues Passwort</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Neues Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem neuen Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Bitte legen Sie ein neues Passwort fest.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>Sie werden anschließend auf die Login-Seite weitergeleitet.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Willkommen bei Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Benutzername ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Passwort ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Anmeldung</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Der Benutzer ist in Ceph leider nicht enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Kehren Sie zur \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Anmeldeseite\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zurück. Sie werden vom Identitätsanbieter abgemeldet, wenn Sie versuchen, sich erneut anzumelden.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Verboten</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Leider sind Sie nicht berechtigt, den gewünschten Inhalt anzuzeigen.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Leider konnte der gewünschte Inhalt nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Weder Hostname noch OSD ID angegeben</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>bestanden</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>fehlgeschlagen</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Laufwerksinformationen</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>Keine SMART-Daten für dieses Laufwerk verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART-Daten werden geladen.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD-Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Entfernen Sie den lokalen Konfigurationswert. Stattdessen wird der übergeordnete Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Der Mindestwert lautet 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Pool-Liste</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Der Name darf nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Der ausgewählte Erasure-Coding-Profilname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Laufwerksklasse</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Datenblöcke (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Muss größer oder gleich 2 sein.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Datenblöcke für die Codierung (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Muss größer oder gleich 1 sein.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Dauerhaftigkeitsschätzung (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Standort (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush-Ausfalldomäne</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush-Standort</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Keine</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Paketgröße</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush-Stamm</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crush-Geräteklasse</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>beliebig</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Name...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Der ausgewählte Poolname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Pooltyp</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pooltyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoskalierung</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Es wird mindestens eine Platzierungsgruppe benötigt.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Ihr Cluster kann nicht so viele Platzierungsgruppen verarbeiten. Berechnen Sie die benötigte Anzahl an Platzierungsgruppen.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Hilfe zur Berechnung</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>Die aktuellen Einstellungen für die Platzierungsgruppen wurden für Sie berechnet.\n                    Stellen Sie vor dem Senden sicher, dass die Werte Ihren Anforderungen entsprechen.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Reproduzierte Größe</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Die angegebene Größe liegt außerhalb des Bereichs. Gültige Werte liegen zwischen\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> und \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC-Überschreibungen</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Anwendungen</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Kein Erasure-Coding-Profil verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Erasure-Coding-Profil auswählen --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>Ein neuer CRUSH Regelsatz wird implizit erstellt.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>Keine Regeln vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush-Regel auswählen --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush-Regel</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush-Schritte</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprimierung</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modus</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Kein Komprimierungsalgorithmus für Erasure-Coding verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>z. B. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wert sollte größer als 0 sein</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Wert sollte niedriger als die maximale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maximale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>z. B. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wert sollte größer als die minimale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Verhältnis</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Komprimierungsverhältnis</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wert sollte zwischen 0,0 und 1,0 liegen</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kontingente</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max. Bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Lassen Sie das Feld leer oder geben Sie 0 an, um dieses Quota zu deaktivieren.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Ein gültiges Kontingent sollte größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>z. B. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Details</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Leistungsdetails</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Details zu den Cache-Ebenen</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Bootstrap-Token erstellen</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site-Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>Mindestens ein Pool ist erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Erzeugen</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Erzeugtes Token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Bootstrap-Token importieren</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Richtung</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>Der Token ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Site-Namen bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site-Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Image in Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Schutz läuft ab am</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Falsches Datumsformat. Verwenden Sie "TT.MM.JJJJ HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Schutz ist bereits abgelaufen. Wählen Sie ein künftiges Datum aus oder lassen Sie es leer.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Image verschieben</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Muss grösser oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Muss kleiner oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Übersicht</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Ziele</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n              dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Gemeinsamer Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Gemeinsames Passwort</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für iSCSI-Ziele.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Verfügbare Informationen:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI-Ziele nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Nur für RBD-Images verfügbar, bei denen \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> aktiviert ist\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Erstellt</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Größe</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekte</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Objektgröße</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Bereitgestellt</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Bereitgestellt gesamt</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Striping-Einheit</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Striping-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Übergeordnet</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Präfix für Blockname</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Reihenfolge</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshots</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Diese Einstellung überschreibt den globalen Wert</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Dies ist der globale Wert. Kein Wert für diese Option wurde für dieses Image festgelegt.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' und \'@\' sind nicht zulässig.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Keine rbd-Pools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pool auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- Keine Namensräume verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Namensraum auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Dedizierten Datenpool verwenden</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedizierter Pool zur Speicherung von RBD-Objektdaten.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Sie müssen die Größe erhöhen.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Erweitert</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Stripe-Einheit</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Stripe-Einheit auswählen --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Anzahl definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Die Stripe-Einheit ist größer als die Objektgröße.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Stripe-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Einheit definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Die Stripe-Anzahl muss größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Namensraum anlegen</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namensraum existiert bereits.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Sie sind dabei, ein Rollback durchzuführen</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Papierkorb bereinigen</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Alle</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Poolname...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Image wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Zum Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Neuen Namen des Images eingeben und klicken</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Neuer Name</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Abgelaufen am</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Geschützt bis</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Dieses Image ist geschützt bis \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI-Topologie</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Konfigurieren</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Eine Änderung dieser Parameter von ihren Standardwerten ist in der Regel nicht erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Bezeichner</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Bestätigen</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Erweiterte Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Ziel-IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN hat ein fehlerhaftes Muster.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Eine IQN hat die folgende Notation \n\'iqn.$jahr-$monat.$umkehradresse:$definierterName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Zum Beispiel: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Weitere Informationen</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Erweiterte Einstellungen bei diesem Ziel wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Portal hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Es sind mindestens \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> Gateways erforderlich.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Einstellungen bei diesem Image wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Image hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL-Authentifizierung</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiatoren</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Client-IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Initiator-IQN muss eindeutig sein.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n                        dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Der Initiator gehört zu einer Gruppe. Images werden in der Gruppe konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Keine Elemente hinzugefügt.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Initiator hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppen</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Gruppe hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namensräume</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papierkorb</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Probleme</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Wird synchronisiert</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Fertig</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Spiegelungsmodus für Pool bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Wählen Sie zum Bearbeiten des Spiegelungsmodus für den Pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> einen neuen Modus aus der Liste aus und klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualisieren\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Vor dem Deaktivieren der Spiegelung müssen Peer-Cluster entfernt werden.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  Peer für Poolspiegelung\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Bearbeiten} other {Hinzufügen} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Clustername</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Der Clustername ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX-ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX-ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>Die CephX ID ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adressen der Monitore</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Kommagetrennte Adressen...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Die Anrede ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-codierter Schlüssel...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX-Schlüssel muss base64-codiert sein.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Leistungsindikatoren nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für das Objektgateway.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste der Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Bucket-Daten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Der Wert ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Der ausgewählte Name wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Inhaber</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Benutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Aktiviert</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Indextyp</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Platzierungsregel</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marker</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maximum für Marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Masterversion</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Änderungszeit</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zonengruppe</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Bucket-Quote</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maximale Größe</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Unbegrenzt</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maximale Objekte</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Benutzername</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Benutzername auswählen --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Schlüssel automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Zugriffsschlüssel</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Geheimer Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Vollständiger Name</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Angehalten</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maximale Buckets</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Befähigungen</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Benutzerquote</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Anzeigen</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Typ auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Berechtigung</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Berechtigung auswählen --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Die ausgewählte Unterbenutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lesen, schreiben</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>voll</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Geheimnis automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Benutzerdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Die Benutzerdaten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Die ausgewählte Benutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Dies ist keine gültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Die ausgewählte E-Mail-Adresse wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. Buckets</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Benutzerdefiniert</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Keine Unterbenutzer vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Keine Schlüssel vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Keine Befähigungen vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Unbegrenzte Größe</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. Größe</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Unbegrenzte Objekte</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Der eingegebene Wert muss &gt;=0 sein.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Beschreibung...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Berechtigungen</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rollen</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Ablaufdatum des Passworts</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Ablaufdatum des Passworts...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Ungültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>Benutzer muss das Passwort bei der nächsten Anmeldung ändern</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Sie sind dabei, die Lese-/Aktualisierungsberechtigungen für Benutzer von Ihrem eigenen Benutzer zu entfernen.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Wenn Sie den Vorgang fortsetzen, können Sie Benutzerrollen nicht mehr hinzufügen oder entfernen.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Möchten Sie den Vorgang wirklich fortsetzen?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Hilfe</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Über</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Dashboard-Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Benutzerverwaltung</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Angemeldeter Benutzer</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Angemeldet als\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Passwort ändern</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Abmelden</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attribute (OSD-Zuordnung)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadaten nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadaten</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Laufwerkszustand</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Leistungsindikator</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogramm nicht verfügbar: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Schreiben</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramm</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>Hostname nicht gefunden.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Aktuelle Werte</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Quelle</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Ebene</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Kann zur Laufzeit aktualisiert werden (bearbeitbar)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Auflistungswerte</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Siehe auch</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Clusterstatus</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager-Daemons</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektgateways</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadatenserver</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI-Gateways</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Client-IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Clientdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Client-Lese-/Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Wiederherstellungsdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Leistung</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Rohkapazität</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Platzierungsgruppen pro OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Platzierungsgruppenstatus</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapazität</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> Weitere Details finden Sie in den \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Protokollen\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Ränge</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Verzeichnisse</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Aktuell</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target> Ermittlungsauthentifizierung aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Keine Portale verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Keine Images verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Keine Images verfügbar. Fügen Sie dem Ziel ein Image hinzu.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Keine Initiatoren verfügen. Fügen Sie dem Ziel einen Initiator hinzu.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Ziel</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O seit</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instanz</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problem</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Fortschritt</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Bearbeitungsmodus</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Peer hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Peer bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Peer löschen</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># remote</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>Peer spiegeln</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Umfassende Vereinfachung</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Schichtung</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Exklusive Sperre</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Objektzuordnung (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namensraum</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Images insgesamt</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namensraum enthält Images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback für RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Gelöscht am</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>Stamm</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Standby-Daemons</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivität</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Nutzung</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Der Wert kann zur Laufzeit aktualisiert werden.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/Clients rufen diesen Wert nicht aus der\n      Datenbank \'monitor config\' ab. Es ist nicht zulässig, diese Option über \'ceph config\n      set ...\' festzulegen. Diese Option sollte über \'ceph.conf\' oder an der\n      Befehlszeile konfiguriert werden.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Die Option wird nur während des Daemon-Starts wirksam.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Die Option wirkt sich nur auf die Cluster-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Die Option wirkt sich nur auf die Daemon-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualisierte Konfigurationsoption \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Aktueller Wert</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Bearbeitbar</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Laufwerkspfad</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identifiziere Laufwerk \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifikation von \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' auf Host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\' gestartet\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktivieren</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Deaktivieren</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Verbindung wird erneut hergestellt, bitte warten...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Öffentliche Adresse</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Offene Sitzungen</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Kein In-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSDs, die zuvor als \'out\' markiert wurden, werden beim Start nicht wieder markiert</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Kein Out-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDs werden nach dem konfigurierten Intervall nicht automatisch als \'out\' markiert</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Kein Up-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDs dürfen nicht gestartet werden</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Kein Down-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSD-Fehlerberichte werden ignoriert, sodass die Monitore die OSDs nicht als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Hält Lese- und Schreibvorgänge an</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Kein Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Kein umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Umfassendes Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Kein Abgleich</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Abgleich der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Keine Wiederherstellung</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Wiederherstellung der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitweise Sortierung</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Bitweise Sortierung verwenden</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Bereinigte Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs besitzen konvertierte Snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Löschvorgänge bei Wiederherstellungen</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Bei der Wiederherstellung anstelle des Peerings durchgeführte Löschvorgänge</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Hardlimit für Platzierungsgruppen-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Legt ein Hardlimit für die Platzierungsgruppen-Protokolllänge fest</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualisierte OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>aus</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>ein</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ausgefallen</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Markieren</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD verloren</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>markierter Verlust</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>bereinigt</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>vernichten</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>vernichtet</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>löschen</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG Scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Aktualisierte PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max. Abgleiche</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Wiederherstellung, max. aktiv</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Wiederherstellung, max. - einzelner Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Wiederherstellung - Inaktivität</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Auftrag</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Schweregrad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Gestartet</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attributname</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulärer Ausdruck</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Bitte fügen Sie Ihren Prometheus-Host zur Dashboard-Konfiguration hinzu und aktualisieren die Seite</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Erstellt von</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Endet</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Verwendet</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Verf.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In Bearbeitung</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Warnung</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Unbekannt</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>keine Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktiver Daemon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>Quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Der NFS Ganesha-Dienst ist nicht konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS-Benutzer</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS-Dateisystem</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(aus globaler Konfiguration übernommen)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>aus globaler Konfiguration übernommen</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Keine Daemons verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS-Export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC-Profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Cache-Modus</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min. Alter für Vertreibung</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min. Alter für Leerung</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max. Bytes für Ziel</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max. Objekte für Ziel</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Keine Anwendungen hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Anwendungslimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Ein Pool kann nur bis zu vier Anwendungsdefinitionen aufweisen.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Zulässige Zeichen \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maximale Länge beträgt 128 Zeichen</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Anwendungen filtern oder hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Anwendung hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Größe des Replikats</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Letzte Änderung</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Das Löschen des Pools ist durch die Konfigurationsoption mon_allow_pool_delete deaktiviert.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>Bucket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Laufwerks-ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Laufwerksname</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Bereich</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Erstelle</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>Rolle</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' erstellt\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' aktualisiert\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systemrolle</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' gelöscht\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Benutzer aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Fortfahren</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Sie wurden automatisch abgemeldet, da Ihre Rollen geändert wurden.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Benutzerpasswort aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Jedes Objekt wird in Datenblöcke aufgeteilt und jeweils auf einem anderen OSD gespeichert.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Berechnen Sie Codierungsdatenblöcke für jedes Objekt und speichern Sie sie auf unterschiedlichen OSDs.\n      Die Anzahl der Codierungsdatenblöcke entspricht auch der Anzahl der OSDs, die ausfallen können, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Das jerasure-Modul ist das allgemeinste und flexibelste Modul\n          und fungiert auch als der Standard für Ceph-Pools mit Löschcodierung.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Die flexiblere Technik ist \'reed_sol_van :\', wobei es ausreicht, k\n          und m festzulegen. Die Technik \'cauchy_good\' kann schneller sein. Sie müssen jedoch die Paketgröße sorgfältig\n          auswählen. Sämtliche \'reed_sol_r6_op\'-, \'liberation\'-, \'blaum_roth\'- und \'liber8tion\'-Vorgänge sind dahingehend RAID6-Entsprechungen,\n          dass sie nur mit \'m=2\' konfiguriert werden können.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Die Codierung wird jeweils für Pakete auf Bytes-Größe vorgenommen.\n          Die Auswahl der richtigen Paketgröße ist schwierig.\n          In der Jerasure-Dokumentation sind ausführliche Informationen zu diesem Thema enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Bei Verwendung des Jerasure-Moduls, wenn ein Objekt mit Löschcodierung auf mehreren OSDs gespeichert ist,\n          müssen alle anderen OSDs gelesen werden, um die verloren gegangenen Daten eines OSDs wiederherzustellen.\n          Wenn jerasure beispielsweise mit \'k=8\' und \'m=4\' konfiguriert ist,\n          müssen bei Verlust eines OSDs zum Reparieren die elf anderen gelesen werden.\n\n          Das lrc-Löschcode-Modul erstellt lokale Paritätsdatenblöcke, um die Wiederherstellung mit weniger OSDs auszuführen.\n          Wenn lrc beispielsweise mit \'k=8\', \'m=4\' und \'l=4\' konfiguriert ist, wird ein zusätzlicher Paritätsdatenblock für jeweils vier OSDs erstellt.\n          Geht ein einzelnes OSD verloren, kann es mit nur vier OSDs anstelle\n          von elf wiederhergestellt werden.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Gruppieren Sie die Codierungs- und Datenblöcke in Sätze entsprechend dem Speicherort.\n          Beispielsweise werden für \'k=4\' und \'m=2\', wenn der Speicherort \'3\' entspricht, zwei Dreiergruppen erstellt.\n          Jeder Satz kann wiederhergestellt werden, ohne dass Datenblöcke aus einem anderen Satz gelesen werden.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Der Typ des Crush-Buckets, in dem jeder durch l definierte Satz von Datenblöcken gespeichert wird.\n          Wenn er beispielsweise auf \'rack\' festgelegt ist, wird jede Gruppe an l-Datenblöcken in einem anderen Rack platziert.\n          Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise für einen Schritt zum Auswählen des Racks.\n          Wenn er nicht festgelegt ist, wird keine solche Gruppierung vorgenommen.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Das isa-Modul kapselt die ISA-Bibliothek und wird nur auf Intel-Prozessoren ausgeführt.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Das ISA-Modul wird in zwei Reed Solomon-Formularen bereitgestellt.\n          Wenn \'reed_sol_van\' festgelegt ist, entspricht dies Vandermonde. Ist \'cauchy\' festgelegt, entspricht dies \'Cauchy\'.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Das shec-Modul kapselt die SHEC-Mehrfachbibliothek.\n          Dadurch kann ceph Daten effizienter wiederherstellen als Reed Solomon-Codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Die Anzahl der Paritätsdatenblöcke, von denen jeder jeden Datenblock in seinem Berechnungsbereich enthält.\n          Die Anzahl wird als eine Dauerhaftigkeitsschätzung verwendet. Wenn beispielsweise \'c=2\' vorliegt,\n          können 2 OSDs ausfallen, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Der Name des für den ersten Schritt der CRUSH-Regel verwendeten Crush-Buckets.\n      Beispielsweise \'step take default\'.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Stellen Sie sicher, dass sich keine zwei Datenblöcke in einem Bucket mit derselben Ausfalldomäne befinden.\n      Wenn die Ausfalldomäne beispielsweise als Host fungiert, werden keine zwei Datenblöcke auf demselben Host gespeichert.\n      Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise \'step chooseleaf host\'.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Schränken Sie mithilfe der Klassennamen für Crush-Geräte in der CRUSH-Zuordnung die Platzierung\n      auf Geräte einer bestimmten Klasse (z. B. SSD oder HDD) ein.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Legen Sie den Verzeichnisnamen fest, über den das Löschcode-Modul geladen wird.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Lässt alle Vorgänge zu</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Lässt nur Vorgänge zu, die den Server nicht ändern</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Lässt weder Lese- noch Schreibvorgänge zu, jedoch alle anderen Vorgänge</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Lässt Lese-/Schreibvorgänge und andere Vorgänge nicht zu, die Dateiattribute oder Verzeichnisinhalte ändern</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Lässt überhaupt keinen Zugriff zu</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Priorität auswählen --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niedrig</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Hoch</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informationen</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Letzte 5 Minuten</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Letzte 15 Minuten</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Letzte 30 Minuten</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Letzte Stunde (Standard)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Letzte 3 Stunden</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Letzte 6 Stunden</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Letzte 12 Stunden</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Letzte 24 Stunden</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Gestern</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Heute</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Heute bisher</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Vorgestern</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Letzte 2 Tage</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Dieser Tag letzte Woche</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Vorwoche</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Diese Woche</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Diese Woche bisher</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Letzte 7 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Vormonat</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Dieser Monat</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Dieser Monat bisher</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Letzte 30 Tage</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Letzte 90 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Letzte 6 Monate</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Letztes Jahr</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Vorjahr</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Dieses Jahr</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Dieses Jahr bisher</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Letzte 2 Jahre</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Letzte 5 Jahre</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Keine Elemente ausgewählt.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Elementauswahl zum erneuten Auswählen aufheben</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Auswahllimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags filtern</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Badge hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Keine Elemente verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Entfernen</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonen</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopieren</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Vernichten</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Mit Befehl \'In\' markieren</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Als verloren markieren</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Mit Befehl \'Out\' markieren</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Schützen</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Umbenennen</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>In Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Schutz aufheben</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Ändern</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Gelöscht</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Entfernt</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Bearbeitet</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Abgebrochen</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Geklont</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Kopiert</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Geschützt</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Bereinigt</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Umbenannt</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback wurde ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>In den Papierkorb verschoben</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Schutz aufgehoben</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Abgelaufen</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ja</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nein</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Erforderliche Regeln für Passwörter:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>keine aktiven Warnungen</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 aktive Warnung</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktive Warnungen\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> mit \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Quality of Service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Das gewünschte Limit der E/A-Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Das gewünschte Limit der E/A-Vorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>BPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Das gewünschte Limit der gelesenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>IOPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Das gewünschte Limit für Lesevorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>BPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Das gewünschte Limit der geschriebenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>IOPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Das gewünschte Limit für Schreibvorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS-Block</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Das gewünschte Blocklimit der E/A-Bytes.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS-Block</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Das gewünschte Blocklimit der E/A-Vorgänge.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>BPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Das gewünschte Blocklimit der gelesenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>IOPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Das gewünschte Blocklimit der Lesevorgänge.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>BPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Das gewünschte Blocklimit der geschriebenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>IOPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Das gewünschte Blocklimit der Schreibvorgänge.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ausführen</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Unbekannte Aufgabe</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>erstellen</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Wird aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Wird gelöscht</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD-Snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Spiegelungsmodus für Pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>Alle Dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> enthält Snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Wird geklont</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonen</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> muss geschützt sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Wird kopiert</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>kopieren</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Wird vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Der Schutz von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann aufgrund untergeordneter Images nicht aufgehoben werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann nicht gelöscht werden, da es geschützt ist.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Wird verschoben</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>verschieben</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Verschoben</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in Papierkorb verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Image konnte nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Wird wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\' verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image-Name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' wird bereits verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Wird bereinigt</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>bereinigen</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>alle Pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>Images von \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Spiegelung kann nicht deaktiviert werden, da sie einen Peer enthält.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>Pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>Erasure-Coding-Profil \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>Ziel \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},EmSq:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("LvDl");n("Fgil"),n("aXbf");class i{constructor(t,e,n,r){this.elementRef=t,this.control=e,this.dimlessBinaryPipe=n,this.formatter=r,this.ngModelChange=new a.EventEmitter,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value)}setValue(t){/^[\d.]+$/.test(t)&&(t+=this.defaultUnit||"m");const e=this.formatter.toBytes(t),n=this.round(e);this.el.value=this.dimlessBinaryPipe.transform(n),null!==e?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(t){if(null!==t&&0!==t){if(!r.isUndefined(this.minBytes)&&t<this.minBytes)return this.minBytes;if(!r.isUndefined(this.maxBytes)&&t>this.maxBytes)return this.maxBytes;if(!r.isUndefined(this.roundPower)){const e=Math.round(Math.log(t)/Math.log(this.roundPower));return Math.pow(this.roundPower,e)}}return t}onBlur(t){this.setValue(t)}}},EpBk:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},ExA7:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},"F+uO":function(t,e,n){var a={"./messages.cs.xlf":"ViD7","./messages.de-DE.xlf":"EiPl","./messages.es-ES.xlf":"yt+r","./messages.fr-FR.xlf":"V5SL","./messages.id-ID.xlf":"jqst","./messages.it-IT.xlf":"8j5A","./messages.ja-JP.xlf":"bN42","./messages.ko-KR.xlf":"3+CB","./messages.pl-PL.xlf":"SPu7","./messages.pt-BR.xlf":"+Wg/","./messages.zh-CN.xlf":"AiMb","./messages.zh-TW.xlf":"HjS5"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="F+uO"},F8JR:function(t,e,n){"use strict";var a=n("tycR").forEach,r=n("pkCn"),i=n("rkAj"),s=r("forEach"),o=i("forEach");t.exports=s&&o?[].forEach:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}},FE24:function(t,e,n){"use strict";n.d(e,"a",(function(){return d})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return h})),n.d(e,"d",(function(){return g})),n.d(e,"e",(function(){return b})),n.d(e,"f",(function(){return l})),n.d(e,"g",(function(){return p}));var a=n("8Y7J"),r=n("pLZG"),i=n("z/SZ"),s=n("hpHm"),o=n("GS7A"),u=n("2uy1");class d{constructor(){this.autoClose=!0,this.insideClick=!1,this.isAnimated=!1}}class l{constructor(){this.direction="down",this.isOpenChange=new a.EventEmitter,this.isDisabledChange=new a.EventEmitter,this.toggleClick=new a.EventEmitter,this.dropdownMenu=new Promise(t=>{this.resolveDropdownMenu=t})}}const c=[Object(o.h)({height:0,overflow:"hidden"}),Object(o.e)("220ms cubic-bezier(0, 0, 0.2, 1)",Object(o.h)({height:"*",overflow:"hidden"}))];class f{constructor(t,e,n,a,r){this._state=t,this.cd=e,this._renderer=n,this._element=a,this.isOpen=!1,this._factoryDropDownAnimation=r.build(c),this._subscription=t.isOpenChange.subscribe(t=>{this.isOpen=t;const e=this._element.nativeElement.querySelector(".dropdown-menu");this._renderer.addClass(this._element.nativeElement.querySelector("div"),"open"),e&&!Object(s.d)()&&(this._renderer.addClass(e,"show"),e.classList.contains("dropdown-menu-right")&&(this._renderer.setStyle(e,"left","auto"),this._renderer.setStyle(e,"right","0")),"up"===this.direction&&(this._renderer.setStyle(e,"top","auto"),this._renderer.setStyle(e,"transform","translateY(-101%)"))),e&&this._state.isAnimated&&this._factoryDropDownAnimation.create(e).play(),this.cd.markForCheck(),this.cd.detectChanges()})}get direction(){return this._state.direction}_contains(t){return this._element.nativeElement.contains(t)}ngOnDestroy(){this._subscription.unsubscribe()}}class h{constructor(t,e,n,a,r,i,s){this._elementRef=t,this._renderer=e,this._viewContainerRef=n,this._cis=a,this._state=r,this._config=i,this._isInlineOpen=!1,this._subscriptions=[],this._isInited=!1,this._state.autoClose=this._config.autoClose,this._state.insideClick=this._config.insideClick,this._state.isAnimated=this._config.isAnimated,this._factoryDropDownAnimation=s.build(c),this._dropdown=this._cis.createLoader(this._elementRef,this._viewContainerRef,this._renderer).provide({provide:l,useValue:this._state}),this.onShown=this._dropdown.onShown,this.onHidden=this._dropdown.onHidden,this.isOpenChange=this._state.isOpenChange}set autoClose(t){this._state.autoClose=t}get autoClose(){return this._state.autoClose}set isAnimated(t){this._state.isAnimated=t}get isAnimated(){return this._state.isAnimated}set insideClick(t){this._state.insideClick=t}get insideClick(){return this._state.insideClick}set isDisabled(t){this._isDisabled=t,this._state.isDisabledChange.emit(t),t&&this.hide()}get isDisabled(){return this._isDisabled}get isOpen(){return this._showInline?this._isInlineOpen:this._dropdown.isShown}set isOpen(t){t?this.show():this.hide()}get isBs4(){return!Object(s.d)()}get _showInline(){return!this.container}ngOnInit(){this._isInited||(this._isInited=!0,this._dropdown.listen({outsideClick:!1,triggers:this.triggers,show:()=>this.show()}),this._subscriptions.push(this._state.toggleClick.subscribe(t=>this.toggle(t))),this._subscriptions.push(this._state.isDisabledChange.pipe(Object(r.a)(t=>t)).subscribe(t=>this.hide())))}show(){if(!this.isOpen&&!this.isDisabled)return this._showInline?(this._inlinedMenu||this._state.dropdownMenu.then(t=>{this._dropdown.attachInline(t.viewContainer,t.templateRef),this._inlinedMenu=this._dropdown._inlineViewRef,this.addBs4Polyfills(),this._renderer.addClass(this._inlinedMenu.rootNodes[0].parentNode,"open"),this.playAnimation()}).catch(),this.addBs4Polyfills(),this._isInlineOpen=!0,this.onShown.emit(!0),this._state.isOpenChange.emit(!0),void this.playAnimation()):void this._state.dropdownMenu.then(t=>{const e=this.dropup||void 0!==this.dropup&&this.dropup;this._state.direction=e?"up":"down";const n=this.placement||(e?"top start":"bottom start");this._dropdown.attach(f).to(this.container).position({attachment:n}).show({content:t.templateRef,placement:n}),this._state.isOpenChange.emit(!0)}).catch()}hide(){this.isOpen&&(this._showInline?(this.removeShowClass(),this.removeDropupStyles(),this._isInlineOpen=!1,this.onHidden.emit(!0)):this._dropdown.hide(),this._state.isOpenChange.emit(!1))}toggle(t){return this.isOpen||!t?this.hide():this.show()}_contains(t){return this._elementRef.nativeElement.contains(t.target)||this._dropdown.instance&&this._dropdown.instance._contains(t.target)}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._dropdown.dispose()}addBs4Polyfills(){Object(s.d)()||(this.addShowClass(),this.checkRightAlignment(),this.addDropupStyles())}playAnimation(){this._state.isAnimated&&this._inlinedMenu&&this._factoryDropDownAnimation.create(this._inlinedMenu.rootNodes[0]).play()}addShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.addClass(this._inlinedMenu.rootNodes[0],"show")}removeShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.removeClass(this._inlinedMenu.rootNodes[0],"show")}checkRightAlignment(){if(this._inlinedMenu&&this._inlinedMenu.rootNodes[0]){const t=this._inlinedMenu.rootNodes[0].classList.contains("dropdown-menu-right");this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"left",t?"auto":"0"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"right",t?"0":"auto")}}addDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"top",this.dropup?"auto":"100%"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"transform",this.dropup?"translateY(-101%)":"translateY(0)"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"bottom","auto"))}removeDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"top"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"transform"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"bottom"))}}class g{constructor(t,e,n){t.resolveDropdownMenu({templateRef:n,viewContainer:e})}}class p{constructor(t,e,n,a,r){this._changeDetectorRef=t,this._dropdown=e,this._element=n,this._renderer=a,this._state=r,this.isDisabled=null,this._subscriptions=[],this._subscriptions.push(this._state.isOpenChange.subscribe(t=>{this.isOpen=t,t?(this._documentClickListener=this._renderer.listen("document","click",t=>{!this._state.autoClose||2===t.button||this._element.nativeElement.contains(t.target)||this._state.insideClick&&this._dropdown._contains(t)||(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())}),this._escKeyUpListener=this._renderer.listen(this._element.nativeElement,"keyup.esc",()=>{this._state.autoClose&&(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())})):(this._documentClickListener(),this._escKeyUpListener())})),this._subscriptions.push(this._state.isDisabledChange.subscribe(t=>this.isDisabled=t||null))}onClick(){this.isDisabled||this._state.toggleClick.emit(!0)}ngOnDestroy(){this._documentClickListener&&this._documentClickListener(),this._escKeyUpListener&&this._escKeyUpListener();for(const t of this._subscriptions)t.unsubscribe()}}class b{static forRoot(t){return{ngModule:b,providers:[i.a,u.a,l,{provide:d,useValue:t||{autoClose:!0,insideClick:!1}}]}}}},FFMq:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t.join(", ")}}},FMNM:function(t,e,n){var a=n("xrYK"),r=n("kmMV");t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==a(t))throw TypeError("RegExp#exec called on incompatible receiver");return r.call(t,e)}},FSuO:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("LvDl"),i=n("x38r");n("a0VL"),n("uIqm");class s{constructor(t){this.datePipe=t,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.hideKeys=[],this.columns=[],this.fetchData=new a.EventEmitter}ngOnInit(){this.columns=[{prop:"key",flexGrow:1,cellTransformation:i.a.bold},{prop:"value",flexGrow:3}],this.customCss&&(this.columns[1].cellTransformation=i.a.classAdding),this.fetchData.observers.length>0&&this.table.fetchData.subscribe(()=>{this.fetchData.emit()}),this.useData()}ngOnChanges(){this.useData()}useData(){if(!this.data)return;let t=this.makePairs(this.data);this.hideKeys&&(t=t.filter(t=>!this.hideKeys.includes(t.key))),this.tableData=t}makePairs(t){let e=[];if(t){if(r.isArray(t))e=this.makePairsFromArray(t);else{if(!r.isObject(t))throw new Error("Wrong data format");e=this.makePairsFromObject(t)}return e=e.map(t=>(t.value=this.convertValue(t.value),t)).filter(t=>null!==t.value),r.sortBy(this.renderObjects?this.insertFlattenObjects(e):e,"key")}}makePairsFromArray(t){let e=[];const n=t[0];if(r.isArray(n)){if(2!==n.length)throw new Error(`Array contains too many elements (${n.length}). `+"Needs to be of type [string, any][]");e=t.map(t=>({key:t[0],value:t[1]}))}else r.isObject(n)&&(e=r.has(n,"key")&&r.has(n,"value")?[...t]:t.reduce((t,e)=>t.concat(this.makePairsFromObject(e)),e));return e}makePairsFromObject(t){return Object.keys(t).map(e=>({key:e,value:t[e]}))}insertFlattenObjects(t){return r.flattenDeep(t.map(t=>{const e=t.value,n=r.isObject(e);return!n||r.isEmpty(e)?(n&&(t.value=""),t):this.splitItemIntoItems(t)}))}splitItemIntoItems(t){return this.makePairs(t.value).map(e=>(this.appendParentKey&&(e.key=t.key+" "+e.key),e))}convertValue(t){if(r.isArray(t)){if(r.isEmpty(t)&&this.hideEmpty)return null;t=t.map(t=>r.isObject(t)?JSON.stringify(t):t).join(", ")}else if(r.isObject(t)){if(this.hideEmpty&&r.isEmpty(t)||!this.renderObjects)return null}else if(r.isString(t)){if(""===t&&this.hideEmpty)return null;this.isDate(t)&&(t=this.datePipe.transform(t)||t)}return t}isDate(t){const e="\\d{2}[ -:.TZ]";return t.match(new RegExp("^\\d{4}[ -:.TZ]"+e+e+e+e+e+"\\d*Z?$"))}}},FZoo:function(t,e,n){var a=n("MrPd"),r=n("4uTw"),i=n("wJg7"),s=n("GoyQ"),o=n("9Nap");t.exports=function(t,e,n,u){if(!s(t))return t;for(var d=-1,l=(e=r(e,t)).length,c=l-1,f=t;null!=f&&++d<l;){var h=o(e[d]),g=n;if(d!=c){var p=f[h];void 0===(g=u?u(p,h,f):void 0)&&(g=s(p)?p:i(e[d+1])?[]:{})}a(f,h,g),f=f[h]}return t}},FZtP:function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("F8JR"),s=n("kRJp");for(var o in r){var u=a[o],d=u&&u.prototype;if(d&&d.forEach!==i)try{s(d,"forEach",i)}catch(l){d.forEach=i}}},FfPP:function(t,e,n){var a=n("idmN"),r=n("hgQt");t.exports=function(t,e){return a(t,e,(function(e,n){return r(t,n)}))}},Fgil:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])}}},Fwy9:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(t,e,n,r){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=r,this.allowDragoverStyling=!0,this.onDropCallback=new a.EventEmitter,this.onDragOverCallback=new a.EventEmitter,this.onDragLeaveCallback=new a.EventEmitter,this.onDragEnterCallback=new a.EventEmitter,this._allowDrop=function(t,e){return!0},this.dragOverEventHandler=this.onDragOver.bind(this),this.dragEnterEventHandler=this.onDragEnter.bind(this),this.dragLeaveEventHandler=this.onDragLeave.bind(this)}return Object.defineProperty(t.prototype,"treeAllowDrop",{set:function(t){this._allowDrop=t instanceof Function?t:function(e,n){return t}},enumerable:!0,configurable:!0}),t.prototype.allowDrop=function(t){return this._allowDrop(this.treeDraggedElement.get(),t)},t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("dragover",t.dragOverEventHandler),e.addEventListener("dragenter",t.dragEnterEventHandler),e.addEventListener("dragleave",t.dragLeaveEventHandler)}))},t.prototype.ngOnDestroy=function(){var t=this.el.nativeElement;t.removeEventListener("dragover",this.dragOverEventHandler),t.removeEventListener("dragenter",this.dragEnterEventHandler),t.removeEventListener("dragleave",this.dragLeaveEventHandler)},t.prototype.onDragOver=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.addDisabledClass():void 0;this.onDragOverCallback.emit({event:t,element:this.treeDraggedElement.get()}),t.preventDefault(),this.allowDragoverStyling&&this.addClass()},t.prototype.onDragEnter=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDragEnterCallback.emit({event:t,element:this.treeDraggedElement.get()}))},t.prototype.onDragLeave=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.removeDisabledClass():void 0;this.onDragLeaveCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass()},t.prototype.onDrop=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDropCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass(),this.treeDraggedElement.set(null))},t.prototype.addClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over")},t.prototype.removeClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over")},t.prototype.addDisabledClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over-disabled")},t.prototype.removeDisabledClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over-disabled")},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"allowDragoverStyling",void 0),i([Object(a.Output)("treeDrop"),s("design:type",Object)],t.prototype,"onDropCallback",void 0),i([Object(a.Output)("treeDropDragOver"),s("design:type",Object)],t.prototype,"onDragOverCallback",void 0),i([Object(a.Output)("treeDropDragLeave"),s("design:type",Object)],t.prototype,"onDragLeaveCallback",void 0),i([Object(a.Output)("treeDropDragEnter"),s("design:type",Object)],t.prototype,"onDragEnterCallback",void 0),i([Object(a.Input)(),s("design:type",Object),s("design:paramtypes",[Object])],t.prototype,"treeAllowDrop",null),i([Object(a.HostListener)("drop",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDrop",null),i([Object(a.Directive)({selector:"[treeDrop]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},"G+Rx":function(t,e,n){var a=n("0GbY");t.exports=a("document","documentElement")},G0Uy:function(t,e,n){!function(t){"use strict";t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"G1/K":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t){return""===t?this.i18n("n/a"):t}}},G1I9:function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return s}));var a=n("oxzT"),r=n("mtw6");class i{constructor(t=r.a.info,e,n,a,i="Ceph"){this.type=t,this.title=e,this.message=n,this.options=a,this.application=i,this.isFinishedTask=!1,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}class s extends i{constructor(t=new i){super(t.type,t.title,t.message,t.options,t.application),this.config=t,this.textClasses=["text-danger","text-info","text-success"],this.iconClasses=[a.a.warning,a.a.info,a.a.check],delete this.config,this.timestamp=(new Date).toJSON(),this.iconClass=this.iconClasses[this.type],this.textClass=this.textClasses[this.type],this.isFinishedTask=t.isFinishedTask}}},"G6Q+":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},G6z8:function(t,e,n){var a=n("fR/l"),r=n("oCl/"),i=n("mTTR");t.exports=function(t){return a(t,i,r)}},GDhZ:function(t,e,n){var a=n("wF/u"),r=n("mwIZ"),i=n("hgQt"),s=n("9ggG"),o=n("CMye"),u=n("IOzZ"),d=n("9Nap");t.exports=function(t,e){return s(t)&&o(e)?u(d(t),e):function(n){var s=r(n,t);return void 0===s&&s===e?i(n,t):a(e,s,3)}}},GNiM:function(t,e,n){var a=n("I01J"),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,s=a((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(r,(function(t,n,a,r){e.push(a?r.replace(i,"$1"):n||t)})),e}));t.exports=s},GS7A:function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"c",(function(){return r})),n.d(e,"a",(function(){return i})),n.d(e,"e",(function(){return o})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return d})),n.d(e,"i",(function(){return c})),n.d(e,"j",(function(){return s})),n.d(e,"d",(function(){return h})),n.d(e,"k",(function(){return g})),n.d(e,"l",(function(){return p}));class a{}class r{}const i="*";function s(t,e){return{type:7,name:t,definitions:e,options:{}}}function o(t,e=null){return{type:4,styles:e,timings:t}}function u(t,e=null){return{type:2,steps:t,options:e}}function d(t){return{type:6,styles:t,offset:null}}function l(t,e,n){return{type:0,name:t,styles:e,options:n}}function c(t,e,n=null){return{type:1,expr:t,animation:e,options:n}}function f(t){Promise.resolve(null).then(t)}class h{constructor(t=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this.parentPlayer=null,this.totalTime=t+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){f(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){}setPosition(t){}getPosition(){return 0}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class g{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let e=0,n=0,a=0;const r=this.players.length;0==r?f(()=>this._onFinish()):this.players.forEach(t=>{t.onDone(()=>{++e==r&&this._onFinish()}),t.onDestroy(()=>{++n==r&&this._onDestroy()}),t.onStart(()=>{++a==r&&this._onStart()})}),this.totalTime=this.players.reduce((t,e)=>Math.max(t,e.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){const e=t*this.totalTime;this.players.forEach(t=>{const n=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(n)})}getPosition(){let t=0;return this.players.forEach(e=>{const n=e.getPosition();t=Math.min(n,t)}),t}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}const p="!"},GarU:function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},GgAd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){}ngOnChanges(){this.usedPercentage=Math.round(this.usedBytes/this.totalBytes*100),this.freePercentage=100-this.usedPercentage,this.freeBytes=this.totalBytes-this.usedBytes}}},Gi0A:function(t,e,n){var a=n("QqLw"),r=n("ExA7");t.exports=function(t){return r(t)&&"[object Map]"==a(t)}},GiVz:function(t,e,n){"use strict";n.d(e,"a",(function(){return We})),n.d(e,"b",(function(){return Ue}));var a=n("SVse"),r=n("8Y7J");class i{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class s{constructor(t,e,n,a,r){this.switchValue=t,this.type=e,this.cases=n,this.sourceSpan=a,this.switchValueSourceSpan=r}visit(t,e){return t.visitExpansion(this,e)}}class o{constructor(t,e,n,a,r){this.value=t,this.expression=e,this.sourceSpan=n,this.valueSourceSpan=a,this.expSourceSpan=r}visit(t,e){return t.visitExpansionCase(this,e)}}class u{constructor(t,e,n,a){this.name=t,this.value=e,this.sourceSpan=n,this.valueSpan=a}visit(t,e){return t.visitAttribute(this,e)}}class d{constructor(t,e,n,a,r=null,i=null){this.name=t,this.attrs=e,this.children=n,this.sourceSpan=a,this.startSourceSpan=r,this.endSourceSpan=i}visit(t,e){return t.visitElement(this,e)}}class l{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitComment(this,e)}}function c(t,e,n=null){const a=[],r=t.visit?e=>t.visit(e,n)||e.visit(t,n):e=>e.visit(t,n);return e.forEach(t=>{const e=r(t);e&&a.push(e)}),a}class f{constructor(t,e,n,a,r,i){this.nodes=t,this.placeholders=e,this.placeholderToMessage=n,this.meaning=a,this.description=r,this.id=i,this.sources=t.length?[{filePath:t[0].sourceSpan.start.file.url,startLine:t[0].sourceSpan.start.line+1,startCol:t[0].sourceSpan.start.col+1,endLine:t[t.length-1].sourceSpan.end.line+1,endCol:t[0].sourceSpan.start.col+1}]:[]}}class h{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class g{constructor(t,e){this.children=t,this.sourceSpan=e}visit(t,e){return t.visitContainer(this,e)}}class p{constructor(t,e,n,a){this.expression=t,this.type=e,this.cases=n,this.sourceSpan=a}visit(t,e){return t.visitIcu(this,e)}}class b{constructor(t,e,n,a,r,i,s){this.tag=t,this.attrs=e,this.startName=n,this.closeName=a,this.children=r,this.isVoid=i,this.sourceSpan=s}visit(t,e){return t.visitTagPlaceholder(this,e)}}class m{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitPlaceholder(this,e)}}class y{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitIcuPlaceholder(this,e)}}class v{constructor(t,e,n,a){this.file=t,this.offset=e,this.line=n,this.col=a}toString(){return null!=this.offset?`${this.line}:${this.col}`:""}getContext(t,e){const n=this.file.content;let a=this.offset;if(null!=a){a>n.length-1&&(a=n.length-1);let r=a,i=0,s=0;for(;i<t&&a>0&&(a--,i++,"\n"!==n[a]||++s!==e););for(i=0,s=0;i<t&&r<n.length-1&&(r++,i++,"\n"!==n[r]||++s!==e););return{before:n.substring(a,this.offset),after:n.substring(this.offset,r+1)}}return null}}class x{constructor(t,e=""){this.content=t,this.url=e}}class _{constructor(t,e,n=null){this.start=t,this.end=e,this.details=n}toString(){return this.start.file.content.substring(this.start.offset,this.end.offset)}}const T=function(){var t={WARNING:0,ERROR:1};return t[t.WARNING]="WARNING",t[t.ERROR]="ERROR",t}();class O{constructor(t,e,n=T.ERROR){this.span=t,this.msg=e,this.level=n}contextualMessage(){const t=this.span.start.getContext(100,3);return t?` ("${t.before}[${T[this.level]} ->]${t.after}")`:""}toString(){const t=this.span.details?`, ${this.span.details}`:"";return`${this.msg}${this.contextualMessage()}: ${this.span.start}${t}`}}class w extends O{constructor(t,e){super(t,e)}}function S(t){return t.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}class I{constructor(t,e){this.start=t,this.end=e}}const N=new I("{{","}}");function C(t){return t>=9&&t<=32||160===t}function R(t){return 48<=t&&t<=57}function A(t){return t>=97&&t<=122||t>=65&&t<=90}const k=function(){var t={RAW_TEXT:0,ESCAPABLE_RAW_TEXT:1,PARSABLE_DATA:2};return t[t.RAW_TEXT]="RAW_TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.PARSABLE_DATA]="PARSABLE_DATA",t}();function E(t){if(":"!==t[0])return[null,t];const e=t.indexOf(":",1);if(-1===e)throw new Error(`Unsupported format "${t}" expecting ":namespace:name"`);return[t.slice(1,e),t.slice(e+1)]}function L(t){return null===t?null:E(t)[0]}function D(t,e){return t?`:${t}:${e}`:e}const P={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",alefsym:"ℵ",Alpha:"Α",alpha:"α",amp:"&",and:"∧",ang:"∠",apos:"'",Aring:"Å",aring:"å",asymp:"≈",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",bdquo:"„",Beta:"Β",beta:"β",brvbar:"¦",bull:"•",cap:"∩",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",Chi:"Χ",chi:"χ",circ:"ˆ",clubs:"♣",cong:"≅",copy:"©",crarr:"↵",cup:"∪",curren:"¤",dagger:"†",Dagger:"‡",darr:"↓",dArr:"⇓",deg:"°",Delta:"Δ",delta:"δ",diams:"♦",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",empty:"∅",emsp:" ",ensp:" ",Epsilon:"Ε",epsilon:"ε",equiv:"≡",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",exist:"∃",fnof:"ƒ",forall:"∀",frac12:"½",frac14:"¼",frac34:"¾",frasl:"⁄",Gamma:"Γ",gamma:"γ",ge:"≥",gt:">",harr:"↔",hArr:"⇔",hearts:"♥",hellip:"…",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",image:"ℑ",infin:"∞",int:"∫",Iota:"Ι",iota:"ι",iquest:"¿",isin:"∈",Iuml:"Ï",iuml:"ï",Kappa:"Κ",kappa:"κ",Lambda:"Λ",lambda:"λ",lang:"⟨",laquo:"«",larr:"←",lArr:"⇐",lceil:"⌈",ldquo:"“",le:"≤",lfloor:"⌊",lowast:"∗",loz:"◊",lrm:"‎",lsaquo:"‹",lsquo:"‘",lt:"<",macr:"¯",mdash:"—",micro:"µ",middot:"·",minus:"−",Mu:"Μ",mu:"μ",nabla:"∇",nbsp:" ",ndash:"–",ne:"≠",ni:"∋",not:"¬",notin:"∉",nsub:"⊄",Ntilde:"Ñ",ntilde:"ñ",Nu:"Ν",nu:"ν",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",OElig:"Œ",oelig:"œ",Ograve:"Ò",ograve:"ò",oline:"‾",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",oplus:"⊕",or:"∨",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",otimes:"⊗",Ouml:"Ö",ouml:"ö",para:"¶",permil:"‰",perp:"⊥",Phi:"Φ",phi:"φ",Pi:"Π",pi:"π",piv:"ϖ",plusmn:"±",pound:"£",prime:"′",Prime:"″",prod:"∏",prop:"∝",Psi:"Ψ",psi:"ψ",quot:'"',radic:"√",rang:"⟩",raquo:"»",rarr:"→",rArr:"⇒",rceil:"⌉",rdquo:"”",real:"ℜ",reg:"®",rfloor:"⌋",Rho:"Ρ",rho:"ρ",rlm:"‏",rsaquo:"›",rsquo:"’",sbquo:"‚",Scaron:"Š",scaron:"š",sdot:"⋅",sect:"§",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sim:"∼",spades:"♠",sub:"⊂",sube:"⊆",sum:"∑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supe:"⊇",szlig:"ß",Tau:"Τ",tau:"τ",there4:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thinsp:" ",THORN:"Þ",thorn:"þ",tilde:"˜",times:"×",trade:"™",Uacute:"Ú",uacute:"ú",uarr:"↑",uArr:"⇑",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",Uuml:"Ü",uuml:"ü",weierp:"℘",Xi:"Ξ",xi:"ξ",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ",Yuml:"Ÿ",Zeta:"Ζ",zeta:"ζ",zwj:"‍",zwnj:"‌",ngsp:""},M=function(){var t={TAG_OPEN_START:0,TAG_OPEN_END:1,TAG_OPEN_END_VOID:2,TAG_CLOSE:3,TEXT:4,ESCAPABLE_RAW_TEXT:5,RAW_TEXT:6,COMMENT_START:7,COMMENT_END:8,CDATA_START:9,CDATA_END:10,ATTR_NAME:11,ATTR_VALUE:12,DOC_TYPE:13,EXPANSION_FORM_START:14,EXPANSION_CASE_VALUE:15,EXPANSION_CASE_EXP_START:16,EXPANSION_CASE_EXP_END:17,EXPANSION_FORM_END:18,EOF:19};return t[t.TAG_OPEN_START]="TAG_OPEN_START",t[t.TAG_OPEN_END]="TAG_OPEN_END",t[t.TAG_OPEN_END_VOID]="TAG_OPEN_END_VOID",t[t.TAG_CLOSE]="TAG_CLOSE",t[t.TEXT]="TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.RAW_TEXT]="RAW_TEXT",t[t.COMMENT_START]="COMMENT_START",t[t.COMMENT_END]="COMMENT_END",t[t.CDATA_START]="CDATA_START",t[t.CDATA_END]="CDATA_END",t[t.ATTR_NAME]="ATTR_NAME",t[t.ATTR_VALUE]="ATTR_VALUE",t[t.DOC_TYPE]="DOC_TYPE",t[t.EXPANSION_FORM_START]="EXPANSION_FORM_START",t[t.EXPANSION_CASE_VALUE]="EXPANSION_CASE_VALUE",t[t.EXPANSION_CASE_EXP_START]="EXPANSION_CASE_EXP_START",t[t.EXPANSION_CASE_EXP_END]="EXPANSION_CASE_EXP_END",t[t.EXPANSION_FORM_END]="EXPANSION_FORM_END",t[t.EOF]="EOF",t}();class q{constructor(t,e,n){this.type=t,this.parts=e,this.sourceSpan=n}}class j extends O{constructor(t,e,n){super(n,t),this.tokenType=e}}class F{constructor(t,e){this.tokens=t,this.errors=e}}const G=/\r\n?/g;function V(t){return`Unexpected character "${0===t?"EOF":String.fromCharCode(t)}"`}function z(t){return`Unknown entity "${t}" - use the "&#<decimal>;" or  "&#x<hex>;" syntax`}class B{constructor(t){this.error=t}}class Y{constructor(t,e,n,a=N){this._file=t,this._getTagDefinition=e,this._tokenizeIcu=n,this._interpolationConfig=a,this._peek=-1,this._nextPeek=-1,this._index=-1,this._line=0,this._column=-1,this._expansionCaseStack=[],this._inInterpolation=!1,this.tokens=[],this.errors=[],this._input=t.content,this._length=t.content.length,this._advance()}_processCarriageReturns(t){return t.replace(G,"\n")}tokenize(){for(;0!==this._peek;){const e=this._getLocation();try{this._attemptCharCode(60)?this._attemptCharCode(33)?this._attemptCharCode(91)?this._consumeCdata(e):this._attemptCharCode(45)?this._consumeComment(e):this._consumeDocType(e):this._attemptCharCode(47)?this._consumeTagClose(e):this._consumeTagOpen(e):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(t){if(!(t instanceof B))throw t;this.errors.push(t.error)}}return this._beginToken(M.EOF),this._endToken([]),new F(function(t){const e=[];let n=void 0;for(let a=0;a<t.length;a++){const r=t[a];n&&n.type===M.TEXT&&r.type===M.TEXT?(n.parts[0]+=r.parts[0],n.sourceSpan.end=r.sourceSpan.end):(n=r,e.push(n))}return e}(this.tokens),this.errors)}_tokenizeExpansionForm(){if($(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if((61===(t=this._peek)||A(t)||R(t))&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;var t;if(125===this._peek){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1}_getLocation(){return new v(this._file,this._index,this._line,this._column)}_getSpan(t=this._getLocation(),e=this._getLocation()){return new _(t,e)}_beginToken(t,e=this._getLocation()){this._currentTokenStart=e,this._currentTokenType=t}_endToken(t,e=this._getLocation()){const n=new q(this._currentTokenType,t,new _(this._currentTokenStart,e));return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n}_createError(t,e){this._isInExpansionForm()&&(t+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');const n=new j(t,this._currentTokenType,e);return this._currentTokenStart=null,this._currentTokenType=null,new B(n)}_advance(){if(this._index>=this._length)throw this._createError(V(0),this._getSpan());10===this._peek?(this._line++,this._column=0):10!==this._peek&&13!==this._peek&&this._column++,this._index++,this._peek=this._index>=this._length?0:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?0:this._input.charCodeAt(this._index+1)}_attemptCharCode(t){return this._peek===t&&(this._advance(),!0)}_attemptCharCodeCaseInsensitive(t){return e=t,Z(this._peek)===Z(e)&&(this._advance(),!0);var e}_requireCharCode(t){const e=this._getLocation();if(!this._attemptCharCode(t))throw this._createError(V(this._peek),this._getSpan(e,e))}_attemptStr(t){const e=t.length;if(this._index+e>this._length)return!1;const n=this._savePosition();for(let a=0;a<e;a++)if(!this._attemptCharCode(t.charCodeAt(a)))return this._restorePosition(n),!1;return!0}_attemptStrCaseInsensitive(t){for(let e=0;e<t.length;e++)if(!this._attemptCharCodeCaseInsensitive(t.charCodeAt(e)))return!1;return!0}_requireStr(t){const e=this._getLocation();if(!this._attemptStr(t))throw this._createError(V(this._peek),this._getSpan(e))}_attemptCharCodeUntilFn(t){for(;!t(this._peek);)this._advance()}_requireCharCodeUntilFn(t,e){const n=this._getLocation();if(this._attemptCharCodeUntilFn(t),this._index-n.offset<e)throw this._createError(V(this._peek),this._getSpan(n,n))}_attemptUntilChar(t){for(;this._peek!==t;)this._advance()}_readChar(t){if(t&&38===this._peek)return this._decodeEntity();{const t=this._index;return this._advance(),this._input[t]}}_decodeEntity(){const t=this._getLocation();if(this._advance(),!this._attemptCharCode(35)){const e=this._savePosition();if(this._attemptCharCodeUntilFn(K),59!==this._peek)return this._restorePosition(e),"&";this._advance();const n=this._input.substring(t.offset+1,this._index-1),a=P[n];if(!a)throw this._createError(z(n),this._getSpan(t));return a}{const n=this._attemptCharCode(120)||this._attemptCharCode(88),a=this._getLocation().offset;if(this._attemptCharCodeUntilFn(W),59!==this._peek)throw this._createError(V(this._peek),this._getSpan());this._advance();const r=this._input.substring(a,this._index-1);try{const t=parseInt(r,n?16:10);return String.fromCharCode(t)}catch(e){const n=this._input.substring(t.offset+1,this._index-1);throw this._createError(z(n),this._getSpan(t))}}}_consumeRawText(t,e,n){let a;const r=this._getLocation();this._beginToken(t?M.ESCAPABLE_RAW_TEXT:M.RAW_TEXT,r);const i=[];for(;a=this._getLocation(),!this._attemptCharCode(e)||!n();)for(this._index>a.offset&&i.push(this._input.substring(a.offset,this._index));this._peek!==e;)i.push(this._readChar(t));return this._endToken([this._processCarriageReturns(i.join(""))],a)}_consumeComment(t){this._beginToken(M.COMMENT_START,t),this._requireCharCode(45),this._endToken([]);const e=this._consumeRawText(!1,45,()=>this._attemptStr("->"));this._beginToken(M.COMMENT_END,e.sourceSpan.end),this._endToken([])}_consumeCdata(t){this._beginToken(M.CDATA_START,t),this._requireStr("CDATA["),this._endToken([]);const e=this._consumeRawText(!1,93,()=>this._attemptStr("]>"));this._beginToken(M.CDATA_END,e.sourceSpan.end),this._endToken([])}_consumeDocType(t){this._beginToken(M.DOC_TYPE,t),this._attemptUntilChar(62),this._advance(),this._endToken([this._input.substring(t.offset+2,this._index-1)])}_consumePrefixAndName(){const t=this._index;let e=null;for(;58!==this._peek&&!(((n=this._peek)<97||122<n)&&(n<65||90<n)&&(n<48||n>57));)this._advance();var n;let a;return 58===this._peek?(this._advance(),e=this._input.substring(t,this._index-1),a=this._index):a=t,this._requireCharCodeUntilFn(U,this._index===a?1:0),[e,this._input.substring(a,this._index)]}_consumeTagOpen(t){const e=this._savePosition();let n,a;try{if(!A(this._peek))throw this._createError(V(this._peek),this._getSpan());const e=this._index;for(this._consumeTagOpenStart(t),n=this._input.substring(e,this._index),a=n.toLowerCase(),this._attemptCharCodeUntilFn(H);47!==this._peek&&62!==this._peek;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(H),this._attemptCharCode(61)&&(this._attemptCharCodeUntilFn(H),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(H);this._consumeTagOpenEnd()}catch(i){if(i instanceof B)return this._restorePosition(e),this._beginToken(M.TEXT,t),void this._endToken(["<"]);throw i}const r=this._getTagDefinition(n).contentType;r===k.RAW_TEXT?this._consumeRawTextWithTagClose(a,!1):r===k.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(a,!0)}_consumeRawTextWithTagClose(t,e){const n=this._consumeRawText(e,60,()=>!!this._attemptCharCode(47)&&(this._attemptCharCodeUntilFn(H),!!this._attemptStrCaseInsensitive(t)&&(this._attemptCharCodeUntilFn(H),this._attemptCharCode(62))));this._beginToken(M.TAG_CLOSE,n.sourceSpan.end),this._endToken([null,t])}_consumeTagOpenStart(t){this._beginToken(M.TAG_OPEN_START,t);const e=this._consumePrefixAndName();this._endToken(e)}_consumeAttributeName(){this._beginToken(M.ATTR_NAME);const t=this._consumePrefixAndName();this._endToken(t)}_consumeAttributeValue(){let t;if(this._beginToken(M.ATTR_VALUE),39===this._peek||34===this._peek){const e=this._peek;this._advance();const n=[];for(;this._peek!==e;)n.push(this._readChar(!0));t=n.join(""),this._advance()}else{const e=this._index;this._requireCharCodeUntilFn(U,1),t=this._input.substring(e,this._index)}this._endToken([this._processCarriageReturns(t)])}_consumeTagOpenEnd(){const t=this._attemptCharCode(47)?M.TAG_OPEN_END_VOID:M.TAG_OPEN_END;this._beginToken(t),this._requireCharCode(62),this._endToken([])}_consumeTagClose(t){this._beginToken(M.TAG_CLOSE,t),this._attemptCharCodeUntilFn(H);const e=this._consumePrefixAndName();this._attemptCharCodeUntilFn(H),this._requireCharCode(62),this._endToken(e)}_consumeExpansionFormStart(){this._beginToken(M.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(123),this._endToken([]),this._expansionCaseStack.push(M.EXPANSION_FORM_START),this._beginToken(M.RAW_TEXT,this._getLocation());const t=this._readUntil(44);this._endToken([t],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H),this._beginToken(M.RAW_TEXT,this._getLocation());const e=this._readUntil(44);this._endToken([e],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H)}_consumeExpansionCaseStart(){this._beginToken(M.EXPANSION_CASE_VALUE,this._getLocation());const t=this._readUntil(123).trim();this._endToken([t],this._getLocation()),this._attemptCharCodeUntilFn(H),this._beginToken(M.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(123),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.push(M.EXPANSION_CASE_EXP_START)}_consumeExpansionCaseEnd(){this._beginToken(M.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(125),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.pop()}_consumeExpansionFormEnd(){this._beginToken(M.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(125),this._endToken([]),this._expansionCaseStack.pop()}_consumeText(){const t=this._getLocation();this._beginToken(M.TEXT,t);const e=[];do{this._interpolationConfig&&this._attemptStr(this._interpolationConfig.start)?(e.push(this._interpolationConfig.start),this._inInterpolation=!0):this._interpolationConfig&&this._inInterpolation&&this._attemptStr(this._interpolationConfig.end)?(e.push(this._interpolationConfig.end),this._inInterpolation=!1):e.push(this._readChar(!0))}while(!this._isTextEnd());this._endToken([this._processCarriageReturns(e.join(""))])}_isTextEnd(){if(60===this._peek||0===this._peek)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if($(this._input,this._index,this._interpolationConfig))return!0;if(125===this._peek&&this._isInExpansionCase())return!0}return!1}_savePosition(){return[this._peek,this._index,this._column,this._line,this.tokens.length]}_readUntil(t){const e=this._index;return this._attemptUntilChar(t),this._input.substring(e,this._index)}_restorePosition(t){this._peek=t[0],this._index=t[1],this._column=t[2],this._line=t[3];const e=t[4];e<this.tokens.length&&(this.tokens=this.tokens.slice(0,e))}_isInExpansionCase(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_CASE_EXP_START}_isInExpansionForm(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_FORM_START}}function H(t){return!C(t)||0===t}function U(t){return C(t)||62===t||47===t||39===t||34===t||61===t}function W(t){return 59===t||0===t||!function(t){return t>=97&&t<=102||t>=65&&t<=70||R(t)}(t)}function K(t){return 59===t||0===t||!A(t)}function $(t,e,n){const a=!!n&&t.indexOf(n.start,e)===e;return 123===t.charCodeAt(e)&&!a}function Z(t){return t>=97&&t<=122?t-97+65:t}class J extends O{constructor(t,e,n){super(e,n),this.elementName=t}static create(t,e,n){return new J(t,e,n)}}class Q{constructor(t,e){this.rootNodes=t,this.errors=e}}class X{constructor(t){this.getTagDefinition=t}parse(t,e,n=!1,a=N){const r=function(t,e,n,a=!1,r=N){return new Y(new x(t,e),n,a,r).tokenize()}(t,e,this.getTagDefinition,n,a),i=new tt(r.tokens,this.getTagDefinition).build();return new Q(i.rootNodes,r.errors.concat(i.errors))}}class tt{constructor(t,e){this.tokens=t,this.getTagDefinition=e,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}build(){for(;this._peek.type!==M.EOF;)this._peek.type===M.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===M.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===M.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===M.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===M.TEXT||this._peek.type===M.RAW_TEXT||this._peek.type===M.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===M.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._advance();return new Q(this._rootNodes,this._errors)}_advance(){const t=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],t}_advanceIf(t){return this._peek.type===t?this._advance():null}_consumeCdata(t){this._consumeText(this._advance()),this._advanceIf(M.CDATA_END)}_consumeComment(t){const e=this._advanceIf(M.RAW_TEXT);this._advanceIf(M.COMMENT_END);const n=null!==e?e.parts[0].trim():null;this._addToParent(new l(n,t.sourceSpan))}_consumeExpansion(t){const e=this._advance(),n=this._advance(),a=[];for(;this._peek.type===M.EXPANSION_CASE_VALUE;){const t=this._parseExpansionCase();if(!t)return;a.push(t)}if(this._peek.type!==M.EXPANSION_FORM_END)return void this._errors.push(J.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."));const r=new _(t.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new s(e.parts[0],n.parts[0],a,r,e.sourceSpan)),this._advance()}_parseExpansionCase(){const t=this._advance();if(this._peek.type!==M.EXPANSION_CASE_EXP_START)return this._errors.push(J.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;const e=this._advance(),n=this._collectExpansionExpTokens(e);if(!n)return null;const a=this._advance();n.push(new q(M.EOF,[],a.sourceSpan));const r=new tt(n,this.getTagDefinition).build();if(r.errors.length>0)return this._errors=this._errors.concat(r.errors),null;const i=new _(t.sourceSpan.start,a.sourceSpan.end),s=new _(e.sourceSpan.start,a.sourceSpan.end);return new o(t.parts[0],r.rootNodes,i,t.sourceSpan,s)}_collectExpansionExpTokens(t){const e=[],n=[M.EXPANSION_CASE_EXP_START];for(;;){if(this._peek.type!==M.EXPANSION_FORM_START&&this._peek.type!==M.EXPANSION_CASE_EXP_START||n.push(this._peek.type),this._peek.type===M.EXPANSION_CASE_EXP_END){if(!et(n,M.EXPANSION_CASE_EXP_START))return this._errors.push(J.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(n.pop(),0===n.length)return e}if(this._peek.type===M.EXPANSION_FORM_END){if(!et(n,M.EXPANSION_FORM_START))return this._errors.push(J.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;n.pop()}if(this._peek.type===M.EOF)return this._errors.push(J.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;e.push(this._advance())}}_consumeText(t){let e=t.parts[0];if(e.length>0&&"\n"===e[0]){const t=this._getParentElement();null!==t&&0===t.children.length&&this.getTagDefinition(t.name).ignoreFirstLf&&(e=e.substring(1))}e.length>0&&this._addToParent(new i(e,t.sourceSpan))}_closeVoidElement(){const t=this._getParentElement();t&&this.getTagDefinition(t.name).isVoid&&this._elementStack.pop()}_consumeStartTag(t){const e=t.parts[0],n=t.parts[1],a=[];for(;this._peek.type===M.ATTR_NAME;)a.push(this._consumeAttr(this._advance()));const r=this._getElementFullName(e,n,this._getParentElement());let i=!1;if(this._peek.type===M.TAG_OPEN_END_VOID){this._advance(),i=!0;const e=this.getTagDefinition(r);e.canSelfClose||null!==L(r)||e.isVoid||this._errors.push(J.create(r,t.sourceSpan,`Only void and foreign elements can be self closed "${t.parts[1]}"`))}else this._peek.type===M.TAG_OPEN_END&&(this._advance(),i=!1);const s=new _(t.sourceSpan.start,this._peek.sourceSpan.start),o=new d(r,a,[],s,s,void 0);this._pushElement(o),i&&(this._popElement(r),o.endSourceSpan=s)}_pushElement(t){const e=this._getParentElement();e&&this.getTagDefinition(e.name).isClosedByChild(t.name)&&this._elementStack.pop();const n=this.getTagDefinition(t.name),{parent:a,container:r}=this._getParentElementSkippingContainers();if(a&&n.requireExtraParent(a.name)){const e=new d(n.parentToAdd,[],[],t.sourceSpan,t.startSourceSpan,t.endSourceSpan);this._insertBeforeContainer(a,r,e)}this._addToParent(t),this._elementStack.push(t)}_consumeEndTag(t){const e=this._getElementFullName(t.parts[0],t.parts[1],this._getParentElement());this._getParentElement()&&(this._getParentElement().endSourceSpan=t.sourceSpan),this.getTagDefinition(e).isVoid?this._errors.push(J.create(e,t.sourceSpan,`Void elements do not have end tags "${t.parts[1]}"`)):this._popElement(e)||this._errors.push(J.create(e,t.sourceSpan,`Unexpected closing tag "${e}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`))}_popElement(t){for(let e=this._elementStack.length-1;e>=0;e--){const n=this._elementStack[e];if(n.name===t)return this._elementStack.splice(e,this._elementStack.length-e),!0;if(!this.getTagDefinition(n.name).closedByParent)return!1}return!1}_consumeAttr(t){const e=D(t.parts[0],t.parts[1]);let n=t.sourceSpan.end,a="",r=void 0;if(this._peek.type===M.ATTR_VALUE){const t=this._advance();a=t.parts[0],n=t.sourceSpan.end,r=t.sourceSpan}return new u(e,a,new _(t.sourceSpan.start,n),r)}_getParentElement(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null}_getParentElementSkippingContainers(){let t=null;for(let e=this._elementStack.length-1;e>=0;e--){if("ng-container"!==E(this._elementStack[e].name)[1])return{parent:this._elementStack[e],container:t};t=this._elementStack[e]}return{parent:null,container:t}}_addToParent(t){const e=this._getParentElement();null!==e?e.children.push(t):this._rootNodes.push(t)}_insertBeforeContainer(t,e,n){if(e){if(t){const a=t.children.indexOf(e);t.children[a]=n}else this._rootNodes.push(n);n.children.push(e),this._elementStack.splice(this._elementStack.indexOf(e),0,n)}else this._addToParent(n),this._elementStack.push(n)}_getElementFullName(t,e,n){return null===t&&null===(t=this.getTagDefinition(e).implicitNamespacePrefix)&&null!==n&&(t=L(n.name)),D(t,e)}}function et(t,e){return t.length>0&&t[t.length-1]===e}class nt{constructor(){this.closedByParent=!1,this.contentType=k.PARSABLE_DATA,this.isVoid=!1,this.ignoreFirstLf=!1,this.canSelfClose=!0}requireExtraParent(t){return!1}isClosedByChild(t){return!1}}const at=new nt;function rt(t){return at}class it{constructor({closedByChildren:t,requiredParents:e,implicitNamespacePrefix:n,contentType:a=k.PARSABLE_DATA,closedByParent:r=!1,isVoid:i=!1,ignoreFirstLf:s=!1}={}){this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,t&&t.length>0&&t.forEach(t=>this.closedByChildren[t]=!0),this.isVoid=i,this.closedByParent=r||i,e&&e.length>0&&(this.requiredParents={},this.parentToAdd=e[0],e.forEach(t=>this.requiredParents[t]=!0)),this.implicitNamespacePrefix=n||null,this.contentType=a,this.ignoreFirstLf=s}requireExtraParent(t){if(!this.requiredParents)return!1;if(!t)return!0;const e=t.toLowerCase();return!("template"===e||"ng-template"===t)&&!0!==this.requiredParents[e]}isClosedByChild(t){return this.isVoid||t.toLowerCase()in this.closedByChildren}}const st={base:new it({isVoid:!0}),meta:new it({isVoid:!0}),area:new it({isVoid:!0}),embed:new it({isVoid:!0}),link:new it({isVoid:!0}),img:new it({isVoid:!0}),input:new it({isVoid:!0}),param:new it({isVoid:!0}),hr:new it({isVoid:!0}),br:new it({isVoid:!0}),source:new it({isVoid:!0}),track:new it({isVoid:!0}),wbr:new it({isVoid:!0}),p:new it({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new it({closedByChildren:["tbody","tfoot"]}),tbody:new it({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new it({closedByChildren:["tbody"],closedByParent:!0}),tr:new it({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new it({closedByChildren:["td","th"],closedByParent:!0}),th:new it({closedByChildren:["td","th"],closedByParent:!0}),col:new it({requiredParents:["colgroup"],isVoid:!0}),svg:new it({implicitNamespacePrefix:"svg"}),math:new it({implicitNamespacePrefix:"math"}),li:new it({closedByChildren:["li"],closedByParent:!0}),dt:new it({closedByChildren:["dt","dd"]}),dd:new it({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new it({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new it({closedByChildren:["optgroup"],closedByParent:!0}),option:new it({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new it({ignoreFirstLf:!0}),listing:new it({ignoreFirstLf:!0}),style:new it({contentType:k.RAW_TEXT}),script:new it({contentType:k.RAW_TEXT}),title:new it({contentType:k.ESCAPABLE_RAW_TEXT}),textarea:new it({contentType:k.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},ot=new it;function ut(t){return st[t.toLowerCase()]||ot}class dt extends class{visitText(t,e){}visitContainer(t,e){t.children.forEach(t=>t.visit(this))}visitIcu(t,e){Object.keys(t.cases).forEach(e=>{t.cases[e].visit(this)})}visitTagPlaceholder(t,e){t.children.forEach(t=>t.visit(this))}visitPlaceholder(t,e){}visitIcuPlaceholder(t,e){}}{constructor(t,e){super(),this.mapName=e,this.internalToPublic={},this.publicToNextId={},this.publicToInternal={},t.nodes.forEach(t=>t.visit(this))}toPublicName(t){return this.internalToPublic.hasOwnProperty(t)?this.internalToPublic[t]:null}toInternalName(t){return this.publicToInternal.hasOwnProperty(t)?this.publicToInternal[t]:null}visitText(t,e){return null}visitTagPlaceholder(t,e){this.visitPlaceholderName(t.startName),super.visitTagPlaceholder(t,e),this.visitPlaceholderName(t.closeName)}visitPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitIcuPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitPlaceholderName(t){if(!t||this.internalToPublic.hasOwnProperty(t))return;let e=this.mapName(t);if(this.publicToInternal.hasOwnProperty(e)){const t=this.publicToNextId[e];this.publicToNextId[e]=t+1,e=`${e}_${t}`}else this.publicToNextId[e]=1;this.internalToPublic[t]=e,this.publicToInternal[e]=t}}const lt=new a.I18nSelectPipe;class ct{constructor(t,e){this.params=e,this.i18nPluralPipe=new a.I18nPluralPipe(new a.NgLocaleLocalization(t))}visitElement(t,e){return ut(t.name).isVoid?`<${t.name}${this.serializeNodes(t.attrs," ")}/>`:`<${t.name}${this.serializeNodes(t.attrs," ")}>${this.serializeNodes(t.children)}</${t.name}>`}visitAttribute(t,e){return`${t.name}="${t.value}"`}visitText(t,e){return t.value}visitComment(t,e){return`\x3c!--${t.value}--\x3e`}visitExpansion(t,e){const n={};switch(t.cases.forEach(t=>n[t.value]=this.serializeNodes(t.expression)),t.type){case"select":return lt.transform(this.params[t.switchValue]||"",n);case"plural":return this.i18nPluralPipe.transform(this.params[t.switchValue],n)}throw new Error(`Unknown expansion type "${t.type}"`)}visitExpansionCase(t,e){return` ${t.value} {${this.serializeNodes(t.expression)}}`}serializeNodes(t,e=""){return 0===t.length?"":e+t.map(t=>t.visit(this,null)).join(e)}}function ft(t){return t.id||function(t){const e=At(t),n=function(t,e){const n=Array(t.length+3>>>2);for(let a=0;a<n.length;a++)n[a]=It(t,4*a,e);return n}(e,xt.Big),a=8*e.length,r=new Array(80);let[i,s,o,u,d]=[1732584193,4023233417,2562383102,271733878,3285377520];n[a>>5]|=128<<24-a%32,n[15+(a+64>>9<<4)]=a;for(let l=0;l<n.length;l+=16){const[t,e,a,c,f]=[i,s,o,u,d];for(let h=0;h<80;h++){r[h]=h<16?n[l+h]:wt(r[h-3]^r[h-8]^r[h-14]^r[h-16],1);const[t,e]=bt(h,s,o,u),a=[wt(i,5),t,d,e,r[h]].reduce(_t);[d,u,o,s,i]=[u,o,wt(s,30),i,a]}[i,s,o,u,d]=[_t(i,t),_t(s,e),_t(o,a),_t(u,c),_t(d,f)]}return function(t){let e="";for(let n=0;n<t.length;n++){const a=St(t,n);e+=(a>>>4).toString(16)+(15&a).toString(16)}return e.toLowerCase()}(Nt([i,s,o,u,d]))}((e=t.nodes,e.map(t=>t.visit(gt,null))).join("")+`[${t.meaning}]`);var e}class ht{visitText(t,e){return t.value}visitContainer(t,e){return`[${t.children.map(t=>t.visit(this)).join(", ")}]`}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.expression}, ${t.type}, ${n.join(", ")}}`}visitTagPlaceholder(t,e){return t.isVoid?`<ph tag name="${t.startName}"/>`:`<ph tag name="${t.startName}">${t.children.map(t=>t.visit(this)).join(", ")}</ph name="${t.closeName}">`}visitPlaceholder(t,e){return t.value?`<ph name="${t.name}">${t.value}</ph>`:`<ph name="${t.name}"/>`}visitIcuPlaceholder(t,e){return`<ph icu name="${t.name}">${t.value.visit(this)}</ph>`}}const gt=new ht;class pt extends ht{visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.type}, ${n.join(", ")}}`}}function bt(t,e,n,a){return t<20?[e&n|~e&a,1518500249]:t<40?[e^n^a,1859775393]:t<60?[e&n|e&a|n&a,2400959708]:[e^n^a,3395469782]}function mt(t){const e=At(t);let[n,a]=[yt(e,0),yt(e,102072)];return 0!==n||0!==a&&1!==a||(n^=319790063,a^=-1801410264),[n,a]}function yt(t,e){let n,[a,r]=[2654435769,2654435769];const i=t.length;for(n=0;n+12<=i;n+=12)a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,It(t,n+8,xt.Little)),[a,r,e]=vt([a,r,e]);return a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,i),vt([a,r,e=_t(e,It(t,n+8,xt.Little)<<8)])[2]}function vt([t,e,n]){return t=Ot(t,e),t=Ot(t,n),t^=n>>>13,e=Ot(e,n),e=Ot(e,t),e^=t<<8,n=Ot(n,t),n=Ot(n,e),n^=e>>>13,t=Ot(t,e),t=Ot(t,n),t^=n>>>12,e=Ot(e,n),e=Ot(e,t),e^=t<<16,n=Ot(n,t),n=Ot(n,e),n^=e>>>5,t=Ot(t,e),t=Ot(t,n),t^=n>>>3,e=Ot(e,n),e=Ot(e,t),e^=t<<10,n=Ot(n,t),n=Ot(n,e),[t,e,n^=e>>>15]}const xt=function(){var t={Little:0,Big:1};return t[t.Little]="Little",t[t.Big]="Big",t}();function _t(t,e){return Tt(t,e)[1]}function Tt(t,e){const n=(65535&t)+(65535&e),a=(t>>>16)+(e>>>16)+(n>>>16);return[a>>>16,a<<16|65535&n]}function Ot(t,e){const n=(65535&t)-(65535&e);return(t>>16)-(e>>16)+(n>>16)<<16|65535&n}function wt(t,e){return t<<e|t>>>32-e}function St(t,e){return e>=t.length?0:255&t.charCodeAt(e)}function It(t,e,n){let a=0;if(n===xt.Big)for(let r=0;r<4;r++)a+=St(t,e+r)<<24-8*r;else for(let r=0;r<4;r++)a+=St(t,e+r)<<8*r;return a}function Nt(t){return t.reduce((t,e)=>t+function(t){let e="";for(let n=0;n<4;n++)e+=String.fromCharCode(t>>>8*(3-n)&255);return e}(e),"")}function Ct(t,e){let n="";const a=Math.max(t.length,e.length);for(let r=0,i=0;r<a||i;r++){const a=i+ +(t[r]||0)+ +(e[r]||0);a>=10?(i=1,n+=a-10):(i=0,n+=a)}return n}function Rt(t,e){let n="",a=e;for(;0!==t;t>>>=1)1&t&&(n=Ct(n,a)),a=Ct(a,a);return n}function At(t){let e="";for(let n=0;n<t.length;n++){let a=t.charCodeAt(n);if(a>=55296&&a<=56319&&t.length>n+1){const e=t.charCodeAt(n+1);e>=56320&&e<=57343&&(n++,a=(a-55296<<10)+e-56320+65536)}a<=127?e+=String.fromCharCode(a):a<=2047?e+=String.fromCharCode(a>>6&31|192,63&a|128):a<=65535?e+=String.fromCharCode(a>>12|224,a>>6&63|128,63&a|128):a<=2097151&&(e+=String.fromCharCode(a>>18&7|240,a>>12&63|128,a>>6&63|128,63&a|128))}return e}function kt(t){const e=new Lt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new Dt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error(`xliff parse errors:\n${a.join("\n")}`);return r}const Et=ft;class Lt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"trans-unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,`Duplicated translations for msg ${n}`):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<trans-unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"file":c(this,t.children,null);break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class Dt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){if("x"===t.name){const e=t.attrs.find(t=>"id"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<x> misses the "id" attribute')}else this._addError(t,"Unexpected tag");return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}function Pt(t){const e=new qt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new jt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error(`xliff2 parse errors:\n${a.join("\n")}`);return r}const Mt=function(t){if(t.id)return t.id;const e=new pt;return function(t,e){let[n,a]=mt(t);if(e){const[t,r]=mt(e);[n,a]=function([t,e],[n,a]){const[r,i]=Tt(e,a);return[_t(_t(t,n),r),i]}(function([t,e],n){return[t<<n|e>>>32-n,e<<n|t>>>32-n]}([n,a],1),[t,r])}return function(t){let e="",n="1";for(let a=t.length-1;a>=0;a--)e=Ct(e,Rt(St(t,a),n)),n=Rt(256,n);return e.split("").reverse().join("")}(Nt([2147483647&n,a]))}(t.nodes.map(t=>t.visit(e,null)).join(""),t.meaning)};class qt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,`Duplicated translations for msg ${n}`):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"xliff":const a=t.attrs.find(t=>"version"===t.name);if(a){const e=a.value;"2.0"!==e?this._addError(t,`The XLIFF file version ${e} is not compatible with XLIFF 2.0 serializer`):c(this,t.children,null)}break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class jt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:[].concat(...c(this,e.rootNodes)),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){switch(t.name){case"ph":const e=t.attrs.find(t=>"equiv"===t.name);if(e)return[new m("",e.value,t.sourceSpan)];this._addError(t,'<ph> misses the "equiv" attribute');break;case"pc":const n=t.attrs.find(t=>"equivStart"===t.name),a=t.attrs.find(t=>"equivEnd"===t.name);if(n){if(a){const e=a.value;return[].concat(new m("",n.value,t.sourceSpan),...t.children.map(t=>t.visit(this,null)),new m("",e,t.sourceSpan))}this._addError(t,'<ph> misses the "equivEnd" attribute')}else this._addError(t,'<ph> misses the "equivStart" attribute');break;default:this._addError(t,"Unexpected tag")}return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:[].concat(...c(this,t.expression))}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}function Ft(t){return t.toUpperCase().replace(/[^A-Z0-9_]/g,"_")}function Gt(t){const e=new Bt,{msgIdToHtml:n,errors:a}=e.parse(t);if(a.length)throw new Error(`xtb parse errors:\n${a.join("\n")}`);const r={},i=new Yt;return Object.keys(n).forEach(t=>{var e,a;e=r,a=t,Object.defineProperty(e,a,{configurable:!0,enumerable:!0,get:()=>{const r=(()=>{const{i18nNodes:e,errors:a}=i.convert(n[t]);if(a.length)throw new Error(`xtb parse errors:\n${a.join("\n")}`);return e})();return Object.defineProperty(e,a,{enumerable:!0,value:r}),r},set:t=>{throw new Error("Could not overwrite an XTB translation")}})}),r}const Vt=ft,zt=function(t){return new dt(t,Ft)};class Bt{parse(t){this._bundleDepth=0,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"translationbundle":this._bundleDepth++,this._bundleDepth>1&&this._addError(t,"<translationbundle> elements can not be nested"),c(this,t.children,null),this._bundleDepth--;break;case"translation":const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;if(this._msgIdToHtml.hasOwnProperty(n))this._addError(t,`Duplicated translations for msg ${n}`);else{const e=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._msgIdToHtml[n]=e}}else this._addError(t,'<translation> misses the "id" attribute');break;default:this._addError(t,"Unexpected tag")}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class Yt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitElement(t,e){if("ph"===t.name){const e=t.attrs.find(t=>"name"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<ph> misses the "name" attribute')}else this._addError(t,"Unexpected tag");return null}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class Ht{constructor(t,e,n,a){this.input=e,this.errLocation=n,this.ctxLocation=a,this.message=`Parser Error: ${t} ${n} [${e}] in ${a}`}}class Ut{constructor(t,e){this.start=t,this.end=e}}class Wt{constructor(t){this.span=t}visit(t,e=null){return null}toString(){return"AST"}}class Kt extends Wt{constructor(t,e,n,a){super(t),this.prefix=e,this.uninterpretedExpression=n,this.location=a}visit(t,e=null){return t.visitQuote(this,e)}toString(){return"Quote"}}class $t extends Wt{visit(t,e=null){}}class Zt extends Wt{visit(t,e=null){return t.visitImplicitReceiver(this,e)}}class Jt extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitChain(this,e)}}class Qt extends Wt{constructor(t,e,n,a){super(t),this.condition=e,this.trueExp=n,this.falseExp=a}visit(t,e=null){return t.visitConditional(this,e)}}class Xt extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitPropertyRead(this,e)}}class te extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.value=a}visit(t,e=null){return t.visitPropertyWrite(this,e)}}class ee extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitSafePropertyRead(this,e)}}class ne extends Wt{constructor(t,e,n){super(t),this.obj=e,this.key=n}visit(t,e=null){return t.visitKeyedRead(this,e)}}class ae extends Wt{constructor(t,e,n,a){super(t),this.obj=e,this.key=n,this.value=a}visit(t,e=null){return t.visitKeyedWrite(this,e)}}class re extends Wt{constructor(t,e,n,a){super(t),this.exp=e,this.name=n,this.args=a}visit(t,e=null){return t.visitPipe(this,e)}}class ie extends Wt{constructor(t,e){super(t),this.value=e}visit(t,e=null){return t.visitLiteralPrimitive(this,e)}}class se extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitLiteralArray(this,e)}}class oe extends Wt{constructor(t,e,n){super(t),this.keys=e,this.values=n}visit(t,e=null){return t.visitLiteralMap(this,e)}}class ue extends Wt{constructor(t,e,n){super(t),this.strings=e,this.expressions=n}visit(t,e=null){return t.visitInterpolation(this,e)}}class de extends Wt{constructor(t,e,n,a){super(t),this.operation=e,this.left=n,this.right=a}visit(t,e=null){return t.visitBinary(this,e)}}class le extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitPrefixNot(this,e)}}class ce extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitNonNullAssert(this,e)}}class fe extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitMethodCall(this,e)}}class he extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitSafeMethodCall(this,e)}}class ge extends Wt{constructor(t,e,n){super(t),this.target=e,this.args=n}visit(t,e=null){return t.visitFunctionCall(this,e)}}class pe extends Wt{constructor(t,e,n,a){super(new Ut(0,null==e?0:e.length)),this.ast=t,this.source=e,this.location=n,this.errors=a}visit(t,e=null){return this.ast.visit(t,e)}toString(){return`${this.source} in ${this.location}`}}class be{constructor(t,e,n,a,r){this.span=t,this.key=e,this.keyIsVar=n,this.name=a,this.expression=r}}const me=function(){var t={Character:0,Identifier:1,Keyword:2,String:3,Operator:4,Number:5,Error:6};return t[t.Character]="Character",t[t.Identifier]="Identifier",t[t.Keyword]="Keyword",t[t.String]="String",t[t.Operator]="Operator",t[t.Number]="Number",t[t.Error]="Error",t}(),ye=["var","let","as","null","undefined","true","false","if","else","this"];class ve{tokenize(t){const e=new we(t),n=[];let a=e.scanToken();for(;null!=a;)n.push(a),a=e.scanToken();return n}}class xe{constructor(t,e,n,a){this.index=t,this.type=e,this.numValue=n,this.strValue=a}isCharacter(t){return this.type===me.Character&&this.numValue===t}isNumber(){return this.type===me.Number}isString(){return this.type===me.String}isOperator(t){return this.type===me.Operator&&this.strValue===t}isIdentifier(){return this.type===me.Identifier}isKeyword(){return this.type===me.Keyword}isKeywordLet(){return this.type===me.Keyword&&"let"===this.strValue}isKeywordAs(){return this.type===me.Keyword&&"as"===this.strValue}isKeywordNull(){return this.type===me.Keyword&&"null"===this.strValue}isKeywordUndefined(){return this.type===me.Keyword&&"undefined"===this.strValue}isKeywordTrue(){return this.type===me.Keyword&&"true"===this.strValue}isKeywordFalse(){return this.type===me.Keyword&&"false"===this.strValue}isKeywordThis(){return this.type===me.Keyword&&"this"===this.strValue}isError(){return this.type===me.Error}toNumber(){return this.type===me.Number?this.numValue:-1}toString(){switch(this.type){case me.Character:case me.Identifier:case me.Keyword:case me.Operator:case me.String:case me.Error:return this.strValue;case me.Number:return this.numValue.toString();default:return null}}}function _e(t,e){return new xe(t,me.Character,e,String.fromCharCode(e))}function Te(t,e){return new xe(t,me.Operator,0,e)}const Oe=new xe(-1,me.Character,0,"");class we{constructor(t){this.input=t,this.peek=0,this.index=-1,this.length=t.length,this.advance()}advance(){this.peek=++this.index>=this.length?0:this.input.charCodeAt(this.index)}scanToken(){const t=this.input,e=this.length;let n=this.peek,a=this.index;for(;n<=32;){if(++a>=e){n=0;break}n=t.charCodeAt(a)}if(this.peek=n,this.index=a,a>=e)return null;if(Se(n))return this.scanIdentifier();if(R(n))return this.scanNumber(a);const r=a;switch(n){case 46:return this.advance(),R(this.peek)?this.scanNumber(r):_e(r,46);case 40:case 41:case 123:case 125:case 91:case 93:case 44:case 58:case 59:return this.scanCharacter(r,n);case 39:case 34:return this.scanString();case 35:case 43:case 45:case 42:case 47:case 37:case 94:return this.scanOperator(r,String.fromCharCode(n));case 63:return this.scanComplexOperator(r,"?",46,".");case 60:case 62:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=");case 33:case 61:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=",61,"=");case 38:return this.scanComplexOperator(r,"&",38,"&");case 124:return this.scanComplexOperator(r,"|",124,"|");case 160:for(;C(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error(`Unexpected character [${String.fromCharCode(n)}]`,0)}scanCharacter(t,e){return this.advance(),_e(t,e)}scanOperator(t,e){return this.advance(),Te(t,e)}scanComplexOperator(t,e,n,a,r,i){this.advance();let s=e;return this.peek===n&&(this.advance(),s+=a),null!=r&&this.peek===r&&(this.advance(),s+=i),Te(t,s)}scanIdentifier(){const t=this.index;for(this.advance();Ie(this.peek);)this.advance();const e=this.input.substring(t,this.index);return ye.indexOf(e)>-1?new xe(t,me.Keyword,0,e):function(t,e){return new xe(t,me.Identifier,0,e)}(t,e)}scanNumber(t){let e=this.index===t;for(this.advance();;){if(R(this.peek));else if(46===this.peek)e=!1;else{if(101!==(n=this.peek)&&69!==n)break;if(this.advance(),Ne(this.peek)&&this.advance(),!R(this.peek))return this.error("Invalid exponent",-1);e=!1}this.advance()}var n;const a=this.input.substring(t,this.index),r=e?function(t){const e=parseInt(t,10);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}(a):parseFloat(a);return new xe(t,me.Number,r,"")}scanString(){const t=this.index,e=this.peek;this.advance();let n="",a=this.index;const r=this.input;for(;this.peek!==e;)if(92===this.peek){let t;if(n+=r.substring(a,this.index),this.advance(),this.peek=this.peek,117===this.peek){const e=r.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(e))return this.error(`Invalid unicode escape [\\u${e}]`,0);t=parseInt(e,16);for(let t=0;t<5;t++)this.advance()}else t=Ce(this.peek),this.advance();n+=String.fromCharCode(t),a=this.index}else{if(0===this.peek)return this.error("Unterminated quote",0);this.advance()}const i=r.substring(a,this.index);return this.advance(),new xe(t,me.String,0,n+i)}error(t,e){const n=this.index+e;return function(t,e){return new xe(t,me.Error,0,e)}(n,`Lexer Error: ${t} at column ${n} in expression [${this.input}]`)}}function Se(t){return 97<=t&&t<=122||65<=t&&t<=90||95===t||36===t}function Ie(t){return A(t)||R(t)||95===t||36===t}function Ne(t){return 45===t||43===t}function Ce(t){switch(t){case 110:return 10;case 102:return 12;case 114:return 13;case 116:return 9;case 118:return 11;default:return t}}class Re{constructor(t,e,n){this.strings=t,this.expressions=e,this.offsets=n}}class Ae{constructor(t,e,n){this.templateBindings=t,this.warnings=e,this.errors=n}}function ke(t){const e=S(t.start)+"([\\s\\S]*?)"+S(t.end);return new RegExp(e,"g")}class Ee{constructor(t){this._lexer=t,this.errors=[]}parseAction(t,e,n=N){this._checkNoInterpolation(t,e,n);const a=this._stripComments(t),r=this._lexer.tokenize(this._stripComments(t)),i=new Le(t,e,r,a.length,!0,this.errors,t.length-a.length).parseChain();return new pe(i,t,e,this.errors)}parseBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n);return new pe(a,t,e,this.errors)}parseSimpleBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n),r=De.check(a);return r.length>0&&this._reportError(`Host binding expression cannot contain ${r.join(" ")}`,t,e),new pe(a,t,e,this.errors)}_reportError(t,e,n,a){this.errors.push(new Ht(t,e,n,a))}_parseBindingAst(t,e,n){const a=this._parseQuote(t,e);if(null!=a)return a;this._checkNoInterpolation(t,e,n);const r=this._stripComments(t),i=this._lexer.tokenize(r);return new Le(t,e,i,r.length,!1,this.errors,t.length-r.length).parseChain()}_parseQuote(t,e){if(null===t)return null;const n=t.indexOf(":");if(-1===n)return null;const a=t.substring(0,n).trim();if(!function(t){if(0===t.length)return!1;const e=new we(t);if(!Se(e.peek))return!1;for(e.advance();0!==e.peek;){if(!Ie(e.peek))return!1;e.advance()}return!0}(a))return null;const r=t.substring(n+1);return new Kt(new Ut(0,t.length),a,r,e)}parseTemplateBindings(t,e,n){const a=this._lexer.tokenize(e);if(t){const e=this._lexer.tokenize(t).map(t=>(t.index=0,t));a.unshift(...e)}return new Le(e,n,a,e.length,!1,this.errors,0).parseTemplateBindings()}parseInterpolation(t,e,n=N){const a=this.splitInterpolation(t,e,n);if(null===a)return null;const r=[];for(let i=0;i<a.expressions.length;++i){const n=a.expressions[i],s=this._stripComments(n),o=this._lexer.tokenize(s),u=new Le(t,e,o,s.length,!1,this.errors,a.offsets[i]+(n.length-s.length)).parseChain();r.push(u)}return new pe(new ue(new Ut(0,null===t?0:t.length),a.strings,r),t,e,this.errors)}splitInterpolation(t,e,n=N){const a=ke(n),r=t.split(a);if(r.length<=1)return null;const i=[],s=[],o=[];let u=0;for(let d=0;d<r.length;d++){const a=r[d];d%2==0?(i.push(a),u+=a.length):a.trim().length>0?(u+=n.start.length,s.push(a),o.push(u),u+=a.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",t,`at column ${this._findInterpolationErrorColumn(r,d,n)} in`,e),s.push("$implict"),o.push(u))}return new Re(i,s,o)}wrapLiteralPrimitive(t,e){return new pe(new ie(new Ut(0,null===t?0:t.length),t),t,e,this.errors)}_stripComments(t){const e=this._commentStart(t);return null!=e?t.substring(0,e).trim():t}_commentStart(t){let e=null;for(let a=0;a<t.length-1;a++){const r=t.charCodeAt(a),i=t.charCodeAt(a+1);if(47===r&&47===i&&null===e)return a;e===r?e=null:null===e&&(39===(n=r)||34===n||96===n)&&(e=r)}var n;return null}_checkNoInterpolation(t,e,n){const a=ke(n),r=t.split(a);r.length>1&&this._reportError(`Got interpolation (${n.start}${n.end}) where expression was expected`,t,`at column ${this._findInterpolationErrorColumn(r,1,n)} in`,e)}_findInterpolationErrorColumn(t,e,n){let a="";for(let r=0;r<e;r++)a+=r%2==0?t[r]:`${n.start}${t[r]}${n.end}`;return a.length}}class Le{constructor(t,e,n,a,r,i,s){this.input=t,this.location=e,this.tokens=n,this.inputLength=a,this.parseAction=r,this.errors=i,this.offset=s,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}peek(t){const e=this.index+t;return e<this.tokens.length?this.tokens[e]:Oe}get next(){return this.peek(0)}get inputIndex(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset}span(t){return new Ut(t,this.inputIndex)}advance(){this.index++}optionalCharacter(t){return!!this.next.isCharacter(t)&&(this.advance(),!0)}peekKeywordLet(){return this.next.isKeywordLet()}peekKeywordAs(){return this.next.isKeywordAs()}expectCharacter(t){this.optionalCharacter(t)||this.error(`Missing expected ${String.fromCharCode(t)}`)}optionalOperator(t){return!!this.next.isOperator(t)&&(this.advance(),!0)}expectOperator(t){this.optionalOperator(t)||this.error(`Missing expected operator ${t}`)}expectIdentifierOrKeyword(){const t=this.next;return t.isIdentifier()||t.isKeyword()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier or keyword`),"")}expectIdentifierOrKeywordOrString(){const t=this.next;return t.isIdentifier()||t.isKeyword()||t.isString()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier, keyword, or string`),"")}parseChain(){const t=[],e=this.inputIndex;for(;this.index<this.tokens.length;){const e=this.parsePipe();if(t.push(e),this.optionalCharacter(59))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(59););else this.index<this.tokens.length&&this.error(`Unexpected token '${this.next}'`)}return 0===t.length?new $t(this.span(e)):1===t.length?t[0]:new Jt(this.span(e),t)}parsePipe(){let t=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{const e=this.expectIdentifierOrKeyword(),n=[];for(;this.optionalCharacter(58);)n.push(this.parseExpression());t=new re(this.span(t.span.start),t,e,n)}while(this.optionalOperator("|"))}return t}parseExpression(){return this.parseConditional()}parseConditional(){const t=this.inputIndex,e=this.parseLogicalOr();if(this.optionalOperator("?")){const n=this.parsePipe();let a;if(this.optionalCharacter(58))a=this.parsePipe();else{const e=this.input.substring(t,this.inputIndex);this.error(`Conditional expression ${e} requires all 3 expressions`),a=new $t(this.span(t))}return new Qt(this.span(t),e,n,a)}return e}parseLogicalOr(){let t=this.parseLogicalAnd();for(;this.optionalOperator("||");){const e=this.parseLogicalAnd();t=new de(this.span(t.span.start),"||",t,e)}return t}parseLogicalAnd(){let t=this.parseEquality();for(;this.optionalOperator("&&");){const e=this.parseEquality();t=new de(this.span(t.span.start),"&&",t,e)}return t}parseEquality(){let t=this.parseRelational();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"==":case"===":case"!=":case"!==":this.advance();const n=this.parseRelational();t=new de(this.span(t.span.start),e,t,n);continue}break}return t}parseRelational(){let t=this.parseAdditive();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"<":case">":case"<=":case">=":this.advance();const n=this.parseAdditive();t=new de(this.span(t.span.start),e,t,n);continue}break}return t}parseAdditive(){let t=this.parseMultiplicative();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"+":case"-":this.advance();const n=this.parseMultiplicative();t=new de(this.span(t.span.start),e,t,n);continue}break}return t}parseMultiplicative(){let t=this.parsePrefix();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"*":case"%":case"/":this.advance();const n=this.parsePrefix();t=new de(this.span(t.span.start),e,t,n);continue}break}return t}parsePrefix(){if(this.next.type===me.Operator){const t=this.inputIndex,e=this.next.strValue;let n;switch(e){case"+":return this.advance(),this.parsePrefix();case"-":return this.advance(),n=this.parsePrefix(),new de(this.span(t),e,new ie(new Ut(t,t),0),n);case"!":return this.advance(),n=this.parsePrefix(),new le(this.span(t),n)}}return this.parseCallChain()}parseCallChain(){let t=this.parsePrimary();for(;;)if(this.optionalCharacter(46))t=this.parseAccessMemberOrMethodCall(t,!1);else if(this.optionalOperator("?."))t=this.parseAccessMemberOrMethodCall(t,!0);else if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(93),this.optionalOperator("=")){const n=this.parseConditional();t=new ae(this.span(t.span.start),t,e,n)}else t=new ne(this.span(t.span.start),t,e)}else if(this.optionalCharacter(40)){this.rparensExpected++;const e=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(41),t=new ge(this.span(t.span.start),t,e)}else{if(!this.optionalOperator("!"))return t;t=new ce(this.span(t.span.start),t)}}parsePrimary(){const t=this.inputIndex;if(this.optionalCharacter(40)){this.rparensExpected++;const t=this.parsePipe();return this.rparensExpected--,this.expectCharacter(41),t}if(this.next.isKeywordNull())return this.advance(),new ie(this.span(t),null);if(this.next.isKeywordUndefined())return this.advance(),new ie(this.span(t),void 0);if(this.next.isKeywordTrue())return this.advance(),new ie(this.span(t),!0);if(this.next.isKeywordFalse())return this.advance(),new ie(this.span(t),!1);if(this.next.isKeywordThis())return this.advance(),new Zt(this.span(t));if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parseExpressionList(93);return this.rbracketsExpected--,this.expectCharacter(93),new se(this.span(t),e)}if(this.next.isCharacter(123))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new Zt(this.span(t)),!1);if(this.next.isNumber()){const e=this.next.toNumber();return this.advance(),new ie(this.span(t),e)}if(this.next.isString()){const e=this.next.toString();return this.advance(),new ie(this.span(t),e)}return this.index>=this.tokens.length?(this.error(`Unexpected end of expression: ${this.input}`),new $t(this.span(t))):(this.error(`Unexpected token ${this.next}`),new $t(this.span(t)))}parseExpressionList(t){const e=[];if(!this.next.isCharacter(t))do{e.push(this.parsePipe())}while(this.optionalCharacter(44));return e}parseLiteralMap(){const t=[],e=[],n=this.inputIndex;if(this.expectCharacter(123),!this.optionalCharacter(125)){this.rbracesExpected++;do{const n=this.next.isString(),a=this.expectIdentifierOrKeywordOrString();t.push({key:a,quoted:n}),this.expectCharacter(58),e.push(this.parsePipe())}while(this.optionalCharacter(44));this.rbracesExpected--,this.expectCharacter(125)}return new oe(this.span(n),t,e)}parseAccessMemberOrMethodCall(t,e=!1){const n=t.span.start,a=this.expectIdentifierOrKeyword();if(this.optionalCharacter(40)){this.rparensExpected++;const r=this.parseCallArguments();this.expectCharacter(41),this.rparensExpected--;const i=this.span(n);return e?new he(i,t,a,r):new fe(i,t,a,r)}if(e)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new $t(this.span(n))):new ee(this.span(n),t,a);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new $t(this.span(n));const e=this.parseConditional();return new te(this.span(n),t,a,e)}return new Xt(this.span(n),t,a)}parseCallArguments(){if(this.next.isCharacter(41))return[];const t=[];do{t.push(this.parsePipe())}while(this.optionalCharacter(44));return t}expectTemplateBindingKey(){let t="",e=!1;do{t+=this.expectIdentifierOrKeywordOrString(),e=this.optionalOperator("-"),e&&(t+="-")}while(e);return t.toString()}parseTemplateBindings(){const t=[];let e=null;for(;this.index<this.tokens.length;){const n=this.inputIndex;let a=this.peekKeywordLet();a&&this.advance();const r=this.expectTemplateBindingKey();let i=r;a||(null===e?e=i:i=e+i[0].toUpperCase()+i.substring(1)),this.optionalCharacter(58);let s=null,o=null;if(a)s=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.peekKeywordAs())this.advance(),s=r,i=this.expectTemplateBindingKey(),a=!0;else if(this.next!==Oe&&!this.peekKeywordLet()){const t=this.inputIndex,e=this.parsePipe(),n=this.input.substring(t-this.offset,this.inputIndex-this.offset);o=new pe(e,n,this.location,this.errors)}if(t.push(new be(this.span(n),i,a,s,o)),this.peekKeywordAs()&&!a){const e=this.inputIndex;this.advance();const n=this.expectTemplateBindingKey();t.push(new be(this.span(e),n,!0,i,null))}this.optionalCharacter(59)||this.optionalCharacter(44)}return new Ae(t,[],this.errors)}error(t,e=null){this.errors.push(new Ht(t,this.input,this.locationText(e),this.location)),this.skip()}locationText(t=null){return null===t&&(t=this.index),t<this.tokens.length?`at column ${this.tokens[t].index+1} in`:"at the end of the expression"}skip(){let t=this.next;for(;this.index<this.tokens.length&&!t.isCharacter(59)&&(this.rparensExpected<=0||!t.isCharacter(41))&&(this.rbracesExpected<=0||!t.isCharacter(125))&&(this.rbracketsExpected<=0||!t.isCharacter(93));)this.next.isError()&&this.errors.push(new Ht(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),t=this.next}}class De{constructor(){this.errors=[]}static check(t){const e=new De;return t.visit(e),e.errors}visitImplicitReceiver(t,e){}visitInterpolation(t,e){}visitLiteralPrimitive(t,e){}visitPropertyRead(t,e){}visitPropertyWrite(t,e){}visitSafePropertyRead(t,e){}visitMethodCall(t,e){}visitSafeMethodCall(t,e){}visitFunctionCall(t,e){}visitLiteralArray(t,e){this.visitAll(t.expressions)}visitLiteralMap(t,e){this.visitAll(t.values)}visitBinary(t,e){}visitPrefixNot(t,e){}visitNonNullAssert(t,e){}visitConditional(t,e){}visitPipe(t,e){this.errors.push("pipes")}visitKeyedRead(t,e){}visitKeyedWrite(t,e){}visitAll(t){return t.map(t=>t.visit(this))}visitChain(t,e){}visitQuote(t,e){}}const Pe={A:"LINK",B:"BOLD_TEXT",BR:"LINE_BREAK",EM:"EMPHASISED_TEXT",H1:"HEADING_LEVEL1",H2:"HEADING_LEVEL2",H3:"HEADING_LEVEL3",H4:"HEADING_LEVEL4",H5:"HEADING_LEVEL5",H6:"HEADING_LEVEL6",HR:"HORIZONTAL_RULE",I:"ITALIC_TEXT",LI:"LIST_ITEM",LINK:"MEDIA_LINK",OL:"ORDERED_LIST",P:"PARAGRAPH",Q:"QUOTATION",S:"STRIKETHROUGH_TEXT",SMALL:"SMALL_TEXT",SUB:"SUBSTRIPT",SUP:"SUPERSCRIPT",TBODY:"TABLE_BODY",TD:"TABLE_CELL",TFOOT:"TABLE_FOOTER",TH:"TABLE_HEADER_CELL",THEAD:"TABLE_HEADER",TR:"TABLE_ROW",TT:"MONOSPACED_TEXT",U:"UNDERLINED_TEXT",UL:"UNORDERED_LIST"};class Me{constructor(){this._placeHolderNameCounts={},this._signatureToName={}}getStartTagPlaceholderName(t,e,n){const a=this._hashTag(t,e,n);if(this._signatureToName[a])return this._signatureToName[a];const r=t.toUpperCase(),i=Pe[r]||`TAG_${r}`,s=this._generateUniqueName(n?i:`START_${i}`);return this._signatureToName[a]=s,s}getCloseTagPlaceholderName(t){const e=this._hashClosingTag(t);if(this._signatureToName[e])return this._signatureToName[e];const n=t.toUpperCase(),a=this._generateUniqueName(`CLOSE_${Pe[n]||`TAG_${n}`}`);return this._signatureToName[e]=a,a}getPlaceholderName(t,e){const n=t.toUpperCase(),a=`PH: ${n}=${e}`;if(this._signatureToName[a])return this._signatureToName[a];const r=this._generateUniqueName(n);return this._signatureToName[a]=r,r}getUniquePlaceholder(t){return this._generateUniqueName(t.toUpperCase())}_hashTag(t,e,n){return`<${t}`+Object.keys(e).sort().map(t=>` ${t}=${e[t]}`).join("")+(n?"/>":`></${t}>`)}_hashClosingTag(t){return this._hashTag(`/${t}`,{},!1)}_generateUniqueName(t){if(!this._placeHolderNameCounts.hasOwnProperty(t))return this._placeHolderNameCounts[t]=1,t;const e=this._placeHolderNameCounts[t];return this._placeHolderNameCounts[t]=e+1,`${t}_${e}`}}const qe=new Ee(new ve);class je{constructor(t,e){this._expressionParser=t,this._interpolationConfig=e}toI18nMessage(t,e,n,a){this._isIcu=1===t.length&&t[0]instanceof s,this._icuDepth=0,this._placeholderRegistry=new Me,this._placeholderToContent={},this._placeholderToMessage={};const r=c(this,t,{});return new f(r,this._placeholderToContent,this._placeholderToMessage,e,n,a)}visitElement(t,e){const n=c(this,t.children),a={};t.attrs.forEach(t=>{a[t.name]=t.value});const r=ut(t.name).isVoid,i=this._placeholderRegistry.getStartTagPlaceholderName(t.name,a,r);this._placeholderToContent[i]=t.sourceSpan?t.sourceSpan.toString():"";let s="";return r||(s=this._placeholderRegistry.getCloseTagPlaceholderName(t.name),this._placeholderToContent[s]=`</${t.name}>`),new b(t.name,a,i,s,n,r,t.sourceSpan)}visitAttribute(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitText(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitComment(t,e){return null}visitExpansion(t,e){this._icuDepth++;const n={},a=new p(t.switchValue,t.type,n,t.sourceSpan);if(t.cases.forEach(t=>{n[t.value]=new g(t.expression.map(t=>t.visit(this,{})),t.expSourceSpan)}),this._icuDepth--,this._isIcu||this._icuDepth>0){const e=this._placeholderRegistry.getUniquePlaceholder(`VAR_${t.type}`);return a.expressionPlaceholder=e,this._placeholderToContent[e]=t.switchValue,a}const r=this._placeholderRegistry.getPlaceholderName("ICU",t.sourceSpan.toString()),i=new je(this._expressionParser,this._interpolationConfig);return this._placeholderToMessage[r]=i.toI18nMessage([t],"","",""),new y(a,r,t.sourceSpan)}visitExpansionCase(t,e){throw new Error("Unreachable code")}_visitTextWithInterpolation(t,e){const n=this._expressionParser.splitInterpolation(t,e.start.toString(),this._interpolationConfig);if(!n)return new h(t,e);const a=[],r=new g(a,e),{start:i,end:s}=this._interpolationConfig;for(let u=0;u<n.strings.length-1;u++){const t=n.expressions[u],r=t.split(Fe)[2]||"INTERPOLATION",o=this._placeholderRegistry.getPlaceholderName(r,t);n.strings[u].length&&a.push(new h(n.strings[u],e)),a.push(new m(t,o,e)),this._placeholderToContent[o]=i+t+s}const o=n.strings.length-1;return n.strings[o].length&&a.push(new h(n.strings[o],e)),r}}const Fe=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*("|')([\s\S]*?)\1[\s\S]*\)/g;class Ge extends X{constructor(t=N){super(ut),this.interpolationConfig=t}parse(t,e,n=!1){return super.parse(t,e,n,this.interpolationConfig)}extractMessages(t){const e=new He(["wrapper"]),n=new d("wrapper",[],t,void 0,void 0,void 0);return e.extract(n,this.interpolationConfig)}mergeTranslations(t,e,n,a,r=[]){const i=new He(r),s=new d("wrapper",[],t,void 0,void 0,void 0);return i.merge(s,e,this.interpolationConfig,n,a)}}class Ve{constructor(t,e){this.messages=t,this.errors=e}}class ze{constructor(t={},e,n,a,r,i){this.i18nNodesByMsgId=t,this.digest=e,this.mapperFactory=r,this.i18nToHtml=new Be(t,e,r,a,n,i)}static load(t,e,n,a,r,i,s=N){const o=r(t,e);return new ze(o,t=>n(t),s,i,t=>a(t),console)}get(t,e){const n=this.i18nToHtml.convert(t,e);if(n.errors.length)throw new Error(n.errors.join("\n"));return n.nodes}has(t){return this.digest(t)in this.i18nNodesByMsgId}}class Be{constructor(t={},e,n,a,r,i){this._i18nNodesByMsgId=t,this._digest=e,this._mapperFactory=n,this._missingTranslationStrategy=a,this._interpolationConfig=r,this._console=i,this._contextStack=[],this._errors=[]}convert(t,e){this._contextStack.length=0,this._errors.length=0,this._params=e,this._paramKeys=Object.keys(e);const n=this.convertToText(t),a=t.nodes[0].sourceSpan.start.file.url,r=(new Ge).parse(n,a,!0);return{nodes:r.rootNodes,errors:[...this._errors,...r.errors]}}visitText(t,e){return t.value}visitContainer(t,e){return t.children.map(t=>t.visit(this)).join("")}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${this._srcMsg.placeholders.hasOwnProperty(t.expression)?this._srcMsg.placeholders[t.expression]:t.expression}, ${t.type}, ${n.join(" ")}}`}visitPlaceholder(t,e){const n=this._mapper(t.name);return this._srcMsg.placeholders.hasOwnProperty(n)?this.convertToValue(this._srcMsg.placeholders[n]):this._srcMsg.placeholderToMessage.hasOwnProperty(n)?this.convertToText(this._srcMsg.placeholderToMessage[n]):(this._addError(t,`Unknown placeholder "${t.name}"`),"")}visitTagPlaceholder(t,e){const n=`${t.tag}`,a=Object.keys(t.attrs).map(e=>`${e}="${t.attrs[e]}"`).join(" ");return t.isVoid?`<${n} ${a}/>`:`<${n} ${a}>${t.children.map(t=>t.visit(this)).join("")}</${n}>`}visitIcuPlaceholder(t,e){return this.convertToText(this._srcMsg.placeholderToMessage[t.name])}convertToText(t){const e=this._digest(t),n=this._mapperFactory?this._mapperFactory(t):null;let a;this._contextStack.push({msg:this._srcMsg,mapper:this._mapper}),this._srcMsg=t,this._i18nNodesByMsgId.hasOwnProperty(e)?(a=this._i18nNodesByMsgId[e],this._mapper=t=>n?n.toInternalName(t):t):(this._missingTranslationStrategy===r.MissingTranslationStrategy.Error?this._addError(t.nodes[0],`Missing translation for message "${e}"`):this._console&&this._missingTranslationStrategy===r.MissingTranslationStrategy.Warning&&this._console.warn(`Missing translation for message "${e}"`),a=t.nodes,this._mapper=t=>t);const i=a.map(t=>t.visit(this)).join(""),s=this._contextStack.pop();return this._srcMsg=s.msg,this._mapper=s.mapper,i}convertToValue(t){const e=t.replace(this._interpolationConfig.start,"").replace(this._interpolationConfig.end,"");return-1!==this._paramKeys.indexOf(e)?this._params[e]:t}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}const Ye=function(){var t={Extract:0,Merge:1};return t[t.Extract]="Extract",t[t.Merge]="Merge",t}();class He{constructor(t=[]){this._implicitTags=t,this.blockChildren=[]}extract(t,e){return this.init(Ye.Extract,e),t.visit(this,null),this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Ve(this.messages,this.errors)}merge(t,e,n,a,r={}){this.init(Ye.Merge,n,a),this.translations=e,this.metadata=r;const i=t.visit(this,null);return this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Q(i.children,this.errors)}visitExpansionCase(t,e){const n=c(this,t.expression,e);if(this.mode===Ye.Merge)return new o(t.value,n,t.sourceSpan,t.valueSourceSpan,t.expSourceSpan)}visitExpansion(t,e){this.mayBeAddBlockChildren(t);const n=this.inIcu;this.inIcu||(this.isInTranslatableSection&&this.addMessage([t]),this.inIcu=!0);const a=c(this,t.cases,e);return this.mode===Ye.Merge&&(t=new s(t.switchValue,t.type,a,t.sourceSpan,t.switchValueSourceSpan)),this.inIcu=n,t}visitComment(t,e){}visitText(t,e){return this.isInTranslatableSection&&this.mayBeAddBlockChildren(t),t}visitElement(t,e){this.mayBeAddBlockChildren(t),this.depth++;const n=this.inI18nNode,a=this.inImplicitNode;let r=[],i=void 0;const s=t.attrs.find(t=>"i18n"===t.name)||null,o=this._implicitTags.some(e=>t.name===e)&&!this.inIcu&&!this.isInTranslatableSection,u=!a&&o;if(this.inImplicitNode=a||o,this.isInTranslatableSection||this.inIcu)(s||u)&&this._reportError(t,"Could not mark an element as translatable inside a translatable section"),this.mode===Ye.Extract&&c(this,t.children);else{if(s||u){this.inI18nNode=!0;const e=this.addMessage(t.children,this.metadata);i=this.translateMessage(t,e)}if(this.mode===Ye.Extract){const e=s||u;e&&this.openTranslatableSection(t),c(this,t.children),e&&this._closeTranslatableSection(t,t.children)}}return this.mode===Ye.Merge&&(i||t.children).forEach(t=>{const n=t.visit(this,e);n&&!this.isInTranslatableSection&&(r=r.concat(n))}),this.depth--,this.inI18nNode=n,this.inImplicitNode=a,this.mode===Ye.Merge?new d(t.name,[],r,t.sourceSpan,t.startSourceSpan,t.endSourceSpan):null}visitAttribute(t,e){throw new Error("unreachable code")}init(t,e,n={}){this.mode=t,this.inI18nBlock=!1,this.inI18nNode=!1,this.depth=0,this.inIcu=!1,this.msgCountAtSectionStart=void 0,this.errors=[],this.messages=[],this.inImplicitNode=!1,this.createI18nMessage=function(t){const e=new je(qe,t);return(t,n,a,r)=>e.toI18nMessage(t,n,a,r)}(e),this.params=n}addMessage(t,{meaning:e="",description:n="",id:a=""}={}){if(0===t.length||1===t.length&&t[0]instanceof u&&!t[0].value)return null;const r=this.createI18nMessage(t,e,n,a);return this.messages.push(r),r}translateMessage(t,e){if(e&&this.mode===Ye.Merge){const n=this.translations.get(e,this.params);if(n)return n;this._reportError(t,`Translation unavailable for message id="${this.translations.digest(e)}"`)}return[]}mayBeAddBlockChildren(t){this.inI18nBlock&&!this.inIcu&&this.depth===this.blockStartDepth&&this.blockChildren.push(t)}openTranslatableSection(t){this.isInTranslatableSection?this._reportError(t,"Unexpected section start"):this.msgCountAtSectionStart=this.messages.length}get isInTranslatableSection(){return void 0!==this.msgCountAtSectionStart}_closeTranslatableSection(t,e){if(!this.isInTranslatableSection)return void this._reportError(t,"Unexpected section end");const n=this.msgCountAtSectionStart;if(1===e.reduce((t,e)=>t+(e instanceof l?0:1),0))for(let a=this.messages.length-1;a>=n;a--){const t=this.messages[a].nodes;if(!(1===t.length&&t[0]instanceof h)){this.messages.splice(a,1);break}}this.msgCountAtSectionStart=void 0}_reportError(t,e){this.errors.push(new w(t.sourceSpan,e))}}const Ue=new r.InjectionToken("MissingTranslationStrategy");class We{constructor(t,e,n,a=r.MissingTranslationStrategy.Warning){let i,s,o=t=>null;switch(t=(t||"xlf").toLowerCase()){case"xtb":i=Gt,s=Vt,o=zt;break;case"xliff2":case"xlf2":i=Pt,s=Mt;break;case"xliff":case"xlf":i=kt,s=Et;break;default:throw new Error(`Unknown translations format ${t}`)}const u=new Ge,d=ze.load(e,"i18n",s,o,i,a);return(t,e={})=>{const a="string"==typeof t?t:t.value,r={};"object"==typeof t&&(r.id=t.id,r.meaning=t.meaning,r.description=t.description);const i=u.parse(a,"",!0);if(i.errors.length)throw i.errors;return function(t,e,n){return t.map(t=>t.visit(new ct(e,n),null))}(u.mergeTranslations(i.rootNodes,d,e,r,["wrapper"]).rootNodes,n,e).join("")}}}},GoyQ:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},GyhO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LRne"),r=n("0EUg");function i(...t){return Object(r.a)()(Object(a.a)(...t))}},H0h1:function(t,e,n){var a=n("SKAX");t.exports=function(t,e){var n=!0;return a(t,(function(t,a,r){return n=!!e(t,a,r)})),n}},H8ED:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвіліна":"хвіліну":"h"===n?e?"гадзіна":"гадзіну":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:e?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}t.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:e,mm:e,h:e,hh:e,d:"дзень",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(t){return/^(дня|вечара)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночы":t<12?"раніцы":t<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!=2&&t%10!=3||t%100==12||t%100==13?t+"-ы":t+"-і";case"D":return t+"-га";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},H8j4:function(t,e,n){var a=n("QkVE");t.exports=function(t,e){var n=a(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}},HAuM:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},HDdC:function(t,e,n){"use strict";var a=n("7o/Q"),r=n("2QA8"),i=n("gRHU"),s=n("kJWO"),o=n("mCNh"),u=n("2fFW");n.d(e,"a",(function(){return d}));let d=(()=>{class t{constructor(t){this._isScalar=!1,t&&(this._subscribe=t)}lift(e){const n=new t;return n.source=this,n.operator=e,n}subscribe(t,e,n){const{operator:s}=this,o=function(t,e,n){if(t){if(t instanceof a.a)return t;if(t[r.a])return t[r.a]()}return t||e||n?new a.a(t,e,n):new a.a(i.a)}(t,e,n);if(o.add(s?s.call(o,this.source):this.source||u.a.useDeprecatedSynchronousErrorHandling&&!o.syncErrorThrowable?this._subscribe(o):this._trySubscribe(o)),u.a.useDeprecatedSynchronousErrorHandling&&o.syncErrorThrowable&&(o.syncErrorThrowable=!1,o.syncErrorThrown))throw o.syncErrorValue;return o}_trySubscribe(t){try{return this._subscribe(t)}catch(e){u.a.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),function(t){for(;t;){const{closed:e,destination:n,isStopped:r}=t;if(e||r)return!1;t=n&&n instanceof a.a?n:null}return!0}(t)?t.error(e):console.warn(e)}}forEach(t,e){return new(e=l(e))((e,n)=>{let a;a=this.subscribe(e=>{try{t(e)}catch(r){n(r),a&&a.unsubscribe()}},n,e)})}_subscribe(t){const{source:e}=this;return e&&e.subscribe(t)}[s.a](){return this}pipe(...t){return 0===t.length?this:Object(o.b)(t)(this)}toPromise(t){return new(t=l(t))((t,e)=>{let n;this.subscribe(t=>n=t,t=>e(t),()=>t(n))})}}return t.create=e=>new t(e),t})();function l(t){if(t||(t=u.a.Promise||Promise),!t)throw new Error("no Promise impl found");return t}},HDyB:function(t,e,n){var a=n("nmnc"),r=n("JHRd"),i=n("ljhN"),s=n("or5M"),o=n("7fqy"),u=n("rEGp"),d=a?a.prototype:void 0,l=d?d.valueOf:void 0;t.exports=function(t,e,n,a,d,c,f){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!c(new r(t),new r(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=o;case"[object Set]":if(h||(h=u),t.size!=e.size&&!(1&a))return!1;var g=f.get(t);if(g)return g==e;a|=2,f.set(t,e);var p=s(h(t),h(e),a,d,c,f);return f.delete(t),p;case"[object Symbol]":if(l)return l.call(t)==l.call(e)}return!1}},HH4o:function(t,e,n){var a=n("tiKp")("iterator"),r=!1;try{var i=0,s={next:function(){return{done:!!i++}},return:function(){r=!0}};s[a]=function(){return this},Array.from(s,(function(){throw 2}))}catch(o){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i={};i[a]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(o){}return n}},HIU9:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("dApe"),i=n("X+05"),s=n("DzJC"),o=n.n(s),u=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},d=function(){function t(t,e,n){var a=this;this.elementRef=t,this.ngZone=e,this.virtualScroll=n,this.setViewport=o()((function(){a.virtualScroll.setViewport(a.elementRef.nativeElement)}),17),this.scrollEventHandler=this.setViewport.bind(this)}return t.prototype.ngOnInit=function(){this.virtualScroll.init()},t.prototype.ngAfterViewInit=function(){var t=this;setTimeout((function(){t.setViewport(),t.virtualScroll.fireEvent({eventName:i.a.initialized})}));var e=this.elementRef.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("scroll",t.scrollEventHandler)}))},t.prototype.ngOnDestroy=function(){this.virtualScroll.clear(),this.elementRef.nativeElement.removeEventListener("scroll",this.scrollEventHandler)},t.prototype.getTotalHeight=function(){return this.virtualScroll.isEnabled()&&this.virtualScroll.totalHeight+"px"||"auto"},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Component)({selector:"tree-viewport",styles:[],providers:[r.a],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.height]="getTotalHeight()">\n        <ng-content></ng-content>\n      </div>\n    </ng-container>\n  '}),u("design:paramtypes",[a.ElementRef,a.NgZone,r.a])],t)}()},HOxn:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"Promise");t.exports=a},HP3h:function(t,e,n){!function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(t){return function(e,r,i,s){var o=n(e),u=a[t][n(e)];return 2===o&&(u=u[r?0:1]),u.replace(/%d/i,e)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},HYAF:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},Hd5f:function(t,e,n){var a=n("0Dky"),r=n("tiKp"),i=n("LQDL"),s=r("species");t.exports=function(t){return i>=51||!a((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},HjS5:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-TW">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切換導覽</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>儀表板</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>叢集</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>監控程式</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>組態</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 地圖</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>管理員模組</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>記錄</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>區塊</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>鏡像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>檔案系統</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>刪除通知</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>沒有通知。</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>任務與通知</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>選取語言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在載入面板資料...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 時間選擇器</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重設設定</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>刷新</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>無法載入資料。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選取的數目</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>找到的數目</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>總計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名稱</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>描述</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>詳細描述</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>預設值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>精靈預設值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>儲存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH 地圖檢視器</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在載入...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主機名稱</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>此欄位為必填欄位。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我確定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>關閉</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主機清單</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>整體效能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>找不到項目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>叢集記錄</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>稽核記錄</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在載入組態...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>無法載入組態。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>編輯管理員模組</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>輸入的值不是有效的 UUID,例如 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>輸入的值必須是有效的  IP 位址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>輸入的值必須為數字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>輸入的值必須為數字或小數。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>叢集 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改時間</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap 版本編號</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>新增</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>叢集範圍的 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>進階...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 復原優先程度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先程度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自訂優先程度值</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>此欄位為必填欄位!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>該值必須介於 0 至 1 之間。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重新設定權數</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 清單</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編輯</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計資料</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>用戶端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何用戶端均可存取</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>位址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填欄位</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必須包含一或多個逗號分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如︰</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>存取類型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>新增用戶端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 沒有可用的叢集 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 選取叢集 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>新增精靈</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>儲存後端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 沒有可用的資料池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 選取儲存後端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>物件閘道使用者</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 沒有可用的使用者 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 選取物件閘道使用者 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 使用者 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 沒有可用的用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 選取 cephx 用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名稱</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全標籤</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>啟用安全標籤</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路徑</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路徑必須以「/」開頭,後面可接單詞</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>將建立新目錄</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路徑</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路徑只能以單一「/」或單詞開頭</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>將建立新桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 通訊協定</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 標記</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>用戶端不能掛接子目錄 (即如果標記為 foo,則用戶端無法掛接 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同標記選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>虛擬</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同虛擬選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 沒有可用的存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 選取存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 沒有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>傳輸通訊協定</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>歡迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>需要指定使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>需要指定密碼</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登入</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,該使用者不存在於 Ceph 中。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>已禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您無權查看您要尋找的內容。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 組態</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>移除本地組態值。將繼承並使用父組態值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值為 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>池清單</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名稱只能由英數字元、破折號和底線組成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>所選的糾刪碼設定檔名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>外掛程式</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>資料區塊 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必須大於或等於 2。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>編碼區塊 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必須大於或等於 1。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久性估值 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>本地性 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障網域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 本地性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技術</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>封包大小</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 裝置類別</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任何</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目錄</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名稱...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>所選的 Ceph 池名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>池類型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 選取池類型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>放置群組</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一個放置群組!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的叢集無法處理這麼多的 PG。請重新計算所需的 PG 數量。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算說明</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製大小</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>旗標</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 覆寫</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>應用程式</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 沒有可用的糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 選取糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 選取 CRUSH 規則 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 規則</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步驟</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>壓縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>演算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 沒有可用的糾刪壓縮演算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>值應大於 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Blob 最大大小</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例如 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>值應大於 blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>壓縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>值應介於 0.0 至 1.0 之間</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細資料</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>效能詳細資料</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>快取層詳細資料</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>將影像移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護的過期日為</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>無保護</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式錯誤。請使用「YYYY-MM-DD HH:mm:ss」。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護已過期。請選取一個未來的日期或保留空白。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移動影像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>綜覽</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>探查驗證</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密碼</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>雙向驗證使用者</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>雙向驗證密碼</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用資訊︰</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>無法使用 iSCSI 目標</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>已建立</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>大小</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>物件</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>物件大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>已佈建</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>總佈建數</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>區塊名稱字首</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順序</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此設定會覆寫全域值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全域</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>此值為全域值。未為此影像設定此選項的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允許使用「/」和「@」。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 沒有可用的 RBD 池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 選取池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用專屬的資料池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>專用於儲存 RBD 的物件資料的池</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您必須增加大小。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>進階</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>分割</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 選取分割單位 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>由於已定義分割計數,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>分割單位大於物件大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>由於已定義分割單位,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>分割計數必須大於 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您正要復原</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清除垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>池︰</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>池名稱...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>回存影像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>若要回存</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>鍵入影像的新名稱并按一下</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名稱</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>過期日為</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護過期日為</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 拓撲</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常不需要變更這些參數的預設值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>支援儲存</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>進階設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目標 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 模式錯誤。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多資訊</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目標的進階設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>入口網站</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>新增入口網站</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此影像的設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>新增影像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 驗證</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>用戶端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>啟動器 IQN 必須唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>啟動器屬於群組。影像須在群組中進行設定。 </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>未新增項目。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>新增啟動器</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>新增群組</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備就緒</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>編輯池鏡像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在停用鏡像之前,必須先移除對等叢集。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {編輯} other {新增} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>叢集名稱</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>叢集名稱無效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 無效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>監控程式位址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗號分隔的位址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>監控程式位址無效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 金鑰</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 編碼的金鑰...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 金鑰必須為 Base64 編碼的金鑰。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>沒有可用的效能計數器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>精靈清單</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在載入桶資料...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>該值無效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所選的名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>擁有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 選取使用者 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>已啟用</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引類型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>放置規則</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大標記數</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>區域群組</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>桶定額</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 選取使用者名稱 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自動產生金鑰</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>存取金鑰</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子郵件地址</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>已暫停</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系統</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>使用者定額</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>顯示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 選取類型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 選取許可權 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所選的子使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>讀取、寫入</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>完整</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 金鑰</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自動產生機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在載入使用者資料...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>無法載入使用者資料。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所選的使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>電子郵件地址無效。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>所選的電子郵件地址已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>已停用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自訂</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 金鑰</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>沒有子使用者。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>沒有金鑰。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>沒有功能。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>大小不限</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>物件數不限</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>輸入的值必須大於或等於 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>確認密碼</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認的密碼與之前輸入的密碼不符。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子郵件</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>電子郵件無效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您正要為您自己的使用者移除「使用者讀取/寫入」許可權。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>若繼續,您將再也無法為任何使用者新增或移除角色。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>確定要繼續嗎?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>說明</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文件</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>關於</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>儀表板設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>使用者管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登入的使用者</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>屬性 (OSD 地圖)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>無法使用中繼資料</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>中繼資料</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>寫入</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>長條圖</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小值</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大值</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>來源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>層級</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在執行時期更新 (可編輯)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列舉值</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>另請參閱</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>叢集狀態</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>管理員精靈</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>中繼資料伺服器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 閘道</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>用戶端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>用戶端輸送量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>用戶端讀取/寫入</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>復原輸送量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>整理</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>效能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>原始容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每個 OSD 的 PG 數</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 狀態</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>目前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新探查驗證</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>沒有可用的入口網站。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>沒有可用的影像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>沒有可用的影像。請確定為目標新增一個影像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>沒有可用的啟動器。請確定為目標新增一個啟動器。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>使用中/最佳化開始時間</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>例項</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>編輯模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>新增對等</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>編輯對等</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>刪除對等</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>本地數量</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>遠端數量</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>鏡像對等</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>深層壓平</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分層</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>獨佔鎖定</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>物件對應 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>記錄 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未受保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照復原</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>刪除位置</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>待命精靈</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活動</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>已更新</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>該值可在執行時期更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>精靈/用戶端不會從監控程式組態資料庫\n      提取此值。我們不允許透過「ceph config set ...」\n      設定此選項。應透過 ceph.conf 或使用指令行\n      進行設定。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>該選項僅在精靈啟動期間生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>該選項僅影響叢集建立。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>該選項僅影響精靈建立。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可編輯</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>啟用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新連接,請稍候...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>公用位址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>開啟的工作階段</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止標示為 In</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前標示為 out 的 OSD 在啟動時將不會重新標示為 in</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD 在設定的間隔過後將不會自動標示為 out</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止標示為 Up</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允許 OSD 啟動</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>將會忽略 OSD 故障報告,如此監控程式便不會將 OSD 標示為 down</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暫停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暫停讀取和寫入</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止整理</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>整理已停用</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深層整理</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深層整理已停用</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已暫停</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止復原</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 復原已暫停</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>已清除 Snapdir</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 已轉換 snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>復原刪除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在復原期間,而非在建立互聯時執行刪除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 記錄硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>為 pg 記錄長度設定硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>out</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>in</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>down</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>標示</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 遺失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已損毀</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填數</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>處於使用中狀態的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>單次啟動的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>復原操作間隔睡眠時間</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>嚴重性</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已啟動</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>可用</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>乾淨</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>工作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>啟用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>無檔案系統</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>使用中</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待命</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>使用中的精靈</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>未設定 NFS Ganesha 服務。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>傳輸</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 使用者</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 檔案系統</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(繼承自全域組態)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>繼承自全域組態</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>沒有可用的精靈。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>快取模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>逐出前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>衝洗前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目標最大位元組數</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目標最大物件數</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>未新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>已達到應用程式上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一個池最多只能四個應用程式定義。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>允許的字元為「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長度為 128 個字元</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>過濾或新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>複本大小</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>上次變更時間</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範圍</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系統角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新使用者</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>繼續</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您已被自動登出,因為您的角色發生了變更。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各物件都被分割成資料區塊部分,分別儲存於不同的 OSD。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>運算各物件的編碼區塊并將它們儲存到不同的 OSD。\n      編碼區塊的數量等同於在不遺失資料的前提下,可停機的 OSD 數量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 外掛程式是最一般、最靈活的外掛程式,\n          也是 Ceph 糾刪碼池的預設外掛程式。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Reed_sol_van 方法更靈活︰它足以設定 k\n          和 m。Cauchy_good 方法更快,但您需要小心選取封包大小。\n          所有 reed_sol_r6_op、liberation、blaum_roth、liber8tion 都\n          等同於 RAID6,它們只能設定為 m=2。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>將以位元組大小的封包為單位進行編碼。\n          選取合適的封包大小很難。\n          Jerasure 文件包含有關此主題的詳細資訊。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>使用 jerasure 外掛程式時,若糾刪碼物件儲存於\n          多個 OSD 上,則復原一個遺失的 OSD 時需要讀取所有其他 OSD。\n          例如,若 jerasure 設定為 k=8 且 m=4,則遺失一個 OSD 後需讀取\n          其他十一個 OSD 才能修復。\n\n          lrc 糾刪碼外掛程式會建立本地同位區塊,因此只需較少的 OSD 即\n          可復原。例如,若 lrc 設定為 k=8、m=4 且 l=4,它將為每四個 OSD\n          建立額外的同位區塊。這樣,當一個 OSD 遺失時,它只需四個 OSD\n          即可復原,而不需要十一個。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>將編碼區塊和資料區塊分組為大小為 locality 的集合。例如,\n          k=4 且 m=2 時,若 locality=3,則會建立 2 個大小為 3 的組。這樣,各組都能\n          自行復原,而無需從另一組讀取區塊。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定義的區塊集將按哪種 CRUSH 桶類型儲存。\n          例如,若設定為機架,則各組 l 區塊將會被放置到不同的\n          機架中。該值用於建立類似 step choose rack 的 CRUSH\n          規則步驟。若未設定,則不會進行此類分組。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 外掛程式封包了 ISA 程式庫。它只能在 Intel 處理器上執行。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 外掛程式包含兩種 Reed Solomon 格式。\n          若設定為 reed_sol_van,則為 Vandermonde。若設定為 cauchy,則為 Cauchy。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 外掛程式封包了多個 SHEC 程式庫。\n          與 Reed Solomon 代碼相比,它能更有效地復原資料。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>同位區塊的數量,它們在各自的計算範圍內包含了\n          各資料區塊。該數值被用做持久性估值。例如,若 c=2,\n          則在不遺失資料的前提下,可有 2 個 OSD 停機。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 規則的第一步所指向的 CRUSH 桶名稱。\n      例如 step take default。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>確定兩個區塊不會存在於同一故障網域的桶中。\n      例如,若故障網域為主機,則不會有兩個區塊儲存於同一主機中。\n      該值用於建立類似 step chooseleaf host 的 CRUSH 規則步驟。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 地圖中的 crush 裝置類別名稱,\n      將放置限制於特定類別的裝置 (例如 ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>設定糾刪碼外掛程式所在目錄。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允許所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>僅允許不修改伺服器的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>不允許讀取或寫入操作,但是允許任何其他操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>不允許讀取、寫入或任何可能修改檔案屬性或目錄內容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止存取</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 選取優先程度 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>資訊</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>過去 5 分鐘</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>過去 15 分鐘</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>過去 30 分鐘</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>過去 1 小時 (預設值)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>過去 3 小時</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>過去 6 小時</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>過去 12 小時</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>過去 24 小時</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到目前為止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上週的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本週目前為止</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上個月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>本月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月目前為止</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去 6 個月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年目前為止</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>未選取項目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消選取項目以再次選取</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>已達到選取上限</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>過濾標記</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>新增徽章</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>沒有可用的項目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深層整理</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>標示為 In</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重新命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>取消保護</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>已刪除</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>已克隆</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>已複製</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>已壓平</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已還原</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>已復原</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服務品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>讀取 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒內讀取的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>讀取 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒讀取操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>寫入 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒內寫入的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>寫入 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒寫入操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>讀取 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的讀取的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>讀取 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的讀取操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>寫入 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的寫入的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>寫入 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的寫入操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在執行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>執行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>已執行</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任務</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在建立</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在刪除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在複製</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在壓平</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在復原</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在移動</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已移動</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>找不到影像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在還原</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>無法停用鏡像,因為其包含對等。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Hvzi:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},"I+eb":function(t,e,n){var a=n("2oRo"),r=n("Bs8V").f,i=n("kRJp"),s=n("busE"),o=n("zk60"),u=n("6JNq"),d=n("lMq5");t.exports=function(t,e){var n,l,c,f,h,g=t.target,p=t.global,b=t.stat;if(n=p?a:b?a[g]||o(g,{}):(a[g]||{}).prototype)for(l in e){if(f=e[l],c=t.noTargetGet?(h=r(n,l))&&h.value:n[l],!d(p?l:g+(b?".":"#")+l,t.forced)&&void 0!==c){if(typeof f==typeof c)continue;u(f,c)}(t.sham||c&&c.sham)&&i(f,"sham",!0),s(n,l,f,t)}}},I01J:function(t,e,n){var a=n("44Ds");t.exports=function(t){var e=a(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},I55L:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>t&&"number"==typeof t.length&&"function"!=typeof t},I8vh:function(t,e,n){var a=n("ppGB"),r=Math.max,i=Math.min;t.exports=function(t,e){var n=a(t);return n<0?r(n+e,0):i(n,e)}},IBtZ:function(t,e,n){!function(t){"use strict";t.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return/(წამი|წუთი|საათი|წელი)/.test(t)?t.replace(/ი$/,"ში"):t+"ში"},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(t){return 0===t?t:1===t?t+"-ლი":t<20||t<=100&&t%20==0||t%100==0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}})}(n("wd/R"))},IOzZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},IZUe:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t){this.elementRef=t,this.focus=!0}ngAfterViewInit(){const t=this.elementRef.nativeElement;this.focus&&a.isFunction(t.focus)&&t.focus()}set autofocus(t){a.isBoolean(t)?this.focus=t:a.isFunction(t)&&(this.focus=t())}}},Iab2:function(t,e,n){var a,r;void 0===(r="function"==typeof(a=function(){"use strict";function e(t,e,n){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){i(a.response,e,n)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function a(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(e){var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(n)}}var r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,i=r.saveAs||("object"!=typeof window||window!==r?function(){}:"download"in HTMLAnchorElement.prototype?function(t,i,s){var o=r.URL||r.webkitURL,u=document.createElement("a");u.download=i=i||t.name||"download",u.rel="noopener","string"==typeof t?(u.href=t,u.origin===location.origin?a(u):n(u.href)?e(t,i,s):a(u,u.target="_blank")):(u.href=o.createObjectURL(t),setTimeout((function(){o.revokeObjectURL(u.href)}),4e4),setTimeout((function(){a(u)}),0))}:"msSaveOrOpenBlob"in navigator?function(t,r,i){if(r=r||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,i),r);else if(n(t))e(t,r,i);else{var s=document.createElement("a");s.href=t,s.target="_blank",setTimeout((function(){a(s)}))}}:function(t,n,a,i){if((i=i||open("","_blank"))&&(i.document.title=i.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,a);var s="application/octet-stream"===t.type,o=/constructor/i.test(r.HTMLElement)||r.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||s&&o)&&"object"==typeof FileReader){var d=new FileReader;d.onloadend=function(){var t=d.result;t=u?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=t:location=t,i=null},d.readAsDataURL(t)}else{var l=r.URL||r.webkitURL,c=l.createObjectURL(t);i?i.location=c:location.href=c,i=null,setTimeout((function(){l.revokeObjectURL(c)}),4e4)}});r.saveAs=i.saveAs=i,t.exports=i})?a.apply(e,[]):a)||(t.exports=r)},IheW:function(t,e,n){"use strict";n.d(e,"m",(function(){return E})),n.d(e,"p",(function(){return q})),n.d(e,"q",(function(){return j})),n.d(e,"n",(function(){return D})),n.d(e,"o",(function(){return P})),n.d(e,"b",(function(){return c})),n.d(e,"g",(function(){return l})),n.d(e,"c",(function(){return I})),n.d(e,"a",(function(){return C})),n.d(e,"d",(function(){return V})),n.d(e,"e",(function(){return G})),n.d(e,"l",(function(){return F})),n.d(e,"h",(function(){return p})),n.d(e,"f",(function(){return w})),n.d(e,"i",(function(){return L})),n.d(e,"k",(function(){return k})),n.d(e,"j",(function(){return M}));var a=n("8Y7J"),r=n("LRne"),i=n("HDdC"),s=n("bOdf"),o=n("pLZG"),u=n("lJxs"),d=n("SVse");class l{}class c{}class f{constructor(t){this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?()=>{this.headers=new Map,t.split("\n").forEach(t=>{const e=t.indexOf(":");if(e>0){const n=t.slice(0,e),a=n.toLowerCase(),r=t.slice(e+1).trim();this.maybeSetNormalizedName(n,a),this.headers.has(a)?this.headers.get(a).push(r):this.headers.set(a,[r])}})}:()=>{this.headers=new Map,Object.keys(t).forEach(e=>{let n=t[e];const a=e.toLowerCase();"string"==typeof n&&(n=[n]),n.length>0&&(this.headers.set(a,n),this.maybeSetNormalizedName(e,a))})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();const e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,e){return this.clone({name:t,value:e,op:"a"})}set(t,e){return this.clone({name:t,value:e,op:"s"})}delete(t,e){return this.clone({name:t,value:e,op:"d"})}maybeSetNormalizedName(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)}init(){this.lazyInit&&(this.lazyInit instanceof f?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(e=>{this.headers.set(e,t.headers.get(e)),this.normalizedNames.set(e,t.normalizedNames.get(e))})}clone(t){const e=new f;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof f?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([t]),e}applyUpdate(t){const e=t.name.toLowerCase();switch(t.op){case"a":case"s":let n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);const a=("a"===t.op?this.headers.get(e):void 0)||[];a.push(...n),this.headers.set(e,a);break;case"d":const r=t.value;if(r){let t=this.headers.get(e);if(!t)return;t=t.filter(t=>-1===r.indexOf(t)),0===t.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,t)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>t(this.normalizedNames.get(e),this.headers.get(e)))}}class h{encodeKey(t){return g(t)}encodeValue(t){return g(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}}function g(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/gi,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%2B/gi,"+").replace(/%3D/gi,"=").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}class p{constructor(t={}){if(this.updates=null,this.cloneFrom=null,this.encoder=t.encoder||new h,t.fromString){if(t.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function(t,e){const n=new Map;return t.length>0&&t.split("&").forEach(t=>{const a=t.indexOf("="),[r,i]=-1==a?[e.decodeKey(t),""]:[e.decodeKey(t.slice(0,a)),e.decodeValue(t.slice(a+1))],s=n.get(r)||[];s.push(i),n.set(r,s)}),n}(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(e=>{const n=t.fromObject[e];this.map.set(e,Array.isArray(n)?n:[n])})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();const e=this.map.get(t);return e?e[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,e){return this.clone({param:t,value:e,op:"a"})}set(t,e){return this.clone({param:t,value:e,op:"s"})}delete(t,e){return this.clone({param:t,value:e,op:"d"})}toString(){return this.init(),this.keys().map(t=>{const e=this.encoder.encodeKey(t);return this.map.get(t).map(t=>e+"="+this.encoder.encodeValue(t)).join("&")}).join("&")}clone(t){const e=new p({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat([t]),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case"a":case"s":const e=("a"===t.op?this.map.get(t.param):void 0)||[];e.push(t.value),this.map.set(t.param,e);break;case"d":if(void 0===t.value){this.map.delete(t.param);break}{let e=this.map.get(t.param)||[];const n=e.indexOf(t.value);-1!==n&&e.splice(n,1),e.length>0?this.map.set(t.param,e):this.map.delete(t.param)}}}),this.cloneFrom=this.updates=null)}}function b(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function m(t){return"undefined"!=typeof Blob&&t instanceof Blob}function y(t){return"undefined"!=typeof FormData&&t instanceof FormData}class v{constructor(t,e,n,a){let r;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=t.toUpperCase(),function(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||a?(this.body=void 0!==n?n:null,r=a):r=n,r&&(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.params&&(this.params=r.params)),this.headers||(this.headers=new f),this.params){const t=this.params.toString();if(0===t.length)this.urlWithParams=e;else{const n=e.indexOf("?");this.urlWithParams=e+(-1===n?"?":n<e.length-1?"&":"")+t}}else this.params=new p,this.urlWithParams=e}serializeBody(){return null===this.body?null:b(this.body)||m(this.body)||y(this.body)||"string"==typeof this.body?this.body:this.body instanceof p?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return null===this.body?null:y(this.body)?null:m(this.body)?this.body.type||null:b(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof p?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||Array.isArray(this.body)?"application/json":null}clone(t={}){const e=t.method||this.method,n=t.url||this.url,a=t.responseType||this.responseType,r=void 0!==t.body?t.body:this.body,i=void 0!==t.withCredentials?t.withCredentials:this.withCredentials,s=void 0!==t.reportProgress?t.reportProgress:this.reportProgress;let o=t.headers||this.headers,u=t.params||this.params;return void 0!==t.setHeaders&&(o=Object.keys(t.setHeaders).reduce((e,n)=>e.set(n,t.setHeaders[n]),o)),t.setParams&&(u=Object.keys(t.setParams).reduce((e,n)=>e.set(n,t.setParams[n]),u)),new v(e,n,r,{params:u,headers:o,reportProgress:s,responseType:a,withCredentials:i})}}const x=function(){var t={Sent:0,UploadProgress:1,ResponseHeader:2,DownloadProgress:3,Response:4,User:5};return t[t.Sent]="Sent",t[t.UploadProgress]="UploadProgress",t[t.ResponseHeader]="ResponseHeader",t[t.DownloadProgress]="DownloadProgress",t[t.Response]="Response",t[t.User]="User",t}();class _{constructor(t,e=200,n="OK"){this.headers=t.headers||new f,this.status=void 0!==t.status?t.status:e,this.statusText=t.statusText||n,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}}class T extends _{constructor(t={}){super(t),this.type=x.ResponseHeader}clone(t={}){return new T({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class O extends _{constructor(t={}){super(t),this.type=x.Response,this.body=void 0!==t.body?t.body:null}clone(t={}){return new O({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class w extends _{constructor(t){super(t,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${t.url||"(unknown url)"}`:`Http failure response for ${t.url||"(unknown url)"}: ${t.status} ${t.statusText}`,this.error=t.error||null}}function S(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}class I{constructor(t){this.handler=t}request(t,e,n={}){let a;if(t instanceof v)a=t;else{let r=void 0;r=n.headers instanceof f?n.headers:new f(n.headers);let i=void 0;n.params&&(i=n.params instanceof p?n.params:new p({fromObject:n.params})),a=new v(t,e,void 0!==n.body?n.body:null,{headers:r,params:i,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials})}const i=Object(r.a)(a).pipe(Object(s.a)(t=>this.handler.handle(t)));if(t instanceof v||"events"===n.observe)return i;const d=i.pipe(Object(o.a)(t=>t instanceof O));switch(n.observe||"body"){case"body":switch(a.responseType){case"arraybuffer":return d.pipe(Object(u.a)(t=>{if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body}));case"blob":return d.pipe(Object(u.a)(t=>{if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body}));case"text":return d.pipe(Object(u.a)(t=>{if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body}));case"json":default:return d.pipe(Object(u.a)(t=>t.body))}case"response":return d;default:throw new Error(`Unreachable: unhandled observe type ${n.observe}}`)}}delete(t,e={}){return this.request("DELETE",t,e)}get(t,e={}){return this.request("GET",t,e)}head(t,e={}){return this.request("HEAD",t,e)}jsonp(t,e){return this.request("JSONP",t,{params:(new p).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,e={}){return this.request("OPTIONS",t,e)}patch(t,e,n={}){return this.request("PATCH",t,S(n,e))}post(t,e,n={}){return this.request("POST",t,S(n,e))}put(t,e,n={}){return this.request("PUT",t,S(n,e))}}class N{constructor(t,e){this.next=t,this.interceptor=e}handle(t){return this.interceptor.intercept(t,this.next)}}const C=new a.InjectionToken("HTTP_INTERCEPTORS");class R{intercept(t,e){return e.handle(t)}}const A=/^\)\]\}',?\n/;class k{}class E{constructor(){}build(){return new XMLHttpRequest}}class L{constructor(t){this.xhrFactory=t}handle(t){if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new i.a(e=>{const n=this.xhrFactory.build();if(n.open(t.method,t.urlWithParams),t.withCredentials&&(n.withCredentials=!0),t.headers.forEach((t,e)=>n.setRequestHeader(t,e.join(","))),t.headers.has("Accept")||n.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){const e=t.detectContentTypeHeader();null!==e&&n.setRequestHeader("Content-Type",e)}if(t.responseType){const e=t.responseType.toLowerCase();n.responseType="json"!==e?e:"text"}const a=t.serializeBody();let r=null;const i=()=>{if(null!==r)return r;const e=1223===n.status?204:n.status,a=n.statusText||"OK",i=new f(n.getAllResponseHeaders()),s=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(n)||t.url;return r=new T({headers:i,status:e,statusText:a,url:s}),r},s=()=>{let{headers:a,status:r,statusText:s,url:o}=i(),u=null;204!==r&&(u=void 0===n.response?n.responseText:n.response),0===r&&(r=u?200:0);let d=r>=200&&r<300;if("json"===t.responseType&&"string"==typeof u){const t=u;u=u.replace(A,"");try{u=""!==u?JSON.parse(u):null}catch(l){u=t,d&&(d=!1,u={error:l,text:u})}}d?(e.next(new O({body:u,headers:a,status:r,statusText:s,url:o||void 0})),e.complete()):e.error(new w({error:u,headers:a,status:r,statusText:s,url:o||void 0}))},o=t=>{const{url:a}=i(),r=new w({error:t,status:n.status||0,statusText:n.statusText||"Unknown Error",url:a||void 0});e.error(r)};let u=!1;const d=a=>{u||(e.next(i()),u=!0);let r={type:x.DownloadProgress,loaded:a.loaded};a.lengthComputable&&(r.total=a.total),"text"===t.responseType&&n.responseText&&(r.partialText=n.responseText),e.next(r)},l=t=>{let n={type:x.UploadProgress,loaded:t.loaded};t.lengthComputable&&(n.total=t.total),e.next(n)};return n.addEventListener("load",s),n.addEventListener("error",o),t.reportProgress&&(n.addEventListener("progress",d),null!==a&&n.upload&&n.upload.addEventListener("progress",l)),n.send(a),e.next({type:x.Sent}),()=>{n.removeEventListener("error",o),n.removeEventListener("load",s),t.reportProgress&&(n.removeEventListener("progress",d),null!==a&&n.upload&&n.upload.removeEventListener("progress",l)),n.abort()}})}}const D=new a.InjectionToken("XSRF_COOKIE_NAME"),P=new a.InjectionToken("XSRF_HEADER_NAME");class M{}class q{constructor(t,e,n){this.doc=t,this.platform=e,this.cookieName=n,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=Object(d["ɵparseCookieValue"])(t,this.cookieName),this.lastCookieString=t),this.lastToken}}class j{constructor(t,e){this.tokenService=t,this.headerName=e}intercept(t,e){const n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);const a=this.tokenService.getToken();return null===a||t.headers.has(this.headerName)||(t=t.clone({headers:t.headers.set(this.headerName,a)})),e.handle(t)}}class F{constructor(t,e){this.backend=t,this.injector=e,this.chain=null}handle(t){if(null===this.chain){const t=this.injector.get(C,[]);this.chain=t.reduceRight((t,e)=>new N(t,e),this.backend)}return this.chain.handle(t)}}class G{static disable(){return{ngModule:G,providers:[{provide:j,useClass:R}]}}static withOptions(t={}){return{ngModule:G,providers:[t.cookieName?{provide:D,useValue:t.cookieName}:[],t.headerName?{provide:P,useValue:t.headerName}:[]]}}}class V{}},IjjT:function(t,e,n){"use strict";let a=(()=>{class t{constructor(e,n=t.now){this.SchedulerAction=e,this.now=n}schedule(t,e=0,n){return new this.SchedulerAction(this,t).schedule(n,e)}}return t.now=()=>Date.now(),t})();n.d(e,"a",(function(){return r}));class r extends a{constructor(t,e=a.now){super(t,()=>r.delegate&&r.delegate!==this?r.delegate.now():e()),this.actions=[],this.active=!1,this.scheduled=void 0}schedule(t,e=0,n){return r.delegate&&r.delegate!==this?r.delegate.schedule(t,e,n):super.schedule(t,e,n)}flush(t){const{actions:e}=this;if(this.active)return void e.push(t);let n;this.active=!0;do{if(n=t.execute(t.state,t.delay))break}while(t=e.shift());if(this.active=!1,n){for(;t=e.shift();)t.unsubscribe();throw n}}}},ImZN:function(t,e,n){var a=n("glrk"),r=n("6VoE"),i=n("UMSQ"),s=n("A2ZE"),o=n("NaFW"),u=n("m92n"),d=function(t,e){this.stopped=t,this.result=e};(t.exports=function(t,e,n,l,c){var f,h,g,p,b,m,y,v=s(e,n,l?2:1);if(c)f=t;else{if("function"!=typeof(h=o(t)))throw TypeError("Target is not iterable");if(r(h)){for(g=0,p=i(t.length);p>g;g++)if((b=l?v(a(y=t[g])[0],y[1]):v(t[g]))&&b instanceof d)return b;return new d(!1)}f=h.call(t)}for(m=f.next;!(y=m.call(f)).done;)if("object"==typeof(b=u(f,v,y.value,l))&&b&&b instanceof d)return b;return new d(!1)}).stop=function(t){return new d(!0,t)}},Ioao:function(t,e,n){var a=n("heNW"),r=Math.max;t.exports=function(t,e,n){return e=r(void 0===e?t.length-1:e,0),function(){for(var i=arguments,s=-1,o=r(i.length-e,0),u=Array(o);++s<o;)u[s]=i[e+s];s=-1;for(var d=Array(e+1);++s<e;)d[s]=i[s];return d[e]=n(u),a(t,this,d)}}},"Ivi+":function(t,e,n){!function(t){"use strict";t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}})}(n("wd/R"))},IzCI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B/s","kB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"])}}},IzEk:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return e=>0===t?Object(i.b)():e.lift(new o(t))}class o{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new u(t,this.total))}}class u extends a.a{constructor(t,e){super(t),this.total=e,this.count=0}_next(t){const e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))}}},J2m7:function(t,e,n){var a=n("XKAG")(n("UfWW"));t.exports=a},JBE3:function(t,e,n){var a=n("+Qka"),r=n("LsHQ")((function(t,e,n,r){a(t,e,n,r)}));t.exports=r},JBy8:function(t,e,n){var a=n("yoRg"),r=n("eDl+").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},JC6p:function(t,e,n){var a=n("cq/+"),r=n("7GkX");t.exports=function(t,e){return t&&a(t,e,r)}},"JCF/":function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(t){return/ئێواره‌/.test(t)},meridiem:function(t,e,n){return t<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},JHRd:function(t,e,n){var a=n("Kz5y");t.exports=a.Uint8Array},JHgL:function(t,e,n){var a=n("QkVE");t.exports=function(t){return a(this,t).get(t)}},JIr8:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj");function s(t){return function(e){const n=new o(t),a=e.lift(n);return n.caught=a}}class o{constructor(t){this.selector=t}call(t,e){return e.subscribe(new u(t,this.selector,this.caught))}}class u extends a.a{constructor(t,e,n){super(t),this.selector=e,this.caught=n}error(t){if(!this.isStopped){let n;try{n=this.selector(t,this.caught)}catch(e){return void super.error(e)}this._unsubscribeAndRecycle();const a=new r.a(this,void 0,void 0);this.add(a);const s=Object(i.a)(this,n,void 0,void 0,a);s!==a&&this.add(s)}}}},JSQU:function(t,e,n){var a=n("YESw");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=a&&void 0===e?"__lodash_hash_undefined__":e,this}},JTzB:function(t,e,n){var a=n("NykK"),r=n("ExA7");t.exports=function(t){return r(t)&&"[object Arguments]"==a(t)}},JVSJ:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},JZM8:function(t,e,n){var a=n("FfPP"),r=n("xs/l")((function(t,e){return null==t?{}:a(t,e)}));t.exports=r},Jlc5:function(t,e,n){var a=n("ZirO"),r=n("H0h1"),i=n("ut/Y"),s=n("Z0cm"),o=n("mv/X");t.exports=function(t,e,n){var u=s(t)?a:r;return n&&o(t,e,n)&&(e=void 0),u(t,i(e,3))}},JmpY:function(t,e,n){var a=n("eUgh");t.exports=function(t,e){return a(e,(function(e){return t[e]}))}},Juji:function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},JvlW:function(t,e,n){!function(t){"use strict";var e={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(t,e,n,a){return e?r(n)[0]:a?r(n)[1]:r(n)[2]}function a(t){return t%10==0||t>10&&t<20}function r(t){return e[t].split("_")}function i(t,e,i,s){var o=t+" ";return 1===t?o+n(0,e,i[0],s):e?o+(a(t)?r(i)[1]:r(i)[0]):s?o+r(i)[1]:o+(a(t)?r(i)[1]:r(i)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(t,e,n,a){return e?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"},ss:i,m:n,mm:i,h:n,hh:i,d:n,dd:i,M:n,MM:i,y:n,yy:i},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})}(n("wd/R"))},JxMD:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("hrfs");n("dgut"),n("Fgil"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return o}));var s=a["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;position:static!important}']],data:{}});function o(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{chartCanvasRef:0}),a["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),a["ɵeld"](2,0,null,null,6,"div",[["class","chart-container"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgStyleImpl"],r["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgStyle,[r["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵeld"](5,0,[[1,0],["sparkCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),a["ɵdid"](6,999424,null,0,i.a,[a.ElementRef,i.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),a["ɵeld"](7,0,[[2,0],["sparkTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.style),t(e,6,0,n.datasets,n.labels,n.options,"line",n.colors)}),null)}},"K/tc":function(t,e,n){!function(t){"use strict";t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},KMkd:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},KOzp:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return d})),n.d(e,"d",(function(){return l}));var a=n("z/SZ"),r=n("hpHm"),i=n("2uy1"),s=n("PqYM");class o{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="click",this.outsideClick=!1,this.delay=0}}class u{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}}class d{constructor(t,e,n,a,r,i){this._elementRef=e,this._renderer=n,this._positionService=i,this.outsideClick=!1,this.containerClass="",this._isInited=!1,this._popover=r.createLoader(e,a,n).provide({provide:o,useValue:t}),Object.assign(this,t),this.onShown=this._popover.onShown,this.onHidden=this._popover.onHidden,"undefined"!=typeof window&&e.nativeElement.addEventListener("click",(function(){try{e.nativeElement.focus()}catch(t){return}}))}get isOpen(){return this._popover.isShown}set isOpen(t){t?this.show():this.hide()}show(){if(this._popover.isShown||!this.popover||this._delayTimeoutId)return;this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}});const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._popover.attach(u).to(this.container).position({attachment:this.placement}).show({content:this.popover,context:this.popoverContext,placement:this.placement,title:this.popoverTitle,containerClass:this.containerClass}),this.adaptivePosition||(this._positionService.calcPosition(),this._positionService.deletePositionElement(this._popover._componentRef.location)),this.isOpen=!0},e=()=>{this._popoverCancelShowFn&&this._popoverCancelShowFn()};if(this.delay){const n=Object(s.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._popoverCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this.isOpen&&(this._popover.hide(),this.isOpen=!1)}toggle(){if(this.isOpen)return this.hide();this.show()}ngOnInit(){this._isInited||(this._isInited=!0,this._popover.listen({triggers:this.triggers,outsideClick:this.outsideClick,show:()=>this.show()}))}ngOnDestroy(){this._popover.dispose()}}class l{static forRoot(){return{ngModule:l,providers:[o,a.a,i.a]}}}},KSF8:function(t,e,n){!function(t){"use strict";t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},KTz0:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},KVJa:function(t,e,n){"use strict";var a=n("8Y7J");n("Z21x"),n("SVse"),n("sne2"),n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var r=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["ɵvid"](0,[(t()(),a["ɵted"](-1,null,[" \n"])),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),a["ɵted"](2,null,[" ","\n"]))],null,(function(t,e){t(e,2,0,e.component.name)}))}},KfNM:function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},Kqap:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){let n=!1;return arguments.length>=2&&(n=!0),function(a){return a.lift(new i(t,e,n))}}class i{constructor(t,e,n=!1){this.accumulator=t,this.seed=e,this.hasSeed=n}call(t,e){return e.subscribe(new s(t,this.accumulator,this.seed,this.hasSeed))}}class s extends a.a{constructor(t,e,n,a){super(t),this.accumulator=e,this._seed=n,this.hasSeed=a,this.index=0}get seed(){return this._seed}set seed(t){this.hasSeed=!0,this._seed=t}_next(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)}_tryNext(t){const e=this.index++;let n;try{n=this.accumulator(this.seed,t,e)}catch(a){this.destination.error(a)}this.seed=n,this.destination.next(n)}}},KqfI:function(t,e,n){"use strict";function a(){}n.d(e,"a",(function(){return a}))},KwMD:function(t,e){t.exports=function(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}},KxBF:function(t,e){t.exports=function(t,e,n){var a=-1,r=t.length;e<0&&(e=-e>r?0:r+e),(n=n>r?r:n)<0&&(n+=r),r=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(r);++a<r;)i[a]=t[a+e];return i}},Kz5y:function(t,e,n){var a=n("WFqU"),r="object"==typeof self&&self&&self.Object===Object&&self,i=a||r||Function("return this")();t.exports=i},L8xA:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},LOMR:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fwy9"),i=n("gk6K"),s=n("woSy"),o=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[["class","node-drop-slot"]],null,[[null,"treeDrop"],[null,"drop"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,1).onDrop(n)&&r),"treeDrop"===e&&(r=!1!==i.onDrop(n)&&r),r}),null,null)),a["ɵdid"](1,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop"})],(function(t,e){var n=e.component;t(e,1,0,!0,n.allowDrop.bind(n))}),null)}var d=n("SVse"),l=n("CoVI"),c=n("uNpg"),f=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["class","tree-node-checkbox"],["type","checkbox"]],[[8,"checked",0],[8,"indeterminate",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("checkboxClick",n)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,1,0,n.node.isSelected,n.node.isPartiallySelected)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,h)),a["ɵdid"](1,212992,null,0,l.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var p=n("jV1L"),b=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","toggle-children-wrapper"]],[[2,"toggle-children-wrapper-expanded",null],[2,"toggle-children-wrapper-collapsed",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("expanderClick",n)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","toggle-children"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.node.isExpanded,n.node.isCollapsed)}))}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","toggle-children-placeholder"]],null,null,null,null,null))],null,null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](2,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.hasChildren),t(e,4,0,!n.node.hasChildren)}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,v)),a["ɵdid"](1,212992,null,0,l.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var _=n("C523"),T=n("rZud"),O=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.node.displayField)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](1,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,d.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node,n.node,n.index);t(e,3,0,a,n.template)}),null)}var I=n("OIDT"),N=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-checkbox",[],null,null,null,g,f)),a["ɵdid"](1,49152,null,0,c.a,[],{node:[0,"node"]},null)],(function(t,e){t(e,1,0,e.component.node)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","node-wrapper"]],[[4,"padding-left",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](2,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-expander",[],null,null,null,x,b)),a["ɵdid"](4,49152,null,0,p.a,[],{node:[0,"node"]},null),(t()(),a["ɵeld"](5,0,null,null,4,"div",[["class","node-content-wrapper"]],[[2,"node-content-wrapper-active",null],[2,"node-content-wrapper-focused",null]],[[null,"click"],[null,"dblclick"],[null,"mouseover"],[null,"mouseout"],[null,"contextmenu"],[null,"treeDrop"],[null,"treeDropDragOver"],[null,"treeDropDragLeave"],[null,"treeDropDragEnter"],[null,"drop"],[null,"dragstart"],[null,"dragend"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,6).onDrop(n)&&r),"dragstart"===e&&(r=!1!==a["ɵnov"](t,7).onDragStart(n)&&r),"dragend"===e&&(r=!1!==a["ɵnov"](t,7).onDragEnd()&&r),"click"===e&&(r=!1!==i.node.mouseAction("click",n)&&r),"dblclick"===e&&(r=!1!==i.node.mouseAction("dblClick",n)&&r),"mouseover"===e&&(r=!1!==i.node.mouseAction("mouseOver",n)&&r),"mouseout"===e&&(r=!1!==i.node.mouseAction("mouseOut",n)&&r),"contextmenu"===e&&(r=!1!==i.node.mouseAction("contextMenu",n)&&r),"treeDrop"===e&&(r=!1!==i.node.onDrop(n)&&r),"treeDropDragOver"===e&&(r=!1!==i.node.mouseAction("dragOver",n)&&r),"treeDropDragLeave"===e&&(r=!1!==i.node.mouseAction("dragLeave",n)&&r),"treeDropDragEnter"===e&&(r=!1!==i.node.mouseAction("dragEnter",n)&&r),r}),null,null)),a["ɵdid"](6,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop",onDragOverCallback:"treeDropDragOver",onDragLeaveCallback:"treeDropDragLeave",onDragEnterCallback:"treeDropDragEnter"}),a["ɵdid"](7,4603904,null,0,_.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{draggedElement:[0,"draggedElement"],treeDragEnabled:[1,"treeDragEnabled"]},null),(t()(),a["ɵeld"](8,0,null,null,1,"tree-node-content",[],null,null,null,S,O)),a["ɵdid"](9,49152,null,0,T.a,[],{node:[0,"node"],index:[1,"index"],template:[2,"template"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.options.useCheckbox),t(e,4,0,n.node),t(e,6,0,n.node.allowDragoverStyling(),n.node.allowDrop),t(e,7,0,n.node,n.node.allowDrag()),t(e,9,0,n.node,n.index,n.templates.treeNodeTemplate)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getNodePadding()),t(e,5,0,n.node.isActive,n.node.isFocused)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](1,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,d.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2,templates:3})],(function(t,e){var n=e.component;t(e,1,0,!n.templates.treeNodeWrapperTemplate);var a=t(e,4,0,n.node,n.node,n.index,n.templates);t(e,3,0,a,n.templates.treeNodeWrapperTemplate)}),null)}var k=n("WaXT"),E=n("ZhuC"),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["loading..."]))],null,null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,D)),a["ɵdid"](1,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,d.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node);t(e,3,0,a,n.template)}),null)}var M=n("4Dmd"),q=n("pcHL"),j=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-collection",[],null,null,null,X,Z)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.children,n.node.treeModel,n.templates)}),null)}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-loading-component",[["class","tree-node-loading"]],[[4,"padding-left",null]],null,null,P,L)),a["ɵdid"](1,49152,null,0,E.a,[],{template:[0,"template"],node:[1,"node"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.templates.loadingTemplate,n.node)}),(function(t,e){t(e,0,0,e.component.node.getNodePadding())}))}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[2,"tree-children",null],[2,"tree-children-no-padding",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](2,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](4,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.children),t(e,4,0,!n.node.children)}),(function(t,e){t(e,0,0,!0,e.component.node.options.levelPadding)}))}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](2,16384,null,0,M.a,[a.Renderer2,a.TemplateRef,a.ViewContainerRef],{animateSpeed:[0,"animateSpeed"],animateAcceleration:[1,"animateAcceleration"],isEnabled:[2,"isEnabled"],isOpen:[3,"isOpen"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.options.animateSpeed,n.node.options.animateAcceleration,n.node.options.animateExpand,n.node.isExpanded)}),null)}function B(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,z)),a["ɵdid"](1,212992,null,0,l.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var Y=n("TNUL"),H=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function U(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[],null,null,null,u,o)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.parent,n.node.index)}),null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[],[[8,"className",0],[2,"tree-node",null],[2,"tree-node-expanded",null],[2,"tree-node-collapsed",null],[2,"tree-node-leaf",null],[2,"tree-node-active",null],[2,"tree-node-focused",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,U)),a["ɵdid"](2,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-wrapper",[],null,null,null,A,N)),a["ɵdid"](4,49152,null,0,I.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"tree-node-children",[],null,null,null,B,j)),a["ɵdid"](6,49152,null,0,q.a,[],{node:[0,"node"],templates:[1,"templates"]},null),(t()(),a["ɵeld"](7,0,null,null,1,"tree-node-drop-slot",[],null,null,null,u,o)),a["ɵdid"](8,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===n.index),t(e,4,0,n.node,n.index,n.templates),t(e,6,0,n.node,n.templates),t(e,8,0,n.node.parent,n.node.index+1)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getClass(),!0,n.node.isExpanded&&n.node.hasChildren,n.node.isCollapsed&&n.node.hasChildren,n.node.isLeaf,n.node.isActive,n.node.isFocused)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](2,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](4,540672,null,0,d.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](5,{$implicit:0,node:1,index:2,templates:3}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.templates.treeNodeFullTemplate);var a=t(e,5,0,n.node,n.node,n.index,n.templates);t(e,4,0,a,n.templates.treeNodeFullTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,K)),a["ɵdid"](1,212992,null,0,l.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var Z=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function J(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node",[],null,null,null,$,H)),a["ɵdid"](1,49152,null,0,Y.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null)],(function(t,e){t(e,1,0,e.context.$implicit,e.context.index,e.component.templates)}),null)}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"div",[],[[4,"margin-top",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,J)),a["ɵdid"](3,278528,null,0,d.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.viewportNodes,n.trackNode)}),(function(t,e){t(e,1,0,e.component.marginTop)}))}function X(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Q)),a["ɵdid"](1,212992,null,0,l.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var tt=n("dApe"),et=n("MP8s"),nt=n("HIU9"),at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[],[[4,"height",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){t(e,1,0,e.component.getTotalHeight())}))}function it(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,rt)),a["ɵdid"](1,212992,null,0,l.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}n("fxL3"),n.d(e,"a",(function(){return st})),n.d(e,"b",(function(){return dt}));var st=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tree-node-collection",[],null,null,null,X,Z)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null),a["ɵpod"](2,{loadingTemplate:0,treeNodeTemplate:1,treeNodeWrapperTemplate:2,treeNodeFullTemplate:3})],(function(t,e){var n=e.component,a=n.treeModel.roots,r=n.treeModel,i=t(e,2,0,n.loadingTemplate,n.treeNodeTemplate,n.treeNodeWrapperTemplate,n.treeNodeFullTemplate);t(e,1,0,a,r,i)}),null)}function ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[["class","empty-tree-drop-slot"]],null,null,null,u,o)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){t(e,1,0,e.component.treeModel.virtualRoot,0)}),null)}function dt(t){return a["ɵvid"](0,[a["ɵqud"](671088640,1,{viewportComponent:0}),(t()(),a["ɵeld"](1,0,null,null,7,"tree-viewport",[],null,null,null,it,at)),a["ɵprd"](512,null,tt.a,tt.a,[et.a]),a["ɵdid"](3,4440064,[[1,4],["viewport",4]],0,nt.a,[a.ElementRef,a.NgZone,tt.a],null,null),(t()(),a["ɵeld"](4,0,null,0,4,"div",[["class","angular-tree-component"]],[[2,"node-dragging",null],[2,"angular-tree-component-rtl",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](6,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](8,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,6,0,n.treeModel.roots),t(e,8,0,n.treeModel.isEmptyTree())}),(function(t,e){var n=e.component;t(e,4,0,n.treeDraggedElement.isDragging(),n.treeModel.options.rtl)}))}},LQDL:function(t,e,n){var a,r,i=n("2oRo"),s=n("NC/Y"),o=i.process,u=o&&o.versions,d=u&&u.v8;d?r=(a=d.split("."))[0]+a[1]:s&&(!(a=s.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=s.match(/Chrome\/(\d+)/))&&(r=a[1]),t.exports=r&&+r},LRne:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("z+Ro"),r=n("yCtX"),i=n("jZKg");function s(...t){let e=t[t.length-1];return Object(a.a)(e)?(t.pop(),Object(i.a)(t,e)):Object(r.a)(t)}},LXxW:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}},LceX:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return i})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return o})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return d})),n.d(e,"h",(function(){return l}));var a=n("sne2");n("eTJe"),n("n/D3"),n("V3my"),n("ZEkX");class r{}const i={breadcrumbs:"Users"},s={breadcrumbs:a.a.CREATE},o={breadcrumbs:a.a.EDIT},u={breadcrumbs:"Roles"},d={breadcrumbs:a.a.CREATE},l={breadcrumbs:a.a.EDIT};class c{}},LcsW:function(t,e,n){var a=n("kekF")(Object.getPrototypeOf,Object);t.exports=a},Lhse:function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}n.d(e,"a",(function(){return r}));const r=a()},Loxo:function(t,e,n){!function(t){"use strict";t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("wd/R"))},LqlI:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return l})),n.d(e,"e",(function(){return h})),n.d(e,"f",(function(){return u}));var a=n("8Y7J"),r=n("hpHm"),i=n("z/SZ"),s=n("2uy1");class o{constructor(){this.hide=Function,this.setClass=Function}}class u{}const d={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,class:"",animated:!0,initialState:{}};class l{constructor(t,e,n){this._element=e,this._renderer=n,this.isShown=!1,this.isModalHiding=!1,this.clickStartedInContent=!1,this.config=Object.assign({},t)}ngOnInit(){this.isAnimated&&this._renderer.addClass(this._element.nativeElement,"fade"),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(()=>{this.isShown=!0,this._renderer.addClass(this._element.nativeElement,Object(r.d)()?"in":"show")},this.isAnimated?150:0),document&&document.body&&(1===this.bsModalService.getModalsCount()&&(this.bsModalService.checkScrollbar(),this.bsModalService.setScrollbar()),this._renderer.addClass(document.body,"modal-open")),this._element.nativeElement&&this._element.nativeElement.focus()}onClickStarted(t){this.clickStartedInContent=t.target!==this._element.nativeElement}onClickStop(t){this.config.ignoreBackdropClick||"static"===this.config.backdrop||t.target!==this._element.nativeElement||this.clickStartedInContent?this.clickStartedInContent=!1:(this.bsModalService.setDismissReason("backdrop-click"),this.hide())}onEsc(t){this.isShown&&(27!==t.keyCode&&"Escape"!==t.key||t.preventDefault(),this.config.keyboard&&this.level===this.bsModalService.getModalsCount()&&(this.bsModalService.setDismissReason("esc"),this.hide()))}ngOnDestroy(){this.isShown&&this.hide()}hide(){!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,Object(r.d)()?"in":"show"),setTimeout(()=>{this.isShown=!1,document&&document.body&&1===this.bsModalService.getModalsCount()&&this._renderer.removeClass(document.body,"modal-open"),this.bsModalService.hide(this.level),this.isModalHiding=!1},this.isAnimated?300:0))}}class c{constructor(t,e){this._isShown=!1,this.element=t,this.renderer=e}get isAnimated(){return this._isAnimated}set isAnimated(t){this._isAnimated=t}get isShown(){return this._isShown}set isShown(t){this._isShown=t,t?this.renderer.addClass(this.element.nativeElement,"in"):this.renderer.removeClass(this.element.nativeElement,"in"),Object(r.d)()||(t?this.renderer.addClass(this.element.nativeElement,"show"):this.renderer.removeClass(this.element.nativeElement,"show"))}ngOnInit(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,"fade"),r.b.reflow(this.element.nativeElement)),this.isShown=!0}}class f{constructor(t,e){this.clf=e,this.config=d,this.onShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.modalsCount=0,this.lastDismissReason="",this.loaders=[],this._backdropLoader=this.clf.createLoader(null,null,null),this._renderer=t.createRenderer(null,null)}show(t,e){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},d,e),this._showBackdrop(),this.lastDismissReason=null,this._showModal(t)}hide(t){1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=this.modalsCount>=1?this.modalsCount-1:0,setTimeout(()=>{this._hideModal(t),this.removeLoaders(t)},this.config.animated?150:0)}_showBackdrop(){const t=this.config.backdrop||"static"===this.config.backdrop,e=!this.backdropRef||!this.backdropRef.instance.isShown;1===this.modalsCount&&(this.removeBackdrop(),t&&e&&(this._backdropLoader.attach(c).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))}_hideBackdrop(){this.backdropRef&&(this.backdropRef.instance.isShown=!1,setTimeout(()=>this.removeBackdrop(),this.config.animated?150:0))}_showModal(t){const e=this.loaders[this.loaders.length-1],n=new o,a=e.provide({provide:u,useValue:this.config}).provide({provide:o,useValue:n}).attach(l).to("body").show({content:t,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return a.instance.level=this.getModalsCount(),n.hide=()=>{setTimeout(()=>a.instance.hide(),this.config.animated?300:0)},n.content=e.getInnerComponent()||null,n.setClass=t=>{a.instance.config.class=t},n}_hideModal(t){const e=this.loaders[t-1];e&&e.hide()}getModalsCount(){return this.modalsCount}setDismissReason(t){this.lastDismissReason=t}removeBackdrop(){this._backdropLoader.hide(),this.backdropRef=null}checkScrollbar(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()}setScrollbar(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=`${this.originalBodyPadding+this.scrollbarWidth}px`))}resetScrollbar(){document.body.style.paddingRight=`${this.originalBodyPadding}px`}getScrollbarWidth(){const t=this._renderer.createElement("div");this._renderer.addClass(t,"modal-scrollbar-measure"),this._renderer.appendChild(document.body,t);const e=t.offsetWidth-t.clientWidth;return this._renderer.removeChild(document.body,t),e}_createLoaders(){const t=this.clf.createLoader(null,null,null);this.copyEvent(t.onBeforeShow,this.onShow),this.copyEvent(t.onShown,this.onShown),this.copyEvent(t.onBeforeHide,this.onHide),this.copyEvent(t.onHidden,this.onHidden),this.loaders.push(t)}removeLoaders(t){this.loaders.splice(t-1,1),this.loaders.forEach((t,e)=>{t.instance.level=e+1})}copyEvent(t,e){t.subscribe(()=>{e.emit(this.lastDismissReason)})}}class h{static forRoot(){return{ngModule:h,providers:[f,i.a,s.a]}}static forChild(){return{ngModule:h,providers:[f,i.a,s.a]}}}},LsHQ:function(t,e,n){var a=n("EA7m"),r=n("mv/X");t.exports=function(t){return a((function(e,n){var a=-1,i=n.length,s=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(s=t.length>3&&"function"==typeof s?(i--,s):void 0,o&&r(n[0],n[1],o)&&(s=i<3?void 0:s,i=1),e=Object(e);++a<i;){var u=n[a];u&&t(e,u,a,s)}return e}))}},LvDl:function(t,e,n){(function(t){var a;(function(){var r="Expected a function",i="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],o="[object Arguments]",u="[object Array]",d="[object Boolean]",l="[object Date]",c="[object Error]",f="[object Function]",h="[object GeneratorFunction]",g="[object Map]",p="[object Number]",b="[object Object]",m="[object RegExp]",y="[object Set]",v="[object String]",x="[object Symbol]",_="[object WeakMap]",T="[object ArrayBuffer]",O="[object DataView]",w="[object Float32Array]",S="[object Float64Array]",I="[object Int8Array]",N="[object Int16Array]",C="[object Int32Array]",R="[object Uint8Array]",A="[object Uint16Array]",k="[object Uint32Array]",E=/\b__p \+= '';/g,L=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,M=/[&<>"']/g,q=RegExp(P.source),j=RegExp(M.source),F=/<%-([\s\S]+?)%>/g,G=/<%([\s\S]+?)%>/g,V=/<%=([\s\S]+?)%>/g,z=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,B=/^\w*$/,Y=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,H=/[\\^$.*+?()[\]{}|]/g,U=RegExp(H.source),W=/^\s+|\s+$/g,K=/^\s+/,$=/\s+$/,Z=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,J=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,X=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,at=/^[-+]0x[0-9a-f]+$/i,rt=/^0b[01]+$/i,it=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,ot=/^(?:0|[1-9]\d*)$/,ut=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,dt=/($^)/,lt=/['\n\r\u2028\u2029\\]/g,ct="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ht="["+ft+"]",gt="["+ct+"]",pt="\\d+",bt="[a-z\\xdf-\\xf6\\xf8-\\xff]",mt="[^\\ud800-\\udfff"+ft+pt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",yt="\\ud83c[\\udffb-\\udfff]",vt="[^\\ud800-\\udfff]",xt="(?:\\ud83c[\\udde6-\\uddff]){2}",_t="[\\ud800-\\udbff][\\udc00-\\udfff]",Tt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ot="(?:"+bt+"|"+mt+")",wt="(?:"+Tt+"|"+mt+")",St="(?:"+gt+"|"+yt+")?",It="[\\ufe0e\\ufe0f]?"+St+"(?:\\u200d(?:"+[vt,xt,_t].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*",Nt="(?:"+["[\\u2700-\\u27bf]",xt,_t].join("|")+")"+It,Ct="(?:"+[vt+gt+"?",gt,xt,_t,"[\\ud800-\\udfff]"].join("|")+")",Rt=RegExp("['’]","g"),At=RegExp(gt,"g"),kt=RegExp(yt+"(?="+yt+")|"+Ct+It,"g"),Et=RegExp([Tt+"?"+bt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ht,Tt,"$"].join("|")+")",wt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ht,Tt+Ot,"$"].join("|")+")",Tt+"?"+Ot+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",pt,Nt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff"+ct+"\\ufe0e\\ufe0f]"),Dt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Mt=-1,qt={};qt[w]=qt[S]=qt[I]=qt[N]=qt[C]=qt[R]=qt["[object Uint8ClampedArray]"]=qt[A]=qt[k]=!0,qt[o]=qt[u]=qt[T]=qt[d]=qt[O]=qt[l]=qt[c]=qt[f]=qt[g]=qt[p]=qt[b]=qt[m]=qt[y]=qt[v]=qt[_]=!1;var jt={};jt[o]=jt[u]=jt[T]=jt[O]=jt[d]=jt[l]=jt[w]=jt[S]=jt[I]=jt[N]=jt[C]=jt[g]=jt[p]=jt[b]=jt[m]=jt[y]=jt[v]=jt[x]=jt[R]=jt["[object Uint8ClampedArray]"]=jt[A]=jt[k]=!0,jt[c]=jt[f]=jt[_]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Gt=parseFloat,Vt=parseInt,zt="object"==typeof global&&global&&global.Object===Object&&global,Bt="object"==typeof self&&self&&self.Object===Object&&self,Yt=zt||Bt||Function("return this")(),Ht=e&&!e.nodeType&&e,Ut=Ht&&"object"==typeof t&&t&&!t.nodeType&&t,Wt=Ut&&Ut.exports===Ht,Kt=Wt&&zt.process,$t=function(){try{return Ut&&Ut.require&&Ut.require("util").types||Kt&&Kt.binding&&Kt.binding("util")}catch(t){}}(),Zt=$t&&$t.isArrayBuffer,Jt=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,te=$t&&$t.isSet,ee=$t&&$t.isTypedArray;function ne(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ae(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var s=t[r];e(a,s,n(s),t)}return a}function re(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function ie(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function se(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}function oe(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}function ue(t,e){return!(null==t||!t.length)&&ye(t,e,0)>-1}function de(t,e,n){for(var a=-1,r=null==t?0:t.length;++a<r;)if(n(e,t[a]))return!0;return!1}function le(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}function ce(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function fe(t,e,n,a){var r=-1,i=null==t?0:t.length;for(a&&i&&(n=t[++r]);++r<i;)n=e(n,t[r],r,t);return n}function he(t,e,n,a){var r=null==t?0:t.length;for(a&&r&&(n=t[--r]);r--;)n=e(n,t[r],r,t);return n}function ge(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}var pe=Te("length");function be(t,e,n){var a;return n(t,(function(t,n,r){if(e(t,n,r))return a=n,!1})),a}function me(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}function ye(t,e,n){return e==e?function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}(t,e,n):me(t,xe,n)}function ve(t,e,n,a){for(var r=n-1,i=t.length;++r<i;)if(a(t[r],e))return r;return-1}function xe(t){return t!=t}function _e(t,e){var n=null==t?0:t.length;return n?Se(t,e)/n:NaN}function Te(t){return function(e){return null==e?void 0:e[t]}}function Oe(t){return function(e){return null==t?void 0:t[e]}}function we(t,e,n,a,r){return r(t,(function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)})),n}function Se(t,e){for(var n,a=-1,r=t.length;++a<r;){var i=e(t[a]);void 0!==i&&(n=void 0===n?i:n+i)}return n}function Ie(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function Ne(t){return function(e){return t(e)}}function Ce(t,e){return le(e,(function(e){return t[e]}))}function Re(t,e){return t.has(e)}function Ae(t,e){for(var n=-1,a=t.length;++n<a&&ye(e,t[n],0)>-1;);return n}function ke(t,e){for(var n=t.length;n--&&ye(e,t[n],0)>-1;);return n}function Ee(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}var Le=Oe({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),De=Oe({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function Pe(t){return"\\"+Ft[t]}function Me(t){return Lt.test(t)}function qe(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}function je(t,e){return function(n){return t(e(n))}}function Fe(t,e){for(var n=-1,a=t.length,r=0,s=[];++n<a;){var o=t[n];o!==e&&o!==i||(t[n]=i,s[r++]=n)}return s}function Ge(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Ve(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function ze(t){return Me(t)?function(t){for(var e=kt.lastIndex=0;kt.test(t);)++e;return e}(t):pe(t)}function Be(t){return Me(t)?function(t){return t.match(kt)||[]}(t):function(t){return t.split("")}(t)}var Ye=Oe({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),He=function t(e){var n,a=(e=null==e?Yt:He.defaults(Yt.Object(),e,He.pick(Yt,Pt))).Array,ct=e.Date,ft=e.Error,ht=e.Function,gt=e.Math,pt=e.Object,bt=e.RegExp,mt=e.String,yt=e.TypeError,vt=a.prototype,xt=pt.prototype,_t=e["__core-js_shared__"],Tt=ht.prototype.toString,Ot=xt.hasOwnProperty,wt=0,St=(n=/[^.]+$/.exec(_t&&_t.keys&&_t.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",It=xt.toString,Nt=Tt.call(pt),Ct=Yt._,kt=bt("^"+Tt.call(Ot).replace(H,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Lt=Wt?e.Buffer:void 0,Ft=e.Symbol,zt=e.Uint8Array,Bt=Lt?Lt.allocUnsafe:void 0,Ht=je(pt.getPrototypeOf,pt),Ut=pt.create,Kt=xt.propertyIsEnumerable,$t=vt.splice,pe=Ft?Ft.isConcatSpreadable:void 0,Oe=Ft?Ft.iterator:void 0,Ue=Ft?Ft.toStringTag:void 0,We=function(){try{var t=Jr(pt,"defineProperty");return t({},"",{}),t}catch(e){}}(),Ke=e.clearTimeout!==Yt.clearTimeout&&e.clearTimeout,$e=ct&&ct.now!==Yt.Date.now&&ct.now,Ze=e.setTimeout!==Yt.setTimeout&&e.setTimeout,Je=gt.ceil,Qe=gt.floor,Xe=pt.getOwnPropertySymbols,tn=Lt?Lt.isBuffer:void 0,en=e.isFinite,nn=vt.join,an=je(pt.keys,pt),rn=gt.max,sn=gt.min,on=ct.now,un=e.parseInt,dn=gt.random,ln=vt.reverse,cn=Jr(e,"DataView"),fn=Jr(e,"Map"),hn=Jr(e,"Promise"),gn=Jr(e,"Set"),pn=Jr(e,"WeakMap"),bn=Jr(pt,"create"),mn=pn&&new pn,yn={},vn=Ii(cn),xn=Ii(fn),_n=Ii(hn),Tn=Ii(gn),On=Ii(pn),wn=Ft?Ft.prototype:void 0,Sn=wn?wn.valueOf:void 0,In=wn?wn.toString:void 0;function Nn(t){if(Bs(t)&&!Es(t)&&!(t instanceof kn)){if(t instanceof An)return t;if(Ot.call(t,"__wrapped__"))return Ni(t)}return new An(t)}var Cn=function(){function t(){}return function(e){if(!zs(e))return{};if(Ut)return Ut(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Rn(){}function An(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function kn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function En(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Dn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Pn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Dn;++e<n;)this.add(t[e])}function Mn(t){var e=this.__data__=new Ln(t);this.size=e.size}function qn(t,e){var n=Es(t),a=!n&&ks(t),r=!n&&!a&&Ms(t),i=!n&&!a&&!r&&Js(t),s=n||a||r||i,o=s?Ie(t.length,mt):[],u=o.length;for(var d in t)!e&&!Ot.call(t,d)||s&&("length"==d||r&&("offset"==d||"parent"==d)||i&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||ri(d,u))||o.push(d);return o}function jn(t){var e=t.length;return e?t[Da(0,e-1)]:void 0}function Fn(t,e){return _i(pr(t),Kn(e,0,t.length))}function Gn(t){return _i(pr(t))}function Vn(t,e,n){(void 0===n||Cs(t[e],n))&&(void 0!==n||e in t)||Un(t,e,n)}function zn(t,e,n){var a=t[e];Ot.call(t,e)&&Cs(a,n)&&(void 0!==n||e in t)||Un(t,e,n)}function Bn(t,e){for(var n=t.length;n--;)if(Cs(t[n][0],e))return n;return-1}function Yn(t,e,n,a){return Xn(t,(function(t,r,i){e(a,t,n(t),i)})),a}function Hn(t,e){return t&&br(e,xo(e),t)}function Un(t,e,n){"__proto__"==e&&We?We(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Wn(t,e){for(var n=-1,r=e.length,i=a(r),s=null==t;++n<r;)i[n]=s?void 0:po(t,e[n]);return i}function Kn(t,e,n){return t==t&&(void 0!==n&&(t=t<=n?t:n),void 0!==e&&(t=t>=e?t:e)),t}function $n(t,e,n,a,r,i){var s,u=1&e,c=2&e,_=4&e;if(n&&(s=r?n(t,a,r,i):n(t)),void 0!==s)return s;if(!zs(t))return t;var E=Es(t);if(E){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&Ot.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!u)return pr(t,s)}else{var L=ti(t),D=L==f||L==h;if(Ms(t))return dr(t,u);if(L==b||L==o||D&&!r){if(s=c||D?{}:ni(t),!u)return c?function(t,e){return br(t,Xr(t),e)}(t,function(t,e){return t&&br(e,_o(e),t)}(s,t)):function(t,e){return br(t,Qr(t),e)}(t,Hn(s,t))}else{if(!jt[L])return r?t:{};s=function(t,e,n){var a=t.constructor;switch(e){case T:return lr(t);case d:case l:return new a(+t);case O:return function(t,e){var n=e?lr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case w:case S:case I:case N:case C:case R:case"[object Uint8ClampedArray]":case A:case k:return cr(t,n);case g:return new a;case p:case v:return new a(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new a;case x:return Sn?pt(Sn.call(t)):{}}}(t,L,u)}}i||(i=new Mn);var P=i.get(t);if(P)return P;i.set(t,s),Ks(t)?t.forEach((function(a){s.add($n(a,e,n,a,t,i))})):Ys(t)&&t.forEach((function(a,r){s.set(r,$n(a,e,n,r,t,i))}));var M=E?void 0:(_?c?Yr:Br:c?_o:xo)(t);return re(M||t,(function(a,r){M&&(a=t[r=a]),zn(s,r,$n(a,e,n,r,t,i))})),s}function Zn(t,e,n){var a=n.length;if(null==t)return!a;for(t=pt(t);a--;){var r=n[a],i=t[r];if(void 0===i&&!(r in t)||!(0,e[r])(i))return!1}return!0}function Jn(t,e,n){if("function"!=typeof t)throw new yt(r);return mi((function(){t.apply(void 0,n)}),e)}function Qn(t,e,n,a){var r=-1,i=ue,s=!0,o=t.length,u=[],d=e.length;if(!o)return u;n&&(e=le(e,Ne(n))),a?(i=de,s=!1):e.length>=200&&(i=Re,s=!1,e=new Pn(e));t:for(;++r<o;){var l=t[r],c=null==n?l:n(l);if(l=a||0!==l?l:0,s&&c==c){for(var f=d;f--;)if(e[f]===c)continue t;u.push(l)}else i(e,c,a)||u.push(l)}return u}Nn.templateSettings={escape:F,evaluate:G,interpolate:V,variable:"",imports:{_:Nn}},(Nn.prototype=Rn.prototype).constructor=Nn,(An.prototype=Cn(Rn.prototype)).constructor=An,(kn.prototype=Cn(Rn.prototype)).constructor=kn,En.prototype.clear=function(){this.__data__=bn?bn(null):{},this.size=0},En.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},En.prototype.get=function(t){var e=this.__data__;if(bn){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return Ot.call(e,t)?e[t]:void 0},En.prototype.has=function(t){var e=this.__data__;return bn?void 0!==e[t]:Ot.call(e,t)},En.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=bn&&void 0===e?"__lodash_hash_undefined__":e,this},Ln.prototype.clear=function(){this.__data__=[],this.size=0},Ln.prototype.delete=function(t){var e=this.__data__,n=Bn(e,t);return!(n<0||(n==e.length-1?e.pop():$t.call(e,n,1),--this.size,0))},Ln.prototype.get=function(t){var e=this.__data__,n=Bn(e,t);return n<0?void 0:e[n][1]},Ln.prototype.has=function(t){return Bn(this.__data__,t)>-1},Ln.prototype.set=function(t,e){var n=this.__data__,a=Bn(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new En,map:new(fn||Ln),string:new En}},Dn.prototype.delete=function(t){var e=$r(this,t).delete(t);return this.size-=e?1:0,e},Dn.prototype.get=function(t){return $r(this,t).get(t)},Dn.prototype.has=function(t){return $r(this,t).has(t)},Dn.prototype.set=function(t,e){var n=$r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},Pn.prototype.add=Pn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.clear=function(){this.__data__=new Ln,this.size=0},Mn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mn.prototype.get=function(t){return this.__data__.get(t)},Mn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Ln){var a=n.__data__;if(!fn||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new Dn(a)}return n.set(t,e),this.size=n.size,this};var Xn=vr(oa),ta=vr(ua,!0);function ea(t,e){var n=!0;return Xn(t,(function(t,a,r){return n=!!e(t,a,r)})),n}function na(t,e,n){for(var a=-1,r=t.length;++a<r;){var i=t[a],s=e(i);if(null!=s&&(void 0===o?s==s&&!Zs(s):n(s,o)))var o=s,u=i}return u}function aa(t,e){var n=[];return Xn(t,(function(t,a,r){e(t,a,r)&&n.push(t)})),n}function ra(t,e,n,a,r){var i=-1,s=t.length;for(n||(n=ai),r||(r=[]);++i<s;){var o=t[i];e>0&&n(o)?e>1?ra(o,e-1,n,a,r):ce(r,o):a||(r[r.length]=o)}return r}var ia=xr(),sa=xr(!0);function oa(t,e){return t&&ia(t,e,xo)}function ua(t,e){return t&&sa(t,e,xo)}function da(t,e){return oe(e,(function(e){return Fs(t[e])}))}function la(t,e){for(var n=0,a=(e=ir(e,t)).length;null!=t&&n<a;)t=t[Si(e[n++])];return n&&n==a?t:void 0}function ca(t,e,n){var a=e(t);return Es(t)?a:ce(a,n(t))}function fa(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Ue&&Ue in pt(t)?function(t){var e=Ot.call(t,Ue),n=t[Ue];try{t[Ue]=void 0;var a=!0}catch(i){}var r=It.call(t);return a&&(e?t[Ue]=n:delete t[Ue]),r}(t):function(t){return It.call(t)}(t)}function ha(t,e){return t>e}function ga(t,e){return null!=t&&Ot.call(t,e)}function pa(t,e){return null!=t&&e in pt(t)}function ba(t,e,n){for(var r=n?de:ue,i=t[0].length,s=t.length,o=s,u=a(s),d=1/0,l=[];o--;){var c=t[o];o&&e&&(c=le(c,Ne(e))),d=sn(c.length,d),u[o]=!n&&(e||i>=120&&c.length>=120)?new Pn(o&&c):void 0}c=t[0];var f=-1,h=u[0];t:for(;++f<i&&l.length<d;){var g=c[f],p=e?e(g):g;if(g=n||0!==g?g:0,!(h?Re(h,p):r(l,p,n))){for(o=s;--o;){var b=u[o];if(!(b?Re(b,p):r(t[o],p,n)))continue t}h&&h.push(p),l.push(g)}}return l}function ma(t,e,n){var a=null==(t=hi(t,e=ir(e,t)))?t:t[Si(ji(e))];return null==a?void 0:ne(a,t,n)}function ya(t){return Bs(t)&&fa(t)==o}function va(t,e,n,a,r){return t===e||(null==t||null==e||!Bs(t)&&!Bs(e)?t!=t&&e!=e:function(t,e,n,a,r,i){var s=Es(t),f=Es(e),h=s?u:ti(t),_=f?u:ti(e),w=(h=h==o?b:h)==b,S=(_=_==o?b:_)==b,I=h==_;if(I&&Ms(t)){if(!Ms(e))return!1;s=!0,w=!1}if(I&&!w)return i||(i=new Mn),s||Js(t)?Vr(t,e,n,a,r,i):function(t,e,n,a,r,i,s){switch(n){case O:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case T:return!(t.byteLength!=e.byteLength||!i(new zt(t),new zt(e)));case d:case l:case p:return Cs(+t,+e);case c:return t.name==e.name&&t.message==e.message;case m:case v:return t==e+"";case g:var o=qe;case y:if(o||(o=Ge),t.size!=e.size&&!(1&a))return!1;var u=s.get(t);if(u)return u==e;a|=2,s.set(t,e);var f=Vr(o(t),o(e),a,r,i,s);return s.delete(t),f;case x:if(Sn)return Sn.call(t)==Sn.call(e)}return!1}(t,e,h,n,a,r,i);if(!(1&n)){var N=w&&Ot.call(t,"__wrapped__"),C=S&&Ot.call(e,"__wrapped__");if(N||C){var R=N?t.value():t,A=C?e.value():e;return i||(i=new Mn),r(R,A,n,a,i)}}return!!I&&(i||(i=new Mn),function(t,e,n,a,r,i){var s=1&n,o=Br(t),u=o.length;if(u!=Br(e).length&&!s)return!1;for(var d=u;d--;){var l=o[d];if(!(s?l in e:Ot.call(e,l)))return!1}var c=i.get(t);if(c&&i.get(e))return c==e;var f=!0;i.set(t,e),i.set(e,t);for(var h=s;++d<u;){var g=t[l=o[d]],p=e[l];if(a)var b=s?a(p,g,l,e,t,i):a(g,p,l,t,e,i);if(!(void 0===b?g===p||r(g,p,n,a,i):b)){f=!1;break}h||(h="constructor"==l)}if(f&&!h){var m=t.constructor,y=e.constructor;m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y)&&(f=!1)}return i.delete(t),i.delete(e),f}(t,e,n,a,r,i))}(t,e,n,a,va,r))}function xa(t,e,n,a){var r=n.length,i=r,s=!a;if(null==t)return!i;for(t=pt(t);r--;){var o=n[r];if(s&&o[2]?o[1]!==t[o[0]]:!(o[0]in t))return!1}for(;++r<i;){var u=(o=n[r])[0],d=t[u],l=o[1];if(s&&o[2]){if(void 0===d&&!(u in t))return!1}else{var c=new Mn;if(a)var f=a(d,l,u,t,e,c);if(!(void 0===f?va(l,d,3,a,c):f))return!1}}return!0}function _a(t){return!(!zs(t)||(e=t,St&&St in e))&&(Fs(t)?kt:it).test(Ii(t));var e}function Ta(t){return"function"==typeof t?t:null==t?Uo:"object"==typeof t?Es(t)?Na(t[0],t[1]):Ia(t):eu(t)}function Oa(t){if(!di(t))return an(t);var e=[];for(var n in pt(t))Ot.call(t,n)&&"constructor"!=n&&e.push(n);return e}function wa(t,e){return t<e}function Sa(t,e){var n=-1,r=Ds(t)?a(t.length):[];return Xn(t,(function(t,a,i){r[++n]=e(t,a,i)})),r}function Ia(t){var e=Zr(t);return 1==e.length&&e[0][2]?ci(e[0][0],e[0][1]):function(n){return n===t||xa(n,t,e)}}function Na(t,e){return si(t)&&li(e)?ci(Si(t),e):function(n){var a=po(n,t);return void 0===a&&a===e?bo(n,t):va(e,a,3)}}function Ca(t,e,n,a,r){t!==e&&ia(e,(function(i,s){if(r||(r=new Mn),zs(i))!function(t,e,n,a,r,i,s){var o=pi(t,n),u=pi(e,n),d=s.get(u);if(d)Vn(t,n,d);else{var l=i?i(o,u,n+"",t,e,s):void 0,c=void 0===l;if(c){var f=Es(u),h=!f&&Ms(u),g=!f&&!h&&Js(u);l=u,f||h||g?Es(o)?l=o:Ps(o)?l=pr(o):h?(c=!1,l=dr(u,!0)):g?(c=!1,l=cr(u,!0)):l=[]:Us(u)||ks(u)?(l=o,ks(o)?l=io(o):zs(o)&&!Fs(o)||(l=ni(u))):c=!1}c&&(s.set(u,l),r(l,u,a,i,s),s.delete(u)),Vn(t,n,l)}}(t,e,s,n,Ca,a,r);else{var o=a?a(pi(t,s),i,s+"",t,e,r):void 0;void 0===o&&(o=i),Vn(t,s,o)}}),_o)}function Ra(t,e){var n=t.length;if(n)return ri(e+=e<0?n:0,n)?t[e]:void 0}function Aa(t,e,n){var a=-1;return e=le(e.length?e:[Uo],Ne(Kr())),function(t,e){var a=t.length;for(t.sort((function(t,e){return function(t,e,n){for(var a=-1,r=t.criteria,i=e.criteria,s=r.length,o=n.length;++a<s;){var u=fr(r[a],i[a]);if(u)return a>=o?u:u*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)}));a--;)t[a]=t[a].value;return t}(Sa(t,(function(t,n,r){return{criteria:le(e,(function(e){return e(t)})),index:++a,value:t}})))}function ka(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var s=e[a],o=la(t,s);n(o,s)&&Fa(i,ir(s,t),o)}return i}function Ea(t,e,n,a){var r=a?ve:ye,i=-1,s=e.length,o=t;for(t===e&&(e=pr(e)),n&&(o=le(t,Ne(n)));++i<s;)for(var u=0,d=e[i],l=n?n(d):d;(u=r(o,l,u,a))>-1;)o!==t&&$t.call(o,u,1),$t.call(t,u,1);return t}function La(t,e){for(var n=t?e.length:0,a=n-1;n--;){var r=e[n];if(n==a||r!==i){var i=r;ri(r)?$t.call(t,r,1):Ja(t,r)}}return t}function Da(t,e){return t+Qe(dn()*(e-t+1))}function Pa(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=Qe(e/2))&&(t+=t)}while(e);return n}function Ma(t,e){return yi(fi(t,e,Uo),t+"")}function qa(t){return jn(Ro(t))}function ja(t,e){var n=Ro(t);return _i(n,Kn(e,0,n.length))}function Fa(t,e,n,a){if(!zs(t))return t;for(var r=-1,i=(e=ir(e,t)).length,s=i-1,o=t;null!=o&&++r<i;){var u=Si(e[r]),d=n;if(r!=s){var l=o[u];void 0===(d=a?a(l,u,o):void 0)&&(d=zs(l)?l:ri(e[r+1])?[]:{})}zn(o,u,d),o=o[u]}return t}var Ga=mn?function(t,e){return mn.set(t,e),t}:Uo,Va=We?function(t,e){return We(t,"toString",{configurable:!0,enumerable:!1,value:Bo(e),writable:!0})}:Uo;function za(t){return _i(Ro(t))}function Ba(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=a(i);++r<i;)s[r]=t[r+e];return s}function Ya(t,e){var n;return Xn(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}function Ha(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;a<r;){var i=a+r>>>1,s=t[i];null!==s&&!Zs(s)&&(n?s<=e:s<e)?a=i+1:r=i}return r}return Ua(t,e,Uo,n)}function Ua(t,e,n,a){e=n(e);for(var r=0,i=null==t?0:t.length,s=e!=e,o=null===e,u=Zs(e),d=void 0===e;r<i;){var l=Qe((r+i)/2),c=n(t[l]),f=void 0!==c,h=null===c,g=c==c,p=Zs(c);if(s)var b=a||g;else b=d?g&&(a||f):o?g&&f&&(a||!h):u?g&&f&&!h&&(a||!p):!h&&!p&&(a?c<=e:c<e);b?r=l+1:i=l}return sn(i,4294967294)}function Wa(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var s=t[n],o=e?e(s):s;if(!n||!Cs(o,u)){var u=o;i[r++]=0===s?0:s}}return i}function Ka(t){return"number"==typeof t?t:Zs(t)?NaN:+t}function $a(t){if("string"==typeof t)return t;if(Es(t))return le(t,$a)+"";if(Zs(t))return In?In.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Za(t,e,n){var a=-1,r=ue,i=t.length,s=!0,o=[],u=o;if(n)s=!1,r=de;else if(i>=200){var d=e?null:Pr(t);if(d)return Ge(d);s=!1,r=Re,u=new Pn}else u=e?[]:o;t:for(;++a<i;){var l=t[a],c=e?e(l):l;if(l=n||0!==l?l:0,s&&c==c){for(var f=u.length;f--;)if(u[f]===c)continue t;e&&u.push(c),o.push(l)}else r(u,c,n)||(u!==o&&u.push(c),o.push(l))}return o}function Ja(t,e){return null==(t=hi(t,e=ir(e,t)))||delete t[Si(ji(e))]}function Qa(t,e,n,a){return Fa(t,e,n(la(t,e)),a)}function Xa(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?Ba(t,a?0:i,a?i+1:r):Ba(t,a?i+1:0,a?r:i)}function tr(t,e){var n=t;return n instanceof kn&&(n=n.value()),fe(e,(function(t,e){return e.func.apply(e.thisArg,ce([t],e.args))}),n)}function er(t,e,n){var r=t.length;if(r<2)return r?Za(t[0]):[];for(var i=-1,s=a(r);++i<r;)for(var o=t[i],u=-1;++u<r;)u!=i&&(s[i]=Qn(s[i]||o,t[u],e,n));return Za(ra(s,1),e,n)}function nr(t,e,n){for(var a=-1,r=t.length,i=e.length,s={};++a<r;)n(s,t[a],a<i?e[a]:void 0);return s}function ar(t){return Ps(t)?t:[]}function rr(t){return"function"==typeof t?t:Uo}function ir(t,e){return Es(t)?t:si(t,e)?[t]:wi(so(t))}var sr=Ma;function or(t,e,n){var a=t.length;return n=void 0===n?a:n,!e&&n>=a?t:Ba(t,e,n)}var ur=Ke||function(t){return Yt.clearTimeout(t)};function dr(t,e){if(e)return t.slice();var n=t.length,a=Bt?Bt(n):new t.constructor(n);return t.copy(a),a}function lr(t){var e=new t.constructor(t.byteLength);return new zt(e).set(new zt(t)),e}function cr(t,e){var n=e?lr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function fr(t,e){if(t!==e){var n=void 0!==t,a=null===t,r=t==t,i=Zs(t),s=void 0!==e,o=null===e,u=e==e,d=Zs(e);if(!o&&!d&&!i&&t>e||i&&s&&u&&!o&&!d||a&&s&&u||!n&&u||!r)return 1;if(!a&&!i&&!d&&t<e||d&&n&&r&&!a&&!i||o&&n&&r||!s&&r||!u)return-1}return 0}function hr(t,e,n,r){for(var i=-1,s=t.length,o=n.length,u=-1,d=e.length,l=rn(s-o,0),c=a(d+l),f=!r;++u<d;)c[u]=e[u];for(;++i<o;)(f||i<s)&&(c[n[i]]=t[i]);for(;l--;)c[u++]=t[i++];return c}function gr(t,e,n,r){for(var i=-1,s=t.length,o=-1,u=n.length,d=-1,l=e.length,c=rn(s-u,0),f=a(c+l),h=!r;++i<c;)f[i]=t[i];for(var g=i;++d<l;)f[g+d]=e[d];for(;++o<u;)(h||i<s)&&(f[g+n[o]]=t[i++]);return f}function pr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function br(t,e,n,a){var r=!n;n||(n={});for(var i=-1,s=e.length;++i<s;){var o=e[i],u=a?a(n[o],t[o],o,n,t):void 0;void 0===u&&(u=t[o]),r?Un(n,o,u):zn(n,o,u)}return n}function mr(t,e){return function(n,a){var r=Es(n)?ae:Yn,i=e?e():{};return r(n,t,Kr(a,2),i)}}function yr(t){return Ma((function(e,n){var a=-1,r=n.length,i=r>1?n[r-1]:void 0,s=r>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(r--,i):void 0,s&&ii(n[0],n[1],s)&&(i=r<3?void 0:i,r=1),e=pt(e);++a<r;){var o=n[a];o&&t(e,o,a,i)}return e}))}function vr(t,e){return function(n,a){if(null==n)return n;if(!Ds(n))return t(n,a);for(var r=n.length,i=e?r:-1,s=pt(n);(e?i--:++i<r)&&!1!==a(s[i],i,s););return n}}function xr(t){return function(e,n,a){for(var r=-1,i=pt(e),s=a(e),o=s.length;o--;){var u=s[t?o:++r];if(!1===n(i[u],u,i))break}return e}}function _r(t){return function(e){var n=Me(e=so(e))?Be(e):void 0,a=n?n[0]:e.charAt(0),r=n?or(n,1).join(""):e.slice(1);return a[t]()+r}}function Tr(t){return function(e){return fe(Go(Eo(e).replace(Rt,"")),t,"")}}function Or(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=Cn(t.prototype),a=t.apply(n,e);return zs(a)?a:n}}function wr(t){return function(e,n,a){var r=pt(e);if(!Ds(e)){var i=Kr(n,3);e=xo(e),n=function(t){return i(r[t],t,r)}}var s=t(e,n,a);return s>-1?r[i?e[s]:s]:void 0}}function Sr(t){return zr((function(e){var n=e.length,a=n,i=An.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new yt(r);if(i&&!o&&"wrapper"==Ur(s))var o=new An([],!0)}for(a=o?a:n;++a<n;){var u=Ur(s=e[a]),d="wrapper"==u?Hr(s):void 0;o=d&&oi(d[0])&&424==d[1]&&!d[4].length&&1==d[9]?o[Ur(d[0])].apply(o,d[3]):1==s.length&&oi(s)?o[u]():o.thru(s)}return function(){var t=arguments,a=t[0];if(o&&1==t.length&&Es(a))return o.plant(a).value();for(var r=0,i=n?e[r].apply(this,t):a;++r<n;)i=e[r].call(this,i);return i}}))}function Ir(t,e,n,r,i,s,o,u,d,l){var c=128&e,f=1&e,h=2&e,g=24&e,p=512&e,b=h?void 0:Or(t);return function m(){for(var y=arguments.length,v=a(y),x=y;x--;)v[x]=arguments[x];if(g)var _=Wr(m),T=Ee(v,_);if(r&&(v=hr(v,r,i,g)),s&&(v=gr(v,s,o,g)),y-=T,g&&y<l){var O=Fe(v,_);return Lr(t,e,Ir,m.placeholder,n,v,O,u,d,l-y)}var w=f?n:this,S=h?w[t]:t;return y=v.length,u?v=gi(v,u):p&&y>1&&v.reverse(),c&&d<y&&(v.length=d),this&&this!==Yt&&this instanceof m&&(S=b||Or(S)),S.apply(w,v)}}function Nr(t,e){return function(n,a){return function(t,e,n,a){return oa(t,(function(t,r,i){e(a,n(t),r,i)})),a}(n,t,e(a),{})}}function Cr(t,e){return function(n,a){var r;if(void 0===n&&void 0===a)return e;if(void 0!==n&&(r=n),void 0!==a){if(void 0===r)return a;"string"==typeof n||"string"==typeof a?(n=$a(n),a=$a(a)):(n=Ka(n),a=Ka(a)),r=t(n,a)}return r}}function Rr(t){return zr((function(e){return e=le(e,Ne(Kr())),Ma((function(n){var a=this;return t(e,(function(t){return ne(t,a,n)}))}))}))}function Ar(t,e){var n=(e=void 0===e?" ":$a(e)).length;if(n<2)return n?Pa(e,t):e;var a=Pa(e,Je(t/ze(e)));return Me(e)?or(Be(a),0,t).join(""):a.slice(0,t)}function kr(t){return function(e,n,r){return r&&"number"!=typeof r&&ii(e,n,r)&&(n=r=void 0),e=eo(e),void 0===n?(n=e,e=0):n=eo(n),function(t,e,n,r){for(var i=-1,s=rn(Je((e-t)/(n||1)),0),o=a(s);s--;)o[r?s:++i]=t,t+=n;return o}(e,n,r=void 0===r?e<n?1:-1:eo(r),t)}}function Er(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=ro(e),n=ro(n)),t(e,n)}}function Lr(t,e,n,a,r,i,s,o,u,d){var l=8&e;e|=l?32:64,4&(e&=~(l?64:32))||(e&=-4);var c=[t,e,r,l?i:void 0,l?s:void 0,l?void 0:i,l?void 0:s,o,u,d],f=n.apply(void 0,c);return oi(t)&&bi(f,c),f.placeholder=a,vi(f,t,e)}function Dr(t){var e=gt[t];return function(t,n){if(t=ro(t),(n=null==n?0:sn(no(n),292))&&en(t)){var a=(so(t)+"e").split("e");return+((a=(so(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var Pr=gn&&1/Ge(new gn([,-0]))[1]==1/0?function(t){return new gn(t)}:Jo;function Mr(t){return function(e){var n=ti(e);return n==g?qe(e):n==y?Ve(e):function(t,e){return le(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function qr(t,e,n,s,o,u,d,l){var c=2&e;if(!c&&"function"!=typeof t)throw new yt(r);var f=s?s.length:0;if(f||(e&=-97,s=o=void 0),d=void 0===d?d:rn(no(d),0),l=void 0===l?l:no(l),f-=o?o.length:0,64&e){var h=s,g=o;s=o=void 0}var p=c?void 0:Hr(t),b=[t,e,n,s,o,h,g,u,d,l];if(p&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<131||128==a&&8==n||128==a&&256==n&&t[7].length<=e[8]||384==a&&e[7].length<=e[8]&&8==n))return t;1&a&&(t[2]=e[2],r|=1&n?0:4);var s=e[3];if(s){var o=t[3];t[3]=o?hr(o,s,e[4]):s,t[4]=o?Fe(t[3],i):e[4]}(s=e[5])&&(t[5]=(o=t[5])?gr(o,s,e[6]):s,t[6]=o?Fe(t[5],i):e[6]),(s=e[7])&&(t[7]=s),128&a&&(t[8]=null==t[8]?e[8]:sn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(b,p),t=b[0],e=b[1],n=b[2],s=b[3],o=b[4],!(l=b[9]=void 0===b[9]?c?0:t.length:rn(b[9]-f,0))&&24&e&&(e&=-25),e&&1!=e)m=8==e||16==e?function(t,e,n){var r=Or(t);return function i(){for(var s=arguments.length,o=a(s),u=s,d=Wr(i);u--;)o[u]=arguments[u];var l=s<3&&o[0]!==d&&o[s-1]!==d?[]:Fe(o,d);if((s-=l.length)<n)return Lr(t,e,Ir,i.placeholder,void 0,o,l,void 0,void 0,n-s);var c=this&&this!==Yt&&this instanceof i?r:t;return ne(c,this,o)}}(t,e,l):32!=e&&33!=e||o.length?Ir.apply(void 0,b):function(t,e,n,r){var i=1&e,s=Or(t);return function e(){for(var o=-1,u=arguments.length,d=-1,l=r.length,c=a(l+u),f=this&&this!==Yt&&this instanceof e?s:t;++d<l;)c[d]=r[d];for(;u--;)c[d++]=arguments[++o];return ne(f,i?n:this,c)}}(t,e,n,s);else var m=function(t,e,n){var a=1&e,r=Or(t);return function e(){var i=this&&this!==Yt&&this instanceof e?r:t;return i.apply(a?n:this,arguments)}}(t,e,n);return vi((p?Ga:bi)(m,b),t,e)}function jr(t,e,n,a){return void 0===t||Cs(t,xt[n])&&!Ot.call(a,n)?e:t}function Fr(t,e,n,a,r,i){return zs(t)&&zs(e)&&(i.set(e,t),Ca(t,e,void 0,Fr,i),i.delete(e)),t}function Gr(t){return Us(t)?void 0:t}function Vr(t,e,n,a,r,i){var s=1&n,o=t.length,u=e.length;if(o!=u&&!(s&&u>o))return!1;var d=i.get(t);if(d&&i.get(e))return d==e;var l=-1,c=!0,f=2&n?new Pn:void 0;for(i.set(t,e),i.set(e,t);++l<o;){var h=t[l],g=e[l];if(a)var p=s?a(g,h,l,e,t,i):a(h,g,l,t,e,i);if(void 0!==p){if(p)continue;c=!1;break}if(f){if(!ge(e,(function(t,e){if(!Re(f,e)&&(h===t||r(h,t,n,a,i)))return f.push(e)}))){c=!1;break}}else if(h!==g&&!r(h,g,n,a,i)){c=!1;break}}return i.delete(t),i.delete(e),c}function zr(t){return yi(fi(t,void 0,Li),t+"")}function Br(t){return ca(t,xo,Qr)}function Yr(t){return ca(t,_o,Xr)}var Hr=mn?function(t){return mn.get(t)}:Jo;function Ur(t){for(var e=t.name+"",n=yn[e],a=Ot.call(yn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function Wr(t){return(Ot.call(Nn,"placeholder")?Nn:t).placeholder}function Kr(){var t=Nn.iteratee||Wo;return t=t===Wo?Ta:t,arguments.length?t(arguments[0],arguments[1]):t}function $r(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function Zr(t){for(var e=xo(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,li(r)]}return e}function Jr(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return _a(n)?n:void 0}var Qr=Xe?function(t){return null==t?[]:(t=pt(t),oe(Xe(t),(function(e){return Kt.call(t,e)})))}:ru,Xr=Xe?function(t){for(var e=[];t;)ce(e,Qr(t)),t=Ht(t);return e}:ru,ti=fa;function ei(t,e,n){for(var a=-1,r=(e=ir(e,t)).length,i=!1;++a<r;){var s=Si(e[a]);if(!(i=null!=t&&n(t,s)))break;t=t[s]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&Vs(r)&&ri(s,r)&&(Es(t)||ks(t))}function ni(t){return"function"!=typeof t.constructor||di(t)?{}:Cn(Ht(t))}function ai(t){return Es(t)||ks(t)||!!(pe&&t&&t[pe])}function ri(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&ot.test(t))&&t>-1&&t%1==0&&t<e}function ii(t,e,n){if(!zs(n))return!1;var a=typeof e;return!!("number"==a?Ds(n)&&ri(e,n.length):"string"==a&&e in n)&&Cs(n[e],t)}function si(t,e){if(Es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Zs(t))||B.test(t)||!z.test(t)||null!=e&&t in pt(e)}function oi(t){var e=Ur(t),n=Nn[e];if("function"!=typeof n||!(e in kn.prototype))return!1;if(t===n)return!0;var a=Hr(n);return!!a&&t===a[0]}(cn&&ti(new cn(new ArrayBuffer(1)))!=O||fn&&ti(new fn)!=g||hn&&"[object Promise]"!=ti(hn.resolve())||gn&&ti(new gn)!=y||pn&&ti(new pn)!=_)&&(ti=function(t){var e=fa(t),n=e==b?t.constructor:void 0,a=n?Ii(n):"";if(a)switch(a){case vn:return O;case xn:return g;case _n:return"[object Promise]";case Tn:return y;case On:return _}return e});var ui=_t?Fs:iu;function di(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||xt)}function li(t){return t==t&&!zs(t)}function ci(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in pt(n))}}function fi(t,e,n){return e=rn(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=rn(r.length-e,0),o=a(s);++i<s;)o[i]=r[e+i];i=-1;for(var u=a(e+1);++i<e;)u[i]=r[i];return u[e]=n(o),ne(t,this,u)}}function hi(t,e){return e.length<2?t:la(t,Ba(e,0,-1))}function gi(t,e){for(var n=t.length,a=sn(e.length,n),r=pr(t);a--;){var i=e[a];t[a]=ri(i,n)?r[i]:void 0}return t}function pi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var bi=xi(Ga),mi=Ze||function(t,e){return Yt.setTimeout(t,e)},yi=xi(Va);function vi(t,e,n){var a=e+"";return yi(t,function(t,e){var n=e.length;if(!n)return t;var a=n-1;return e[a]=(n>1?"& ":"")+e[a],e=e.join(n>2?", ":" "),t.replace(Z,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return re(s,(function(n){var a="_."+n[0];e&n[1]&&!ue(t,a)&&t.push(a)})),t.sort()}(function(t){var e=t.match(J);return e?e[1].split(Q):[]}(a),n)))}function xi(t){var e=0,n=0;return function(){var a=on(),r=16-(a-n);if(n=a,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function _i(t,e){var n=-1,a=t.length,r=a-1;for(e=void 0===e?a:e;++n<e;){var i=Da(n,r),s=t[i];t[i]=t[n],t[n]=s}return t.length=e,t}var Ti,Oi,wi=(Ti=Ts((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Y,(function(t,n,a,r){e.push(a?r.replace(tt,"$1"):n||t)})),e}),(function(t){return 500===Oi.size&&Oi.clear(),t})),Oi=Ti.cache,Ti);function Si(t){if("string"==typeof t||Zs(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ii(t){if(null!=t){try{return Tt.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function Ni(t){if(t instanceof kn)return t.clone();var e=new An(t.__wrapped__,t.__chain__);return e.__actions__=pr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Ci=Ma((function(t,e){return Ps(t)?Qn(t,ra(e,1,Ps,!0)):[]})),Ri=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),Kr(n,2)):[]})),Ai=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),void 0,n):[]}));function ki(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:no(n);return r<0&&(r=rn(a+r,0)),me(t,Kr(e,3),r)}function Ei(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a-1;return void 0!==n&&(r=no(n),r=n<0?rn(a+r,0):sn(r,a-1)),me(t,Kr(e,3),r,!0)}function Li(t){return null!=t&&t.length?ra(t,1):[]}function Di(t){return t&&t.length?t[0]:void 0}var Pi=Ma((function(t){var e=le(t,ar);return e.length&&e[0]===t[0]?ba(e):[]})),Mi=Ma((function(t){var e=ji(t),n=le(t,ar);return e===ji(n)?e=void 0:n.pop(),n.length&&n[0]===t[0]?ba(n,Kr(e,2)):[]})),qi=Ma((function(t){var e=ji(t),n=le(t,ar);return(e="function"==typeof e?e:void 0)&&n.pop(),n.length&&n[0]===t[0]?ba(n,void 0,e):[]}));function ji(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}var Fi=Ma(Gi);function Gi(t,e){return t&&t.length&&e&&e.length?Ea(t,e):t}var Vi=zr((function(t,e){var n=null==t?0:t.length,a=Wn(t,e);return La(t,le(e,(function(t){return ri(t,n)?+t:t})).sort(fr)),a}));function zi(t){return null==t?t:ln.call(t)}var Bi=Ma((function(t){return Za(ra(t,1,Ps,!0))})),Yi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),Za(ra(t,1,Ps,!0),Kr(e,2))})),Hi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,Za(ra(t,1,Ps,!0),void 0,e)}));function Ui(t){if(!t||!t.length)return[];var e=0;return t=oe(t,(function(t){if(Ps(t))return e=rn(t.length,e),!0})),Ie(e,(function(e){return le(t,Te(e))}))}function Wi(t,e){if(!t||!t.length)return[];var n=Ui(t);return null==e?n:le(n,(function(t){return ne(e,void 0,t)}))}var Ki=Ma((function(t,e){return Ps(t)?Qn(t,e):[]})),$i=Ma((function(t){return er(oe(t,Ps))})),Zi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),er(oe(t,Ps),Kr(e,2))})),Ji=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,er(oe(t,Ps),void 0,e)})),Qi=Ma(Ui),Xi=Ma((function(t){var e=t.length,n=e>1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Wi(t,n)}));function ts(t){var e=Nn(t);return e.__chain__=!0,e}function es(t,e){return e(t)}var ns=zr((function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,r=function(e){return Wn(e,t)};return!(e>1||this.__actions__.length)&&a instanceof kn&&ri(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:es,args:[r],thisArg:void 0}),new An(a,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(r)})),as=mr((function(t,e,n){Ot.call(t,n)?++t[n]:Un(t,n,1)})),rs=wr(ki),is=wr(Ei);function ss(t,e){return(Es(t)?re:Xn)(t,Kr(e,3))}function os(t,e){return(Es(t)?ie:ta)(t,Kr(e,3))}var us=mr((function(t,e,n){Ot.call(t,n)?t[n].push(e):Un(t,n,[e])})),ds=Ma((function(t,e,n){var r=-1,i="function"==typeof e,s=Ds(t)?a(t.length):[];return Xn(t,(function(t){s[++r]=i?ne(e,t,n):ma(t,e,n)})),s})),ls=mr((function(t,e,n){Un(t,n,e)}));function cs(t,e){return(Es(t)?le:Sa)(t,Kr(e,3))}var fs=mr((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]})),hs=Ma((function(t,e){if(null==t)return[];var n=e.length;return n>1&&ii(t,e[0],e[1])?e=[]:n>2&&ii(e[0],e[1],e[2])&&(e=[e[0]]),Aa(t,ra(e,1),[])})),gs=$e||function(){return Yt.Date.now()};function ps(t,e,n){return e=n?void 0:e,qr(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function bs(t,e){var n;if("function"!=typeof e)throw new yt(r);return t=no(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var ms=Ma((function(t,e,n){var a=1;if(n.length){var r=Fe(n,Wr(ms));a|=32}return qr(t,a,e,n,r)})),ys=Ma((function(t,e,n){var a=3;if(n.length){var r=Fe(n,Wr(ys));a|=32}return qr(e,a,t,n,r)}));function vs(t,e,n){var a,i,s,o,u,d,l=0,c=!1,f=!1,h=!0;if("function"!=typeof t)throw new yt(r);function g(e){var n=a,r=i;return a=i=void 0,l=e,o=t.apply(r,n)}function p(t){return l=t,u=mi(m,e),c?g(t):o}function b(t){var n=t-d;return void 0===d||n>=e||n<0||f&&t-l>=s}function m(){var t=gs();if(b(t))return y(t);u=mi(m,function(t){var n=e-(t-d);return f?sn(n,s-(t-l)):n}(t))}function y(t){return u=void 0,h&&a?g(t):(a=i=void 0,o)}function v(){var t=gs(),n=b(t);if(a=arguments,i=this,d=t,n){if(void 0===u)return p(d);if(f)return ur(u),u=mi(m,e),g(d)}return void 0===u&&(u=mi(m,e)),o}return e=ro(e)||0,zs(n)&&(c=!!n.leading,s=(f="maxWait"in n)?rn(ro(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==u&&ur(u),l=0,a=d=i=u=void 0},v.flush=function(){return void 0===u?o:y(gs())},v}var xs=Ma((function(t,e){return Jn(t,1,e)})),_s=Ma((function(t,e,n){return Jn(t,ro(e)||0,n)}));function Ts(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new yt(r);var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(Ts.Cache||Dn),n}function Os(t){if("function"!=typeof t)throw new yt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Dn;var ws=sr((function(t,e){var n=(e=1==e.length&&Es(e[0])?le(e[0],Ne(Kr())):le(ra(e,1),Ne(Kr()))).length;return Ma((function(a){for(var r=-1,i=sn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return ne(t,this,a)}))})),Ss=Ma((function(t,e){return qr(t,32,void 0,e,Fe(e,Wr(Ss)))})),Is=Ma((function(t,e){return qr(t,64,void 0,e,Fe(e,Wr(Is)))})),Ns=zr((function(t,e){return qr(t,256,void 0,void 0,void 0,e)}));function Cs(t,e){return t===e||t!=t&&e!=e}var Rs=Er(ha),As=Er((function(t,e){return t>=e})),ks=ya(function(){return arguments}())?ya:function(t){return Bs(t)&&Ot.call(t,"callee")&&!Kt.call(t,"callee")},Es=a.isArray,Ls=Zt?Ne(Zt):function(t){return Bs(t)&&fa(t)==T};function Ds(t){return null!=t&&Vs(t.length)&&!Fs(t)}function Ps(t){return Bs(t)&&Ds(t)}var Ms=tn||iu,qs=Jt?Ne(Jt):function(t){return Bs(t)&&fa(t)==l};function js(t){if(!Bs(t))return!1;var e=fa(t);return e==c||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Us(t)}function Fs(t){if(!zs(t))return!1;var e=fa(t);return e==f||e==h||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Gs(t){return"number"==typeof t&&t==no(t)}function Vs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function zs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Bs(t){return null!=t&&"object"==typeof t}var Ys=Qt?Ne(Qt):function(t){return Bs(t)&&ti(t)==g};function Hs(t){return"number"==typeof t||Bs(t)&&fa(t)==p}function Us(t){if(!Bs(t)||fa(t)!=b)return!1;var e=Ht(t);if(null===e)return!0;var n=Ot.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Nt}var Ws=Xt?Ne(Xt):function(t){return Bs(t)&&fa(t)==m},Ks=te?Ne(te):function(t){return Bs(t)&&ti(t)==y};function $s(t){return"string"==typeof t||!Es(t)&&Bs(t)&&fa(t)==v}function Zs(t){return"symbol"==typeof t||Bs(t)&&fa(t)==x}var Js=ee?Ne(ee):function(t){return Bs(t)&&Vs(t.length)&&!!qt[fa(t)]},Qs=Er(wa),Xs=Er((function(t,e){return t<=e}));function to(t){if(!t)return[];if(Ds(t))return $s(t)?Be(t):pr(t);if(Oe&&t[Oe])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Oe]());var e=ti(t);return(e==g?qe:e==y?Ge:Ro)(t)}function eo(t){return t?(t=ro(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function no(t){var e=eo(t),n=e%1;return e==e?n?e-n:e:0}function ao(t){return t?Kn(no(t),0,4294967295):0}function ro(t){if("number"==typeof t)return t;if(Zs(t))return NaN;if(zs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=zs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(W,"");var n=rt.test(t);return n||st.test(t)?Vt(t.slice(2),n?2:8):at.test(t)?NaN:+t}function io(t){return br(t,_o(t))}function so(t){return null==t?"":$a(t)}var oo=yr((function(t,e){if(di(e)||Ds(e))br(e,xo(e),t);else for(var n in e)Ot.call(e,n)&&zn(t,n,e[n])})),uo=yr((function(t,e){br(e,_o(e),t)})),lo=yr((function(t,e,n,a){br(e,_o(e),t,a)})),co=yr((function(t,e,n,a){br(e,xo(e),t,a)})),fo=zr(Wn),ho=Ma((function(t,e){t=pt(t);var n=-1,a=e.length,r=a>2?e[2]:void 0;for(r&&ii(e[0],e[1],r)&&(a=1);++n<a;)for(var i=e[n],s=_o(i),o=-1,u=s.length;++o<u;){var d=s[o],l=t[d];(void 0===l||Cs(l,xt[d])&&!Ot.call(t,d))&&(t[d]=i[d])}return t})),go=Ma((function(t){return t.push(void 0,Fr),ne(Oo,void 0,t)}));function po(t,e,n){var a=null==t?void 0:la(t,e);return void 0===a?n:a}function bo(t,e){return null!=t&&ei(t,e,pa)}var mo=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),t[e]=n}),Bo(Uo)),yo=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),Ot.call(t,e)?t[e].push(n):t[e]=[n]}),Kr),vo=Ma(ma);function xo(t){return Ds(t)?qn(t):Oa(t)}function _o(t){return Ds(t)?qn(t,!0):function(t){if(!zs(t))return function(t){var e=[];if(null!=t)for(var n in pt(t))e.push(n);return e}(t);var e=di(t),n=[];for(var a in t)("constructor"!=a||!e&&Ot.call(t,a))&&n.push(a);return n}(t)}var To=yr((function(t,e,n){Ca(t,e,n)})),Oo=yr((function(t,e,n,a){Ca(t,e,n,a)})),wo=zr((function(t,e){var n={};if(null==t)return n;var a=!1;e=le(e,(function(e){return e=ir(e,t),a||(a=e.length>1),e})),br(t,Yr(t),n),a&&(n=$n(n,7,Gr));for(var r=e.length;r--;)Ja(n,e[r]);return n})),So=zr((function(t,e){return null==t?{}:function(t,e){return ka(t,e,(function(e,n){return bo(t,n)}))}(t,e)}));function Io(t,e){if(null==t)return{};var n=le(Yr(t),(function(t){return[t]}));return e=Kr(e),ka(t,n,(function(t,n){return e(t,n[0])}))}var No=Mr(xo),Co=Mr(_o);function Ro(t){return null==t?[]:Ce(t,xo(t))}var Ao=Tr((function(t,e,n){return e=e.toLowerCase(),t+(n?ko(e):e)}));function ko(t){return Fo(so(t).toLowerCase())}function Eo(t){return(t=so(t))&&t.replace(ut,Le).replace(At,"")}var Lo=Tr((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Do=Tr((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Po=_r("toLowerCase"),Mo=Tr((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()})),qo=Tr((function(t,e,n){return t+(n?" ":"")+Fo(e)})),jo=Tr((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Fo=_r("toUpperCase");function Go(t,e,n){return t=so(t),void 0===(e=n?void 0:e)?function(t){return Dt.test(t)}(t)?function(t){return t.match(Et)||[]}(t):function(t){return t.match(X)||[]}(t):t.match(e)||[]}var Vo=Ma((function(t,e){try{return ne(t,void 0,e)}catch(n){return js(n)?n:new ft(n)}})),zo=zr((function(t,e){return re(e,(function(e){e=Si(e),Un(t,e,ms(t[e],t))})),t}));function Bo(t){return function(){return t}}var Yo=Sr(),Ho=Sr(!0);function Uo(t){return t}function Wo(t){return Ta("function"==typeof t?t:$n(t,1))}var Ko=Ma((function(t,e){return function(n){return ma(n,t,e)}})),$o=Ma((function(t,e){return function(n){return ma(t,n,e)}}));function Zo(t,e,n){var a=xo(e),r=da(e,a);null!=n||zs(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=da(e,xo(e)));var i=!(zs(n)&&"chain"in n&&!n.chain),s=Fs(t);return re(r,(function(n){var a=e[n];t[n]=a,s&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),r=n.__actions__=pr(this.__actions__);return r.push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,ce([this.value()],arguments))})})),t}function Jo(){}var Qo=Rr(le),Xo=Rr(se),tu=Rr(ge);function eu(t){return si(t)?Te(Si(t)):function(t){return function(e){return la(e,t)}}(t)}var nu=kr(),au=kr(!0);function ru(){return[]}function iu(){return!1}var su,ou=Cr((function(t,e){return t+e}),0),uu=Dr("ceil"),du=Cr((function(t,e){return t/e}),1),lu=Dr("floor"),cu=Cr((function(t,e){return t*e}),1),fu=Dr("round"),hu=Cr((function(t,e){return t-e}),0);return Nn.after=function(t,e){if("function"!=typeof e)throw new yt(r);return t=no(t),function(){if(--t<1)return e.apply(this,arguments)}},Nn.ary=ps,Nn.assign=oo,Nn.assignIn=uo,Nn.assignInWith=lo,Nn.assignWith=co,Nn.at=fo,Nn.before=bs,Nn.bind=ms,Nn.bindAll=zo,Nn.bindKey=ys,Nn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Es(t)?t:[t]},Nn.chain=ts,Nn.chunk=function(t,e,n){e=(n?ii(t,e,n):void 0===e)?1:rn(no(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,s=0,o=a(Je(r/e));i<r;)o[s++]=Ba(t,i,i+=e);return o},Nn.compact=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r},Nn.concat=function(){var t=arguments.length;if(!t)return[];for(var e=a(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return ce(Es(n)?pr(n):[n],ra(e,1))},Nn.cond=function(t){var e=null==t?0:t.length,n=Kr();return t=e?le(t,(function(t){if("function"!=typeof t[1])throw new yt(r);return[n(t[0]),t[1]]})):[],Ma((function(n){for(var a=-1;++a<e;){var r=t[a];if(ne(r[0],this,n))return ne(r[1],this,n)}}))},Nn.conforms=function(t){return function(t){var e=xo(t);return function(n){return Zn(n,t,e)}}($n(t,1))},Nn.constant=Bo,Nn.countBy=as,Nn.create=function(t,e){var n=Cn(t);return null==e?n:Hn(n,e)},Nn.curry=function t(e,n,a){var r=qr(e,8,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.curryRight=function t(e,n,a){var r=qr(e,16,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.debounce=vs,Nn.defaults=ho,Nn.defaultsDeep=go,Nn.defer=xs,Nn.delay=_s,Nn.difference=Ci,Nn.differenceBy=Ri,Nn.differenceWith=Ai,Nn.drop=function(t,e,n){var a=null==t?0:t.length;return a?Ba(t,(e=n||void 0===e?1:no(e))<0?0:e,a):[]},Nn.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?Ba(t,0,(e=a-(e=n||void 0===e?1:no(e)))<0?0:e):[]},Nn.dropRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0,!0):[]},Nn.dropWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0):[]},Nn.fill=function(t,e,n,a){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&ii(t,e,n)&&(n=0,a=r),function(t,e,n,a){var r=t.length;for((n=no(n))<0&&(n=-n>r?0:r+n),(a=void 0===a||a>r?r:no(a))<0&&(a+=r),a=n>a?0:ao(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},Nn.filter=function(t,e){return(Es(t)?oe:aa)(t,Kr(e,3))},Nn.flatMap=function(t,e){return ra(cs(t,e),1)},Nn.flatMapDeep=function(t,e){return ra(cs(t,e),1/0)},Nn.flatMapDepth=function(t,e,n){return n=void 0===n?1:no(n),ra(cs(t,e),n)},Nn.flatten=Li,Nn.flattenDeep=function(t){return null!=t&&t.length?ra(t,1/0):[]},Nn.flattenDepth=function(t,e){return null!=t&&t.length?ra(t,e=void 0===e?1:no(e)):[]},Nn.flip=function(t){return qr(t,512)},Nn.flow=Yo,Nn.flowRight=Ho,Nn.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,a={};++e<n;){var r=t[e];a[r[0]]=r[1]}return a},Nn.functions=function(t){return null==t?[]:da(t,xo(t))},Nn.functionsIn=function(t){return null==t?[]:da(t,_o(t))},Nn.groupBy=us,Nn.initial=function(t){return null!=t&&t.length?Ba(t,0,-1):[]},Nn.intersection=Pi,Nn.intersectionBy=Mi,Nn.intersectionWith=qi,Nn.invert=mo,Nn.invertBy=yo,Nn.invokeMap=ds,Nn.iteratee=Wo,Nn.keyBy=ls,Nn.keys=xo,Nn.keysIn=_o,Nn.map=cs,Nn.mapKeys=function(t,e){var n={};return e=Kr(e,3),oa(t,(function(t,a,r){Un(n,e(t,a,r),t)})),n},Nn.mapValues=function(t,e){var n={};return e=Kr(e,3),oa(t,(function(t,a,r){Un(n,a,e(t,a,r))})),n},Nn.matches=function(t){return Ia($n(t,1))},Nn.matchesProperty=function(t,e){return Na(t,$n(e,1))},Nn.memoize=Ts,Nn.merge=To,Nn.mergeWith=Oo,Nn.method=Ko,Nn.methodOf=$o,Nn.mixin=Zo,Nn.negate=Os,Nn.nthArg=function(t){return t=no(t),Ma((function(e){return Ra(e,t)}))},Nn.omit=wo,Nn.omitBy=function(t,e){return Io(t,Os(Kr(e)))},Nn.once=function(t){return bs(2,t)},Nn.orderBy=function(t,e,n,a){return null==t?[]:(Es(e)||(e=null==e?[]:[e]),Es(n=a?void 0:n)||(n=null==n?[]:[n]),Aa(t,e,n))},Nn.over=Qo,Nn.overArgs=ws,Nn.overEvery=Xo,Nn.overSome=tu,Nn.partial=Ss,Nn.partialRight=Is,Nn.partition=fs,Nn.pick=So,Nn.pickBy=Io,Nn.property=eu,Nn.propertyOf=function(t){return function(e){return null==t?void 0:la(t,e)}},Nn.pull=Fi,Nn.pullAll=Gi,Nn.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,Kr(n,2)):t},Nn.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,void 0,n):t},Nn.pullAt=Vi,Nn.range=nu,Nn.rangeRight=au,Nn.rearg=Ns,Nn.reject=function(t,e){return(Es(t)?oe:aa)(t,Os(Kr(e,3)))},Nn.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=Kr(e,3);++a<i;){var s=t[a];e(s,a,t)&&(n.push(s),r.push(a))}return La(t,r),n},Nn.rest=function(t,e){if("function"!=typeof t)throw new yt(r);return Ma(t,e=void 0===e?e:no(e))},Nn.reverse=zi,Nn.sampleSize=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:no(e),(Es(t)?Fn:ja)(t,e)},Nn.set=function(t,e,n){return null==t?t:Fa(t,e,n)},Nn.setWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Fa(t,e,n,a)},Nn.shuffle=function(t){return(Es(t)?Gn:za)(t)},Nn.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&ii(t,e,n)?(e=0,n=a):(e=null==e?0:no(e),n=void 0===n?a:no(n)),Ba(t,e,n)):[]},Nn.sortBy=hs,Nn.sortedUniq=function(t){return t&&t.length?Wa(t):[]},Nn.sortedUniqBy=function(t,e){return t&&t.length?Wa(t,Kr(e,2)):[]},Nn.split=function(t,e,n){return n&&"number"!=typeof n&&ii(t,e,n)&&(e=n=void 0),(n=void 0===n?4294967295:n>>>0)?(t=so(t))&&("string"==typeof e||null!=e&&!Ws(e))&&!(e=$a(e))&&Me(t)?or(Be(t),0,n):t.split(e,n):[]},Nn.spread=function(t,e){if("function"!=typeof t)throw new yt(r);return e=null==e?0:rn(no(e),0),Ma((function(n){var a=n[e],r=or(n,0,e);return a&&ce(r,a),ne(t,this,r)}))},Nn.tail=function(t){var e=null==t?0:t.length;return e?Ba(t,1,e):[]},Nn.take=function(t,e,n){return t&&t.length?Ba(t,0,(e=n||void 0===e?1:no(e))<0?0:e):[]},Nn.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?Ba(t,(e=a-(e=n||void 0===e?1:no(e)))<0?0:e,a):[]},Nn.takeRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!1,!0):[]},Nn.takeWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3)):[]},Nn.tap=function(t,e){return e(t),t},Nn.throttle=function(t,e,n){var a=!0,i=!0;if("function"!=typeof t)throw new yt(r);return zs(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),vs(t,e,{leading:a,maxWait:e,trailing:i})},Nn.thru=es,Nn.toArray=to,Nn.toPairs=No,Nn.toPairsIn=Co,Nn.toPath=function(t){return Es(t)?le(t,Si):Zs(t)?[t]:pr(wi(so(t)))},Nn.toPlainObject=io,Nn.transform=function(t,e,n){var a=Es(t),r=a||Ms(t)||Js(t);if(e=Kr(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:zs(t)&&Fs(i)?Cn(Ht(t)):{}}return(r?re:oa)(t,(function(t,a,r){return e(n,t,a,r)})),n},Nn.unary=function(t){return ps(t,1)},Nn.union=Bi,Nn.unionBy=Yi,Nn.unionWith=Hi,Nn.uniq=function(t){return t&&t.length?Za(t):[]},Nn.uniqBy=function(t,e){return t&&t.length?Za(t,Kr(e,2)):[]},Nn.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Za(t,void 0,e):[]},Nn.unset=function(t,e){return null==t||Ja(t,e)},Nn.unzip=Ui,Nn.unzipWith=Wi,Nn.update=function(t,e,n){return null==t?t:Qa(t,e,rr(n))},Nn.updateWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Qa(t,e,rr(n),a)},Nn.values=Ro,Nn.valuesIn=function(t){return null==t?[]:Ce(t,_o(t))},Nn.without=Ki,Nn.words=Go,Nn.wrap=function(t,e){return Ss(rr(e),t)},Nn.xor=$i,Nn.xorBy=Zi,Nn.xorWith=Ji,Nn.zip=Qi,Nn.zipObject=function(t,e){return nr(t||[],e||[],zn)},Nn.zipObjectDeep=function(t,e){return nr(t||[],e||[],Fa)},Nn.zipWith=Xi,Nn.entries=No,Nn.entriesIn=Co,Nn.extend=uo,Nn.extendWith=lo,Zo(Nn,Nn),Nn.add=ou,Nn.attempt=Vo,Nn.camelCase=Ao,Nn.capitalize=ko,Nn.ceil=uu,Nn.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=ro(n))==n?n:0),void 0!==e&&(e=(e=ro(e))==e?e:0),Kn(ro(t),e,n)},Nn.clone=function(t){return $n(t,4)},Nn.cloneDeep=function(t){return $n(t,5)},Nn.cloneDeepWith=function(t,e){return $n(t,5,e="function"==typeof e?e:void 0)},Nn.cloneWith=function(t,e){return $n(t,4,e="function"==typeof e?e:void 0)},Nn.conformsTo=function(t,e){return null==e||Zn(t,e,xo(e))},Nn.deburr=Eo,Nn.defaultTo=function(t,e){return null==t||t!=t?e:t},Nn.divide=du,Nn.endsWith=function(t,e,n){t=so(t),e=$a(e);var a=t.length,r=n=void 0===n?a:Kn(no(n),0,a);return(n-=e.length)>=0&&t.slice(n,r)==e},Nn.eq=Cs,Nn.escape=function(t){return(t=so(t))&&j.test(t)?t.replace(M,De):t},Nn.escapeRegExp=function(t){return(t=so(t))&&U.test(t)?t.replace(H,"\\$&"):t},Nn.every=function(t,e,n){var a=Es(t)?se:ea;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.find=rs,Nn.findIndex=ki,Nn.findKey=function(t,e){return be(t,Kr(e,3),oa)},Nn.findLast=is,Nn.findLastIndex=Ei,Nn.findLastKey=function(t,e){return be(t,Kr(e,3),ua)},Nn.floor=lu,Nn.forEach=ss,Nn.forEachRight=os,Nn.forIn=function(t,e){return null==t?t:ia(t,Kr(e,3),_o)},Nn.forInRight=function(t,e){return null==t?t:sa(t,Kr(e,3),_o)},Nn.forOwn=function(t,e){return t&&oa(t,Kr(e,3))},Nn.forOwnRight=function(t,e){return t&&ua(t,Kr(e,3))},Nn.get=po,Nn.gt=Rs,Nn.gte=As,Nn.has=function(t,e){return null!=t&&ei(t,e,ga)},Nn.hasIn=bo,Nn.head=Di,Nn.identity=Uo,Nn.includes=function(t,e,n,a){t=Ds(t)?t:Ro(t),n=n&&!a?no(n):0;var r=t.length;return n<0&&(n=rn(r+n,0)),$s(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&ye(t,e,n)>-1},Nn.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:no(n);return r<0&&(r=rn(a+r,0)),ye(t,e,r)},Nn.inRange=function(t,e,n){return e=eo(e),void 0===n?(n=e,e=0):n=eo(n),function(t,e,n){return t>=sn(e,n)&&t<rn(e,n)}(t=ro(t),e,n)},Nn.invoke=vo,Nn.isArguments=ks,Nn.isArray=Es,Nn.isArrayBuffer=Ls,Nn.isArrayLike=Ds,Nn.isArrayLikeObject=Ps,Nn.isBoolean=function(t){return!0===t||!1===t||Bs(t)&&fa(t)==d},Nn.isBuffer=Ms,Nn.isDate=qs,Nn.isElement=function(t){return Bs(t)&&1===t.nodeType&&!Us(t)},Nn.isEmpty=function(t){if(null==t)return!0;if(Ds(t)&&(Es(t)||"string"==typeof t||"function"==typeof t.splice||Ms(t)||Js(t)||ks(t)))return!t.length;var e=ti(t);if(e==g||e==y)return!t.size;if(di(t))return!Oa(t).length;for(var n in t)if(Ot.call(t,n))return!1;return!0},Nn.isEqual=function(t,e){return va(t,e)},Nn.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:void 0)?n(t,e):void 0;return void 0===a?va(t,e,void 0,n):!!a},Nn.isError=js,Nn.isFinite=function(t){return"number"==typeof t&&en(t)},Nn.isFunction=Fs,Nn.isInteger=Gs,Nn.isLength=Vs,Nn.isMap=Ys,Nn.isMatch=function(t,e){return t===e||xa(t,e,Zr(e))},Nn.isMatchWith=function(t,e,n){return n="function"==typeof n?n:void 0,xa(t,e,Zr(e),n)},Nn.isNaN=function(t){return Hs(t)&&t!=+t},Nn.isNative=function(t){if(ui(t))throw new ft("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return _a(t)},Nn.isNil=function(t){return null==t},Nn.isNull=function(t){return null===t},Nn.isNumber=Hs,Nn.isObject=zs,Nn.isObjectLike=Bs,Nn.isPlainObject=Us,Nn.isRegExp=Ws,Nn.isSafeInteger=function(t){return Gs(t)&&t>=-9007199254740991&&t<=9007199254740991},Nn.isSet=Ks,Nn.isString=$s,Nn.isSymbol=Zs,Nn.isTypedArray=Js,Nn.isUndefined=function(t){return void 0===t},Nn.isWeakMap=function(t){return Bs(t)&&ti(t)==_},Nn.isWeakSet=function(t){return Bs(t)&&"[object WeakSet]"==fa(t)},Nn.join=function(t,e){return null==t?"":nn.call(t,e)},Nn.kebabCase=Lo,Nn.last=ji,Nn.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a;return void 0!==n&&(r=(r=no(n))<0?rn(a+r,0):sn(r,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,r):me(t,xe,r,!0)},Nn.lowerCase=Do,Nn.lowerFirst=Po,Nn.lt=Qs,Nn.lte=Xs,Nn.max=function(t){return t&&t.length?na(t,Uo,ha):void 0},Nn.maxBy=function(t,e){return t&&t.length?na(t,Kr(e,2),ha):void 0},Nn.mean=function(t){return _e(t,Uo)},Nn.meanBy=function(t,e){return _e(t,Kr(e,2))},Nn.min=function(t){return t&&t.length?na(t,Uo,wa):void 0},Nn.minBy=function(t,e){return t&&t.length?na(t,Kr(e,2),wa):void 0},Nn.stubArray=ru,Nn.stubFalse=iu,Nn.stubObject=function(){return{}},Nn.stubString=function(){return""},Nn.stubTrue=function(){return!0},Nn.multiply=cu,Nn.nth=function(t,e){return t&&t.length?Ra(t,no(e)):void 0},Nn.noConflict=function(){return Yt._===this&&(Yt._=Ct),this},Nn.noop=Jo,Nn.now=gs,Nn.pad=function(t,e,n){t=so(t);var a=(e=no(e))?ze(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return Ar(Qe(r),n)+t+Ar(Je(r),n)},Nn.padEnd=function(t,e,n){t=so(t);var a=(e=no(e))?ze(t):0;return e&&a<e?t+Ar(e-a,n):t},Nn.padStart=function(t,e,n){t=so(t);var a=(e=no(e))?ze(t):0;return e&&a<e?Ar(e-a,n)+t:t},Nn.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),un(so(t).replace(K,""),e||0)},Nn.random=function(t,e,n){if(n&&"boolean"!=typeof n&&ii(t,e,n)&&(e=n=void 0),void 0===n&&("boolean"==typeof e?(n=e,e=void 0):"boolean"==typeof t&&(n=t,t=void 0)),void 0===t&&void 0===e?(t=0,e=1):(t=eo(t),void 0===e?(e=t,t=0):e=eo(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var r=dn();return sn(t+r*(e-t+Gt("1e-"+((r+"").length-1))),e)}return Da(t,e)},Nn.reduce=function(t,e,n){var a=Es(t)?fe:we,r=arguments.length<3;return a(t,Kr(e,4),n,r,Xn)},Nn.reduceRight=function(t,e,n){var a=Es(t)?he:we,r=arguments.length<3;return a(t,Kr(e,4),n,r,ta)},Nn.repeat=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:no(e),Pa(so(t),e)},Nn.replace=function(){var t=arguments,e=so(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Nn.result=function(t,e,n){var a=-1,r=(e=ir(e,t)).length;for(r||(r=1,t=void 0);++a<r;){var i=null==t?void 0:t[Si(e[a])];void 0===i&&(a=r,i=n),t=Fs(i)?i.call(t):i}return t},Nn.round=fu,Nn.runInContext=t,Nn.sample=function(t){return(Es(t)?jn:qa)(t)},Nn.size=function(t){if(null==t)return 0;if(Ds(t))return $s(t)?ze(t):t.length;var e=ti(t);return e==g||e==y?t.size:Oa(t).length},Nn.snakeCase=Mo,Nn.some=function(t,e,n){var a=Es(t)?ge:Ya;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.sortedIndex=function(t,e){return Ha(t,e)},Nn.sortedIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2))},Nn.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=Ha(t,e);if(a<n&&Cs(t[a],e))return a}return-1},Nn.sortedLastIndex=function(t,e){return Ha(t,e,!0)},Nn.sortedLastIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2),!0)},Nn.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=Ha(t,e,!0)-1;if(Cs(t[n],e))return n}return-1},Nn.startCase=qo,Nn.startsWith=function(t,e,n){return t=so(t),n=null==n?0:Kn(no(n),0,t.length),e=$a(e),t.slice(n,n+e.length)==e},Nn.subtract=hu,Nn.sum=function(t){return t&&t.length?Se(t,Uo):0},Nn.sumBy=function(t,e){return t&&t.length?Se(t,Kr(e,2)):0},Nn.template=function(t,e,n){var a=Nn.templateSettings;n&&ii(t,e,n)&&(e=void 0),t=so(t),e=lo({},e,a,jr);var r,i,s=lo({},e.imports,a.imports,jr),o=xo(s),u=Ce(s,o),d=0,l=e.interpolate||dt,c="__p += '",f=bt((e.escape||dt).source+"|"+l.source+"|"+(l===V?et:dt).source+"|"+(e.evaluate||dt).source+"|$","g"),h="//# sourceURL="+(Ot.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++Mt+"]")+"\n";t.replace(f,(function(e,n,a,s,o,u){return a||(a=s),c+=t.slice(d,u).replace(lt,Pe),n&&(r=!0,c+="' +\n__e("+n+") +\n'"),o&&(i=!0,c+="';\n"+o+";\n__p += '"),a&&(c+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),d=u+e.length,e})),c+="';\n";var g=Ot.call(e,"variable")&&e.variable;g||(c="with (obj) {\n"+c+"\n}\n"),c=(i?c.replace(E,""):c).replace(L,"$1").replace(D,"$1;"),c="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(r?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+c+"return __p\n}";var p=Vo((function(){return ht(o,h+"return "+c).apply(void 0,u)}));if(p.source=c,js(p))throw p;return p},Nn.times=function(t,e){if((t=no(t))<1||t>9007199254740991)return[];var n=4294967295,a=sn(t,4294967295);t-=4294967295;for(var r=Ie(a,e=Kr(e));++n<t;)e(n);return r},Nn.toFinite=eo,Nn.toInteger=no,Nn.toLength=ao,Nn.toLower=function(t){return so(t).toLowerCase()},Nn.toNumber=ro,Nn.toSafeInteger=function(t){return t?Kn(no(t),-9007199254740991,9007199254740991):0===t?t:0},Nn.toString=so,Nn.toUpper=function(t){return so(t).toUpperCase()},Nn.trim=function(t,e,n){if((t=so(t))&&(n||void 0===e))return t.replace(W,"");if(!t||!(e=$a(e)))return t;var a=Be(t),r=Be(e);return or(a,Ae(a,r),ke(a,r)+1).join("")},Nn.trimEnd=function(t,e,n){if((t=so(t))&&(n||void 0===e))return t.replace($,"");if(!t||!(e=$a(e)))return t;var a=Be(t);return or(a,0,ke(a,Be(e))+1).join("")},Nn.trimStart=function(t,e,n){if((t=so(t))&&(n||void 0===e))return t.replace(K,"");if(!t||!(e=$a(e)))return t;var a=Be(t);return or(a,Ae(a,Be(e))).join("")},Nn.truncate=function(t,e){var n=30,a="...";if(zs(e)){var r="separator"in e?e.separator:r;n="length"in e?no(e.length):n,a="omission"in e?$a(e.omission):a}var i=(t=so(t)).length;if(Me(t)){var s=Be(t);i=s.length}if(n>=i)return t;var o=n-ze(a);if(o<1)return a;var u=s?or(s,0,o).join(""):t.slice(0,o);if(void 0===r)return u+a;if(s&&(o+=u.length-o),Ws(r)){if(t.slice(o).search(r)){var d,l=u;for(r.global||(r=bt(r.source,so(nt.exec(r))+"g")),r.lastIndex=0;d=r.exec(l);)var c=d.index;u=u.slice(0,void 0===c?o:c)}}else if(t.indexOf($a(r),o)!=o){var f=u.lastIndexOf(r);f>-1&&(u=u.slice(0,f))}return u+a},Nn.unescape=function(t){return(t=so(t))&&q.test(t)?t.replace(P,Ye):t},Nn.uniqueId=function(t){var e=++wt;return so(t)+e},Nn.upperCase=jo,Nn.upperFirst=Fo,Nn.each=ss,Nn.eachRight=os,Nn.first=Di,Zo(Nn,(su={},oa(Nn,(function(t,e){Ot.call(Nn.prototype,e)||(su[e]=t)})),su),{chain:!1}),Nn.VERSION="4.17.15",re(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Nn[t].placeholder=Nn})),re(["drop","take"],(function(t,e){kn.prototype[t]=function(n){n=void 0===n?1:rn(no(n),0);var a=this.__filtered__&&!e?new kn(this):this.clone();return a.__filtered__?a.__takeCount__=sn(n,a.__takeCount__):a.__views__.push({size:sn(n,4294967295),type:t+(a.__dir__<0?"Right":"")}),a},kn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),re(["filter","map","takeWhile"],(function(t,e){var n=e+1,a=1==n||3==n;kn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Kr(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}})),re(["head","last"],(function(t,e){var n="take"+(e?"Right":"");kn.prototype[t]=function(){return this[n](1).value()[0]}})),re(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");kn.prototype[t]=function(){return this.__filtered__?new kn(this):this[n](1)}})),kn.prototype.compact=function(){return this.filter(Uo)},kn.prototype.find=function(t){return this.filter(t).head()},kn.prototype.findLast=function(t){return this.reverse().find(t)},kn.prototype.invokeMap=Ma((function(t,e){return"function"==typeof t?new kn(this):this.map((function(n){return ma(n,t,e)}))})),kn.prototype.reject=function(t){return this.filter(Os(Kr(t)))},kn.prototype.slice=function(t,e){t=no(t);var n=this;return n.__filtered__&&(t>0||e<0)?new kn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=no(e))<0?n.dropRight(-e):n.take(e-t)),n)},kn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},kn.prototype.toArray=function(){return this.take(4294967295)},oa(kn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),r=Nn[a?"take"+("last"==e?"Right":""):e],i=a||/^find/.test(e);r&&(Nn.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,o=e instanceof kn,u=s[0],d=o||Es(e),l=function(t){var e=r.apply(Nn,ce([t],s));return a&&c?e[0]:e};d&&n&&"function"==typeof u&&1!=u.length&&(o=d=!1);var c=this.__chain__,f=!!this.__actions__.length,h=i&&!c,g=o&&!f;if(!i&&d){e=g?e:new kn(this);var p=t.apply(e,s);return p.__actions__.push({func:es,args:[l],thisArg:void 0}),new An(p,c)}return h&&g?t.apply(this,s):(p=this.thru(l),h?a?p.value()[0]:p.value():p)})})),re(["pop","push","shift","sort","splice","unshift"],(function(t){var e=vt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);Nn.prototype[t]=function(){var t=arguments;if(a&&!this.__chain__){var r=this.value();return e.apply(Es(r)?r:[],t)}return this[n]((function(n){return e.apply(Es(n)?n:[],t)}))}})),oa(kn.prototype,(function(t,e){var n=Nn[e];if(n){var a=n.name+"";Ot.call(yn,a)||(yn[a]=[]),yn[a].push({name:e,func:n})}})),yn[Ir(void 0,2).name]=[{name:"wrapper",func:void 0}],kn.prototype.clone=function(){var t=new kn(this.__wrapped__);return t.__actions__=pr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=pr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=pr(this.__views__),t},kn.prototype.reverse=function(){if(this.__filtered__){var t=new kn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},kn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Es(t),a=e<0,r=n?t.length:0,i=function(t,e,n){for(var a=-1,r=n.length;++a<r;){var i=n[a],s=i.size;switch(i.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=sn(e,t+s);break;case"takeRight":t=rn(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=i.start,o=i.end,u=o-s,d=a?o:s-1,l=this.__iteratees__,c=l.length,f=0,h=sn(u,this.__takeCount__);if(!n||!a&&r==u&&h==u)return tr(t,this.__actions__);var g=[];t:for(;u--&&f<h;){for(var p=-1,b=t[d+=e];++p<c;){var m=l[p],y=m.type,v=(0,m.iteratee)(b);if(2==y)b=v;else if(!v){if(1==y)continue t;break t}}g[f++]=b}return g},Nn.prototype.at=ns,Nn.prototype.chain=function(){return ts(this)},Nn.prototype.commit=function(){return new An(this.value(),this.__chain__)},Nn.prototype.next=function(){void 0===this.__values__&&(this.__values__=to(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},Nn.prototype.plant=function(t){for(var e,n=this;n instanceof Rn;){var a=Ni(n);a.__index__=0,a.__values__=void 0,e?r.__wrapped__=a:e=a;var r=a;n=n.__wrapped__}return r.__wrapped__=t,e},Nn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof kn){var e=t;return this.__actions__.length&&(e=new kn(this)),(e=e.reverse()).__actions__.push({func:es,args:[zi],thisArg:void 0}),new An(e,this.__chain__)}return this.thru(zi)},Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return tr(this.__wrapped__,this.__actions__)},Nn.prototype.first=Nn.prototype.head,Oe&&(Nn.prototype[Oe]=function(){return this}),Nn}();Yt._=He,void 0===(a=(function(){return He}).call(e,n,e,t))||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},MJIl:function(t,e,n){var a=n("QoRX"),r=n("ut/Y"),i=n("Nh2a"),s=n("Z0cm"),o=n("mv/X");t.exports=function(t,e,n){var u=s(t)?a:i;return n&&o(t,e,n)&&(e=void 0),u(t,r(e,3))}},MMmD:function(t,e,n){var a=n("lSCD"),r=n("shjB");t.exports=function(t){return null!=t&&r(t.length)&&!a(t)}},"MO+k":function(t,e,n){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:n,rgb2hsv:a,rgb2hwb:i,rgb2cmyk:s,rgb2keyword:o,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return v(d(t))},hsl2rgb:l,hsl2hsv:function(t){var e=t[1]/100,n=t[2]/100;return 0===n?[0,0,0]:[t[0],2*(e*=(n*=2)<=1?n:2-n)/(n+e)*100,(n+e)/2*100]},hsl2hwb:function(t){return i(l(t))},hsl2cmyk:function(t){return s(l(t))},hsl2keyword:function(t){return o(l(t))},hsv2rgb:c,hsv2hsl:function(t){var e,n,a=t[1]/100,r=t[2]/100;return e=a*r,[t[0],100*(e=(e/=(n=(2-a)*r)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return i(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return o(c(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return o(f(t))},cmyk2rgb:h,cmyk2hsl:function(t){return n(h(t))},cmyk2hsv:function(t){return a(h(t))},cmyk2hwb:function(t){return i(h(t))},cmyk2keyword:function(t){return o(h(t))},keyword2rgb:T,keyword2hsl:function(t){return n(T(t))},keyword2hsv:function(t){return a(T(t))},keyword2hwb:function(t){return i(T(t))},keyword2cmyk:function(t){return s(T(t))},keyword2lab:function(t){return d(T(t))},keyword2xyz:function(t){return u(T(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return v(m(t))},lab2xyz:y,lab2rgb:x,lab2lch:v,lch2lab:_,lch2xyz:function(t){return y(_(t))},lch2rgb:function(t){return x(_(t))}};function n(t){var e,n,a=t[0]/255,r=t[1]/255,i=t[2]/255,s=Math.min(a,r,i),o=Math.max(a,r,i),u=o-s;return o==s?e=0:a==o?e=(r-i)/u:r==o?e=2+(i-a)/u:i==o&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),n=(s+o)/2,[e,100*(o==s?0:n<=.5?u/(o+s):u/(2-o-s)),100*n]}function a(t){var e,n,a=t[0],r=t[1],i=t[2],s=Math.min(a,r,i),o=Math.max(a,r,i),u=o-s;return n=0==o?0:u/o*1e3/10,o==s?e=0:a==o?e=(r-i)/u:r==o?e=2+(i-a)/u:i==o&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,o/255*1e3/10]}function i(t){var e=t[0],a=t[1],r=t[2];return[n(t)[0],1/255*Math.min(e,Math.min(a,r))*100,100*(r=1-1/255*Math.max(e,Math.max(a,r)))]}function s(t){var e,n=t[0]/255,a=t[1]/255,r=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-a,1-r)))/(1-e)||0),100*((1-a-e)/(1-e)||0),100*((1-r-e)/(1-e)||0),100*e]}function o(t){return w[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92)),100*(.2126*e+.7152*n+.0722*a),100*(.0193*e+.1192*n+.9505*a)]}function d(t){var e=u(t),n=e[0],a=e[1],r=e[2];return a/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116)-16,500*(n-a),200*(a-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]}function l(t){var e,n,a,r,i,s=t[0]/360,o=t[1]/100,u=t[2]/100;if(0==o)return[i=255*u,i,i];e=2*u-(n=u<.5?u*(1+o):u+o-u*o),r=[0,0,0];for(var d=0;d<3;d++)(a=s+1/3*-(d-1))<0&&a++,a>1&&a--,r[d]=255*(i=6*a<1?e+6*(n-e)*a:2*a<1?n:3*a<2?e+(n-e)*(2/3-a)*6:e);return r}function c(t){var e=t[0]/60,n=t[1]/100,a=t[2]/100,r=Math.floor(e)%6,i=e-Math.floor(e),s=255*a*(1-n),o=255*a*(1-n*i),u=255*a*(1-n*(1-i));switch(a*=255,r){case 0:return[a,u,s];case 1:return[o,a,s];case 2:return[s,a,u];case 3:return[s,o,a];case 4:return[u,s,a];case 5:return[a,s,o]}}function f(t){var e,n,a,i,s=t[0]/360,o=t[1]/100,u=t[2]/100,d=o+u;switch(d>1&&(o/=d,u/=d),a=6*s-(e=Math.floor(6*s)),0!=(1&e)&&(a=1-a),i=o+a*((n=1-u)-o),e){default:case 6:case 0:r=n,g=i,b=o;break;case 1:r=i,g=n,b=o;break;case 2:r=o,g=n,b=i;break;case 3:r=o,g=i,b=n;break;case 4:r=i,g=o,b=n;break;case 5:r=n,g=o,b=i}return[255*r,255*g,255*b]}function h(t){var e=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,t[0]/100*(1-a)+a)),255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,n,a,r=t[0]/100,i=t[1]/100,s=t[2]/100;return n=-.9689*r+1.8758*i+.0415*s,a=.0557*r+-.204*i+1.057*s,e=(e=3.2406*r+-1.5372*i+-.4986*s)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(a=Math.min(Math.max(0,a),1))]}function m(t){var e=t[0],n=t[1],a=t[2];return n/=100,a/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function y(t){var e,n,a,r,i=t[0],s=t[1],o=t[2];return i<=8?r=(n=100*i/903.3)/100*7.787+16/116:(n=100*Math.pow((i+16)/116,3),r=Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(s/500+r-16/116)/7.787:95.047*Math.pow(s/500+r,3),n,a=a/108.883<=.008859?a=108.883*(r-o/200-16/116)/7.787:108.883*Math.pow(r-o/200,3)]}function v(t){var e,n=t[0],a=t[1],r=t[2];return(e=360*Math.atan2(r,a)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(a*a+r*r),e]}function x(t){return p(y(t))}function _(t){var e,n=t[1];return e=t[2]/360*2*Math.PI,[t[0],n*Math.cos(e),n*Math.sin(e)]}function T(t){return O[t]}var O={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},w={};for(var S in O)w[JSON.stringify(O[S])]=S;var I=function(){return new k};for(var N in e){I[N+"Raw"]=function(t){return function(n){return"number"==typeof n&&(n=Array.prototype.slice.call(arguments)),e[t](n)}}(N);var C=/(\w+)2(\w+)/.exec(N),R=C[1],A=C[2];(I[R]=I[R]||{})[A]=I[N]=function(t){return function(n){"number"==typeof n&&(n=Array.prototype.slice.call(arguments));var a=e[t](n);if("string"==typeof a||void 0===a)return a;for(var r=0;r<a.length;r++)a[r]=Math.round(a[r]);return a}}(N)}var k=function(){this.convs={}};k.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},k.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},k.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=I[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach((function(t){k.prototype[t]=function(e){return this.routeSpace(t,arguments)}}));var E=I,L={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},D={getRgba:P,getHsla:M,getRgb:function(t){var e=P(t);return e&&e.slice(0,3)},getHsl:function(t){var e=M(t);return e&&e.slice(0,3)},getHwb:q,getAlpha:function(t){var e=P(t);return e?e[3]:(e=M(t))?e[3]:(e=q(t))?e[3]:void 0},hexString:function(t,e){return e=void 0!==e&&3===t.length?e:t[3],"#"+z(t[0])+z(t[1])+z(t[2])+(e>=0&&e<1?z(Math.round(255*e)):"")},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?j(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:j,percentString:function(t,e){return e<1||t[3]&&t[3]<1?F(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:F,hslString:function(t,e){return e<1||t[3]&&t[3]<1?G(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:G,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return B[t.slice(0,3)]}};function P(t){if(t){var e=[0,0,0],n=1,a=t.match(/^#([a-fA-F0-9]{3,4})$/i),r="";if(a){r=(a=a[1])[3];for(var i=0;i<e.length;i++)e[i]=parseInt(a[i]+a[i],16);r&&(n=Math.round(parseInt(r+r,16)/255*100)/100)}else if(a=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(r=a[2],a=a[1],i=0;i<e.length;i++)e[i]=parseInt(a.slice(2*i,2*i+2),16);r&&(n=Math.round(parseInt(r,16)/255*100)/100)}else if(a=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=parseInt(a[i+1]);n=parseFloat(a[4])}else if(a=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=Math.round(2.55*parseFloat(a[i+1]));n=parseFloat(a[4])}else if(a=t.match(/(\w+)/)){if("transparent"==a[1])return[0,0,0,0];if(!(e=L[a[1]]))return}for(i=0;i<e.length;i++)e[i]=V(e[i],0,255);return n=n||0==n?V(n,0,1):1,e[3]=n,e}}function M(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[V(parseInt(e[1]),0,360),V(parseFloat(e[2]),0,100),V(parseFloat(e[3]),0,100),V(isNaN(n)?1:n,0,1)]}}}function q(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[V(parseInt(e[1]),0,360),V(parseFloat(e[2]),0,100),V(parseFloat(e[3]),0,100),V(isNaN(n)?1:n,0,1)]}}}function j(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function F(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function G(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function V(t,e,n){return Math.min(Math.max(e,t),n)}function z(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var B={};for(var Y in L)B[L[Y]]=Y;var H=function(t){return t instanceof H?t:this instanceof H?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=D.getRgba(t))?this.setValues("rgb",e):(e=D.getHsla(t))?this.setValues("hsl",e):(e=D.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new H(t);var e};H.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return D.hexString(this.values.rgb)},rgbString:function(){return D.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return D.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return D.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return D.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return D.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return D.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return D.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var a=t[n]/255;e[n]=a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,a=void 0===e?.5:e,r=2*a-1,i=this.alpha()-n.alpha(),s=((r*i==-1?r:(r+i)/(1+r*i))+1)/2,o=1-s;return this.rgb(s*this.red()+o*n.red(),s*this.green()+o*n.green(),s*this.blue()+o*n.blue()).alpha(this.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new H,a=this.values,r=n.values;for(var i in a)a.hasOwnProperty(i)&&("[object Array]"===(e={}.toString.call(t=a[i]))?r[i]=t.slice(0):"[object Number]"===e?r[i]=t:console.error("unexpected color value:",t));return n}},H.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},H.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},H.prototype.getValues=function(t){for(var e=this.values,n={},a=0;a<t.length;a++)n[t.charAt(a)]=e[t][a];return 1!==e.alpha&&(n.a=e.alpha),n},H.prototype.setValues=function(t,e){var n,a,r=this.values,i=this.spaces,s=this.maxes,o=1;if(this.valid=!0,"alpha"===t)o=e;else if(e.length)r[t]=e.slice(0,t.length),o=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)r[t][n]=e[t.charAt(n)];o=e.a}else if(void 0!==e[i[t][0]]){var u=i[t];for(n=0;n<t.length;n++)r[t][n]=e[u[n]];o=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===o?r.alpha:o)),"alpha"===t)return!1;for(n=0;n<t.length;n++)a=Math.max(0,Math.min(s[t][n],r[t][n])),r[t][n]=Math.round(a);for(var d in i)d!==t&&(r[d]=E[t][d](r[t]));return!0},H.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},H.prototype.setChannel=function(t,e,n){var a=this.values[t];return void 0===n?a[e]:n===a[e]?this:(a[e]=n,this.setValues(t,a),this)},"undefined"!=typeof window&&(window.Color=H);var U,W=H,K={noop:function(){},uid:(U=0,function(){return U++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return K.valueOrDefault(K.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var r,i,s;if(K.isArray(t))if(i=t.length,a)for(r=i-1;r>=0;r--)e.call(n,t[r],r);else for(r=0;r<i;r++)e.call(n,t[r],r);else if(K.isObject(t))for(i=(s=Object.keys(t)).length,r=0;r<i;r++)e.call(n,t[s[r]],s[r])},arrayEquals:function(t,e){var n,a,r,i;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(i=e[n],(r=t[n])instanceof Array&&i instanceof Array){if(!K.arrayEquals(r,i))return!1}else if(r!==i)return!1;return!0},clone:function(t){if(K.isArray(t))return t.map(K.clone);if(K.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,r=0;r<a;++r)e[n[r]]=K.clone(t[n[r]]);return e}return t},_merger:function(t,e,n,a){var r=e[t],i=n[t];K.isObject(r)&&K.isObject(i)?K.merge(r,i,a):e[t]=K.clone(i)},_mergerIf:function(t,e,n){var a=e[t],r=n[t];K.isObject(a)&&K.isObject(r)?K.mergeIf(a,r):e.hasOwnProperty(t)||(e[t]=K.clone(r))},merge:function(t,e,n){var a,r,i,s,o,u=K.isArray(e)?e:[e],d=u.length;if(!K.isObject(t))return t;for(a=(n=n||{}).merger||K._merger,r=0;r<d;++r)if(K.isObject(e=u[r]))for(o=0,s=(i=Object.keys(e)).length;o<s;++o)a(i[o],t,e,n);return t},mergeIf:function(t,e){return K.merge(t,e,{merger:K._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,a=arguments.length;n<a;++n)K.each(arguments[n],e);return t},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=n};return a.prototype=e.prototype,n.prototype=new a,n.extend=K.inherits,t&&K.extend(n.prototype,t),n.__super__=e.prototype,n}},$=K;K.callCallback=K.callback,K.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},K.getValueOrDefault=K.valueOrDefault,K.getValueAtIndexOrDefault=K.valueAtIndexOrDefault;var Z={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),-a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),a*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),t<1?a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:a*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-Z.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*Z.easeInBounce(2*t):.5*Z.easeOutBounce(2*t-1)+.5}},J={effects:Z};$.easingEffects=Z;var Q=Math.PI,X=Q/180,tt=2*Q,et=Q/2,nt=Q/4,at=2*Q/3,rt={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,a,r,i){if(i){var s=Math.min(i,r/2,a/2),o=e+s,u=n+s,d=e+a-s,l=n+r-s;t.moveTo(e,u),o<d&&u<l?(t.arc(o,u,s,-Q,-et),t.arc(d,u,s,-et,0),t.arc(d,l,s,0,et),t.arc(o,l,s,et,Q)):o<d?(t.moveTo(o,n),t.arc(d,u,s,-et,et),t.arc(o,u,s,et,Q+et)):u<l?(t.arc(o,u,s,-Q,0),t.arc(o,l,s,0,Q)):t.arc(o,u,s,-Q,Q),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,a,r)},drawPoint:function(t,e,n,a,r,i){var s,o,u,d,l,c=(i||0)*X;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(s=e.toString())&&"[object HTMLCanvasElement]"!==s){if(!(isNaN(n)||n<=0)){switch(t.beginPath(),e){default:t.arc(a,r,n,0,tt),t.closePath();break;case"triangle":t.moveTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),t.closePath();break;case"rectRounded":d=n-(l=.516*n),o=Math.cos(c+nt)*d,u=Math.sin(c+nt)*d,t.arc(a-o,r-u,l,c-Q,c-et),t.arc(a+u,r-o,l,c-et,c),t.arc(a+o,r+u,l,c,c+et),t.arc(a-u,r+o,l,c+et,c+Q),t.closePath();break;case"rect":if(!i){d=Math.SQRT1_2*n,t.rect(a-d,r-d,2*d,2*d);break}c+=nt;case"rectRot":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+u,r-o),t.lineTo(a+o,r+u),t.lineTo(a-u,r+o),t.closePath();break;case"crossRot":c+=nt;case"cross":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u),t.moveTo(a+u,r-o),t.lineTo(a-u,r+o);break;case"star":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u),t.moveTo(a+u,r-o),t.lineTo(a-u,r+o),c+=nt,o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u),t.moveTo(a+u,r-o),t.lineTo(a-u,r+o);break;case"line":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u);break;case"dash":t.moveTo(a,r),t.lineTo(a+Math.cos(c)*n,r+Math.sin(c)*n)}t.fill(),t.stroke()}}else t.drawImage(e,a-e.width/2,r-e.height/2,e.width,e.height)},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,a){var r=n.steppedLine;if(r){if("middle"===r){var i=(e.x+n.x)/2;t.lineTo(i,a?n.y:e.y),t.lineTo(i,a?e.y:n.y)}else"after"===r&&!a||"after"!==r&&a?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}else n.tension?t.bezierCurveTo(a?e.controlPointPreviousX:e.controlPointNextX,a?e.controlPointPreviousY:e.controlPointNextY,a?n.controlPointNextX:n.controlPointPreviousX,a?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},it=rt;$.clear=rt.clear,$.drawRoundedRectangle=function(t){t.beginPath(),rt.roundedRect.apply(rt,arguments)};var st={_set:function(t,e){return $.merge(this[t]||(this[t]={}),e)}};st._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var ot=st,ut=$.valueOrDefault,dt={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,r;return $.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,r=+t.left||0):e=n=a=r=+t||0,{top:e,right:n,bottom:a,left:r,height:e+a,width:r+n}},_parseFont:function(t){var e=ot.global,n=ut(t.fontSize,e.defaultFontSize),a={family:ut(t.fontFamily,e.defaultFontFamily),lineHeight:$.options.toLineHeight(ut(t.lineHeight,e.defaultLineHeight),n),size:n,style:ut(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return a.string=function(t){return!t||$.isNullOrUndef(t.size)||$.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(a),a},resolve:function(t,e,n){var a,r,i;for(a=0,r=t.length;a<r;++a)if(void 0!==(i=t[a])&&(void 0!==e&&"function"==typeof i&&(i=i(e)),void 0!==n&&$.isArray(i)&&(i=i[n]),void 0!==i))return i}},lt=$,ct=it,ft=dt;lt.easing=J,lt.canvas=ct,lt.options=ft;var ht=function(t){lt.extend(this,t),this.initialize.apply(this,arguments)};lt.extend(ht.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=lt.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,a=e._start,r=e._view;return n&&1!==t?(r||(r=e._view={}),a||(a=e._start={}),function(t,e,n,a){var r,i,s,o,u,d,l,c,f,h=Object.keys(n);for(r=0,i=h.length;r<i;++r)if(d=n[s=h[r]],e.hasOwnProperty(s)||(e[s]=d),(o=e[s])!==d&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=o),(l=typeof d)==typeof(u=t[s]))if("string"===l){if((c=W(u)).valid&&(f=W(d)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if(lt.isFinite(u)&&lt.isFinite(d)){e[s]=u+(d-u)*a;continue}e[s]=d}}(a,r,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return lt.isNumber(this._model.x)&&lt.isNumber(this._model.y)}}),ht.extend=lt.inherits;var gt=ht,pt=gt.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),bt=pt;Object.defineProperty(pt.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(pt.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),ot._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:lt.noop,onComplete:lt.noop}});var mt={animations:[],request:null,addAnimation:function(t,e,n,a){var r,i,s=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=n,a||(t.animating=!0),r=0,i=s.length;r<i;++r)if(s[r].chart===t)return void(s[r]=e);s.push(e),1===s.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=lt.findIndex(this.animations,(function(e){return e.chart===t}));-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=lt.requestAnimFrame.call(window,(function(){t.request=null,t.startDigest()})))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,a,r=this.animations,i=0;i<r.length;)e=(t=r[i]).chart,n=t.numSteps,a=Math.floor((Date.now()-t.startTime)/t.duration*n)+1,t.currentStep=Math.min(a,n),lt.callback(t.render,[e,t],e),lt.callback(t.onAnimationProgress,[t],e),t.currentStep>=n?(lt.callback(t.onAnimationComplete,[t],e),e.animating=!1,r.splice(i,1)):++i}},yt=lt.options.resolve,vt=["push","pop","shift","splice","unshift"];function xt(t,e){var n=t._chartjs;if(n){var a=n.listeners,r=a.indexOf(e);-1!==r&&a.splice(r,1),a.length>0||(vt.forEach((function(e){delete t[e]})),delete t._chartjs)}}var _t=function(t,e){this.initialize(t,e)};lt.extend(_t.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&xt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),a=this.getDataset().data||[],r=n.data;for(t=0,e=a.length;t<e;++t)r[t]=r[t]||this.createMetaData(t);n.dataset=n.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,n=this,a=n.getDataset(),r=a.data||(a.data=[]);n._data!==r&&(n._data&&xt(n._data,n),r&&Object.isExtensible(r)&&(e=n,(t=r)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),vt.forEach((function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),r=a.apply(this,e);return lt.each(t._chartjs.listeners,(function(t){"function"==typeof t[n]&&t[n].apply(t,e)})),r}})})))),n._data=r),n.resyncElements()},update:lt.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],a=n.length,r=0;r<a;++r)n[r].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,a=0;for(t.dataset&&t.dataset.draw();a<n;++a)e[a].draw()},removeHoverStyle:function(t){lt.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},r=t._model,i=lt.getHoverColor;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth},r.backgroundColor=yt([a.hoverBackgroundColor,e.hoverBackgroundColor,i(r.backgroundColor)],void 0,n),r.borderColor=yt([a.hoverBorderColor,e.hoverBorderColor,i(r.borderColor)],void 0,n),r.borderWidth=yt([a.hoverBorderWidth,e.hoverBorderWidth,r.borderWidth],void 0,n)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,a=e.length;a<n?t.data.splice(a,n-a):a>n&&this.insertElements(n,a-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),_t.extend=lt.inherits;var Tt=_t;ot._set("global",{elements:{arc:{backgroundColor:ot.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var Ot=gt.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var a=lt.getAngleFromPoint(n,{x:t,y:e}),r=a.angle,i=a.distance,s=n.startAngle,o=n.endAngle;o<s;)o+=2*Math.PI;for(;r>o;)r-=2*Math.PI;for(;r<s;)r+=2*Math.PI;return r>=s&&r<=o&&i>=n.innerRadius&&i<=n.outerRadius}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,a=n.startAngle,r=n.endAngle,i="inner"===n.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(n.x,n.y,Math.max(n.outerRadius-i,0),a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.fillStyle=n.backgroundColor,e.fill(),n.borderWidth&&("inner"===n.borderAlign?(e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a-(t=i/n.outerRadius),r+t),n.innerRadius>i?e.arc(n.x,n.y,n.innerRadius-i,r+(t=i/n.innerRadius),a-t,!0):e.arc(n.x,n.y,i,r+Math.PI/2,a-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.lineWidth=2*n.borderWidth,e.lineJoin="round"):(e.lineWidth=n.borderWidth,e.lineJoin="bevel"),e.strokeStyle=n.borderColor,e.stroke()),e.restore()}}),wt=lt.valueOrDefault,St=ot.global.defaultColor;ot._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var It=gt.extend({draw:function(){var t,e,n,a,r=this._view,i=this._chart.ctx,s=r.spanGaps,o=this._children.slice(),u=ot.global,d=u.elements.line,l=-1;for(this._loop&&o.length&&o.push(o[0]),i.save(),i.lineCap=r.borderCapStyle||d.borderCapStyle,i.setLineDash&&i.setLineDash(r.borderDash||d.borderDash),i.lineDashOffset=wt(r.borderDashOffset,d.borderDashOffset),i.lineJoin=r.borderJoinStyle||d.borderJoinStyle,i.lineWidth=wt(r.borderWidth,d.borderWidth),i.strokeStyle=r.borderColor||u.defaultColor,i.beginPath(),l=-1,t=0;t<o.length;++t)e=o[t],n=lt.previousItem(o,t),a=e._view,0===t?a.skip||(i.moveTo(a.x,a.y),l=t):(n=-1===l?n:o[l],a.skip||(l!==t-1&&!s||-1===l?i.moveTo(a.x,a.y):lt.canvas.lineTo(i,n._view,e._view),l=t));i.stroke(),i.restore()}}),Nt=lt.valueOrDefault,Ct=ot.global.defaultColor;function Rt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}ot._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:Ct,borderColor:Ct,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var At=gt.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:Rt,inXRange:Rt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._chart.ctx,a=e.pointStyle,r=e.rotation,i=e.radius,s=e.x,o=e.y,u=ot.global,d=u.defaultColor;e.skip||(void 0===t||lt.canvas._isPointInArea(e,t))&&(n.strokeStyle=e.borderColor||d,n.lineWidth=Nt(e.borderWidth,u.elements.point.borderWidth),n.fillStyle=e.backgroundColor||d,lt.canvas.drawPoint(n,a,i,s,o,r))}}),kt=ot.global.defaultColor;function Et(t){return t&&void 0!==t.width}function Lt(t){var e,n,a,r,i;return Et(t)?(e=t.x-(i=t.width/2),n=t.x+i,a=Math.min(t.y,t.base),r=Math.max(t.y,t.base)):(i=t.height/2,e=Math.min(t.x,t.base),n=Math.max(t.x,t.base),a=t.y-i,r=t.y+i),{left:e,top:a,right:n,bottom:r}}function Dt(t,e,n){return t===e?n:t===n?e:t}function Pt(t,e,n){var a=null===e,r=null===n,i=!(!t||a&&r)&&Lt(t);return i&&(a||e>=i.left&&e<=i.right)&&(r||n>=i.top&&n<=i.bottom)}ot._set("global",{elements:{rectangle:{backgroundColor:kt,borderColor:kt,borderSkipped:"bottom",borderWidth:0}}});var Mt=gt.extend({draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=Lt(t),n=e.right-e.left,a=e.bottom-e.top,r=function(t,e,n){var a,r,i,s,o=t.borderWidth,u=function(t){var e=t.borderSkipped,n={};return e?(t.horizontal?t.base>t.x&&(e=Dt(e,"left","right")):t.base<t.y&&(e=Dt(e,"bottom","top")),n[e]=!0,n):n}(t);return lt.isObject(o)?(a=+o.top||0,r=+o.right||0,i=+o.bottom||0,s=+o.left||0):a=r=i=s=+o||0,{t:u.top||a<0?0:a>n?n:a,r:u.right||r<0?0:r>e?e:r,b:u.bottom||i<0?0:i>n?n:i,l:u.left||s<0?0:s>e?e:s}}(t,n/2,a/2);return{outer:{x:e.left,y:e.top,w:n,h:a},inner:{x:e.left+r.l,y:e.top+r.t,w:n-r.l-r.r,h:a-r.t-r.b}}}(e),a=n.outer,r=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(a.x,a.y,a.w,a.h),a.w===r.w&&a.h===r.h||(t.save(),t.beginPath(),t.rect(a.x,a.y,a.w,a.h),t.clip(),t.fillStyle=e.borderColor,t.rect(r.x,r.y,r.w,r.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Pt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return Et(n)?Pt(n,t,null):Pt(n,null,e)},inXRange:function(t){return Pt(this._view,t,null)},inYRange:function(t){return Pt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return Et(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return Et(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),qt={},jt=It,Ft=At,Gt=Mt;qt.Arc=Ot,qt.Line=jt,qt.Point=Ft,qt.Rectangle=Gt;var Vt=lt.options.resolve;ot._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var zt=Tt.extend({dataElementType:qt.Rectangle,initialize:function(){var t,e=this;Tt.prototype.initialize.apply(e,arguments),(t=e.getMeta()).stack=e.getDataset().stack,t.bar=!0},update:function(t){var e,n,a=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=a.length;e<n;++e)this.updateElement(a[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=a.getDataset(),s=a._resolveElementOptions(t,e);t._xScale=a.getScaleForId(r.xAxisID),t._yScale=a.getScaleForId(r.yAxisID),t._datasetIndex=a.index,t._index=e,t._model={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderSkipped:s.borderSkipped,borderWidth:s.borderWidth,datasetLabel:i.label,label:a.chart.data.labels[e]},a._updateElementGeometry(t,e,n),t.pivot()},_updateElementGeometry:function(t,e,n){var a=this,r=t._model,i=a._getValueScale(),s=i.getBasePixel(),o=i.isHorizontal(),u=a._ruler||a.getRuler(),d=a.calculateBarValuePixels(a.index,e),l=a.calculateBarIndexPixels(a.index,e,u);r.horizontal=o,r.base=n?s:d.base,r.x=o?n?s:d.head:l.center,r.y=o?l.center:n?s:d.head,r.height=o?l.size:void 0,r.width=o?void 0:l.size},_getStacks:function(t){var e,n,a=this.chart,r=this._getIndexScale().options.stacked,i=void 0===t?a.data.datasets.length:t+1,s=[];for(e=0;e<i;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===r||!0===r&&-1===s.indexOf(n.stack)||void 0===r&&(void 0===n.stack||-1===s.indexOf(n.stack)))&&s.push(n.stack);return s},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),a=void 0!==e?n.indexOf(e):-1;return-1===a?n.length-1:a},getRuler:function(){var t,e,n=this._getIndexScale(),a=this.getStackCount(),r=this.index,i=n.isHorizontal(),s=i?n.left:n.top,o=s+(i?n.width:n.height),u=[];for(t=0,e=this.getMeta().data.length;t<e;++t)u.push(n.getPixelForValue(null,t,r));return{min:lt.isNullOrUndef(n.options.barThickness)?function(t,e){var n,a,r,i,s=t.isHorizontal()?t.width:t.height,o=t.getTicks();for(r=1,i=e.length;r<i;++r)s=Math.min(s,Math.abs(e[r]-e[r-1]));for(r=0,i=o.length;r<i;++r)a=t.getPixelForTick(r),s=r>0?Math.min(s,a-n):s,n=a;return s}(n,u):-1,pixels:u,start:s,end:o,stackCount:a,scale:n}},calculateBarValuePixels:function(t,e){var n,a,r,i,s,o,u=this.chart,d=this.getMeta(),l=this._getValueScale(),c=l.isHorizontal(),f=u.data.datasets,h=+l.getRightValue(f[t].data[e]),g=l.options.minBarLength,p=l.options.stacked,b=d.stack,m=0;if(p||void 0===p&&void 0!==b)for(n=0;n<t;++n)(a=u.getDatasetMeta(n)).bar&&a.stack===b&&a.controller._getValueScaleId()===l.id&&u.isDatasetVisible(n)&&(r=+l.getRightValue(f[n].data[e]),(h<0&&r<0||h>=0&&r>0)&&(m+=r));return i=l.getPixelForValue(m),o=(s=l.getPixelForValue(m+h))-i,void 0!==g&&Math.abs(o)<g&&(o=g,s=h>=0&&!c||h<0&&c?i-g:i+g),{size:o,base:i,head:s,center:s+o/2}},calculateBarIndexPixels:function(t,e,n){var a=n.scale.options,r="flex"===a.barThickness?function(t,e,n){var a,r=e.pixels,i=r[t],s=t>0?r[t-1]:null,o=t<r.length-1?r[t+1]:null,u=n.categoryPercentage;return null===s&&(s=i-(null===o?e.end-e.start:o-i)),null===o&&(o=i+i-s),a=i-(i-Math.min(s,o))/2*u,{chunk:Math.abs(o-s)/2*u/e.stackCount,ratio:n.barPercentage,start:a}}(e,n,a):function(t,e,n){var a,r,i=n.barThickness,s=e.stackCount,o=e.pixels[t];return lt.isNullOrUndef(i)?(a=e.min*n.categoryPercentage,r=n.barPercentage):(a=i*s,r=1),{chunk:a/s,ratio:r,start:o-a/2}}(e,n,a),i=this.getStackIndex(t,this.getMeta().stack),s=r.start+r.chunk*i+r.chunk/2,o=Math.min(lt.valueOrDefault(a.maxBarThickness,1/0),r.chunk*r.ratio);return{base:s-o/2,head:s+o/2,center:s,size:o}},draw:function(){var t=this.chart,e=this._getValueScale(),n=this.getMeta().data,a=this.getDataset(),r=n.length,i=0;for(lt.canvas.clipArea(t.ctx,t.chartArea);i<r;++i)isNaN(e.getRightValue(a.data[i]))||n[i].draw();lt.canvas.unclipArea(t.ctx)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.rectangle,d={},l={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderSkipped","borderWidth"];for(n=0,a=c.length;n<a;++n)d[r=c[n]]=Vt([o[r],s[r],u[r]],l,e);return d}}),Bt=lt.valueOrDefault,Yt=lt.options.resolve;ot._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": ("+t.xLabel+", "+t.yLabel+", "+e.datasets[t.datasetIndex].data[t.index].r+")"}}}});var Ht=Tt.extend({dataElementType:qt.Point,update:function(t){var e=this,n=e.getMeta();lt.each(n.data,(function(n,a){e.updateElement(n,a,t)}))},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=t.custom||{},s=a.getScaleForId(r.xAxisID),o=a.getScaleForId(r.yAxisID),u=a._resolveElementOptions(t,e),d=a.getDataset().data[e],l=a.index,c=n?s.getPixelForDecimal(.5):s.getPixelForValue("object"==typeof d?d:NaN,e,l),f=n?o.getBasePixel():o.getPixelForValue(d,e,l);t._xScale=s,t._yScale=o,t._options=u,t._datasetIndex=l,t._index=e,t._model={backgroundColor:u.backgroundColor,borderColor:u.borderColor,borderWidth:u.borderWidth,hitRadius:u.hitRadius,pointStyle:u.pointStyle,rotation:u.rotation,radius:n?0:u.radius,skip:i.skip||isNaN(c)||isNaN(f),x:c,y:f},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options,a=lt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Bt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Bt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Bt(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.point,d=s.data[e],l={},c={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},f=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,a=f.length;n<a;++n)l[r=f[n]]=Yt([o[r],s[r],u[r]],c,e);return l.radius=Yt([o.radius,d?d.r:void 0,s.radius,u.radius],c,e),l}}),Ut=lt.options.resolve,Wt=lt.valueOrDefault;ot._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a],o=s&&s.custom||{},u=t.options.elements.arc;return{text:n,fillStyle:Ut([o.backgroundColor,i.backgroundColor,u.backgroundColor],void 0,a),strokeStyle:Ut([o.borderColor,i.borderColor,u.borderColor],void 0,a),lineWidth:Ut([o.borderWidth,i.borderWidth,u.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i]&&(r.data[i].hidden=!r.data[i].hidden);s.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],a=": "+e.datasets[t.datasetIndex].data[t.index];return lt.isArray(n)?(n=n.slice())[0]+=a:n+=a,n}}}});var Kt=Tt.extend({dataElementType:qt.Arc,linkScales:lt.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e,n,a=this,r=a.chart,i=r.chartArea,s=r.options,o=i.right-i.left,u=i.bottom-i.top,d=Math.min(o,u),l={x:0,y:0},c=a.getMeta(),f=c.data,h=s.cutoutPercentage,g=s.circumference,p=a._getRingWeight(a.index);if(g<2*Math.PI){var b=s.rotation%(2*Math.PI),m=(b+=2*Math.PI*(b>=Math.PI?-1:b<-Math.PI?1:0))+g,y={x:Math.cos(b),y:Math.sin(b)},v={x:Math.cos(m),y:Math.sin(m)},x=b<=0&&m>=0||b<=2*Math.PI&&2*Math.PI<=m,_=b<=.5*Math.PI&&.5*Math.PI<=m||b<=2.5*Math.PI&&2.5*Math.PI<=m,T=b<=-Math.PI&&-Math.PI<=m||b<=Math.PI&&Math.PI<=m,O=b<=.5*-Math.PI&&.5*-Math.PI<=m||b<=1.5*Math.PI&&1.5*Math.PI<=m,w=h/100,S={x:T?-1:Math.min(y.x*(y.x<0?1:w),v.x*(v.x<0?1:w)),y:O?-1:Math.min(y.y*(y.y<0?1:w),v.y*(v.y<0?1:w))},I={x:x?1:Math.max(y.x*(y.x>0?1:w),v.x*(v.x>0?1:w)),y:_?1:Math.max(y.y*(y.y>0?1:w),v.y*(v.y>0?1:w))},N={width:.5*(I.x-S.x),height:.5*(I.y-S.y)};d=Math.min(o/N.width,u/N.height),l={x:-.5*(I.x+S.x),y:-.5*(I.y+S.y)}}for(e=0,n=f.length;e<n;++e)f[e]._options=a._resolveElementOptions(f[e],e);for(r.borderWidth=a.getMaxBorderWidth(),r.outerRadius=Math.max((d-r.borderWidth)/2,0),r.innerRadius=Math.max(h?r.outerRadius/100*h:0,0),r.radiusLength=(r.outerRadius-r.innerRadius)/(a._getVisibleDatasetWeightTotal()||1),r.offsetX=l.x*r.outerRadius,r.offsetY=l.y*r.outerRadius,c.total=a.calculateTotal(),a.outerRadius=r.outerRadius-r.radiusLength*a._getRingWeightOffset(a.index),a.innerRadius=Math.max(a.outerRadius-r.radiusLength*p,0),e=0,n=f.length;e<n;++e)a.updateElement(f[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.chart,i=r.chartArea,s=r.options,o=s.animation,u=(i.left+i.right)/2,d=(i.top+i.bottom)/2,l=s.rotation,c=s.rotation,f=a.getDataset(),h=n&&o.animateRotate?0:t.hidden?0:a.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),g=t._options||{};lt.extend(t,{_datasetIndex:a.index,_index:e,_model:{backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,borderAlign:g.borderAlign,x:u+r.offsetX,y:d+r.offsetY,startAngle:l,endAngle:c,circumference:h,outerRadius:n&&o.animateScale?0:a.outerRadius,innerRadius:n&&o.animateScale?0:a.innerRadius,label:lt.valueAtIndexOrDefault(f.label,e,r.data.labels[e])}});var p=t._model;n&&o.animateRotate||(p.startAngle=0===e?s.rotation:a.getMeta().data[e-1]._model.endAngle,p.endAngle=p.startAngle+p.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),a=0;return lt.each(n.data,(function(n,r){t=e.data[r],isNaN(t)||n.hidden||(a+=Math.abs(t))})),a},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,a,r,i,s,o,u,d=0,l=this.chart;if(!t)for(e=0,n=l.data.datasets.length;e<n;++e)if(l.isDatasetVisible(e)){t=(a=l.getDatasetMeta(e)).data,e!==this.index&&(i=a.controller);break}if(!t)return 0;for(e=0,n=t.length;e<n;++e)r=t[e],"inner"!==(s=i?i._resolveElementOptions(r,e):r._options).borderAlign&&(d=(u=s.hoverBorderWidth)>(d=(o=s.borderWidth)>d?o:d)?u:d);return d},setHoverStyle:function(t){var e=t._model,n=t._options,a=lt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Wt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Wt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Wt(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),o=t.custom||{},u=i.options.elements.arc,d={},l={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)d[r=c[n]]=Ut([o[r],s[r],u[r]],l,e);return d},_getRingWeightOffset:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&(e+=this._getRingWeight(n));return e},_getRingWeight:function(t){return Math.max(Wt(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});ot._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}});var $t=zt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Zt=lt.valueOrDefault,Jt=lt.options.resolve,Qt=lt.canvas._isPointInArea;function Xt(t,e){return Zt(t.showLine,e.showLines)}ot._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var te=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],o=a.getScaleForId(r.yAxisID),u=a.getDataset(),d=Xt(u,a.chart.options);for(d&&(void 0!==u.tension&&void 0===u.lineTension&&(u.lineTension=u.tension),i._scale=o,i._datasetIndex=a.index,i._children=s,i._model=a._resolveLineOptions(i),i.pivot()),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(d&&0!==i._model.tension&&a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a,r,i=this,s=i.getMeta(),o=t.custom||{},u=i.getDataset(),d=i.index,l=u.data[e],c=i.getScaleForId(s.yAxisID),f=i.getScaleForId(s.xAxisID),h=s.dataset._model,g=i._resolvePointOptions(t,e);a=f.getPixelForValue("object"==typeof l?l:NaN,e,d),r=n?c.getBasePixel():i.calculatePointY(l,e,d),t._xScale=f,t._yScale=c,t._options=g,t._datasetIndex=d,t._index=e,t._model={x:a,y:r,skip:o.skip||isNaN(a)||isNaN(r),radius:g.radius,pointStyle:g.pointStyle,rotation:g.rotation,backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,tension:Zt(o.tension,h?h.tension:0),steppedLine:!!h&&h.steppedLine,hitRadius:g.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.point,d={},l={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)d[r=f[n]]=Jt([o[r],s[c[r]],s[r],u[r]],l,e);return d},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},o=r.options,u=o.elements.line,d={},l=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill","cubicInterpolationMode"];for(e=0,n=l.length;e<n;++e)d[a=l[e]]=Jt([s[a],i[a],u[a]]);return d.spanGaps=Zt(i.spanGaps,o.spanGaps),d.tension=Zt(i.lineTension,u.tension),d.steppedLine=Jt([s.steppedLine,i.steppedLine,u.stepped]),d},calculatePointY:function(t,e,n){var a,r,i,s=this.chart,o=this.getMeta(),u=this.getScaleForId(o.yAxisID),d=0,l=0;if(u.options.stacked){for(a=0;a<n;a++)if(r=s.data.datasets[a],"line"===(i=s.getDatasetMeta(a)).type&&i.yAxisID===u.id&&s.isDatasetVisible(a)){var c=Number(u.getRightValue(r.data[e]));c<0?l+=c||0:d+=c||0}var f=Number(u.getRightValue(t));return u.getPixelForValue(f<0?l+f:d+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,a,r=this.chart,i=this.getMeta(),s=i.dataset._model,o=r.chartArea,u=i.data||[];function d(t,e,n){return Math.max(Math.min(t,n),e)}if(s.spanGaps&&(u=u.filter((function(t){return!t._model.skip}))),"monotone"===s.cubicInterpolationMode)lt.splineCurveMonotone(u);else for(t=0,e=u.length;t<e;++t)n=u[t]._model,a=lt.splineCurve(lt.previousItem(u,t)._model,n,lt.nextItem(u,t)._model,s.tension),n.controlPointPreviousX=a.previous.x,n.controlPointPreviousY=a.previous.y,n.controlPointNextX=a.next.x,n.controlPointNextY=a.next.y;if(r.options.elements.line.capBezierPoints)for(t=0,e=u.length;t<e;++t)Qt(n=u[t]._model,o)&&(t>0&&Qt(u[t-1]._model,o)&&(n.controlPointPreviousX=d(n.controlPointPreviousX,o.left,o.right),n.controlPointPreviousY=d(n.controlPointPreviousY,o.top,o.bottom)),t<u.length-1&&Qt(u[t+1]._model,o)&&(n.controlPointNextX=d(n.controlPointNextX,o.left,o.right),n.controlPointNextY=d(n.controlPointNextY,o.top,o.bottom)))},draw:function(){var t,e=this.chart,n=this.getMeta(),a=n.data||[],r=e.chartArea,i=a.length,s=0;for(Xt(this.getDataset(),e.options)&&(lt.canvas.clipArea(e.ctx,{left:r.left,right:r.right,top:r.top-(t=(n.dataset._model.borderWidth||0)/2),bottom:r.bottom+t}),n.dataset.draw(),lt.canvas.unclipArea(e.ctx));s<i;++s)a[s].draw(r)},setHoverStyle:function(t){var e=t._model,n=t._options,a=lt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Zt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Zt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Zt(n.hoverBorderWidth,n.borderWidth),e.radius=Zt(n.hoverRadius,n.radius)}}),ee=lt.options.resolve;ot._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a].custom||{},o=t.options.elements.arc;return{text:n,fillStyle:ee([s.backgroundColor,i.backgroundColor,o.backgroundColor],void 0,a),strokeStyle:ee([s.borderColor,i.borderColor,o.borderColor],void 0,a),lineWidth:ee([s.borderWidth,i.borderWidth,o.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i].hidden=!r.data[i].hidden;s.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var ne=Tt.extend({dataElementType:qt.Arc,linkScales:lt.noop,update:function(t){var e,n,a,r=this,i=r.getDataset(),s=r.getMeta(),o=r.chart.options.startAngle||0,u=r._starts=[],d=r._angles=[],l=s.data;for(r._updateRadius(),s.count=r.countVisibleElements(),e=0,n=i.data.length;e<n;e++)u[e]=o,a=r._computeAngle(e),d[e]=a,o+=a;for(e=0,n=l.length;e<n;++e)l[e]._options=r._resolveElementOptions(l[e],e),r.updateElement(l[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,a=e.options,r=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max(r/2,0),e.innerRadius=Math.max(a.cutoutPercentage?e.outerRadius/100*a.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,n){var a=this,r=a.chart,i=a.getDataset(),s=r.options,o=s.animation,u=r.scale,d=r.data.labels,l=u.xCenter,c=u.yCenter,f=s.startAngle,h=t.hidden?0:u.getDistanceFromCenterForValue(i.data[e]),g=a._starts[e],p=g+(t.hidden?0:a._angles[e]),b=o.animateScale?0:u.getDistanceFromCenterForValue(i.data[e]),m=t._options||{};lt.extend(t,{_datasetIndex:a.index,_index:e,_scale:u,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:l,y:c,innerRadius:0,outerRadius:n?b:h,startAngle:n&&o.animateRotate?f:g,endAngle:n&&o.animateRotate?f:p,label:lt.valueAtIndexOrDefault(d,e,d[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return lt.each(e.data,(function(e,a){isNaN(t.data[a])||e.hidden||n++})),n},setHoverStyle:function(t){var e=t._model,n=t._options,a=lt.getHoverColor,r=lt.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=r(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=r(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=r(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),o=t.custom||{},u=i.options.elements.arc,d={},l={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)d[r=c[n]]=ee([o[r],s[r],u[r]],l,e);return d},_computeAngle:function(t){var e=this,n=this.getMeta().count,a=e.getDataset(),r=e.getMeta();return isNaN(a.data[t])||r.data[t].hidden?0:ee([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:a,datasetIndex:e.index},t)}});ot._set("pie",lt.clone(ot.doughnut)),ot._set("pie",{cutoutPercentage:0});var ae=Kt,re=lt.valueOrDefault,ie=lt.options.resolve;ot._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}});var se=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,linkScales:lt.noop,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],o=a.chart.scale,u=a.getDataset();for(void 0!==u.tension&&void 0===u.lineTension&&(u.lineTension=u.tension),i._scale=o,i._datasetIndex=a.index,i._children=s,i._loop=!0,i._model=a._resolveLineOptions(i),i.pivot(),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a=this,r=t.custom||{},i=a.getDataset(),s=a.chart.scale,o=s.getPointPositionForValue(e,i.data[e]),u=a._resolvePointOptions(t,e),d=a.getMeta().dataset._model,l=n?s.xCenter:o.x,c=n?s.yCenter:o.y;t._scale=s,t._options=u,t._datasetIndex=a.index,t._index=e,t._model={x:l,y:c,skip:r.skip||isNaN(l)||isNaN(c),radius:u.radius,pointStyle:u.pointStyle,rotation:u.rotation,backgroundColor:u.backgroundColor,borderColor:u.borderColor,borderWidth:u.borderWidth,tension:re(r.tension,d?d.tension:0),hitRadius:u.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.point,d={},l={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)d[r=f[n]]=ie([o[r],s[c[r]],s[r],u[r]],l,e);return d},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},o=r.options.elements.line,u={},d=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"];for(e=0,n=d.length;e<n;++e)u[a=d[e]]=ie([s[a],i[a],o[a]]);return u.tension=re(i.lineTension,o.tension),u},updateBezierControlPoints:function(){var t,e,n,a,r=this.getMeta(),i=this.chart.chartArea,s=r.data||[];function o(t,e,n){return Math.max(Math.min(t,n),e)}for(t=0,e=s.length;t<e;++t)n=s[t]._model,a=lt.splineCurve(lt.previousItem(s,t,!0)._model,n,lt.nextItem(s,t,!0)._model,n.tension),n.controlPointPreviousX=o(a.previous.x,i.left,i.right),n.controlPointPreviousY=o(a.previous.y,i.top,i.bottom),n.controlPointNextX=o(a.next.x,i.left,i.right),n.controlPointNextY=o(a.next.y,i.top,i.bottom)},setHoverStyle:function(t){var e=t._model,n=t._options,a=lt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=re(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=re(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=re(n.hoverBorderWidth,n.borderWidth),e.radius=re(n.hoverRadius,n.radius)}});ot._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}});var oe={bar:zt,bubble:Ht,doughnut:Kt,horizontalBar:$t,line:te,polarArea:ne,pie:ae,radar:se,scatter:te};function ue(t,e){return t.native?{x:t.x,y:t.y}:lt.getRelativePosition(t,e)}function de(t,e){var n,a,r,i,s;for(a=0,i=t.data.datasets.length;a<i;++a)if(t.isDatasetVisible(a))for(r=0,s=(n=t.getDatasetMeta(a)).data.length;r<s;++r){var o=n.data[r];o._view.skip||e(o)}}function le(t,e){var n=[];return de(t,(function(t){t.inRange(e.x,e.y)&&n.push(t)})),n}function ce(t,e,n,a){var r=Number.POSITIVE_INFINITY,i=[];return de(t,(function(t){if(!n||t.inRange(e.x,e.y)){var s=t.getCenterPoint(),o=a(e,s);o<r?(i=[t],r=o):o===r&&i.push(t)}})),i}function fe(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,a){var r=e?Math.abs(t.x-a.x):0,i=n?Math.abs(t.y-a.y):0;return Math.sqrt(Math.pow(r,2)+Math.pow(i,2))}}function he(t,e,n){var a=ue(e,t);n.axis=n.axis||"x";var r=fe(n.axis),i=n.intersect?le(t,a):ce(t,a,!1,r),s=[];return i.length?(t.data.datasets.forEach((function(e,n){if(t.isDatasetVisible(n)){var a=t.getDatasetMeta(n).data[i[0]._index];a&&!a._view.skip&&s.push(a)}})),s):[]}var ge={modes:{single:function(t,e){var n=ue(e,t),a=[];return de(t,(function(t){if(t.inRange(n.x,n.y))return a.push(t),a})),a.slice(0,1)},label:he,index:he,dataset:function(t,e,n){var a=ue(e,t);n.axis=n.axis||"xy";var r=fe(n.axis),i=n.intersect?le(t,a):ce(t,a,!1,r);return i.length>0&&(i=t.getDatasetMeta(i[0]._datasetIndex).data),i},"x-axis":function(t,e){return he(t,e,{intersect:!1})},point:function(t,e){return le(t,ue(e,t))},nearest:function(t,e,n){var a=ue(e,t);n.axis=n.axis||"xy";var r=fe(n.axis);return ce(t,a,n.intersect,r)},x:function(t,e,n){var a=ue(e,t),r=[],i=!1;return de(t,(function(t){t.inXRange(a.x)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r},y:function(t,e,n){var a=ue(e,t),r=[],i=!1;return de(t,(function(t){t.inYRange(a.y)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r}}};function pe(t,e){return lt.where(t,(function(t){return t.position===e}))}function be(t,e){t.forEach((function(t,e){return t._tmpIndex_=e,t})),t.sort((function(t,n){var a=e?n:t,r=e?t:n;return a.weight===r.weight?a._tmpIndex_-r._tmpIndex_:a.weight-r.weight})),t.forEach((function(t){delete t._tmpIndex_}))}function me(t,e){lt.each(t,(function(t){e[t.position]+=t.isHorizontal()?t.height:t.width}))}ot._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ye,ve={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var a,r=["fullWidth","position","weight"],i=r.length,s=0;s<i;++s)n.hasOwnProperty(a=r[s])&&(e[a]=n[a])},update:function(t,e,n){if(t){var a=lt.options.toPadding((t.options.layout||{}).padding),r=a.left,i=a.right,s=a.top,o=a.bottom,u=pe(t.boxes,"left"),d=pe(t.boxes,"right"),l=pe(t.boxes,"top"),c=pe(t.boxes,"bottom"),f=pe(t.boxes,"chartArea");be(u,!0),be(d,!1),be(l,!0),be(c,!1);var h,g=u.concat(d),p=l.concat(c),b=g.concat(p),m=e-r-i,y=n-s-o,v=(e-m/2)/g.length,x=m,_=y,T={top:s,left:r,bottom:o,right:i},O=[];lt.each(b,(function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?m:x,y/2),_-=e.height):(e=t.update(v,_),x-=e.width),O.push({horizontal:n,width:e.width,box:t})})),h=function(t){var e=0,n=0,a=0,r=0;return lt.each(t,(function(t){if(t.getPadding){var i=t.getPadding();e=Math.max(e,i.top),n=Math.max(n,i.left),a=Math.max(a,i.bottom),r=Math.max(r,i.right)}})),{top:e,left:n,bottom:a,right:r}}(b),lt.each(g,A),me(g,T),lt.each(p,A),me(p,T),lt.each(g,(function(t){var e=lt.findNextWhere(O,(function(e){return e.box===t}));e&&t.update(e.width,_,{left:0,right:0,top:T.top,bottom:T.bottom})})),me(b,T={top:s,left:r,bottom:o,right:i});var w=Math.max(h.left-T.left,0);T.left+=w,T.right+=Math.max(h.right-T.right,0);var S=Math.max(h.top-T.top,0);T.top+=S,T.bottom+=Math.max(h.bottom-T.bottom,0);var I=n-T.top-T.bottom,N=e-T.left-T.right;N===x&&I===_||(lt.each(g,(function(t){t.height=I})),lt.each(p,(function(t){t.fullWidth||(t.width=N)})),_=I,x=N);var C=r+w,R=s+S;lt.each(u.concat(l),k),C+=x,R+=_,lt.each(d,k),lt.each(c,k),t.chartArea={left:T.left,top:T.top,right:T.left+x,bottom:T.top+_},lt.each(f,(function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(x,_)}))}function A(t){var e=lt.findNextWhere(O,(function(e){return e.box===t}));if(e)if(e.horizontal){var n={left:Math.max(T.left,h.left),right:Math.max(T.right,h.right),top:0,bottom:0};t.update(t.fullWidth?m:x,y/2,n)}else t.update(e.width,_)}function k(t){t.isHorizontal()?(t.left=t.fullWidth?r:T.left,t.right=t.fullWidth?e-i:T.left+x,t.top=R,t.bottom=R+t.height,R=t.bottom):(t.left=C,t.right=C+t.width,t.top=T.top,t.bottom=T.top+_,C=t.right)}}},xe=(ye=Object.freeze({default:"/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"}))&&ye.default||ye,_e=["animationstart","webkitAnimationStart"],Te={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function Oe(t,e){var n=lt.getStyle(t,e),a=n&&n.match(/^(\d+)(\.\d+)?px$/);return a?Number(a[1]):void 0}var we=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(n){}return t}()&&{passive:!0};function Se(t,e,n){t.addEventListener(e,n,we)}function Ie(t,e,n){t.removeEventListener(e,n,we)}function Ne(t,e,n,a,r){return{type:t,chart:e,native:r||null,x:void 0!==n?n:null,y:void 0!==a?a:null}}function Ce(t){var e=document.createElement("div");return e.className=t||"",e}var Re={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(){this._loaded||(this._loaded=!0,this.disableCSSInjection||function(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}(this,xe))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return this._ensureLoaded(),n&&n.canvas===t?(function(t,e){var n=t.style,a=t.getAttribute("height"),r=t.getAttribute("width");if(t.$chartjs={initial:{height:a,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===r||""===r){var i=Oe(t,"width");void 0!==i&&(t.width=i)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=Oe(t,"height");void 0!==i&&(t.height=s)}}(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e.$chartjs){var n=e.$chartjs.initial;["height","width"].forEach((function(t){var a=n[t];lt.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)})),lt.each(n.style||{},(function(t,n){e.style[n]=t})),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var a=t.canvas;if("resize"!==e){var r=n.$chartjs||(n.$chartjs={});Se(a,e,(r.proxies||(r.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=Te[t.type]||t.type,a=lt.getRelativePosition(t,e);return Ne(n,e,a.x,a.y,t)}(e,t))})}else!function(t,e,n){var a,r,i,s,o=t.$chartjs||(t.$chartjs={}),u=o.resizer=function(t){var e=Ce("chartjs-size-monitor"),n=Ce("chartjs-size-monitor-expand"),a=Ce("chartjs-size-monitor-shrink");n.appendChild(Ce()),a.appendChild(Ce()),e.appendChild(n),e.appendChild(a),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,a.scrollLeft=1e6,a.scrollTop=1e6};var r=function(){e._reset(),t()};return Se(n,"scroll",r.bind(n,"expand")),Se(a,"scroll",r.bind(a,"shrink")),e}((a=function(){if(o.resizer){var a=n.options.maintainAspectRatio&&t.parentNode,r=a?a.clientWidth:0;e(Ne("resize",n)),a&&a.clientWidth<r&&n.canvas&&e(Ne("resize",n))}},i=!1,s=[],function(){s=Array.prototype.slice.call(arguments),r=r||this,i||(i=!0,lt.requestAnimFrame.call(window,(function(){i=!1,a.apply(r,s)})))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),a=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};lt.each(_e,(function(e){Se(t,e,a)})),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,(function(){if(o.resizer){var e=t.parentNode;e&&e!==u.parentNode&&e.insertBefore(u,e.firstChild),u._reset()}}))}(a,n,t)},removeEventListener:function(t,e,n){var a,r,i,s=t.canvas;if("resize"!==e){var o=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];o&&Ie(s,e,o)}else i=(r=(a=s).$chartjs||{}).resizer,delete r.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(lt.each(_e,(function(e){Ie(t,e,n)})),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(a),i&&i.parentNode&&i.parentNode.removeChild(i)}};lt.addEvent=Se,lt.removeEvent=Ie;var Ae=lt.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Re._enabled?Re:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}});ot._set("global",{plugins:{}});var ke={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach((function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)})),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var a,r,i,s,o,u=this.descriptors(t),d=u.length;for(a=0;a<d;++a)if("function"==typeof(o=(i=(r=u[a]).plugin)[e])&&((s=[t].concat(n||[])).push(r.options),!1===o.apply(i,s)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],r=t&&t.config||{},i=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach((function(t){if(-1===n.indexOf(t)){var e=t.id,r=i[e];!1!==r&&(!0===r&&(r=lt.clone(ot.global.plugins[e])),n.push(t),a.push({plugin:t,options:r||{}}))}})),e.descriptors=a,e.id=this._cacheId,a},_invalidate:function(t){delete t.$plugins}},Ee={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=lt.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?lt.merge({},[ot.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=lt.extend(this.defaults[t],e))},addScalesToLayout:function(t){lt.each(t.scales,(function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,ve.addBox(t,e)}))}},Le=lt.valueOrDefault;ot._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:lt.noop,title:function(t,e){var n="",a=e.labels,r=a?a.length:0;if(t.length>0){var i=t[0];i.label?n=i.label:i.xLabel?n=i.xLabel:r>0&&i.index<r&&(n=a[i.index])}return n},afterTitle:lt.noop,beforeBody:lt.noop,beforeLabel:lt.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),lt.isNullOrUndef(t.value)?n+=t.yLabel:n+=t.value,n},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:lt.noop,afterBody:lt.noop,beforeFooter:lt.noop,footer:lt.noop,afterFooter:lt.noop}}});var De={average:function(t){if(!t.length)return!1;var e,n,a=0,r=0,i=0;for(e=0,n=t.length;e<n;++e){var s=t[e];if(s&&s.hasValue()){var o=s.tooltipPosition();a+=o.x,r+=o.y,++i}}return{x:a/i,y:r/i}},nearest:function(t,e){var n,a,r,i=e.x,s=e.y,o=Number.POSITIVE_INFINITY;for(n=0,a=t.length;n<a;++n){var u=t[n];if(u&&u.hasValue()){var d=u.getCenterPoint(),l=lt.distanceBetweenPoints(e,d);l<o&&(o=l,r=u)}}if(r){var c=r.tooltipPosition();i=c.x,s=c.y}return{x:i,y:s}}};function Pe(t,e){return e&&(lt.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Me(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function qe(t){var e=ot.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Le(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Le(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Le(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Le(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Le(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Le(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Le(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Le(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Le(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function je(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Fe(t){return Pe([],Me(t))}var Ge=gt.extend({initialize:function(){this._model=qe(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,a=n.beforeTitle.apply(t,arguments),r=n.title.apply(t,arguments),i=n.afterTitle.apply(t,arguments),s=[];return s=Pe(s,Me(a)),s=Pe(s,Me(r)),Pe(s,Me(i))},getBeforeBody:function(){return Fe(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,a=n._options.callbacks,r=[];return lt.each(t,(function(t){var i={before:[],lines:[],after:[]};Pe(i.before,Me(a.beforeLabel.call(n,t,e))),Pe(i.lines,a.label.call(n,t,e)),Pe(i.after,Me(a.afterLabel.call(n,t,e))),r.push(i)})),r},getAfterBody:function(){return Fe(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),r=e.afterFooter.apply(t,arguments),i=[];return i=Pe(i,Me(n)),i=Pe(i,Me(a)),Pe(i,Me(r))},update:function(t){var e,n,a,r,i,s,o,u,d,l,c=this,f=c._options,h=c._model,g=c._model=qe(f),p=c._active,b=c._data,m={xAlign:h.xAlign,yAlign:h.yAlign},y={x:h.x,y:h.y},v={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(p.length){g.opacity=1;var _=[],T=[];x=De[f.position].call(c,p,c._eventPosition);var O=[];for(e=0,n=p.length;e<n;++e)O.push((r=void 0,i=void 0,u=void 0,d=void 0,l=void 0,r=(a=p[e])._xScale,i=a._yScale||a._scale,s=a._index,d=(u=a._chart.getDatasetMeta(o=a._datasetIndex).controller)._getIndexScale(),l=u._getValueScale(),{xLabel:r?r.getLabelForIndex(s,o):"",yLabel:i?i.getLabelForIndex(s,o):"",label:d?""+d.getLabelForIndex(s,o):"",value:l?""+l.getLabelForIndex(s,o):"",index:s,datasetIndex:o,x:a._model.x,y:a._model.y}));f.filter&&(O=O.filter((function(t){return f.filter(t,b)}))),f.itemSort&&(O=O.sort((function(t,e){return f.itemSort(t,e,b)}))),lt.each(O,(function(t){_.push(f.callbacks.labelColor.call(c,t,c._chart)),T.push(f.callbacks.labelTextColor.call(c,t,c._chart))})),g.title=c.getTitle(O,b),g.beforeBody=c.getBeforeBody(O,b),g.body=c.getBody(O,b),g.afterBody=c.getAfterBody(O,b),g.footer=c.getFooter(O,b),g.x=x.x,g.y=x.y,g.caretPadding=f.caretPadding,g.labelColors=_,g.labelTextColors=T,g.dataPoints=O,v=function(t,e){var n=t._chart.ctx,a=2*e.yPadding,r=0,i=e.body,s=i.reduce((function(t,e){return t+e.before.length+e.lines.length+e.after.length}),0),o=e.title.length,u=e.footer.length,d=e.titleFontSize,l=e.bodyFontSize,c=e.footerFontSize;a+=o*d,a+=o?(o-1)*e.titleSpacing:0,a+=o?e.titleMarginBottom:0,a+=(s+=e.beforeBody.length+e.afterBody.length)*l,a+=s?(s-1)*e.bodySpacing:0,a+=u?e.footerMarginTop:0,a+=u*c,a+=u?(u-1)*e.footerSpacing:0;var f=0,h=function(t){r=Math.max(r,n.measureText(t).width+f)};return n.font=lt.fontString(d,e._titleFontStyle,e._titleFontFamily),lt.each(e.title,h),n.font=lt.fontString(l,e._bodyFontStyle,e._bodyFontFamily),lt.each(e.beforeBody.concat(e.afterBody),h),f=e.displayColors?l+2:0,lt.each(i,(function(t){lt.each(t.before,h),lt.each(t.lines,h),lt.each(t.after,h)})),f=0,n.font=lt.fontString(c,e._footerFontStyle,e._footerFontFamily),lt.each(e.footer,h),{width:r+=2*e.xPadding,height:a}}(this,g),y=function(t,e,n,a){var r=t.x,i=t.y,s=t.caretPadding,o=n.xAlign,u=n.yAlign,d=t.caretSize+s,l=t.cornerRadius+s;return"right"===o?r-=e.width:"center"===o&&((r-=e.width/2)+e.width>a.width&&(r=a.width-e.width),r<0&&(r=0)),"top"===u?i+=d:i-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===o?r+=d:"right"===o&&(r-=d):"left"===o?r-=l:"right"===o&&(r+=l),{x:r,y:i}}(g,v,m=function(t,e){var n,a,r,i,s,o=t._model,u=t._chart,d=t._chart.chartArea,l="center",c="center";o.y<e.height?c="top":o.y>u.height-e.height&&(c="bottom");var f=(d.left+d.right)/2,h=(d.top+d.bottom)/2;"center"===c?(n=function(t){return t<=f},a=function(t){return t>f}):(n=function(t){return t<=e.width/2},a=function(t){return t>=u.width-e.width/2}),r=function(t){return t+e.width+o.caretSize+o.caretPadding>u.width},i=function(t){return t-e.width-o.caretSize-o.caretPadding<0},s=function(t){return t<=h?"top":"bottom"},n(o.x)?(l="left",r(o.x)&&(l="center",c=s(o.y))):a(o.x)&&(l="right",i(o.x)&&(l="center",c=s(o.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:l,yAlign:g.yAlign?g.yAlign:c}}(this,v),c._chart)}else g.opacity=0;return g.xAlign=m.xAlign,g.yAlign=m.yAlign,g.x=y.x,g.y=y.y,g.width=v.width,g.height=v.height,g.caretX=x.x,g.caretY=x.y,c._model=g,t&&f.custom&&f.custom.call(c,g),c},drawCaret:function(t,e){var n=this._chart.ctx,a=this.getCaretPosition(t,e,this._view);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var a,r,i,s,o,u,d=n.caretSize,l=n.cornerRadius,c=n.xAlign,f=n.yAlign,h=t.x,g=t.y,p=e.width,b=e.height;if("center"===f)o=g+b/2,"left"===c?(r=(a=h)-d,i=a,s=o+d,u=o-d):(r=(a=h+p)+d,i=a,s=o-d,u=o+d);else if("left"===c?(a=(r=h+l+d)-d,i=r+d):"right"===c?(a=(r=h+p-l-d)-d,i=r+d):(a=(r=n.caretX)-d,i=r+d),"top"===f)o=(s=g)-d,u=s;else{o=(s=g+b)+d,u=s;var m=i;i=a,a=m}return{x1:a,x2:r,x3:i,y1:s,y2:o,y3:u}},drawTitle:function(t,e,n){var a=e.title;if(a.length){t.x=je(e,e._titleAlign),n.textAlign=e._titleAlign,n.textBaseline="top";var r,i,s=e.titleFontSize,o=e.titleSpacing;for(n.fillStyle=e.titleFontColor,n.font=lt.fontString(s,e._titleFontStyle,e._titleFontFamily),r=0,i=a.length;r<i;++r)n.fillText(a[r],t.x,t.y),t.y+=s+o,r+1===a.length&&(t.y+=e.titleMarginBottom-o)}},drawBody:function(t,e,n){var a,r=e.bodyFontSize,i=e.bodySpacing,s=e._bodyAlign,o=e.body,u=e.displayColors,d=e.labelColors,l=0,c=u?je(e,"left"):0;n.textAlign=s,n.textBaseline="top",n.font=lt.fontString(r,e._bodyFontStyle,e._bodyFontFamily),t.x=je(e,s);var f=function(e){n.fillText(e,t.x+l,t.y),t.y+=r+i};n.fillStyle=e.bodyFontColor,lt.each(e.beforeBody,f),l=u&&"right"!==s?"center"===s?r/2+1:r+2:0,lt.each(o,(function(i,s){n.fillStyle=a=e.labelTextColors[s],lt.each(i.before,f),lt.each(i.lines,(function(i){u&&(n.fillStyle=e.legendColorBackground,n.fillRect(c,t.y,r,r),n.lineWidth=1,n.strokeStyle=d[s].borderColor,n.strokeRect(c,t.y,r,r),n.fillStyle=d[s].backgroundColor,n.fillRect(c+1,t.y+1,r-2,r-2),n.fillStyle=a),f(i)})),lt.each(i.after,f)})),l=0,lt.each(e.afterBody,f),t.y-=i},drawFooter:function(t,e,n){var a=e.footer;a.length&&(t.x=je(e,e._footerAlign),t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=e.footerFontColor,n.font=lt.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),lt.each(a,(function(a){n.fillText(a,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing})))},drawBackground:function(t,e,n,a){n.fillStyle=e.backgroundColor,n.strokeStyle=e.borderColor,n.lineWidth=e.borderWidth;var r=e.xAlign,i=e.yAlign,s=t.x,o=t.y,u=a.width,d=a.height,l=e.cornerRadius;n.beginPath(),n.moveTo(s+l,o),"top"===i&&this.drawCaret(t,a),n.lineTo(s+u-l,o),n.quadraticCurveTo(s+u,o,s+u,o+l),"center"===i&&"right"===r&&this.drawCaret(t,a),n.lineTo(s+u,o+d-l),n.quadraticCurveTo(s+u,o+d,s+u-l,o+d),"bottom"===i&&this.drawCaret(t,a),n.lineTo(s+l,o+d),n.quadraticCurveTo(s,o+d,s,o+d-l),"center"===i&&"left"===r&&this.drawCaret(t,a),n.lineTo(s,o+l),n.quadraticCurveTo(s,o,s+l,o),n.closePath(),n.fill(),e.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},a={x:e.x,y:e.y},r=Math.abs(e.opacity<.001)?0:e.opacity;this._options.enabled&&(e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length)&&(t.save(),t.globalAlpha=r,this.drawBackground(a,e,t,n),a.y+=e.yPadding,this.drawTitle(a,e,t),this.drawBody(a,e,t),this.drawFooter(a,e,t),t.restore())}},handleEvent:function(t){var e,n=this,a=n._options;return n._lastActive=n._lastActive||[],n._active="mouseout"===t.type?[]:n._chart.getElementsAtEventForMode(t,a.mode,a),(e=!lt.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(a.enabled||a.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}});Ge.positioners=De;var Ve=lt.valueOrDefault;function ze(){return lt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){if("xAxes"===t||"yAxes"===t){var r,i,s,o=n[t].length;for(e[t]||(e[t]=[]),r=0;r<o;++r)i=Ve((s=n[t][r]).type,"xAxes"===t?"category":"linear"),r>=e[t].length&&e[t].push({}),lt.merge(e[t][r],!e[t][r].type||s.type&&s.type!==e[t][r].type?[Ee.getScaleDefaults(i),s]:s)}else lt._merger(t,e,n,a)}})}function Be(){return lt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){var r=e[t]||{},i=n[t];"scales"===t?e[t]=ze(r,i):"scale"===t?e[t]=lt.merge(r,[Ee.getScaleDefaults(i.type),i]):lt._merger(t,e,n,a)}})}function Ye(t){var e=t.options;lt.each(t.scales,(function(e){ve.removeBox(t,e)})),e=Be(ot.global,ot[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function He(t){return"top"===t||"bottom"===t}ot._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Ue=function(t,e){return this.construct(t,e),this};lt.extend(Ue.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Be(ot.global,ot[t.type],t.options||{}),t}(e);var a=Ae.acquireContext(t,e),r=a&&a.canvas,i=r&&r.height,s=r&&r.width;n.id=lt.uid(),n.ctx=a,n.canvas=r,n.config=e,n.width=s,n.height=i,n.aspectRatio=i?s/i:null,n.options=e.options,n._bufferedRender=!1,n.chart=n,n.controller=n,Ue.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),a&&r?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return ke.notify(t,"beforeInit"),lt.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),ke.notify(t,"afterInit"),t},clear:function(){return lt.canvas.clear(this),this},stop:function(){return mt.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,a=e.canvas,r=n.maintainAspectRatio&&e.aspectRatio||null,i=Math.max(0,Math.floor(lt.getMaximumWidth(a))),s=Math.max(0,Math.floor(r?i/r:lt.getMaximumHeight(a)));if((e.width!==i||e.height!==s)&&(a.width=e.width=i,a.height=e.height=s,a.style.width=i+"px",a.style.height=s+"px",lt.retinaScale(e,n.devicePixelRatio),!t)){var o={width:i,height:s};ke.notify(e,"resize",[o]),n.onResize&&n.onResize(e,o),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;lt.each(e.xAxes,(function(t,e){t.id=t.id||"x-axis-"+e})),lt.each(e.yAxes,(function(t,e){t.id=t.id||"y-axis-"+e})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},a=[],r=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(a=a.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&a.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),lt.each(a,(function(e){var a=e.options,i=a.id,s=Ve(a.type,e.dtype);He(a.position)!==He(e.dposition)&&(a.position=e.dposition),r[i]=!0;var o=null;if(i in n&&n[i].type===s)(o=n[i]).options=a,o.ctx=t.ctx,o.chart=t;else{var u=Ee.getScaleConstructor(s);if(!u)return;o=new u({id:i,type:s,options:a,ctx:t.ctx,chart:t}),n[o.id]=o}o.mergeTicksOptions(),e.isDefault&&(t.scale=o)})),lt.each(r,(function(t,e){t||delete n[e]})),t.scales=n,Ee.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return lt.each(t.data.datasets,(function(n,a){var r=t.getDatasetMeta(a),i=n.type||t.config.type;if(r.type&&r.type!==i&&(t.destroyDatasetMeta(a),r=t.getDatasetMeta(a)),r.type=i,r.controller)r.controller.updateIndex(a),r.controller.linkScales();else{var s=oe[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(t,a),e.push(r.controller)}}),t),e},resetElements:function(){var t=this;lt.each(t.data.datasets,(function(e,n){t.getDatasetMeta(n).controller.reset()}),t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),Ye(e),ke._invalidate(e),!1!==ke.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var n=e.buildOrUpdateControllers();lt.each(e.data.datasets,(function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()}),e),e.updateLayout(),e.options.animation&&e.options.animation.duration&&lt.each(n,(function(t){t.reset()})),e.updateDatasets(),e.tooltip.initialize(),e.lastActive=[],ke.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){!1!==ke.notify(this,"beforeLayout")&&(ve.update(this,this.width,this.height),ke.notify(this,"afterScaleUpdate"),ke.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==ke.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);ke.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==ke.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),ke.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=e.options.animation,a=Ve(t.duration,n&&n.duration),r=t.lazy;if(!1!==ke.notify(e,"beforeRender")){var i=function(t){ke.notify(e,"afterRender"),lt.callback(n&&n.onComplete,[t],e)};if(n&&a){var s=new bt({numSteps:a/16.66,easing:t.easing||n.easing,render:function(t,e){var n=e.currentStep,a=n/e.numSteps;t.draw((0,lt.easing.effects[e.easing])(a),a,n)},onAnimationProgress:n.onProgress,onAnimationComplete:i});mt.addAnimation(e,s,a,r)}else e.draw(),i(new bt({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),lt.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==ke.notify(e,"beforeDraw",[t])&&(lt.each(e.boxes,(function(t){t.draw(e.chartArea)}),e),e.drawDatasets(t),e._drawTooltip(t),ke.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,n=(this.data.datasets||[]).length;e<n;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==ke.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);ke.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),a={meta:n,index:t,easingValue:e};!1!==ke.notify(this,"beforeDatasetDraw",[a])&&(n.controller.draw(e),ke.notify(this,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==ke.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),ke.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ge.modes.single(this,t)},getElementsAtEvent:function(t){return ge.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ge.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var a=ge.modes[e];return"function"==typeof a?a(this,t,n):[]},getDatasetAtEvent:function(t){return ge.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],a=n._meta&&n._meta[e];a&&(a.controller.destroy(),delete n._meta[e])},destroy:function(){var t,e,n=this,a=n.canvas;for(n.stop(),t=0,e=n.data.datasets.length;t<e;++t)n.destroyDatasetMeta(t);a&&(n.unbindEvents(),lt.canvas.clear(n),Ae.releaseContext(n.ctx),n.canvas=null,n.ctx=null),ke.notify(n,"destroy"),delete Ue.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Ge({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};lt.each(t.options.events,(function(a){Ae.addEventListener(t,a,n),e[a]=n})),t.options.responsive&&(n=function(){t.resize()},Ae.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,lt.each(e,(function(e,n){Ae.removeEventListener(t,n,e)})))},updateHoverStyle:function(t,e,n){var a,r,i,s=n?"setHoverStyle":"removeHoverStyle";for(r=0,i=t.length;r<i;++r)(a=t[r])&&this.getDatasetMeta(a._datasetIndex).controller[s](a)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==ke.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var a=e.handleEvent(t);n&&(a=n._start?n.handleEvent(t):a|n.handleEvent(t)),ke.notify(e,"afterEvent",[t]);var r=e._bufferedRequest;return r?e.render(r):a&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,n=this,a=n.options||{},r=a.hover;return n.lastActive=n.lastActive||[],n.active="mouseout"===t.type?[]:n.getElementsAtEventForMode(t,r.mode,r),lt.callback(a.onHover||a.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||a.onClick&&a.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,r.mode,!1),n.active.length&&r.mode&&n.updateHoverStyle(n.active,r.mode,!0),e=!lt.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),Ue.instances={};var We=Ue;function Ke(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function $e(t){this.options=t||{}}Ue.Controller=Ue,Ue.types={},lt.configMerge=Be,lt.scaleMerge=ze,lt.extend($e.prototype,{formats:Ke,parse:Ke,format:Ke,add:Ke,diff:Ke,startOf:Ke,endOf:Ke,_create:function(t){return t}}),$e.override=function(t){lt.extend($e.prototype,t)};var Ze={_date:$e},Je={formatters:{values:function(t){return lt.isArray(t)?t:""+t},linear:function(t,e,n){var a=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=lt.log10(Math.abs(a)),i="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=lt.log10(Math.abs(t));i=t.toExponential(Math.floor(s)-Math.floor(r))}else{var o=-1*Math.floor(r);o=Math.max(Math.min(o,20),0),i=t.toFixed(o)}else i="0";return i},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(lt.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}},Qe=lt.valueOrDefault,Xe=lt.valueAtIndexOrDefault;function tn(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(t[e].label);return a}function en(t,e,n){return lt.isArray(e)?lt.longestText(t,n,e):t.measureText(e).width}ot._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:Je.formatters.values,minor:{},major:{}}});var nn=gt.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){lt.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a,r,i,s,o,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=lt.extend({left:0,right:0,top:0,bottom:0},n),d._maxLabelLines=0,d.longestLabelWidth=0,d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),o=d.buildTicks()||[],o=d.afterBuildTicks(o)||o,d.beforeTickToLabelConversion(),i=d.convertTicksToLabels(o)||d.ticks,d.afterTickToLabelConversion(),d.ticks=i,a=0,r=i.length;a<r;++a)s=i[a],(u=o[a])?u.label=s:o.push(u={label:s,major:!1});return d._ticks=o,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){lt.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){lt.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){lt.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){lt.callback(this.options.beforeDataLimits,[this])},determineDataLimits:lt.noop,afterDataLimits:function(){lt.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){lt.callback(this.options.beforeBuildTicks,[this])},buildTicks:lt.noop,afterBuildTicks:function(t){var e=this;return lt.isArray(t)&&t.length?lt.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=lt.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){lt.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){lt.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){lt.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=tn(t._ticks),r=lt.options._parseFont(n);e.font=r.string;var i=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var s,o=lt.longestText(e,r.string,a,t.longestTextCache),u=o,d=t.getPixelForTick(1)-t.getPixelForTick(0)-6;u>d&&i<n.maxRotation;){var l=lt.toRadians(i);if(s=Math.cos(l),Math.sin(l)*o>t.maxHeight){i--;break}i++,u=s*o}t.labelRotation=i},afterCalculateTickRotation:function(){lt.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){lt.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=tn(t._ticks),a=t.options,r=a.ticks,i=a.scaleLabel,s=a.gridLines,o=t._isVisible(),u=a.position,d=t.isHorizontal(),l=lt.options._parseFont,c=l(r),f=a.gridLines.tickMarkLength;if(e.width=d?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:o&&s.drawTicks?f:0,e.height=d?o&&s.drawTicks?f:0:t.maxHeight,i.display&&o){var h=l(i),g=lt.options.toPadding(i.padding),p=h.lineHeight+g.height;d?e.height+=p:e.width+=p}if(r.display&&o){var b=lt.longestText(t.ctx,c.string,n,t.longestTextCache),m=lt.numberOfLabelLines(n),y=.5*c.size,v=t.options.ticks.padding;if(t._maxLabelLines=m,t.longestLabelWidth=b,d){var x=lt.toRadians(t.labelRotation),_=Math.cos(x),T=Math.sin(x);e.height=Math.min(t.maxHeight,e.height+(T*b+c.lineHeight*m+y)+v),t.ctx.font=c.string;var O,w,S=en(t.ctx,n[0],c.string),I=en(t.ctx,n[n.length-1],c.string),N=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(n.length-1);0!==t.labelRotation?(O="bottom"===u?_*S:_*y,w="bottom"===u?_*y:_*I):(O=S/2,w=I/2),t.paddingLeft=Math.max(O-N,0)+3,t.paddingRight=Math.max(w-C,0)+3}else r.mirror?b=0:b+=v+y,e.width=Math.min(t.maxWidth,e.width+b),t.paddingTop=c.size/2,t.paddingBottom=c.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){lt.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(lt.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:lt.noop,getPixelForValue:lt.noop,getValueForPixel:lt.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var a=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),r=a*t+e.paddingLeft;return n&&(r+=a/2),e.left+r+(e.isFullWidth()?e.margins.left:0)}return e.top+t*((e.height-(e.paddingTop+e.paddingBottom))/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;return e.isHorizontal()?e.left+((e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft)+(e.isFullWidth()?e.margins.left:0):e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,a=this,r=a.isHorizontal(),i=t.length,s=!1,o=a.options.ticks.minor.maxTicksLimit,u=a._tickSize()*(i-1),d=r?a.width-(a.paddingLeft+a.paddingRight):a.height-(a.paddingTop+a.PaddingBottom),l=[];for(u>d&&(s=1+Math.floor(u/d)),i>o&&(s=Math.max(s,1+Math.floor(i/o))),e=0;e<i;e++)n=t[e],s>1&&e%s>0&&delete n.label,l.push(n);return l},_tickSize:function(){var t=this,e=t.isHorizontal(),n=t.options.ticks.minor,a=lt.toRadians(t.labelRotation),r=Math.abs(Math.cos(a)),i=Math.abs(Math.sin(a)),s=n.autoSkipPadding||0,o=t.longestLabelWidth+s||0,u=lt.options._parseFont(n),d=t._maxLabelLines*u.lineHeight+s||0;return e?d*r>o*i?o/r:d/i:d*i<o*r?d/r:o/i},_isVisible:function(){var t,e,n,a=this.chart,r=this.options.display;if("auto"!==r)return!!r;for(t=0,e=a.data.datasets.length;t<e;++t)if(a.isDatasetVisible(t)&&((n=a.getDatasetMeta(t)).xAxisID===this.id||n.yAxisID===this.id))return!0;return!1},draw:function(t){var e=this,n=e.options;if(e._isVisible()){var a,r,i,s=e.chart,o=e.ctx,u=ot.global.defaultFontColor,d=n.ticks.minor,l=n.ticks.major||d,c=n.gridLines,f=n.scaleLabel,h=n.position,g=0!==e.labelRotation,p=d.mirror,b=e.isHorizontal(),m=lt.options._parseFont,y=d.display&&d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=Qe(d.fontColor,u),x=m(d),_=x.lineHeight,T=Qe(l.fontColor,u),O=m(l),w=d.padding,S=d.labelOffset,I=c.drawTicks?c.tickMarkLength:0,N=Qe(f.fontColor,u),C=m(f),R=lt.options.toPadding(f.padding),A=lt.toRadians(e.labelRotation),k=[],E=c.drawBorder?Xe(c.lineWidth,0,0):0,L=lt._alignPixel;if("top"===h?(a=L(s,e.bottom,E),r=e.bottom-I,i=a-E/2):"bottom"===h?(a=L(s,e.top,E),r=a+E/2,i=e.top+I):"left"===h?(a=L(s,e.right,E),r=e.right-I,i=a-E/2):(a=L(s,e.left,E),r=a+E/2,i=e.left+I),lt.each(y,(function(a,o){if(!lt.isNullOrUndef(a.label)){var u,d,l,f,m,y,v,x,T,O,N,C,R,D,P,M,q=a.label;o===e.zeroLineIndex&&n.offset===c.offsetGridLines?(u=c.zeroLineWidth,d=c.zeroLineColor,l=c.zeroLineBorderDash||[],f=c.zeroLineBorderDashOffset||0):(u=Xe(c.lineWidth,o),d=Xe(c.color,o),l=c.borderDash||[],f=c.borderDashOffset||0);var j=lt.isArray(q)?q.length:1,F=function(t,e,n){var a=t.getPixelForTick(e);return n&&(1===t.getTicks().length?a-=t.isHorizontal()?Math.max(a-t.left,t.right-a):Math.max(a-t.top,t.bottom-a):a-=0===e?(t.getPixelForTick(1)-a)/2:(a-t.getPixelForTick(e-1))/2),a}(e,o,c.offsetGridLines);if(b){var G=I+w;F<e.left-1e-7&&(d="rgba(0,0,0,0)"),m=v=T=N=L(s,F,u),y=r,x=i,R=e.getPixelForTick(o)+S,"top"===h?(O=L(s,t.top,E)+E/2,C=t.bottom,P=((g?1:.5)-j)*_,M=g?"left":"center",D=e.bottom-G):(O=t.top,C=L(s,t.bottom,E)-E/2,P=(g?0:.5)*_,M=g?"right":"center",D=e.top+G)}else{var V=(p?0:I)+w;F<e.top-1e-7&&(d="rgba(0,0,0,0)"),m=r,v=i,y=x=O=C=L(s,F,u),D=e.getPixelForTick(o)+S,P=(1-j)*_/2,"left"===h?(T=L(s,t.left,E)+E/2,N=t.right,M=p?"left":"right",R=e.right-V):(T=t.left,N=L(s,t.right,E)-E/2,M=p?"right":"left",R=e.left+V)}k.push({tx1:m,ty1:y,tx2:v,ty2:x,x1:T,y1:O,x2:N,y2:C,labelX:R,labelY:D,glWidth:u,glColor:d,glBorderDash:l,glBorderDashOffset:f,rotation:-1*A,label:q,major:a.major,textOffset:P,textAlign:M})}})),lt.each(k,(function(t){var e=t.glWidth,n=t.glColor;if(c.display&&e&&n&&(o.save(),o.lineWidth=e,o.strokeStyle=n,o.setLineDash&&(o.setLineDash(t.glBorderDash),o.lineDashOffset=t.glBorderDashOffset),o.beginPath(),c.drawTicks&&(o.moveTo(t.tx1,t.ty1),o.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(o.moveTo(t.x1,t.y1),o.lineTo(t.x2,t.y2)),o.stroke(),o.restore()),d.display){o.save(),o.translate(t.labelX,t.labelY),o.rotate(t.rotation),o.font=t.major?O.string:x.string,o.fillStyle=t.major?T:v,o.textBaseline="middle",o.textAlign=t.textAlign;var a=t.label,r=t.textOffset;if(lt.isArray(a))for(var i=0;i<a.length;++i)o.fillText(""+a[i],0,r),r+=_;else o.fillText(a,0,r);o.restore()}})),f.display){var D,P,M=0,q=C.lineHeight/2;if(b)D=e.left+(e.right-e.left)/2,P="bottom"===h?e.bottom-q-R.bottom:e.top+q+R.top;else{var j="left"===h;D=j?e.left+q+R.top:e.right-q-R.top,P=e.top+(e.bottom-e.top)/2,M=j?-.5*Math.PI:.5*Math.PI}o.save(),o.translate(D,P),o.rotate(M),o.textAlign="center",o.textBaseline="middle",o.fillStyle=N,o.font=C.string,o.fillText(f.labelString,0,0),o.restore()}if(E){var F,G,V,z,B=E,Y=Xe(c.lineWidth,y.length-1,0);b?(F=L(s,e.left,B)-B/2,G=L(s,e.right,Y)+Y/2,V=z=a):(V=L(s,e.top,B)-B/2,z=L(s,e.bottom,Y)+Y/2,F=G=a),o.lineWidth=E,o.strokeStyle=Xe(c.color,0),o.beginPath(),o.moveTo(F,V),o.lineTo(G,z),o.stroke()}}}}),an=nn.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,n=e.getLabels();e.minIndex=0,e.maxIndex=n.length-1,void 0!==e.options.ticks.min&&(t=n.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=n.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=n[e.minIndex],e.max=n[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,a=n.chart;return a.getDatasetMeta(e).controller._getValueScaleId()===n.id?n.getRightValue(a.data.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,a=this,r=a.options.offset,i=Math.max(a.maxIndex+1-a.minIndex-(r?0:1),1);if(null!=t&&(n=a.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var s=a.getLabels().indexOf(t=n||t);e=-1!==s?s:e}if(a.isHorizontal()){var o=a.width/i,u=o*(e-a.minIndex);return r&&(u+=o/2),a.left+u}var d=a.height/i,l=d*(e-a.minIndex);return r&&(l+=d/2),a.top+l},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,a=Math.max(e._ticks.length-(n?0:1),1),r=e.isHorizontal(),i=(r?e.width:e.height)/a;return t-=r?e.left:e.top,n&&(t-=i/2),(t<=0?0:Math.round(t/i))+e.minIndex},getBasePixel:function(){return this.bottom}});an._defaults={position:"bottom"};var rn=lt.isNullOrUndef,sn=nn.extend({getRightValue:function(t){return"string"==typeof t?+t:nn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=lt.sign(t.min),a=lt.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,i=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(t.min=null===t.min?e.suggestedMin:Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(t.max=null===t.max?e.suggestedMax:Math.max(t.max,e.suggestedMax)),r!==i&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,a=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),a=a||11),a&&(t=Math.min(a,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:lt.noop,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),a={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:lt.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var n,a,r,i,s=[],o=t.stepSize,u=o||1,d=t.maxTicks-1,l=t.min,c=t.max,f=t.precision,h=e.min,g=e.max,p=lt.niceNum((g-h)/d/u)*u;if(p<1e-14&&rn(l)&&rn(c))return[h,g];(i=Math.ceil(g/p)-Math.floor(h/p))>d&&(p=lt.niceNum(i*p/d/u)*u),o||rn(f)?n=Math.pow(10,lt._decimalPlaces(p)):(n=Math.pow(10,f),p=Math.ceil(p*n)/n),a=Math.floor(h/p)*p,r=Math.ceil(g/p)*p,o&&(!rn(l)&&lt.almostWhole(l/p,p/1e3)&&(a=l),!rn(c)&&lt.almostWhole(c/p,p/1e3)&&(r=c)),i=lt.almostEquals(i=(r-a)/p,Math.round(i),p/1e3)?Math.round(i):Math.ceil(i),a=Math.round(a*n)/n,r=Math.round(r*n)/n,s.push(rn(l)?a:l);for(var b=1;b<i;++b)s.push(Math.round((a+b*p)*n)/n);return s.push(rn(c)?r:c),s}(a,t);t.handleDirectionalChanges(),t.max=lt.max(r),t.min=lt.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),nn.prototype.convertTicksToLabels.call(t)}}),on={position:"left",ticks:{callback:Je.formatters.linear}},un=sn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&lt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var o={};lt.each(a,(function(a,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");void 0===o[u]&&(o[u]={positiveValues:[],negativeValues:[]});var d=o[u].positiveValues,l=o[u].negativeValues;n.isDatasetVisible(r)&&i(s)&&lt.each(a.data,(function(n,a){var r=+t.getRightValue(n);isNaN(r)||s.data[a].hidden||(d[a]=d[a]||0,l[a]=l[a]||0,e.relativePoints?d[a]=100:r<0?l[a]+=r:d[a]+=r)}))})),lt.each(o,(function(e){var n=e.positiveValues.concat(e.negativeValues),a=lt.min(n),r=lt.max(n);t.min=null===t.min?a:Math.min(t.min,a),t.max=null===t.max?r:Math.max(t.max,r)}))}else lt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&lt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a:a>t.max&&(t.max=a))}))}));t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=lt.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,n=e.start,a=+e.getRightValue(t),r=e.end-n;return e.isHorizontal()?e.left+e.width/r*(a-n):e.bottom-e.height/r*(a-n)},getValueForPixel:function(t){var e=this,n=e.isHorizontal();return e.start+(n?t-e.left:e.bottom-t)/(n?e.width:e.height)*(e.end-e.start)},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});un._defaults=on;var dn=lt.valueOrDefault,ln={position:"left",ticks:{callback:Je.formatters.logarithmic}};function cn(t,e){return lt.isFinite(t)&&t>=0?t:e}var fn=nn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var s=e.stacked;if(void 0===s&&lt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var o={};lt.each(a,(function(a,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");n.isDatasetVisible(r)&&i(s)&&(void 0===o[u]&&(o[u]=[]),lt.each(a.data,(function(e,n){var a=o[u],r=+t.getRightValue(e);isNaN(r)||s.data[n].hidden||r<0||(a[n]=a[n]||0,a[n]+=r)})))})),lt.each(o,(function(e){if(e.length>0){var n=lt.min(e),a=lt.max(e);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?a:Math.max(t.max,a)}}))}else lt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&lt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||a<0||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a:a>t.max&&(t.max=a),0!==a&&(null===t.minNotZero||a<t.minNotZero)&&(t.minNotZero=a))}))}));this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=cn(e.min,t.min),t.max=cn(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(lt.log10(t.min))-1),t.max=Math.pow(10,Math.floor(lt.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(lt.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(lt.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(lt.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),a={min:cn(e.min),max:cn(e.max)},r=t.ticks=function(t,e){var n,a,r=[],i=dn(t.min,Math.pow(10,Math.floor(lt.log10(e.min)))),s=Math.floor(lt.log10(e.max)),o=Math.ceil(e.max/Math.pow(10,s));0===i?(n=Math.floor(lt.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),r.push(i),i=a*Math.pow(10,n)):(n=Math.floor(lt.log10(i)),a=Math.floor(i/Math.pow(10,n)));var u=n<0?Math.pow(10,Math.abs(n)):1;do{r.push(i),10==++a&&(a=1,u=++n>=0?1:u),i=Math.round(a*Math.pow(10,n)*u)/u}while(n<s||n===s&&a<o);var d=dn(t.max,i);return r.push(d),r}(a,t);t.max=lt.max(r),t.min=lt.min(r),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&r.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),nn.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(lt.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,n,a,r,i,s=this,o=s.options.ticks,u=o.reverse,d=lt.log10,l=s._getFirstTickValue(s.minNotZero),c=0;return t=+s.getRightValue(t),u?(a=s.end,r=s.start,i=-1):(a=s.start,r=s.end,i=1),s.isHorizontal()?(e=s.width,n=u?s.right:s.left):(e=s.height,i*=-1,n=u?s.top:s.bottom),t!==a&&(0===a&&(e-=c=dn(o.fontSize,ot.global.defaultFontSize),a=l),0!==t&&(c+=e/(d(r)-d(a))*(d(t)-d(a))),n+=i*c),n},getValueForPixel:function(t){var e,n,a,r,i=this,s=i.options.ticks,o=s.reverse,u=lt.log10,d=i._getFirstTickValue(i.minNotZero);if(o?(n=i.end,a=i.start):(n=i.start,a=i.end),i.isHorizontal()?(e=i.width,r=o?i.right-t:t-i.left):(e=i.height,r=o?t-i.top:i.bottom-t),r!==n){if(0===n){var l=dn(s.fontSize,ot.global.defaultFontSize);r-=l,e-=l,n=d}r*=u(a)-u(n),r/=e,r=Math.pow(10,u(n)+r)}return r}});fn._defaults=ln;var hn=lt.valueOrDefault,gn=lt.valueAtIndexOrDefault,pn=lt.options.resolve,bn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:Je.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function mn(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function yn(t){var e=t.ticks;return e.display&&t.display?hn(e.fontSize,ot.global.defaultFontSize)+2*e.backdropPaddingY:0}function vn(t,e,n,a,r){return t===a||t===r?{start:e-n/2,end:e+n/2}:t<a||t>r?{start:e-n,end:e}:{start:e,end:e+n}}function xn(t){return 0===t||180===t?"center":t<180?"left":"right"}function _n(t,e,n,a){var r,i,s=n.y+a/2;if(lt.isArray(e))for(r=0,i=e.length;r<i;++r)t.fillText(e[r],n.x,s),s+=a;else t.fillText(e,n.x,s)}function Tn(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function On(t){return lt.isNumber(t)?t:0}var wn=sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=yn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;lt.each(e.data.datasets,(function(r,i){if(e.isDatasetVisible(i)){var s=e.getDatasetMeta(i);lt.each(r.data,(function(e,r){var i=+t.getRightValue(e);isNaN(i)||s.data[r].hidden||(n=Math.min(i,n),a=Math.max(i,a))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=a===Number.NEGATIVE_INFINITY?0:a,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/yn(this.options))},convertTicksToLabels:function(){var t=this;sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,a,r=lt.options._parseFont(t.options.pointLabels),i={l:0,r:t.width,t:0,b:t.height-t.paddingTop},s={};t.ctx.font=r.string,t._pointLabelSizes=[];var o,u,d,l=mn(t);for(e=0;e<l;e++){a=t.getPointPosition(e,t.drawingArea+5),o=t.ctx,u=r.lineHeight,n=lt.isArray(d=t.pointLabels[e]||"")?{w:lt.longestText(o,o.font,d),h:d.length*u}:{w:o.measureText(d).width,h:u},t._pointLabelSizes[e]=n;var c=t.getIndexAngle(e),f=lt.toDegrees(c)%360,h=vn(f,a.x,n.w,0,180),g=vn(f,a.y,n.h,90,270);h.start<i.l&&(i.l=h.start,s.l=c),h.end>i.r&&(i.r=h.end,s.r=c),g.start<i.t&&(i.t=g.start,s.t=c),g.end>i.b&&(i.b=g.end,s.b=c)}t.setReductions(t.drawingArea,i,s)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var a=this,r=e.l/Math.sin(n.l),i=Math.max(e.r-a.width,0)/Math.sin(n.r),s=-e.t/Math.cos(n.t),o=-Math.max(e.b-(a.height-a.paddingTop),0)/Math.cos(n.b);r=On(r),i=On(i),s=On(s),o=On(o),a.drawingArea=Math.min(Math.floor(t-(r+i)/2),Math.floor(t-(s+o)/2)),a.setCenterPoint(r,i,s,o)},setCenterPoint:function(t,e,n,a){var r=this,i=n+r.drawingArea,s=r.height-r.paddingTop-a-r.drawingArea;r.xCenter=Math.floor((t+r.drawingArea+(r.width-e-r.drawingArea))/2+r.left),r.yCenter=Math.floor((i+s)/2+r.top+r.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/mn(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,a=e.ticks;if(e.display){var r=t.ctx,i=this.getIndexAngle(0),s=lt.options._parseFont(a);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,n=t.options,a=n.angleLines,r=n.gridLines,i=n.pointLabels,s=hn(a.lineWidth,r.lineWidth),o=hn(a.color,r.color),u=yn(n);e.save(),e.lineWidth=s,e.strokeStyle=o,e.setLineDash&&(e.setLineDash(pn([a.borderDash,r.borderDash,[]])),e.lineDashOffset=pn([a.borderDashOffset,r.borderDashOffset,0]));var d=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),l=lt.options._parseFont(i);e.font=l.string,e.textBaseline="middle";for(var c=mn(t)-1;c>=0;c--){if(a.display&&s&&o){var f=t.getPointPosition(c,d);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(f.x,f.y),e.stroke()}if(i.display){var h=t.getPointPosition(c,d+(0===c?u/2:0)+5),g=gn(i.fontColor,c,ot.global.defaultFontColor);e.fillStyle=g;var p=t.getIndexAngle(c),b=lt.toDegrees(p);e.textAlign=xn(b),Tn(b,t._pointLabelSizes[c],h),_n(e,t.pointLabels[c]||"",h,l.lineHeight)}}e.restore()}(t),lt.each(t.ticks,(function(e,o){if(o>0||a.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[o]);if(n.display&&0!==o&&function(t,e,n,a){var r,i=t.ctx,s=e.circular,o=mn(t),u=gn(e.color,a-1),d=gn(e.lineWidth,a-1);if((s||o)&&u&&d){if(i.save(),i.strokeStyle=u,i.lineWidth=d,i.setLineDash&&(i.setLineDash(e.borderDash||[]),i.lineDashOffset=e.borderDashOffset||0),i.beginPath(),s)i.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{r=t.getPointPosition(0,n),i.moveTo(r.x,r.y);for(var l=1;l<o;l++)r=t.getPointPosition(l,n),i.lineTo(r.x,r.y)}i.closePath(),i.stroke(),i.restore()}}(t,n,u,o),a.display){var d=hn(a.fontColor,ot.global.defaultFontColor);if(r.font=s.string,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(i),a.showLabelBackdrop){var l=r.measureText(e).width;r.fillStyle=a.backdropColor,r.fillRect(-l/2-a.backdropPaddingX,-u-s.size/2-a.backdropPaddingY,l+2*a.backdropPaddingX,s.size+2*a.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=d,r.fillText(e,0,-u),r.restore()}}}))}}});wn._defaults=bn;var Sn=lt.valueOrDefault,In=Number.MIN_SAFE_INTEGER||-9007199254740991,Nn=Number.MAX_SAFE_INTEGER||9007199254740991,Cn={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},Rn=Object.keys(Cn);function An(t,e){return t-e}function kn(t){var e,n,a,r={},i=[];for(e=0,n=t.length;e<n;++e)r[a=t[e]]||(r[a]=!0,i.push(a));return i}function En(t,e,n,a){var r=function(t,e,n){for(var a,r,i,s=0,o=t.length-1;s>=0&&s<=o;){if(i=t[a=s+o>>1],!(r=t[a-1]||null))return{lo:null,hi:i};if(i[e]<n)s=a+1;else{if(!(r[e]>n))return{lo:r,hi:i};o=a-1}}return{lo:i,hi:null}}(t,e,n),i=r.lo?r.hi?r.lo:t[t.length-2]:t[0],s=r.lo?r.hi?r.hi:t[t.length-1]:t[1],o=s[e]-i[e];return i[a]+(s[a]-i[a])*(o?(n-i[e])/o:0)}function Ln(t,e){var n=t._adapter,a=t.options.time,r=a.parser,i=r||a.format,s=e;return"function"==typeof r&&(s=r(s)),lt.isFinite(s)||(s="string"==typeof i?n.parse(s,i):n.parse(s)),null!==s?+s:(r||"function"!=typeof i||(s=i(e),lt.isFinite(s)||(s=n.parse(s))),s)}function Dn(t,e){if(lt.isNullOrUndef(e))return null;var n=t.options.time,a=Ln(t,t.getRightValue(e));return null===a?a:(n.round&&(a=+t._adapter.startOf(a,n.round)),a)}function Pn(t){for(var e=Rn.indexOf(t)+1,n=Rn.length;e<n;++e)if(Cn[Rn[e]].common)return Rn[e]}var Mn=nn.extend({initialize:function(){this.mergeTicksOptions(),nn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),a=t._adapter=new Ze._date(e.adapters.date);return n.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),lt.mergeIf(n.displayFormats,a.formats()),nn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),nn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,a,r,i,s=this,o=s.chart,u=s._adapter,d=s.options.time,l=d.unit||"day",c=Nn,f=In,h=[],g=[],p=[],b=o.data.labels||[];for(t=0,n=b.length;t<n;++t)p.push(Dn(s,b[t]));for(t=0,n=(o.data.datasets||[]).length;t<n;++t)if(o.isDatasetVisible(t))if(lt.isObject((r=o.data.datasets[t].data)[0]))for(g[t]=[],e=0,a=r.length;e<a;++e)i=Dn(s,r[e]),h.push(i),g[t][e]=i;else{for(e=0,a=p.length;e<a;++e)h.push(p[e]);g[t]=p.slice(0)}else g[t]=[];p.length&&(p=kn(p).sort(An),c=Math.min(c,p[0]),f=Math.max(f,p[p.length-1])),h.length&&(h=kn(h).sort(An),c=Math.min(c,h[0]),f=Math.max(f,h[h.length-1])),c=Dn(s,d.min)||c,f=Dn(s,d.max)||f,c=c===Nn?+u.startOf(Date.now(),l):c,f=f===In?+u.endOf(Date.now(),l)+1:f,s.min=Math.min(c,f),s.max=Math.max(c+1,f),s._horizontal=s.isHorizontal(),s._table=[],s._timestamps={data:h,datasets:g,labels:p}},buildTicks:function(){var t,e,n,a=this,r=a.min,i=a.max,s=a.options,o=s.time,u=[],d=[];switch(s.ticks.source){case"data":u=a._timestamps.data;break;case"labels":u=a._timestamps.labels;break;case"auto":default:u=function(t,e,n,a){var r,i=t._adapter,s=t.options,o=s.time,u=o.unit||function(t,e,n,a){var r,i,s=Rn.length;for(r=Rn.indexOf(t);r<s-1;++r)if((i=Cn[Rn[r]]).common&&Math.ceil((n-e)/((i.steps?i.steps[i.steps.length-1]:Nn)*i.size))<=a)return Rn[r];return Rn[s-1]}(o.minUnit,e,n,a),d=Pn(u),l=Sn(o.stepSize,o.unitStepSize),c="week"===u&&o.isoWeekday,f=s.ticks.major.enabled,h=Cn[u],g=e,p=n,b=[];for(l||(l=function(t,e,n,a){var r,i,s,o=e-t,u=Cn[n],d=u.size,l=u.steps;if(!l)return Math.ceil(o/(a*d));for(r=0,i=l.length;r<i&&(s=l[r],!(Math.ceil(o/(d*s))<=a));++r);return s}(e,n,u,a)),c&&(g=+i.startOf(g,"isoWeek",c),p=+i.startOf(p,"isoWeek",c)),g=+i.startOf(g,c?"day":u),(p=+i.startOf(p,c?"day":u))<n&&(p=+i.add(p,1,u)),r=g,f&&d&&!c&&!o.round&&(r=+i.startOf(r,d),r=+i.add(r,~~((g-r)/(h.size*l))*l,u));r<p;r=+i.add(r,l,u))b.push(+r);return b.push(+r),b}(a,r,i,a.getLabelCapacity(r))}for("ticks"===s.bounds&&u.length&&(r=u[0],i=u[u.length-1]),r=Dn(a,o.min)||r,i=Dn(a,o.max)||i,t=0,e=u.length;t<e;++t)(n=u[t])>=r&&n<=i&&d.push(n);return a.min=r,a.max=i,a._unit=o.unit||function(t,e,n,a,r){var i,s;for(i=Rn.length-1;i>=Rn.indexOf(n);i--)if(Cn[s=Rn[i]].common&&t._adapter.diff(r,a,s)>=e.length)return s;return Rn[n?Rn.indexOf(n):0]}(a,d,o.minUnit,a.min,a.max),a._majorUnit=Pn(a._unit),a._table=function(t,e,n,a){if("linear"===a||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var r,i,s,o,u,d=[],l=[e];for(r=0,i=t.length;r<i;++r)(o=t[r])>e&&o<n&&l.push(o);for(l.push(n),r=0,i=l.length;r<i;++r)u=l[r+1],o=l[r],void 0!==(s=l[r-1])&&void 0!==u&&Math.round((u+s)/2)===o||d.push({time:o,pos:r/(i-1)});return d}(a._timestamps.data,r,i,s.distribution),a._offsets=function(t,e,n,a,r){var i,s,o=0,u=0;return r.offset&&e.length&&(r.time.min||(i=En(t,"time",e[0],"pos"),o=1===e.length?1-i:(En(t,"time",e[1],"pos")-i)/2),r.time.max||(s=En(t,"time",e[e.length-1],"pos"),u=1===e.length?s:(s-En(t,"time",e[e.length-2],"pos"))/2)),{start:o,end:u}}(a._table,d,0,0,s),s.ticks.reverse&&d.reverse(),function(t,e,n){var a,r,i,s,o=[];for(a=0,r=e.length;a<r;++a)i=e[a],s=!!n&&i===+t._adapter.startOf(i,n),o.push({value:i,major:s});return o}(a,d,a._majorUnit)},getLabelForIndex:function(t,e){var n=this,a=n._adapter,r=n.chart.data,i=n.options.time,s=r.labels&&t<r.labels.length?r.labels[t]:"",o=r.datasets[e].data[t];return lt.isObject(o)&&(s=n.getRightValue(o)),i.tooltipFormat?a.format(Ln(n,s),i.tooltipFormat):"string"==typeof s?s:a.format(Ln(n,s),i.displayFormats.datetime)},tickFormatFunction:function(t,e,n,a){var r=this._adapter,i=this.options,s=i.time.displayFormats,o=s[this._unit],u=this._majorUnit,d=s[u],l=+r.startOf(t,u),c=i.ticks.major,f=c.enabled&&u&&d&&t===l,h=r.format(t,a||(f?d:o)),g=f?c:i.ticks.minor,p=Sn(g.callback,g.userCallback);return p?p(h,e,n):h},convertTicksToLabels:function(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(this.tickFormatFunction(t[e].value,e,t));return a},getPixelForOffset:function(t){var e=this,n=e.options.ticks.reverse,a=e._horizontal?e.width:e.height,r=e._horizontal?n?e.right:e.left:n?e.bottom:e.top,i=En(e._table,"time",t,"pos"),s=a*(e._offsets.start+i)/(e._offsets.start+1+e._offsets.end);return n?r-s:r+s},getPixelForValue:function(t,e,n){var a=null;if(void 0!==e&&void 0!==n&&(a=this._timestamps.datasets[n][e]),null===a&&(a=Dn(this,t)),null!==a)return this.getPixelForOffset(a)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,a=En(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.start+1+e._offsets.start)-e._offsets.end,"time");return e._adapter._create(a)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,a=lt.toRadians(e.maxRotation),r=Math.cos(a),i=Math.sin(a);return n*r+Sn(e.fontSize,ot.global.defaultFontSize)*i},getLabelCapacity:function(t){var e=this,n=e.tickFormatFunction(t,0,[],e.options.time.displayFormats.millisecond),a=e.getLabelWidth(n),r=e.isHorizontal()?e.width:e.height,i=Math.floor(r/a);return i>0?i:1}});Mn._defaults={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};var qn={category:an,linear:un,logarithmic:fn,radialLinear:wn,time:Mn},jn={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Ze._date.override("function"==typeof t?{_id:"moment",formats:function(){return jn},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,a){return t(e).add(n,a).valueOf()},diff:function(e,n,a){return t.duration(t(e).diff(t(n))).as(a)},startOf:function(e,n,a){return e=t(e),"isoWeek"===n?e.isoWeekday(a).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),ot._set("global",{plugins:{filler:{propagate:!0}}});var Fn={dataset:function(t){var e=t.fill,n=t.chart,a=n.getDatasetMeta(e),r=a&&n.isDatasetVisible(e)&&a.dataset._children||[],i=r.length||0;return i?function(t,e){return e<i&&r[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,a=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===a?t.y:a}}}};function Gn(t,e,n){var a,r=t._model||{},i=r.fill;if(void 0===i&&(i=!!r.backgroundColor),!1===i||null===i)return!1;if(!0===i)return"origin";if(a=parseFloat(i,10),isFinite(a)&&Math.floor(a)===a)return"-"!==i[0]&&"+"!==i[0]||(a=e+a),!(a===e||a<0||a>=n)&&a;switch(i){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return i;default:return!1}}function Vn(t){var e,n=t.el._model||{},a=t.el._scale||{},r=t.fill,i=null;if(isFinite(r))return null;if("start"===r?i=void 0===n.scaleBottom?a.bottom:n.scaleBottom:"end"===r?i=void 0===n.scaleTop?a.top:n.scaleTop:void 0!==n.scaleZero?i=n.scaleZero:a.getBasePosition?i=a.getBasePosition():a.getBasePixel&&(i=a.getBasePixel()),null!=i){if(void 0!==i.x&&void 0!==i.y)return i;if(lt.isFinite(i))return{x:(e=a.isHorizontal())?i:null,y:e?null:i}}return null}function zn(t,e,n){var a,r=t[e].fill,i=[e];if(!n)return r;for(;!1!==r&&-1===i.indexOf(r);){if(!isFinite(r))return r;if(!(a=t[r]))return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Bn(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),Fn[n](t))}function Yn(t){return t&&!t.skip}function Hn(t,e,n,a,r){var i;if(a&&r){for(t.moveTo(e[0].x,e[0].y),i=1;i<a;++i)lt.canvas.lineTo(t,e[i-1],e[i]);for(t.lineTo(n[r-1].x,n[r-1].y),i=r-1;i>0;--i)lt.canvas.lineTo(t,n[i],n[i-1],!0)}}var Un={id:"filler",afterDatasetsUpdate:function(t,e){var n,a,r,i,s=(t.data.datasets||[]).length,o=e.propagate,u=[];for(a=0;a<s;++a)i=null,(r=(n=t.getDatasetMeta(a)).dataset)&&r._model&&r instanceof qt.Line&&(i={visible:t.isDatasetVisible(a),fill:Gn(r,a,s),chart:t,el:r}),n.$filler=i,u.push(i);for(a=0;a<s;++a)(i=u[a])&&(i.fill=zn(u,a,o),i.boundary=Vn(i),i.mapper=Bn(i))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,r=n.el,i=r._view,s=r._children||[],o=n.mapper,u=i.backgroundColor||ot.global.defaultColor;o&&u&&s.length&&(lt.canvas.clipArea(a,t.chartArea),function(t,e,n,a,r,i){var s,o,u,d,l,c,f,h=e.length,g=a.spanGaps,p=[],b=[],m=0,y=0;for(t.beginPath(),s=0,o=h+!!i;s<o;++s)l=n(d=e[u=s%h]._view,u,a),c=Yn(d),f=Yn(l),c&&f?(m=p.push(d),y=b.push(l)):m&&y&&(g?(c&&p.push(d),f&&b.push(l)):(Hn(t,p,b,m,y),m=y=0,p=[],b=[]));Hn(t,p,b,m,y),t.closePath(),t.fillStyle=r,t.fill()}(a,s,o,i,u,r._loop),lt.canvas.unclipArea(a))}}},Wn=lt.noop,Kn=lt.valueOrDefault;function $n(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}ot._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,a=this.chart,r=a.getDatasetMeta(n);r.hidden=null===r.hidden?!a.data.datasets[n].hidden:null,a.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return lt.isArray(e.datasets)?e.datasets.map((function(e,n){return{text:e.label,fillStyle:lt.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}}),this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var Zn=gt.extend({initialize:function(t){lt.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:Wn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Wn,beforeSetDimensions:Wn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Wn,beforeBuildLabels:Wn,buildLabels:function(){var t=this,e=t.options.labels||{},n=lt.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter((function(n){return e.filter(n,t.chart.data)}))),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:Wn,beforeFit:Wn,fit:function(){var t=this,e=t.options,n=e.labels,a=e.display,r=t.ctx,i=lt.options._parseFont(n),s=i.size,o=t.legendHitBoxes=[],u=t.minSize,d=t.isHorizontal();if(d?(u.width=t.maxWidth,u.height=a?10:0):(u.width=a?10:0,u.height=t.maxHeight),a)if(r.font=i.string,d){var l=t.lineWidths=[0],c=0;r.textAlign="left",r.textBaseline="top",lt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;(0===e||l[l.length-1]+a+n.padding>u.width)&&(c+=s+n.padding,l[l.length-(e>0?0:1)]=n.padding),o[e]={left:0,top:0,width:a,height:s},l[l.length-1]+=a+n.padding})),u.height+=c}else{var f=n.padding,h=t.columnWidths=[],g=n.padding,p=0,b=0,m=s+f;lt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;e>0&&b+m>u.height-f&&(g+=p+n.padding,h.push(p),p=0,b=0),p=Math.max(p,a),b+=m,o[e]={left:0,top:0,width:a,height:s}})),g+=p,h.push(p),u.width+=g}t.width=u.width,t.height=u.height},afterFit:Wn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,a=ot.global,r=a.defaultColor,i=a.elements.line,s=t.width,o=t.lineWidths;if(e.display){var u,d=t.ctx,l=Kn(n.fontColor,a.defaultFontColor),c=lt.options._parseFont(n),f=c.size;d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=l,d.fillStyle=l,d.font=c.string;var h=$n(n,f),g=t.legendHitBoxes,p=t.isHorizontal();u=p?{x:t.left+(s-o[0])/2+n.padding,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var b=f+n.padding;lt.each(t.legendItems,(function(a,l){var c=d.measureText(a.text).width,m=h+f/2+c,y=u.x,v=u.y;p?l>0&&y+m+n.padding>t.left+t.minSize.width&&(v=u.y+=b,u.line++,y=u.x=t.left+(s-o[u.line])/2+n.padding):l>0&&v+b>t.top+t.minSize.height&&(y=u.x=y+t.columnWidths[u.line]+n.padding,v=u.y=t.top+n.padding,u.line++),function(t,n,a){if(!(isNaN(h)||h<=0)){d.save();var s=Kn(a.lineWidth,i.borderWidth);if(d.fillStyle=Kn(a.fillStyle,r),d.lineCap=Kn(a.lineCap,i.borderCapStyle),d.lineDashOffset=Kn(a.lineDashOffset,i.borderDashOffset),d.lineJoin=Kn(a.lineJoin,i.borderJoinStyle),d.lineWidth=s,d.strokeStyle=Kn(a.strokeStyle,r),d.setLineDash&&d.setLineDash(Kn(a.lineDash,i.borderDash)),e.labels&&e.labels.usePointStyle){var o=h*Math.SQRT2/2;lt.canvas.drawPoint(d,a.pointStyle,o,t+h/2,n+f/2)}else 0!==s&&d.strokeRect(t,n,h,f),d.fillRect(t,n,h,f);d.restore()}}(y,v,a),g[l].left=y,g[l].top=v,function(t,e,n,a){var r=f/2,i=h+r+t,s=e+r;d.fillText(n.text,i,s),n.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(i,s),d.lineTo(i+a,s),d.stroke())}(y,v,a,c),p?u.x+=m+n.padding:u.y+=b}))}},_getLegendItemAt:function(t,e){var n,a,r,i=this;if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)for(r=i.legendHitBoxes,n=0;n<r.length;++n)if(t>=(a=r[n]).left&&t<=a.left+a.width&&e>=a.top&&e<=a.top+a.height)return i.legendItems[n];return null},handleEvent:function(t){var e,n=this,a=n.options,r="mouseup"===t.type?"click":t.type;if("mousemove"===r){if(!a.onHover&&!a.onLeave)return}else{if("click"!==r)return;if(!a.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===r?e&&a.onClick&&a.onClick.call(n,t.native,e):(a.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&a.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),a.onHover&&e&&a.onHover.call(n,t.native,e))}});function Jn(t,e){var n=new Zn({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.legend=n}var Qn={id:"legend",_element:Zn,beforeInit:function(t){var e=t.options.legend;e&&Jn(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(lt.mergeIf(e,ot.global.legend),n?(ve.configure(t,n,e),n.options=e):Jn(t,e)):n&&(ve.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Xn=lt.noop;ot._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var ta=gt.extend({initialize:function(t){lt.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Xn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Xn,beforeSetDimensions:Xn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Xn,beforeBuildLabels:Xn,buildLabels:Xn,afterBuildLabels:Xn,beforeFit:Xn,fit:function(){var t=this,e=t.options,n=e.display,a=t.minSize,r=lt.isArray(e.text)?e.text.length:1,i=lt.options._parseFont(e),s=n?r*i.lineHeight+2*e.padding:0;t.isHorizontal()?(a.width=t.maxWidth,a.height=s):(a.width=s,a.height=t.maxHeight),t.width=a.width,t.height=a.height},afterFit:Xn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var a,r,i,s=lt.options._parseFont(n),o=s.lineHeight,u=o/2+n.padding,d=0,l=t.top,c=t.left,f=t.bottom,h=t.right;e.fillStyle=lt.valueOrDefault(n.fontColor,ot.global.defaultFontColor),e.font=s.string,t.isHorizontal()?(r=c+(h-c)/2,i=l+u,a=h-c):(r="left"===n.position?c+u:h-u,i=l+(f-l)/2,a=f-l,d=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(r,i),e.rotate(d),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(lt.isArray(g))for(var p=0,b=0;b<g.length;++b)e.fillText(g[b],0,p,a),p+=o;else e.fillText(g,0,0,a);e.restore()}}});function ea(t,e){var n=new ta({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.titleBlock=n}var na={},aa=Un,ra=Qn,ia={id:"title",_element:ta,beforeInit:function(t){var e=t.options.title;e&&ea(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(lt.mergeIf(e,ot.global.title),n?(ve.configure(t,n,e),n.options=e):ea(t,e)):n&&(ve.removeBox(t,n),delete t.titleBlock)}};for(var sa in na.filler=aa,na.legend=ra,na.title=ia,We.helpers=lt,function(){function t(t,e,n){var a;return"string"==typeof t?(a=parseInt(t,10),-1!==t.indexOf("%")&&(a=a/100*e.parentNode[n])):a=t,a}function e(t){return null!=t&&"none"!==t}function n(n,a,r){var i=document.defaultView,s=lt._getParentNode(n),o=i.getComputedStyle(n)[a],u=i.getComputedStyle(s)[a],d=e(o),l=e(u),c=Number.POSITIVE_INFINITY;return d||l?Math.min(d?t(o,n,r):c,l?t(u,s,r):c):"none"}lt.where=function(t,e){if(lt.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return lt.each(t,(function(t){e(t)&&n.push(t)})),n},lt.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var a=0,r=t.length;a<r;++a)if(e.call(n,t[a],a,t))return a;return-1},lt.findNextWhere=function(t,e,n){lt.isNullOrUndef(n)&&(n=-1);for(var a=n+1;a<t.length;a++){var r=t[a];if(e(r))return r}},lt.findPreviousWhere=function(t,e,n){lt.isNullOrUndef(n)&&(n=t.length);for(var a=n-1;a>=0;a--){var r=t[a];if(e(r))return r}},lt.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},lt.almostEquals=function(t,e,n){return Math.abs(t-e)<n},lt.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},lt.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},lt.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},lt.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},lt.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e},lt.toRadians=function(t){return t*(Math.PI/180)},lt.toDegrees=function(t){return t*(180/Math.PI)},lt._decimalPlaces=function(t){if(lt.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},lt.getAngleFromPoint=function(t,e){var n=e.x-t.x,a=e.y-t.y,r=Math.sqrt(n*n+a*a),i=Math.atan2(a,n);return i<-.5*Math.PI&&(i+=2*Math.PI),{angle:i,distance:r}},lt.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},lt.aliasPixel=function(t){return t%2==0?0:.5},lt._alignPixel=function(t,e,n){var a=t.currentDevicePixelRatio,r=n/2;return Math.round((e-r)*a)/a+r},lt.splineCurve=function(t,e,n,a){var r=t.skip?e:t,i=e,s=n.skip?e:n,o=Math.sqrt(Math.pow(i.x-r.x,2)+Math.pow(i.y-r.y,2)),u=Math.sqrt(Math.pow(s.x-i.x,2)+Math.pow(s.y-i.y,2)),d=o/(o+u),l=u/(o+u),c=a*(d=isNaN(d)?0:d),f=a*(l=isNaN(l)?0:l);return{previous:{x:i.x-c*(s.x-r.x),y:i.y-c*(s.y-r.y)},next:{x:i.x+f*(s.x-r.x),y:i.y+f*(s.y-r.y)}}},lt.EPSILON=Number.EPSILON||1e-14,lt.splineCurveMonotone=function(t){var e,n,a,r,i,s,o,u,d,l=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),c=l.length;for(e=0;e<c;++e)if(!(a=l[e]).model.skip){if(n=e>0?l[e-1]:null,(r=e<c-1?l[e+1]:null)&&!r.model.skip){var f=r.model.x-a.model.x;a.deltaK=0!==f?(r.model.y-a.model.y)/f:0}a.mK=!n||n.model.skip?a.deltaK:!r||r.model.skip?n.deltaK:this.sign(n.deltaK)!==this.sign(a.deltaK)?0:(n.deltaK+a.deltaK)/2}for(e=0;e<c-1;++e)r=l[e+1],(a=l[e]).model.skip||r.model.skip||(lt.almostEquals(a.deltaK,0,this.EPSILON)?a.mK=r.mK=0:(i=a.mK/a.deltaK,s=r.mK/a.deltaK,(u=Math.pow(i,2)+Math.pow(s,2))<=9||(o=3/Math.sqrt(u),a.mK=i*o*a.deltaK,r.mK=s*o*a.deltaK)));for(e=0;e<c;++e)(a=l[e]).model.skip||(r=e<c-1?l[e+1]:null,(n=e>0?l[e-1]:null)&&!n.model.skip&&(a.model.controlPointPreviousX=a.model.x-(d=(a.model.x-n.model.x)/3),a.model.controlPointPreviousY=a.model.y-d*a.mK),r&&!r.model.skip&&(a.model.controlPointNextX=a.model.x+(d=(r.model.x-a.model.x)/3),a.model.controlPointNextY=a.model.y+d*a.mK))},lt.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},lt.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},lt.niceNum=function(t,e){var n=Math.floor(lt.log10(t)),a=t/Math.pow(10,n);return(e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10)*Math.pow(10,n)},lt.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},lt.getRelativePosition=function(t,e){var n,a,r=t.originalEvent||t,i=t.target||t.srcElement,s=i.getBoundingClientRect(),o=r.touches;o&&o.length>0?(n=o[0].clientX,a=o[0].clientY):(n=r.clientX,a=r.clientY);var u=parseFloat(lt.getStyle(i,"padding-left")),d=parseFloat(lt.getStyle(i,"padding-top")),l=parseFloat(lt.getStyle(i,"padding-right")),c=parseFloat(lt.getStyle(i,"padding-bottom")),f=s.bottom-s.top-d-c;return{x:n=Math.round((n-s.left-u)/(s.right-s.left-u-l)*i.width/e.currentDevicePixelRatio),y:a=Math.round((a-s.top-d)/f*i.height/e.currentDevicePixelRatio)}},lt.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},lt.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},lt._calculatePadding=function(t,e,n){return(e=lt.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},lt._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},lt.getMaximumWidth=function(t){var e=lt._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,a=n-lt._calculatePadding(e,"padding-left",n)-lt._calculatePadding(e,"padding-right",n),r=lt.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},lt.getMaximumHeight=function(t){var e=lt._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,a=n-lt._calculatePadding(e,"padding-top",n)-lt._calculatePadding(e,"padding-bottom",n),r=lt.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},lt.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},lt.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var a=t.canvas,r=t.height,i=t.width;a.height=r*n,a.width=i*n,t.ctx.scale(n,n),a.style.height||a.style.width||(a.style.height=r+"px",a.style.width=i+"px")}},lt.fontString=function(t,e,n){return e+" "+t+"px "+n},lt.longestText=function(t,e,n,a){var r=(a=a||{}).data=a.data||{},i=a.garbageCollect=a.garbageCollect||[];a.font!==e&&(r=a.data={},i=a.garbageCollect=[],a.font=e),t.font=e;var s=0;lt.each(n,(function(e){null!=e&&!0!==lt.isArray(e)?s=lt.measureText(t,r,i,s,e):lt.isArray(e)&&lt.each(e,(function(e){null==e||lt.isArray(e)||(s=lt.measureText(t,r,i,s,e))}))}));var o=i.length/2;if(o>n.length){for(var u=0;u<o;u++)delete r[i[u]];i.splice(0,o)}return s},lt.measureText=function(t,e,n,a,r){var i=e[r];return i||(i=e[r]=t.measureText(r).width,n.push(r)),i>a&&(a=i),a},lt.numberOfLabelLines=function(t){var e=1;return lt.each(t,(function(t){lt.isArray(t)&&t.length>e&&(e=t.length)})),e},lt.color=W?function(t){return t instanceof CanvasGradient&&(t=ot.global.defaultColor),W(t)}:function(t){return console.error("Color.js not found!"),t},lt.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:lt.color(t).saturate(.5).darken(.1).rgbString()}}(),We._adapters=Ze,We.Animation=bt,We.animationService=mt,We.controllers=oe,We.DatasetController=Tt,We.defaults=ot,We.Element=gt,We.elements=qt,We.Interaction=ge,We.layouts=ve,We.platform=Ae,We.plugins=ke,We.Scale=nn,We.scaleService=Ee,We.Ticks=Je,We.Tooltip=Ge,We.helpers.each(qn,(function(t,e){We.scaleService.registerScaleType(e,t,t._defaults)})),na)na.hasOwnProperty(sa)&&We.plugins.register(na[sa]);We.platform.initialize();var oa=We;return"undefined"!=typeof window&&(window.Chart=We),We.Chart=We,We.Legend=na.legend._element,We.Title=na.title._element,We.pluginService=We.plugins,We.PluginBase=We.Element.extend({}),We.canvasHelpers=We.helpers.canvas,We.layoutService=We.layouts,We.LinearScaleBase=sn,We.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){We[t]=function(e,n){return new We(e,We.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),oa}(function(){try{return n("wd/R")}catch(t){}}())},MP8s:function(t,e,n){"use strict";n.d(e,"a",(function(){return T}));var a=n("8Y7J"),r=n("2vnA"),i=n("f95s"),s=n("mfoh"),o=n("X+05"),u=n("afOK"),d=n.n(u),l=n("RBan"),c=n.n(l),f=n("wig9"),h=n.n(f),g=n("J2m7"),p=n.n(g),b=n("4qC0"),m=n.n(b),y=n("lSCD"),v=n.n(y),x=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},_=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},T=function(){function t(){this.options=new s.b,this.eventNames=Object.keys(o.a),this.expandedNodeIds={},this.selectedLeafNodeIds={},this.activeNodeIds={},this.hiddenNodeIds={},this.focusedNodeId=null,this.firstUpdate=!0,this.subscriptions=[]}var e;return e=t,t.prototype.fireEvent=function(t){t.treeModel=this,this.events[t.eventName].emit(t),this.events.event.emit(t)},t.prototype.subscribe=function(t,e){var n=this.events[t].subscribe(e);this.subscriptions.push(n)},t.prototype.getFocusedNode=function(){return this.focusedNode},t.prototype.getActiveNode=function(){return this.activeNodes[0]},t.prototype.getActiveNodes=function(){return this.activeNodes},t.prototype.getVisibleRoots=function(){return this.virtualRoot.visibleChildren},t.prototype.getFirstRoot=function(t){return void 0===t&&(t=!1),d()(t?this.getVisibleRoots():this.roots)},t.prototype.getLastRoot=function(t){return void 0===t&&(t=!1),c()(t?this.getVisibleRoots():this.roots)},Object.defineProperty(t.prototype,"isFocused",{get:function(){return e.focusedTree===this},enumerable:!0,configurable:!0}),t.prototype.isNodeFocused=function(t){return this.focusedNode===t},t.prototype.isEmptyTree=function(){return this.roots&&0===this.roots.length},Object.defineProperty(t.prototype,"focusedNode",{get:function(){return this.focusedNodeId?this.getNodeById(this.focusedNodeId):null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expandedNodes",{get:function(){var t=this,e=Object.keys(this.expandedNodeIds).filter((function(e){return t.expandedNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activeNodes",{get:function(){var t=this,e=Object.keys(this.activeNodeIds).filter((function(e){return t.activeNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hiddenNodes",{get:function(){var t=this,e=Object.keys(this.hiddenNodeIds).filter((function(e){return t.hiddenNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectedLeafNodes",{get:function(){var t=this,e=Object.keys(this.selectedLeafNodeIds).filter((function(e){return t.selectedLeafNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),t.prototype.getNodeByPath=function(t,e){if(void 0===e&&(e=null),!t)return null;if(e=e||this.virtualRoot,0===t.length)return e;if(!e.children)return null;var n=t.shift(),a=p()(e.children,{id:n});return a?this.getNodeByPath(t,a):null},t.prototype.getNodeById=function(t){var e=t.toString();return this.getNodeBy((function(t){return t.id.toString()===e}))},t.prototype.getNodeBy=function(t,e){if(void 0===e&&(e=null),!(e=e||this.virtualRoot).children)return null;var n=p()(e.children,t);if(n)return n;for(var a=0,r=e.children;a<r.length;a++){var i=this.getNodeBy(t,r[a]);if(i)return i}},t.prototype.isExpanded=function(t){return this.expandedNodeIds[t.id]},t.prototype.isHidden=function(t){return this.hiddenNodeIds[t.id]},t.prototype.isActive=function(t){return this.activeNodeIds[t.id]},t.prototype.isSelected=function(t){return this.selectedLeafNodeIds[t.id]},t.prototype.ngOnDestroy=function(){this.dispose(),this.unsubscribeAll()},t.prototype.dispose=function(){this.virtualRoot&&this.virtualRoot.dispose()},t.prototype.unsubscribeAll=function(){this.subscriptions.forEach((function(t){return t.unsubscribe()})),this.subscriptions=[]},t.prototype.setData=function(t){var e=t.nodes,n=t.options,a=void 0===n?null:n,r=t.events,i=void 0===r?null:r;a&&(this.options=new s.b(a)),i&&(this.events=i),e&&(this.nodes=e),this.update()},t.prototype.update=function(){var t,e=((t={id:this.options.rootId,virtual:!0})[this.options.childrenField]=this.nodes,t);this.dispose(),this.virtualRoot=new i.a(e,null,this,0),this.roots=this.virtualRoot.children,this.firstUpdate?this.roots&&(this.firstUpdate=!1,this._calculateExpandedNodes()):this.fireEvent({eventName:o.a.updateData})},t.prototype.setFocusedNode=function(t){this.focusedNodeId=t?t.id:null},t.prototype.setFocus=function(t){e.focusedTree=t?this:null},t.prototype.doForAll=function(t){this.roots.forEach((function(e){return e.doForAll(t)}))},t.prototype.focusNextNode=function(){var t=this.getFocusedNode(),e=t?t.findNextNode(!0,!0):this.getFirstRoot(!0);e&&e.focus()},t.prototype.focusPreviousNode=function(){var t=this.getFocusedNode(),e=t?t.findPreviousNode(!0):this.getLastRoot(!0);e&&e.focus()},t.prototype.focusDrillDown=function(){var t=this.getFocusedNode();if(t&&t.isCollapsed&&t.hasChildren)t.toggleExpanded();else{var e=t?t.getFirstChild(!0):this.getFirstRoot(!0);e&&e.focus()}},t.prototype.focusDrillUp=function(){var t=this.getFocusedNode();if(t)if(t.isExpanded)t.toggleExpanded();else{var e=t.realParent;e&&e.focus()}},t.prototype.setActiveNode=function(t,e,n){void 0===n&&(n=!1),n?this._setActiveNodeMulti(t,e):this._setActiveNodeSingle(t,e),e?(t.focus(this.options.scrollOnActivate),this.fireEvent({eventName:o.a.activate,node:t}),this.fireEvent({eventName:o.a.nodeActivate,node:t})):(this.fireEvent({eventName:o.a.deactivate,node:t}),this.fireEvent({eventName:o.a.nodeDeactivate,node:t}))},t.prototype.setSelectedNode=function(t,e){var n;this.selectedLeafNodeIds=Object.assign({},this.selectedLeafNodeIds,((n={})[t.id]=e,n)),e?(t.focus(),this.fireEvent({eventName:o.a.select,node:t})):this.fireEvent({eventName:o.a.deselect,node:t})},t.prototype.setExpandedNode=function(t,e){var n;this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((n={})[t.id]=e,n)),this.fireEvent({eventName:o.a.toggleExpanded,node:t,isExpanded:e})},t.prototype.expandAll=function(){this.roots.forEach((function(t){return t.expandAll()}))},t.prototype.collapseAll=function(){this.roots.forEach((function(t){return t.collapseAll()}))},t.prototype.setIsHidden=function(t,e){var n;this.hiddenNodeIds=Object.assign({},this.hiddenNodeIds,((n={})[t.id]=e,n))},t.prototype.setHiddenNodeIds=function(t){this.hiddenNodeIds=t.reduce((function(t,e){var n;return Object.assign(t,((n={})[e]=!0,n))}),{})},t.prototype.performKeyAction=function(t,e){var n=this.options.actionMapping.keys[e.keyCode];return!!n&&(e.preventDefault(),n(this,t,e),!0)},t.prototype.filterNodes=function(t,e){var n,a=this;if(void 0===e&&(e=!0),!t)return this.clearFilter();if(m()(t))n=function(e){return-1!==e.displayField.toLowerCase().indexOf(t.toLowerCase())};else{if(!v()(t))return console.error("Don't know what to do with filter",t),void console.error("Should be either a string or function");n=t}var r={};this.roots.forEach((function(t){return a._filterNode(r,t,n,e)})),this.hiddenNodeIds=r,this.fireEvent({eventName:o.a.changeFilter})},t.prototype.clearFilter=function(){this.hiddenNodeIds={},this.fireEvent({eventName:o.a.changeFilter})},t.prototype.moveNode=function(t,e){var n=t.getIndexInParent(),a=t.parent;if(this.canMoveNode(t,e,n)){var r=a.getField("children");e.parent.getField("children")||e.parent.setField("children",[]);var i=e.parent.getField("children"),s=r.splice(n,1)[0],u=a===e.parent&&e.index>n?e.index-1:e.index;i.splice(u,0,s),a.treeModel.update(),e.parent.treeModel!==a.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:o.a.moveNode,node:s,to:{parent:e.parent.data,index:u},from:{parent:a.data,index:n}})}},t.prototype.copyNode=function(t,e){var n=t.getIndexInParent();if(this.canMoveNode(t,e,n)){e.parent.getField("children")||e.parent.setField("children",[]);var a=e.parent.getField("children"),r=this.options.getNodeClone(t);a.splice(e.index,0,r),t.treeModel.update(),e.parent.treeModel!==t.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:o.a.copyNode,node:r,to:{parent:e.parent.data,index:e.index}})}},t.prototype.getState=function(){return{expandedNodeIds:this.expandedNodeIds,selectedLeafNodeIds:this.selectedLeafNodeIds,activeNodeIds:this.activeNodeIds,hiddenNodeIds:this.hiddenNodeIds,focusedNodeId:this.focusedNodeId}},t.prototype.setState=function(t){t&&Object.assign(this,{expandedNodeIds:t.expandedNodeIds||{},selectedLeafNodeIds:t.selectedLeafNodeIds||{},activeNodeIds:t.activeNodeIds||{},hiddenNodeIds:t.hiddenNodeIds||{},focusedNodeId:t.focusedNodeId})},t.prototype.subscribeToState=function(t){var e=this;Object(r.b)((function(){return t(e.getState())}))},t.prototype.canMoveNode=function(t,e,n){return void 0===n&&(n=void 0),n||t.getIndexInParent(),(t.parent!==e.parent||n!==e.index)&&!e.parent.isDescendantOf(t)},t.prototype.calculateExpandedNodes=function(){this._calculateExpandedNodes()},t.prototype._filterNode=function(t,e,n,a){var r=this,i=n(e);return e.children&&e.children.forEach((function(e){r._filterNode(t,e,n,a)&&(i=!0)})),i||(t[e.id]=!0),a&&i&&e.ensureVisible(),i},t.prototype._calculateExpandedNodes=function(t){var e,n=this;void 0===t&&(t=null),(t=t||this.virtualRoot).data[this.options.isExpandedField]&&(this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((e={})[t.id]=!0,e))),t.children&&t.children.forEach((function(t){return n._calculateExpandedNodes(t)}))},t.prototype._setActiveNodeSingle=function(t,e){var n,a=this;this.activeNodes.filter((function(e){return e!==t})).forEach((function(t){a.fireEvent({eventName:o.a.deactivate,node:t}),a.fireEvent({eventName:o.a.nodeDeactivate,node:t})})),this.activeNodeIds=e?((n={})[t.id]=!0,n):{}},t.prototype._setActiveNodeMulti=function(t,e){var n;this.activeNodeIds=Object.assign({},this.activeNodeIds,((n={})[t.id]=e,n))},t.focusedTree=null,x([r.d,_("design:type",Array)],t.prototype,"roots",void 0),x([r.d,_("design:type",Object)],t.prototype,"expandedNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"selectedLeafNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"activeNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"hiddenNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"focusedNodeId",void 0),x([r.d,_("design:type",i.a)],t.prototype,"virtualRoot",void 0),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"focusedNode",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"expandedNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"activeNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"hiddenNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"selectedLeafNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setData",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"update",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocusedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocus",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"doForAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusNextNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusPreviousNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillDown",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillUp",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object,Object]),_("design:returntype",void 0)],t.prototype,"setActiveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setSelectedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setExpandedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"expandAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"collapseAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setIsHidden",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setHiddenNodeIds",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"filterNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"clearFilter",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"moveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"copyNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setState",null),e=x([Object(a.Injectable)()],t)}()},MdoF:function(t,e,n){"use strict";n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return d})),n.d(e,"a",(function(){return c}));var a=n("8Y7J"),r=n("CNMR"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"button",[["aria-label","Close"],["class","close"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),(t()(),a["ɵeld"](3,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Close"]))],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["role","alert"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"alert alert-"+n.type,n.classes),t(e,4,0,n.dismissible)}),null)}function d(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isOpen)}),null)}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"alert",[],null,null,null,d,s)),a["ɵdid"](1,114688,null,0,r.a,[r.b,a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var c=a["ɵccf"]("alert,bs-alert",r.a,l,{type:"type",dismissible:"dismissible",dismissOnTimeout:"dismissOnTimeout",isOpen:"isOpen"},{onClose:"onClose",onClosed:"onClosed"},["*"])},MrPd:function(t,e,n){var a=n("hypo"),r=n("ljhN"),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var s=t[e];i.call(t,e)&&r(s,n)&&(void 0!==n||e in t)||a(t,e,n)}},MuvH:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}findValue(t,e){if(t.value)return t.value.find(t=>t.section===e)}getValue(t,e){let n=this.findValue(t,e);if(!n){const a=e.indexOf(".");-1!==a&&(n=this.findValue(t,e.substring(0,a)))}return n||(n=this.findValue(t,"global")),n?n.value:t.default}getConfigData(){return this.http.get("api/cluster_conf/")}get(t){return this.http.get(`api/cluster_conf/${t}`)}filter(t){return this.http.get(`api/cluster_conf/filter?names=${t.join(",")}`)}create(t){return this.http.post("api/cluster_conf/",t)}delete(t,e){return this.http.delete(`api/cluster_conf/${t}?section=${e}`)}bulkCreate(t){return this.http.put("api/cluster_conf/",t)}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},MvSz:function(t,e,n){var a=n("LXxW"),r=n("0ycA"),i=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols;t.exports=s?function(t){return null==t?[]:(t=Object(t),a(s(t),(function(e){return i.call(t,e)})))}:r},Mxhz:function(t,e,n){"use strict";var a=n("IheW"),r=n("LRne"),i=n("7o/Q");class s{constructor(t){this.value=t}call(t,e){return e.subscribe(new o(t,this.value))}}class o extends i.a{constructor(t,e){super(t),this.value=e}_next(t){this.destination.next(this.value)}}var u=n("JIr8"),d=n("8Y7J"),l=n("pL04");n.d(e,"a",(function(){return c}));let c=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/user")}delete(t){return this.http.delete(`api/user/${t}`)}get(t){return this.http.get(`api/user/${t}`)}create(t){return this.http.post("api/user",t)}update(t){return this.http.put(`api/user/${t.username}`,t)}changePassword(t,e,n){return this.http.post(`api/user/${t}/change_password`,{old_password:e,new_password:n})}validateUserName(t){return this.get(t).pipe(t=>t.lift(new s(!0)),Object(u.a)(t=>(t.preventDefault(),Object(r.a)(!1))))}validatePassword(t,e=null,n=null){let r=new a.h;return r=r.append("password",t),e&&(r=r.append("username",e)),n&&(r=r.append("old_password",n)),this.http.post("api/user/validate_password",null,{params:r})}}return t.ngInjectableDef=d["ɵɵdefineInjectable"]({factory:function(){return new t(d["ɵɵinject"](a.c))},token:t,providedIn:l.a}),t})()},"N+g0":function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("glrk"),s=n("33Wh");t.exports=a?Object.defineProperties:function(t,e){i(t);for(var n,a=s(e),o=a.length,u=0;o>u;)r.f(t,n=a[u++],e[n]);return t}},"NC/Y":function(t,e,n){var a=n("0GbY");t.exports=a("navigator","userAgent")||""},NEZu:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a){this.customColors={backgroundColor:void 0,borderColor:void 0},this.checkOffset=!1,this.chartEl=t.nativeElement,this.getStyleLeft=n,this.getStyleTop=a,this.tooltipEl=e.nativeElement}customTooltips(t){if(0===t.opacity)return void(this.tooltipEl.style.opacity=0);if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(t.yAlign?t.yAlign:"no-transform"),t.body){const e=t.title||[],n=t.body.map(t=>t.lines);let a="<thead>";e.forEach(t=>{a+="<tr><th>"+this.getTitle(t)+"</th></tr>"}),a+="</thead><tbody>",n.forEach((e,n)=>{const r=t.labelColors[n];let i="background:"+(this.customColors.backgroundColor||r.backgroundColor);i+="; border-color:"+(this.customColors.borderColor||r.borderColor),i+="; border-width: 2px",a+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+i+'"></span>'+this.getBody(e)+"</td></tr>"}),a+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=a}const e=this.chartEl.offsetTop,n=this.chartEl.offsetLeft;if(this.checkOffset){const e=t.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),t.caretX-e<0?this.tooltipEl.classList.add("transform-left"):t.caretX+e>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(t,n),this.tooltipEl.style.top=this.getStyleTop(t,e),this.tooltipEl.style.opacity=1,this.tooltipEl.style.fontFamily=t._fontFamily,this.tooltipEl.style.fontSize=t.fontSize,this.tooltipEl.style.fontStyle=t._fontStyle,this.tooltipEl.style.padding=t.yPadding+"px "+t.xPadding+"px"}getBody(t){return t}getTitle(t){return t}}},NJ4a:function(t,e,n){"use strict";function a(t){setTimeout(()=>{throw t},0)}n.d(e,"a",(function(){return a}))},NJ9Y:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("sVev"),r=n("pLZG"),i=n("BFxc"),s=n("XDbj"),o=n("xbPD"),u=n("SpAZ");function d(t,e){const n=arguments.length>=2;return d=>d.pipe(t?Object(r.a)((e,n)=>t(e,n,d)):u.a,Object(i.a)(1),n?Object(o.a)(e):Object(s.a)(()=>new a.a))}},NKxu:function(t,e,n){var a=n("lSCD"),r=n("E2jh"),i=n("GoyQ"),s=n("3Fdi"),o=/^\[object .+?Constructor\]$/,u=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||r(t))&&(a(t)?u:o).test(s(t))}},NUGo:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("iInd"),s=n("FE24"),o=n("z/SZ"),u=n("GS7A");n("S7zO"),n.d(e,"a",(function(){return d})),n.d(e,"b",(function(){return b}));var d=a["ɵcrt"]({encapsulation:0,styles:[[".dropdown-menu[_ngcontent-%COMP%] > .disabled[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]{pointer-events:auto;cursor:default!important}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,10,"button",[["type","button"]],null,[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.ngIf)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](4,{disabled:0}),a["ɵdid"](5,16384,null,0,i.n,[i.m,i.a,[8,null],a.Renderer2,a.ElementRef],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,1),(t()(),a["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](11,null,["",""]))],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](1,"btn btn-",n.btnColor,""),i=t(e,4,0,n.disableSelectionAction(e.context.ngIf));t(e,3,0,r,i),t(e,5,0,e.context.ngIf.preserveFragment?"":null,n.useRouterLink(e.context.ngIf));var s=t(e,9,0,e.context.ngIf.icon);t(e,8,0,s)}),(function(t,e){t(e,11,0,e.context.ngIf.name)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.dropDownOnly)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","sr-only"]],null,null,null,null,null))],null,null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["dropdownToggle",""],["type","button"]],[[8,"className",0],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick()&&r),r}),null,null)),a["ɵdid"](1,147456,null,0,s.g,[a.ChangeDetectorRef,s.c,a.ElementRef,a.Renderer2,s.f],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.dropDownOnly),t(e,5,0,!n.dropDownOnly)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"btn btn-",e.component.btnColor," dropdown-toggle dropdown-toggle-split"),!0,a["ɵnov"](e,1).isDisabled,a["ɵnov"](e,1).isOpen)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,12,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,11,"li",[["data-toggle","tooltip"],["role","menuitem"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,10,"a",[["class","dropdown-item"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.$implicit)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](5,{disabled:0}),a["ɵdid"](6,671744,null,0,i.p,[i.m,i.a,r.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](7,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](10,1),(t()(),a["ɵeld"](11,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](12,null,["",""]))],(function(t,e){var n=e.component,a=t(e,5,0,n.disableSelectionAction(e.context.$implicit));t(e,4,0,"dropdown-item",a),t(e,6,0,e.context.$implicit.preserveFragment?"":null,n.useRouterLink(e.context.$implicit));var r=t(e,10,0,e.context.$implicit.icon);t(e,9,0,r)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.toClassName(e.context.$implicit.name),""),a["ɵinlineInterpolate"](1,"",n.useDisableDesc(e.context.$implicit),"")),t(e,2,0,a["ɵnov"](e,6).target,a["ɵnov"](e,6).href),t(e,12,0,e.context.$implicit.name)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](2,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.dropDownActions)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,8,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,s.f,s.f,[]),a["ɵdid"](2,212992,null,0,s.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,o.a,s.f,s.a,u.b],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](8,16384,null,0,s.d,[s.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.getCurrentButton()),t(e,6,0,n.showDropDownActions())}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).dropup,a["ɵnov"](e,2).isOpen,a["ɵnov"](e,2).isOpen&&a["ɵnov"](e,2).isBs4)}))}},NaFW:function(t,e,n){var a=n("9d/t"),r=n("P4y1"),i=n("tiKp")("iterator");t.exports=function(t){if(null!=t)return t[i]||t["@@iterator"]||r[a(t)]}},Nehr:function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},Nh2a:function(t,e,n){var a=n("SKAX");t.exports=function(t,e){var n;return a(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}},Npjl:function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},NykK:function(t,e,n){var a=n("nmnc"),r=n("AP2z"),i=n("KfNM"),s=a?a.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?r(t):i(t)}},O0oS:function(t,e,n){var a=n("Cwc5"),r=function(){try{var t=a(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=r},O741:function(t,e,n){var a=n("hh1v");t.exports=function(t){if(!a(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},O7RO:function(t,e,n){var a=n("CMye"),r=n("7GkX");t.exports=function(t){for(var e=r(t),n=e.length;n--;){var i=e[n],s=t[i];e[n]=[i,s,a(s)]}return e}},O9Tv:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("YzqF");e.Mutex=a.default},OBhP:function(t,e,n){var a=n("fmRc"),r=n("gFfm"),i=n("MrPd"),s=n("WwFo"),o=n("Dw+G"),u=n("5Tg0"),d=n("Q1l4"),l=n("VOtZ"),c=n("EEGq"),f=n("qZTm"),h=n("G6z8"),g=n("QqLw"),p=n("yHx3"),b=n("wrZu"),m=n("+iFO"),y=n("Z0cm"),v=n("DSRE"),x=n("zEVN"),_=n("GoyQ"),T=n("1+5i"),O=n("7GkX"),w={};w["[object Arguments]"]=w["[object Array]"]=w["[object ArrayBuffer]"]=w["[object DataView]"]=w["[object Boolean]"]=w["[object Date]"]=w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Map]"]=w["[object Number]"]=w["[object Object]"]=w["[object RegExp]"]=w["[object Set]"]=w["[object String]"]=w["[object Symbol]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w["[object Error]"]=w["[object Function]"]=w["[object WeakMap]"]=!1,t.exports=function t(e,n,S,I,N,C){var R,A=1&n,k=2&n,E=4&n;if(S&&(R=N?S(e,I,N,C):S(e)),void 0!==R)return R;if(!_(e))return e;var L=y(e);if(L){if(R=p(e),!A)return d(e,R)}else{var D=g(e),P="[object Function]"==D||"[object GeneratorFunction]"==D;if(v(e))return u(e,A);if("[object Object]"==D||"[object Arguments]"==D||P&&!N){if(R=k||P?{}:m(e),!A)return k?c(e,o(R,e)):l(e,s(R,e))}else{if(!w[D])return N?e:{};R=b(e,D,A)}}C||(C=new a);var M=C.get(e);if(M)return M;C.set(e,R),T(e)?e.forEach((function(a){R.add(t(a,n,S,a,e,C))})):x(e)&&e.forEach((function(a,r){R.set(r,t(a,n,S,r,e,C))}));var q=E?k?h:f:k?keysIn:O,j=L?void 0:q(e);return r(j||e,(function(a,r){j&&(a=e[r=a]),i(R,r,t(a,n,S,r,e,C))})),R}},OIDT:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-wrapper",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n      <div *ngIf="!templates.treeNodeWrapperTemplate" class="node-wrapper" [style.padding-left]="node.getNodePadding()">\n          <tree-node-checkbox *ngIf="node.options.useCheckbox" [node]="node"></tree-node-checkbox>\n          <tree-node-expander [node]="node"></tree-node-expander>\n          <div class="node-content-wrapper"\n               [class.node-content-wrapper-active]="node.isActive"\n               [class.node-content-wrapper-focused]="node.isFocused"\n               (click)="node.mouseAction(\'click\', $event)"\n               (dblclick)="node.mouseAction(\'dblClick\', $event)"\n               (mouseover)="node.mouseAction(\'mouseOver\', $event)"\n               (mouseout)="node.mouseAction(\'mouseOut\', $event)"\n               (contextmenu)="node.mouseAction(\'contextMenu\', $event)"\n               (treeDrop)="node.onDrop($event)"\n               (treeDropDragOver)="node.mouseAction(\'dragOver\', $event)"\n               (treeDropDragLeave)="node.mouseAction(\'dragLeave\', $event)"\n               (treeDropDragEnter)="node.mouseAction(\'dragEnter\', $event)"\n               [treeAllowDrop]="node.allowDrop"\n               [allowDragoverStyling]="node.allowDragoverStyling()"\n               [treeDrag]="node"\n               [treeDragEnabled]="node.allowDrag()">\n\n              <tree-node-content [node]="node" [index]="index" [template]="templates.treeNodeTemplate">\n              </tree-node-content>\n          </div>\n      </div>\n      <ng-container\n              [ngTemplateOutlet]="templates.treeNodeWrapperTemplate"\n              [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index, templates: templates }">\n      </ng-container>\n  '}),s("design:paramtypes",[])],t)}()},OIYi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},OLbh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r{constructor(t,e){this.modalRef=t,this.modalService=e,this.boundCancel=this.cancel.bind(this),this.canceled=!1,this.confirmationForm=new a.k({}),this.onHide=this.modalService.onHide.subscribe(t=>{this.onCancel&&(t||this.canceled)&&this.onCancel()})}ngOnInit(){if(this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData,!this.onSubmit)throw new Error("No submit action defined");if(!this.buttonText)throw new Error("No action name defined");if(!this.titleText)throw new Error("No title defined");if(!this.bodyTpl&&!this.description)throw new Error("No description defined")}ngOnDestroy(){this.onHide.unsubscribe()}cancel(){this.canceled=!0,this.modalRef.hide()}stopLoadingSpinner(){this.confirmationForm.setErrors({cdSubmitButton:!0})}}},Oaa7:function(t,e,n){!function(t){"use strict";t.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},Ob0Z:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function a(t,e,n,a){var r="";if(e)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,t)}t.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात्री"===e?t<4?t:t+12:"सकाळी"===e?t:"दुपारी"===e?t>=10?t:t+12:"सायंकाळी"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात्री":t<10?"सकाळी":t<17?"दुपारी":t<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("wd/R"))},OcYo:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a){this.elementRef=t,this.renderer=e,this.toastr=n,this.i18n=a,this.formatted="no"}ngOnInit(){const t=this.renderer.createElement("i");this.renderer.addClass(t,"fa"),this.renderer.addClass(t,"fa-clipboard"),this.renderer.setAttribute(t,"title",this.i18n("Copy to clipboard")),this.renderer.appendChild(this.elementRef.nativeElement,t)}getInputElement(){return document.getElementById(this.cdCopy2ClipboardButton)}onClick(){try{const t=document.createElement(""===this.formatted?"textarea":"input");t.value=this.getInputElement().value,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),this.toastr.success("Copied text to the clipboard successfully.")}catch(t){this.toastr.error("Failed to copy text to the clipboard.")}}}},"Of+w":function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"WeakMap");t.exports=a},OjkT:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(t,e){return 12===t&&(t=0),"राति"===e?t<4?t:t+12:"बिहान"===e?t:"दिउँसो"===e?t>=10?t:t+12:"साँझ"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"राति":t<12?"बिहान":t<16?"दिउँसो":t<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("wd/R"))},Oxv6:function(t,e,n){!function(t){"use strict";var e={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};t.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(t,e){return 12===t&&(t=0),"шаб"===e?t<4?t:t+12:"субҳ"===e?t:"рӯз"===e?t>=11?t:t+12:"бегоҳ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"шаб":t<11?"субҳ":t<16?"рӯз":t<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},"P/G1":function(t,e,n){var a=n("JmpY"),r=n("7GkX");t.exports=function(t){return null==t?[]:a(t,r(t))}},P4Tr:function(t,e,n){var a=n("heNW"),r=n("EA7m"),i=n("4DFU"),s=n("JBE3"),o=r((function(t){return t.push(void 0,i),a(s,void 0,t)}));t.exports=o},P4y1:function(t,e){t.exports={}},P8lu:function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("mrSG"),r=n("IheW"),i=n("LvDl"),s=n("cp0P"),o=n("LRne"),u=n("5+tZ"),d=n("xTzq"),l=n("8Y7J"),c=n("pL04");let f=(()=>{let t=class{constructor(t){this.http=t,this.url="api/rgw/user"}list(){return this.enumerate().pipe(Object(u.a)(t=>t.length>0?Object(s.a)(t.map(t=>this.get(t))):Object(o.a)([])))}enumerate(){return this.http.get(this.url)}enumerateEmail(){return this.http.get(`${this.url}/get_emails`)}get(t){return this.http.get(`${this.url}/${t}`)}getQuota(t){return this.http.get(`${this.url}/${t}/quota`)}create(t){let e=new r.h;return i.keys(t).forEach(n=>{e=e.append(n,t[n])}),this.http.post(this.url,null,{params:e})}update(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}`,null,{params:n})}updateQuota(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}/quota`,null,{params:n})}delete(t){return this.http.delete(`${this.url}/${t}`)}createSubuser(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/subuser`,null,{params:n})}deleteSubuser(t,e){return this.http.delete(`${this.url}/${t}/subuser/${e}`)}addCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.post(`${this.url}/${t}/capability`,null,{params:a})}deleteCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.delete(`${this.url}/${t}/capability`,{params:a})}addS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/key`,null,{params:n})}deleteS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),n=n.append("access_key",e),this.http.delete(`${this.url}/${t}/key`,{params:n})}exists(t){return this.enumerate().pipe(Object(u.a)(e=>{const n=i.indexOf(e,t);return Object(o.a)(-1!==n)}))}emailExists(t){return t=decodeURIComponent(t),this.enumerateEmail().pipe(Object(u.a)(e=>{const n=i.indexOf(e,t);return Object(o.a)(-1!==n)}))}};return t.ngInjectableDef=l["ɵɵdefineInjectable"]({factory:function(){return new t(l["ɵɵinject"](r.c))},token:t,providedIn:c.a}),t=a.__decorate([d.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},PA2r:function(t,e,n){!function(t){"use strict";var e="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function i(t){return t>1&&t<5&&1!=~~(t/10)}function s(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(i(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(i(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(i(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(i(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(i(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(i(t)?"roky":"let"):r+"lety"}}t.defineLocale("cs",{months:e,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},PCNd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"PEr+":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("EEJc"),s=n("ajRT"),o=n("s7LF"),u=n("+gVj"),d=n("mXUL"),l=n("IZUe"),c=n("gp3X"),f=n("sb0X"),h=n("KVJa"),g=n("Z21x"),p=n("sne2"),b=n("0+/T"),m=n("LqlI");n.d(e,"a",(function(){return A}));var y=a["ɵcrt"]({encapsulation:0,styles:[[".modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]{margin-top:1em}.modal-body[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," "])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](4,null,["",""])),(t()(),a["ɵted"](-1,null,["?"]))],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r),t(e,4,0,n.itemNames[0])}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected items?"])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](5,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,5,0,e.component.itemNames)}),(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["manyNames",2]],null,0,null,O))],(function(t,e){t(e,2,0,1===e.component.itemNames.length,a["ɵnov"](e,3))}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected ","?"])),a["ɵppd"](2,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,0),n.actionDescription));t(e,1,0,r,n.itemDescription)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," ","\n"])),a["ɵppd"](1,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent,1),n.actionDescription));t(e,0,0,r,n.itemDescription)}))}function C(t){return a["ɵvid"](0,[a["ɵpid"](0,r.LowerCasePipe,[]),a["ɵpid"](0,r.TitleCasePipe,[]),a["ɵqud"](402653184,1,{submitButton:0}),(t()(),a["ɵeld"](3,0,null,null,40,"cd-modal",[],null,null,null,i.c,i.b)),a["ɵdid"](4,49152,[["modal",4]],0,s.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵeld"](5,0,null,0,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](8,0,null,1,35,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](9,0,null,null,34,"form",[["name","deletionForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,11).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,11).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,14).onSubmit()&&r),r}),null,null)),a["ɵdid"](10,16384,null,0,o.G,[],null,null),a["ɵdid"](11,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,o.d,null,[o.l]),a["ɵdid"](13,16384,null,0,o.s,[[4,o.d]],null,null),a["ɵdid"](14,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](15,0,null,null,21,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,x)),a["ɵdid"](17,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](18,0,null,null,18,"div",[["class","question"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](20,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["noNames",2]],null,0,null,S)),(t()(),a["ɵeld"](22,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,d.b,d.a)),a["ɵdid"](23,1163264,null,2,u.c,[a.ElementRef,u.g],null,null),a["ɵqud"](603979776,2,{FormControlNames:1}),a["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),a["ɵeld"](26,0,null,0,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](27,0,null,null,7,"input",[["autofocus",""],["class","custom-control-input"],["formControlName","confirmation"],["id","confirmation"],["name","confirmation"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,28).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,28).onTouched()&&r),r}),null,null)),a["ɵdid"](28,16384,null,0,o.c,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,o.p,(function(t){return[t]}),[o.c]),a["ɵdid"](30,671744,[[2,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,o.q,null,[o.j]),a["ɵdid"](32,16384,null,0,o.r,[[4,o.q]],null,null),a["ɵdid"](33,4210688,null,0,l.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),a["ɵdid"](34,16384,null,0,u.h,[[3,o.d],u.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵeld"](35,0,null,null,1,"label",[["class","custom-control-label"],["for","confirmation"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Yes, I am sure."])),(t()(),a["ɵeld"](37,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](38,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.callSubmitAction()&&a),a}),c.b,c.a)),a["ɵdid"](39,114688,[[1,4],["submitButton",4]],0,f.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵand"](16777216,null,0,1,null,I)),a["ɵdid"](41,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](42,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,h.b,h.a)),a["ɵdid"](43,49152,null,0,g.a,[r.Location,p.b],{name:[0,"name"],back:[1,"back"]},null),(t()(),a["ɵand"](0,[["deletionHeading",2]],null,0,null,N))],(function(t,e){var n=e.component;t(e,4,0,n.modalRef),t(e,7,0,a["ɵnov"](e,44)),t(e,11,0,n.deletionForm),t(e,14,0,n.deletionForm),t(e,17,0,n.bodyContext,n.bodyTemplate),t(e,20,0,n.itemNames,a["ɵnov"](e,21)),t(e,23,0),t(e,30,0,"confirmation"),t(e,33,0,""),t(e,34,0,"confirmation"),t(e,39,0,n.deletionForm),t(e,41,0,a["ɵnov"](e,44)),t(e,43,0,"Cancel",n.modalRef.hide)}),(function(t,e){t(e,9,0,a["ɵnov"](e,13).ngClassUntouched,a["ɵnov"](e,13).ngClassTouched,a["ɵnov"](e,13).ngClassPristine,a["ɵnov"](e,13).ngClassDirty,a["ɵnov"](e,13).ngClassValid,a["ɵnov"](e,13).ngClassInvalid,a["ɵnov"](e,13).ngClassPending),t(e,22,0,a["ɵnov"](e,23).hasErrors,a["ɵnov"](e,23).hasSuccess),t(e,27,0,a["ɵnov"](e,32).ngClassUntouched,a["ɵnov"](e,32).ngClassTouched,a["ɵnov"](e,32).ngClassPristine,a["ɵnov"](e,32).ngClassDirty,a["ɵnov"](e,32).ngClassValid,a["ɵnov"](e,32).ngClassInvalid,a["ɵnov"](e,32).ngClassPending,a["ɵnov"](e,34).validClass,a["ɵnov"](e,34).invalidClass)}))}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-deletion-modal",[],null,null,null,C,y)),a["ɵdid"](1,114688,null,0,b.a,[m.a],null,null)],(function(t,e){t(e,1,0)}),null)}var A=a["ɵccf"]("cd-deletion-modal",b.a,R,{},{},[])},PKPk:function(t,e,n){"use strict";var a=n("ZUd8").charAt,r=n("afO8"),i=n("fdAy"),s=r.set,o=r.getterFor("String Iterator");i(String,"String",(function(t){s(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,e=o(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=a(n,r),e.index+=t.length,{value:t,done:!1})}))},PeUW:function(t,e,n){!function(t){"use strict";var e={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};t.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(t){return t+"வது"},preparse:function(t){return t.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(t,e,n){return t<2?" யாமம்":t<6?" வைகறை":t<10?" காலை":t<14?" நண்பகல்":t<18?" எற்பாடு":t<22?" மாலை":" யாமம்"},meridiemHour:function(t,e){return 12===t&&(t=0),"யாமம்"===e?t<2?t:t+12:"வைகறை"===e||"காலை"===e?t:"நண்பகல்"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})}(n("wd/R"))},PpIw:function(t,e,n){!function(t){"use strict";var e={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};t.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(t){return t.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ರಾತ್ರಿ"===e?t<4?t:t+12:"ಬೆಳಿಗ್ಗೆ"===e?t:"ಮಧ್ಯಾಹ್ನ"===e?t>=10?t:t+12:"ಸಂಜೆ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ರಾತ್ರಿ":t<10?"ಬೆಳಿಗ್ಗೆ":t<17?"ಮಧ್ಯಾಹ್ನ":t<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(t){return t+"ನೇ"},week:{dow:0,doy:6}})}(n("wd/R"))},PqYM:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("D0XW"),i=n("Y7HM"),s=n("z+Ro");function o(t=0,e,n){let o=-1;return Object(i.a)(e)?o=Number(e)<1?1:Number(e):Object(s.a)(e)&&(n=e),Object(s.a)(n)||(n=r.a),new a.a(e=>{const a=Object(i.a)(t)?t:+t-n.now();return n.schedule(u,a,{index:0,period:o,subscriber:e})})}function u(t){const{index:e,period:n,subscriber:a}=t;if(a.next(e),!a.closed){if(-1===n)return a.complete();t.index=e+1,this.schedule(t,n)}}},Puqe:function(t,e,n){var a=n("eUgh"),r=n("OBhP"),i=n("S7Xf"),s=n("4uTw"),o=n("juv8"),u=n("4Oe1"),d=n("xs/l"),l=n("G6z8"),c=d((function(t,e){var n={};if(null==t)return n;var d=!1;e=a(e,(function(e){return e=s(e,t),d||(d=e.length>1),e})),o(t,l(t),n),d&&(n=r(n,7,u));for(var c=e.length;c--;)i(n,e[c]);return n}));t.exports=c},Q1l4:function(t,e){t.exports=function(t,e){var n=-1,a=t.length;for(e||(e=Array(a));++n<a;)e[n]=t[n];return e}},QC43:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("MdoF"),i=n("CNMR"),s=n("SVse");n("XFyV"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u}));var o=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["ɵdid"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,"strong",[],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,s["ɵNgClassImpl"],s["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,s.NgClass,[s["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,2),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,"info");var a=t(e,6,0,n.icons.spinner,n.icons.spin);t(e,5,0,a)}),null)}},QFaf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r extends a.k{constructor(t,e,n){super(t,e,n),this.controls=t}get(t){const e=this._get(t);if(!e)throw new Error(`Control '${t}' could not be found!`);return e}_get(t){return super.get(t)||Object.values(this.controls).filter(t=>t.get).map(e=>e instanceof r?e._get(t):e.get(t)).find(t=>Boolean(t))}getValue(t){return this.get(t).value}silentSet(t,e){this.get(t).setValue(e,{emitEvent:!1})}showError(t,e,n){const a=this.get(t);return(e.submitted||a.dirty)&&(n?a.hasError(n):a.invalid)}}},QIyF:function(t,e,n){var a=n("Kz5y");t.exports=function(){return a.Date.now()}},QTAa:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},QWBl:function(t,e,n){"use strict";var a=n("I+eb"),r=n("F8JR");a({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},QcOe:function(t,e,n){var a=n("GoyQ"),r=n("6sVZ"),i=n("7Ix3"),s=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return i(t);var e=r(t),n=[];for(var o in t)("constructor"!=o||!e&&s.call(t,o))&&n.push(o);return n}},Qj4J:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("wd/R"))},QkVE:function(t,e,n){var a=n("EpBk");t.exports=function(t,e){var n=t.__data__;return a(e)?n["string"==typeof e?"string":"hash"]:n.map}},Qo9l:function(t,e,n){var a=n("2oRo");t.exports=a},QoRX:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}},QqLw:function(t,e,n){var a=n("tadb"),r=n("ebwN"),i=n("HOxn"),s=n("yGk4"),o=n("Of+w"),u=n("NykK"),d=n("3Fdi"),l=d(a),c=d(r),f=d(i),h=d(s),g=d(o),p=u;(a&&"[object DataView]"!=p(new a(new ArrayBuffer(1)))||r&&"[object Map]"!=p(new r)||i&&"[object Promise]"!=p(i.resolve())||s&&"[object Set]"!=p(new s)||o&&"[object WeakMap]"!=p(new o))&&(p=function(t){var e=u(t),n="[object Object]"==e?t.constructor:void 0,a=n?d(n):"";if(a)switch(a){case l:return"[object DataView]";case c:return"[object Map]";case f:return"[object Promise]";case h:return"[object Set]";case g:return"[object WeakMap]"}return e}),t.exports=p},"R/W3":function(t,e,n){var a=n("KwMD"),r=n("2ajD"),i=n("CZoQ");t.exports=function(t,e,n){return e==e?i(t,e,n):a(t,r,n)}},RAwQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?r[n][0]:r[n][1]}function n(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10;return n(0===e?t/10:e)}if(t<1e4){for(;t>=10;)t/=10;return n(t)}return n(t/=1e3)}t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(t){return n(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t},past:function(t){return n(t.substr(0,t.indexOf(" ")))?"viru "+t:"virun "+t},s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},RBan:function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},RK3t:function(t,e,n){var a=n("0Dky"),r=n("xrYK"),i="".split;t.exports=a((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==r(t)?i.call(t,""):Object(t)}:Object},RNIs:function(t,e,n){var a=n("tiKp"),r=n("fHMY"),i=n("m/L8"),s=a("unscopables"),o=Array.prototype;null==o[s]&&i.f(o,s,{configurable:!0,value:r(null)}),t.exports=function(t){o[s][t]=!0}},Rf2I:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("LvDl");n("2EZI"),n("Fgil"),n("aXbf");class i{constructor(t,e,n,a,r){this.bsModalRef=t,this.formBuilder=e,this.formatter=n,this.dimlessBinaryPipe=a,this.i18n=r}ngOnInit(){this.createForm()}createForm(){const t={};this.fields.forEach(e=>{t[e.name]=this.createFormControl(e)}),this.formGroup=this.formBuilder.group(t)}createFormControl(t){let e=[];return r.isBoolean(t.required)&&t.required&&e.push(a.B.required),t.validators&&(e=e.concat(t.validators)),new a.i(r.defaultTo("binary"===t.type?this.dimlessBinaryPipe.transform(t.value):t.value,null),{validators:e})}getError(t){const e=this.formGroup.get(t.name).errors;return Object.keys(e).map(n=>this.getErrorMessage(n,e[n],t.errors)).join("<br>")}getErrorMessage(t,e,n){if(n){const e=n[t];if(e)return e}return["binaryMin","binaryMax"].includes(t)?e(this.i18n):this.i18n("required"===t?"This field is required.":"An error occurred.")}onSubmitForm(t){this.fields.filter(t=>"binary"===t.type).map(t=>t.name).forEach(e=>{const n=t[e];n&&(t[e]=this.formatter.toBytes(n))}),this.bsModalRef.hide(),r.isFunction(this.onSubmit)&&this.onSubmit(t)}}},Rm1S:function(t,e,n){"use strict";var a=n("14Sl"),r=n("glrk"),i=n("UMSQ"),s=n("HYAF"),o=n("iqWW"),u=n("FMNM");a("match",1,(function(t,e,n){return[function(e){var n=s(this),a=null==e?void 0:e[t];return void 0!==a?a.call(e,n):new RegExp(e)[t](String(n))},function(t){var a=n(e,t,this);if(a.done)return a.value;var s=r(t),d=String(this);if(!s.global)return u(s,d);var l=s.unicode;s.lastIndex=0;for(var c,f=[],h=0;null!==(c=u(s,d));){var g=String(c[0]);f[h]=g,""===g&&(s.lastIndex=o(d,i(s.lastIndex),l)),h++}return 0===h?null:f}]}))},RnhZ:function(t,e,n){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="RnhZ"},S6ln:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},S7Xf:function(t,e,n){var a=n("4uTw"),r=n("RBan"),i=n("gpbi"),s=n("9Nap");t.exports=function(t,e){return e=a(e,t),null==(t=i(t,e))||delete t[s(r(e))]}},S7zO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("oxzT");n("vCyI"),n("jKX/");class i{constructor(){this.btnColor="secondary",this.dropDownActions=[],this.icons=r.a}ngOnInit(){this.removeActionsWithNoPermissions(),this.updateDropDownActions()}toClassName(t){return t.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()}removeActionsWithNoPermissions(){if(!this.permission)return void(this.tableActions=[]);const t=Object.keys(this.permission).filter(t=>this.permission[t]);this.tableActions=this.tableActions.filter(e=>t.includes(e.permission))}updateDropDownActions(){this.dropDownActions=this.tableActions.filter(t=>t.visible?t.visible(this.selection):t)}getCurrentButton(){if(this.dropDownOnly)return;let t=this.dropDownActions.find(t=>this.showableAction(t));return!t&&this.dropDownActions.length>0&&(t=this.dropDownActions[0]),t}showableAction(t){const e=t.canBePrimary,n=this.selection.hasSingleSelection,a="create"===t.permission?!n:n;return e&&e(this.selection)||!e&&a}useRouterLink(t){if(t.routerLink&&!this.disableSelectionAction(t))return a.isString(t.routerLink)?t.routerLink:t.routerLink()}disableSelectionAction(t){const e=t.disable;if(e)return Boolean(e(this.selection));const n=t.permission,a=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(n)&&(!a||a.cdExecuting))}showDropDownActions(){return this.updateDropDownActions(),this.dropDownActions.length>1}useClickAction(t){return!this.disableSelectionAction(t)&&t.click&&t.click()}useDisableDesc(t){return t.disableDesc&&t.disableDesc()}}},"SB+Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return encodeURIComponent(t)}}},SFxW:function(t,e,n){!function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10;return t+(e[n]||e[t%100-n]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},SKAX:function(t,e,n){var a=n("JC6p"),r=n("lQqw")(a);t.exports=r},SPu7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pl-PL">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Rozwiń</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Pulpit</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosty</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Usługi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD-ki</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguracja</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Zarządca modułów</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Logi</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pule</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Dostęp blokowy</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Kopia lustrzana</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>Sieciowy system plików NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systemy plików</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Dostęp obiektowy</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Demony</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Wybierz język</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Trwa ładowanie danych...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Wybór czasu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Zresetuj ustawienia</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Wstecz</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Błąd wczytywania danych.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>Wybrane</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>Znaleziono</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>Razem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nazwa</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Opis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Długi opis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Domyślna</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Domyślny demon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Wartości</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Zapisz</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>widok CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Ładowanie...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nazwa hosta</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Tak, jestem pewny.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Anuluj</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zamknij</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista hostów</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Całkowita wydajność</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nie znaleziono wejść</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Logi z klastra </target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Audyt logów</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Ładowanie konfiguracji.</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Nie można załadować konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edytuj moduł zarządzania</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Wpisana wartość nie jest poprawnym UUID, np. 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Wpisana wartość musi być poprawnym adresem IP</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Podana wartość musi być liczbą</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Podana wartość musi być liczbą albo dziesiętną.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Klaster ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Zmodyfikowana monmapa</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoka monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kworum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kworum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>wymagany con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>Wymagane mon </target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>W kworum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nie w kworum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Dodaj</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkcje</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flagi OSD w całym klastrze</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Zatwierdź</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Zaawansowane...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorytet odzyskiwania OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorytet</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Dostosuj wartości priorytetowe</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>To pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Wartość powinna być pomiędzy 0 a 1. </target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ponowne ważenie</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {Głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista OSD-ków </target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wartość</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edytuj</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdrowie</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statystyki</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienci</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Każdy klient ma dostęp</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Obowiązkowe pole</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Musi zawierać jedną albo więcej ,rozdzielonych przecinkiem, wartości </target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Na przykład: </target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ dostępu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Dodaj klientów </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Brak dostępnego klastra -- </target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Wybierz klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Dodaj demona</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Pamięć Podręczna</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Brak danych puli -- </target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Wybierz pamięć podręczną -- </target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Użytkownik dostępu obiektowego</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Brak dostępnych użytkowników -- </target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Wybierz użytkownika dostępu obiektowego -- </target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS Użytkownik ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Brak dostępnych klientów -- </target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Wybierz klienta cephx -- </target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nazwa CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etykieta bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Uruchom etykietę bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ścieżka CephFS </target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Ścieżka powinna zaczynać się z \'/\' i następne może być słowo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Nowy katalog będzie stworzony. </target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ścieżka</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Ścieżką może być tylko \'/\' albo słowo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Nowe wiadro będzie stworzone </target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokół NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klient może nie montować podkatalogów ( np. jeśli Tag = foo, klient może nie montować foo/baz) </target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Tagu, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Pseudo, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Brak dostępnych typów dostępu --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Wybierz typ dostępu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>- Brak squasha -</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokół Transportu </target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Witamy w Cephie! </target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nazwa użytkownika jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Hasło jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Zaloguj</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Przepraszam, użytkownik nie istnieje w  Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Zakazany</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Przepraszam, nie masz dostępu do tego czego szukasz. </target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfiguracja RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Usuń wartość konfiguracji lokalnej. Wartość konfiguracji rodzica będzie odziedziczona i zostanie użyta zamiast tej.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimalna wartość wynosi 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista puli</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nazwa może składać się z alfanumerycznych znaków, kresek i podkreśleń.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Wybrana nazwa profilu kodu kasowania jest już używana.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Wtyczka</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Ramka danych (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Musi być większa bądź równa 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Kodowanie kawałka (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Musi być większa bądź równa 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estymator trwałości (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalność  (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domena niepowodzenia Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalność Crusha</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nic</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Rozmiar pakietu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>korzeń Crusha</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>urządzenie klasy Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>którykolwiek</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Katalog</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nazwa...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Wybrana nazwa Ceph pula jest już użyta.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ pula</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Wybierz typ pula --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupa umieszczenia</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Przynajmniej jedna grupa umieszczenia jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Twój klaster nie obsługuje tylu PG. Skalkuluj proszę potrzebną ilość PG.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Pomoc obliczeniowa</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flagi</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Nadpisuje</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Zastosowania</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Skasuj profil kodu.</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Brak profilu kasowania --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Wybierz profil kodu wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Wybierz zasadę Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>zasada Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Kroki Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresja</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Tryb</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorytm</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Brak algorytmu kompresji wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>np. 128 KB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wartość powinna być większa niż 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maksymalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>np. 512 KB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wartość powinna być większa niż minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Stosunek</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Skompresowany stosunek</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wartość powinna być pomiędzy 0.0, a 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>np. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Szczegóły</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Szczegóły wydajności</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Szczegóły poziomów pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Przenieś obraz do kosza</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Zabezpieczenie wygasa w </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Zły format daty. Proszę używać "RRRR-MM-DD GG:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Ochrona już wygasła. Proszę wybrać przyszłą datę lub zostawić pustą.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Przenieś obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Przegląd</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Obiekty docelowe</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Użytkownik</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i \nmogą zawierać jedynie litery, \'.\', \'@\', \'-\', \'_\' lub \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Hasło</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Wspólny użytkownik </target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Wspólne hasło</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Dostępne informacje: </target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>obiekty docelowe iSCSI niedostępne </target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pul</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Dane pula</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Utworzony</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Rozmiar</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Obiekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Rozmiar obiektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Zaopatrzony</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>Niedostępny</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Całkowite rezerwy</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Jednostka maskowana</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Licznik maskowania</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Rodzic</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefiks nazwy bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Zamówienie</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Migawki</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>To ustawienie zastępuję wartość globalną.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globalne</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>To jest globalna wartość. Dla tego obrazu nie ustawiono żadnej wartości dla tej opcji.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' and \'@\' nie są dozwolone.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Brak dostępnych rbd puli --  </target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Wybierz pul --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Użyj dedykowanych danych pul </target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Dane pul</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedykowany pul, który przechowuje dane obiektowe z RBD</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Musisz zwiększyć rozmiar.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Maskowanie</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednostka pasków</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Wybierz jednostkę pasków -- </target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Pole jest wymagane, ponieważ licznik pasków jest zdefiniowany. </target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednostka pasków jest większa niż rozmiar obiektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Licznik pasków </target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Pole jest wymagane, ponieważ jednostka pasków jest zdefiniowana! </target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Licznik pasków musi być większy od 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Zaraz się wycofasz. </target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Usuń Śmieci</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Wszystkie</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pul:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nazwa pula</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Przywróć obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Wpisz nazwe nowego obrazu i kliknij. </target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nowa Nazwa</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Wygasły w</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Zabezpieczony do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Zmiana tych parametrów z domyślnych wartości przeważnie nie jest potrzebna.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ustawienia</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Tylny koniec przechowywania</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potwierdź</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ustawienia zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Nazwa IQN obiektu docelowego iSCSI</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Błędna składnia nazwy IQN.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Na przykład: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Więcej informacji</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Ten obiekt docelowy  zmodyfikował zaawansowane ustawienia.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Dodaj portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Ten obraz zmodyfikował ustawienia. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Dodaj obraz.</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Uwierzytelnianie ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inicjatory iSCSI</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klient IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inicjator IQN powinien być unikalny.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i mogą zawierać jedynie litery,  \'.\', \'@\', \'-\', \'_\' lub  \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inicjator iSCSI należą do grupy. Obrazy będą skonfigurowane w grupie. </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Brak dodanych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Dodaj inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupy</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupa</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Dodaj grupę</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Kosz</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Zagadnienia</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizacja</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Gotowy</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Tryb edycji lustrzanego pula</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Sparowany klaster musi być usunięty  przed wyłączeniem lustra. </target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, wybierz, edytuj{Edytuj} inaczej {Dodaj} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nazwa Klastra</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nazwa klastra jest niepoprawna </target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>ID CephX nie jest poprawne.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adres monitora </target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresy rozdzielane przecinkami... </target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adres monitora nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Klucz CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klucz zakodowany w Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Klucz CephX musi być zakodowany w Base64/</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Liczniki wydajności nie są dostępne</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista demonów</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Liczniki wydajności</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Ładowanie wiadra danych</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Number ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Wartość nie jest poprawna.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Wybrana nazwa już jest użyta.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Właściciel</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Wybierz użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Uaktywniony</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ indeksu</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Zasada umieszczania</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Znacznik</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maksymalny znacznik</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Wersja</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Główna wersja</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Czas modyfikacji</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Strefa </target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>kontyngent wiadra</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maksymalny rozmiar</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Nielimitowany</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maksimum obiektów</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nazwa użytkownika</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Wybierz nazwę użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Auto-generowany klucz</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Klucz dostępu</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajny klucz </target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Pełne imię </target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adres email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Zawieszony</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maksimum wiader</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>pod-użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Zdolności</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Limit użytkownika</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Pokaż</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klucze</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- wybierz typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Pozwolenie </target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Wybierz pozwolenie --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>pod-użytkownik</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Wybrane ID pod-użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>odczyt, zapis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pełny</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Szybki klucz</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Auto-generowany sekret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Ładowanie danych użytkownika...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Nie można załadować danych użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Wybrane ID użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ten adres email nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Wybrany adres email jest już użyty.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. wiader </target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Wyłączony</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Zwyczaj</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>klucz S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nie ma pod-użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3 (prosty serwis przechowywania) </target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nie ma kluczy.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Szybki</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nie ma zdolności. </target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Nielimitowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. rozmiar</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Nielimitowane obiekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. obiektów</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Podana wartość musi być &gt;= 0</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Opis...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Pozwolenia</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potwierdź hasło</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Potwierdzające hasło nie pokrywa się z hasłem.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Niepoprawny email.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Zamierzasz usunąć uprawnienia „odczytu / aktualizacji użytkownika” od własnego użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jeśli kontynuujesz, nie będziesz mógł dodawać albo usuwać role od użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Jesteś pewny, że chcesz kontynuować? </target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Pomoc</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentacja</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Interfejs API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ustawienia Pulpitu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Zarządzanie użytkownikami</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Zalogowany użytkownik</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Wyloguj</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atrybuty (mapa OSD-ków)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Niedostępne metadane</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadane</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Licznik wydajności</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Pisze</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Czyta</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Obecne wartości </target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Źródło </target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Poziom</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Może być aktualizowany w czasie wykonywania (edytowalny)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tagi</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Wartości enumerowane </target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Zobacz także </target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status klastra</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Zarządzanie demonami</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Obiekty bram </target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serwery metadanych</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Bramy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Klient IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Przepustowość klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Odczyt/Zapis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Przepustowość odzyskiwania</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Szoruj</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Wydajność</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Pojemność rzędu</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG-y na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Pojemność</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Szeregi</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Obecny</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Zaktualizowane uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Brak dostępnych portali.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nie ma dostępnych obrazów. </target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nie ma dostępnych obrazów. Proszę się upewnić, że dodajesz obraz do obiektu docelowego. </target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nie ma dostępnych inicjatorów iSCSI. Proszę upewnić się, że dodajesz inicjator iSCSI do obiektu docelowego.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>obiekt docelowy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Odczyt bajtów </target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Zapis bajtów</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Odczyt Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Zapis Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancja</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Zagadnienie </target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progres</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Tryb Edycji</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Dodaj parowanie </target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edytuj parowanie</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Usuń parowanie</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Lider</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokalny</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Zdalny</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>lustrzane parowanie</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klucz</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Głębokie spłaszczenie</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Warstwowanie </target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Wyłączna blokada</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa obiektów (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Kronikowanie  (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Wycofywanie migawek RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>migawka RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Usunięty o </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>wersja</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>administrator</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Czuwanie demona </target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Ranga</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Demon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktywność</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>centrale</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>i-węzły</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Użycie</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Zaktualizowany</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Wartość może być zaktualizowana w czasie wykonywania . </target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Demony/klienci nie pobierają tej wartości z\nbazy danych skonfigurowanego monitora. Nie zezwalamy na ustawienie tej opcji przez \'konfiguracje ceph\nustaw.. \'. Ta opcja powinna być skonfigurowana przez ceph.conf albo przez\nterminal.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Opcja działa tylko podczas startu demona.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Opcja dotyczy tylko tworzenia klastra.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Opcja tylko wpływa na tworzenie demona.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Usługa</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Obecna wartość</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Edytowalny</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Włączyć</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Wyłączyć</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Ponowne łączenie, proszę czekać</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adres publiczny</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otwarte sesje</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nie w </target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD-ki, które zostały oznaczone jako poza, nie będą oznaczone ponownie jako w gdy zostaną uruchomion</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nie poza</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD-ki nie będą automatycznie oznaczone jako poza po konfiguracji interwału</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nie powstały </target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD-ki nie mogą startować</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nie upadły</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Raport z niepowodzenia OSD jest ignorowany, także monitory nie oznaczą OSD jako upadłego. </target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pauza </target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pauzuje czytanie i zapisywanie</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nie szoruj</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nie ma głębokiego szorowania</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Głębokie szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Brak zasypywania</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypywanie PG jest zawieszone</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nie przywrócono</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Przywrócenie PGy jest zawieszone </target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Sortuj bitowo</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Użyj sortowania bitowego</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Usuń snap katalogi</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD-ki zmieniły snapsety</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Odzyskaj usunięte</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Podczas zdrowienia zastosowano usunięcie zamiast parowania</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Twardy limit logów PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Ustawia twardy limit na długość logów PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Zaktualizowane flagi OSD-ków</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD-ik</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>poza</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>w</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>upadły</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Zaznacz</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>Stracony OSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>Zaznaczony jako stracony</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>Zniszczony</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG-y</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Czytanie bajtów</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapis bajtów </target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Czytanie ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Zapis ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max zasypywanie</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Max aktywność wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Max pojedynczy start wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uśpienie wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Praca</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>surowość</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Wystartowany</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Użyty</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dostępny</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Działający</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Ostrzeżenie </target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Nieznany</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>Podniesiony</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>brak systemów plików</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktywny</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Rezerwa</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>niedostępny</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktywny demon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kworum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Usługa NFS Ganesha nie jest skonfigurowana</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Użytkownik CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>system plików CephFS </target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(Odziedziczyło z globalnej konfiguracji)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>Odziedziczyło z globalnej konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana -- </target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Brak dostępnym demonów</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Tryb pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min wiek eksmisji</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min wiek wyrównania </target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max bajtów obiektu docelowego </target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max obiektów docelowych</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nie dodano żadnego zastosowania</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Osiągnięto limit zastosowań </target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Pul może mieć maksymalnie 4 definicje aplikacji. </target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Dozwolone znaki \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maksymalna długość wynosi 128 znaków</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtruj lub dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>skasuj profil kodu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Rozmiar repliki</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ostatnia zmiana</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Skasuj profil zakodowany</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>wiadro</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>użytkownik</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Zakres</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Czytaj</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Stwórz</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>System roli </target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Zaktualizuj użytkownika</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Kontynuuj </target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Zostałeś automatycznie wylogowany, ponieważ zostały zmienione twoje role.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Każdy obiekt jest podzielony na części fragmentów danych, każdy jest przechowywany na innym OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Oblicz porcje kodu dla każdego obiektu i przechowuj je na różnych OSD.\n Liczba fragmentów kodujących to również liczba OSD, które mogą zostać wyłączone bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Wtyczka jerasure jest najbardziej uniwersalną i elastyczną wtyczką,\n jest to również domyślne ustawienie dla pui kodowanych przez Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Bardziej elastyczną techniką jest reed_sol_van: wystarczy ustawić k\n oraz m. Technika cauchy_good może być szybsza, ale musisz wybrać rozmiar pakietu\n ostrożnie. Wszystkie reed_sol_r6_op, liberation, blaum_roth, liber8tion są odpowiednikami RAID6\n w tym sensie, że mogą być skonfigurowane tylko z m = 2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Kodowanie będzie wykonywane na pakietach o rozmiarze bajtów naraz.\n Wybór odpowiedniego rozmiaru pakietu jest trudny.\n Dokumentacja jerasure zawiera obszerne informacje na ten temat.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Z wtyczką jerasure, gdy obiekt zakodowany przy użyciu skasowania jest przechowywany na \n wielu OSD-kach, odzyskiwanie po utracie jednego OSD wymaga odczytu ze wszystkich pozostałych.\n Na przykład, jeśli konfiguracja skryptu ma wartość k = 8 ,m = 4 i l=4, utrata jednego OSD wymaga odczytu\n od jedenastu innych do naprawy.\n\n Wtyczka kodu wymazywania lrc tworzy fragmenty o parzystości lokalnej, aby móc je odzyskać\n mniej OSD. Na przykład, jeśli lrc jest skonfigurowane z k = 8, m = 4 i l = 4, zostanie utworzony\n dodatkowy fragment parzystości na każde cztery OSD. Gdy jeden OSD zostanie utracone, może to być\n odzyskane tylko z czterema OSD zamiast jedenastu.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Grupuj fragmenty kodu i danych w zestawy lokalizacji wielkości. Na przykład,\n dla k = 4 i m = 2, gdy lokalność = 3 tworzone są dwie grupy po trzy. Każdy zestaw może\n odzyskać bez czytania kawałków z innego zestawu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Typ wiadra CRUSH, w którym zdefiniowano każdy zestaw porcji\n przez l zostaną zapisane. Na przykład, jeśli jest ustawiony na rack, każda grupa l porcji będzie\n umieszczona w innym raku. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru\n racka. Jeśli nie jest ustawiony, nie ma takiego grupowania.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Wtyczka isa zawiera bibliotekę ISA. Działa tylko na procesorach Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Wtyczka ISA jest dostępna w dwóch formach Reed Solomon.\n Jeśli ustawiono reed_sol_van, jest to Vandermonde, jeśli ustawiono cauchy, to jest to Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Wtyczka shec zawiera wiele bibliotek SHEC.\n Pozwala ceph odzyskać dane bardziej efektywnie niż kody Reeda Solomona.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Liczba kawałków parzystości, z których każdy zawiera każdą porcję danych w swoim zakresie obliczeń. Liczba jest używana jako estymator trwałości. Na przykład, jeśli c = 2,\n 2 OSD można wyłączyć bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nazwa wiadra crush jest użyte do pierwszego kroku reguły CRUSH.\nNa przykład krok jest domyślny.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Upewnij się, że żadne dwie porcje nie znajdują się w wiadrze z tą samą awarią\n domeny. Na przykład, jeśli domena awarii jest hostem, nie zostaną na niej zapisane dwie porcje\n hosta. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru hosta.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Ogranicz umieszczanie do urządzeń określonej klasy\n (np. ssd lub hdd), używając nazw klas urządzeń zgniatających na mapie CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Ustaw nazwę katalogu, z którego ładowana jest wtyczka kodu kasowania.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Dozwolone są wszystkie operacje</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Dozwolone są operacje, które nie modyfikują serweru</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Operacje odczytu i zapisu są zakazane, wszystkie inne dozwolone</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Operacje odczytu i zapisu, oraz wszystkie operacje modyfikujące atrybuty albo katalogi są zakazane </target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Brak dostępu w ogóle</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- wybierz priorytet -- </target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niski</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Wysoki</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informacja</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ostatnie 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ostatnie 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ostatnie 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ostatnia 1 godzina (domyślnie)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ostatnie 3 godziny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ostatnie 6 godzin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ostatnie 12 godzin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ostatnie 24 godziny</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Wczoraj</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Do tej pory dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Przedwczoraj</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ostatnie 2 dni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tego dnia tydzień temu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Poprzedni tydzień</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Ten tydzień </target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Do tej pory w tym tygodniu</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ostatnie 7 dni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Poprzedniego miesiąca</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>ten miesiąc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Do tej pory w tym miesiącu</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ostatnie 30 dni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ostatnie 90 dni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ostatnie 6 miesięcy</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ostatni 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Poprzedniego roku</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Do tej pory bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ostatnie 2 lata</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ostatnie 5 lat</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nie wybrano żadnej pozycji</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Odznacz pozycję, żeby wybrać ponownie</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Osiągnięto limit wyboru. </target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtr tagów.</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Dodaj odznakę</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Brak dostępnych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Sklonuj</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Szoruj głęboko</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>zaznacz jako upadły</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Zaznacz jako w </target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Zaznacz jako stracony</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Zaznacz jako poza</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Zabezpiecz</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Zmień nazwę</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Przenieś do kosza</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Odbezpiecz </target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Usunięty</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Sklonowano</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Skopiowano </target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Spłaszczony</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Przywrócony</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Wycofaj</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Tak</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nie</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Jakość serwisu</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Pożądany limit IO bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Pożądany limit operacji IO na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>limit odczytu BPS</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Pożądany limit odczytu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>limit  odczytu IOPS</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Pożądany limit operacji odczytu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit zapisu BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Pożądany limit zapisu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit zapisu IOPS</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Pożądany limit operacji zapisu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Wiązka BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Żądana granica serii IO bajtów.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Wiązka IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Żądana granica serii operacji IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Odczyt wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Żądana granica serii odczytanych bajtów.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Odczyt wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target> Żądana granica serii operacji odczytu.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Zapis wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Żądana granica serii bajtów zapisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Zapis wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Żądana granica serii operacji zapisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wykonywanie </target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>Wykonaj</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Wykonany</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Nieznane zadanie</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Tworzenie</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>Utwórz</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizowanie </target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Usuwanie</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonowanie</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>Sklonuj </target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopiowanie </target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>Kopiuj</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Spłaszczanie</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Wycofywanie </target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Przenoszenie</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>Przenieś</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Przeniesiono</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Nie znaleziono obrazu.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Przywracanie</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>Przywróć </target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>oczyszczać</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>oczyść</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>Wszystkie pule</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Nie można wyłączyć lustrzenia ponieważ zawiera parowanie.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},STAE:function(t,e,n){var a=n("0Dky");t.exports=!!Object.getOwnPropertySymbols&&!a((function(){return!String(Symbol())}))},SVse:function(t,e,n){"use strict";n.r(e),n.d(e,"ɵangular_packages_common_common_c",(function(){return ae})),n.d(e,"ɵangular_packages_common_common_h",(function(){return At})),n.d(e,"ɵangular_packages_common_common_g",(function(){return Ct})),n.d(e,"ɵangular_packages_common_common_f",(function(){return Nt})),n.d(e,"ɵangular_packages_common_common_k",(function(){return Qt})),n.d(e,"ɵangular_packages_common_common_j",(function(){return Zt})),n.d(e,"ɵangular_packages_common_common_i",(function(){return $t})),n.d(e,"ɵangular_packages_common_common_a",(function(){return ft})),n.d(e,"ɵangular_packages_common_common_b",(function(){return bt})),n.d(e,"ɵangular_packages_common_common_e",(function(){return Se})),n.d(e,"ɵangular_packages_common_common_d",(function(){return Ke})),n.d(e,"ɵregisterLocaleData",(function(){return mt})),n.d(e,"registerLocaleData",(function(){return mt})),n.d(e,"formatDate",(function(){return K})),n.d(e,"formatCurrency",(function(){return ot})),n.d(e,"formatNumber",(function(){return dt})),n.d(e,"formatPercent",(function(){return ut})),n.d(e,"NgLocaleLocalization",(function(){return pt})),n.d(e,"NgLocalization",(function(){return ht})),n.d(e,"Plural",(function(){return g})),n.d(e,"NumberFormatStyle",(function(){return h})),n.d(e,"FormStyle",(function(){return p})),n.d(e,"TranslationWidth",(function(){return b})),n.d(e,"FormatWidth",(function(){return m})),n.d(e,"NumberSymbol",(function(){return y})),n.d(e,"WeekDay",(function(){return v})),n.d(e,"getNumberOfCurrencyDigits",(function(){return V})),n.d(e,"getCurrencySymbol",(function(){return G})),n.d(e,"getLocaleDayPeriods",(function(){return _})),n.d(e,"getLocaleDayNames",(function(){return T})),n.d(e,"getLocaleMonthNames",(function(){return O})),n.d(e,"getLocaleId",(function(){return x})),n.d(e,"getLocaleEraNames",(function(){return w})),n.d(e,"getLocaleWeekEndRange",(function(){return I})),n.d(e,"getLocaleFirstDayOfWeek",(function(){return S})),n.d(e,"getLocaleDateFormat",(function(){return N})),n.d(e,"getLocaleDateTimeFormat",(function(){return R})),n.d(e,"getLocaleExtraDayPeriodRules",(function(){return M})),n.d(e,"getLocaleExtraDayPeriods",(function(){return q})),n.d(e,"getLocalePluralCase",(function(){return D})),n.d(e,"getLocaleTimeFormat",(function(){return C})),n.d(e,"getLocaleNumberSymbol",(function(){return A})),n.d(e,"getLocaleNumberFormat",(function(){return k})),n.d(e,"getLocaleCurrencyName",(function(){return L})),n.d(e,"getLocaleCurrencySymbol",(function(){return E})),n.d(e,"ɵparseCookieValue",(function(){return yt})),n.d(e,"CommonModule",(function(){return $e})),n.d(e,"DeprecatedI18NPipesModule",(function(){return Ze})),n.d(e,"NgClass",(function(){return Lt})),n.d(e,"NgClassBase",(function(){return Et})),n.d(e,"NgForOf",(function(){return Mt})),n.d(e,"NgForOfContext",(function(){return Pt})),n.d(e,"NgIf",(function(){return jt})),n.d(e,"NgIfContext",(function(){return Ft})),n.d(e,"NgPlural",(function(){return Ht})),n.d(e,"NgPluralCase",(function(){return Ut})),n.d(e,"NgStyle",(function(){return ee})),n.d(e,"NgStyleBase",(function(){return te})),n.d(e,"NgSwitch",(function(){return zt})),n.d(e,"NgSwitchCase",(function(){return Bt})),n.d(e,"NgSwitchDefault",(function(){return Yt})),n.d(e,"NgTemplateOutlet",(function(){return ne})),n.d(e,"NgComponentOutlet",(function(){return Dt})),n.d(e,"DOCUMENT",(function(){return Je})),n.d(e,"AsyncPipe",(function(){return Ae})),n.d(e,"DatePipe",(function(){return Pe})),n.d(e,"I18nPluralPipe",(function(){return qe})),n.d(e,"I18nSelectPipe",(function(){return je})),n.d(e,"JsonPipe",(function(){return Fe})),n.d(e,"LowerCasePipe",(function(){return ke})),n.d(e,"CurrencyPipe",(function(){return Ye})),n.d(e,"DecimalPipe",(function(){return ze})),n.d(e,"PercentPipe",(function(){return Be})),n.d(e,"SlicePipe",(function(){return We})),n.d(e,"UpperCasePipe",(function(){return De})),n.d(e,"TitleCasePipe",(function(){return Le})),n.d(e,"KeyValuePipe",(function(){return Ge})),n.d(e,"DeprecatedDatePipe",(function(){return ve})),n.d(e,"DeprecatedCurrencyPipe",(function(){return we})),n.d(e,"DeprecatedDecimalPipe",(function(){return Te})),n.d(e,"DeprecatedPercentPipe",(function(){return Oe})),n.d(e,"ɵPLATFORM_BROWSER_ID",(function(){return Qe})),n.d(e,"ɵPLATFORM_SERVER_ID",(function(){return Xe})),n.d(e,"ɵPLATFORM_WORKER_APP_ID",(function(){return tn})),n.d(e,"ɵPLATFORM_WORKER_UI_ID",(function(){return en})),n.d(e,"isPlatformBrowser",(function(){return nn})),n.d(e,"isPlatformServer",(function(){return an})),n.d(e,"isPlatformWorkerApp",(function(){return rn})),n.d(e,"isPlatformWorkerUi",(function(){return sn})),n.d(e,"VERSION",(function(){return on})),n.d(e,"ViewportScroller",(function(){return un})),n.d(e,"ɵNullViewportScroller",(function(){return ln})),n.d(e,"ɵNgClassImplProvider__POST_R3__",(function(){return Rt})),n.d(e,"ɵNgClassR2Impl",(function(){return It})),n.d(e,"ɵNgClassImpl",(function(){return St})),n.d(e,"ɵNgStyleImplProvider__POST_R3__",(function(){return Jt})),n.d(e,"ɵNgStyleR2Impl",(function(){return Kt})),n.d(e,"ɵNgStyleImpl",(function(){return Wt})),n.d(e,"ɵngStyleDirectiveDef__POST_R3__",(function(){return Xt})),n.d(e,"ɵngClassDirectiveDef__POST_R3__",(function(){return kt})),n.d(e,"PlatformLocation",(function(){return r})),n.d(e,"LOCATION_INITIALIZED",(function(){return i})),n.d(e,"LocationStrategy",(function(){return s})),n.d(e,"APP_BASE_HREF",(function(){return o})),n.d(e,"HashLocationStrategy",(function(){return l})),n.d(e,"PathLocationStrategy",(function(){return c})),n.d(e,"Location",(function(){return u}));var a=n("8Y7J");class r{}const i=new a.InjectionToken("Location Initialized");class s{}const o=new a.InjectionToken("appBaseHref");class u{constructor(t,e){this._subject=new a.EventEmitter,this._urlChangeListeners=[],this._platformStrategy=t;const n=this._platformStrategy.getBaseHref();this._platformLocation=e,this._baseHref=u.stripTrailingSlash(d(n)),this._platformStrategy.onPopState(t=>{this._subject.emit({url:this.path(!0),pop:!0,state:t.state,type:t.type})})}path(t=!1){return this.normalize(this._platformStrategy.path(t))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(t,e=""){return this.path()==this.normalize(t+u.normalizeQueryParams(e))}normalize(t){return u.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,d(t)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)}go(t,e="",n=null){this._platformStrategy.pushState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+u.normalizeQueryParams(e)),n)}replaceState(t,e="",n=null){this._platformStrategy.replaceState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+u.normalizeQueryParams(e)),n)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}onUrlChange(t){this._urlChangeListeners.push(t),this.subscribe(t=>{this._notifyUrlChangeListeners(t.url,t.state)})}_notifyUrlChangeListeners(t="",e){this._urlChangeListeners.forEach(n=>n(t,e))}subscribe(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})}static normalizeQueryParams(t){return t&&"?"!==t[0]?"?"+t:t}static joinWithSlash(t,e){if(0==t.length)return e;if(0==e.length)return t;let n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e}static stripTrailingSlash(t){const e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)}}function d(t){return t.replace(/\/index.html$/,"")}class l extends s{constructor(t,e){super(),this._platformLocation=t,this._baseHref="",null!=e&&(this._baseHref=e)}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}path(t=!1){let e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e}prepareExternalUrl(t){const e=u.joinWithSlash(this._baseHref,t);return e.length>0?"#"+e:e}pushState(t,e,n,a){let r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){let r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}class c extends s{constructor(t,e){if(super(),this._platformLocation=t,null==e&&(e=this._platformLocation.getBaseHrefFromDOM()),null==e)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=e}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return u.joinWithSlash(this._baseHref,t)}path(t=!1){const e=this._platformLocation.pathname+u.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?`${e}${n}`:e}pushState(t,e,n,a){const r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){const r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}const f={ADP:[void 0,void 0,0],AFN:[void 0,void 0,0],ALL:[void 0,void 0,0],AMD:[void 0,void 0,0],AOA:[void 0,"Kz"],ARS:[void 0,"$"],AUD:["A$","$"],BAM:[void 0,"KM"],BBD:[void 0,"$"],BDT:[void 0,"৳"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,"$"],BND:[void 0,"$"],BOB:[void 0,"Bs"],BRL:["R$"],BSD:[void 0,"$"],BWP:[void 0,"P"],BYN:[void 0,"р.",2],BYR:[void 0,void 0,0],BZD:[void 0,"$"],CAD:["CA$","$",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,"$",0],CNY:["CN¥","¥"],COP:[void 0,"$",0],CRC:[void 0,"₡",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"Kč",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E£"],ESP:[void 0,"₧",0],EUR:["€"],FJD:[void 0,"$"],FKP:[void 0,"£"],GBP:["£"],GEL:[void 0,"₾"],GIP:[void 0,"£"],GNF:[void 0,"FG",0],GTQ:[void 0,"Q"],GYD:[void 0,"$",0],HKD:["HK$","$"],HNL:[void 0,"L"],HRK:[void 0,"kn"],HUF:[void 0,"Ft",2],IDR:[void 0,"Rp",0],ILS:["₪"],INR:["₹"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,"kr",0],ITL:[void 0,void 0,0],JMD:[void 0,"$"],JOD:[void 0,void 0,3],JPY:["¥",void 0,0],KHR:[void 0,"៛"],KMF:[void 0,"CF",0],KPW:[void 0,"₩",0],KRW:["₩",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"₸"],LAK:[void 0,"₭",0],LBP:[void 0,"L£",0],LKR:[void 0,"Rs"],LRD:[void 0,"$"],LTL:[void 0,"Lt"],LUF:[void 0,void 0,0],LVL:[void 0,"Ls"],LYD:[void 0,void 0,3],MGA:[void 0,"Ar",0],MGF:[void 0,void 0,0],MMK:[void 0,"K",0],MNT:[void 0,"₮",0],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",0],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"₦"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:[void 0,"₱"],PKR:[void 0,"Rs",0],PLN:[void 0,"zł"],PYG:[void 0,"₲",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"₽"],RUR:[void 0,"р."],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"£"],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"£"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"£",0],THB:[void 0,"฿"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,"T$"],TRL:[void 0,void 0,0],TRY:[void 0,"₺"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,0],UAH:[void 0,"₴"],UGX:[void 0,void 0,0],USD:["$"],UYI:[void 0,void 0,0],UYU:[void 0,"$"],UZS:[void 0,void 0,0],VEF:[void 0,"Bs"],VND:["₫",void 0,0],VUV:[void 0,void 0,0],XAF:["FCFA",void 0,0],XCD:["EC$","$"],XOF:["CFA",void 0,0],XPF:["CFPF",void 0,0],YER:[void 0,void 0,0],ZAR:[void 0,"R"],ZMK:[void 0,void 0,0],ZMW:[void 0,"ZK"],ZWD:[void 0,void 0,0]},h=function(){var t={Decimal:0,Percent:1,Currency:2,Scientific:3};return t[t.Decimal]="Decimal",t[t.Percent]="Percent",t[t.Currency]="Currency",t[t.Scientific]="Scientific",t}(),g=function(){var t={Zero:0,One:1,Two:2,Few:3,Many:4,Other:5};return t[t.Zero]="Zero",t[t.One]="One",t[t.Two]="Two",t[t.Few]="Few",t[t.Many]="Many",t[t.Other]="Other",t}(),p=function(){var t={Format:0,Standalone:1};return t[t.Format]="Format",t[t.Standalone]="Standalone",t}(),b=function(){var t={Narrow:0,Abbreviated:1,Wide:2,Short:3};return t[t.Narrow]="Narrow",t[t.Abbreviated]="Abbreviated",t[t.Wide]="Wide",t[t.Short]="Short",t}(),m=function(){var t={Short:0,Medium:1,Long:2,Full:3};return t[t.Short]="Short",t[t.Medium]="Medium",t[t.Long]="Long",t[t.Full]="Full",t}(),y=function(){var t={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};return t[t.Decimal]="Decimal",t[t.Group]="Group",t[t.List]="List",t[t.PercentSign]="PercentSign",t[t.PlusSign]="PlusSign",t[t.MinusSign]="MinusSign",t[t.Exponential]="Exponential",t[t.SuperscriptingExponent]="SuperscriptingExponent",t[t.PerMille]="PerMille",t[t.Infinity]="Infinity",t[t.NaN]="NaN",t[t.TimeSeparator]="TimeSeparator",t[t.CurrencyDecimal]="CurrencyDecimal",t[t.CurrencyGroup]="CurrencyGroup",t}(),v=function(){var t={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6};return t[t.Sunday]="Sunday",t[t.Monday]="Monday",t[t.Tuesday]="Tuesday",t[t.Wednesday]="Wednesday",t[t.Thursday]="Thursday",t[t.Friday]="Friday",t[t.Saturday]="Saturday",t}();function x(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].LocaleId]}function _(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DayPeriodsFormat],r[a["ɵLocaleDataIndex"].DayPeriodsStandalone]],e);return j(i,n)}function T(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DaysFormat],r[a["ɵLocaleDataIndex"].DaysStandalone]],e);return j(i,n)}function O(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].MonthsFormat],r[a["ɵLocaleDataIndex"].MonthsStandalone]],e);return j(i,n)}function w(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Eras],e)}function S(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].FirstDayOfWeek]}function I(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].WeekendRange]}function N(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateFormat],e)}function C(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].TimeFormat],e)}function R(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateTimeFormat],e)}function A(t,e){const n=Object(a["ɵfindLocaleData"])(t),r=n[a["ɵLocaleDataIndex"].NumberSymbols][e];if(void 0===r){if(e===y.CurrencyDecimal)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Decimal];if(e===y.CurrencyGroup)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Group]}return r}function k(t,e){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].NumberFormats][e]}function E(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencySymbol]||null}function L(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencyName]||null}const D=a["ɵgetLocalePluralCase"];function P(t){if(!t[a["ɵLocaleDataIndex"].ExtraData])throw new Error(`Missing extra locale data for the locale "${t[a["ɵLocaleDataIndex"].LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function M(t){const e=Object(a["ɵfindLocaleData"])(t);return P(e),(e[a["ɵLocaleDataIndex"].ExtraData][2]||[]).map(t=>"string"==typeof t?F(t):[F(t[0]),F(t[1])])}function q(t,e,n){const r=Object(a["ɵfindLocaleData"])(t);P(r);const i=j([r[a["ɵLocaleDataIndex"].ExtraData][0],r[a["ɵLocaleDataIndex"].ExtraData][1]],e)||[];return j(i,n)||[]}function j(t,e){for(let n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function F(t){const[e,n]=t.split(":");return{hours:+e,minutes:+n}}function G(t,e,n="en"){const r=function(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Currencies]}(n)[t]||f[t]||[],i=r[1];return"narrow"===e&&"string"==typeof i?i:r[0]||t}function V(t){let e;const n=f[t];return n&&(e=n[2]),"number"==typeof e?e:2}const z=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,B={},Y=/((?:[^GyMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,H=function(){var t={Short:0,ShortGMT:1,Long:2,Extended:3};return t[t.Short]="Short",t[t.ShortGMT]="ShortGMT",t[t.Long]="Long",t[t.Extended]="Extended",t}(),U=function(){var t={FullYear:0,Month:1,Date:2,Hours:3,Minutes:4,Seconds:5,FractionalSeconds:6,Day:7};return t[t.FullYear]="FullYear",t[t.Month]="Month",t[t.Date]="Date",t[t.Hours]="Hours",t[t.Minutes]="Minutes",t[t.Seconds]="Seconds",t[t.FractionalSeconds]="FractionalSeconds",t[t.Day]="Day",t}(),W=function(){var t={DayPeriods:0,Days:1,Months:2,Eras:3};return t[t.DayPeriods]="DayPeriods",t[t.Days]="Days",t[t.Months]="Months",t[t.Eras]="Eras",t}();function K(t,e,n,a){let r=function(t){if(rt(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){t=t.trim();const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);if(/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){const[e,n,a]=t.split("-").map(t=>+t);return new Date(e,n-1,a)}let n;if(n=t.match(z))return at(n)}const e=new Date(t);if(!rt(e))throw new Error(`Unable to convert "${t}" into a date`);return e}(t);e=function t(e,n){const a=x(e);if(B[a]=B[a]||{},B[a][n])return B[a][n];let r="";switch(n){case"shortDate":r=N(e,m.Short);break;case"mediumDate":r=N(e,m.Medium);break;case"longDate":r=N(e,m.Long);break;case"fullDate":r=N(e,m.Full);break;case"shortTime":r=C(e,m.Short);break;case"mediumTime":r=C(e,m.Medium);break;case"longTime":r=C(e,m.Long);break;case"fullTime":r=C(e,m.Full);break;case"short":const n=t(e,"shortTime"),a=t(e,"shortDate");r=$(R(e,m.Short),[n,a]);break;case"medium":const i=t(e,"mediumTime"),s=t(e,"mediumDate");r=$(R(e,m.Medium),[i,s]);break;case"long":const o=t(e,"longTime"),u=t(e,"longDate");r=$(R(e,m.Long),[o,u]);break;case"full":const d=t(e,"fullTime"),l=t(e,"fullDate");r=$(R(e,m.Full),[d,l])}return r&&(B[a][n]=r),r}(n,e)||e;let i,s=[];for(;e;){if(i=Y.exec(e),!i){s.push(e);break}{s=s.concat(i.slice(1));const t=s.pop();if(!t)break;e=t}}let o=r.getTimezoneOffset();a&&(o=nt(a,o),r=function(t,e,n){const a=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(nt(e,a)-a))}(r,a));let u="";return s.forEach(t=>{const e=function(t){if(et[t])return et[t];let e;switch(t){case"G":case"GG":case"GGG":e=Q(W.Eras,b.Abbreviated);break;case"GGGG":e=Q(W.Eras,b.Wide);break;case"GGGGG":e=Q(W.Eras,b.Narrow);break;case"y":e=J(U.FullYear,1,0,!1,!0);break;case"yy":e=J(U.FullYear,2,0,!0,!0);break;case"yyy":e=J(U.FullYear,3,0,!1,!0);break;case"yyyy":e=J(U.FullYear,4,0,!1,!0);break;case"M":case"L":e=J(U.Month,1,1);break;case"MM":case"LL":e=J(U.Month,2,1);break;case"MMM":e=Q(W.Months,b.Abbreviated);break;case"MMMM":e=Q(W.Months,b.Wide);break;case"MMMMM":e=Q(W.Months,b.Narrow);break;case"LLL":e=Q(W.Months,b.Abbreviated,p.Standalone);break;case"LLLL":e=Q(W.Months,b.Wide,p.Standalone);break;case"LLLLL":e=Q(W.Months,b.Narrow,p.Standalone);break;case"w":e=tt(1);break;case"ww":e=tt(2);break;case"W":e=tt(1,!0);break;case"d":e=J(U.Date,1);break;case"dd":e=J(U.Date,2);break;case"E":case"EE":case"EEE":e=Q(W.Days,b.Abbreviated);break;case"EEEE":e=Q(W.Days,b.Wide);break;case"EEEEE":e=Q(W.Days,b.Narrow);break;case"EEEEEE":e=Q(W.Days,b.Short);break;case"a":case"aa":case"aaa":e=Q(W.DayPeriods,b.Abbreviated);break;case"aaaa":e=Q(W.DayPeriods,b.Wide);break;case"aaaaa":e=Q(W.DayPeriods,b.Narrow);break;case"b":case"bb":case"bbb":e=Q(W.DayPeriods,b.Abbreviated,p.Standalone,!0);break;case"bbbb":e=Q(W.DayPeriods,b.Wide,p.Standalone,!0);break;case"bbbbb":e=Q(W.DayPeriods,b.Narrow,p.Standalone,!0);break;case"B":case"BB":case"BBB":e=Q(W.DayPeriods,b.Abbreviated,p.Format,!0);break;case"BBBB":e=Q(W.DayPeriods,b.Wide,p.Format,!0);break;case"BBBBB":e=Q(W.DayPeriods,b.Narrow,p.Format,!0);break;case"h":e=J(U.Hours,1,-12);break;case"hh":e=J(U.Hours,2,-12);break;case"H":e=J(U.Hours,1);break;case"HH":e=J(U.Hours,2);break;case"m":e=J(U.Minutes,1);break;case"mm":e=J(U.Minutes,2);break;case"s":e=J(U.Seconds,1);break;case"ss":e=J(U.Seconds,2);break;case"S":e=J(U.FractionalSeconds,1);break;case"SS":e=J(U.FractionalSeconds,2);break;case"SSS":e=J(U.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=X(H.Short);break;case"ZZZZZ":e=X(H.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=X(H.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=X(H.Long);break;default:return null}return et[t]=e,e}(t);u+=e?e(r,n,o):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),u}function $(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,(function(t,n){return null!=e&&n in e?e[n]:t}))),t}function Z(t,e,n="-",a,r){let i="";(t<0||r&&t<=0)&&(r?t=1-t:(t=-t,i=n));let s=String(t);for(;s.length<e;)s="0"+s;return a&&(s=s.substr(s.length-e)),i+s}function J(t,e,n=0,a=!1,r=!1){return function(i,s){let o=function(t,e){switch(t){case U.FullYear:return e.getFullYear();case U.Month:return e.getMonth();case U.Date:return e.getDate();case U.Hours:return e.getHours();case U.Minutes:return e.getMinutes();case U.Seconds:return e.getSeconds();case U.FractionalSeconds:return e.getMilliseconds();case U.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${t}".`)}}(t,i);if((n>0||o>-n)&&(o+=n),t===U.Hours)0===o&&-12===n&&(o=12);else if(t===U.FractionalSeconds)return u=e,Z(o,3).substr(0,u);var u;const d=A(s,y.MinusSign);return Z(o,e,d,a,r)}}function Q(t,e,n=p.Format,a=!1){return function(r,i){return function(t,e,n,a,r,i){switch(n){case W.Months:return O(e,r,a)[t.getMonth()];case W.Days:return T(e,r,a)[t.getDay()];case W.DayPeriods:const s=t.getHours(),o=t.getMinutes();if(i){const t=M(e),n=q(e,r,a);let i;if(t.forEach((t,e)=>{if(Array.isArray(t)){const{hours:a,minutes:r}=t[0],{hours:u,minutes:d}=t[1];s>=a&&o>=r&&(s<u||s===u&&o<d)&&(i=n[e])}else{const{hours:a,minutes:r}=t;a===s&&r===o&&(i=n[e])}}),i)return i}return _(e,r,a)[s<12?0:1];case W.Eras:return w(e,a)[t.getFullYear()<=0?0:1];default:throw new Error(`unexpected translation type ${n}`)}}(r,i,t,e,n,a)}}function X(t){return function(e,n,a){const r=-1*a,i=A(n,y.MinusSign),s=r>0?Math.floor(r/60):Math.ceil(r/60);switch(t){case H.Short:return(r>=0?"+":"")+Z(s,2,i)+Z(Math.abs(r%60),2,i);case H.ShortGMT:return"GMT"+(r>=0?"+":"")+Z(s,1,i);case H.Long:return"GMT"+(r>=0?"+":"")+Z(s,2,i)+":"+Z(Math.abs(r%60),2,i);case H.Extended:return 0===a?"Z":(r>=0?"+":"")+Z(s,2,i)+":"+Z(Math.abs(r%60),2,i);default:throw new Error(`Unknown zone width "${t}"`)}}}function tt(t,e=!1){return function(n,a){let r;if(e){const t=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,e=n.getDate();r=1+Math.floor((e+t)/7)}else{const t=function(t){const e=new Date(t,0,1).getDay();return new Date(t,0,1+(e<=4?4:11)-e)}(n.getFullYear()),e=(i=n,new Date(i.getFullYear(),i.getMonth(),i.getDate()+(4-i.getDay()))).getTime()-t.getTime();r=1+Math.round(e/6048e5)}var i;return Z(r,t,A(a,y.MinusSign))}}const et={};function nt(t,e){t=t.replace(/:/g,"");const n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function at(t){const e=new Date(0);let n=0,a=0;const r=t[8]?e.setUTCFullYear:e.setFullYear,i=t[8]?e.setUTCHours:e.setHours;t[9]&&(n=Number(t[9]+t[10]),a=Number(t[9]+t[11])),r.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-n,o=Number(t[5]||0)-a,u=Number(t[6]||0),d=Math.round(1e3*parseFloat("0."+(t[7]||0)));return i.call(e,s,o,u,d),e}function rt(t){return t instanceof Date&&!isNaN(t.valueOf())}const it=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function st(t,e,n,a,r,i,s=!1){let o="",u=!1;if(isFinite(t)){let d=function(t){let e,n,a,r,i,s=Math.abs(t)+"",o=0;for((n=s.indexOf("."))>-1&&(s=s.replace(".","")),(a=s.search(/e/i))>0?(n<0&&(n=a),n+=+s.slice(a+1),s=s.substring(0,a)):n<0&&(n=s.length),a=0;"0"===s.charAt(a);a++);if(a===(i=s.length))e=[0],n=1;else{for(i--;"0"===s.charAt(i);)i--;for(n-=a,e=[],r=0;a<=i;a++,r++)e[r]=Number(s.charAt(a))}return n>22&&(e=e.splice(0,21),o=n-1,n=1),{digits:e,exponent:o,integerLen:n}}(t);s&&(d=function(t){if(0===t.digits[0])return t;const e=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===e?t.digits.push(0,0):1===e&&t.digits.push(0),t.integerLen+=2),t}(d));let l=e.minInt,c=e.minFrac,f=e.maxFrac;if(i){const t=i.match(it);if(null===t)throw new Error(`${i} is not a valid digit info`);const e=t[1],n=t[3],a=t[5];null!=e&&(l=ct(e)),null!=n&&(c=ct(n)),null!=a?f=ct(a):null!=n&&c>f&&(f=c)}!function(t,e,n){if(e>n)throw new Error(`The minimum number of digits after fraction (${e}) is higher than the maximum (${n}).`);let a=t.digits,r=a.length-t.integerLen;const i=Math.min(Math.max(e,r),n);let s=i+t.integerLen,o=a[s];if(s>0){a.splice(Math.max(t.integerLen,s));for(let t=s;t<a.length;t++)a[t]=0}else{r=Math.max(0,r),t.integerLen=1,a.length=Math.max(1,s=i+1),a[0]=0;for(let t=1;t<s;t++)a[t]=0}if(o>=5)if(s-1<0){for(let e=0;e>s;e--)a.unshift(0),t.integerLen++;a.unshift(1),t.integerLen++}else a[s-1]++;for(;r<Math.max(0,i);r++)a.push(0);let u=0!==i;const d=e+t.integerLen,l=a.reduceRight((function(t,e,n,a){return a[n]=(e+=t)<10?e:e-10,u&&(0===a[n]&&n>=d?a.pop():u=!1),e>=10?1:0}),0);l&&(a.unshift(l),t.integerLen++)}(d,c,f);let h=d.digits,g=d.integerLen;const p=d.exponent;let b=[];for(u=h.every(t=>!t);g<l;g++)h.unshift(0);for(;g<0;g++)h.unshift(0);g>0?b=h.splice(g,h.length):(b=h,h=[0]);const m=[];for(h.length>=e.lgSize&&m.unshift(h.splice(-e.lgSize,h.length).join(""));h.length>e.gSize;)m.unshift(h.splice(-e.gSize,h.length).join(""));h.length&&m.unshift(h.join("")),o=m.join(A(n,a)),b.length&&(o+=A(n,r)+b.join("")),p&&(o+=A(n,y.Exponential)+"+"+p)}else o=A(n,y.Infinity);return o=t<0&&!u?e.negPre+o+e.negSuf:e.posPre+o+e.posSuf,o}function ot(t,e,n,a,r){const i=lt(k(e,h.Currency),A(e,y.MinusSign));return i.minFrac=V(a),i.maxFrac=i.minFrac,st(t,i,e,y.CurrencyGroup,y.CurrencyDecimal,r).replace("¤",n).replace("¤","")}function ut(t,e,n){return st(t,lt(k(e,h.Percent),A(e,y.MinusSign)),e,y.Group,y.Decimal,n,!0).replace(new RegExp("%","g"),A(e,y.PercentSign))}function dt(t,e,n){return st(t,lt(k(e,h.Decimal),A(e,y.MinusSign)),e,y.Group,y.Decimal,n)}function lt(t,e="-"){const n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},a=t.split(";"),r=a[0],i=a[1],s=-1!==r.indexOf(".")?r.split("."):[r.substring(0,r.lastIndexOf("0")+1),r.substring(r.lastIndexOf("0")+1)],o=s[0],u=s[1]||"";n.posPre=o.substr(0,o.indexOf("#"));for(let l=0;l<u.length;l++){const t=u.charAt(l);"0"===t?n.minFrac=n.maxFrac=l+1:"#"===t?n.maxFrac=l+1:n.posSuf+=t}const d=o.split(",");if(n.gSize=d[1]?d[1].length:0,n.lgSize=d[2]||d[1]?(d[2]||d[1]).length:0,i){const t=r.length-n.posPre.length-n.posSuf.length,e=i.indexOf("#");n.negPre=i.substr(0,e).replace(/'/g,""),n.negSuf=i.substr(e+t).replace(/'/g,"")}else n.negPre=e+n.posPre,n.negSuf=n.posSuf;return n}function ct(t){const e=parseInt(t);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}const ft=new a.InjectionToken("UseV4Plurals");class ht{}function gt(t,e,n,a){let r=`=${t}`;if(e.indexOf(r)>-1)return r;if(r=n.getPluralCategory(t,a),e.indexOf(r)>-1)return r;if(e.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${t}"`)}class pt extends ht{constructor(t,e){super(),this.locale=t,this.deprecatedPluralFn=e}getPluralCategory(t,e){switch(this.deprecatedPluralFn?this.deprecatedPluralFn(e||this.locale,t):D(e||this.locale)(t)){case g.Zero:return"zero";case g.One:return"one";case g.Two:return"two";case g.Few:return"few";case g.Many:return"many";default:return"other"}}}function bt(t,e){"string"==typeof e&&(e=parseInt(e,10));const n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,s=parseInt(a,10),o=parseInt(n.toString().replace(/^[^.]*\.?|0+$/g,""),10)||0;switch(t.split("-")[0].toLowerCase()){case"af":case"asa":case"az":case"bem":case"bez":case"bg":case"brx":case"ce":case"cgg":case"chr":case"ckb":case"ee":case"el":case"eo":case"es":case"eu":case"fo":case"fur":case"gsw":case"ha":case"haw":case"hu":case"jgo":case"jmc":case"ka":case"kk":case"kkj":case"kl":case"ks":case"ksb":case"ky":case"lb":case"lg":case"mas":case"mgo":case"ml":case"mn":case"nb":case"nd":case"ne":case"nn":case"nnh":case"nyn":case"om":case"or":case"os":case"ps":case"rm":case"rof":case"rwk":case"saq":case"seh":case"sn":case"so":case"sq":case"ta":case"te":case"teo":case"tk":case"tr":case"ug":case"uz":case"vo":case"vun":case"wae":case"xog":return 1===n?g.One:g.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?g.One:g.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?g.One:g.Other;case"ar":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?g.Many:g.Other;case"ast":case"ca":case"de":case"en":case"et":case"fi":case"fy":case"gl":case"it":case"nl":case"sv":case"sw":case"ur":case"yi":return 1===r&&0===i?g.One:g.Other;case"be":return n%10==1&&n%100!=11?g.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?g.Few:n%10==0||n%10===Math.floor(n%10)&&n%10>=5&&n%10<=9||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=14?g.Many:g.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?g.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?g.Two:n%10===Math.floor(n%10)&&(n%10>=3&&n%10<=4||n%10==9)&&!(n%100>=10&&n%100<=19||n%100>=70&&n%100<=79||n%100>=90&&n%100<=99)?g.Few:0!==n&&n%1e6==0?g.Many:g.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||s%10==1&&s%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||s%10===Math.floor(s%10)&&s%10>=2&&s%10<=4&&!(s%100>=12&&s%100<=14)?g.Few:g.Other;case"cs":case"sk":return 1===r&&0===i?g.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?g.Few:0!==i?g.Many:g.Other;case"cy":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:3===n?g.Few:6===n?g.Many:g.Other;case"da":return 1===n||0!==o&&(0===r||1===r)?g.One:g.Other;case"dsb":case"hsb":return 0===i&&r%100==1||s%100==1?g.One:0===i&&r%100==2||s%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||s%100===Math.floor(s%100)&&s%100>=3&&s%100<=4?g.Few:g.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?g.One:g.Other;case"fil":return 0===i&&(1===r||2===r||3===r)||0===i&&r%10!=4&&r%10!=6&&r%10!=9||0!==i&&s%10!=4&&s%10!=6&&s%10!=9?g.One:g.Other;case"ga":return 1===n?g.One:2===n?g.Two:n===Math.floor(n)&&n>=3&&n<=6?g.Few:n===Math.floor(n)&&n>=7&&n<=10?g.Many:g.Other;case"gd":return 1===n||11===n?g.One:2===n||12===n?g.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?g.Few:g.Other;case"gv":return 0===i&&r%10==1?g.One:0===i&&r%10==2?g.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?g.Many:g.Other:g.Few;case"he":return 1===r&&0===i?g.One:2===r&&0===i?g.Two:0!==i||n>=0&&n<=10||n%10!=0?g.Other:g.Many;case"is":return 0===o&&r%10==1&&r%100!=11||0!==o?g.One:g.Other;case"ksh":return 0===n?g.Zero:1===n?g.One:g.Other;case"kw":case"naq":case"se":case"smn":return 1===n?g.One:2===n?g.Two:g.Other;case"lag":return 0===n?g.Zero:0!==r&&1!==r||0===n?g.Other:g.One;case"lt":return n%10!=1||n%100>=11&&n%100<=19?n%10===Math.floor(n%10)&&n%10>=2&&n%10<=9&&!(n%100>=11&&n%100<=19)?g.Few:0!==s?g.Many:g.Other:g.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&s%100===Math.floor(s%100)&&s%100>=11&&s%100<=19?g.Zero:n%10==1&&n%100!=11||2===i&&s%10==1&&s%100!=11||2!==i&&s%10==1?g.One:g.Other;case"mk":return 0===i&&r%10==1||s%10==1?g.One:g.Other;case"mt":return 1===n?g.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?g.Many:g.Other;case"pl":return 1===r&&0===i?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&1!==r&&r%10===Math.floor(r%10)&&r%10>=0&&r%10<=1||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=12&&r%100<=14?g.Many:g.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?g.One:g.Other;case"ro":return 1===r&&0===i?g.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?g.Few:g.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&r%10==0||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=11&&r%100<=14?g.Many:g.Other;case"shi":return 0===r||1===n?g.One:n===Math.floor(n)&&n>=2&&n<=10?g.Few:g.Other;case"si":return 0===n||1===n||0===r&&1===s?g.One:g.Other;case"sl":return 0===i&&r%100==1?g.One:0===i&&r%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?g.Few:g.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?g.One:g.Other;default:return g.Other}}function mt(t,e,n){"string"!=typeof e&&(n=e,e=t[a["ɵLocaleDataIndex"].LocaleId]),e=e.toLowerCase().replace(/_/g,"-"),a["ɵLOCALE_DATA"][e]=t,n&&(a["ɵLOCALE_DATA"][e][a["ɵLocaleDataIndex"].ExtraData]=n)}function yt(t,e){e=encodeURIComponent(e);for(const n of t.split(";")){const t=n.indexOf("="),[a,r]=-1==t?[n,""]:[n.slice(0,t),n.slice(t+1)];if(a.trim()===e)return decodeURIComponent(r)}return null}class vt{constructor(t,e){this._name=t,this._options=e,this.value=null,this._lastSetValue=null,this._lastSetValueType=0,this._lastSetValueIdentityChange=!1}setValue(t){if(Array.isArray(t))this._lastSetValueType=4;else if(t instanceof Set)this._lastSetValueType=8;else if(t&&"string"==typeof t){if(!(4&this._options))throw new Error(this._name+" string values are not allowed");this._lastSetValueType=1}else this._lastSetValueType=t?2:0;this._lastSetValueIdentityChange=!0,this._lastSetValue=t||null}hasValueChanged(){let t=this._lastSetValueIdentityChange;if(!(t||14&this._lastSetValueType))return!1;let e=null;const n=!!(1&this._options),a=!!(8&this._options),r=!!(2&this._options);switch(this._lastSetValueType){case 1:const i=this._lastSetValue.split(/\s+/g);16&this._options?(e={},i.forEach((t,n)=>e[t]=!0)):e=i.reduce((t,e,n)=>t+(n?" ":"")+e);break;case 2:const s=this._lastSetValue,o=Object.keys(s);t||(t=!this.value||function(t,e,n){const a=t;if(!wt(Object.keys(e),a))return!0;for(let r=0;r<a.length;r++){const t=a[r];if(e[t]!==n[t])return!0}return!1}(o,this.value,s)),t&&(e=xt(this._name,n,a,r,s,o));break;case 4:case 8:const u=Array.from(this._lastSetValue);t||(t=!wt(Object.keys(this.value),u)),t&&(e=xt(this._name,n,a,r,u));break;default:e=null}return t&&(this.value=e),t}}function xt(t,e,n,a,r,i){const s={};if(i)for(let o=0;o<i.length;o++){let t=i[o];t=e?t.trim():t,Tt(s,t,r[t],n,a)}else for(let o=0;o<r.length;o++){let n=r[o];_t(t,n),n=e?n.trim():n,Tt(s,n,!0,!1,a)}return s}function _t(t,e){if("string"!=typeof e)throw new Error(`${t} can only toggle CSS classes expressed as strings, got ${e}`)}function Tt(t,e,n,a,r){if(r&&e.indexOf(" ")>0){const r=e.split(/\s+/g);for(let e=0;e<r.length;e++)Ot(t,r[e],n,a)}else Ot(t,e,n,a)}function Ot(t,e,n,a){if(a){const t=function(t,e){const n=t.indexOf(".");if(n>0){const a=t.substr(n+1);t=t.substring(0,n),null!=e&&(e+=a)}return{key:t,value:e}}(e,n);n=t.value,e=t.key}t[e]=n}function wt(t,e){if(t&&e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(-1===e.indexOf(t[n]))return!1;return!0}return!1}class St{}class It{constructor(t,e,n,a){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=a,this._initialClasses=[]}getValue(){return null}setClass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}setNgClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(Object(a["ɵisListLikeIterable"])(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}applyChanges(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachChangedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachRemovedItem(t=>{t.previousValue&&this._toggleClass(t.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(t=>{if("string"!=typeof t.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${Object(a["ɵstringify"])(t.item)}`);this._toggleClass(t.item,!0)}),t.forEachRemovedItem(t=>this._toggleClass(t.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!0)):Object.keys(t).forEach(e=>this._toggleClass(e,!!t[e])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!1)):Object.keys(t).forEach(t=>this._toggleClass(t,!1)))}_toggleClass(t,e){(t=t.trim())&&t.split(/\s+/g).forEach(t=>{e?this._renderer.addClass(this._ngEl.nativeElement,t):this._renderer.removeClass(this._ngEl.nativeElement,t)})}}class Nt{constructor(){this._value=null,this._ngClassDiffer=new vt("NgClass",23),this._classStringDiffer=null}getValue(){return this._value}setClass(t){(t||this._classStringDiffer)&&(this._classStringDiffer=this._classStringDiffer||new vt("class",20),this._classStringDiffer.setValue(t))}setNgClass(t){this._ngClassDiffer.setValue(t)}applyChanges(){const t=!!this._classStringDiffer&&this._classStringDiffer.hasValueChanged(),e=this._ngClassDiffer.hasValueChanged();if(t||e){let t=this._ngClassDiffer.value;if(this._classStringDiffer){let e=this._classStringDiffer.value;e&&(t=t?Object.assign({},e,t):e)}this._value=t}}}const Ct={provide:St,useClass:It},Rt={provide:St,useClass:Nt},At=Ct,kt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&(Object(a["ɵɵallocHostVars"])(1),Object(a["ɵɵstyling"])()),2&t&&(Object(a["ɵɵclassMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let Et=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class Lt extends Et{constructor(t){super(t)}set klass(t){this._delegate.setClass(t)}set ngClass(t){this._delegate.setNgClass(t)}ngDoCheck(){this._delegate.applyChanges()}}class Dt{constructor(t){this._viewContainerRef=t,this._componentRef=null,this._moduleRef=null}ngOnChanges(t){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){const e=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(t.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){const t=e.get(a.NgModuleRef);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(t.injector)}else this._moduleRef=null;const n=(this._moduleRef?this._moduleRef.componentFactoryResolver:e.get(a.ComponentFactoryResolver)).resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(n,this._viewContainerRef.length,e,this.ngComponentOutletContent)}}ngOnDestroy(){this._moduleRef&&this._moduleRef.destroy()}}class Pt{constructor(t,e,n,a){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=a}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}}class Mt{constructor(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){Object(a.isDevMode)()&&null!=t&&"function"!=typeof t&&console&&console.warn&&console.warn(`trackBy must be a function, but received ${JSON.stringify(t)}. `+"See https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html#!#change-propagation for more information."),this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const n=this._ngForOf;if(!this._differ&&n)try{this._differ=this._differs.find(n).create(this.ngForTrackBy)}catch(e){throw new Error(`Cannot find a differ supporting object '${n}' of type '${t=n,t.name||typeof t}'. NgFor only supports binding to Iterables such as Arrays.`)}}var t;if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const e=[];t.forEachOperation((t,n,a)=>{if(null==t.previousIndex){const n=this._viewContainer.createEmbeddedView(this._template,new Pt(null,this._ngForOf,-1,-1),null===a?void 0:a),r=new qt(t,n);e.push(r)}else if(null==a)this._viewContainer.remove(null===n?void 0:n);else if(null!==n){const r=this._viewContainer.get(n);this._viewContainer.move(r,a);const i=new qt(t,r);e.push(i)}});for(let n=0;n<e.length;n++)this._perViewChange(e[n].view,e[n].record);for(let n=0,a=this._viewContainer.length;n<a;n++){const t=this._viewContainer.get(n);t.context.index=n,t.context.count=a,t.context.ngForOf=this._ngForOf}t.forEachIdentityChange(t=>{this._viewContainer.get(t.currentIndex).context.$implicit=t.item})}_perViewChange(t,e){t.context.$implicit=e.item}static ngTemplateContextGuard(t,e){return!0}}class qt{constructor(t,e){this.record=t,this.view=e}}class jt{constructor(t,e){this._viewContainer=t,this._context=new Ft,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){Gt("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){Gt("ngIfElse",t),this._elseTemplateRef=t,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)))}}class Ft{constructor(){this.$implicit=null,this.ngIf=null}}function Gt(t,e){if(e&&!e.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${Object(a["ɵstringify"])(e)}'.`)}class Vt{constructor(t,e){this._viewContainerRef=t,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(t){t&&!this._created?this.create():!t&&this._created&&this.destroy()}}class zt{constructor(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(t){this._ngSwitch=t,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(t){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(t)}_matchCase(t){const e=t==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||e,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),e}_updateDefaultCases(t){if(this._defaultViews&&t!==this._defaultUsed){this._defaultUsed=t;for(let e=0;e<this._defaultViews.length;e++)this._defaultViews[e].enforceState(t)}}}class Bt{constructor(t,e,n){this.ngSwitch=n,n._addCase(),this._view=new Vt(t,e)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}class Yt{constructor(t,e,n){n._addDefault(new Vt(t,e))}}class Ht{constructor(t){this._localization=t,this._caseViews={}}set ngPlural(t){this._switchValue=t,this._updateView()}addCase(t,e){this._caseViews[t]=e}_updateView(){this._clearViews();const t=Object.keys(this._caseViews),e=gt(this._switchValue,t,this._localization);this._activateView(this._caseViews[e])}_clearViews(){this._activeView&&this._activeView.destroy()}_activateView(t){t&&(this._activeView=t,this._activeView.create())}}class Ut{constructor(t,e,n,a){this.value=t;const r=!isNaN(Number(t));a.addCase(r?`=${t}`:t,new Vt(n,e))}}class Wt{}class Kt{constructor(t,e,n){this._ngEl=t,this._differs=e,this._renderer=n}getValue(){return null}setNgStyle(t){this._ngStyle=t,!this._differ&&t&&(this._differ=this._differs.find(t).create())}applyChanges(){if(this._differ){const t=this._differ.diff(this._ngStyle);t&&this._applyChanges(t)}}_applyChanges(t){t.forEachRemovedItem(t=>this._setStyle(t.key,null)),t.forEachAddedItem(t=>this._setStyle(t.key,t.currentValue)),t.forEachChangedItem(t=>this._setStyle(t.key,t.currentValue))}_setStyle(t,e){const[n,a]=t.split(".");null!=(e=null!=e&&a?`${e}${a}`:e)?this._renderer.setStyle(this._ngEl.nativeElement,n,e):this._renderer.removeStyle(this._ngEl.nativeElement,n)}}class $t{constructor(){this._differ=new vt("NgStyle",8),this._value=null}getValue(){return this._value}setNgStyle(t){this._differ.setValue(t)}applyChanges(){this._differ.hasValueChanged()&&(this._value=this._differ.value)}}const Zt={provide:Wt,useClass:Kt},Jt={provide:Wt,useClass:$t},Qt=Zt,Xt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&Object(a["ɵɵstyling"])(),2&t&&(Object(a["ɵɵstyleMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let te=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class ee extends te{constructor(t){super(t)}set ngStyle(t){this._delegate.setNgStyle(t)}ngDoCheck(){this._delegate.applyChanges()}}class ne{constructor(t){this._viewContainerRef=t,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null}ngOnChanges(t){this._shouldRecreateView(t)?(this._viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._viewRef)),this.ngTemplateOutlet&&(this._viewRef=this._viewContainerRef.createEmbeddedView(this.ngTemplateOutlet,this.ngTemplateOutletContext))):this._viewRef&&this.ngTemplateOutletContext&&this._updateExistingContext(this.ngTemplateOutletContext)}_shouldRecreateView(t){const e=t.ngTemplateOutletContext;return!!t.ngTemplateOutlet||e&&this._hasContextShapeChanged(e)}_hasContextShapeChanged(t){const e=Object.keys(t.previousValue||{}),n=Object.keys(t.currentValue||{});if(e.length===n.length){for(let t of n)if(-1===e.indexOf(t))return!0;return!1}return!0}_updateExistingContext(t){for(let e of Object.keys(t))this._viewRef.context[e]=this.ngTemplateOutletContext[e]}}const ae=[Lt,Dt,Mt,jt,ne,ee,zt,Bt,Yt,Ht,Ut];function re(t,e){return Error(`InvalidPipeArgument: '${e}' for pipe '${Object(a["ɵstringify"])(t)}'`)}const ie=/((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/,se={yMMMdjms:me(be([ge("year",1),pe("month",3),ge("day",1),ge("hour",1),ge("minute",1),ge("second",1)])),yMdjm:me(be([ge("year",1),ge("month",1),ge("day",1),ge("hour",1),ge("minute",1)])),yMMMMEEEEd:me(be([ge("year",1),pe("month",4),pe("weekday",4),ge("day",1)])),yMMMMd:me(be([ge("year",1),pe("month",4),ge("day",1)])),yMMMd:me(be([ge("year",1),pe("month",3),ge("day",1)])),yMd:me(be([ge("year",1),ge("month",1),ge("day",1)])),jms:me(be([ge("hour",1),ge("second",1),ge("minute",1)])),jm:me(be([ge("hour",1),ge("minute",1)]))},oe={yyyy:me(ge("year",4)),yy:me(ge("year",2)),y:me(ge("year",1)),MMMM:me(pe("month",4)),MMM:me(pe("month",3)),MM:me(ge("month",2)),M:me(ge("month",1)),LLLL:me(pe("month",4)),L:me(pe("month",1)),dd:me(ge("day",2)),d:me(ge("day",1)),HH:ue(le(me(he(ge("hour",2),!1)))),H:le(me(he(ge("hour",1),!1))),hh:ue(le(me(he(ge("hour",2),!0)))),h:le(me(he(ge("hour",1),!0))),jj:me(ge("hour",2)),j:me(ge("hour",1)),mm:ue(me(ge("minute",2))),m:me(ge("minute",1)),ss:ue(me(ge("second",2))),s:me(ge("second",1)),sss:me(ge("second",3)),EEEE:me(pe("weekday",4)),EEE:me(pe("weekday",3)),EE:me(pe("weekday",2)),E:me(pe("weekday",1)),a:de(me(he(ge("hour",1),!0))),Z:fe("short"),z:fe("long"),ww:me({}),w:me({}),G:me(pe("era",1)),GG:me(pe("era",2)),GGG:me(pe("era",3)),GGGG:me(pe("era",4))};function ue(t){return function(e,n){const a=t(e,n);return 1==a.length?"0"+a:a}}function de(t){return function(e,n){return t(e,n).split(" ")[1]}}function le(t){return function(e,n){return t(e,n).split(" ")[0]}}function ce(t,e,n){return new Intl.DateTimeFormat(e,n).format(t).replace(/[\u200e\u200f]/g,"")}function fe(t){const e={hour:"2-digit",hour12:!1,timeZoneName:t};return function(t,n){const a=ce(t,n,e);return a?a.substring(3):""}}function he(t,e){return t.hour12=e,t}function ge(t,e){const n={};return n[t]=2===e?"2-digit":"numeric",n}function pe(t,e){const n={};return n[t]=e<4?e>1?"short":"narrow":"long",n}function be(t){return t.reduce((t,e)=>Object.assign({},t,e),{})}function me(t){return(e,n)=>ce(e,n,t)}const ye=new Map;let ve=(()=>{class t{constructor(t){this._locale=t}transform(e,n="mediumDate"){if(null==e||""===e||e!=e)return null;let a;if("string"==typeof e&&(e=e.trim()),xe(e))a=e;else if(isNaN(e-parseFloat(e)))if("string"==typeof e&&/^(\d{4}-\d{1,2}-\d{1,2})$/.test(e)){const[t,n,r]=e.split("-").map(t=>parseInt(t,10));a=new Date(t,n-1,r)}else a=new Date(e);else a=new Date(parseFloat(e));if(!xe(a)){let n;if("string"!=typeof e||!(n=e.match(z)))throw re(t,e);a=at(n)}return class{static format(t,e,n){return function(t,e,n){const a=se[t];if(a)return a(e,n);const r=t;let i=ye.get(r);if(!i){let e;i=[],ie.exec(t);let n=t;for(;n;)e=ie.exec(n),e?(i=i.concat(e.slice(1)),n=i.pop()):(i.push(n),n=null);ye.set(r,i)}return i.reduce((t,a)=>{const r=oe[a];return t+(r?r(e,n):function(t){return"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}(a))},"")}(n,t,e)}}.format(a,this._locale,t._ALIASES[n]||n)}}return t._ALIASES={medium:"yMMMdjms",short:"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},t})();function xe(t){return t instanceof Date&&!isNaN(t.valueOf())}function _e(t,e,n,a,r,i=null,s=!1){if(null==n)return null;if("number"!=typeof(n="string"!=typeof n||isNaN(+n-parseFloat(n))?n:+n))throw re(t,n);let o,u,d;if(a!==h.Currency&&(o=1,u=0,d=3),r){const t=r.match(it);if(null===t)throw new Error(`${r} is not a valid digit info for number pipes`);null!=t[1]&&(o=ct(t[1])),null!=t[3]&&(u=ct(t[3])),null!=t[5]&&(d=ct(t[5]))}return class{static format(t,e,n,a={}){const{minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,currency:o,currencyAsSymbol:u=!1}=a,d={minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,style:h[n].toLowerCase()};return n==h.Currency&&(d.currency="string"==typeof o?o:void 0,d.currencyDisplay=u?"symbol":"code"),new Intl.NumberFormat(e,d).format(t)}}.format(n,e,a,{minimumIntegerDigits:o,minimumFractionDigits:u,maximumFractionDigits:d,currency:i,currencyAsSymbol:s})}class Te{constructor(t){this._locale=t}transform(t,e){return _e(Te,this._locale,t,h.Decimal,e)}}class Oe{constructor(t){this._locale=t}transform(t,e){return _e(Oe,this._locale,t,h.Percent,e)}}class we{constructor(t){this._locale=t}transform(t,e="USD",n=!1,a){return _e(we,this._locale,t,h.Currency,a,e,n)}}const Se=[Te,Oe,we,ve];class Ie{createSubscription(t,e){return t.subscribe({next:e,error:t=>{throw t}})}dispose(t){t.unsubscribe()}onDestroy(t){t.unsubscribe()}}class Ne{createSubscription(t,e){return t.then(e,t=>{throw t})}dispose(t){}onDestroy(t){}}const Ce=new Ne,Re=new Ie;class Ae{constructor(t){this._ref=t,this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null}ngOnDestroy(){this._subscription&&this._dispose()}transform(t){return this._obj?t!==this._obj?(this._dispose(),this.transform(t)):Object(a["ɵlooseIdentical"])(this._latestValue,this._latestReturnedValue)?this._latestReturnedValue:(this._latestReturnedValue=this._latestValue,a.WrappedValue.wrap(this._latestValue)):(t&&this._subscribe(t),this._latestReturnedValue=this._latestValue,this._latestValue)}_subscribe(t){this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,e=>this._updateLatestValue(t,e))}_selectStrategy(t){if(Object(a["ɵisPromise"])(t))return Ce;if(Object(a["ɵisObservable"])(t))return Re;throw re(Ae,t)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null}_updateLatestValue(t,e){t===this._obj&&(this._latestValue=e,this._ref.markForCheck())}}class ke{transform(t){if(!t)return t;if("string"!=typeof t)throw re(ke,t);return t.toLowerCase()}}const Ee=/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D])\S*/g;class Le{transform(t){if(!t)return t;if("string"!=typeof t)throw re(Le,t);return t.replace(Ee,t=>t[0].toUpperCase()+t.substr(1).toLowerCase())}}class De{transform(t){if(!t)return t;if("string"!=typeof t)throw re(De,t);return t.toUpperCase()}}class Pe{constructor(t){this.locale=t}transform(t,e="mediumDate",n,a){if(null==t||""===t||t!=t)return null;try{return K(t,e,a||this.locale,n)}catch(r){throw re(Pe,r.message)}}}const Me=/#/g;class qe{constructor(t){this._localization=t}transform(t,e,n){if(null==t)return"";if("object"!=typeof e||null===e)throw re(qe,e);return e[gt(t,Object.keys(e),this._localization,n)].replace(Me,t.toString())}}class je{transform(t,e){if(null==t)return"";if("object"!=typeof e||"string"!=typeof t)throw re(je,e);return e.hasOwnProperty(t)?e[t]:e.hasOwnProperty("other")?e.other:""}}class Fe{transform(t){return JSON.stringify(t,null,2)}}class Ge{constructor(t){this.differs=t,this.keyValues=[]}transform(t,e=Ve){if(!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());const n=this.differ.diff(t);return n&&(this.keyValues=[],n.forEachItem(t=>{this.keyValues.push({key:t.key,value:t.currentValue})}),this.keyValues.sort(e)),this.keyValues}}function Ve(t,e){const n=t.key,a=e.key;if(n===a)return 0;if(void 0===n)return 1;if(void 0===a)return-1;if(null===n)return 1;if(null===a)return-1;if("string"==typeof n&&"string"==typeof a)return n<a?-1:1;if("number"==typeof n&&"number"==typeof a)return n-a;if("boolean"==typeof n&&"boolean"==typeof a)return n<a?-1:1;const r=String(n),i=String(a);return r==i?0:r<i?-1:1}class ze{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return dt(Ue(t),n,e)}catch(a){throw re(ze,a.message)}}}class Be{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return ut(Ue(t),n,e)}catch(a){throw re(Be,a.message)}}}class Ye{constructor(t){this._locale=t}transform(t,e,n="symbol",a,r){if(He(t))return null;r=r||this._locale,"boolean"==typeof n&&(console&&console.warn&&console.warn('Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".'),n=n?"symbol":"code");let i=e||"USD";"code"!==n&&(i="symbol"===n||"symbol-narrow"===n?G(i,"symbol"===n?"wide":"narrow",r):n);try{return ot(Ue(t),r,i,e,a)}catch(s){throw re(Ye,s.message)}}}function He(t){return null==t||""===t||t!=t}function Ue(t){if("string"==typeof t&&!isNaN(Number(t)-parseFloat(t)))return Number(t);if("number"!=typeof t)throw new Error(`${t} is not a number`);return t}class We{transform(t,e,n){if(null==t)return t;if(!this.supports(t))throw re(We,t);return t.slice(e,n)}supports(t){return"string"==typeof t||Array.isArray(t)}}const Ke=[Ae,De,ke,Fe,We,ze,Be,Le,Ye,Pe,qe,je,Ge];class $e{}class Ze{}const Je=new a.InjectionToken("DocumentToken"),Qe="browser",Xe="server",tn="browserWorkerApp",en="browserWorkerUi";function nn(t){return t===Qe}function an(t){return t===Xe}function rn(t){return t===tn}function sn(t){return t===en}const on=new a.Version("8.2.14");let un=(()=>{class t{}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({token:t,providedIn:"root",factory:()=>new dn(Object(a["ɵɵinject"])(Je),window,Object(a["ɵɵinject"])(a.ErrorHandler))}),t})();class dn{constructor(t,e,n){this.document=t,this.window=e,this.errorHandler=n,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]}scrollToPosition(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){if(this.supportScrollRestoration()){t=this.window.CSS&&this.window.CSS.escape?this.window.CSS.escape(t):t.replace(/(\"|\'\ |:|\.|\[|\]|,|=)/g,"\\$1");try{const e=this.document.querySelector(`#${t}`);if(e)return void this.scrollToElement(e);const n=this.document.querySelector(`[name='${t}']`);if(n)return void this.scrollToElement(n)}catch(e){this.errorHandler.handleError(e)}}}setHistoryScrollRestoration(t){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}}scrollToElement(t){const e=t.getBoundingClientRect(),n=e.left+this.window.pageXOffset,a=e.top+this.window.pageYOffset,r=this.offset();this.window.scrollTo(n-r[0],a-r[1])}supportScrollRestoration(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}}}class ln{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}}},SatO:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},SeVD:function(t,e,n){"use strict";var a=n("ngJS"),r=n("NJ4a"),i=n("Lhse"),s=n("kJWO"),o=n("I55L"),u=n("c2HN"),d=n("XoHu");n.d(e,"a",(function(){return l}));const l=t=>{if(t&&"function"==typeof t[s.a])return l=t,t=>{const e=l[s.a]();if("function"!=typeof e.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return e.subscribe(t)};if(Object(o.a)(t))return Object(a.a)(t);if(Object(u.a)(t))return n=t,t=>(n.then(e=>{t.closed||(t.next(e),t.complete())},e=>t.error(e)).then(null,r.a),t);if(t&&"function"==typeof t[i.a])return e=t,t=>{const n=e[i.a]();for(;;){const e=n.next();if(e.done){t.complete();break}if(t.next(e.value),t.closed)break}return"function"==typeof n.return&&t.add(()=>{n.return&&n.return()}),t};{const e=Object(d.a)(t)?"an invalid object":`'${t}'`;throw new TypeError(`You provided ${e} where a stream was expected.`+" You can provide an Observable, Promise, Array, or Iterable.")}var e,n,l}},SfRM:function(t,e,n){var a=n("YESw");t.exports=function(){this.__data__=a?a(null):{},this.size=0}},SgmB:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("IheW"),r=n("LRne"),i=n("5+tZ"),s=n("8Y7J"),o=n("pL04");let u=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/role")}delete(t){return this.http.delete(`api/role/${t}`)}get(t){return this.http.get(`api/role/${t}`)}create(t){return this.http.post("api/role",t)}clone(t,e){let n=new a.h;return n=n.append("new_name",e),this.http.post(`api/role/${t}/clone`,null,{params:n})}update(t){return this.http.put(`api/role/${t.name}`,t)}exists(t){return this.list().pipe(Object(i.a)(e=>{const n=e.some(e=>e.name===t);return Object(r.a)(n)}))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](a.c))},token:t,providedIn:o.a}),t})()},SpAZ:function(t,e,n){"use strict";function a(t){return t}n.d(e,"a",(function(){return a}))},SxV6:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("sVev"),r=n("pLZG"),i=n("IzEk"),s=n("xbPD"),o=n("XDbj"),u=n("SpAZ");function d(t,e){const n=arguments.length>=2;return d=>d.pipe(t?Object(r.a)((e,n)=>t(e,n,d)):u.a,Object(i.a)(1),n?Object(s.a)(e):Object(o.a)(()=>new a.a))}},Sxd8:function(t,e,n){var a=n("ZCgT");t.exports=function(t){var e=a(t),n=e%1;return e==e?n?e-n:e:0}},T1AV:function(t,e,n){var a=n("t2Dn"),r=n("5Tg0"),i=n("yP5f"),s=n("Q1l4"),o=n("+iFO"),u=n("03A+"),d=n("Z0cm"),l=n("3L66"),c=n("DSRE"),f=n("lSCD"),h=n("GoyQ"),g=n("YO3V"),p=n("c6wG"),b=n("itsj"),m=n("jeLo");t.exports=function(t,e,n,y,v,x,_){var T=b(t,n),O=b(e,n),w=_.get(O);if(w)a(t,n,w);else{var S=x?x(T,O,n+"",t,e,_):void 0,I=void 0===S;if(I){var N=d(O),C=!N&&c(O),R=!N&&!C&&p(O);S=O,N||C||R?d(T)?S=T:l(T)?S=s(T):C?(I=!1,S=r(O,!0)):R?(I=!1,S=i(O,!0)):S=[]:g(O)||u(O)?(S=T,u(T)?S=m(T):h(T)&&!f(T)||(S=o(O))):I=!1}I&&(_.set(O,S),v(S,O,y,x,_),_.delete(O)),a(t,n,S)}}},TJUb:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e){return a.isPlainObject(e)?a.get(e,t,t):t}}},TNUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"TreeNode, tree-node",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        *ngIf="!templates.treeNodeFullTemplate"\n        [class]="node.getClass()"\n        [class.tree-node]="true"\n        [class.tree-node-expanded]="node.isExpanded && node.hasChildren"\n        [class.tree-node-collapsed]="node.isCollapsed && node.hasChildren"\n        [class.tree-node-leaf]="node.isLeaf"\n        [class.tree-node-active]="node.isActive"\n        [class.tree-node-focused]="node.isFocused"\n      >\n        <tree-node-drop-slot\n          *ngIf="index === 0"\n          [dropIndex]="node.index"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n\n        <tree-node-wrapper\n          [node]="node"\n          [index]="index"\n          [templates]="templates"\n        ></tree-node-wrapper>\n\n        <tree-node-children\n          [node]="node"\n          [templates]="templates"\n        ></tree-node-children>\n        <tree-node-drop-slot\n          [dropIndex]="node.index + 1"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n      </div>\n      <ng-container\n        [ngTemplateOutlet]="templates.treeNodeFullTemplate"\n        [ngTemplateOutletContext]="{\n          $implicit: node,\n          node: node,\n          index: index,\n          templates: templates\n        }"\n      >\n      </ng-container>\n    </ng-container>\n  '})],t)}()},TWQb:function(t,e,n){var a=n("/GqU"),r=n("UMSQ"),i=n("I8vh"),s=function(t){return function(e,n,s){var o,u=a(e),d=r(u.length),l=i(s,d);if(t&&n!=n){for(;d>l;)if((o=u[l++])!=o)return!0}else for(;d>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},TYy9:function(t,e,n){var a=n("XGnz");t.exports=function(t){return null!=t&&t.length?a(t,1):[]}},TYzs:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=parseInt(t,10);return isNaN(e)?t:t+(1===Math.floor(e/10)?"th":e%10==1?"st":e%10==2?"nd":e%10==3?"rd":"th")}}},TeQF:function(t,e,n){"use strict";var a=n("I+eb"),r=n("tycR").filter,i=n("Hd5f"),s=n("rkAj"),o=i("filter"),u=s("filter");a({target:"Array",proto:!0,forced:!o||!u},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},UB5X:function(t,e,n){var a=n("NykK"),r=n("ExA7");t.exports=function(t){return"number"==typeof t||r(t)&&"[object Number]"==a(t)}},UDhR:function(t,e,n){!function(t){"use strict";t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},UMSQ:function(t,e,n){var a=n("ppGB"),r=Math.min;t.exports=function(t){return t>0?r(a(t),9007199254740991):0}},"UNi/":function(t,e){t.exports=function(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}},USCx:function(t,e,n){!function(t){"use strict";t.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},UTVS:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},UfWW:function(t,e,n){var a=n("KwMD"),r=n("ut/Y"),i=n("Sxd8"),s=Math.max;t.exports=function(t,e,n){var o=null==t?0:t.length;if(!o)return-1;var u=null==n?0:i(n);return u<0&&(u=s(o+u,0)),a(t,r(e,3),u)}},UpQW:function(t,e,n){!function(t){"use strict";var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},Ur1D:function(t,e,n){!function(t){"use strict";t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("wd/R"))},UxlC:function(t,e,n){"use strict";var a=n("14Sl"),r=n("glrk"),i=n("ewvW"),s=n("UMSQ"),o=n("ppGB"),u=n("HYAF"),d=n("iqWW"),l=n("FMNM"),c=Math.max,f=Math.min,h=Math.floor,g=/\$([$&'`]|\d\d?|<[^>]*>)/g,p=/\$([$&'`]|\d\d?)/g;a("replace",2,(function(t,e,n,a){var b=a.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=a.REPLACE_KEEPS_$0,y=b?"$":"$0";return[function(n,a){var r=u(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,r,a):e.call(String(r),n,a)},function(t,a){if(!b&&m||"string"==typeof a&&-1===a.indexOf(y)){var i=n(e,t,this,a);if(i.done)return i.value}var u=r(t),h=String(this),g="function"==typeof a;g||(a=String(a));var p=u.global;if(p){var x=u.unicode;u.lastIndex=0}for(var _=[];;){var T=l(u,h);if(null===T)break;if(_.push(T),!p)break;""===String(T[0])&&(u.lastIndex=d(h,s(u.lastIndex),x))}for(var O,w="",S=0,I=0;I<_.length;I++){T=_[I];for(var N=String(T[0]),C=c(f(o(T.index),h.length),0),R=[],A=1;A<T.length;A++)R.push(void 0===(O=T[A])?O:String(O));var k=T.groups;if(g){var E=[N].concat(R,C,h);void 0!==k&&E.push(k);var L=String(a.apply(void 0,E))}else L=v(N,h,C,R,k,a);C>=S&&(w+=h.slice(S,C)+L,S=C+N.length)}return w+h.slice(S)}];function v(t,n,a,r,s,o){var u=a+t.length,d=r.length,l=p;return void 0!==s&&(s=i(s),l=g),e.call(o,l,(function(e,i){var o;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,a);case"'":return n.slice(u);case"<":o=s[i.slice(1,-1)];break;default:var l=+i;if(0===l)return e;if(l>d){var c=h(l/10);return 0===c?e:c<=d?void 0===r[c-1]?i.charAt(1):r[c-1]+i.charAt(1):e}o=r[l-1]}return void 0===o?"":o}))}}))},"V/fk":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},V2x9:function(t,e,n){!function(t){"use strict";t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},V3my:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("DSvg"),n("SgmB"),n("20UP"),n("Mxhz"),n("OLbh")),o=n("DNAf"),u=(n("sne2"),n("oxzT")),d=n("mtw6"),l=(n("2EZI"),n("1Ni5")),c=n("oMSZ"),f=(n("aexS"),n("9nlD"),n("1nQr"),function(t){return t.editing="editing",t}({}));class h{}n.d(e,"a",(function(){return g}));class g{constructor(t,e,n,a,r,i,s,d,l,c,h,g,p){this.authService=t,this.authStorageService=e,this.route=n,this.router=a,this.modalService=r,this.roleService=i,this.userService=s,this.notificationService=d,this.i18n=l,this.actionLabels=c,this.passwordPolicyService=h,this.formBuilder=g,this.settingsService=p,this.userFormMode=f,this.messages=new o.a({empty:this.i18n("There are no roles.")},this.i18n),this.passwordPolicyHelpText="",this.icons=u.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.resource=this.i18n("user"),this.createForm(),this.messages=new o.a({empty:this.i18n("There are no roles.")},this.i18n)}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({username:["",[a.B.required],[l.a.unique(this.userService.validateUserName,this.userService)]],name:[""],password:["",[],[l.a.passwordPolicy(this.userService,()=>this.userForm.getValue("username"),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=r.defaultTo(n,"")})]],confirmpassword:[""],pwdExpirationDate:[""],email:["",[l.a.email]],roles:[[]],enabled:[!0,[a.B.required]],pwdUpdateRequired:[!0]},{validators:[l.a.match("password","confirmpassword")]})}ngOnInit(){this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.minDate=new Date;const t=[this.roleService.list(),this.settingsService.getStandardSettings()];Object(i.a)(t).subscribe(t=>{if(this.allRoles=r.map(t[0],t=>(t.enabled=!0,t)),this.pwdExpirationSettings=new c.a(t[1]),this.mode===this.userFormMode.editing)this.initEdit();else if(this.pwdExpirationSettings.pwdExpirationSpan>0){const t=this.userForm.get("pwdExpirationDate"),e=new Date;e.setDate(this.minDate.getDate()+this.pwdExpirationSettings.pwdExpirationSpan),t.setValue(e),t.setValidators([a.B.required])}})}initEdit(){this.disableForEdit(),this.route.params.subscribe(t=>{this.userService.get(t.username).subscribe(t=>{this.response=r.cloneDeep(t),this.setResponse(t)})})}disableForEdit(){this.userForm.get("username").disable()}setResponse(t){["username","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>this.userForm.get(e).setValue(t[e]));const e=t.pwdExpirationDate;e&&this.userForm.get("pwdExpirationDate").setValue(new Date(1e3*e))}getRequest(){const t=new h;["username","password","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>t[e]=this.userForm.get(e).value);const e=this.userForm.get("pwdExpirationDate").value;return e&&(this.mode===this.userFormMode.editing&&this.response.pwdExpirationDate===Number(e)/1e3||e.setHours(23,59,59),t.pwdExpirationDate=Number(e)/1e3),t}createAction(){const t=this.getRequest();this.userService.create(t).subscribe(()=>{this.notificationService.show(d.a.success,this.i18n('Created user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"])},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}editAction(){if(this.isUserRemovingNeededRolePermissions()){const t={titleText:this.i18n("Update user"),buttonText:this.i18n("Continue"),bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:()=>{this.modalRef.hide(),this.doEditAction()},onCancel:()=>{this.userForm.setErrors({cdSubmitButton:!0}),this.userForm.get("roles").reset(this.userForm.get("roles").value)}};this.modalRef=this.modalService.show(s.a,{initialState:t})}else this.doEditAction()}isCurrentUser(){return this.authStorageService.getUsername()===this.userForm.getValue("username")}isUserChangingRoles(){return this.isCurrentUser()&&this.response&&!r.isEqual(this.response.roles,this.userForm.getValue("roles"))}isUserRemovingNeededRolePermissions(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))}hasUserReadUpdatePermissions(t=[]){for(const e of this.allRoles)if(-1!==t.indexOf(e.name)&&e.scopes_permissions.user){const t=e.scopes_permissions.user;return["read","update"].every(e=>-1!==t.indexOf(e))}return!1}doEditAction(){const t=this.getRequest();this.userService.update(t).subscribe(()=>{this.isUserChangingRoles()?this.authService.logout(()=>{this.notificationService.show(d.a.info,this.i18n("You were automatically logged out because your roles have been changed."))}):(this.notificationService.show(d.a.success,this.i18n('Updated user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"]))},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}clearExpirationDate(){this.userForm.get("pwdExpirationDate").setValue(void 0)}submit(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()}}},V5SL:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="fr-FR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Activer/Désactiver la navigation</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Grappe</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Serveurs</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Moniteurs</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modules Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Journaux</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Réserves</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloc</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Mise en miroir</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systèmes de fichiers</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartiments</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sélectionner une langue</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Chargement des données du panneau...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Sélecteur d\'heure Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Réinitialiser les paramètres</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Retour</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Échec du chargement des données.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>sélectionné(e)(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trouvé(e)(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nom</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Description</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Description longue</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Valeur par défaut</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Valeur par défaut du daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valeurs</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Sauvegarder</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visionneuse de carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Chargement...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nom d\'hôte</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Ce champs est requis.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Oui.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annuler</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fermer</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste d\'hôtes</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performance globale</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Aucune entrée trouvée</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Journaux de grappes</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Journaux d\'audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Chargement de la configuration...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>La configuration n\'a pas pu être chargée.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifier le module Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>La valeur entrée n\'est pas un UUID valide, par exemple : 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>La valeur entrée doit être une adresse IP valide.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>La valeur entrée doit être un nombre.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>La valeur entrée doit être un nombre ou une valeur décimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Mise à jour</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Statut</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de grappe</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modifié</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Dans le quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Hors quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Ajouter</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Drapeaux OSD à l\'échelle de la grappe</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Soumettre</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avancé...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorité de récupération des OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorité</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personnaliser les valeurs de priorité</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Ce champ est obligatoire !</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>La valeur doit être comprise entre 0 et 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Réévaluer</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Liste des OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valeur</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifier</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Supprimer</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Santé</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiques</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Accès possible par tous les clients</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresses</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Champ obligatoire</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Doit contenir une ou plusieurs valeurs séparées par une virgule</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Par exemple :</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Type d\'accès</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Ajouter des clients</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Aucune grappe disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Sélectionner la grappe --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Ajouter un daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de stockage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Aucune réserve de données disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Sélectionner le backend de stockage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utilisateur Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Aucun utilisateur disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Sélectionner l\'utilisateur Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Aucun client disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Sélectionner le client cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nom CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Activer le libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Chemin CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Le chemin doit commencer par \'/\' et peut être suivi d\'un mot</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Un nouveau répertoire sera créé</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Chemin</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Le chemin peut être constitué d\'un seul \'/\' ou d\'un seul mot</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Un compartiment sera créé</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocole NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Balise NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Les clients ne peuvent pas monter de sous-répertoires (si la balise = foo, le client ne peut pas monter foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de balise, il est possible d\'exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de pseudo, il est possible d\'exporter exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Aucun type d\'accès disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Sélectionner le type d\'accès --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Aucun squash disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionnez le type de squash d\'ID utilisateur qui est effectué --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocole de transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bienvenue dans Ceph !</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nom d\'utilisateur requis</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Mot de passe requis</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Connexion</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Désolé, l\'utilisateur n\'existe pas dans Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Interdit</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Désolé, vous n\'êtes pas autorisé à voir ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuration RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Supprimez la valeur de configuration locale. La valeur de configuration parent sera héritée et utilisée à la place.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>La valeur minimale est 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Liste des réserves</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Le nom doit être exclusivement composé de caractères alphanumériques, de tirets et de traits de soulignement.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Le nom de profil du code d\'effacement sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Blocs de données (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Doit être égal ou supérieur à 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Blocs de codage (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Doit être égal ou supérieur à 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimateur de durabilité (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localité (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domaine de défaillance Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localité Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Aucun</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technique</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Taille de paquet</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Racine Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe de périphérique Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>tout</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Répertoire</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nom...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Le nom de réserve Ceph sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Type de réserve</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Sélectionner un type de réserve --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Au moins un groupe de placements est nécessaire.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Votre grappe ne peut pas gérer autant de groupes de placements. Veuillez recalculer le nombre de groupes de placements nécessaires.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Aide au calcul</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Taille de réplication</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Drapeaux</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Écrasements EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applications</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Aucun profil de code d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Sélectionner un profil de code d\'effacement --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Sélectionner une règle crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Règle Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Étapes Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compression</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithme</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Aucun algorithme de compression d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Taille de blob minimale</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>par ex. 128 Kio</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>La valeur doit être supérieure à 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Taille de blob maximale</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>par ex., 512 Kio</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>La valeur doit être supérieure à la taille de blob minimale.</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapport</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapport de compression</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>La valeur doit se situer entre 0.0 et 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>par exemple, 10 Gio</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Détails</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Détails des performances</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Détails des niveaux de mise en cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Déplacer une image vers la corbeille.</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protection expire le </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format de date incorrect. Veuillez utiliser "AAAA-MM-JJ HH:mm:ss"</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protection a déjà expiré. Veuillez sélectionner une date ultérieure ou laisser le champ vide.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Déplacer une image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Présentation</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cibles</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Authentification de la découverte</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utilisateur</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Mot de passe</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utilisateur commun</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Mot de passe commun</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informations disponibles :</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Cibles iSCSI non disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Réserve</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Créé</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Taille</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objets</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Taille de l\'objet</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Provisionné</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Provisionnement total</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Nombre de segmentations</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Parent</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Préfixe du nom de bloc</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Tri</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantanés</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Ce paramètre remplace la valeur globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Il s\'agit de la valeur globale. Aucune valeur de cette option n\'a été définie pour cette image.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>Les caractères \'/\' et \'@\' ne sont pas autorisés.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Aucune réserve RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Sélectionner une réserve --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utiliser une réserve de données dédiée</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Réserve dédiée qui stocke les données objet du RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Vous devez augmenter la taille.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avancé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Segmentation</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Sélectionner une unité de segmentation --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Ce champ est obligatoire, car le nombre de segments est défini.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unité de segmentation est supérieure à la taille de l\'objet.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Nombre de segments</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Ce champ est obligatoire, car l\'unité de segmentation est définie.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Le nombre de segments doit être supérieur à 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Vous êtes sur le point de revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vider la corbeille</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tout</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Réserve :</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nom de la réserve...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurer l\'image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pour restaurer</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>saisissez le nouveau nom de l\'image, puis cliquez sur</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nouveau nom</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Expiration le </target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protection jusqu\'au</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Il n\'est généralement pas nécessaire de modifier ces paramètres par défaut.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Paramètres</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmer</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Paramètres avancés</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cible</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Modèle IQN incorrect.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Par exemple : iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Plus d\'informations</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Des paramètres avancés de cette cible ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portails</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Ajouter un portail</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Des paramètres avancés de cette image ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Ajouter une image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Authentification ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiateurs</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiateur</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN de l\'initiateur doit être unique.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'initiateur appartient à un groupe dans lequel les images seront configurées.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Aucun élément ajouté.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Ajouter un initiateur</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Groupes</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Groupe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Ajouter un groupe</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Corbeille</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problèmes</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronisation en cours</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Prêt</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifier le mode de mise en miroir de la réserve</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Les grappes d\'homologues doivent être supprimées avant de désactiver la mise en miroir.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Modifier} other {Ajouter} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nom de grappe</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Le nom de grappe n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresses du moniteur</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresses séparées par une virgule...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'adresse du moniteur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clef CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clef Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clef CephX doit être codée en base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Compteurs de performance non disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Compteurs de performance</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Chargement des données de compartiment...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>La valeur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Le nom sélectionné est déjà en cours d\'utilisation.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propriétaire</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Sélectionner un utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Activé</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Type d\'index</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Règle de placement</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marqueur</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marqueur maximum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Version principale</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Date de modification</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Groupe de zones</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota de compartiments</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Taille maximale</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimité</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nombre maximal d\'objets</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nom d\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Sélectionner un nom d\'utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Générer automatiquement la clef</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clef d\'accès</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clef secrète</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nom complet</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendu</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Système</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nombre maximal de compartiments</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Utilisateurs secondaires</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utilisateur</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Afficher</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Clefs</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Type</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Sélectionner un type --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorisation</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Sélectionner une autorisation --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Utilisateur secondaire</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID d\'utilisateur secondaire sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lire, écrire</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>complet</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clé Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Générer automatiquement le secret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Chargement des donnés utilisateur…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Les donnés utilisateur n\'ont pas pu être chargées.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utilisateur spécifié est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ceci n\'est pas une adresse électronique valide.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'adresse électronique spécifiée est déjà utilisée.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nombre max. de compartiments</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Désactivé</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personnalisé</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clef S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Il n\'y a aucun utilisateur secondaire.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Il n\'y a pas de clefs.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Il n\'y a aucune fonctionnalité.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Taille illimitée</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Taille max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objets illimités</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nombre max. d\'objets</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>La valeur saisie doit être &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Description...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorisations</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rôles</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmer le mot de passe</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Le mot de passe de confirmation ne correspond pas au mot de passe.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>L\'adresse électronique n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Vous êtes sur le point de supprimer les autorisations "lecture/mise à jour utilisateur" de votre propre utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si vous continuez, vous ne serez plus en mesure d\'ajouter ni de supprimer des rôles pour n\'importe quel utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Voulez-vous vraiment continuer ?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Aide</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>À propos de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Paramètres du tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestion des utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utilisateur connecté</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Se déconnecter</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributs (carte OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Métadonnées non disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Métadonnées</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Compteur de performance</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Écritures</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lectures</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramme</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valeurs actuelles</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Minimum</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maximum</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Source</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Niveau</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Mise à jour possible lors de l\'exécution (modifiable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Balises</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valeurs d\'énuménation</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Voir aussi</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Statut de la grappe</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons du gestionnaire</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Passerelles d\'objet</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serveurs de métadonnées</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Passerelles iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Débit client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectures/Écritures client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Débit de récupération</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Nettoyer</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Performance</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacité brute</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Groupes de placements par OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Statut du groupe de placements</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacité</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Rangs</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actuel</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Authentification de la découverte mise à jour</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Il n\'y a aucun portail disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Il n\'y a aucune image disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Il n\'y a aucune image disponible. Veillez à ajouter une image à la cible.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Il n\'y a aucun initiateur disponible. Veillez à ajouter un initiateur à la cible.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cible</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>État</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O depuis</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problème</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avancement</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode d\'édition</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Ajouter un homologue</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifier un homologue</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Supprimer un homologue</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>nb en local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>nb à distance</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mettre en miroir l\'homologue</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clef</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplatissement en profondeur</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Superposition</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Verrou exclusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Assignation d\'objet (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journalisation (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Retour à l\'état initial de l\'instantané RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Intantané RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Supprimé le</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>type</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>état</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hôte</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>racine</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons en veille</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Activité</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilisation</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Mis à jour</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>La valeur peut être mise à jour au moment de l\'exécution.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Les daemons/clients ne tirent pas cette valeur de\n  la base de données de configuration de Monitor. Nous n\'autorisons pas le réglage de cette option via \'ceph config\n  set ...\'. Cette option doit être configurée via ceph.conf ou via\n  la ligne de commande.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'option ne prend effet qu\'au démarrage du daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'option n\'affecte que la création des grappes.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'option n\'affecte que la création des daemons.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valeur actuelle</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modifiable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Activer</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Désactiver</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconnexion en cours… Veuillez patienter.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adresse publique</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessions ouvertes</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Pas rentrés</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Les OSD qui ont été marqués comme sortis ne seront pas marqués comme rentrés à leur démarrage.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Pas sortis</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Les OSD ne seront pas marqués automatiquement comme sortis après l\'intervalle configuré.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Pas démarrés</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Les OSD ne sont pas autorisés à démarrer.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Pas arrêtés</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Les rapports de défaillance des OSD sont ignorés, de sorte que les moniteurs ne marquent pas les OSD comme étant arrêtés.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Met en pause les lectures et écritures</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Pas de nettoyage</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Nettoyage désactivé</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Pas de nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Le nettoyage en profondeur est désactivé</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Pas de renvoi</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Le renvoi des groupes de placements est suspendu</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Pas de récupération</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La récupération des groupes de placements est suspendue</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Utiliser le tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Variables snapdir purgées</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Les OSD ont converti les variables snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Suppressions des récupérations</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Suppressions effectuées pendant la restauration et non l\'homologation</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite stricte de journalisation des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Impose une limite stricte à la longueur du journal des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Drapeaux OSD mis à jour</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>sorti</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>rentré</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>arrêté</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marquer</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdu</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marqué comme perdu</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purger</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgé</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>détruire</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>détruit</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>supprimer</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Nbre max. de renvois</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Nombre maximum de récupérations actives</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Nombre maximum de démarrages uniques de récupérations</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Mise en veille de la récupération</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Travail</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravité</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Démarré</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilisé</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispo.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Nettoyé</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En cours</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avertissement</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Inconnu</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>opérationnel</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>aucun système de fichiers</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>actif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>veille</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon actif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Le service NFS Ganesha n\'est pas configuré.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Système de fichiers CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(hérité de la configuration globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>hérité de la configuration globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionner le type de squashing d\'ID utilisateur effectué --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Aucun daemon n\'est disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Âge évict min.</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Âge vidage min.</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nombre max d\'octets cibles</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nombre max. d\'objets cibles</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Aucune application ajoutée</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite d\'applications atteinte</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Une réserve peut avoir quatre définitions d\'application maximum.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caractère autorisés \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longueur maximale est de 128 caractères.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrer ou ajouter des applications</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Ajouter une application</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Taille de la réplique</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Dernier changement</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartiment</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartiments</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utilisateur</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Périmètre</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lecture</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Créer</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Rôle système</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Mettre à jour l\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuer</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Vous avez été automatiquement déconnecté, car vos rôles ont changé.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Chaque objet est divisé en parties de blocs de données, chacune étant stockée sur un OSD différent.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calculez des blocs de codage pour chaque objet et stockez-les sur différents OSD.\n Le nombre de blocs de codage correspond également au nombre d\'OSD qui peuvent être arrêtés sans perdre de données.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Le plugin jerasure est le plugin le plus générique et le plus flexible,\n  c\'est aussi la valeur par défaut des réserves codées à effacement Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La technique la plus flexible est reed_sol_van_van : il suffit de définir k\n et m. La technique cauchy_good peut être plus rapide, mais vous devez choisir la taille du paquet\n avec précaution. reed_sol_r6_op, liberation, blaum_roth et liber8tion sont des équivalents RAID6\n en ce sens qu\'ils ne peuvent être configurés qu\'avec m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>L\'encodage se fera sur des paquets de taille d\'octets.\n  Choisir la bonne taille de paquet est difficile.\n  La documentation de jerasure contient de nombreuses informations à ce sujet.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Avec le plugin jerasure, lorsqu\'un objet codé à effacement est stocké sur\n plusieurs OSD, la récupération à la suite de la perte d\'un OSD nécessite la lecture de tous les autres.\n Par exemple, si jerasure est configuré avec k=8 et m=4, la perte d\'un OSD nécessite de lire\n les onze autres pour pouvoir effectuer une réparation.\n\n Le plugin de code d\'effacement lrc crée des blocs de parité locale pour permettre la récupération avec\n moins d\'OSD. Par exemple, si lrc est configuré avec k=8, m=4 et l=4,\n un bloc de parité supplémentaire est créé pour chaque groupe de quatre OSD. Lorsqu\'un seul OSD est perdu, il peut être\n récupéré avec seulement quatre OSD au lieu de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Regroupez les blocs de données et de codage en ensembles de localité de taille. Par exemple,\n pour k=4 et m=2, lorsque locality=3, deux groupes de trois sont créés. Chaque ensemble peut\n être récupéré sans lire les blocs d\'un autre jeu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Type de compartiment Crush dans lequel chaque ensemble de blocs défini\n par I sera stocké. Par exemple, s\'il est réglé sur rack, chaque groupe de blocs I sera\n placé dans un rack différent. Il est utilisé pour créer une étape de la règle CRUSH telle que l\'étape de choix\n d\'un rack. S\'il n\'est pas défini, aucun regroupement de ce type n\'est effectué.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Le plug-in isa encapsule la bibliothèque ISA. Il ne fonctionne qu\'avec des processeurs Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Le plugin ISA se présente sous deux formes Reed Solomon.\n Si reed_sol_van est défini, il équivaut à Vandermonde. Si cauchy est configuré, il équivaut à Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Le plug-in shec encapsule la bibliothèque SHEC multiple.\n Il permet à Ceph de récupérer les données plus efficacement qu\'avec les codes Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Nombre de blocs de parité, chacun incluant chaque bloc de données dans sa\n plage de calcul. Ce nombre est utilisé comme estimateur de durabilité. Par exemple, si c=2,\n 2 OSD peuvent être arrêtés sans perte de données.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nom du compartiment crush utilisé pour la première étape de la règle CRUSH.\n Par exemple, l\'étape de définition des valeurs par défaut.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Vérifiez qu\'il n\'existe pas deux blocs dans un compartiment avec le même domaine de\n défaillance. Par exemple, si le domaine de défaillance est un hôte, deux blocs ne seront pas stockés sur le même\n hôte. Cette option est utilisée pour créer une étape de la règle CRUSH telle que chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restreindre le placement aux périphériques d\'une classe spécifique\n (par exemple, ssd ou hdd), en utilisant les noms des classes de périphériques crush dans la carte CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Définissez le nom du répertoire à partir duquel le plug-in de code d\'effacement est chargé.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Autoriser toutes les opérations</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Autorise uniquement les opérations qui ne modifient pas le serveur</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>N\'autorise pas les opérations de lecture ou d\'écriture, mais toutes les autres.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>N\'autorise pas la lecture, l\'écriture ni aucune autre opération modifiant les attributs d\'un fichier ou le contenu d\'un répertoire.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>N\'autorise aucun accès</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Sélectionner la priorité --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Faible</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Élevée</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informations</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Les 5 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Les 15 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Les 30 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>La dernière heure (par défaut)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Les 3 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Les 6 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Les 12 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Les 24 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Hier</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Aujourd\'hui</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Depuis le début de la journée</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Avant-hier</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Les 2 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Il y a huit jours</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semaine dernière</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Cette semaine</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Depuis le début de la semaine</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Les 7 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Le mois dernier</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Ce mois</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Depuis le début du mois</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Les 30 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Les 90 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Les 6 derniers mois</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>L\'année écoulée</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>L\'année dernière</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Cette année</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Depuis le début de l\'année</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Les 2 dernières années</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Les 5 dernières années</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Aucun élément sélectionné.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Désélectionnez l\'élément pour le sélectionner à nouveau.</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de sélection atteinte</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Balises de filtre</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Ajouter un badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Aucun élément disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Cloner</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copier</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Détruire</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplatir</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marquer comme arrêté</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marquer comme rentré</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marquer comme perdu</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marquer comme sorti</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Protéger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renommer</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurer</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Déplacer vers la corbeille</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Annuler la protection</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Supprimé</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Cloné</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copié</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Applati</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgé</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restauré</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rétabli à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Oui</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Non</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualité de service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de bits/s</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limite souhaitée d\'octets E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limite souhaitée d\'opérations E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de bits/s en lecture</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limite souhaitée de lecture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limite souhaitée d\'opérations de lecture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de bits/s en écriture</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limite souhaitée d\'écriture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limite souhaitée d\'opérations d\'écriture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Rafale de bits/s</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limite de rafale d\'octets en E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Rafale E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limite de rafale d\'opérations E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limite de rafale d\'octets lus par seconde.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limite de rafale d\'opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Rafale E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limite de rafale de lectures d\'octets souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Rafale d\'E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limite de rafale d\'opérations d\'écriture souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>En cours d\'exécution</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>exécuter</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Exécuté</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tâche inconnue</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>En cours de création</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>créer</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>En cours de mise à jour</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>mettre à jour</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>En cours de suppression</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonage en cours</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>cloner</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>En cours de copie</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copie</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplatissement</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplatir</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Retour à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rétablir l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>En cours de déplacement</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>déplacer</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Déplacé</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossible de trouver l\'image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>En cours de restauration.</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurer</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>En cours de purge</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purger</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>toutes les réserves</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossible de désactiver la mise en miroir, car l\'élément contient un homologue.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},V6Ve:function(t,e,n){var a=n("kekF")(Object.keys,Object);t.exports=a},VOtZ:function(t,e,n){var a=n("juv8"),r=n("MvSz");t.exports=function(t,e){return a(t,r(t),e)}},VRyK:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("z+Ro"),i=n("bHdf"),s=n("yCtX");function o(...t){let e=Number.POSITIVE_INFINITY,n=null,o=t[t.length-1];return Object(r.a)(o)?(n=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(e=t.pop())):"number"==typeof o&&(e=t.pop()),null===n&&1===t.length&&t[0]instanceof a.a?t[0]:Object(i.a)(e)(Object(s.a)(t,n))}},VTlA:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("mSOc"),n("ufoC");class a{constructor(t,e){this.taskMessageService=t,this.summaryService=e}init(t,e,n,a,r,i,s){this.getUpdate=t,this.preProcessing=e,this.setList=n,this.onFetchError=a,this.taskFilter=r,this.itemFilter=i,this.builders=s||{},this.summaryDataSubscription=this.summaryService.subscribe(t=>{t&&this.getUpdate().subscribe(e=>{this.updateData(e,t.executing_tasks.filter(this.taskFilter))},this.onFetchError)},this.onFetchError)}updateData(t,e){const n=this.preProcessing?this.preProcessing(t):t;this.addMissing(n,e),n.forEach(t=>{const n=e.filter(e=>this.itemFilter(t,e));t.cdExecuting=this.getTaskAction(n)}),this.setList(n)}addMissing(t,e){const n=this.builders.default;e.forEach(e=>{const a=t.find(t=>this.itemFilter(t,e)),r=this.builders[e.name];a||!r&&!n||t.push(r?r(e.metadata):n(e.metadata))})}getTaskAction(t){if(0!==t.length)return t.map(t=>{const e=t.progress?` ${t.progress}%`:"";return this.taskMessageService.getRunningText(t)+"..."+e}).join(", ")}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}}},VXsX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("LvDl"),r=n("8Y7J");class i{constructor(t,e,n){this.name=t,this.metadata=e,this.onTaskFinished=n}}let s=(()=>{class t{constructor(){this.subscriptions=[]}init(t){return t.subscribe(t=>{if(!t)return;const e=t.executing_tasks,n=t.finished_tasks,a=[];for(const r of this.subscriptions){const t=this._getTask(r,n),i=this._getTask(r,e);null!==t&&null===i&&r.onTaskFinished(t),null!==i&&a.push(r),this.subscriptions=a}})}subscribe(t,e,n){this.subscriptions.push(new i(t,e,n))}_getTask(t,e){for(const n of e)if(n.name===t.name&&a.isEqual(n.metadata,t.metadata))return n;return null}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},VaNO:function(t,e){t.exports=function(t){return this.__data__.has(t)}},Vclq:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("wd/R"))},Vhfg:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("lJxs"),r=n("ej+x"),i=n("8Y7J"),s=n("iInd");let o=(()=>{class t{constructor(t,e){this.router=t,this.featureToggles=e}canActivate(t){return this.featureToggles.get().pipe(Object(a.a)(e=>!1!==e[t.routeConfig.path]||(this.router.navigate(["404"]),!1)))}canActivateChild(t){return this.canActivate(t.parent)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.m),i["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},ViD7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="cs">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Zobraz./skrýt navigaci</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klastr</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Stroje</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Služby</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduly správy</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Fondy</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Zrcadlení</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektová brána</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Procesy služeb</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Nádoby</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Získávají se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Čekejte…\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zobrazují se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>z mezipaměti\n  pro \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Nedaří se načíst dat \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Zkontrolujte zdraví klastru.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Vyčistit oznámení</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Odebrat oznámení</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Trvání:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Nejsou zde žádná oznámení.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Úlohy a oznámení</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Vyberte jazyk</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Načítání údajů panelu…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Nahlédněte do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, kde naleznete jak\n  nastavit a zapnout funkci monitorování.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana přehled neexistuje. Podívejte se do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> jak\n  přidat přehledy do Grafany.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Volič čas Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Resetovat nastavení</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Načíst znovu</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Odebrat uživatelsky určenou hodnotu nastavení. Namísto toho bude převzato a použito výchozí nastavení.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než 1.</target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zpět</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Data se nepodařilo načíst</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>vybráno</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>nalezeno</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>celkem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Název</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Popis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Podrobnější popis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Výchozí</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Výchozí pro proces služby</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Hodnoty</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Uložit</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>prohlížeč CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Načítání…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Název stroje</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Tuto kolonku je třeba vyplnit.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Zvolený název stroje už je používán.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Opravdu chcete označené položky \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> ?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> označené \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ano, opravdu to chci.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Storno</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zavřít</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Seznam strojů</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Celková výkonnost</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Zařízení</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenalezeny žádné položky</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Záznamy událostí v klastra</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Auditní záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorita:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Klíčové slovo:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Volba data</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Časový rozsah:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Načítání nastavení…</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Toto nastavení se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Upravit modul správy</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Zadaná hodnota není platné UUID, např.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Je třeba, aby zadaná hodnota byla platnou IP adresou.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Je třeba, aby byla nižší nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla vyšší než nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo nebo desítkové.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Identif. kastru</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mapa monitorů změněna</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epocha</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kvórum spojení</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kvórum monitor</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>vyžadováno spojení</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>vyžadováno monitorů</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>V kvóru</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Není v kvóru</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Přidat</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkce</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Příznaky OSD pro celý klastr</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Odeslat</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Pokročilé…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Pokročilé volby nastavení</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorita obnovení OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorita</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Přizpůsobit hodnoty priority</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Tuto kolonku je třeba vyplnit!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká, je třeba, aby nebyla vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla nižší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Je třeba, aby hodnota byla mezi 0 a 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Znovu vyvážit</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSD \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>kontrola\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Seznam OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Ticha</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Vyberte atribut vůči kterému hledat shodu --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Hodnota</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Použít regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Upravit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Smazat</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Úprava ticha skončí platnost původního ticha a znovu ho vytvoří jako nové ticho</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Tvůrce</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Komentář</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Čas začátku</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Pokud čas začátku leží v minulosti, bude namísto něj použit okamžik vytvoření</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Trvání</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Čas konce</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdraví</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiky</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Ohledně nastavení a zapnutí funkce správy NFS Ganesha nahlédněte do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienti</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Přistupovat může libovolný klient</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Vyžadovaná kolonka</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Je třeba, aby obsahovalo jednu nebo více čárkou oddělovaných hodnot</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Například:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ přístupu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Přidat klienty</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Žádný klastr k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Vyberte klastr --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Přidat proces služby</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Podpůrná vrstva úložiště</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Žádné fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Vyberte podpůrnou vrstvu úložiště --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Uživatel objektové brány</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Žádní uživatelé k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Vyberte uživatele brány objektů --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>Identif. uživatele CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Žádní klienti k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Vyberte cephx klienta --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Název CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Žádný souborový systém CephFS k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Vyberte CephFS souborový systém --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Zapnout štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Popis umístění CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Je třeba, aby popis umístění začínal na „/“, za kterým následuje slovo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Bude vytvořena nová složka</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Popis umístění</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Popis umístění může být pouze jediné „/“ nebo slovo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Bude vytvořena nová nádoba</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS protokol</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS štítek</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativní přístup pro \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> připojení (nemůže začínat na /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klienti nemohou připojovat podsložky (tj. pokud Tag = neco, klient nemůže připojit neco/podslozka).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Použitím různých voleb Štítku, může to stejné umístění být exportováno vícekrát.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Pozice kterou tento \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export zabírá\n                v \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (je třeba, aby se neopakovalo).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>By using different Pseudo options, the same Path may be exported multiple times.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Je třeba, aby Pseudo začínalo na „/“ a a nemůže obsahovat nic z následujícího: &gt;, &lt;, |, &amp;, ( nebo ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Žádný typ přístupu k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Vyberte typ přístupu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Žádné squash k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportní protokol</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Původní heslo</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Je třeba, aby původní a nové heslo nebyly stejné</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Nové heslo</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Zopakování zadání nového hesla</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Kontrolní zadání nového hesla se neshoduje.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Vítejte v Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Je třeba vyplnit uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Je třeba vyplnit heslo</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Přihlásit</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Je nám líto, uživatel v Ceph neexistuje.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Vrátit se na \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Přihlašovací stránku\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Budete odhlášeni od poskytovatele identity když se pokusíte znovu přihlásit.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Odepřeno</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Omlouváme se, ale nemáte oprávnění zobrazit to, po čem se  poohlížíte.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>Data obdržena v JSON formátu verze 2.x, což je v tuto chvíli nekompatibilní s přehledem.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>výsledek SMART testu samoposouzení celkového stavu</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Informace o zařízení</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Nastavení RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Odebrat hodnotu místnímu nastavení. Namísto ní bude použita hodnota nadřazeného nastavení.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimální hodnota je 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Seznam fondů</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Název může být tvořen pouze písmeny a číslicemi, dále ještě spojovníky a podtržítky.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Zvolený název pro profil mazacího kódu je už používán.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Zásuvný modul</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Shluky dat (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Je třeba, aby bylo 2 a více.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Shluky kódování (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Je třeba, aby bylo 1 a více.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Odhadování odolnosti (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Umístění (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Doména selhání crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalita crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Žádné</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Velikostpaketu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Kořen crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Třída crush zařízení</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>libovolné</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Složka</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Název…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Zvolený název pro Ceph fond je už používán.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Není možné vytvořit RBD fond s názvem „/“ v názvu.\n              Změňte název nebo \'rbd\' odeberte ze seznamu aplikací.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ fondul</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Vybrat typ fondu --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Je třeba alespoň jedné skupiny umístění!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Váš klastr nemůže obsloužit tolik skupin umístění. Přepočítejte potřebné množství skupin umístění.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Nápověda k výpočtu</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikovaná velikost</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Nejméně: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Nejvíce: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Zadaná velikost je mimo rozsah. Platná hodnota je\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> až \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> .\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Příznaky</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC přebití</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikace</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Žádný profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Vyberte profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Sada pravidel crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Vybrat crush pravidlo --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush pravidlo</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush kroky</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprese</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Režim</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Žádný algoritmus komprese mazání --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>např. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Hodnota by měla být vyšší než nula</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Hodnota by měla být nižší než maximální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Nejvyšší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>např. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Hodnota by měla být vyšší než nejnižší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Poměr</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Kompresní poměr</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Hodnota by měla být z rozmezí 0.0 až 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kvóty</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Nejvýše bajtů</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Pro vypnutí této kvóty nevyplňujte nebo zadejte 0 (nulu).</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Platná kvóta by měla být vyšší než 0 (nula).</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>např. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Hodnota by měla být vyšší nebo rovna 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Podrobnosti</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Podrobnosti o výkonnosti</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Podrobnosti o stupních mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Přesunout obraz do koše</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Platnost ochrany skončí v</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Chybný formát data. Použijte „RRRR-MM-DD HH:mm:ss“.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Platnost ochrany už skončila. Zvolte budoucí datum nebo nevyplňujte.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Přesunout obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Brány</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo vyšší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo nižší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cíle</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Uživatele</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména byla 8 až 64 znaků dlouhá a\n              mohu obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ a „:“.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Heslo</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla byla 12 až 16 znaků dlouhá\n              a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Uživatel pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Heslo pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby heslo byla 12 až 16 znaků dlouhá a\n              mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy iSCSI cílů.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informace k dispozici:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI cíl není k dispozici</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>K dispozici pouze pro RBD obrazy se zapnutým \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Fond</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Velikost</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Velikost objektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Poskytováno</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Celkem poskytováno</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Proužkovací jednotka</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Počet proužkování</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Nadřazené</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Předpona názvu bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Pořadí</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Zachycené stavy</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Toto nastavení přebije globální hodnotu</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globální</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Toto je globální hodnota. Pro tento obraz nebyla u této volby nastavena žádná hodnota.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> od\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>„/“ a „@“ nejsou dovoleny.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Žádné rbd fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Vybrat fond --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Použít vyhrazený datový fond</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Vyhrazený fond který uchovává objektová data RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Je třeba zvětšit.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Pokročilé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Proužkování</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednotka proužku</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Vybrat jednotku proužku --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definován počet proužků!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednotka proužku je vyšší než velikost objektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Počet proužků</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definována jednotka proužku!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Je třeba, aby počet proužků byl větší než nula.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Chystáte se vrátit zpět</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vysypat koš</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Vše</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Fond:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Název fondu…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Obnovit obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pro obnovení</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>zadejte nový název pro obraz a klikněte na</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nový název</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Platnost skončila v</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Chráněno do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Tento obraz je chráněn do\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Měnit tyto parametry z jejich výchozích hodnot obvykle není potřeba.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potvrdit</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pokročilá nastavení</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cíle</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN nemá správný formát.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN má následující formu zápisu\n                \'iqn.$rok-$mesic.$adresaObracene:$definovanyNazev\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Například: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Další informace</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Tento cíl má změněná pokročilá nastavení.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portály</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Přidat portál</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Je třeba alespoň \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bran.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Tento obraz má změněná nastavení.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Přidat obraz</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL ověřování</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                obsahovala pouze písmena a případně ještě znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                a obsahovala písmena a znaky „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciátory</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciátor</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN klienta</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Je třeba, aby se IQN iniciátoru neopakovalo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                        mohou obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                        a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 znaků 16 a\n                        mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Iniciátor spadá do skupiny. Obrazy budou nastaveny ve skupině.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nepřidány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Přidat iniciátor</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Skupiny</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Skupina</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Přidat skupinu</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Koš</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>problémy</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizuje se</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Připraveno</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Upravit režim zrcadlení fondu</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Pro úpravu režimu zrcadlení pro fond \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, vyberte ze seznamu nový režim a klikněte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualizovat\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Před vypnutím zrcadlení je třeba odebrat klastry-protějšky.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  protějšek zrcadlení fondu\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Název klastru</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Název klastru není platný</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX identif.</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX identif. …</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX identif. není platný.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresy monitorů</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Čárkou oddělované adresy…</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adresa monitoru není platná.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX klíč</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klíč v base64 kódování…</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Je třeba, aby CephX klíč byl v kódování base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Výkonnostní čítače nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy brány objektů.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Seznam procesů služeb</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Výkonnostní čítače</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Načítání dat nádoby…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Hodnota není platná.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Zvolený název už je používán.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Vlastník</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Vybrat uživatele --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Cíl umístění</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Vybrat cíl umístění --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Verzování</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Zapnuto</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ rejstříku</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Pravidlo umístění</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Označovač</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Nejvyšší označovač</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Verze</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Hlavní verze</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Okamžik úpravy</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Skupinazóny</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kvóta nádoby</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Neomezeno</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Vybrat uživatelské jméno --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Automaticky vytvořit klíč</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Přístupový klíč</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajný klíč</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Celé jméno</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-mailová adresa</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Systém</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Dílčí uživatelé</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Schopnosti</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kvóta uživatele</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Zobrazit</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klíče</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Vybrat typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Vybrat oprávnění --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Zvolený identifikátor dílčího uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>číst, zapisovat</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>plné</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Automaticky vytvořit tajemství</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Načítání údajů uživatele…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Údaje uživatele se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Zvolený identif. uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Toto není platná e-mailová adresa.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Zvolená e-mailová adresa už je používána.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Vypnuto</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Uživatelsky určené</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nejsou zde žádní dílčí uživatelé.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nejsou zde žádné klíče.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nejsou zde žádné schopnosti.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Neomezená velikost</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Neomezené objekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Je třeba, aby zadaná hodnota byla 0 a vyšší.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Popis…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potvrzení zadání hesla</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Zadání hesla se neshodují.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Neplatný e-mail.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Chystáte se odebrat oprávnění „uživatel číst/aktualizovat“ svému vlastnímu účtu.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Pokud budete pokračovat, nebudete nadále schopní přidávat nebo nebo odebírat role žádnému z uživatelů.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Opravdu chcete pokračovat?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Nápověda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentace</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Aplikační program. rozhraní</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O aplikaci</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Nastavení přehledu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Správa uživatelů</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Přihlášený uživatel</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Přihlášeni jako\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Změnit heslo</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Odhlásit</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributy (OSD mapa)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Stav zařízení</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Výkonnostní čítač</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram není k dispozici: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Zápisy</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Stávající hodnoty</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Zdroj</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Úroveň</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Je možné aktualizovat za provozu (upravitelné)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Štítky</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Vyčíslit hodnoty</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Viz také</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stav klastru</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Procesy služby správy</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektové brány</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadata servery</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI brány</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>vst/výst. klienta</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Propustnost klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Čtení/zápis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Propustnost zotavení</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Kontrola</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Výkonnost</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Holá kapacita</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Skupin umístění na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stav skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapacita</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>Další podrobnosti \n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> naleznete v \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>záznamech událostí\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>čítače výkonnosti MDS</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Složky</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Klienti (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Stávající</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Aktualizováno ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Nejsou k dispozici žádné portály.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nejsou k dispozici žádné obrazy.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nejsou k dispozici žádné obrazy. Ověřte, že jste cíli přidali obraz.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nejsou k dispozici žádné iniciátory. Ověřte, že jste cíli přidali iniciátor.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>cíl</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cíl</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target>Počet relací</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Cíl má aktivní relace</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI cíl</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target>Počet cílů</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bajtů čtení</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bajtů zápis</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problém</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Ukazatel postupu</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Upravit režim</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Přidat protějšek</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Upravit protějšek</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Smazat protějšek</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Vedoucí</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Počet místních</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Počet vzdálených</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>zrcadlit protějšek</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klíč</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Hluboké zploštění</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Vrstvení</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Výhradní zámek</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa objektů (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Žurnálování (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Je třeba, aby nadřazený obraz podporoval vrstvy</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Vrácení zachyceného stavu RBD zpět</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Vrácení zpět</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Zachycený stav RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Smazáno v</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>identif.</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stav</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>verze</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Stroj</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>kořen</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Procesy služeb v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Proces služby</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivita</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Struktury složek</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>I-uzlů</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Využití</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Původ</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualizováno</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Hodnotu je možné aktualizovat za chodu.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Procesy služeb / klienti nezískávají tuto hodnotu\n      z databáze nastavení monitoru. Není umožněno nastavit tuto volbu\n      prostřednictvím „ceph config set …\'. Tato volba by měla být nastavena\n      z příkazového řádku.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Volba se uplatní pouze při spouštění procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Volba ovlivní pouze vytváření klastru.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Volba ovlivní pouze vytvoření procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualizována volba nastavení \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Služba</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Stávající hodnota</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Upravitelné</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>stroj</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Popis umístění zařízení</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Aktualizována volba pro modul „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Zapnout</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Vypnout</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>Modul Zpráva je vždy zapnutý.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Opětovné připojování, čekejte…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Veřejná adresa</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otevřené relace</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Počet do</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD které byly dříve odznačeny nebudou označeny nazpět když spustí</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Počet ven</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD nebudou automaticky odznačeny po nastaveném intervalu</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Počet aktivních</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD není dovoleno spuštění</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Počet neaktivních</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Hlášení o selhání OSD jsou ignorovány, jako například že monitory OSD neoznačí jako nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pozastavit</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pozastavit čtení a zápisy</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Žádná kontrola</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Žádná hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Hloubková kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Žádné zasypávání</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypávání skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Žádné obnovení</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Obnovování skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitové třídění</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Třídit podle bitů</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Vyčištěné složky zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD mají převedené sady zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Smazáno při zotavování</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Mazání provedená při obnovování namísto peeringu</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Nepřekročitelný limit záznamu událostí PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Zapne nepřekročitelný limit na délku záznamu událostí v pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualizovány OSD příznaky</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>ven</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>dovnitř</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Značka</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD ztraceno</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Vyčistit</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>smazat</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Priorita zotavování</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Přečteno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapsáno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max Backfills</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Recovery Max Active</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Recovery Max Single Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uspání zotavení</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Aktualizována rychlost zotavení OSD „\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Úloha</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Závažnost</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Zahájeno</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL adresa</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>ticho</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Název atributu</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Přidejte hostitele s Prometheus do nastavení přehledu a znovu načtete stránku</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Vytvořil(a)</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Končí</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Ticho</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Popis stavu</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Použito</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Čisté</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Pracující</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Varování</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Neznámé</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Zdravé</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Chybně umístěno</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degradováno</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Odnalezeno</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>repliky</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>žádné souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktivní proces služby</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kvórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Služba NFS Ganesha není nastavena.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS uživatel</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Souborový systém CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(převzato z globálního nastavení)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>převzato z globálního nastavení</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Nejsou k dispozici žádné procesy služeb.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Režim mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Evict Age</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Flush Age</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nejvýše bajtů cíle</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nejvýše objektů cíle</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nebyla přidána žádná aplikace</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Dosažen limit aplikací</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Fond může mít nejvýše čtyři definice aplikací.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Použitelné znaky „_a-zA-Z0-9“</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Nejvyšší délka je 128 znaků</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrovat nebo přidat aplikace</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Přidat aplikaci</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>fond</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Velikost repliky</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Nejnovější změna</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Mazáním kódovaný profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Sada crush pravidel</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Smazání fondu je vypnuto nastavením mon_allow_pool_delete configuration.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>nádoba</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Vytvořena nádoba objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>nádoby</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>schopnost</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>uživatel</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Aktualizován uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Vytvořen uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>Vyskytla se chyba s kódem \n          <x id="INTERPOLATION" equiv-text="{{code}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Nezpracované</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Práh</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>Když se nezdařilo</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Nejhorší</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Rozsah</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Vytvořit</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Vytvořena role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Aktualizována role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systémová role</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Smazána role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>Nejsou zde žádné role.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Vytvořen uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aktualizovat uživatele</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Pokračovat</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Byli jste automaticky odhlášeni protože vaše role byly změněny.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Aktualizován uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Smazán uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Nepodařilo se smazat uživatele „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>Nyní jste přihlášení jako „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“.\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>heslo</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Aktualizované heslo uživatele"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Každý objekt je rozdělen v částech shluků dat, každé uložené na jiném OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Počítat kódovací shluky pro každý objekt a ukládat je na různých OSD.\n      Počet kódovacích shluků je také počet OSD, které mohou vypadnou, aniž dojde ke ztrátě dat.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Zásuvný modul jerasure je nejobecnější a nejpřizpůsobivější,\n je také výchozí pro Ceph fondy kódované mazáním.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Přizpůsobivější technikou je reed_sol_van: postačí nastvit k\n          a m. Technika cauchy_good technique může být rychlejší, ale je třeba pečlivě nastavit velikost\n          paketu. Všechny z reed_sol_r6_op, liberation, blaum_roth, liber8tion jsou ekvivalenty RAID6\n          v tom smyslu, že je možné je nastavit pouze s m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Zásuvný modul isa obaluje knihovnu ISA. Funguje pouze na procesorech Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Zásuvný modul ISA přichází ve dvou Reed Solomon podobách.\n          Pokud je nastaveno reed_sol_van, je to Vandermonde, pokud je nastaveno Cauchy, je Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Počet paritních shluků, ze kterých každý obsahuje každý shluk dat ve svém\n          výpočetním rozsahu. Číslo je použito pro odhad odolnosti. Například, pokud c=2,\n          2 OSD mohou vypadnou aniž by byla ztracena data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Název crush nádoby sloužící jako první krok CRUSH pravidla.\n Například krok vzít výchozí.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Zajistit, aby žádné dva shluky nebyly v nádobě nacházejícící se ve stejné\n      doméně selhání. Například, pokud doména selhání je hostitel, žádné dva shluky nebudou uloženy na stejném hostiteli\n      Je použito pro vytvoření kroku CRUSH pravidla jako krok chooseleaf hostitele.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Omezit umístění na zařízení určité třídy\n      (např., ssd nebo hdd), pomocí názvu crush třídy zařízení v  CRUSH mapě.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Nastavit složku ze které načítat zásuvný modul mazacího kódu.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Umožnit všechny operace</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Umožnit pouze operace které neupraví server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Neumožňuje operace čtení či zápisu, ale umožňuje ostatní</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Neumožňuje čtení, zápis nebo jinou operaci která upravuje atributy        souboru nebo obsah složky</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Neumožnit vůbec žádný přístup</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Vyberte prioritu --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Nízká</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Vysoká</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Chyba</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informace</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Úspěch</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Uplynulých 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Uplynulých 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Uplynulých 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Uplynulá 1 hodina (výchozí)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Uplynulé 3 hodiny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Uplynulých 6 hodin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Uplynulých 12 hodin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Uplynulých 24 hodin</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Včera</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dnes</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Dnes doposud</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Včerejšek</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Uplynulé 2 dny</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tento den minulý týden</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Předchozí týden</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Tento týden</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Tento týden doposud</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Uplynulých 7 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Předchozí měsíc</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Tento měsíc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Tento měsíc doposud</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Uplynulých 30 dnů</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Uplynulých 90 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Uplynulých 6 měsíců</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Uplynulý 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Předchozí rok</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tento rok</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Tento rok doposud</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Uplynulé 2 roky</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Uplynulých 5 let</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nevybrány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Aby položku bylo možné znovu vybrat, je třeba nejprve zrušit její výběr</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Dosažen limit výběru</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrovat štítky</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Přidat odznak</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Nejsou k dispozici žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Odebrat</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonovat</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopírovat</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Zploštit</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Označit ztracené</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Odznačit</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Ochránit</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Přejmenovat</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Obnovit</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Zrušit ochranu</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Změnit</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Znovuvytvořit</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Ukončit platnost</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Smazáno</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Přidáno</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Odebráno</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Upraveno</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Zrušeno</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Naklonováno</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Zkopírováno</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Zploštěno</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Chráněno</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Přejmenováno</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Obnoveno</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Vzato zpět</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Zobrazeno</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Ochrana zrušena</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Znovu vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Platnost skončila</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ano</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Ne</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>žádné aktivní výstrahy</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>Jedna aktivní výstraha</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktivních výstrah\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Odpovídá jednomu pravidlu</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Odpovídá \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> pravidlům\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> s \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kvalita služby</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Požadovaný limit vst./výstup. bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit vst/výstup. operací / s</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Požadovaný limit vst./výstup. operací za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Požadovaný limit čtení bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Požadovaný limit zápisu bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS dávka</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Požadovaný limit dávky bajtů vstup/výstupu.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS dávka</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Požadovaný limit dávky vst./výstup. operací.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Dávka BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Požadovaný limit dávky bajtů čtení.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Dávka IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Požadovaný limit dávky čtení bajtů.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Dávka BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Požadovaný limit bajtů dávky zápisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Dávka IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Požadovaný limit dávky operace zápisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Nepodařilo se \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Vykonává se</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>vykonat</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Vykonáno</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>neznámý úkol</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Vytváří se</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>vytvořit</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizuje se</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Maže se</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Přidávání</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>přidat</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Odebírání</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>odebrat</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD zachycený stav „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>režim zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>protějšek zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>všechny přehledy</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> obsahuje zachycené stavy.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonuje se</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonovat</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Je třeba, aby zachycený stav \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> byl chráněný.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopíruje se</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>zkopírovat</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Zploštění</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>zploštit</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Název už je používán pro \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Není možné zrušit ochranu \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, protože obsahuje podřízené obrazy.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> není možné smazat, protože je chráněné.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Bere se zpět</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>vzít zpět</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Přesouvá se</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>přesunout</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Přesunuto</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do koše\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Obraz se nedaří najít.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Obnovuje se</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>obnovit</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do „\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Název „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ už je používán pro jiný obraz.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Čistí se</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>vyčistit</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>všechny fondy</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>obrazy z \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Zrcadlení nelze vypnout protože obsahuje protějšek.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>stroj „\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>fond „\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>profil mazacího kódu „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>cíl „\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},VpIT:function(t,e,n){var a=n("xDBR"),r=n("xs3f");(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.5",mode:a?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},Vu81:function(t,e,n){var a=n("0GbY"),r=n("JBy8"),i=n("dBg+"),s=n("glrk");t.exports=a("Reflect","ownKeys")||function(t){var e=r.f(s(t)),n=i.f;return n?e.concat(n(t)):e}},WF9J:function(t,e,n){"use strict";n("TeQF"),n("QWBl"),n("4mDm"),n("zKZe"),n("07d7"),n("4l63"),n("PKPk"),n("ENF9"),n("3bBZ");var a=n("hKI/"),r=n.n(a),i=n("9/5/"),s=n.n(i),o=n("uyHG"),u=n.n(o),d=function(){if("undefined"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,a){return t[0]===e&&(n=a,!0)})),n}return function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),a=this.__entries__[n];return a&&a[1]},e.prototype.set=function(e,n){var a=t(this.__entries__,e);~a?this.__entries__[a][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,a=t(n,e);~a&&n.splice(a,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,a=this.__entries__;n<a.length;n++){var r=a[n];t.call(e,r[1],r[0])}},e}()}(),l="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,c="undefined"!=typeof global&&global.Math===Math?global:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),f="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(c):function(t){return setTimeout((function(){return t(Date.now())}),1e3/60)},h=["top","right","bottom","left","width","height","size","weight"],g="undefined"!=typeof MutationObserver,p=function(){function t(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(t,e){var n=!1,a=!1,r=0;function i(){n&&(n=!1,t()),a&&o()}function s(){f(i)}function o(){var t=Date.now();if(n){if(t-r<2)return;a=!0}else n=!0,a=!1,setTimeout(s,20);r=t}return o}(this.refresh.bind(this))}return t.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},t.prototype.removeObserver=function(t){var e=this.observers_,n=e.indexOf(t);~n&&e.splice(n,1),!e.length&&this.connected_&&this.disconnect_()},t.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},t.prototype.updateObservers_=function(){var t=this.observers_.filter((function(t){return t.gatherActive(),t.hasActive()}));return t.forEach((function(t){return t.broadcastActive()})),t.length>0},t.prototype.connect_=function(){l&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),g?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){l&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?"":e;h.some((function(t){return!!~n.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),b=function(t,e){for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];Object.defineProperty(t,r,{value:e[r],enumerable:!1,writable:!1,configurable:!0})}return t},m=function(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView||c},y=T(0,0,0,0);function v(t){return parseFloat(t)||0}function x(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return e.reduce((function(e,n){return e+v(t["border-"+n+"-width"])}),0)}var _="undefined"!=typeof SVGGraphicsElement?function(t){return t instanceof m(t).SVGGraphicsElement}:function(t){return t instanceof m(t).SVGElement&&"function"==typeof t.getBBox};function T(t,e,n,a){return{x:t,y:e,width:n,height:a}}var O=function(){function t(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=T(0,0,0,0),this.target=t}return t.prototype.isActive=function(){var t,e=(t=this.target,l?_(t)?function(t){var e=t.getBBox();return T(0,0,e.width,e.height)}(t):function(t){var e=t.clientWidth,n=t.clientHeight;if(!e&&!n)return y;var a=m(t).getComputedStyle(t),r=function(t){for(var e={},n=0,a=["top","right","bottom","left"];n<a.length;n++){var r=a[n];e[r]=v(t["padding-"+r])}return e}(a),i=r.left+r.right,s=r.top+r.bottom,o=v(a.width),u=v(a.height);if("border-box"===a.boxSizing&&(Math.round(o+i)!==e&&(o-=x(a,"left","right")+i),Math.round(u+s)!==n&&(u-=x(a,"top","bottom")+s)),!function(t){return t===m(t).document.documentElement}(t)){var d=Math.round(o+i)-e,l=Math.round(u+s)-n;1!==Math.abs(d)&&(o-=d),1!==Math.abs(l)&&(u-=l)}return T(r.left,r.top,o,u)}(t):y);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},t.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},t}(),w=function(t,e){var n,a,r,i,s,o,u,d=(a=(n=e).x,r=n.y,i=n.width,s=n.height,o="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,u=Object.create(o.prototype),b(u,{x:a,y:r,width:i,height:s,top:r,right:a+i,bottom:s+r,left:a}),u);b(this,{target:t,contentRect:d})},S=function(){function t(t,e,n){if(this.activeObservations_=[],this.observations_=new d,"function"!=typeof t)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=t,this.controller_=e,this.callbackCtx_=n}return t.prototype.observe=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof m(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)||(e.set(t,new O(t)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof m(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)&&(e.delete(t),e.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach((function(e){e.isActive()&&t.activeObservations_.push(e)}))},t.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,e=this.activeObservations_.map((function(t){return new w(t.target,t.broadcastRect())}));this.callback_.call(t,e,t),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return this.activeObservations_.length>0},t}(),I="undefined"!=typeof WeakMap?new WeakMap:new d,N=function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=p.getInstance(),a=new S(e,n,this);I.set(this,a)};["observe","unobserve","disconnect"].forEach((function(t){N.prototype[t]=function(){var e;return(e=I.get(this))[t].apply(e,arguments)}}));var C=void 0!==c.ResizeObserver?c.ResizeObserver:N,R=n("AxL3"),A=n.n(R),k=(n("E9XD"),n("sMBO"),n("rB9j"),n("Rm1S"),n("UxlC"),null),E=null;function L(){if(null===k){if("undefined"==typeof document)return k=0;var t=document.body,e=document.createElement("div");e.classList.add("simplebar-hide-scrollbar"),t.appendChild(e);var n=e.getBoundingClientRect().right;t.removeChild(e),k=n}return k}function D(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function P(t){return t&&t.ownerDocument?t.ownerDocument:document}A.a&&window.addEventListener("resize",(function(){E!==window.devicePixelRatio&&(E=window.devicePixelRatio,k=null)}));var M=function(){function t(e,n){var a=this;this.onScroll=function(){var t=D(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],o=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var u=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-o);"x"===a.draggedAxis&&(u=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u-(r+i.size):u,u=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-u:u),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=u},this.onEndDrag=function(t){var e=P(a.el),n=D(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=r()(this.recalculate.bind(this),64),this.onMouseMove=r()(this.onMouseMove.bind(this),64),this.hideScrollbars=s()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=s()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=u()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=P(t),a=D(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),A.a&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.initListeners=function(){var t=this,e=D(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||C)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=D(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.contentEl.offsetWidth,n=this.heightAutoObserverEl.offsetHeight<=1,a=this.heightAutoObserverEl.offsetWidth<=1||e>0,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var o=this.contentEl.scrollHeight,u=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=n?"auto":"100%",this.placeholderEl.style.width=a?(e||u)+"px":"auto",this.placeholderEl.style.height=o+"px";var d=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=0!==e&&u>e,this.axis.y.isOverflowing=o>d,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var l=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&u>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&o>d-l,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));o="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o+(a-i.size):o,i.el.style.transform="x"===e?"translate3d("+o+"px, 0, 0)":"translate3d(0, "+o+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=P(this.el),a=D(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=D(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,u=-1===o?s-i:s+i;!function t(){var r,i;-1===o?s>u&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=40,r)),a.requestAnimationFrame(t)):s<u&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=40,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:L()}catch(t){return L()}},e.removeListeners=function(){var t=this,e=D(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver.disconnect(),this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();M.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},M.instances=new WeakMap;var q=M,j=(n("FZtP"),null),F=null;function G(){if(null===j){if("undefined"==typeof document)return j=0;var t=document.body,e=document.createElement("div");e.classList.add("simplebar-hide-scrollbar"),t.appendChild(e);var n=e.getBoundingClientRect().right;t.removeChild(e),j=n}return j}A.a&&window.addEventListener("resize",(function(){F!==window.devicePixelRatio&&(F=window.devicePixelRatio,j=null)}));var V=function(t){return Array.prototype.reduce.call(t,(function(t,e){var n=e.name.match(/data-simplebar-(.+)/);if(n){var a=n[1].replace(/\W+(.)/g,(function(t,e){return e.toUpperCase()}));switch(e.value){case"true":t[a]=!0;break;case"false":t[a]=!1;break;case void 0:t[a]=!0;break;default:t[a]=e.value}}return t}),{})};function z(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function B(t){return t&&t.ownerDocument?t.ownerDocument:document}var Y=function(){function t(e,n){var a=this;this.onScroll=function(){var t=z(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],o=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var u=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-o);"x"===a.draggedAxis&&(u=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u-(r+i.size):u,u=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-u:u),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=u},this.onEndDrag=function(t){var e=B(a.el),n=z(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=r()(this.recalculate.bind(this),64),this.onMouseMove=r()(this.onMouseMove.bind(this),64),this.hideScrollbars=s()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=s()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=u()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=B(t),a=z(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),A.a&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.initListeners=function(){var t=this,e=z(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||C)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=z(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.contentEl.offsetWidth,n=this.heightAutoObserverEl.offsetHeight<=1,a=this.heightAutoObserverEl.offsetWidth<=1||e>0,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var o=this.contentEl.scrollHeight,u=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=n?"auto":"100%",this.placeholderEl.style.width=a?(e||u)+"px":"auto",this.placeholderEl.style.height=o+"px";var d=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=0!==e&&u>e,this.axis.y.isOverflowing=o>d,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var l=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&u>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&o>d-l,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));o="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o+(a-i.size):o,i.el.style.transform="x"===e?"translate3d("+o+"px, 0, 0)":"translate3d(0, "+o+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=B(this.el),a=z(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=z(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,u=-1===o?s-i:s+i;!function t(){var r,i;-1===o?s>u&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=40,r)),a.requestAnimationFrame(t)):s<u&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=40,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:G()}catch(t){return G()}},e.removeListeners=function(){var t=this,e=z(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver.disconnect(),this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();Y.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},Y.instances=new WeakMap,Y.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll('[data-simplebar]:not([data-simplebar="init"])'),(function(t){Y.instances.has(t)||new Y(t,V(t.attributes))}))},Y.removeObserver=function(){this.globalObserver.disconnect()},Y.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),"undefined"!=typeof MutationObserver&&(this.globalObserver=new MutationObserver(Y.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))},Y.handleMutations=function(t){t.forEach((function(t){Array.prototype.forEach.call(t.addedNodes,(function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?!Y.instances.has(t)&&new Y(t,V(t.attributes)):Array.prototype.forEach.call(t.querySelectorAll('[data-simplebar]:not([data-simplebar="init"])'),(function(t){!Y.instances.has(t)&&new Y(t,V(t.attributes))})))})),Array.prototype.forEach.call(t.removedNodes,(function(t){1===t.nodeType&&(t.hasAttribute('[data-simplebar="init"]')?Y.instances.has(t)&&Y.instances.get(t).unMount():Array.prototype.forEach.call(t.querySelectorAll('[data-simplebar="init"]'),(function(t){Y.instances.has(t)&&Y.instances.get(t).unMount()})))}))}))},Y.getOptions=V,A.a&&Y.initHtmlApi(),n.d(e,"a",(function(){return H})),n.d(e,"b",(function(){return U}));class H{constructor(t){this.elRef=t}ngOnInit(){}ngAfterViewInit(){this.SimpleBar=new q(this.elRef.nativeElement,this.options||{})}ngOnDestroy(){this.SimpleBar.unMount(),this.SimpleBar=null}}class U{}},WFqU:function(t,e){var n="object"==typeof global&&global&&global.Object===Object&&global;t.exports=n},WJkJ:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},WKiH:function(t,e,n){var a=n("HYAF"),r="["+n("WJkJ")+"]",i=RegExp("^"+r+r+"*"),s=RegExp(r+r+"*$"),o=function(t){return function(e){var n=String(a(e));return 1&t&&(n=n.replace(i,"")),2&t&&(n=n.replace(s,"")),n}};t.exports={start:o(1),end:o(2),trim:o(3)}},WYrj:function(t,e,n){!function(t){"use strict";var e=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];t.defineLocale("dv",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(t){return"މފ"===t},meridiem:function(t,e,n){return t<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("wd/R"))},WaXT:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("2vnA"),i=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.a.apply(void 0,t)}),r.a),s=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.c.apply(void 0,t)}),r.c),o=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.d.apply(void 0,t)}),r.d),u=n("MP8s");n.d(e,"a",(function(){return c}));var d=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},l=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},c=function(){function t(){this._dispose=[]}return Object.defineProperty(t.prototype,"nodes",{get:function(){return this._nodes},set:function(t){this.setNodes(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"marginTop",{get:function(){var t=this.viewportNodes&&this.viewportNodes.length&&this.viewportNodes[0];return(t&&t.parent?t.position-t.parent.position-t.parent.getSelfHeight():0)+"px"},enumerable:!0,configurable:!0}),t.prototype.setNodes=function(t){this._nodes=t},t.prototype.ngOnInit=function(){var t=this;this.virtualScroll=this.treeModel.virtualScroll,this._dispose=[Object(r.e)((function(){return t.virtualScroll.getViewportNodes(t.nodes).map((function(t){return t.index}))}),(function(e){t.viewportNodes=e.map((function(e){return t.nodes[e]}))}),{compareStructural:!0,fireImmediately:!0}),Object(r.e)((function(){return t.nodes}),(function(e){t.viewportNodes=t.virtualScroll.getViewportNodes(e)}))]},t.prototype.ngOnDestroy=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.trackNode=function(t,e){return e.id},d([Object(a.Input)(),l("design:type",Object),l("design:paramtypes",[Object])],t.prototype,"nodes",null),d([Object(a.Input)(),l("design:type",u.a)],t.prototype,"treeModel",void 0),d([o,l("design:type",Object)],t.prototype,"_nodes",void 0),d([Object(a.Input)(),l("design:type",Object)],t.prototype,"templates",void 0),d([o,l("design:type",Array)],t.prototype,"viewportNodes",void 0),d([s,l("design:type",String),l("design:paramtypes",[])],t.prototype,"marginTop",null),d([i,l("design:type",Function),l("design:paramtypes",[Object]),l("design:returntype",void 0)],t.prototype,"setNodes",null),d([Object(a.Component)({selector:"tree-node-collection",encapsulation:a.ViewEncapsulation.None,template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.margin-top]="marginTop">\n        <tree-node\n          *ngFor="let node of viewportNodes; let i = index; trackBy: trackNode"\n          [node]="node"\n          [index]="i"\n          [templates]="templates"\n        >\n        </tree-node>\n      </div>\n    </ng-container>\n  '})],t)}()},WiuZ:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("978R"),s=n("z/SZ"),o=n("2uy1"),u=n("s7LF"),d=n("+gVj"),l=n("KOzp");n("wnGv"),n("GiVz"),n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return w}));var c=a["ɵcrt"]({encapsulation:0,styles:[[".select-menu-item[_ngcontent-%COMP%]{display:block;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.09);font-size:12px}.select-menu-item[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.select-menu-item-icon[_ngcontent-%COMP%]{float:left;padding:.5em;width:3em}.select-menu-item-content[_ngcontent-%COMP%]{padding:.5em}"]],data:{}});function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback text-center"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.messages.customValidations[e.parent.context.$implicit])}))}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form.showError("filter",a["ɵnov"](e.parent,2))&&n.filter.hasError(e.context.$implicit))}),null)}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"small",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),a["ɵted"](3,null,[" ","  "]))],null,(function(t,e){t(e,3,0,e.parent.context.$implicit.description)}))}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.triggerSelection(t.context.$implicit)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"help-block disabled":0}),(t()(),a["ɵeld"](4,0,null,null,3,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](8,0,null,null,3,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](9,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](11,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,!(n.data.length!==n.selectionLimit&&e.context.$implicit.enabled||e.context.$implicit.selected));t(e,2,0,"select-menu-item",a),t(e,6,0,e.context.$implicit.selected),t(e,11,0,e.context.$implicit.description)}),(function(t,e){t(e,9,0,e.context.$implicit.name)}))}function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addCustomOption()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,1),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](7,0,null,null,1,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](8,null,[" "," '","' "]))],(function(t,e){var n=t(e,5,0,e.component.icons.tag);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,8,0,n.messages.add,n.filter.value)}))}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,2,"span",[["class","form-text text-muted text-center text-warning"]],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,i.c,[a.ViewContainerRef,s.a,i.a,a.ElementRef,a.Renderer2,o.a],{tooltip:[0,"tooltip"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.messages.selectionLimit.tooltip)}),(function(t,e){t(e,2,0,e.component.messages.selectionLimit.text)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","is-invalid"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.data.length===n.selectionLimit)}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,2).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,2).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,5).onSubmit()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,u.G,[],null,null),a["ɵdid"](2,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,u.d,null,[u.l]),a["ɵdid"](4,16384,null,0,u.s,[[4,u.d]],null,null),a["ɵdid"](5,16384,null,0,d.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](6,0,null,null,9,"div",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,6,"input",[["class","form-control text-center"],["formControlName","filter"],["type","text"]],[[8,"placeholder",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"keyup"===e&&(r=!1!==(13==n.keyCode?i.selectOption():i.updateFilter())&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,u.e,[a.Renderer2,a.ElementRef,[2,u.b]],null,null),a["ɵprd"](1024,null,u.p,(function(t){return[t]}),[u.e]),a["ɵdid"](10,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,u.q,null,[u.j]),a["ɵdid"](12,16384,null,0,u.r,[[4,u.q]],null,null),a["ɵdid"](13,16384,null,0,d.h,[[3,u.d],d.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](15,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,b)),a["ɵdid"](17,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form),t(e,5,0,n.form),t(e,10,0,"filter"),t(e,13,0,"filter"),t(e,15,0,n.Object.keys(n.messages.customValidations)),t(e,17,0,n.filteredOptions),t(e,19,0,n.isCreatable()),t(e,21,0,n.data.length===n.selectionLimit)}),(function(t,e){var n=e.component;t(e,0,0,a["ɵnov"](e,4).ngClassUntouched,a["ɵnov"](e,4).ngClassTouched,a["ɵnov"](e,4).ngClassPristine,a["ɵnov"](e,4).ngClassDirty,a["ɵnov"](e,4).ngClassValid,a["ɵnov"](e,4).ngClassInvalid,a["ɵnov"](e,4).ngClassPending),t(e,7,0,n.messages.filter,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending,a["ɵnov"](e,13).validClass,a["ɵnov"](e,13).invalidClass)}))}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,4,"a",[["class","select-menu-edit float-left"],["container","body"],["outsideClick","true"],["placement","bottom"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵdid"](3,212992,null,0,l.c,[l.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,o.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,"select-menu-edit float-left",e.component.elemClass),t(e,3,0,a["ɵnov"](e.parent,0),"bottom","true","body")}),null)}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.empty)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted  float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.noOptions)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popTemplate",2]],null,0,null,x)),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.options.length>0),t(e,4,0,0===n.data.length&&n.options.length>0),t(e,6,0,0===n.options.length)}),null)}},WwFo:function(t,e,n){var a=n("juv8"),r=n("7GkX");t.exports=function(t,e){return t&&a(e,r(e),t)}},WxRl:function(t,e,n){!function(t){"use strict";var e="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(t,e,n,a){var r=t;switch(n){case"s":return a||e?"néhány másodperc":"néhány másodperce";case"ss":return r+(a||e)?" másodperc":" másodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return r+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" óra":" órája");case"hh":return r+(a||e?" óra":" órája");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return r+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" hónap":" hónapja");case"MM":return r+(a||e?" hónap":" hónapja");case"y":return"egy"+(a||e?" év":" éve");case"yy":return r+(a||e?" év":" éve")}return""}function a(t){return(t?"":"[múlt] ")+"["+e[this.day()]+"] LT[-kor]"}t.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(t){return"u"===t.charAt(1).toLowerCase()},meridiem:function(t,e,n){return t<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"X+05":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",initialized:"initialized",updateData:"updateData",moveNode:"moveNode",copyNode:"copyNode",event:"event",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",stateChange:"stateChange"}},X709:function(t,e,n){!function(t){"use strict";t.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e?"a":2===e?"a":"e")},week:{dow:1,doy:4}})}(n("wd/R"))},XDbj:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("sVev"),r=n("7o/Q");function i(t=u){return e=>e.lift(new s(t))}class s{constructor(t){this.errorFactory=t}call(t,e){return e.subscribe(new o(t,this.errorFactory))}}class o extends r.a{constructor(t,e){super(t),this.errorFactory=e,this.hasValue=!1}_next(t){this.hasValue=!0,this.destination.next(t)}_complete(){if(this.hasValue)return this.destination.complete();{let e;try{e=this.errorFactory()}catch(t){e=t}this.destination.error(e)}}}function u(){return new a.a}},XDpg:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"周";default:return t}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("wd/R"))},XFyV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},XGnz:function(t,e,n){var a=n("CH3K"),r=n("BiGR");t.exports=function t(e,n,i,s,o){var u=-1,d=e.length;for(i||(i=r),o||(o=[]);++u<d;){var l=e[u];n>0&&i(l)?n>1?t(l,n-1,i,s,o):a(o,l):s||(o[o.length]=l)}return o}},XGwC:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},XKAG:function(t,e,n){var a=n("ut/Y"),r=n("MMmD"),i=n("7GkX");t.exports=function(t){return function(e,n,s){var o=Object(e);if(!r(e)){var u=a(n,3);e=i(e),n=function(t){return u(o[t],t,o)}}var d=t(e,n,s);return d>-1?o[u?e[d]:d]:void 0}}},XLvN:function(t,e,n){!function(t){"use strict";t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(t,e){return 12===t&&(t=0),"రాత్రి"===e?t<4?t:t+12:"ఉదయం"===e?t:"మధ్యాహ్నం"===e?t>=10?t:t+12:"సాయంత్రం"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"రాత్రి":t<10?"ఉదయం":t<17?"మధ్యాహ్నం":t<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("wd/R"))},XNiG:function(t,e,n){"use strict";n.d(e,"b",(function(){return d})),n.d(e,"a",(function(){return l}));var a=n("HDdC"),r=n("7o/Q"),i=n("quSY"),s=n("9ppp"),o=n("Ylt2"),u=n("2QA8");class d extends r.a{constructor(t){super(t),this.destination=t}}let l=(()=>{class t extends a.a{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[u.a](){return new d(this)}lift(t){const e=new c(this,this);return e.operator=t,e}next(t){if(this.closed)throw new s.a;if(!this.isStopped){const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].next(t)}}error(t){if(this.closed)throw new s.a;this.hasError=!0,this.thrownError=t,this.isStopped=!0;const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].error(t);this.observers.length=0}complete(){if(this.closed)throw new s.a;this.isStopped=!0;const{observers:t}=this,e=t.length,n=t.slice();for(let a=0;a<e;a++)n[a].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(t){if(this.closed)throw new s.a;return super._trySubscribe(t)}_subscribe(t){if(this.closed)throw new s.a;return this.hasError?(t.error(this.thrownError),i.a.EMPTY):this.isStopped?(t.complete(),i.a.EMPTY):(this.observers.push(t),new o.a(this,t))}asObservable(){const t=new a.a;return t.source=this,t}}return t.create=(t,e)=>new c(t,e),t})();class c extends l{constructor(t,e){super(),this.destination=t,this.source=e}next(t){const{destination:e}=this;e&&e.next&&e.next(t)}error(t){const{destination:e}=this;e&&e.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:e}=this;return e?this.source.subscribe(t):i.a.EMPTY}}},XYm9:function(t,e,n){var a=n("+K+b");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}},Xg1U:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("978R"),i=(n("SVse"),a["ɵcrt"]({encapsulation:0,styles:[".tooltip[_nghost-%COMP%] {\n      display: block;\n      pointer-events: none;\n    }\n    .bs3.tooltip.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.tooltip.bottom[_nghost-%COMP%] {\n      margin-top: 0px;\n    }\n    .bs3.bs-tooltip-left[_nghost-%COMP%], .bs3.bs-tooltip-right[_nghost-%COMP%]{\n      margin: 0px;\n    }\n    .bs3.bs-tooltip-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-tooltip-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      margin: .3rem 0;\n    }"],data:{}}));function s(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","tooltip-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","tooltip-inner"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-tooltip-container",[["role","tooltip"]],[[8,"className",0],[2,"show",null],[2,"bs3",null],[1,"id",0]],null,null,s,i)),a["ɵdid"](1,4243456,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"tooltip in tooltip-"+a["ɵnov"](e,1).placement+" bs-tooltip-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).id)}))}var u=a["ɵccf"]("bs-tooltip-container",r.b,o,{},{},["*"])},Xi7e:function(t,e,n){var a=n("KMkd"),r=n("adU4"),i=n("tMB7"),s=n("+6XX"),o=n("Z8oC");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}u.prototype.clear=a,u.prototype.delete=r,u.prototype.get=i,u.prototype.has=s,u.prototype.set=o,t.exports=u},XoHu:function(t,e,n){"use strict";function a(t){return null!==t&&"object"==typeof t}n.d(e,"a",(function(){return a}))},Y7HM:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("DH7j");function r(t){return!Object(a.a)(t)&&t-parseFloat(t)+1>=0}},YESw:function(t,e,n){var a=n("Cwc5")(Object,"create");t.exports=a},YNrV:function(t,e,n){"use strict";var a=n("g6v/"),r=n("0Dky"),i=n("33Wh"),s=n("dBg+"),o=n("0eef"),u=n("ewvW"),d=n("RK3t"),l=Object.assign,c=Object.defineProperty;t.exports=!l||r((function(){if(a&&1!==l({b:1},l(c({},"a",{enumerable:!0,get:function(){c(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||"abcdefghijklmnopqrst"!=i(l({},e)).join("")}))?function(t,e){for(var n=u(t),r=arguments.length,l=1,c=s.f,f=o.f;r>l;)for(var h,g=d(arguments[l++]),p=c?i(g).concat(c(g)):i(g),b=p.length,m=0;b>m;)h=p[m++],a&&!f.call(g,h)||(n[h]=g[h]);return n}:l},YO3V:function(t,e,n){var a=n("NykK"),r=n("LcsW"),i=n("ExA7"),s=Function.prototype.toString,o=Object.prototype.hasOwnProperty,u=s.call(Object);t.exports=function(t){if(!i(t)||"[object Object]"!=a(t))return!1;var e=r(t);if(null===e)return!0;var n=o.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==u}},YRex:function(t,e,n){!function(t){"use strict";t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"يېرىم كېچە":a<900?"سەھەر":a<1130?"چۈشتىن بۇرۇن":a<1230?"چۈش":a<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("wd/R"))},YcCt:function(t,e,n){"use strict";function a(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,r){n=n||"=";var i={};if("string"!=typeof t||0===t.length)return i;var s=/\+/g;t=t.split(e=e||"&");var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var u=t.length;o>0&&u>o&&(u=o);for(var d=0;d<u;++d){var l,c,f,h,g=t[d].replace(s,"%20"),p=g.indexOf(n);p>=0?(l=g.substr(0,p),c=g.substr(p+1)):(l=g,c=""),f=decodeURIComponent(l),h=decodeURIComponent(c),a(i,f)?Array.isArray(i[f])?i[f].push(h):i[f]=[i[f],h]:i[f]=h}return i}},Ylt2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("quSY");class r extends a.a{constructor(t,e){super(),this.subject=t,this.subscriber=e,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,e=t.observers;if(this.subject=null,!e||0===e.length||t.isStopped||t.closed)return;const n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}},YuTi:function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},YzqF:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(){this._queue=[],this._pending=!1}return t.prototype.isLocked=function(){return this._pending},t.prototype.acquire=function(){var t=this,e=new Promise((function(e){return t._queue.push(e)}));return this._pending||this._dispatchNext(),e},t.prototype.runExclusive=function(t){return this.acquire().then((function(e){var n;try{n=t()}catch(a){throw e(),a}return Promise.resolve(n).then((function(t){return e(),t}),(function(t){throw e(),t}))}))},t.prototype._dispatchNext=function(){this._queue.length>0?(this._pending=!0,this._queue.shift()(this._dispatchNext.bind(this))):this._pending=!1},t}();e.default=a},Z0cm:function(t,e){t.exports=Array.isArray},Z21x:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("sne2");class a{constructor(t,e){this.location=t,this.actionLabels=e,this.name=this.actionLabels.CANCEL,this.back=()=>this.location.back()}}},Z4QM:function(t,e,n){!function(t){"use strict";var e=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},Z8oC:function(t,e,n){var a=n("y1pI");t.exports=function(t,e){var n=this.__data__,r=a(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}},ZAMP:function(t,e,n){!function(t){"use strict";t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},ZCgT:function(t,e,n){var a=n("tLB3");t.exports=function(t){return t?(t=a(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},ZCpW:function(t,e,n){var a=n("lm/5"),r=n("O7RO"),i=n("IOzZ");t.exports=function(t){var e=r(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||a(n,t,e)}}},ZDA6:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("ui-api/scope")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},ZEkX:function(t,e,n){"use strict";n.d(e,"a",(function(){return d})),n.d(e,"b",(function(){return u})),n("Mxhz");var a=n("0+/T"),r=(n("sne2"),n("x38r")),i=n("oxzT"),s=n("mtw6"),o=n("vCyI");n("a0VL"),n("nSDx"),n("aexS"),n("9nlD");const u=new(n("EgGo").a)("user-management/users");class d{constructor(t,e,n,a,r,s,u,d,l){this.userService=t,this.emptyPipe=e,this.modalService=n,this.notificationService=a,this.authStorageService=r,this.i18n=s,this.urlBuilder=u,this.cdDatePipe=d,this.actionLabels=l,this.selection=new o.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:i.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:i.a.edit,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().username),name:this.actionLabels.EDIT},{permission:"delete",icon:i.a.destroy,click:()=>this.deleteUserModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Name"),prop:"name",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Email"),prop:"email",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Roles"),prop:"roles",flexGrow:1,cellTemplate:this.userRolesTpl},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellTransformation:r.a.checkIcon},{name:this.i18n("Password expiration date"),prop:"pwdExpirationDate",flexGrow:1,pipe:this.cdDatePipe}]}getUsers(){this.userService.list().subscribe(t=>{t.forEach(t=>{t.pwdExpirationDate&&t.pwdExpirationDate>0&&(t.pwdExpirationDate=1e3*t.pwdExpirationDate)}),this.users=t})}updateSelection(t){this.selection=t}deleteUser(t){this.userService.delete(t).subscribe(()=>{this.getUsers(),this.modalRef.hide(),this.notificationService.show(s.a.success,this.i18n('Deleted user "{{username}}"',{username:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteUserModal(){const t=this.authStorageService.getUsername(),e=this.selection.first().username;t!==e?this.modalRef=this.modalService.show(a.a,{initialState:{itemDescription:"User",itemNames:[e],submitAction:()=>this.deleteUser(e)}}):this.notificationService.show(s.a.error,this.i18n('Failed to delete user "{{username}}"',{username:e}),this.i18n('You are currently logged in as "{{username}}".',{username:e}))}}},ZUHj:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("51Dv"),r=n("SeVD"),i=n("HDdC");function s(t,e,n,s,o=new a.a(t,n,s)){if(!o.closed)return e instanceof i.a?e.subscribe(o):Object(r.a)(e)(o)}},ZUd8:function(t,e,n){var a=n("ppGB"),r=n("HYAF"),i=function(t){return function(e,n){var i,s,o=String(r(e)),u=a(n),d=o.length;return u<0||u>=d?t?"":void 0:(i=o.charCodeAt(u))<55296||i>56319||u+1===d||(s=o.charCodeAt(u+1))<56320||s>57343?t?o.charAt(u):i:t?o.slice(u,u+2):s-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},ZWtO:function(t,e,n){var a=n("4uTw"),r=n("9Nap");t.exports=function(t,e){for(var n=0,i=(e=a(e,t)).length;null!=t&&n<i;)t=t[r(e[n++])];return n&&n==i?t:void 0}},Zduo:function(t,e,n){!function(t){"use strict";t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(t){return"p"===t.charAt(0).toLowerCase()},meridiem:function(t,e,n){return t>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("wd/R"))},ZfDv:function(t,e,n){var a=n("hh1v"),r=n("6LWA"),i=n("tiKp")("species");t.exports=function(t,e){var n;return r(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!r(n.prototype)?a(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},ZhuC:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({encapsulation:a.ViewEncapsulation.None,selector:"tree-loading-component",template:'\n    <span *ngIf="!template">loading...</span>\n    <ng-container\n      [ngTemplateOutlet]="template"\n      [ngTemplateOutletContext]="{ $implicit: node }">\n    </ng-container>\n  '})],t)}()},ZirO:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}},a0VL:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.datePipe=t}transform(t){return null===t||""===t?"":this.datePipe.transform(t,"shortDate")+" "+this.datePipe.transform(t,"mediumTime")}}},a278:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("QC43"),i=n("XFyV"),s=n("DqMs"),o=n("/NlG"),u=n("GiVz"),d=n("s7LF"),l=n("SVse");n("insk"),n("mSOc"),n("cUpR"),n("20UP"),n("+0ag"),n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return m}));var c=a["ɵcrt"]({encapsulation:0,styles:[[".grafana[_ngcontent-%COMP%]{width:100%;height:600px;z-index:0}.grafana_one[_ngcontent-%COMP%]{height:400px}.grafana_two[_ngcontent-%COMP%]{height:750px}.grafana_three[_ngcontent-%COMP%]{height:900px}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.dropdown-menu[_ngcontent-%COMP%]{top:20px;right:20px;left:auto}"]],data:{}});function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,r.b,r.a)),a["ɵdid"](1,49152,null,0,i.a,[],null,null),(t()(),a["ɵted"](-1,0,["Loading panel data..."]))],null,null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,o.a,[u.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Please consult the "])),(t()(),a["ɵeld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["ɵted"](-1,null,["documentation"])),(t()(),a["ɵted"](-1,0,[" on how to configure and enable the monitoring functionality."]))],(function(t,e){t(e,1,0,"info")}),(function(t,e){t(e,3,0,a["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,o.a,[u.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Grafana Dashboard doesn't exist. Please refer to "])),(t()(),a["ɵeld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["ɵted"](-1,null,["documentation"])),(t()(),a["ɵted"](-1,0,[" on how to add dashboards to Grafana."]))],(function(t,e){t(e,1,0,"info")}),(function(t,e){t(e,3,0,a["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,d.v,[a.ElementRef,a.Renderer2,[2,d.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,d.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[""," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,24,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,17,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,16,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,15,"div",[["class","form-inline timepicker"]],null,null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"label",[["class","ml-1 my-1 col-form-label"],["for","timepicker"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Grafana Time Picker"])),(t()(),a["ɵeld"](6,0,null,null,7,"select",[["class","custom-select my-1 mx-3"],["id","timepicker"],["name","timepicker"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["ɵnov"](t,7).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,7).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(i.time=n)&&r),"ngModelChange"===e&&(r=!1!==i.onTimepickerChange(n)&&r),r}),null,null)),a["ɵdid"](7,16384,null,0,d.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,d.p,(function(t){return[t]}),[d.A]),a["ɵdid"](9,671744,null,0,d.u,[[8,null],[8,null],[8,null],[6,d.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,d.q,null,[d.u]),a["ɵdid"](11,16384,null,0,d.r,[[4,d.q]],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](13,278528,null,0,l.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](14,0,null,null,4,"button",[["class","btn btn-light my-1"],["title","Reset Settings"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.reset()&&a),a}),null,null)),(t()(),a["ɵeld"](15,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,l["ɵNgClassImpl"],l["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](17,278528,null,0,l.NgClass,[l["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](18,1),(t()(),a["ɵeld"](19,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](20,0,null,null,4,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](21,0,null,null,3,"div",[["class","grafana-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](22,0,[["iframe",1]],null,2,"iframe",[["class","grafana"],["frameborder","0"],["id","iframe"],["scrolling","no"]],[[8,"src",5]],null,null,null,null)),a["ɵprd"](512,null,l["ɵNgClassImpl"],l["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](24,278528,null,0,l.NgClass,[l["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null)],(function(t,e){var n=e.component;t(e,9,0,"timepicker",n.time),t(e,13,0,n.grafanaTimes);var a=t(e,18,0,n.icons.undo);t(e,17,0,a),t(e,24,0,"grafana",n.panelStyle)}),(function(t,e){var n=e.component;t(e,6,0,a["ɵnov"](e,11).ngClassUntouched,a["ɵnov"](e,11).ngClassTouched,a["ɵnov"](e,11).ngClassPristine,a["ɵnov"](e,11).ngClassDirty,a["ɵnov"](e,11).ngClassValid,a["ɵnov"](e,11).ngClassInvalid,a["ɵnov"](e,11).ngClassPending),t(e,22,0,n.grafanaSrc)}))}function m(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](3,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,b)),a["ɵdid"](7,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&n.grafanaExist),t(e,3,0,!n.grafanaExist),t(e,5,0,!n.dashboardExist),t(e,7,0,n.grafanaExist&&n.dashboardExist)}),null)}},a40w:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("EEJc"),i=n("ajRT"),s=n("s7LF"),o=n("+gVj"),u=n("SVse"),d=n("gp3X"),l=n("sb0X"),c=n("KVJa"),f=n("Z21x"),h=n("sne2"),g=n("OLbh"),p=n("LqlI");n.d(e,"a",(function(){return _}));var b=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.description)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,[[null,"hide"]],(function(t,e,n){var a=!0;return"hide"===e&&(a=!1!==t.component.cancel()&&a),a}),r.c,r.b)),a["ɵdid"](1,49152,null,0,i.a,[],null,{hide:"hide"}),(t()(),a["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](3,null,["",""])),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["name","confirmationForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,s.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,s.d,null,[s.l]),a["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),a["ɵdid"](10,16384,null,0,o.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](13,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](15,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmit(r.confirmationForm.value)&&a),a}),d.b,d.a)),a["ɵdid"](19,114688,null,0,l.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),a["ɵdid"](22,49152,null,0,f.a,[u.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.confirmationForm),t(e,10,0,n.confirmationForm),t(e,13,0,n.bodyContext,n.bodyTpl),t(e,15,0,n.description),t(e,19,0,n.confirmationForm),t(e,22,0,"Cancel",n.boundCancel)}),(function(t,e){var n=e.component;t(e,3,0,n.titleText),t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.buttonText)}))}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-confirmation-modal",[],null,null,null,v,b)),a["ɵdid"](1,245760,null,0,g.a,[p.a,p.b],null,null)],(function(t,e){t(e,1,0)}),null)}var _=a["ɵccf"]("cd-confirmation-modal",g.a,x,{},{},[])},a96k:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a=!0){this.selected=t,this.name=e,this.description=n,this.enabled=a}}},aHM3:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("8Y7J"),n("s7LF");class a{static forRoot(){return{ngModule:a,providers:[]}}}},aIdf:function(t,e,n){!function(t){"use strict";function e(t,e,n){return t+" "+function(t,e){return 2===e?function(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}(t):t}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],t)}t.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:function(t){switch(function t(e){return e>9?t(e%10):e}(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(t){return t+(1===t?"añ":"vet")},week:{dow:1,doy:4}})}(n("wd/R"))},aIsn:function(t,e,n){!function(t){"use strict";t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},aQkU:function(t,e,n){!function(t){"use strict";t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},aXbf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("8Y7J");let i=(()=>{class t{constructor(){}format_number(t,e,n,r=1){if(a.isString(t)&&(t=Number(t)),!a.isNumber(t))return"-";let i=t<1?0:Math.floor(Math.log(t)/Math.log(e));i=i>=n.length?n.length-1:i;let s=a.round(t/Math.pow(e,i),r).toString();return""===s?"-":(""!==n[i]&&(s=`${s} ${n[i]}`),s)}toBytes(t,e=null){const n=["b","k","m","g","t","p","e","z","y"],r=RegExp("^(\\d+(.\\d+)?) ?(["+n.join("")+"]?(b|ib|B/s)?)?$","i").exec(t);if(null===r)return e;let i=parseFloat(r[1]);return a.isString(r[3])&&(i*=Math.pow(1024,n.indexOf(r[3].toLowerCase()[0]))),Math.round(i)}toMilliseconds(t){const e=/^\s*(\d+)\s*(ms)?\s*$/i.exec(t);return null!==e?+e[1]:0}toIops(t){const e=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(t);return null!==e?+e[1]:0}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},adU4:function(t,e,n){var a=n("y1pI"),r=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=a(e,t);return!(n<0||(n==e.length-1?e.pop():r.call(e,n,1),--this.size,0))}},aexS:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("2Vo4"),r=n("jKX/"),i=n("8Y7J");let s=(()=>{class t{constructor(){this.isPwdDisplayedSource=new a.a(!1),this.isPwdDisplayed$=this.isPwdDisplayedSource.asObservable()}set(t,e,n={},a=!1,i=null,s=!1){localStorage.setItem("dashboard_username",t),localStorage.setItem("access_token",e),localStorage.setItem("dashboard_permissions",JSON.stringify(new r.a(n))),localStorage.setItem("user_pwd_expiration_date",String(i)),localStorage.setItem("user_pwd_update_required",String(s)),localStorage.setItem("sso",String(a))}remove(){localStorage.removeItem("access_token"),localStorage.removeItem("dashboard_username"),localStorage.removeItem("user_pwd_expiration_data"),localStorage.removeItem("user_pwd_update_required")}getToken(){return localStorage.getItem("access_token")}isLoggedIn(){return null!==localStorage.getItem("dashboard_username")}getUsername(){return localStorage.getItem("dashboard_username")}getPermissions(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new r.a({})))}getPwdExpirationDate(){return Number(localStorage.getItem("user_pwd_expiration_date"))}getPwdUpdateRequired(){return"true"===localStorage.getItem("user_pwd_update_required")}isSSO(){return"true"===localStorage.getItem("sso")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},afO8:function(t,e,n){var a,r,i,s=n("f5p1"),o=n("2oRo"),u=n("hh1v"),d=n("kRJp"),l=n("UTVS"),c=n("93I0"),f=n("0BK2");if(s){var h=new(0,o.WeakMap),g=h.get,p=h.has,b=h.set;a=function(t,e){return b.call(h,t,e),e},r=function(t){return g.call(h,t)||{}},i=function(t){return p.call(h,t)}}else{var m=c("state");f[m]=!0,a=function(t,e){return d(t,m,e),e},r=function(t){return l(t,m)?t[m]:{}},i=function(t){return l(t,m)}}t.exports={set:a,get:r,has:i,enforce:function(t){return i(t)?r(t):a(t,{})},getterFor:function(t){return function(e){var n;if(!u(e)||(n=r(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},afOK:function(t,e,n){t.exports=n("pZt1")},ajRT:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J");class r{constructor(){this.hide=new a.EventEmitter}close(){this.modalRef&&this.modalRef.hide(),this.hide.emit()}}},atuK:function(t,e,n){"use strict";n.d(e,"a",(function(){return v})),n.d(e,"b",(function(){return E})),n.d(e,"d",(function(){return H})),n.d(e,"c",(function(){return rt}));var a=n("8Y7J"),r=n("ienR"),i=n("SVse"),s=(n("s7LF"),n("2uy1")),o=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,u)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,l)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,f)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function m(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,b)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),m,o)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.b,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var v=a["ɵccf"]("bs-datepicker-container",r.b,y,{},{},[]),x=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,_)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,O)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,S)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,R)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),A,x)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.e,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var E=a["ɵccf"]("bs-datepicker-inline-container",r.e,k,{},{},[]),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,D)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,M)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,j)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,P)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,q)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function B(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,z)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),B,L)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.k,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var H=a["ɵccf"]("bs-daterangepicker-inline-container",r.k,Y,{},{},[]),U=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,W)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,$)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function J(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,J)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function X(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Z)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Q)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,X)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function nt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,et)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function at(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),nt,U)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.i,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var rt=a["ɵccf"]("bs-daterangepicker-container",r.i,at,{},{},[]),it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-current-date",[["title","hey there"]],null,null,null,lt,dt)),a["ɵdid"](1,49152,null,0,r.x,[],{title:[0,"title"]},null)],(function(t,e){t(e,1,0,"hey there")}),null)}function ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-timepicker",[],null,null,null,Et,kt)),a["ɵdid"](1,49152,null,0,r.D,[],null,null)],null,null)}function ut(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,st)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,0,null,null,1,"div",[["class","bs-datepicker-head"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](4,0,null,null,1,"div",[["class","bs-datepicker-body"]],null,null,null,null,null)),a["ɵncd"](null,1),(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](7,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,!1),t(e,7,0,!1)}),null)}var dt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function lt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","current-timedate"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.title)}))}var ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ft(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.label)}))}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Custom Range"]))],null,null)}function gt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-predefined-btns"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.ranges),t(e,4,0,n.isCustomRangeShown)}),null)}var pt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function bt(t){return a["ɵvid"](2,[(t()(),a["ɵted"](0,null,["",""]))],null,(function(t,e){t(e,0,0,e.component.day.label)}))}var mt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("month")&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.calendar.monthTitle)}))}function vt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","previous"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!0)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["‹"])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵand"](16777216,null,null,1,null,yt)),a["ɵdid"](5,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](7,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("year")&&a),a}),null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](9,null,["",""])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](11,0,null,null,2,"button",[["class","next"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!1)&&a),a}),null,null)),(t()(),a["ɵeld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["›"]))],(function(t,e){t(e,5,0,e.component.calendar.monthTitle)}),(function(t,e){var n=e.component;t(e,0,0,n.calendar.disableLeftArrow,n.calendar.hideLeftArrow?"hidden":"visible"),t(e,9,0,n.calendar.yearTitle),t(e,11,0,n.calendar.disableRightArrow,n.calendar.hideRightArrow?"hidden":"visible")}))}var xt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function _t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"th",[],null,null,null,null,null))],null,null)}function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"th",[["aria-label","weekday"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.calendar.weekdays[e.context.index])}))}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["class","week"]],[[2,"active-week",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectWeek(t.parent.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){var n=e.component;t(e,0,0,n.isWeekHovered),t(e,2,0,n.calendar.weekNumbers[e.parent.context.index])}))}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"td",[["role","gridcell"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"span",[["bsDatepickerDayDecorator",""]],[[2,"disabled",null],[2,"is-highlighted",null],[2,"is-other-month",null],[2,"is-active-other-month",null],[2,"in-range",null],[2,"select-start",null],[2,"select-end",null],[2,"selected",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectDay(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!1)&&a),a}),bt,pt)),a["ɵdid"](2,114688,null,0,r.z,[r.a,a.ElementRef,a.Renderer2],{day:[0,"day"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,1,0,a["ɵnov"](e,2).day.isDisabled,a["ɵnov"](e,2).day.isHovered,a["ɵnov"](e,2).day.isOtherMonth,a["ɵnov"](e,2).day.isOtherMonthHovered,a["ɵnov"](e,2).day.isInRange,a["ɵnov"](e,2).day.isSelectionStart,a["ɵnov"](e,2).day.isSelectionEnd,a["ɵnov"](e,2).day.isSelected),t(e,3,0,e.context.$implicit.label)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.options.showWeekNumbers),t(e,4,0,e.context.$implicit.days)}),null)}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,13,"bs-calendar-layout",[],null,null,null,ut,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,9,"table",[["class","days weeks"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,5,"thead",[],null,null,null,null,null)),(t()(),a["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_t)),a["ɵdid"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Tt)),a["ɵdid"](10,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](11,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](13,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,8,0,n.options.showWeekNumbers),t(e,10,0,n.calendar.weekdays),t(e,13,0,n.calendar.weeks)}),null)}var Nt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Ct(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewMonth(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ct)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function At(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ut,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","months"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.months)}),null)}var kt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","bs-timepicker-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](4,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](7,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](10,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](11,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](13,0,null,null,2,"button",[["class","switch-time-format"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](14,null,[""," "])),(t()(),a["ɵeld"](15,0,null,null,0,"img",[["alt",""],["src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg=="]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,4,0,n.hours),t(e,10,0,n.minutes),t(e,14,0,n.ampm)}))}var Lt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewYear(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Pt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Dt)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function Mt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ut,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","years"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Pt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.years)}),null)}},b1Dy:function(t,e,n){!function(t){"use strict";t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},b2z7:function(t,e){var n=/\w*$/;t.exports=function(t){var e=new t.constructor(t.source,n.exec(t));return e.lastIndex=t.lastIndex,e}},b5OY:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("pxLl");class a{constructor(t,e){this.performanceCounterService=t,this.i18n=e,this.columns=[],this.counters=[]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Description"),prop:"description",flexGrow:1},{name:this.i18n("Value"),prop:"value",cellTemplate:this.valueTpl,flexGrow:1}]}getCounters(t){this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(t=>{this.counters=t},e=>{404===e.status?(e.preventDefault(),this.counters=null):t.error()})}}},b80T:function(t,e,n){var a=n("UNi/"),r=n("03A+"),i=n("Z0cm"),s=n("DSRE"),o=n("wJg7"),u=n("c6wG"),d=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=i(t),l=!n&&r(t),c=!n&&!l&&s(t),f=!n&&!l&&!c&&u(t),h=n||l||c||f,g=h?a(t.length,String):[],p=g.length;for(var b in t)!e&&!d.call(t,b)||h&&("length"==b||c&&("offset"==b||"parent"==b)||f&&("buffer"==b||"byteLength"==b||"byteOffset"==b)||o(b,p))||g.push(b);return g}},bHdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("5+tZ"),r=n("SpAZ");function i(t=Number.POSITIVE_INFINITY){return Object(a.a)(r.a,t)}},bN42:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ja-JP">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>ナビゲーションの切り替え</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>ダッシュボード</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>クラスタ</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>モニター</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSHマップ</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>マネージャモジュール</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>ログ</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>ブロック</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>ミラーリング</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>ファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>言語の選択</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>パネルデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana Time Picker</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>設定のリセット</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>戻る</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>データを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選択済み</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>検出済み</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>合計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名前</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>説明</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>長い説明</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>デフォルト</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>デーモンのデフォルト</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSHマップビューア</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>ホスト名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>はい。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>キャンセル</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>閉じる</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>ホストリスト</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>全体的なパフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>エントリが見つかりません</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>クラスタログ</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>監査ログ</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>設定を読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>設定を読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>マネージャモジュールの編集</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>入力された値は有効なUUIDではありません(有効なUUIDの例: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8)。</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>有効なIPアドレスを入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>数字を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>数字または小数を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>ステータス</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>クラスタID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmapが変更されました</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmapエポック</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>定数con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>定数mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>必須のcon</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>必須のmon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>定数内</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非定数内</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>追加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>クラスタ全体のOSDフラグ</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>送信</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>詳細...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD回復優先度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>優先度値のカスタマイズ</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>値は0と1の間である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>再重みづけ</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSDリスト</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編集</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>ヘルス</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計情報</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>クライアント</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任意のクライアントからアクセスできます</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>アドレス</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必須フィールド</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>1つ以上のカンマ区切り値を含んでいる必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>アクセスタイプ</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>スカッシュ</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>クライアントの追加</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 使用可能なクラスタがありません --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- クラスタを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>デーモンの追加</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>ストレージバックエンド</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 使用可能なデータプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- ストレージバックエンドを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>オブジェクトゲートウェイユーザ</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 使用可能なユーザがありません --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- オブジェクトゲートウェイユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFSユーザID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 使用可能なクライアントがありません --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephxクライアントを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS名</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>セキュリティラベル</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>セキュリティラベルの有効化</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFSパス</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>パスは「/」で始まる必要があり、その後ろに1つの単語を配置できます</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>新しいディレクトリが作成されます</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>パス</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>パスは単一の「/」または1つの単語である必要があります</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>新しいバケットが作成されます</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFSプロトコル</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFSタグ</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>クライアントはサブディレクトリをマウントできません(たとえば、[タグ] = fooの場合は、クライアントはfoo/bazをマウントできません)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>異なる[タグ]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>疑似</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>異なる[疑似]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 使用可能なアクセスタイプがありません --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- アクセスタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 使用可能なスカッシュがありません --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作の種類を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>トランスポートプロトコル</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Cephにようこそ!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>ユーザ名は必須です</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>パスワードは必須です</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>ログイン</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>このユーザはCephに存在しません。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>検索していた内容を表示することは許可されていません。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD設定</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>ローカル設定値を削除します。親設定値が継承されて代わりに使用されます。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小値は0です</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>プールリスト</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名前は英数字、ダッシュ、および下線のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>選択されたイレイジャコードプロファイル名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>プラグイン</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>データチャンク(k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>2以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>コーディングチャンク(m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>1以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>耐久性推定子(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>地域(l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush障害ドメイン</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush地域</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>パケットサイズ</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crushルート</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crushデバイスクラス</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>ディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名前...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>選択されたCephプール名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>プールタイプ</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- プールタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>配置グループ</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>少なくとも1つの配置グループが必要です。</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>ご使用のクラスタはこれだけ多数の配置グループを処理できません。必要な配置グループの数を再計算してください。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算のヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製されたサイズ</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>フラグ</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>ECの上書き</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>アプリケーション</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 使用可能なイレイジャコードプロファイルがありません --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- イレイジャコードプロファイルを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crushルールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crushルール</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crushステップ</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>圧縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>モード</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>アルゴリズム</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 使用可能なイレイジャ圧縮アルゴリズムがありません --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>最小blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例: 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>値は0より大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>最大blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例: 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>値は最小blobサイズより大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>圧縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>値は0.0~1.0の間である必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例: 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>パフォーマンスの詳細</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>キャッシュ層の詳細</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>イメージをごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護の失効日</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>保護されていません</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日付の形式が正しくありません。「YYYY-MM-DD HH:mm:ss」という形式を使用してください。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護はすでに失効しています。将来の日付を選択するか、日付を空白のままにしてください。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>イメージの移動</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概要</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>検出認証</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>パスワード</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>相互ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>相互パスワード</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>取得可能な情報:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>使用可能なiSCSIターゲットがありません</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>作成済み</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>サイズ</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>オブジェクトサイズ</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>プロビジョニング済み</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>プロビジョニング済み合計</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>ストライピング単位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>ストライピング数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>親</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>ブロック名のプレフィックス</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順番</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>スナップショット</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>この設定はグローバル値よりも優先されます</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>グローバル</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>これはグローバル値です。このイメージについて、このオプションの値は設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>「/」と「@」は使用できません。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 使用可能なrbdプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- プールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>専用のデータプールを使用してください</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBDのオブジェクトデータを保管するための専用プール</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>サイズを大きくする必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>ストライピング</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>ストライプ単位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- ストライプ単位を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>ストライプ数が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>ストライプ単位がオブジェクトサイズより大きいです。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>ストライプ数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>ストライプ単位が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>ストライプ数は0より大きい必要があります。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>ロールバックしようとしています</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>ごみ箱を空にする</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>すべて</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>プール:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>プール名...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>イメージの復元</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>復元するには</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>イメージの新しい名前を入力してクリックします</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新しい名前</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>失効日</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護の終了日</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSIトポロジ</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常はこれらのパラメータをデフォルト値から変更する必要はありません。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>バックストア</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>詳細設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>ターゲットIQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQNのパターンが正しくありません。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>詳細情報</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>このターゲットの詳細設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>ポータル</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>ポータルの追加</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>このイメージの設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>イメージの追加</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL認証</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>クライアントIQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>イニシエータIQNは一意である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>イニシエータはいずれかのグループに属します。イメージはそのグループ内で設定されます。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>アイテムが追加されていません。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>イニシエータの追加</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>グループの追加</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>ごみ箱</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>同期中</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備完了</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>プールのミラーモードの編集</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>ミラーを無効にする前に、ピアクラスタを削除する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>クラスタ名</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>このクラスタ名は無効です。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>このCephX IDは無効です。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>モニターアドレス</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>カンマ区切りアドレス...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>この警告アドレスは無効です。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephXキー</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64エンコード化済みキー...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephXキーはbase64でエンコードされている必要があります。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>パフォーマンスカウンタを使用できません</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>デーモンリスト</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>バケットデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>この値は無効です。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>選択された名前はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- ユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>有効化済み</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>インデックスタイプ</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>配置ルール</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>マーカー</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大マーカー</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>マスタバージョン</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>変更時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>ゾーングループ</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>バケットクォータ</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無制限</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>ユーザ名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- ユーザ名を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>キーの自動生成</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>アクセスキー</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密キー</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>氏名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子メールアドレス</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>中断済み</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>システム</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>ユーザクォータ</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>表示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- タイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 許可を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>選択されたサブユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>読み取り、書き込み</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>フル</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>スウィフトキー</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>秘密の自動生成</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>ユーザデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>ユーザデータを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>選択されたユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>これは有効な電子メールアドレスではありません。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>選択された電子メールアドレスはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>無効化済み</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>カスタム</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3キー</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>サブユーザがいません。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>キーがありません。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>スウィフト</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>機能がありません。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>無制限のサイズ</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>無制限のオブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>0以上の値を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>説明...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>役割</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>パスワードの確認入力</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認入力されたパスワードがパスワードと一致しません。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子メール</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>無効な電子メールです。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>自身のユーザから「user read / update」という許可を削除しようとしています。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>続行した場合は、どのユーザの役割も追加および削除できなくなります。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>続行してもよろしいですか?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>ヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>ドキュメント</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>バージョン情報</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>ダッシュボード設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>ユーザ管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>ログイン済みユーザ</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>サインアウト</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>属性(OSDマップ)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>メタデータを使用できません</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>メタデータ</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>書き込み回数</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>読み取り回数</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>ヒストグラム</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>ソース</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>レベル</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>実行時に更新できます(編集可能)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>タグ</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列挙値</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>関連項目</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>クラスタのステータス</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>マネージャデーモン</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>メタデータサーバ</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSIゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>クライアントのIOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>クライアントのスループット</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>クライアントの読み取り/書き込み</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>回復スループット</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>スクラブ</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>パフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>未フォーマット時の容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSDあたりの配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>配置グループのステータス</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>現在</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>検出認証を更新しました</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>使用可能なポータルはありません。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>使用可能なイメージはありません。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>使用可能なイメージはありません。ターゲットにイメージを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>使用可能なイニシエータはありません。ターゲットにイニシエータを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>次の日付以降のA/O</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>インスタンス</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進捗</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>モードの編集</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>ピアの追加</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>ピアの編集</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>ピアの削除</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>リーダー</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>#ローカル</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>#リモート</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>ミラーピア</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>ディープフラット化</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>階層化</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>排他ロック</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>オブジェクトマップ(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>ジャーナリング(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBDスナップショットのロールバック</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBDスナップショット</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>削除日時</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>ルート</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>スタンバイデーモン</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>アクティビティ</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dエントリ</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>iノード</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用量</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新済み</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>この値は実行時に更新できます。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>デーモン/クライアントはこの値をモニター設定データベースから取得しません。\nこのオプションを「ceph config set ...」を通じて設定することは禁止されています。\nこのオプションは、ceph.confまたはコマンドラインを通じて\n設定する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>オプションはデーモン始動時のみに有効になります。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>オプションはクラスタの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>オプションはデーモンの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>編集可能</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>有効化</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>無効化</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>再接続していますので、しばらくお待ちください...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>パブリックアドレス</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>セッションの開始</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>インなし</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>以前にアウトとしてマークされたOSDは、それらの始動時にインとしてマークされることはありません</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>アウトなし</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDは、設定済みの間隔が経過した後に自動的にアウトとしてマークされます</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>アップなし</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDを始動することは許可されていません</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>ダウンなし</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSDの障害レポートは無視されているため、OSDはモニターによってダウンとしてマークされません</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>一時停止</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>読み取りと書き込みを一時停止します</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>スクラブなし</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>スクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>ディープスクラブなし</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>ディープスクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>バックフィルなし</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>配置グループのバックフィルは中断されています</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>回復なし</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>配置グループの回復は中断されています</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>ビット単位のソート</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>ビット単位のソートを使用する</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>消去されたスナップディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDによってスナップセットが変換されました</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>回復の削除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>ピアリングの代わりに回復時に削除が実行されました</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>配置グループログのハード制限</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>配置グループログ長のハード制限を適用します</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>OSDフラグを更新しました</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>アウト</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>イン</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ダウン</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>マーク</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>喪失したOSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>喪失としてマーク済み</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>破棄済み</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大バックフィル数</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>回復最大アクティブ</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>回復最大単一始動</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>回復スリープ</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>ジョブ</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>重大度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>始動済み</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>使用済み</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>使用可能</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>クリーン</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>動作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>不明</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>アップ</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>ファイルシステムがありません</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>アクティブ</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>スタンバイ</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>アクティブデーモン</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>定数</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganeshaサービスが設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>トランスポート</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFSユーザ</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFSファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(グローバル設定から継承)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>グローバル設定から継承されました</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>使用可能なデーモンがありません。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>キャッシュモード</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>退去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>消去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>ターゲットの最大バイト数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>ターゲットの最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>アプリケーションは追加されていません</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>アプリケーション数の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>1つのプールは最大で4つのアプリケーション定義しか保有できません。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>使用可能な文字「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長は128文字です</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>アプリケーションのフィルタリングまたは追加</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>アプリケーションの追加</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>レプリカサイズ</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最後の変更</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>イレイジャコード化済みプロファイル</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>バケット数</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>ユーザ数</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範囲</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>読み取り</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>システム役割</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>ユーザの更新</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>続行</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>このユーザの役割が変更されたため、このユーザは自動的にログアウトされました。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各オブジェクトは複数のデータチャンクパートに分割されており、それぞれのパートは異なるOSDに保管されています。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>各オブジェクトのコーディングチャンクを計算して、これらのチャンクを別々のOSDに保管します。\nコーディングチャンクの数は、データを失うことなくダウン状態になることができるOSDの数でもあります。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasureプラグインは最も汎用的で柔軟性の高いプラグインです。\nこのプラグインは、Cephイレイジャコード化済みプール用のデフォルトでもあります。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>さらに柔軟性の高い技法はreed_sol_vanです。kとmを\n設定するだけで十分です。\ncauchy_good技法はより高速となり得ますが、パケットサイズを慎重に選択する必要があります。\nreed_sol_r6_op、liberation、blaum_roth、liber8tionはすべて、\nm=2を使用した設定のみが可能という意味でRAID6と同等です。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>エンコードはバイトサイズのパケット群に対して同時に実行されます。\n適切なパケットサイズを選択することは困難です。\njerasureのドキュメントにはこのトピックに関する詳細な情報が記載されています。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasureプラグインを使用すると、イレイジャコード化済みオブジェクトが複数のOSDに保管されている場合は、\n1つのOSDの喪失から回復するには、他のすべてのOSDからの読み取りが必要になります。\nたとえば、k=8およびm=4を使用してjerasureが設定されている場合は、1つのOSDが失われた場合、\n修復のためには他の11個のOSDからの読み取りが必要になります。\n\nlrcイレイジャコードプラグインは、これより少ないOSDを使用した回復を可能にするために、\nローカルパリティチャンクを作成します。たとえば、lrcがk=8、m=4、およびl=4を使用して設定されている場合は、\nlrcは、4つのOSDごとに1つの追加パリティチャンクを作成します。1つのOSDが失われた場合は、\n11個の代わりに4つのOSDのみを使用してそのOSDを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>コーディングチャンクとデータチャンクをサイズ地域の複数セットにグループ分けします。\nたとえば、k=4およびm=2の場合に、[地域]=3の場合は、3つのチャンクからなるグループが2つ作成されます。\n各セットは、別のセットからチャンクを読み取ることなく回復できます。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>1によって定義されたチャンクの各セットが保管されるCrushバケットのタイプ。\nたとえば、このバケットタイプがラックに設定されている場合は、1のチャンクの各グループは異なるラックに配置されます。\nこのバケットタイプを使用して、「ラックの選択」ステップなどのCRUSHルールステップが作成されます。\nこのバケットタイプが設定されていない場合は、このようなグループ分けは行われません。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isaプラグインはISAライブラリをカプセル化します。このプラグインはIntelプロセッサ上のみで動作します。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISAプラグインは2つのリードソロモン形式で提供されています。reed_sol_vanが設定されている場合は、Vandermondeであり、cauchyが設定されている場合は、Cauchyです。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shecプラグインは複数のSHECライブラリをカプセル化します。\nこのプラグインを使用すると、cephはリードソロモンコードより効率的にデータを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>それぞれが各データチャンクを各自の計算範囲内に含んでいるパリティチャンクの数。\nこの数は、耐久性推定子として使用されます。\nたとえば、c=2の場合は、データを失うことなく2つのOSDがダウン状態になることができます。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSHルールの最初のステップ(「デフォルトの使用」ステップなど)用に\n使用されるCrushバケットの名前。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>同じ障害ドメインの単一バケット内に2つのチャンクが配置されることを防止します。\nたとえば、障害ドメインがホストである場合は、2つのチャンクが同じホストに保管されることはありません。\nこれを使用して、「リーフホストの選択」ステップなどのCRUSHルールステップが作成されます。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSHマップ内でCrushデバイスクラス名を使用して、配置先を特定クラス(ssdやhddなど)のデバイスのみに制限します。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>イレイジャコードプラグインの読み込み元となるディレクトリ名を設定します。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>すべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>サーバに変更を加えない操作のみを許可します</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>読み取り/書き込み操作を許可しませんが、他のすべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>読み取り/書き込み操作、およびファイル属性やディレクトリ内容を変更するどの操作も許可しません</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>アクセスを一切許可しません</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 優先度を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>情報</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>直前の5分間</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>直前の15分間</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>直前の30分間</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>直前の1時間(デフォルト)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>直前の3時間</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>直前の6時間</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>直前の12時間</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>直前の24時間</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨日</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>本日</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>本日の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>一昨日</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去2日間</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>先週の同じ曜日</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>前週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>今週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>今週の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去7日間</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>前月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>今月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>今月の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去30日間</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去90日間</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去6カ月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去1年間</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>前年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去2年間</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去5年間</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>アイテムが選択されていません。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>アイテムを選択解除して再選択してください</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>選択の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>タグのフィルタリング</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>バッジの追加</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>使用可能なアイテムはありません。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>ディープスクラブ</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>ダウンとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>インとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>喪失としてマーク</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>アウトとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>名前の変更</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>ごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>保護解除</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>削除済み</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>複製済み</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>コピー済み</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>フラット化済み</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>復元済み</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>ロールバック済み</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>はい</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>いいえ</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>サービス品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS制限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>希望する秒あたり入出力バイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS制限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>希望する秒あたり入出力操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>読み取りBPS制限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>希望する秒あたり読み取りバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>読み取りIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>希望する秒あたり読み取り操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>書き込みBPS制限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>希望する秒あたり書き込みバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>書き込みIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>希望する秒あたり書き込み操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPSバースト</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>希望する入出力バイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>希望する入出力操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>読み取りBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>希望する読み取りバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>読み取りIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>希望する読み取り操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>書き込みBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>希望する書き込みバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>書き込みIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>希望する書き込み操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>実行中</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>実行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>実行済み</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>不明なタスク</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>作成中</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>更新中</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>削除中</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>複製中</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>コピー中</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>フラット化中</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>ロールバック中</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>移動中</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>移動済み</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>イメージが見つかりませんでした。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>復元中</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>消去中</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>すべてのプール</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>ピアを含んでいるためミラーリングを無効化できません。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},bOMt:function(t,e,n){!function(t){"use strict";t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},bOdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("5+tZ");function r(t,e){return Object(a.a)(t,e,1)}},bWFh:function(t,e,n){"use strict";var a=n("I+eb"),r=n("2oRo"),i=n("lMq5"),s=n("busE"),o=n("8YOa"),u=n("ImZN"),d=n("GarU"),l=n("hh1v"),c=n("0Dky"),f=n("HH4o"),h=n("1E5z"),g=n("cVYH");t.exports=function(t,e,n){var p=-1!==t.indexOf("Map"),b=-1!==t.indexOf("Weak"),m=p?"set":"add",y=r[t],v=y&&y.prototype,x=y,_={},T=function(t){var e=v[t];s(v,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(b&&!l(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return b&&!l(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(b&&!l(t))&&e.call(this,0===t?0:t)}:function(t,n){return e.call(this,0===t?0:t,n),this})};if(i(t,"function"!=typeof y||!(b||v.forEach&&!c((function(){(new y).entries().next()})))))x=n.getConstructor(e,t,p,m),o.REQUIRED=!0;else if(i(t,!0)){var O=new x,w=O[m](b?{}:-0,1)!=O,S=c((function(){O.has(1)})),I=f((function(t){new y(t)})),N=!b&&c((function(){for(var t=new y,e=5;e--;)t[m](e,e);return!t.has(-0)}));I||((x=e((function(e,n){d(e,x,t);var a=g(new y,e,x);return null!=n&&u(n,a[m],a,p),a}))).prototype=v,v.constructor=x),(S||N)&&(T("delete"),T("has"),p&&T("get")),(N||w)&&T(m),b&&v.clear&&delete v.clear}return _[t]=x,a({global:!0,forced:x!=y},_),h(x,t),b||n.setStrong(x,t,p),x}},bXm7:function(t,e,n){!function(t){"use strict";var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};t.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},bYM6:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("wd/R"))},bpih:function(t,e,n){!function(t){"use strict";t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},busE:function(t,e,n){var a=n("2oRo"),r=n("kRJp"),i=n("UTVS"),s=n("zk60"),o=n("iSVu"),u=n("afO8"),d=u.get,l=u.enforce,c=String(String).split("String");(t.exports=function(t,e,n,o){var u=!!o&&!!o.unsafe,d=!!o&&!!o.enumerable,f=!!o&&!!o.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||r(n,"name",e),l(n).source=c.join("string"==typeof e?e:"")),t!==a?(u?!f&&t[e]&&(d=!0):delete t[e],d?t[e]=n:r(t,e,n)):d?t[e]=n:s(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&d(this).source||o(this)}))},bxKX:function(t,e,n){!function(t){"use strict";t.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},bxSN:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("8Y7J"),i=n("moLw");e.ClickOutsideModule=function(){return a([r.NgModule({declarations:[i.ClickOutsideDirective],exports:[i.ClickOutsideDirective]})],(function(){}))}()},c2HN:function(t,e,n){"use strict";function a(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}n.d(e,"a",(function(){return a}))},c6wG:function(t,e,n){var a=n("dD9F"),r=n("sEf8"),i=n("mdPL"),s=i&&i.isTypedArray,o=s?r(s):a;t.exports=o},cRix:function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},cUpR:function(t,e,n){"use strict";n.d(e,"p",(function(){return _})),n.d(e,"a",(function(){return lt})),n.d(e,"h",(function(){return dt})),n.d(e,"c",(function(){return T})),n.d(e,"d",(function(){return O})),n.d(e,"e",(function(){return W})),n.d(e,"f",(function(){return K})),n.d(e,"g",(function(){return $})),n.d(e,"b",(function(){return tt})),n.d(e,"q",(function(){return s})),n.d(e,"j",(function(){return k})),n.d(e,"i",(function(){return H})),n.d(e,"m",(function(){return Z})),n.d(e,"n",(function(){return X})),n.d(e,"l",(function(){return I})),n.d(e,"o",(function(){return S})),n.d(e,"k",(function(){return et}));var a=n("SVse"),r=n("8Y7J");let i=null;function s(){return i}const o={class:"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},u={"\b":"Backspace","\t":"Tab","\7f":"Delete","\e":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},d={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\90":"NumLock"},l=(()=>{if(r["ɵglobal"].Node)return r["ɵglobal"].Node.prototype.contains||function(t){return!!(16&this.compareDocumentPosition(t))}})();class c extends class extends class{constructor(){this.resourceLoaderType=null}get attrToPropMap(){return this._attrToPropMap}set attrToPropMap(t){this._attrToPropMap=t}}{constructor(){super(),this._animationPrefix=null,this._transitionEnd=null;try{const t=this.createElement("div",document);if(null!=this.getStyle(t,"animationName"))this._animationPrefix="";else{const e=["Webkit","Moz","O","ms"];for(let n=0;n<e.length;n++)if(null!=this.getStyle(t,e[n]+"AnimationName")){this._animationPrefix="-"+e[n].toLowerCase()+"-";break}}const e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};Object.keys(e).forEach(n=>{null!=this.getStyle(t,n)&&(this._transitionEnd=e[n])})}catch(t){this._animationPrefix=null,this._transitionEnd=null}}getDistributedNodes(t){return t.getDistributedNodes()}resolveAndSetHref(t,e,n){t.href=null==n?e:e+"/../"+n}supportsDOMEvents(){return!0}supportsNativeShadowDOM(){return"function"==typeof document.body.createShadowRoot}getAnimationPrefix(){return this._animationPrefix?this._animationPrefix:""}getTransitionEnd(){return this._transitionEnd?this._transitionEnd:""}supportsAnimation(){return null!=this._animationPrefix&&null!=this._transitionEnd}}{parse(t){throw new Error("parse not implemented")}static makeCurrent(){var t;t=new c,i||(i=t)}hasProperty(t,e){return e in t}setProperty(t,e,n){t[e]=n}getProperty(t,e){return t[e]}invoke(t,e,n){t[e](...n)}logError(t){window.console&&(console.error?console.error(t):console.log(t))}log(t){window.console&&window.console.log&&window.console.log(t)}logGroup(t){window.console&&window.console.group&&window.console.group(t)}logGroupEnd(){window.console&&window.console.groupEnd&&window.console.groupEnd()}get attrToPropMap(){return o}contains(t,e){return l.call(t,e)}querySelector(t,e){return t.querySelector(e)}querySelectorAll(t,e){return t.querySelectorAll(e)}on(t,e,n){t.addEventListener(e,n,!1)}onAndCancel(t,e,n){return t.addEventListener(e,n,!1),()=>{t.removeEventListener(e,n,!1)}}dispatchEvent(t,e){t.dispatchEvent(e)}createMouseEvent(t){const e=this.getDefaultDocument().createEvent("MouseEvent");return e.initEvent(t,!0,!0),e}createEvent(t){const e=this.getDefaultDocument().createEvent("Event");return e.initEvent(t,!0,!0),e}preventDefault(t){t.preventDefault(),t.returnValue=!1}isPrevented(t){return t.defaultPrevented||null!=t.returnValue&&!t.returnValue}getInnerHTML(t){return t.innerHTML}getTemplateContent(t){return"content"in t&&this.isTemplateElement(t)?t.content:null}getOuterHTML(t){return t.outerHTML}nodeName(t){return t.nodeName}nodeValue(t){return t.nodeValue}type(t){return t.type}content(t){return this.hasProperty(t,"content")?t.content:t}firstChild(t){return t.firstChild}nextSibling(t){return t.nextSibling}parentElement(t){return t.parentNode}childNodes(t){return t.childNodes}childNodesAsList(t){const e=t.childNodes,n=new Array(e.length);for(let a=0;a<e.length;a++)n[a]=e[a];return n}clearNodes(t){for(;t.firstChild;)t.removeChild(t.firstChild)}appendChild(t,e){t.appendChild(e)}removeChild(t,e){t.removeChild(e)}replaceChild(t,e,n){t.replaceChild(e,n)}remove(t){return t.parentNode&&t.parentNode.removeChild(t),t}insertBefore(t,e,n){t.insertBefore(n,e)}insertAllBefore(t,e,n){n.forEach(n=>t.insertBefore(n,e))}insertAfter(t,e,n){t.insertBefore(n,e.nextSibling)}setInnerHTML(t,e){t.innerHTML=e}getText(t){return t.textContent}setText(t,e){t.textContent=e}getValue(t){return t.value}setValue(t,e){t.value=e}getChecked(t){return t.checked}setChecked(t,e){t.checked=e}createComment(t){return this.getDefaultDocument().createComment(t)}createTemplate(t){const e=this.getDefaultDocument().createElement("template");return e.innerHTML=t,e}createElement(t,e){return(e=e||this.getDefaultDocument()).createElement(t)}createElementNS(t,e,n){return(n=n||this.getDefaultDocument()).createElementNS(t,e)}createTextNode(t,e){return(e=e||this.getDefaultDocument()).createTextNode(t)}createScriptTag(t,e,n){const a=(n=n||this.getDefaultDocument()).createElement("SCRIPT");return a.setAttribute(t,e),a}createStyleElement(t,e){const n=(e=e||this.getDefaultDocument()).createElement("style");return this.appendChild(n,this.createTextNode(t,e)),n}createShadowRoot(t){return t.createShadowRoot()}getShadowRoot(t){return t.shadowRoot}getHost(t){return t.host}clone(t){return t.cloneNode(!0)}getElementsByClassName(t,e){return t.getElementsByClassName(e)}getElementsByTagName(t,e){return t.getElementsByTagName(e)}classList(t){return Array.prototype.slice.call(t.classList,0)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}hasClass(t,e){return t.classList.contains(e)}setStyle(t,e,n){t.style[e]=n}removeStyle(t,e){t.style[e]=""}getStyle(t,e){return t.style[e]}hasStyle(t,e,n){const a=this.getStyle(t,e)||"";return n?a==n:a.length>0}tagName(t){return t.tagName}attributeMap(t){const e=new Map,n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a);e.set(t.name,t.value)}return e}hasAttribute(t,e){return t.hasAttribute(e)}hasAttributeNS(t,e,n){return t.hasAttributeNS(e,n)}getAttribute(t,e){return t.getAttribute(e)}getAttributeNS(t,e,n){return t.getAttributeNS(e,n)}setAttribute(t,e,n){t.setAttribute(e,n)}setAttributeNS(t,e,n,a){t.setAttributeNS(e,n,a)}removeAttribute(t,e){t.removeAttribute(e)}removeAttributeNS(t,e,n){t.removeAttributeNS(e,n)}templateAwareRoot(t){return this.isTemplateElement(t)?this.content(t):t}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}getBoundingClientRect(t){try{return t.getBoundingClientRect()}catch(e){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}}getTitle(t){return t.title}setTitle(t,e){t.title=e||""}elementMatches(t,e){return!!this.isElementNode(t)&&(t.matches&&t.matches(e)||t.msMatchesSelector&&t.msMatchesSelector(e)||t.webkitMatchesSelector&&t.webkitMatchesSelector(e))}isTemplateElement(t){return this.isElementNode(t)&&"TEMPLATE"===t.nodeName}isTextNode(t){return t.nodeType===Node.TEXT_NODE}isCommentNode(t){return t.nodeType===Node.COMMENT_NODE}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}hasShadowRoot(t){return null!=t.shadowRoot&&t instanceof HTMLElement}isShadowRoot(t){return t instanceof DocumentFragment}importIntoDoc(t){return document.importNode(this.templateAwareRoot(t),!0)}adoptNode(t){return document.adoptNode(t)}getHref(t){return t.getAttribute("href")}getEventKey(t){let e=t.key;if(null==e){if(e=t.keyIdentifier,null==e)return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&d.hasOwnProperty(e)&&(e=d[e]))}return u[e]||e}getGlobalEventTarget(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null}getHistory(){return window.history}getLocation(){return window.location}getBaseHref(t){const e=h||(h=document.querySelector("base"),h)?h.getAttribute("href"):null;return null==e?null:(n=e,f||(f=document.createElement("a")),f.setAttribute("href",n),"/"===f.pathname.charAt(0)?f.pathname:"/"+f.pathname);var n}resetBaseElement(){h=null}getUserAgent(){return window.navigator.userAgent}setData(t,e,n){this.setAttribute(t,"data-"+e,n)}getData(t,e){return this.getAttribute(t,"data-"+e)}getComputedStyle(t){return getComputedStyle(t)}supportsWebAnimation(){return"function"==typeof Element.prototype.animate}performanceNow(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()}supportsCookies(){return!0}getCookie(t){return Object(a["ɵparseCookieValue"])(document.cookie,t)}setCookie(t,e){document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)}}let f,h=null;function g(){return!!window.history.pushState}const p=new r.InjectionToken("TRANSITION_ID"),b=[{provide:r.APP_INITIALIZER,useFactory:function(t,e,n){return()=>{n.get(r.ApplicationInitStatus).donePromise.then(()=>{const n=s();Array.prototype.slice.apply(n.querySelectorAll(e,"style[ng-transition]")).filter(e=>n.getAttribute(e,"ng-transition")===t).forEach(t=>n.remove(t))})}},deps:[p,a.DOCUMENT,r.Injector],multi:!0}];class m{static init(){Object(r.setTestabilityGetter)(new m)}addToWindow(t){r["ɵglobal"].getAngularTestability=(e,n=!0)=>{const a=t.findTestabilityInTree(e,n);if(null==a)throw new Error("Could not find testability for element.");return a},r["ɵglobal"].getAllAngularTestabilities=()=>t.getAllTestabilities(),r["ɵglobal"].getAllAngularRootElements=()=>t.getAllRootElements(),r["ɵglobal"].frameworkStabilizers||(r["ɵglobal"].frameworkStabilizers=[]),r["ɵglobal"].frameworkStabilizers.push(t=>{const e=r["ɵglobal"].getAllAngularTestabilities();let n=e.length,a=!1;const i=function(e){a=a||e,n--,0==n&&t(a)};e.forEach((function(t){t.whenStable(i)}))})}findTestabilityInTree(t,e,n){if(null==e)return null;const a=t.getTestability(e);return null!=a?a:n?s().isShadowRoot(e)?this.findTestabilityInTree(t,s().getHost(e),!0):this.findTestabilityInTree(t,s().parentElement(e),!0):null}}function y(t,e){"undefined"!=typeof COMPILED&&COMPILED||((r["ɵglobal"].ng=r["ɵglobal"].ng||{})[t]=e)}const v=(()=>({ApplicationRef:r.ApplicationRef,NgZone:r.NgZone}))();function x(t){return Object(r.getDebugNode)(t)}function _(t){return y("probe",x),y("coreTokens",Object.assign({},v,(t||[]).reduce((t,e)=>(t[e.name]=e.token,t),{}))),()=>x}const T=new r.InjectionToken("EventManagerPlugins");class O{constructor(t,e){this._zone=e,this._eventNameToPlugin=new Map,t.forEach(t=>t.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)}addGlobalEventListener(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)}getZone(){return this._zone}_findPluginFor(t){const e=this._eventNameToPlugin.get(t);if(e)return e;const n=this._plugins;for(let a=0;a<n.length;a++){const e=n[a];if(e.supports(t))return this._eventNameToPlugin.set(t,e),e}throw new Error(`No event manager plugin found for event ${t}`)}}class w{constructor(t){this._doc=t}addGlobalEventListener(t,e,n){const a=s().getGlobalEventTarget(this._doc,t);if(!a)throw new Error(`Unsupported event target ${a} for event ${e}`);return this.addEventListener(a,e,n)}}class S{constructor(){this._stylesSet=new Set}addStyles(t){const e=new Set;t.forEach(t=>{this._stylesSet.has(t)||(this._stylesSet.add(t),e.add(t))}),this.onStylesAdded(e)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}class I extends S{constructor(t){super(),this._doc=t,this._hostNodes=new Set,this._styleNodes=new Set,this._hostNodes.add(t.head)}_addStylesToHost(t,e){t.forEach(t=>{const n=this._doc.createElement("style");n.textContent=t,this._styleNodes.add(e.appendChild(n))})}addHost(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)}removeHost(t){this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach(e=>this._addStylesToHost(t,e))}ngOnDestroy(){this._styleNodes.forEach(t=>s().remove(t))}}const N={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/"},C=/%COMP%/g;function R(t,e,n){for(let a=0;a<e.length;a++){let r=e[a];Array.isArray(r)?R(t,r,n):(r=r.replace(C,t),n.push(r))}return n}function A(t){return e=>{!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}class k{constructor(t,e,n){this.eventManager=t,this.sharedStylesHost=e,this.appId=n,this.rendererByCompId=new Map,this.defaultRenderer=new E(t)}createRenderer(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case r.ViewEncapsulation.Emulated:{let n=this.rendererByCompId.get(e.id);return n||(n=new P(this.eventManager,this.sharedStylesHost,e,this.appId),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n}case r.ViewEncapsulation.Native:case r.ViewEncapsulation.ShadowDom:return new M(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){const t=R(e.id,e.styles,[]);this.sharedStylesHost.addStyles(t),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}class E{constructor(t){this.eventManager=t,this.data=Object.create(null)}destroy(){}createElement(t,e){return e?document.createElementNS(N[e]||e,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,e){t.appendChild(e)}insertBefore(t,e,n){t&&t.insertBefore(e,n)}removeChild(t,e){t&&t.removeChild(e)}selectRootElement(t,e){let n="string"==typeof t?document.querySelector(t):t;if(!n)throw new Error(`The selector "${t}" did not match any elements`);return e||(n.textContent=""),n}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,e,n,a){if(a){e=a+":"+e;const r=N[a];r?t.setAttributeNS(r,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)}removeAttribute(t,e,n){if(n){const a=N[n];a?t.removeAttributeNS(a,e):t.removeAttribute(`${n}:${e}`)}else t.removeAttribute(e)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}setStyle(t,e,n,a){a&r.RendererStyleFlags2.DashCase?t.style.setProperty(e,n,a&r.RendererStyleFlags2.Important?"important":""):t.style[e]=n}removeStyle(t,e,n){n&r.RendererStyleFlags2.DashCase?t.style.removeProperty(e):t.style[e]=""}setProperty(t,e,n){D(e,"property"),t[e]=n}setValue(t,e){t.nodeValue=e}listen(t,e,n){return D(e,"listener"),"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,A(n)):this.eventManager.addEventListener(t,e,A(n))}}const L=(()=>"@".charCodeAt(0))();function D(t,e){if(t.charCodeAt(0)===L)throw new Error(`Found the synthetic ${e} ${t}. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.`)}class P extends E{constructor(t,e,n,a){super(t),this.component=n;const r=R(a+"-"+n.id,n.styles,[]);e.addStyles(r),this.contentAttr="_ngcontent-%COMP%".replace(C,a+"-"+n.id),this.hostAttr=function(t){return"_nghost-%COMP%".replace(C,t)}(a+"-"+n.id)}applyToHost(t){super.setAttribute(t,this.hostAttr,"")}createElement(t,e){const n=super.createElement(t,e);return super.setAttribute(n,this.contentAttr,""),n}}class M extends E{constructor(t,e,n,a){super(t),this.sharedStylesHost=e,this.hostEl=n,this.component=a,this.shadowRoot=a.encapsulation===r.ViewEncapsulation.ShadowDom?n.attachShadow({mode:"open"}):n.createShadowRoot(),this.sharedStylesHost.addHost(this.shadowRoot);const i=R(a.id,a.styles,[]);for(let r=0;r<i.length;r++){const t=document.createElement("style");t.textContent=i[r],this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}appendChild(t,e){return super.appendChild(this.nodeOrShadowRoot(t),e)}insertBefore(t,e,n){return super.insertBefore(this.nodeOrShadowRoot(t),e,n)}removeChild(t,e){return super.removeChild(this.nodeOrShadowRoot(t),e)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}}const q=(()=>"undefined"!=typeof Zone&&Zone.__symbol__||function(t){return"__zone_symbol__"+t})(),j=q("addEventListener"),F=q("removeEventListener"),G={},V="__zone_symbol__propagationStopped",z=(()=>{const t="undefined"!=typeof Zone&&Zone[q("BLACK_LISTED_EVENTS")];if(t){const e={};return t.forEach(t=>{e[t]=t}),e}})(),B=function(t){return!!z&&z.hasOwnProperty(t)},Y=function(t){const e=G[t.type];if(!e)return;const n=this[e];if(!n)return;const a=[t];if(1===n.length){const t=n[0];return t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}{const e=n.slice();for(let n=0;n<e.length&&!0!==t[V];n++){const t=e[n];t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}}};class H extends w{constructor(t,e,n){super(t),this.ngZone=e,n&&Object(a.isPlatformServer)(n)||this.patchEvent()}patchEvent(){if("undefined"==typeof Event||!Event||!Event.prototype)return;if(Event.prototype.__zone_symbol__stopImmediatePropagation)return;const t=Event.prototype.__zone_symbol__stopImmediatePropagation=Event.prototype.stopImmediatePropagation;Event.prototype.stopImmediatePropagation=function(){this&&(this[V]=!0),t&&t.apply(this,arguments)}}supports(t){return!0}addEventListener(t,e,n){let a=n;if(!t[j]||r.NgZone.isInAngularZone()&&!B(e))t.addEventListener(e,a,!1);else{let n=G[e];n||(n=G[e]=q("ANGULAR"+e+"FALSE"));let r=t[n];const i=r&&r.length>0;r||(r=t[n]=[]);const s=B(e)?Zone.root:Zone.current;if(0===r.length)r.push({zone:s,handler:a});else{let t=!1;for(let e=0;e<r.length;e++)if(r[e].handler===a){t=!0;break}t||r.push({zone:s,handler:a})}i||t[j](e,Y,!1)}return()=>this.removeEventListener(t,e,a)}removeEventListener(t,e,n){let a=t[F];if(!a)return t.removeEventListener.apply(t,[e,n,!1]);let r=G[e],i=r&&t[r];if(!i)return t.removeEventListener.apply(t,[e,n,!1]);let s=!1;for(let o=0;o<i.length;o++)if(i[o].handler===n){s=!0,i.splice(o,1);break}s?0===i.length&&a.apply(t,[e,Y,!1]):t.removeEventListener.apply(t,[e,n,!1])}}const U={pan:!0,panstart:!0,panmove:!0,panend:!0,pancancel:!0,panleft:!0,panright:!0,panup:!0,pandown:!0,pinch:!0,pinchstart:!0,pinchmove:!0,pinchend:!0,pinchcancel:!0,pinchin:!0,pinchout:!0,press:!0,pressup:!0,rotate:!0,rotatestart:!0,rotatemove:!0,rotateend:!0,rotatecancel:!0,swipe:!0,swipeleft:!0,swiperight:!0,swipeup:!0,swipedown:!0,tap:!0},W=new r.InjectionToken("HammerGestureConfig"),K=new r.InjectionToken("HammerLoader");class ${constructor(){this.events=[],this.overrides={}}buildHammer(t){const e=new Hammer(t,this.options);e.get("pinch").set({enable:!0}),e.get("rotate").set({enable:!0});for(const n in this.overrides)e.get(n).set(this.overrides[n]);return e}}class Z extends w{constructor(t,e,n,a){super(t),this._config=e,this.console=n,this.loader=a}supports(t){return!(!U.hasOwnProperty(t.toLowerCase())&&!this.isCustomEvent(t)||!window.Hammer&&!this.loader&&(this.console.warn(`The "${t}" event cannot be bound because Hammer.JS is not `+"loaded and no custom loader has been specified."),1))}addEventListener(t,e,n){const a=this.manager.getZone();if(e=e.toLowerCase(),!window.Hammer&&this.loader){let a=!1,r=()=>{a=!0};return this.loader().then(()=>{if(!window.Hammer)return this.console.warn("The custom HAMMER_LOADER completed, but Hammer.JS is not present."),void(r=()=>{});a||(r=this.addEventListener(t,e,n))}).catch(()=>{this.console.warn(`The "${e}" event cannot be bound because the custom `+"Hammer.JS loader failed."),r=()=>{}}),()=>{r()}}return a.runOutsideAngular(()=>{const r=this._config.buildHammer(t),i=function(t){a.runGuarded((function(){n(t)}))};return r.on(e,i),()=>{r.off(e,i),"function"==typeof r.destroy&&r.destroy()}})}isCustomEvent(t){return this._config.events.indexOf(t)>-1}}const J=["alt","control","meta","shift"],Q={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};class X extends w{constructor(t){super(t)}supports(t){return null!=X.parseEventName(t)}addEventListener(t,e,n){const a=X.parseEventName(e),r=X.eventCallback(a.fullKey,n,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>s().onAndCancel(t,a.domEventName,r))}static parseEventName(t){const e=t.toLowerCase().split("."),n=e.shift();if(0===e.length||"keydown"!==n&&"keyup"!==n)return null;const a=X._normalizeKey(e.pop());let r="";if(J.forEach(t=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),r+=t+".")}),r+=a,0!=e.length||0===a.length)return null;const i={};return i.domEventName=n,i.fullKey=r,i}static getEventFullKey(t){let e="",n=s().getEventKey(t);return n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),J.forEach(a=>{a!=n&&(0,Q[a])(t)&&(e+=a+".")}),e+=n,e}static eventCallback(t,e,n){return a=>{X.getEventFullKey(a)===t&&n.runGuarded(()=>e(a))}}static _normalizeKey(t){switch(t){case"esc":return"escape";default:return t}}}class tt{}class et extends tt{constructor(t){super(),this._doc=t}sanitize(t,e){if(null==e)return null;switch(t){case r.SecurityContext.NONE:return e;case r.SecurityContext.HTML:return e instanceof at?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"HTML"),Object(r["ɵ_sanitizeHtml"])(this._doc,String(e)));case r.SecurityContext.STYLE:return e instanceof rt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"Style"),Object(r["ɵ_sanitizeStyle"])(e));case r.SecurityContext.SCRIPT:if(e instanceof it)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"Script"),new Error("unsafe value used in a script context");case r.SecurityContext.URL:return e instanceof ot||e instanceof st?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"URL"),Object(r["ɵ_sanitizeUrl"])(String(e)));case r.SecurityContext.RESOURCE_URL:if(e instanceof ot)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"ResourceURL"),new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");default:throw new Error(`Unexpected SecurityContext ${t} (see http://g.co/ng/security#xss)`)}}checkNotSafeValue(t,e){if(t instanceof nt)throw new Error(`Required a safe ${e}, got a ${t.getTypeName()} `+"(see http://g.co/ng/security#xss)")}bypassSecurityTrustHtml(t){return new at(t)}bypassSecurityTrustStyle(t){return new rt(t)}bypassSecurityTrustScript(t){return new it(t)}bypassSecurityTrustUrl(t){return new st(t)}bypassSecurityTrustResourceUrl(t){return new ot(t)}}class nt{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}`+" (see http://g.co/ng/security#xss)"}}class at extends nt{getTypeName(){return"HTML"}}class rt extends nt{getTypeName(){return"Style"}}class it extends nt{getTypeName(){return"Script"}}class st extends nt{getTypeName(){return"URL"}}class ot extends nt{getTypeName(){return"ResourceURL"}}const ut=[{provide:r.PLATFORM_ID,useValue:a["ɵPLATFORM_BROWSER_ID"]},{provide:r.PLATFORM_INITIALIZER,useValue:function(){c.makeCurrent(),m.init()},multi:!0},{provide:a.PlatformLocation,useClass:class extends a.PlatformLocation{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=s().getLocation(),this._history=s().getHistory()}getBaseHrefFromDOM(){return s().getBaseHref(this._doc)}onPopState(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)}onHashChange(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)}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(t){this.location.pathname=t}pushState(t,e,n){g()?this._history.pushState(t,e,n):this.location.hash=n}replaceState(t,e,n){g()?this._history.replaceState(t,e,n):this.location.hash=n}forward(){this._history.forward()}back(){this._history.back()}getState(){return this._history.state}},deps:[a.DOCUMENT]},{provide:a.DOCUMENT,useFactory:function(){return document},deps:[]}],dt=Object(r.createPlatformFactory)(r.platformCore,"browser",ut);class lt{constructor(t){if(t)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(t){return{ngModule:lt,providers:[{provide:r.APP_ID,useValue:t.appId},{provide:p,useExisting:r.APP_ID},b]}}}"undefined"!=typeof window&&window},cVYH:function(t,e,n){var a=n("hh1v"),r=n("0rvr");t.exports=function(t,e,n){var i,s;return r&&"function"==typeof(i=e.constructor)&&i!==n&&a(s=i.prototype)&&s!==n.prototype&&r(t,s),t}},cp0P:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("DH7j"),i=n("lJxs"),s=n("XoHu"),o=n("Cfvw");function u(...t){if(1===t.length){const e=t[0];if(Object(r.a)(e))return d(e,null);if(Object(s.a)(e)&&Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);return d(t.map(t=>e[t]),t)}}if("function"==typeof t[t.length-1]){const e=t.pop();return d(t=1===t.length&&Object(r.a)(t[0])?t[0]:t,null).pipe(Object(i.a)(t=>e(...t)))}return d(t,null)}function d(t,e){return new a.a(n=>{const a=t.length;if(0===a)return void n.complete();const r=new Array(a);let i=0,s=0;for(let u=0;u<a;u++){const d=Object(o.a)(t[u]);let l=!1;n.add(d.subscribe({next:t=>{l||(l=!0,s++),r[u]=t},error:t=>n.error(t),complete:()=>{i++,i!==a&&l||(s===a&&n.next(e?e.reduce((t,e,n)=>(t[e]=r[n],t),{}):r),n.complete())}}))}})}},"cq/+":function(t,e,n){var a=n("mc0g")();t.exports=a},crnd:function(t,e){function n(t){return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}))}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id="crnd"},cvCv:function(t,e){t.exports=function(t){return function(){return t}}},czMo:function(t,e,n){!function(t){"use strict";t.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},"d+Og":function(t,e,n){"use strict";var a=n("LvDl");let r=(()=>{class t{constructor(t){if(this.type=t,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}isValidType(){return t.VALID_CATEGORIES.includes(this.type)}setTypeStates(){switch(this.type){case t.CATEGORY_CLEAN:this.states=["active","clean"];break;case t.CATEGORY_WORKING:this.states=["activating","backfill_wait","backfilling","creating","deep","degraded","forced_backfill","forced_recovery","peering","peered","recovering","recovery_wait","repair","scrubbing","snaptrim","snaptrim_wait"];break;case t.CATEGORY_WARNING:this.states=["backfill_toofull","backfill_unfound","down","incomplete","inconsistent","recovery_toofull","recovery_unfound","remapped","snaptrim_error","stale","undersized"];break;default:this.states=[]}}}return t.CATEGORY_CLEAN="clean",t.CATEGORY_WORKING="working",t.CATEGORY_WARNING="warning",t.CATEGORY_UNKNOWN="unknown",t.VALID_CATEGORIES=[t.CATEGORY_CLEAN,t.CATEGORY_WORKING,t.CATEGORY_WARNING,t.CATEGORY_UNKNOWN],t})();var i=n("8Y7J"),s=n("kJI8");n.d(e,"a",(function(){return o}));let o=(()=>{class t{constructor(){this.categories=this.createCategories()}getAllTypes(){return r.VALID_CATEGORIES}getTypeByStates(t){const e=this.getPgStatesFromText(t);if(0===e.length)return r.CATEGORY_UNKNOWN;const n=a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>a.intersection(this.categories[t].states,e).length));if(n[r.CATEGORY_WARNING]>0)return r.CATEGORY_WARNING;const i=n[r.CATEGORY_WORKING];return e.length>n[r.CATEGORY_CLEAN]+i?r.CATEGORY_UNKNOWN:i?r.CATEGORY_WORKING:r.CATEGORY_CLEAN}createCategories(){return a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>new r(t)))}getPgStatesFromText(t){const e=t.replace(/[^a-z]+/g," ").trim().split(" ");return a.uniq(e)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:s.a}),t})()},dApe:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("2vnA"),i=n("MP8s"),s=n("X+05"),o=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},u=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},d=function(){function t(t){var e=this;this.treeModel=t,this.yBlocks=0,this.x=0,this.viewportHeight=null,this.viewport=null,t.virtualScroll=this,this._dispose=[Object(r.b)((function(){return e.fixScroll()}))]}return Object.defineProperty(t.prototype,"y",{get:function(){return 150*this.yBlocks},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalHeight",{get:function(){return this.treeModel.virtualRoot?this.treeModel.virtualRoot.height:0},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},t.prototype.init=function(){var t=this,e=this.recalcPositions.bind(this);e(),this._dispose=this._dispose.concat([Object(r.e)((function(){return t.treeModel.roots}),e),Object(r.e)((function(){return t.treeModel.expandedNodeIds}),e),Object(r.e)((function(){return t.treeModel.hiddenNodeIds}),e)]),this.treeModel.subscribe(s.a.loadNodeChildren,e)},t.prototype.isEnabled=function(){return this.treeModel.options.useVirtualScroll},t.prototype._setYBlocks=function(t){this.yBlocks=t},t.prototype.recalcPositions=function(){this.treeModel.virtualRoot.height=this._getPositionAfter(this.treeModel.getVisibleRoots(),0)},t.prototype._getPositionAfter=function(t,e){var n=this,a=e;return t.forEach((function(t){t.position=a,a=n._getPositionAfterNode(t,a)})),a},t.prototype._getPositionAfterNode=function(t,e){var n=t.getSelfHeight()+e;return t.children&&t.isExpanded&&(n=this._getPositionAfter(t.visibleChildren,n)),t.height=n-e,n},t.prototype.clear=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.setViewport=function(t){Object.assign(this,{viewport:t,x:t.scrollLeft,yBlocks:Math.round(t.scrollTop/150),viewportHeight:t.getBoundingClientRect?t.getBoundingClientRect().height:0})},t.prototype.scrollIntoView=function(t,e,n){if(void 0===n&&(n=!0),t.options.scrollContainer){var a=t.options.scrollContainer,r=a.getBoundingClientRect().height,i=a.getBoundingClientRect().top,s=this.viewport.getBoundingClientRect().top+t.position-i;(e||s<a.scrollTop||s+t.getSelfHeight()>a.scrollTop+r)&&(a.scrollTop=n?s-r/2:s)}else(e||t.position<this.y||t.position+t.getSelfHeight()>this.y+this.viewportHeight)&&this.viewport&&(this.viewport.scrollTop=n?t.position-this.viewportHeight/2:t.position,this._setYBlocks(Math.floor(this.viewport.scrollTop/150)))},t.prototype.getViewportNodes=function(t){var e=this;if(!t)return[];var n=t.filter((function(t){return!t.isHidden}));if(!this.isEnabled())return n;if(!this.viewportHeight||!n.length)return[];var a=l(n,(function(t){return t.position+500>e.y||t.position+t.height>e.y})),r=l(n,(function(t){return t.position-500>e.y+e.viewportHeight}),a),i=[];if(r-a>(1e3+this.viewportHeight)/n[0].treeModel.options.options.nodeHeight)return[];for(var s=a;s<=r;s++)i.push(n[s]);return i},t.prototype.fixScroll=function(){var t=Math.max(0,this.totalHeight-this.viewportHeight);this.y<0&&this._setYBlocks(0),this.y>t&&this._setYBlocks(t/150)},o([r.d,u("design:type",Object)],t.prototype,"yBlocks",void 0),o([r.d,u("design:type",Object)],t.prototype,"x",void 0),o([r.d,u("design:type",Object)],t.prototype,"viewportHeight",void 0),o([r.c,u("design:type",Object),u("design:paramtypes",[])],t.prototype,"y",null),o([r.c,u("design:type",Object),u("design:paramtypes",[])],t.prototype,"totalHeight",null),o([r.a,u("design:type",Function),u("design:paramtypes",[Object]),u("design:returntype",void 0)],t.prototype,"_setYBlocks",null),o([r.a,u("design:type",Function),u("design:paramtypes",[]),u("design:returntype",void 0)],t.prototype,"recalcPositions",null),o([r.a,u("design:type",Function),u("design:paramtypes",[Object]),u("design:returntype",void 0)],t.prototype,"setViewport",null),o([r.a,u("design:type",Function),u("design:paramtypes",[Object,Object,Object]),u("design:returntype",void 0)],t.prototype,"scrollIntoView",null),o([Object(a.Injectable)(),u("design:paramtypes",[i.a])],t)}();function l(t,e,n){void 0===n&&(n=0);for(var a=n,r=t.length-1;a!==r;){var i=Math.floor((a+r)/2);e(t[i])?r=i:a=a===i?r:i}return a}},"dBg+":function(t,e){e.f=Object.getOwnPropertySymbols},dD9F:function(t,e,n){var a=n("NykK"),r=n("shjB"),i=n("ExA7"),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&r(t.length)&&!!s[a(t)]}},dEH0:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return`${t} ms`}}},dNwA:function(t,e,n){!function(t){"use strict";t.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("wd/R"))},dTAl:function(t,e,n){var a=n("GoyQ"),r=Object.create,i=function(){function t(){}return function(e){if(!a(e))return{};if(r)return r(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=i},dgut:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("NEZu");n("Fgil");class r{constructor(t){this.dimlessBinaryPipe=t,this.style={height:"30px",width:"100px"},this.colors=[{backgroundColor:"rgba(40,140,234,0.2)",borderColor:"rgba(40,140,234,1)",pointBackgroundColor:"rgba(40,140,234,1)",pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(40,140,234,0.8)"}],this.options={animation:{duration:0},responsive:!0,maintainAspectRatio:!1,legend:{display:!1},elements:{line:{borderWidth:1}},tooltips:{enabled:!1,mode:"index",intersect:!1,custom:void 0,callbacks:{label:t=>this.isBinary?this.dimlessBinaryPipe.transform(t.yLabel):t.yLabel,title:()=>""}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}ngOnInit(){const t=new a.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",t=>t.caretY-t.height-t.yPadding-5+"px");t.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=e=>{t.customTooltips(e)}}ngOnChanges(t){this.datasets[0].data=t.data.currentValue,this.labels=[...Array(t.data.currentValue.length)]}}},dt0z:function(t,e,n){var a=n("zoYe");t.exports=function(t){return null==t?"":a(t)}},"e+ae":function(t,e,n){!function(t){"use strict";var e="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function a(t){return t>1&&t<5}function r(t,e,n,r){var i=t+" ";switch(n){case"s":return e||r?"pár sekúnd":"pár sekundami";case"ss":return e||r?i+(a(t)?"sekundy":"sekúnd"):i+"sekundami";case"m":return e?"minúta":r?"minútu":"minútou";case"mm":return e||r?i+(a(t)?"minúty":"minút"):i+"minútami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?i+(a(t)?"hodiny":"hodín"):i+"hodinami";case"d":return e||r?"deň":"dňom";case"dd":return e||r?i+(a(t)?"dni":"dní"):i+"dňami";case"M":return e||r?"mesiac":"mesiacom";case"MM":return e||r?i+(a(t)?"mesiace":"mesiacov"):i+"mesiacmi";case"y":return e||r?"rok":"rokom";case"yy":return e||r?i+(a(t)?"roky":"rokov"):i+"rokmi"}}t.defineLocale("sk",{months:e,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},e4Nc:function(t,e,n){var a=n("fGT3"),r=n("k+1r"),i=n("JHgL"),s=n("pSRY"),o=n("H8j4");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}u.prototype.clear=a,u.prototype.delete=r,u.prototype.get=i,u.prototype.has=s,u.prototype.set=o,t.exports=u},e5cp:function(t,e,n){var a=n("fmRc"),r=n("or5M"),i=n("HDyB"),s=n("seXi"),o=n("QqLw"),u=n("Z0cm"),d=n("DSRE"),l=n("c6wG"),c="[object Object]",f=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,h,g,p){var b=u(t),m=u(e),y=b?"[object Array]":o(t),v=m?"[object Array]":o(e),x=(y="[object Arguments]"==y?c:y)==c,_=(v="[object Arguments]"==v?c:v)==c,T=y==v;if(T&&d(t)){if(!d(e))return!1;b=!0,x=!1}if(T&&!x)return p||(p=new a),b||l(t)?r(t,e,n,h,g,p):i(t,e,y,n,h,g,p);if(!(1&n)){var O=x&&f.call(t,"__wrapped__"),w=_&&f.call(e,"__wrapped__");if(O||w){var S=O?t.value():t,I=w?e.value():e;return p||(p=new a),g(S,I,n,h,p)}}return!!T&&(p||(p=new a),s(t,e,n,h,g,p))}},"eDl+":function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},eIep:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj"),s=n("lJxs"),o=n("Cfvw");function u(t,e){return"function"==typeof e?n=>n.pipe(u((n,a)=>Object(o.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))))):e=>e.lift(new d(t))}class d{constructor(t){this.project=t}call(t,e){return e.subscribe(new l(t,this.project))}}class l extends a.a{constructor(t,e){super(t),this.project=e,this.index=0}_next(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this._innerSub(e,t,n)}_innerSub(t,e,n){const a=this.innerSubscription;a&&a.unsubscribe();const s=new r.a(this,e,n),o=this.destination;o.add(s),this.innerSubscription=Object(i.a)(this,t,void 0,void 0,s),this.innerSubscription!==s&&o.add(this.innerSubscription)}_complete(){const{innerSubscription:t}=this;t&&!t.closed||super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=null}notifyComplete(t){this.destination.remove(t),this.innerSubscription=null,this.isStopped&&super._complete()}notifyNext(t,e,n,a,r){this.destination.next(e)}}},eTJe:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("SgmB"),n("ZDA6"),n("sne2"),n("mtw6")),o=n("QFaf"),u=n("1Ni5"),d=(n("9nlD"),function(t){return t.editing="editing",t}({}));class l{}n.d(e,"a",(function(){return c}));class c{constructor(t,e,n,a,r,i,s){this.route=t,this.router=e,this.roleService=n,this.scopeService=a,this.notificationService=r,this.i18n=i,this.actionLabels=s,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=d,this.resource=this.i18n("role"),this.createForm(),this.listenToChanges()}createForm(){this.roleForm=new o.a({name:new a.i("",{validators:[a.B.required],asyncValidators:[u.a.unique(this.roleService.exists,this.roleService)]}),description:new a.i(""),scopes_permissions:new a.i({})})}ngOnInit(){this.columns=[{prop:"scope",name:this.i18n("All"),flexGrow:2,cellTemplate:this.cellScopeCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl}],this.router.url.startsWith("/user-management/roles/edit")?(this.mode=this.roleFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.mode===this.roleFormMode.editing?this.initEdit():this.initCreate()}initCreate(){this.scopeService.list().subscribe(t=>{this.scopes=t,this.roleForm.get("scopes_permissions").setValue({})})}initEdit(){this.roleForm.get("name").disable(),this.route.params.subscribe(t=>{const e=[];e.push(this.scopeService.list()),e.push(this.roleService.get(t.name)),Object(i.a)(e).subscribe(t=>{this.scopes=t[0],["name","description","scopes_permissions"].forEach(e=>this.roleForm.get(e).setValue(t[1][e]))})})}listenToChanges(){this.roleForm.get("scopes_permissions").valueChanges.subscribe(t=>{const e=[];r.each(this.scopes,n=>{const a={read:!1,create:!1,update:!1,delete:!1};a.scope=n,n in t&&r.each(t[n],t=>{a[t]=!0}),e.push(a)}),this.scopes_permissions=e})}isRowChecked(t){const e=r.find(this.scopes_permissions,e=>e.scope===t);return!r.isUndefined(e)&&e.read&&e.create&&e.update&&e.delete}isHeaderChecked(t){let e=[t];return"scope"===t&&(e=["read","create","update","delete"]),e.every(t=>this.scopes_permissions.every(e=>e[t]))}onClickCellCheckbox(t,e,n=null){const a=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let i=[e];"scope"===e&&(i=["read","create","update","delete"]),t in a||(a[t]=[]),n&&n.target.checked||!r.isEqual(i.sort(),r.intersection(a[t],i).sort())?a[t]=r.union(a[t],i):(a[t]=r.difference(a[t],i),r.isEmpty(a[t])&&r.unset(a,t)),this.roleForm.get("scopes_permissions").setValue(a)}onClickHeaderCheckbox(t,e){const n=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let a=[t];"scope"===t&&(a=["read","create","update","delete"]),r.each(a,t=>{r.each(this.scopes,a=>{e.target.checked?n[a]=r.union(n[a],[t]):(n[a]=r.difference(n[a],[t]),r.isEmpty(n[a])&&r.unset(n,a))})}),this.roleForm.get("scopes_permissions").setValue(n)}getRequest(){const t=new l;return["name","description","scopes_permissions"].forEach(e=>t[e]=this.roleForm.get(e).value),t}createAction(){const t=this.getRequest();this.roleService.create(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Created role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}editAction(){const t=this.getRequest();this.roleService.update(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Updated role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}submit(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()}}},eUgh:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}},ebwN:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"Map");t.exports=a},efK2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e,n){return a.isString(t)?(n=a.defaultTo(n,""),a.truncate(t,{length:e,omission:n})):t}}},"ej+x":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("lOp/"),r=n("8Y7J"),i=n("IheW");let s=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=3e4,this.featureToggleMap$=this.timerService.get(()=>this.http.get(this.API_URL),this.REFRESH_INTERVAL)}get(){return this.featureToggleMap$}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.c),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},ekgI:function(t,e,n){var a=n("YESw"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return a?void 0!==e[t]:r.call(e,t)}},ewvW:function(t,e,n){var a=n("HYAF");t.exports=function(t){return Object(a(t))}},f5p1:function(t,e,n){var a=n("2oRo"),r=n("iSVu"),i=a.WeakMap;t.exports="function"==typeof i&&/native code/.test(r(i))},f95s:function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n("2vnA"),r=n("X+05"),i=n("afOK"),s=n.n(i),o=n("RBan"),u=n.n(o),d=n("MJIl"),l=n.n(d),c=n("Jlc5"),f=n.n(c),h=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},g=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},p=function(){function t(t,e,n,a){var r=this;this.data=t,this.parent=e,this.treeModel=n,this.position=0,this.allowDrop=function(t,e){return r.options.allowDrop(t,{parent:r,index:0},e)},this.allowDragoverStyling=function(){return r.options.allowDragoverStyling},null==this.id&&(this.id=Math.floor(1e13*Math.random())),this.index=a,this.getField("children")&&this._initChildren(),this.autoLoadChildren()}return Object.defineProperty(t.prototype,"isHidden",{get:function(){return this.treeModel.isHidden(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpanded",{get:function(){return this.treeModel.isExpanded(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isActive",{get:function(){return this.treeModel.isActive(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFocused",{get:function(){return this.treeModel.isNodeFocused(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):l()(this.children,(function(t){return t.isSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAllSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):f()(this.children,(function(t){return t.isAllSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isPartiallySelected",{get:function(){return this.isSelected&&!this.isAllSelected},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"level",{get:function(){return this.parent?this.parent.level+1:0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path.concat([this.id]):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"elementRef",{get:function(){throw"Element Ref is no longer supported since introducing virtual scroll\n\n      You may use a template to obtain a reference to the element"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalNode",{get:function(){return this._originalNode},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasChildren",{get:function(){return!!(this.getField("hasChildren")||this.children&&this.children.length>0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCollapsed",{get:function(){return!this.isExpanded},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLeaf",{get:function(){return!this.hasChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return this.parent.data.virtual},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"realParent",{get:function(){return this.isRoot?null:this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{get:function(){return this.treeModel.options},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},Object.defineProperty(t.prototype,"displayField",{get:function(){return this.getField("display")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"id",{get:function(){return this.getField("id")},set:function(t){this.setField("id",t)},enumerable:!0,configurable:!0}),t.prototype.getField=function(t){return this.data[this.options[t+"Field"]]},t.prototype.setField=function(t,e){this.data[this.options[t+"Field"]]=e},t.prototype._findAdjacentSibling=function(t,e){void 0===e&&(e=!1);var n=this._getParentsChildren(e),a=n.indexOf(this);return n.length>a+t?n[a+t]:null},t.prototype.findNextSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(1,t)},t.prototype.findPreviousSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(-1,t)},t.prototype.getVisibleChildren=function(){return this.visibleChildren},Object.defineProperty(t.prototype,"visibleChildren",{get:function(){return(this.children||[]).filter((function(t){return!t.isHidden}))},enumerable:!0,configurable:!0}),t.prototype.getFirstChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return s()(e||[])},t.prototype.getLastChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return u()(e||[])},t.prototype.findNextNode=function(t,e){return void 0===t&&(t=!0),void 0===e&&(e=!1),t&&this.isExpanded&&this.getFirstChild(e)||this.findNextSibling(e)||this.parent&&this.parent.findNextNode(!1,e)},t.prototype.findPreviousNode=function(t){void 0===t&&(t=!1);var e=this.findPreviousSibling(t);return e?e._getLastOpenDescendant(t):this.realParent},t.prototype._getLastOpenDescendant=function(t){void 0===t&&(t=!1);var e=this.getLastChild(t);return this.isCollapsed||!e?this:e._getLastOpenDescendant(t)},t.prototype._getParentsChildren=function(t){return void 0===t&&(t=!1),this.parent&&(t?this.parent.getVisibleChildren():this.parent.children)||[]},t.prototype.getIndexInParent=function(t){return void 0===t&&(t=!1),this._getParentsChildren(t).indexOf(this)},t.prototype.isDescendantOf=function(t){return this===t||this.parent&&this.parent.isDescendantOf(t)},t.prototype.getNodePadding=function(){return this.options.levelPadding*(this.level-1)+"px"},t.prototype.getClass=function(){return[this.options.nodeClass(this),"tree-node-level-"+this.level].join(" ")},t.prototype.onDrop=function(t){this.mouseAction("drop",t.event,{from:t.element,to:{parent:this,index:0,dropOnNode:!0}})},t.prototype.allowDrag=function(){return this.options.allowDrag(this)},t.prototype.loadNodeChildren=function(){var t=this;return this.options.getChildren?Promise.resolve(this.options.getChildren(this)).then((function(e){e&&(t.setField("children",e),t._initChildren(),t.options.useTriState&&t.treeModel.isSelected(t)&&t.setIsSelected(!0),t.children.forEach((function(t){t.getField("isExpanded")&&t.hasChildren&&t.expand()})))})).then((function(){t.fireEvent({eventName:r.a.loadNodeChildren,node:t})})):Promise.resolve()},t.prototype.expand=function(){return this.isExpanded||this.toggleExpanded(),this},t.prototype.collapse=function(){return this.isExpanded&&this.toggleExpanded(),this},t.prototype.doForAll=function(t){var e=this;Promise.resolve(t(this)).then((function(){e.children&&e.children.forEach((function(e){return e.doForAll(t)}))}))},t.prototype.expandAll=function(){this.doForAll((function(t){return t.expand()}))},t.prototype.collapseAll=function(){this.doForAll((function(t){return t.collapse()}))},t.prototype.ensureVisible=function(){return this.realParent&&(this.realParent.expand(),this.realParent.ensureVisible()),this},t.prototype.toggleExpanded=function(){return this.setIsExpanded(!this.isExpanded),this},t.prototype.setIsExpanded=function(t){return this.hasChildren&&this.treeModel.setExpandedNode(this,t),this},t.prototype.autoLoadChildren=function(){var t=this;this.handler=Object(a.e)((function(){return t.isExpanded}),(function(e){!t.children&&t.hasChildren&&e&&t.loadNodeChildren()}),{fireImmediately:!0})},t.prototype.dispose=function(){this.children&&this.children.forEach((function(t){return t.dispose()})),this.handler&&this.handler(),this.parent=null,this.children=null},t.prototype.setIsActive=function(t,e){return void 0===e&&(e=!1),this.treeModel.setActiveNode(this,t,e),t&&this.focus(this.options.scrollOnActivate),this},t.prototype.isSelectable=function(){return this.isLeaf||!this.children||!this.options.useTriState},t.prototype.setIsSelected=function(t){return this.isSelectable()?this.treeModel.setSelectedNode(this,t):this.visibleChildren.forEach((function(e){return e.setIsSelected(t)})),this},t.prototype.toggleSelected=function(){return this.setIsSelected(!this.isSelected),this},t.prototype.toggleActivated=function(t){return void 0===t&&(t=!1),this.setIsActive(!this.isActive,t),this},t.prototype.setActiveAndVisible=function(t){return void 0===t&&(t=!1),this.setIsActive(!0,t).ensureVisible(),setTimeout(this.scrollIntoView.bind(this)),this},t.prototype.scrollIntoView=function(t){void 0===t&&(t=!1),this.treeModel.virtualScroll.scrollIntoView(this,t)},t.prototype.focus=function(t){void 0===t&&(t=!0);var e=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(this),t&&this.scrollIntoView(),e&&this.fireEvent({eventName:r.a.blur,node:e}),this.fireEvent({eventName:r.a.focus,node:this}),this},t.prototype.blur=function(){var t=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(null),t&&this.fireEvent({eventName:r.a.blur,node:this}),this},t.prototype.setIsHidden=function(t){this.treeModel.setIsHidden(this,t)},t.prototype.hide=function(){this.setIsHidden(!0)},t.prototype.show=function(){this.setIsHidden(!1)},t.prototype.mouseAction=function(t,e,n){void 0===n&&(n=null),this.treeModel.setFocus(!0);var a=this.options.actionMapping.mouse[t];a&&a(this.treeModel,this,e,n)},t.prototype.getSelfHeight=function(){return this.options.nodeHeight(this)},t.prototype._initChildren=function(){var e=this;this.children=this.getField("children").map((function(n,a){return new t(n,e,e.treeModel,a)}))},h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isHidden",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isExpanded",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isActive",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isFocused",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isAllSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isPartiallySelected",null),h([a.d,g("design:type",Array)],t.prototype,"children",void 0),h([a.d,g("design:type",Number)],t.prototype,"index",void 0),h([a.d,g("design:type",Object)],t.prototype,"position",void 0),h([a.d,g("design:type",Number)],t.prototype,"height",void 0),h([a.c,g("design:type",Number),g("design:paramtypes",[])],t.prototype,"level",null),h([a.c,g("design:type",Array),g("design:paramtypes",[])],t.prototype,"path",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"visibleChildren",null),h([a.a,g("design:type",Function),g("design:paramtypes",[Object]),g("design:returntype",void 0)],t.prototype,"setIsSelected",null),h([a.a,g("design:type",Function),g("design:paramtypes",[]),g("design:returntype",void 0)],t.prototype,"_initChildren",null),t}()},fGT3:function(t,e,n){var a=n("4kuk"),r=n("Xi7e"),i=n("ebwN");t.exports=function(){this.size=0,this.__data__={hash:new a,map:new(i||r),string:new a}}},fHMY:function(t,e,n){var a,r=n("glrk"),i=n("N+g0"),s=n("eDl+"),o=n("0BK2"),u=n("G+Rx"),d=n("zBJ4"),l=n("93I0")("IE_PROTO"),c=function(){},f=function(t){return"<script>"+t+"<\/script>"},h=function(){try{a=document.domain&&new ActiveXObject("htmlfile")}catch(r){}var t,e;h=a?function(t){t.write(f("")),t.close();var e=t.parentWindow.Object;return t=null,e}(a):((e=d("iframe")).style.display="none",u.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(f("document.F=Object")),t.close(),t.F);for(var n=s.length;n--;)delete h.prototype[s[n]];return h()};o[l]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(c.prototype=r(t),n=new c,c.prototype=null,n[l]=t):n=h(),void 0===e?n:i(n,e)}},"fR/l":function(t,e,n){var a=n("CH3K"),r=n("Z0cm");t.exports=function(t,e,n){var i=e(t);return r(t)?i:a(i,n(t))}},fdAy:function(t,e,n){"use strict";var a=n("I+eb"),r=n("ntOU"),i=n("4WOD"),s=n("0rvr"),o=n("1E5z"),u=n("kRJp"),d=n("busE"),l=n("tiKp"),c=n("xDBR"),f=n("P4y1"),h=n("rpNk"),g=h.IteratorPrototype,p=h.BUGGY_SAFARI_ITERATORS,b=l("iterator"),m=function(){return this};t.exports=function(t,e,n,l,h,y,v){r(n,e,l);var x,_,T,O=function(t){if(t===h&&C)return C;if(!p&&t in I)return I[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},w=e+" Iterator",S=!1,I=t.prototype,N=I[b]||I["@@iterator"]||h&&I[h],C=!p&&N||O(h),R="Array"==e&&I.entries||N;if(R&&(x=i(R.call(new t)),g!==Object.prototype&&x.next&&(c||i(x)===g||(s?s(x,g):"function"!=typeof x[b]&&u(x,b,m)),o(x,w,!0,!0),c&&(f[w]=m))),"values"==h&&N&&"values"!==N.name&&(S=!0,C=function(){return N.call(this)}),c&&!v||I[b]===C||u(I,b,C),f[e]=C,h)if(_={values:O("values"),keys:y?C:O("keys"),entries:O("entries")},v)for(T in _)!p&&!S&&T in I||d(I,T,_[T]);else a({target:e,proto:!0,forced:p||S},_);return _}},fmRc:function(t,e,n){var a=n("Xi7e"),r=n("77Zs"),i=n("L8xA"),s=n("gCq4"),o=n("VaNO"),u=n("0Cz8");function d(t){var e=this.__data__=new a(t);this.size=e.size}d.prototype.clear=r,d.prototype.delete=i,d.prototype.get=s,d.prototype.has=o,d.prototype.set=u,t.exports=d},ftKO:function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},fxL3:function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n("8Y7J"),r=n("MP8s"),i=n("gk6K"),s=n("mfoh"),o=n("HIU9"),u=n("ijCd"),d=n.n(u),l=n("JZM8"),c=n.n(l),f=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},h=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},g=function(){function t(t,e){var n=this;this.treeModel=t,this.treeDraggedElement=e,t.eventNames.forEach((function(t){return n[t]=new a.EventEmitter})),t.subscribeToState((function(t){return n.stateChange.emit(t)}))}return Object.defineProperty(t.prototype,"nodes",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"focused",{set:function(t){this.treeModel.setFocus(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"state",{set:function(t){this.treeModel.setState(t)},enumerable:!0,configurable:!0}),t.prototype.onKeydown=function(t){if(this.treeModel.isFocused&&!d()(["input","textarea"],document.activeElement.tagName.toLowerCase())){var e=this.treeModel.getFocusedNode();this.treeModel.performKeyAction(e,t)}},t.prototype.onMousedown=function(t){(function t(e,n){return!e||e.localName!==n&&t(e.parentElement,n)})(t.target,"tree-root")&&this.treeModel.setFocus(!1)},t.prototype.ngOnChanges=function(t){(t.options||t.nodes)&&this.treeModel.setData({options:t.options&&t.options.currentValue,nodes:t.nodes&&t.nodes.currentValue,events:c()(this,this.treeModel.eventNames)})},t.prototype.sizeChanged=function(){this.viewportComponent.setViewport()},f([Object(a.ContentChild)("loadingTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"loadingTemplate",void 0),f([Object(a.ContentChild)("treeNodeTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeTemplate",void 0),f([Object(a.ContentChild)("treeNodeWrapperTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeWrapperTemplate",void 0),f([Object(a.ContentChild)("treeNodeFullTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeFullTemplate",void 0),f([Object(a.ViewChild)("viewport",{static:!1}),h("design:type",o.a)],t.prototype,"viewportComponent",void 0),f([Object(a.Input)(),h("design:type",Array),h("design:paramtypes",[Array])],t.prototype,"nodes",null),f([Object(a.Input)(),h("design:type",s.b),h("design:paramtypes",[s.b])],t.prototype,"options",null),f([Object(a.Input)(),h("design:type",Boolean),h("design:paramtypes",[Boolean])],t.prototype,"focused",null),f([Object(a.Input)(),h("design:type",Object),h("design:paramtypes",[Object])],t.prototype,"state",null),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"toggleExpanded",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"activate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeActivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeDeactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"select",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deselect",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"focus",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"blur",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"updateData",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"initialized",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"moveNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"copyNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"loadNodeChildren",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"changeFilter",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"event",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"stateChange",void 0),f([Object(a.HostListener)("body: keydown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onKeydown",null),f([Object(a.HostListener)("body: mousedown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onMousedown",null),f([Object(a.Component)({selector:"Tree, tree-root",providers:[r.a],styles:[],template:'\n      <tree-viewport #viewport>\n          <div\n                  class="angular-tree-component"\n                  [class.node-dragging]="treeDraggedElement.isDragging()"\n                  [class.angular-tree-component-rtl]="treeModel.options.rtl">\n              <tree-node-collection\n                      *ngIf="treeModel.roots"\n                      [nodes]="treeModel.roots"\n                      [treeModel]="treeModel"\n                      [templates]="{\n            loadingTemplate: loadingTemplate,\n            treeNodeTemplate: treeNodeTemplate,\n            treeNodeWrapperTemplate: treeNodeWrapperTemplate,\n            treeNodeFullTemplate: treeNodeFullTemplate\n          }">\n              </tree-node-collection>\n              <tree-node-drop-slot\n                      class="empty-tree-drop-slot"\n                      *ngIf="treeModel.isEmptyTree()"\n                      [dropIndex]="0"\n                      [node]="treeModel.virtualRoot">\n              </tree-node-drop-slot>\n          </div>\n      </tree-viewport>\n  '}),h("design:paramtypes",[r.a,i.a])],t)}()},fzPg:function(t,e,n){!function(t){"use strict";t.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("wd/R"))},"g6v/":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},gCq4:function(t,e){t.exports=function(t){return this.__data__.get(t)}},gFfm:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}},gRHU:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("2fFW"),r=n("NJ4a");const i={closed:!0,next(t){},error(t){if(a.a.useDeprecatedSynchronousErrorHandling)throw t;Object(r.a)(t)},complete(){}}},gVVK:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===t?e?"sekundo":"sekundi":2===t?e||a?"sekundi":"sekundah":t<5?e||a?"sekunde":"sekundah":"sekund");case"m":return e?"ena minuta":"eno minuto";case"mm":return r+(1===t?e?"minuta":"minuto":2===t?e||a?"minuti":"minutama":t<5?e||a?"minute":"minutami":e||a?"minut":"minutami");case"h":return e?"ena ura":"eno uro";case"hh":return r+(1===t?e?"ura":"uro":2===t?e||a?"uri":"urama":t<5?e||a?"ure":"urami":e||a?"ur":"urami");case"d":return e||a?"en dan":"enim dnem";case"dd":return r+(1===t?e||a?"dan":"dnem":2===t?e||a?"dni":"dnevoma":e||a?"dni":"dnevi");case"M":return e||a?"en mesec":"enim mesecem";case"MM":return r+(1===t?e||a?"mesec":"mesecem":2===t?e||a?"meseca":"mesecema":t<5?e||a?"mesece":"meseci":e||a?"mesecev":"meseci");case"y":return e||a?"eno leto":"enim letom";case"yy":return r+(1===t?e||a?"leto":"letom":2===t?e||a?"leti":"letoma":t<5?e||a?"leta":"leti":e||a?"let":"leti")}}t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},gekB:function(t,e,n){!function(t){"use strict";var e="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",e[7],e[8],e[9]];function a(t,a,r,i){var s="";switch(r){case"s":return i?"muutaman sekunnin":"muutama sekunti";case"ss":return i?"sekunnin":"sekuntia";case"m":return i?"minuutin":"minuutti";case"mm":s=i?"minuutin":"minuuttia";break;case"h":return i?"tunnin":"tunti";case"hh":s=i?"tunnin":"tuntia";break;case"d":return i?"päivän":"päivä";case"dd":s=i?"päivän":"päivää";break;case"M":return i?"kuukauden":"kuukausi";case"MM":s=i?"kuukauden":"kuukautta";break;case"y":return i?"vuoden":"vuosi";case"yy":s=i?"vuoden":"vuotta"}return function(t,a){return t<10?a?n[t]:e[t]:t}(t,i)+" "+s}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},gjCT:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};t.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("wd/R"))},gk6K:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J"),r=function(){function t(){this._draggedElement=null}return t.prototype.set=function(t){this._draggedElement=t},t.prototype.get=function(){return this._draggedElement},t.prototype.isDragging=function(){return!!this.get()},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Injectable)()],t)}()},glrk:function(t,e,n){var a=n("hh1v");t.exports=function(t){if(!a(t))throw TypeError(String(t)+" is not an object");return t}},gp3X:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse");n("sb0X"),n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o}));var i=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,2)],(function(t,e){var n=e.component,a=t(e,4,0,n.icons.spinner,n.icons.spin);t(e,3,0,a)}),null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["class","btn btn-secondary tc_submitButton"]],[[8,"type",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.submit(n)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,s)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"btn btn-secondary tc_submitButton",n.btnClass),t(e,5,0,n.loading)}),(function(t,e){var n=e.component;t(e,0,0,n.type,n.loading||n.disabled)}))}},gpbi:function(t,e,n){var a=n("ZWtO"),r=n("KxBF");t.exports=function(t,e){return e.length<2?t:a(t,r(e,0,-1))}},"hKI/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,o="object"==typeof global&&global&&global.Object===Object&&global,u="object"==typeof self&&self&&self.Object===Object&&self,d=o||u||Function("return this")(),l=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return d.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==l.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var o=r.test(t);return o||i.test(t)?s(t.slice(2),o?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a=!0,r=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return g(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),function(t,e,n){var a,r,i,s,o,u,d=0,l=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,d=e,s=t.apply(i,n)}function v(t){return d=t,o=setTimeout(_,e),l?y(t):s}function x(t){var n=t-u;return void 0===u||n>=e||n<0||b&&t-d>=i}function _(){var t=h();if(x(t))return T(t);o=setTimeout(_,function(t){var n=e-(t-u);return b?f(n,i-(t-d)):n}(t))}function T(t){return o=void 0,m&&a?y(t):(a=r=void 0,s)}function O(){var t=h(),n=x(t);if(a=arguments,r=this,u=t,n){if(void 0===o)return v(u);if(b)return o=setTimeout(_,e),y(u)}return void 0===o&&(o=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(l=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==o&&clearTimeout(o),d=0,a=u=r=o=void 0},O.flush=function(){return void 0===o?s:T(h())},O}(t,e,{leading:a,maxWait:e,trailing:r})}},hKrs:function(t,e,n){!function(t){"use strict";t.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},heNW:function(t,e){t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},hfeG:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("s7LF"),i=n("+gVj"),s=n("EmSq"),o=n("Fgil"),u=n("aXbf"),d=n("SVse"),l=n("mXUL"),c=n("EEJc"),f=n("ajRT"),h=n("gp3X"),g=n("sb0X"),p=n("KVJa"),b=n("Z21x"),m=n("sne2"),y=n("Rf2I"),v=n("LqlI"),x=n("2EZI"),_=n("GiVz");n.d(e,"a",(function(){return P}));var T=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.titleText)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.message)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,0,0,e.parent.context.$implicit.name),t(e,1,0,e.parent.context.$implicit.label)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,r.e,[a.Renderer2,a.ElementRef,[2,r.b]],null,null),a["ɵprd"](1024,null,r.p,(function(t){return[t]}),[r.e]),a["ɵdid"](3,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,r.q,null,[r.j]),a["ɵdid"](5,16384,null,0,r.r,[[4,r.q]],null,null),a["ɵdid"](6,16384,null,0,i.h,[[3,r.d],i.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.type,e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,6).validClass,a["ɵnov"](e,6).invalidClass])}))}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,6).onBlur(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,r.e,[a.Renderer2,a.ElementRef,[2,r.b]],null,null),a["ɵprd"](1024,null,r.p,(function(t){return[t]}),[r.e]),a["ɵdid"](3,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,r.q,null,[r.j]),a["ɵdid"](5,16384,null,0,r.r,[[4,r.q]],null,null),a["ɵdid"](6,81920,null,0,s.a,[a.ElementRef,r.q,o.a,u.a],null,null),a["ɵdid"](7,16384,null,0,i.h,[[3,r.d],i.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0),t(e,7,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,7).validClass,a["ɵnov"](e,7).invalidClass])}))}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,r.v,[a.ElementRef,a.Renderer2,[2,r.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,r.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),(function(t,e){t(e,3,0,e.parent.parent.context.$implicit.placeholder)}))}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,r.v,[a.ElementRef,a.Renderer2,[2,r.A]],{value:[0,"value"]},null),a["ɵdid"](2,147456,null,0,r.F,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,10,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,1).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,r.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,r.p,(function(t){return[t]}),[r.A]),a["ɵdid"](3,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,r.q,null,[r.j]),a["ɵdid"](5,16384,null,0,r.r,[[4,r.q]],null,null),a["ɵdid"](6,16384,null,0,i.h,[[3,r.d],i.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](8,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](10,278528,null,0,d.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.name),t(e,8,0,e.parent.context.$implicit.placeholder),t(e,10,0,e.parent.context.$implicit.options)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,6).validClass,a["ɵnov"](e,6).invalidClass)}))}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getError(e.parent.context.$implicit))}))}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,19,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,18,"div",[],[[8,"className",0],[2,"has-error",null],[2,"has-success",null]],null,null,l.b,l.a)),a["ɵdid"](2,1163264,null,2,i.c,[a.ElementRef,i.g],null,null),a["ɵqud"](603979776,1,{FormControlNames:1}),a["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),a["ɵand"](16777216,null,0,1,null,S)),a["ɵdid"](6,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](7,0,null,0,12,"div",[],null,null,null,null,null)),a["ɵprd"](512,null,d["ɵNgClassImpl"],d["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,d.NgClass,[d["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpod"](10,{"cd-col-form-input":0,"col-sm-12":1}),(t()(),a["ɵand"](16777216,null,null,2,null,I)),a["ɵdid"](12,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpad"](13,2),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](15,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,A)),a["ɵdid"](17,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,k)),a["ɵdid"](19,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,6,0,e.context.$implicit.label);var r=t(e,10,0,e.context.$implicit.label,!e.context.$implicit.label);t(e,9,0,r);var i=t(e,13,0,"text","number").includes(e.context.$implicit.type);t(e,12,0,i),t(e,15,0,"binary"===e.context.$implicit.type),t(e,17,0,"select"===e.context.$implicit.type),t(e,19,0,n.formGroup.showError(e.context.$implicit.name,a["ɵnov"](e.parent,7)))}),(function(t,e){t(e,1,0,a["ɵinlineInterpolate"](1,"form-group row cd-",e.context.$implicit.name,"-form-group"),a["ɵnov"](e,2).hasErrors,a["ɵnov"](e,2).hasSuccess)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,null,null,c.c,c.b)),a["ɵdid"](1,49152,null,0,f.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,O)),a["ɵdid"](3,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,r.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,r.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,r.d,null,[r.l]),a["ɵdid"](9,16384,null,0,r.s,[[4,r.d]],null,null),a["ɵdid"](10,16384,null,0,i.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](13,16384,null,0,d.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,E)),a["ɵdid"](15,278528,null,0,d.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmitForm(r.formGroup.value)&&a),a}),h.b,h.a)),a["ɵdid"](19,114688,null,0,g.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[],null,null,null,p.b,p.a)),a["ɵdid"](22,49152,null,0,b.a,[d.Location,m.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,3,0,n.titleText),t(e,7,0,n.formGroup),t(e,10,0,n.formGroup),t(e,13,0,n.message),t(e,15,0,n.fields),t(e,19,0,n.formGroup),t(e,22,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.submitButtonText)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-form-modal",[],null,null,null,L,T)),a["ɵdid"](1,114688,null,0,y.a,[v.a,x.a,u.a,o.a,_.a],null,null)],(function(t,e){t(e,1,0)}),null)}var P=a["ɵccf"]("cd-form-modal",y.a,D,{},{},[])},hgQt:function(t,e,n){var a=n("Juji"),r=n("4sDh");t.exports=function(t,e){return null!=t&&r(t,e,a)}},hh1v:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},honF:function(t,e,n){!function(t){"use strict";var e={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};t.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(t){return t.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},hpHm:function(t,e,n){"use strict";n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return p})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return h})),n.d(e,"e",(function(){return o})),n.d(e,"f",(function(){return s})),n.d(e,"g",(function(){return d})),n.d(e,"h",(function(){return u})),n.d(e,"i",(function(){return y})),n.d(e,"j",(function(){return l}));var a=n("8Y7J");class r{constructor(t,e){this.open=t,this.close=e||t}isManual(){return"manual"===this.open||"manual"===this.close}}const i={hover:["mouseover","mouseout"],focus:["focusin","focusout"]};function s(t,e=i){const n=(t||"").trim();if(0===n.length)return[];const a=n.split(/\s+/).map(t=>t.split(":")).map(t=>{const n=e[t[0]]||t;return new r(n[0],n[1])}),s=a.filter(t=>t.isManual());if(s.length>1)throw new Error("Triggers parse error: only one manual trigger is allowed");if(1===s.length&&a.length>1)throw new Error("Triggers parse error: manual trigger can't be mixed with other triggers");return a}function o(t,e){const n=s(e.triggers),a=e.target;if(1===n.length&&n[0].isManual())return Function.prototype;const r=[],i=[],o=()=>{i.forEach(t=>r.push(t())),i.length=0};return n.forEach(n=>{const s=n.open===n.close,u=s?e.toggle:e.show;s||i.push(()=>t.listen(a,n.close,e.hide)),r.push(t.listen(a,n.open,()=>u(o)))}),()=>{r.forEach(t=>t())}}function u(t,e){return e.outsideClick?t.listen("document","click",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}function d(t,e){return e.outsideEsc?t.listen("document","keyup.esc",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}const l="undefined"!=typeof window&&window||{},c=l.document;let f;function h(){return void 0===l||(void 0===l.__theme?f?"bs3"===f:(f=function(){if("undefined"==typeof document)return null;const t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");const e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}(),"bs3"===f):"bs4"!==l.__theme)}function g(t){return function(t,e){const n=` __${e}Value`;Object.defineProperty(t,e,{get(){return this[n]},set(t){const a=this[n];this[n]=t,a!==t&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}}class p{static reflow(t){}static getStyles(t){let e=t.ownerDocument.defaultView;return e&&e.opener||(e=l),e.getComputedStyle(t)}}const b={},m="undefined"==typeof console||!("warn"in console);function y(t){!Object(a.isDevMode)()||m||t in b||(b[t]=!0,console.warn(t))}},hrfs:function(t,e,n){"use strict";n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return m})),n.d(e,"c",(function(){return g}));var a=n("8Y7J"),r=n("MO+k"),i=n("2Vo4"),s=n("LvDl");const o=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function u(t,e){return"rgba("+t.concat(e).join(",")+")"}function d(t,e){return Math.floor(Math.random()*(e-t+1))+t}function l(t){return{backgroundColor:t.map(t=>u(t,.6)),borderColor:t.map(()=>"#fff"),pointBackgroundColor:t.map(t=>u(t,1)),pointBorderColor:t.map(()=>"#fff"),pointHoverBackgroundColor:t.map(t=>u(t,1)),pointHoverBorderColor:t.map(t=>u(t,1))}}function c(){return[d(0,255),d(0,255),d(0,255)]}function f(t){return o[t]||c()}function h(t){const e=new Array(t);for(let n=0;n<t;n++)e[n]=o[n]||c();return e}let g=(()=>{class t{constructor(){this.pColorschemesOptions={},this.colorschemesOptions=new i.a({})}setColorschemesOptions(t){this.pColorschemesOptions=t,this.colorschemesOptions.next(t)}getColorschemesOptions(){return this.pColorschemesOptions}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t},token:t,providedIn:"root"}),t})();const p=function(){var t={Default:0,Update:1,Refresh:2};return t[t.Default]="Default",t[t.Update]="Update",t[t.Refresh]="Refresh",t}();class b{constructor(t,e){this.element=t,this.themeService=e,this.options={},this.chartClick=new a.EventEmitter,this.chartHover=new a.EventEmitter,this.old={dataExists:!1,dataLength:0,datasetsExists:!1,datasetsLength:0,datasetsDataObjects:[],datasetsDataLengths:[],colorsExists:!1,colors:[],labelsExist:!1,labels:[],legendExists:!1,legend:{}},this.subs=[]}static registerPlugin(t){r.Chart.plugins.register(t)}static unregisterPlugin(t){r.Chart.plugins.unregister(t)}ngOnInit(){this.ctx=this.element.nativeElement.getContext("2d"),this.refresh(),this.subs.push(this.themeService.colorschemesOptions.subscribe(t=>this.themeChanged(t)))}themeChanged(t){this.refresh()}ngDoCheck(){if(!this.chart)return;let t=p.Default;const e=e=>{t=e>t?e:t};switch(!!this.data!==this.old.dataExists&&(this.propagateDataToDatasets(this.data),this.old.dataExists=!!this.data,e(p.Update)),this.data&&this.data.length!==this.old.dataLength&&(this.old.dataLength=this.data&&this.data.length||0,e(p.Update)),!!this.datasets!==this.old.datasetsExists&&(this.old.datasetsExists=!!this.datasets,e(p.Update)),this.datasets&&this.datasets.length!==this.old.datasetsLength&&(this.old.datasetsLength=this.datasets&&this.datasets.length||0,e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data!==this.old.datasetsDataObjects[e]).length&&(this.old.datasetsDataObjects=this.datasets.map(t=>t.data),e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data.length!==this.old.datasetsDataLengths[e]).length&&(this.old.datasetsDataLengths=this.datasets.map(t=>t.data.length),e(p.Update)),!!this.colors!==this.old.colorsExists&&(this.old.colorsExists=!!this.colors,this.updateColors(),e(p.Update)),this.colors&&this.colors.filter((t,e)=>!this.colorsEqual(t,this.old.colors[e])).length&&(this.old.colors=this.colors.map(t=>this.copyColor(t)),this.updateColors(),e(p.Update)),!!this.labels!==this.old.labelsExist&&(this.old.labelsExist=!!this.labels,e(p.Update)),this.labels&&this.labels.filter((t,e)=>!this.labelsEqual(t,this.old.labels[e])).length&&(this.old.labels=this.labels.map(t=>this.copyLabel(t)),e(p.Update)),!!this.options.legend!==this.old.legendExists&&(this.old.legendExists=!!this.options.legend,e(p.Refresh)),this.options.legend&&this.options.legend.position!==this.old.legend.position&&(this.old.legend.position=this.options.legend.position,e(p.Refresh)),t){case p.Default:break;case p.Update:this.update();break;case p.Refresh:this.refresh()}}copyLabel(t){return Array.isArray(t)?[...t]:t}labelsEqual(t,e){return Array.isArray(t)===Array.isArray(e)&&(Array.isArray(t)||t===e)&&(!Array.isArray(t)||t.length===e.length)&&(!Array.isArray(t)||0===t.filter((t,n)=>t!==e[n]).length)}copyColor(t){return{backgroundColor:t.backgroundColor,borderWidth:t.borderWidth,borderColor:t.borderColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,pointBorderColor:t.pointBorderColor,pointBackgroundColor:t.pointBackgroundColor,pointBorderWidth:t.pointBorderWidth,pointRadius:t.pointRadius,pointHoverRadius:t.pointHoverRadius,pointHitRadius:t.pointHitRadius,pointHoverBackgroundColor:t.pointHoverBackgroundColor,pointHoverBorderColor:t.pointHoverBorderColor,pointHoverBorderWidth:t.pointHoverBorderWidth,pointStyle:t.pointStyle,hoverBackgroundColor:t.hoverBackgroundColor,hoverBorderColor:t.hoverBorderColor,hoverBorderWidth:t.hoverBorderWidth}}colorsEqual(t,e){return!t==!e&&(!t||t.backgroundColor===e.backgroundColor&&t.borderWidth===e.borderWidth&&t.borderColor===e.borderColor&&t.borderCapStyle===e.borderCapStyle&&t.borderDash===e.borderDash&&t.borderDashOffset===e.borderDashOffset&&t.borderJoinStyle===e.borderJoinStyle&&t.pointBorderColor===e.pointBorderColor&&t.pointBackgroundColor===e.pointBackgroundColor&&t.pointBorderWidth===e.pointBorderWidth&&t.pointRadius===e.pointRadius&&t.pointHoverRadius===e.pointHoverRadius&&t.pointHitRadius===e.pointHitRadius&&t.pointHoverBackgroundColor===e.pointHoverBackgroundColor&&t.pointHoverBorderColor===e.pointHoverBorderColor&&t.pointHoverBorderWidth===e.pointHoverBorderWidth&&t.pointStyle===e.pointStyle&&t.hoverBackgroundColor===e.hoverBackgroundColor&&t.hoverBorderColor===e.hoverBorderColor&&t.hoverBorderWidth===e.hoverBorderWidth)}updateColors(){this.datasets.forEach((t,e)=>{this.colors&&this.colors[e]?Object.assign(t,this.colors[e]):Object.assign(t,function(t,e,n){if("pie"===t||"doughnut"===t)return l(h(n));if("polarArea"===t)return{backgroundColor:(a=h(n)).map(t=>u(t,.6)),borderColor:a.map(t=>u(t,1)),hoverBackgroundColor:a.map(t=>u(t,.8)),hoverBorderColor:a.map(t=>u(t,1))};var a;if("line"===t||"radar"===t)return function(t){return{backgroundColor:u(t,.4),borderColor:u(t,1),pointBackgroundColor:u(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:u(t,.8)}}(f(e));if("bar"===t||"horizontalBar"===t)return function(t){return{backgroundColor:u(t,.6),borderColor:u(t,1),hoverBackgroundColor:u(t,.8),hoverBorderColor:u(t,1)}}(f(e));if("bubble"===t)return l(h(n));if("scatter"===t)return l(h(n));throw new Error(`getColors - Unsupported chart type ${t}`)}(this.chartType,e,t.data.length),Object.assign({},t))})}ngOnChanges(t){let e=p.Default;const n=t=>{e=t>e?t:e};switch(t.hasOwnProperty("data")&&t.data.currentValue&&(this.propagateDataToDatasets(t.data.currentValue),n(p.Update)),t.hasOwnProperty("datasets")&&t.datasets.currentValue&&(this.propagateDatasetsToData(t.datasets.currentValue),n(p.Update)),t.hasOwnProperty("labels")&&(this.chart&&(this.chart.data.labels=t.labels.currentValue),n(p.Update)),t.hasOwnProperty("legend")&&(this.chart&&(this.chart.config.options.legend.display=t.legend.currentValue,this.chart.generateLegend()),n(p.Update)),t.hasOwnProperty("options")&&n(p.Refresh),e){case p.Update:this.update();break;case p.Refresh:case p.Default:this.refresh()}}ngOnDestroy(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.subs.forEach(t=>t.unsubscribe())}update(t,e){if(this.chart)return this.chart.update(t,e)}hideDataset(t,e){this.chart.getDatasetMeta(t).hidden=e,this.chart.update()}isDatasetHidden(t){return this.chart.getDatasetMeta(t).hidden}toBase64Image(){return this.chart.toBase64Image()}getChartConfiguration(){const t=this.getDatasets(),e=Object.assign({},this.options);!1===this.legend&&(e.legend={display:!1}),e.hover=e.hover||{},e.hover.onHover||(e.hover.onHover=(t,e)=>{e&&!e.length||this.chartHover.emit({event:t,active:e})}),e.onClick||(e.onClick=(t,e)=>{this.chartClick.emit({event:t,active:e})});const n=this.smartMerge(e,this.themeService.getColorschemesOptions());return{type:this.chartType,data:{labels:this.labels||[],datasets:t},plugins:this.plugins,options:n}}getChartBuilder(t){const e=this.getChartConfiguration();return new r.Chart(t,e)}smartMerge(t,e,n=0){if(0===n&&(t=Object(s.cloneDeep)(t)),Object.keys(e).forEach(a=>{if(Array.isArray(e[a])){const r=t[a];r&&r.forEach(t=>{this.smartMerge(t,e[a][0],n+1)})}else"object"==typeof e[a]?(a in t||(t[a]={}),this.smartMerge(t[a],e[a],n+1)):t[a]=e[a]}),0===n)return t}isMultiLineLabel(t){return Array.isArray(t)}joinLabel(t){return t?this.isMultiLineLabel(t)?t.join(" "):t:null}propagateDatasetsToData(t){this.data=this.datasets.map(t=>t.data),this.chart&&(this.chart.data.datasets=t),this.updateColors()}propagateDataToDatasets(t){this.isMultiDataSet(t)?this.datasets&&t.length===this.datasets.length?this.datasets.forEach((e,n)=>{e.data=t[n]}):(this.datasets=t.map((t,e)=>({data:t,label:this.joinLabel(this.labels[e])||`Label ${e}`})),this.chart&&(this.chart.data.datasets=this.datasets)):this.datasets?(this.datasets[0].data=t,this.datasets.splice(1)):(this.datasets=[{data:t}],this.chart&&(this.chart.data.datasets=this.datasets)),this.updateColors()}isMultiDataSet(t){return Array.isArray(t[0])}getDatasets(){if(!this.datasets&&!this.data)throw new Error(`ng-charts configuration error, data or datasets field are required to render chart ${this.chartType}`);return this.datasets?(this.propagateDatasetsToData(this.datasets),this.datasets):this.data?(this.propagateDataToDatasets(this.data),this.datasets):void 0}refresh(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.ctx&&(this.chart=this.getChartBuilder(this.ctx))}}class m{}},hypo:function(t,e,n){var a=n("O0oS");t.exports=function(t,e,n){"__proto__"==e&&a?a(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},iEDd:function(t,e,n){!function(t){"use strict";t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},iExv:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t,e=this.i18n("Yes"),n=this.i18n("No")){return Boolean(t)?e:n}}},iInd:function(t,e,n){"use strict";var a=n("SVse"),r=n("8Y7J"),i=n("LRne"),s=n("Cfvw"),o=n("2Vo4"),u=n("HDdC"),d=n("sVev"),l=n("z+Ro"),c=n("DH7j"),f=n("l7GE"),h=n("ZUHj"),g=n("yCtX");const p={};class b{constructor(t){this.resultSelector=t}call(t,e){return e.subscribe(new m(t,this.resultSelector))}}class m extends f.a{constructor(t,e){super(t),this.resultSelector=e,this.active=0,this.values=[],this.observables=[]}_next(t){this.values.push(p),this.observables.push(t)}_complete(){const t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(let n=0;n<e;n++){const e=t[n];this.add(Object(h.a)(this,e,e,n))}}}notifyComplete(t){0==(this.active-=1)&&this.destination.complete()}notifyNext(t,e,n,a,r){const i=this.values,s=this.toRespond?i[n]===p?--this.toRespond:this.toRespond:0;i[n]=e,0===s&&(this.resultSelector?this._tryResultSelector(i):this.destination.next(i.slice()))}_tryResultSelector(t){let e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}var y=n("EY2u");function v(t){return new u.a(e=>{let n;try{n=t()}catch(a){return void e.error(a)}return(n?Object(s.a)(n):Object(y.b)()).subscribe(e)})}var x=n("XNiG"),_=n("lJxs"),T=n("0EUg"),O=n("NJ9Y"),w=n("JIr8"),S=n("SxV6"),I=n("5+tZ"),N=n("7o/Q");class C{constructor(t,e,n){this.predicate=t,this.thisArg=e,this.source=n}call(t,e){return e.subscribe(new R(t,this.predicate,this.thisArg,this.source))}}class R extends N.a{constructor(t,e,n,a){super(t),this.predicate=e,this.thisArg=n,this.source=a,this.index=0,this.thisArg=n||this}notifyComplete(t){this.destination.next(t),this.destination.complete()}_next(t){let e=!1;try{e=this.predicate.call(this.thisArg,t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e||this.notifyComplete(!1)}_complete(){this.notifyComplete(!0)}}var A=n("eIep"),k=n("IzEk"),E=n("GyhO"),L=n("Kqap"),D=n("pLZG"),P=n("bOdf"),M=n("128B"),q=n("vkgz"),j=n("quSY");class F{constructor(t){this.callback=t}call(t,e){return e.subscribe(new G(t,this.callback))}}class G extends N.a{constructor(t,e){super(t),this.add(new j.a(e))}}var V=n("bHdf"),z=n("cUpR");n.d(e,"F",(function(){return st})),n.d(e,"v",(function(){return _n})),n.d(e,"C",(function(){return kn})),n.d(e,"x",(function(){return Sn})),n.d(e,"D",(function(){return En})),n.d(e,"E",(function(){return Ln})),n.d(e,"z",(function(){return Nn})),n.d(e,"y",(function(){return In})),n.d(e,"B",(function(){return An})),n.d(e,"w",(function(){return On})),n.d(e,"A",(function(){return Rn})),n.d(e,"G",(function(){return vn})),n.d(e,"n",(function(){return on})),n.d(e,"p",(function(){return un})),n.d(e,"o",(function(){return ln})),n.d(e,"r",(function(){return hn})),n.d(e,"d",(function(){return H})),n.d(e,"e",(function(){return Y})),n.d(e,"l",(function(){return Ze})),n.d(e,"m",(function(){return sn})),n.d(e,"k",(function(){return Qe})),n.d(e,"i",(function(){return xn})),n.d(e,"j",(function(){return Dn})),n.d(e,"q",(function(){return wn})),n.d(e,"b",(function(){return fn})),n.d(e,"f",(function(){return mn})),n.d(e,"g",(function(){return bn})),n.d(e,"h",(function(){return pn})),n.d(e,"s",(function(){return yn})),n.d(e,"a",(function(){return $t})),n.d(e,"t",(function(){return tn})),n.d(e,"c",(function(){return Ct})),n.d(e,"u",(function(){return Nt}));class B{constructor(t,e){this.id=t,this.url=e}}class Y extends B{constructor(t,e,n="imperative",a=null){super(t,e),this.navigationTrigger=n,this.restoredState=a}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class H extends B{constructor(t,e,n){super(t,e),this.urlAfterRedirects=n}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class U extends B{constructor(t,e,n){super(t,e),this.reason=n}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class W extends B{constructor(t,e,n){super(t,e),this.error=n}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class K extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class $ extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Z extends B{constructor(t,e,n,a,r){super(t,e),this.urlAfterRedirects=n,this.state=a,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class J extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Q extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class X{constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class tt{constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class et{constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class nt{constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class at{constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class rt{constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class it{constructor(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class st{}class ot{constructor(t){this.params=t||{}}has(t){return this.params.hasOwnProperty(t)}get(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e[0]:e}return null}getAll(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function ut(t){return new ot(t)}function dt(t){const e=Error("NavigationCancelingError: "+t);return e.ngNavigationCancelingError=!0,e}function lt(t,e,n){const a=n.path.split("/");if(a.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||a.length<t.length))return null;const r={};for(let i=0;i<a.length;i++){const e=a[i],n=t[i];if(e.startsWith(":"))r[e.substring(1)]=n;else if(e!==n.path)return null}return{consumed:t.slice(0,a.length),posParams:r}}class ct{constructor(t,e){this.routes=t,this.module=e}}function ft(t,e=""){for(let n=0;n<t.length;n++){const a=t[n];ht(a,gt(e,a))}}function ht(t,e){if(!t)throw new Error(`\n      Invalid configuration of route '${e}': Encountered undefined route.\n      The reason might be an extra comma.\n\n      Example:\n      const routes: Routes = [\n        { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n        { path: 'dashboard',  component: DashboardComponent },, << two commas\n        { path: 'detail/:id', component: HeroDetailComponent }\n      ];\n    `);if(Array.isArray(t))throw new Error(`Invalid configuration of route '${e}': Array cannot be specified`);if(!t.component&&!t.children&&!t.loadChildren&&t.outlet&&"primary"!==t.outlet)throw new Error(`Invalid configuration of route '${e}': a componentless route without children or loadChildren cannot have a named outlet set`);if(t.redirectTo&&t.children)throw new Error(`Invalid configuration of route '${e}': redirectTo and children cannot be used together`);if(t.redirectTo&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': redirectTo and loadChildren cannot be used together`);if(t.children&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': children and loadChildren cannot be used together`);if(t.redirectTo&&t.component)throw new Error(`Invalid configuration of route '${e}': redirectTo and component cannot be used together`);if(t.path&&t.matcher)throw new Error(`Invalid configuration of route '${e}': path and matcher cannot be used together`);if(void 0===t.redirectTo&&!t.component&&!t.children&&!t.loadChildren)throw new Error(`Invalid configuration of route '${e}'. One of the following must be provided: component, redirectTo, children or loadChildren`);if(void 0===t.path&&void 0===t.matcher)throw new Error(`Invalid configuration of route '${e}': routes must have either a path or a matcher specified`);if("string"==typeof t.path&&"/"===t.path.charAt(0))throw new Error(`Invalid configuration of route '${e}': path cannot start with a slash`);if(""===t.path&&void 0!==t.redirectTo&&void 0===t.pathMatch)throw new Error(`Invalid configuration of route '{path: "${e}", redirectTo: "${t.redirectTo}"}': please provide 'pathMatch'. The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`);if(void 0!==t.pathMatch&&"full"!==t.pathMatch&&"prefix"!==t.pathMatch)throw new Error(`Invalid configuration of route '${e}': pathMatch can only be set to 'prefix' or 'full'`);t.children&&ft(t.children,e)}function gt(t,e){return e?t||e.path?t&&!e.path?`${t}/`:!t&&e.path?e.path:`${t}/${e.path}`:"":t}function pt(t){const e=t.children&&t.children.map(pt),n=e?Object.assign({},t,{children:e}):Object.assign({},t);return!n.component&&(e||n.loadChildren)&&n.outlet&&"primary"!==n.outlet&&(n.component=st),n}function bt(t,e){const n=Object.keys(t),a=Object.keys(e);if(!n||!a||n.length!=a.length)return!1;let r;for(let i=0;i<n.length;i++)if(r=n[i],t[r]!==e[r])return!1;return!0}function mt(t){return Array.prototype.concat.apply([],t)}function yt(t){return t.length>0?t[t.length-1]:null}function vt(t,e){for(const n in t)t.hasOwnProperty(n)&&e(t[n],n)}function xt(t){return Object(r["ɵisObservable"])(t)?t:Object(r["ɵisPromise"])(t)?Object(s.a)(Promise.resolve(t)):Object(i.a)(t)}function _t(t,e,n){return n?function(t,e){return bt(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!St(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(const a in n.children){if(!e.children[a])return!1;if(!t(e.children[a],n.children[a]))return!1}return!0}(t.root,e.root):function(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(n=>e[n]===t[n])}(t.queryParams,e.queryParams)&&function t(e,n){return function e(n,a,r){if(n.segments.length>r.length)return!!St(n.segments.slice(0,r.length),r)&&!a.hasChildren();if(n.segments.length===r.length){if(!St(n.segments,r))return!1;for(const e in a.children){if(!n.children[e])return!1;if(!t(n.children[e],a.children[e]))return!1}return!0}{const t=r.slice(0,n.segments.length),i=r.slice(n.segments.length);return!!St(n.segments,t)&&!!n.children.primary&&e(n.children.primary,a,i)}}(e,n,n.segments)}(t.root,e.root)}class Tt{constructor(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=ut(this.queryParams)),this._queryParamMap}toString(){return Rt.serialize(this)}}class Ot{constructor(t,e){this.segments=t,this.children=e,this.parent=null,vt(e,(t,e)=>t.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return At(this)}}class wt{constructor(t,e){this.path=t,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=ut(this.parameters)),this._parameterMap}toString(){return Mt(this)}}function St(t,e){return t.length===e.length&&t.every((t,n)=>t.path===e[n].path)}function It(t,e){let n=[];return vt(t.children,(t,a)=>{"primary"===a&&(n=n.concat(e(t,a)))}),vt(t.children,(t,a)=>{"primary"!==a&&(n=n.concat(e(t,a)))}),n}class Nt{}class Ct{parse(t){const e=new Vt(t);return new Tt(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(t){var e;return`${`/${function t(e,n){if(!e.hasChildren())return At(e);if(n){const n=e.children.primary?t(e.children.primary,!1):"",a=[];return vt(e.children,(e,n)=>{"primary"!==n&&a.push(`${n}:${t(e,!1)}`)}),a.length>0?`${n}(${a.join("//")})`:n}{const n=It(e,(n,a)=>"primary"===a?[t(e.children.primary,!1)]:[`${a}:${t(n,!1)}`]);return`${At(e)}/(${n.join("//")})`}}(t.root,!0)}`}${function(t){const e=Object.keys(t).map(e=>{const n=t[e];return Array.isArray(n)?n.map(t=>`${Et(e)}=${Et(t)}`).join("&"):`${Et(e)}=${Et(n)}`});return e.length?`?${e.join("&")}`:""}(t.queryParams)}${"string"==typeof t.fragment?`#${e=t.fragment,encodeURI(e)}`:""}`}}const Rt=new Ct;function At(t){return t.segments.map(t=>Mt(t)).join("/")}function kt(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Et(t){return kt(t).replace(/%3B/gi,";")}function Lt(t){return kt(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Dt(t){return decodeURIComponent(t)}function Pt(t){return Dt(t.replace(/\+/g,"%20"))}function Mt(t){return`${Lt(t.path)}${e=t.parameters,Object.keys(e).map(t=>`;${Lt(t)}=${Lt(e[t])}`).join("")}`;var e}const qt=/^[^\/()?;=#]+/;function jt(t){const e=t.match(qt);return e?e[0]:""}const Ft=/^[^=?&#]+/,Gt=/^[^?&#]+/;class Vt{constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Ot([],{}):new Ot([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n.primary=new Ot(t,e)),n}parseSegment(){const t=jt(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(t),new wt(Dt(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const e=jt(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=jt(this.remaining);t&&(n=t,this.capture(n))}t[Dt(e)]=Dt(n)}parseQueryParam(t){const e=function(t){const e=t.match(Ft);return e?e[0]:""}(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=function(t){const e=t.match(Gt);return e?e[0]:""}(this.remaining);t&&(n=t,this.capture(n))}const a=Pt(e),r=Pt(n);if(t.hasOwnProperty(a)){let e=t[a];Array.isArray(e)||(e=[e],t[a]=e),e.push(r)}else t[a]=r}parseParens(t){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const n=jt(this.remaining),a=this.remaining[n.length];if("/"!==a&&")"!==a&&";"!==a)throw new Error(`Cannot parse url '${this.url}'`);let r=void 0;n.indexOf(":")>-1?(r=n.substr(0,n.indexOf(":")),this.capture(r),this.capture(":")):t&&(r="primary");const i=this.parseChildren();e[r]=1===Object.keys(i).length?i.primary:new Ot([],i),this.consumeOptional("//")}return e}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new Error(`Expected "${t}".`)}}class zt{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null}children(t){const e=Bt(t,this._root);return e?e.children.map(t=>t.value):[]}firstChild(t){const e=Bt(t,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(t){const e=Yt(t,this._root);return e.length<2?[]:e[e.length-2].children.map(t=>t.value).filter(e=>e!==t)}pathFromRoot(t){return Yt(t,this._root).map(t=>t.value)}}function Bt(t,e){if(t===e.value)return e;for(const n of e.children){const e=Bt(t,n);if(e)return e}return null}function Yt(t,e){if(t===e.value)return[e];for(const n of e.children){const a=Yt(t,n);if(a.length)return a.unshift(e),a}return[]}class Ht{constructor(t,e){this.value=t,this.children=e}toString(){return`TreeNode(${this.value})`}}function Ut(t){const e={};return t&&t.children.forEach(t=>e[t.value.outlet]=t),e}class Wt extends zt{constructor(t,e){super(t),this.snapshot=e,Xt(this,t)}toString(){return this.snapshot.toString()}}function Kt(t,e){const n=function(t,e){const n=new Jt([],{},{},"",{},"primary",e,null,t.root,-1,{});return new Qt("",new Ht(n,[]))}(t,e),a=new o.a([new wt("",{})]),r=new o.a({}),i=new o.a({}),s=new o.a({}),u=new o.a(""),d=new $t(a,r,s,u,i,"primary",e,n.root);return d.snapshot=n.root,new Wt(new Ht(d,[]),n)}class $t{constructor(t,e,n,a,r,i,s,o){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this._futureSnapshot=o}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(Object(_.a)(t=>ut(t)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(Object(_.a)(t=>ut(t)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Zt(t,e="emptyOnly"){const n=t.pathFromRoot;let a=0;if("always"!==e)for(a=n.length-1;a>=1;){const t=n[a],e=n[a-1];if(t.routeConfig&&""===t.routeConfig.path)a--;else{if(e.component)break;a--}}return function(t){return t.reduce((t,e)=>({params:Object.assign({},t.params,e.params),data:Object.assign({},t.data,e.data),resolve:Object.assign({},t.resolve,e._resolvedData)}),{params:{},data:{},resolve:{}})}(n.slice(a))}class Jt{constructor(t,e,n,a,r,i,s,o,u,d,l){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this.routeConfig=o,this._urlSegment=u,this._lastPathIndex=d,this._resolve=l}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=ut(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=ut(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(t=>t.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Qt extends zt{constructor(t,e){super(e),this.url=t,Xt(this,e)}toString(){return te(this._root)}}function Xt(t,e){e.value._routerState=t,e.children.forEach(e=>Xt(t,e))}function te(t){const e=t.children.length>0?` { ${t.children.map(te).join(", ")} } `:"";return`${t.value}${e}`}function ee(t){if(t.snapshot){const e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,bt(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),bt(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;++n)if(!bt(t[n],e[n]))return!1;return!0}(e.url,n.url)||t.url.next(n.url),bt(e.data,n.data)||t.data.next(n.data)}else t.snapshot=t._futureSnapshot,t.data.next(t._futureSnapshot.data)}function ne(t,e){var n,a;return bt(t.params,e.params)&&St(n=t.url,a=e.url)&&n.every((t,e)=>bt(t.parameters,a[e].parameters))&&!(!t.parent!=!e.parent)&&(!t.parent||ne(t.parent,e.parent))}function ae(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function re(t,e,n,a,r){let i={};return a&&vt(a,(t,e)=>{i[e]=Array.isArray(t)?t.map(t=>`${t}`):`${t}`}),new Tt(n.root===t?e:function t(e,n,a){const r={};return vt(e.children,(e,i)=>{r[i]=e===n?a:t(e,n,a)}),new Ot(e.segments,r)}(n.root,t,e),i,r)}class ie{constructor(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&ae(n[0]))throw new Error("Root segment cannot have matrix parameters");const a=n.find(t=>"object"==typeof t&&null!=t&&t.outlets);if(a&&a!==yt(n))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class se{constructor(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}function oe(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets.primary:`${t}`}function ue(t,e,n){if(t||(t=new Ot([],{})),0===t.segments.length&&t.hasChildren())return de(t,e,n);const a=function(t,e,n){let a=0,r=e;const i={match:!1,pathIndex:0,commandIndex:0};for(;r<t.segments.length;){if(a>=n.length)return i;const e=t.segments[r],s=oe(n[a]),o=a<n.length-1?n[a+1]:null;if(r>0&&void 0===s)break;if(s&&o&&"object"==typeof o&&void 0===o.outlets){if(!he(s,o,e))return i;a+=2}else{if(!he(s,{},e))return i;a++}r++}return{match:!0,pathIndex:r,commandIndex:a}}(t,e,n),r=n.slice(a.commandIndex);if(a.match&&a.pathIndex<t.segments.length){const e=new Ot(t.segments.slice(0,a.pathIndex),{});return e.children.primary=new Ot(t.segments.slice(a.pathIndex),t.children),de(e,0,r)}return a.match&&0===r.length?new Ot(t.segments,{}):a.match&&!t.hasChildren()?le(t,e,n):a.match?de(t,0,r):le(t,e,n)}function de(t,e,n){if(0===n.length)return new Ot(t.segments,{});{const a=function(t){return"object"!=typeof t[0]?{primary:t}:void 0===t[0].outlets?{primary:t}:t[0].outlets}(n),r={};return vt(a,(n,a)=>{null!==n&&(r[a]=ue(t.children[a],e,n))}),vt(t.children,(t,e)=>{void 0===a[e]&&(r[e]=t)}),new Ot(t.segments,r)}}function le(t,e,n){const a=t.segments.slice(0,e);let r=0;for(;r<n.length;){if("object"==typeof n[r]&&void 0!==n[r].outlets){const t=ce(n[r].outlets);return new Ot(a,t)}if(0===r&&ae(n[0])){a.push(new wt(t.segments[e].path,n[0])),r++;continue}const i=oe(n[r]),s=r<n.length-1?n[r+1]:null;i&&s&&ae(s)?(a.push(new wt(i,fe(s))),r+=2):(a.push(new wt(i,{})),r++)}return new Ot(a,{})}function ce(t){const e={};return vt(t,(t,n)=>{null!==t&&(e[n]=le(new Ot([],{}),0,t))}),e}function fe(t){const e={};return vt(t,(t,n)=>e[n]=`${t}`),e}function he(t,e,n){return t==n.path&&bt(e,n.parameters)}class ge{constructor(t,e,n,a){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=a}activate(t){const e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),ee(this.futureState.root),this.activateChildRoutes(e,n,t)}deactivateChildRoutes(t,e,n){const a=Ut(e);t.children.forEach(t=>{const e=t.value.outlet;this.deactivateRoutes(t,a[e],n),delete a[e]}),vt(a,(t,e)=>{this.deactivateRouteAndItsChildren(t,n)})}deactivateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(a===r)if(a.component){const r=n.getContext(a.outlet);r&&this.deactivateChildRoutes(t,e,r.children)}else this.deactivateChildRoutes(t,e,n);else r&&this.deactivateRouteAndItsChildren(e,n)}deactivateRouteAndItsChildren(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)}detachAndStoreRouteSubtree(t,e){const n=e.getContext(t.value.outlet);if(n&&n.outlet){const e=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:e,route:t,contexts:a})}}deactivateRouteAndOutlet(t,e){const n=e.getContext(t.value.outlet);if(n){const a=Ut(t),r=t.value.component?n.children:e;vt(a,(t,e)=>this.deactivateRouteAndItsChildren(t,r)),n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated())}}activateChildRoutes(t,e,n){const a=Ut(e);t.children.forEach(t=>{this.activateRoutes(t,a[t.value.outlet],n),this.forwardEvent(new rt(t.value.snapshot))}),t.children.length&&this.forwardEvent(new nt(t.value.snapshot))}activateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(ee(a),a===r)if(a.component){const r=n.getOrCreateContext(a.outlet);this.activateChildRoutes(t,e,r.children)}else this.activateChildRoutes(t,e,n);else if(a.component){const e=n.getOrCreateContext(a.outlet);if(this.routeReuseStrategy.shouldAttach(a.snapshot)){const t=this.routeReuseStrategy.retrieve(a.snapshot);this.routeReuseStrategy.store(a.snapshot,null),e.children.onOutletReAttached(t.contexts),e.attachRef=t.componentRef,e.route=t.route.value,e.outlet&&e.outlet.attach(t.componentRef,t.route.value),pe(t.route)}else{const n=function(t){for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig;if(t&&t.component)return null}return null}(a.snapshot),r=n?n.module.componentFactoryResolver:null;e.attachRef=null,e.route=a,e.resolver=r,e.outlet&&e.outlet.activateWith(a,r),this.activateChildRoutes(t,null,e.children)}}else this.activateChildRoutes(t,null,n)}}function pe(t){ee(t.value),t.children.forEach(pe)}function be(t){return"function"==typeof t}function me(t){return t instanceof Tt}class ye{constructor(t){this.segmentGroup=t||null}}class ve{constructor(t){this.urlTree=t}}function xe(t){return new u.a(e=>e.error(new ye(t)))}function _e(t){return new u.a(e=>e.error(new ve(t)))}function Te(t){return new u.a(e=>e.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${t}'`)))}class Oe{constructor(t,e,n,a,i){this.configLoader=e,this.urlSerializer=n,this.urlTree=a,this.config=i,this.allowRedirects=!0,this.ngModule=t.get(r.NgModuleRef)}apply(){return this.expandSegmentGroup(this.ngModule,this.config,this.urlTree.root,"primary").pipe(Object(_.a)(t=>this.createUrlTree(t,this.urlTree.queryParams,this.urlTree.fragment))).pipe(Object(w.a)(t=>{if(t instanceof ve)return this.allowRedirects=!1,this.match(t.urlTree);if(t instanceof ye)throw this.noMatchError(t);throw t}))}match(t){return this.expandSegmentGroup(this.ngModule,this.config,t.root,"primary").pipe(Object(_.a)(e=>this.createUrlTree(e,t.queryParams,t.fragment))).pipe(Object(w.a)(t=>{if(t instanceof ye)throw this.noMatchError(t);throw t}))}noMatchError(t){return new Error(`Cannot match any routes. URL Segment: '${t.segmentGroup}'`)}createUrlTree(t,e,n){const a=t.segments.length>0?new Ot([],{primary:t}):t;return new Tt(a,e,n)}expandSegmentGroup(t,e,n,a){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(Object(_.a)(t=>new Ot([],t))):this.expandSegment(t,n,e,n.segments,a,!0)}expandChildren(t,e,n){return function(t,e){if(0===Object.keys(t).length)return Object(i.a)({});const n=[],a=[],r={};return vt(t,(t,i)=>{const s=e(i,t).pipe(Object(_.a)(t=>r[i]=t));"primary"===i?n.push(s):a.push(s)}),i.a.apply(null,n.concat(a)).pipe(Object(T.a)(),Object(O.a)(),Object(_.a)(()=>r))}(n.children,(n,a)=>this.expandSegmentGroup(t,e,a,n))}expandSegment(t,e,n,a,r,s){return Object(i.a)(...n).pipe(Object(_.a)(o=>this.expandSegmentAgainstRoute(t,e,n,o,a,r,s).pipe(Object(w.a)(t=>{if(t instanceof ye)return Object(i.a)(null);throw t}))),Object(T.a)(),Object(S.a)(t=>!!t),Object(w.a)((t,n)=>{if(t instanceof d.a||"EmptyError"===t.name){if(this.noLeftoversInUrl(e,a,r))return Object(i.a)(new Ot([],{}));throw new ye(e)}throw t}))}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}expandSegmentAgainstRoute(t,e,n,a,r,i,s){return Ne(a)!==i?xe(e):void 0===a.redirectTo?this.matchSegmentAgainstRoute(t,e,a,r):s&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i):xe(e)}expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){return"**"===a.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,a,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i)}expandWildCardWithParamsAgainstRouteUsingRedirect(t,e,n,a){const r=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?_e(r):this.lineralizeSegments(n,r).pipe(Object(I.a)(n=>{const r=new Ot(n,{});return this.expandSegment(t,r,e,n,a,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){const{matched:s,consumedSegments:o,lastChild:u,positionalParamSegments:d}=we(e,a,r);if(!s)return xe(e);const l=this.applyRedirectCommands(o,a.redirectTo,d);return a.redirectTo.startsWith("/")?_e(l):this.lineralizeSegments(a,l).pipe(Object(I.a)(a=>this.expandSegment(t,e,n,a.concat(r.slice(u)),i,!1)))}matchSegmentAgainstRoute(t,e,n,a){if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(Object(_.a)(t=>(n._loadedConfig=t,new Ot(a,{})))):Object(i.a)(new Ot(a,{}));const{matched:r,consumedSegments:s,lastChild:o}=we(e,n,a);if(!r)return xe(e);const u=a.slice(o);return this.getChildConfig(t,n,a).pipe(Object(I.a)(t=>{const n=t.module,a=t.routes,{segmentGroup:r,slicedSegments:o}=function(t,e,n,a){return n.length>0&&function(t,e,n){return n.some(n=>Ie(t,e,n)&&"primary"!==Ne(n))}(t,n,a)?{segmentGroup:Se(new Ot(e,function(t,e){const n={};n.primary=e;for(const a of t)""===a.path&&"primary"!==Ne(a)&&(n[Ne(a)]=new Ot([],{}));return n}(a,new Ot(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return n.some(n=>Ie(t,e,n))}(t,n,a)?{segmentGroup:Se(new Ot(t.segments,function(t,e,n,a){const r={};for(const i of n)Ie(t,e,i)&&!a[Ne(i)]&&(r[Ne(i)]=new Ot([],{}));return Object.assign({},a,r)}(t,n,a,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,s,u,a);return 0===o.length&&r.hasChildren()?this.expandChildren(n,a,r).pipe(Object(_.a)(t=>new Ot(s,t))):0===a.length&&0===o.length?Object(i.a)(new Ot(s,{})):this.expandSegment(n,r,a,o,"primary",!0).pipe(Object(_.a)(t=>new Ot(s.concat(t.segments),t.children)))}))}getChildConfig(t,e,n){return e.children?Object(i.a)(new ct(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?Object(i.a)(e._loadedConfig):function(t,e,n){const a=e.canLoad;return a&&0!==a.length?Object(s.a)(a).pipe(Object(_.a)(a=>{const r=t.get(a);let i;if(function(t){return t&&be(t.canLoad)}(r))i=r.canLoad(e,n);else{if(!be(r))throw new Error("Invalid CanLoad guard");i=r(e,n)}return xt(i)})).pipe(Object(T.a)(),(r=t=>!0===t,t=>t.lift(new C(r,void 0,t)))):Object(i.a)(!0);var r}(t.injector,e,n).pipe(Object(I.a)(n=>n?this.configLoader.load(t.injector,e).pipe(Object(_.a)(t=>(e._loadedConfig=t,t))):function(t){return new u.a(e=>e.error(dt(`Cannot load children because the guard of the route "path: '${t.path}'" returned false`)))}(e))):Object(i.a)(new ct([],t))}lineralizeSegments(t,e){let n=[],a=e.root;for(;;){if(n=n.concat(a.segments),0===a.numberOfChildren)return Object(i.a)(n);if(a.numberOfChildren>1||!a.children.primary)return Te(t.redirectTo);a=a.children.primary}}applyRedirectCommands(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)}applyRedirectCreatreUrlTree(t,e,n,a){const r=this.createSegmentGroup(t,e.root,n,a);return new Tt(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(t,e){const n={};return vt(t,(t,a)=>{if("string"==typeof t&&t.startsWith(":")){const r=t.substring(1);n[a]=e[r]}else n[a]=t}),n}createSegmentGroup(t,e,n,a){const r=this.createSegments(t,e.segments,n,a);let i={};return vt(e.children,(e,r)=>{i[r]=this.createSegmentGroup(t,e,n,a)}),new Ot(r,i)}createSegments(t,e,n,a){return e.map(e=>e.path.startsWith(":")?this.findPosParam(t,e,a):this.findOrReturn(e,n))}findPosParam(t,e,n){const a=n[e.path.substring(1)];if(!a)throw new Error(`Cannot redirect to '${t}'. Cannot find '${e.path}'.`);return a}findOrReturn(t,e){let n=0;for(const a of e){if(a.path===t.path)return e.splice(n),a;n++}return t}}function we(t,e,n){if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||n.length>0)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:[],lastChild:0,positionalParamSegments:{}};const a=(e.matcher||lt)(n,t,e);return a?{matched:!0,consumedSegments:a.consumed,lastChild:a.consumed.length,positionalParamSegments:a.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function Se(t){if(1===t.numberOfChildren&&t.children.primary){const e=t.children.primary;return new Ot(t.segments.concat(e.segments),e.children)}return t}function Ie(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function Ne(t){return t.outlet||"primary"}class Ce{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class Re{constructor(t,e){this.component=t,this.route=e}}function Ae(t,e,n){const a=t._root;return function t(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=Ut(n);return e.children.forEach(e=>{!function(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=e.value,o=n?n.value:null,u=a?a.getContext(e.value.outlet):null;if(o&&s.routeConfig===o.routeConfig){const d=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!St(t.url,e.url);case"pathParamsOrQueryParamsChange":return!St(t.url,e.url)||!bt(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!ne(t,e)||!bt(t.queryParams,e.queryParams);case"paramsChange":default:return!ne(t,e)}}(o,s,s.routeConfig.runGuardsAndResolvers);d?i.canActivateChecks.push(new Ce(r)):(s.data=o.data,s._resolvedData=o._resolvedData),t(e,n,s.component?u?u.children:null:a,r,i),d&&i.canDeactivateChecks.push(new Re(u&&u.outlet&&u.outlet.component||null,o))}else o&&Ee(n,u,i),i.canActivateChecks.push(new Ce(r)),t(e,null,s.component?u?u.children:null:a,r,i)}(e,s[e.value.outlet],a,r.concat([e.value]),i),delete s[e.value.outlet]}),vt(s,(t,e)=>Ee(t,a.getContext(e),i)),i}(a,e?e._root:null,n,[a.value])}function ke(t,e,n){const a=function(t){if(!t)return null;for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig}return null}(e);return(a?a.module.injector:n).get(t)}function Ee(t,e,n){const a=Ut(t),r=t.value;vt(a,(t,a)=>{Ee(t,r.component?e?e.children.getContext(a):null:e,n)}),n.canDeactivateChecks.push(new Re(r.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,r))}const Le=Symbol("INITIAL_VALUE");function De(){return Object(A.a)(t=>function(...t){let e=null,n=null;return Object(l.a)(t[t.length-1])&&(n=t.pop()),"function"==typeof t[t.length-1]&&(e=t.pop()),1===t.length&&Object(c.a)(t[0])&&(t=t[0]),Object(g.a)(t,n).lift(new b(e))}(...t.map(t=>t.pipe(Object(k.a)(1),function(...t){const e=t[t.length-1];return Object(l.a)(e)?(t.pop(),n=>Object(E.a)(t,n,e)):e=>Object(E.a)(t,e)}(Le)))).pipe(Object(L.a)((t,e)=>{let n=!1;return e.reduce((t,a,r)=>{if(t!==Le)return t;if(a===Le&&(n=!0),!n){if(!1===a)return a;if(r===e.length-1||me(a))return a}return t},t)},Le),Object(D.a)(t=>t!==Le),Object(_.a)(t=>me(t)?t:!0===t),Object(k.a)(1)))}function Pe(t,e){return null!==t&&e&&e(new at(t)),Object(i.a)(!0)}function Me(t,e){return null!==t&&e&&e(new et(t)),Object(i.a)(!0)}function qe(t,e,n){const a=e.routeConfig?e.routeConfig.canActivate:null;if(!a||0===a.length)return Object(i.a)(!0);const r=a.map(a=>v(()=>{const r=ke(a,e,n);let i;if(function(t){return t&&be(t.canActivate)}(r))i=xt(r.canActivate(e,t));else{if(!be(r))throw new Error("Invalid CanActivate guard");i=xt(r(e,t))}return i.pipe(Object(S.a)())}));return Object(i.a)(r).pipe(De())}function je(t,e,n){const a=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(t=>function(t){const e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)).filter(t=>null!==t).map(e=>v(()=>{const r=e.guards.map(r=>{const i=ke(r,e.node,n);let s;if(function(t){return t&&be(t.canActivateChild)}(i))s=xt(i.canActivateChild(a,t));else{if(!be(i))throw new Error("Invalid CanActivateChild guard");s=xt(i(a,t))}return s.pipe(Object(S.a)())});return Object(i.a)(r).pipe(De())}));return Object(i.a)(r).pipe(De())}class Fe{}class Ge{constructor(t,e,n,a,r,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=a,this.paramsInheritanceStrategy=r,this.relativeLinkResolution=i}recognize(){try{const t=Be(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,"primary"),n=new Jt([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},"primary",this.rootComponentType,null,this.urlTree.root,-1,{}),a=new Ht(n,e),r=new Qt(this.url,a);return this.inheritParamsAndData(r._root),Object(i.a)(r)}catch(t){return new u.a(e=>e.error(t))}}inheritParamsAndData(t){const e=t.value,n=Zt(e,this.paramsInheritanceStrategy);e.params=Object.freeze(n.params),e.data=Object.freeze(n.data),t.children.forEach(t=>this.inheritParamsAndData(t))}processSegmentGroup(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)}processChildren(t,e){const n=It(e,(e,n)=>this.processSegmentGroup(t,e,n));return function(t){const e={};t.forEach(t=>{const n=e[t.value.outlet];if(n){const e=n.url.map(t=>t.toString()).join("/"),a=t.value.url.map(t=>t.toString()).join("/");throw new Error(`Two segments cannot have the same outlet name: '${e}' and '${a}'.`)}e[t.value.outlet]=t.value})}(n),n.sort((t,e)=>"primary"===t.value.outlet?-1:"primary"===e.value.outlet?1:t.value.outlet.localeCompare(e.value.outlet)),n}processSegment(t,e,n,a){for(const i of t)try{return this.processSegmentAgainstRoute(i,e,n,a)}catch(r){if(!(r instanceof Fe))throw r}if(this.noLeftoversInUrl(e,n,a))return[];throw new Fe}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}processSegmentAgainstRoute(t,e,n,a){if(t.redirectTo)throw new Fe;if((t.outlet||"primary")!==a)throw new Fe;let r,i=[],s=[];if("**"===t.path){const i=n.length>0?yt(n).parameters:{};r=new Jt(n,i,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ue(t),a,t.component,t,Ve(e),ze(e)+n.length,We(t))}else{const o=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new Fe;return{consumedSegments:[],lastChild:0,parameters:{}}}const a=(e.matcher||lt)(n,t,e);if(!a)throw new Fe;const r={};vt(a.posParams,(t,e)=>{r[e]=t.path});const i=a.consumed.length>0?Object.assign({},r,a.consumed[a.consumed.length-1].parameters):r;return{consumedSegments:a.consumed,lastChild:a.consumed.length,parameters:i}}(e,t,n);i=o.consumedSegments,s=n.slice(o.lastChild),r=new Jt(i,o.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ue(t),a,t.component,t,Ve(e),ze(e)+i.length,We(t))}const o=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),{segmentGroup:u,slicedSegments:d}=Be(e,i,s,o,this.relativeLinkResolution);if(0===d.length&&u.hasChildren()){const t=this.processChildren(o,u);return[new Ht(r,t)]}if(0===o.length&&0===d.length)return[new Ht(r,[])];const l=this.processSegment(o,u,d,"primary");return[new Ht(r,l)]}}function Ve(t){let e=t;for(;e._sourceSegment;)e=e._sourceSegment;return e}function ze(t){let e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;for(;e._sourceSegment;)e=e._sourceSegment,n+=e._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Be(t,e,n,a,r){if(n.length>0&&function(t,e,n){return n.some(n=>Ye(t,e,n)&&"primary"!==He(n))}(t,n,a)){const r=new Ot(e,function(t,e,n,a){const r={};r.primary=a,a._sourceSegment=t,a._segmentIndexShift=e.length;for(const i of n)if(""===i.path&&"primary"!==He(i)){const n=new Ot([],{});n._sourceSegment=t,n._segmentIndexShift=e.length,r[He(i)]=n}return r}(t,e,a,new Ot(n,t.children)));return r._sourceSegment=t,r._segmentIndexShift=e.length,{segmentGroup:r,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return n.some(n=>Ye(t,e,n))}(t,n,a)){const i=new Ot(t.segments,function(t,e,n,a,r,i){const s={};for(const o of a)if(Ye(t,n,o)&&!r[He(o)]){const n=new Ot([],{});n._sourceSegment=t,n._segmentIndexShift="legacy"===i?t.segments.length:e.length,s[He(o)]=n}return Object.assign({},r,s)}(t,e,n,a,t.children,r));return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}const i=new Ot(t.segments,t.children);return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}function Ye(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function He(t){return t.outlet||"primary"}function Ue(t){return t.data||{}}function We(t){return t.resolve||{}}function Ke(t,e,n,a){const r=ke(t,e,a);return xt(r.resolve?r.resolve(e,n):r(e,n))}function $e(t){return function(e){return e.pipe(Object(A.a)(e=>{const n=t(e);return n?Object(s.a)(n).pipe(Object(_.a)(()=>e)):Object(s.a)([e])}))}}class Ze{}class Je{shouldDetach(t){return!1}store(t,e){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,e){return t.routeConfig===e.routeConfig}}const Qe=new r.InjectionToken("ROUTES");class Xe{constructor(t,e,n,a){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=a}load(t,e){return this.onLoadStartListener&&this.onLoadStartListener(e),this.loadModuleFactory(e.loadChildren).pipe(Object(_.a)(n=>{this.onLoadEndListener&&this.onLoadEndListener(e);const a=n.create(t);return new ct(mt(a.injector.get(Qe)).map(pt),a)}))}loadModuleFactory(t){return"string"==typeof t?Object(s.a)(this.loader.load(t)):xt(t()).pipe(Object(I.a)(t=>t instanceof r.NgModuleFactory?Object(i.a)(t):Object(s.a)(this.compiler.compileModuleAsync(t))))}}class tn{}class en{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,e){return t}}function nn(t){throw t}function an(t,e,n){return e.parse("/")}function rn(t,e){return Object(i.a)(null)}class sn{constructor(t,e,n,a,i,s,u,d){this.rootComponentType=t,this.urlSerializer=e,this.rootContexts=n,this.location=a,this.config=d,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.navigationId=0,this.isNgZoneEnabled=!1,this.events=new x.a,this.errorHandler=nn,this.malformedUriErrorHandler=an,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:rn,afterPreactivation:rn},this.urlHandlingStrategy=new en,this.routeReuseStrategy=new Je,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="legacy",this.ngModule=i.get(r.NgModuleRef),this.console=i.get(r["ɵConsole"]);const l=i.get(r.NgZone);this.isNgZoneEnabled=l instanceof r.NgZone,this.resetConfig(d),this.currentUrlTree=new Tt(new Ot([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Xe(s,u,t=>this.triggerEvent(new X(t)),t=>this.triggerEvent(new tt(t))),this.routerState=Kt(this.currentUrlTree,this.rootComponentType),this.transitions=new o.a({id:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}setupNavigations(t){const e=this.events;return t.pipe(Object(D.a)(t=>0!==t.id),Object(_.a)(t=>Object.assign({},t,{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl)})),Object(A.a)(t=>{let n=!1,a=!1;return Object(i.a)(t).pipe(Object(q.a)(t=>{this.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign({},this.lastSuccessfulNavigation,{previousNavigation:null}):null}}),Object(A.a)(t=>{const n=!this.navigated||t.extractedUrl.toString()!==this.browserUrlTree.toString();if(("reload"===this.onSameUrlNavigation||n)&&this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return Object(i.a)(t).pipe(Object(A.a)(t=>{const n=this.transitions.getValue();return e.next(new Y(t.id,this.serializeUrl(t.extractedUrl),t.source,t.restoredState)),n!==this.transitions.getValue()?y.a:[t]}),Object(A.a)(t=>Promise.resolve(t)),(a=this.ngModule.injector,r=this.configLoader,s=this.urlSerializer,o=this.config,function(t){return t.pipe(Object(A.a)(t=>function(t,e,n,a,r){return new Oe(t,e,n,a,r).apply()}(a,r,s,t.extractedUrl,o).pipe(Object(_.a)(e=>Object.assign({},t,{urlAfterRedirects:e})))))}),Object(q.a)(t=>{this.currentNavigation=Object.assign({},this.currentNavigation,{finalUrl:t.urlAfterRedirects})}),function(t,e,n,a,r){return function(i){return i.pipe(Object(I.a)(i=>function(t,e,n,a,r="emptyOnly",i="legacy"){return new Ge(t,e,n,a,r,i).recognize()}(t,e,i.urlAfterRedirects,n(i.urlAfterRedirects),a,r).pipe(Object(_.a)(t=>Object.assign({},i,{targetSnapshot:t})))))}}(this.rootComponentType,this.config,t=>this.serializeUrl(t),this.paramsInheritanceStrategy,this.relativeLinkResolution),Object(q.a)(t=>{"eager"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),Object(q.a)(t=>{const n=new K(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.next(n)}));var a,r,s,o;if(n&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:n,extractedUrl:a,source:r,restoredState:s,extras:o}=t,u=new Y(n,this.serializeUrl(a),r,s);e.next(u);const d=Kt(a,this.rootComponentType).snapshot;return Object(i.a)(Object.assign({},t,{targetSnapshot:d,urlAfterRedirects:a,extras:Object.assign({},o,{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=t.rawUrl,this.browserUrlTree=t.urlAfterRedirects,t.resolve(null),y.a}),$e(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.beforePreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(q.a)(t=>{const e=new $(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),Object(_.a)(t=>Object.assign({},t,{guards:Ae(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),function(t,e){return function(n){return n.pipe(Object(I.a)(n=>{const{targetSnapshot:a,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:u}}=n;return 0===u.length&&0===o.length?Object(i.a)(Object.assign({},n,{guardsResult:!0})):function(t,e,n,a){return Object(s.a)(t).pipe(Object(I.a)(t=>function(t,e,n,a,r){const s=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!s||0===s.length)return Object(i.a)(!0);const o=s.map(i=>{const s=ke(i,e,r);let o;if(function(t){return t&&be(t.canDeactivate)}(s))o=xt(s.canDeactivate(t,e,n,a));else{if(!be(s))throw new Error("Invalid CanDeactivate guard");o=xt(s(t,e,n,a))}return o.pipe(Object(S.a)())});return Object(i.a)(o).pipe(De())}(t.component,t.route,n,e,a)),Object(S.a)(t=>!0!==t,!0))}(u,a,r,t).pipe(Object(I.a)(n=>n&&"boolean"==typeof n?function(t,e,n,a){return Object(s.a)(e).pipe(Object(P.a)(e=>Object(s.a)([Me(e.route.parent,a),Pe(e.route,a),je(t,e.path,n),qe(t,e.route,n)]).pipe(Object(T.a)(),Object(S.a)(t=>!0!==t,!0))),Object(S.a)(t=>!0!==t,!0))}(a,o,t,e):Object(i.a)(n)),Object(_.a)(t=>Object.assign({},n,{guardsResult:t})))}))}}(this.ngModule.injector,t=>this.triggerEvent(t)),Object(q.a)(t=>{if(me(t.guardsResult)){const e=dt(`Redirecting to "${this.serializeUrl(t.guardsResult)}"`);throw e.url=t.guardsResult,e}}),Object(q.a)(t=>{const e=new Z(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.triggerEvent(e)}),Object(D.a)(t=>{if(!t.guardsResult){this.resetUrlToCurrentUrlTree();const n=new U(t.id,this.serializeUrl(t.extractedUrl),"");return e.next(n),t.resolve(!1),!1}return!0}),$e(t=>{if(t.guards.canActivateChecks.length)return Object(i.a)(t).pipe(Object(q.a)(t=>{const e=new J(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),(e=this.paramsInheritanceStrategy,n=this.ngModule.injector,function(t){return t.pipe(Object(I.a)(t=>{const{targetSnapshot:a,guards:{canActivateChecks:r}}=t;return r.length?Object(s.a)(r).pipe(Object(P.a)(t=>function(t,e,n,a){return function(t,e,n,a){const r=Object.keys(t);if(0===r.length)return Object(i.a)({});if(1===r.length){const i=r[0];return Ke(t[i],e,n,a).pipe(Object(_.a)(t=>({[i]:t})))}const o={};return Object(s.a)(r).pipe(Object(I.a)(r=>Ke(t[r],e,n,a).pipe(Object(_.a)(t=>(o[r]=t,t))))).pipe(Object(O.a)(),Object(_.a)(()=>o))}(t._resolve,t,e,a).pipe(Object(_.a)(e=>(t._resolvedData=e,t.data=Object.assign({},t.data,Zt(t,n).resolve),null)))}(t.route,a,e,n)),Object(M.a)((t,e)=>t),Object(_.a)(e=>t)):Object(i.a)(t)}))}),Object(q.a)(t=>{const e=new Q(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}));var e,n}),$e(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.afterPreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(_.a)(t=>{const e=function(t,e,n){const a=function t(e,n,a){if(a&&e.shouldReuseRoute(n.value,a.value.snapshot)){const r=a.value;r._futureSnapshot=n.value;const i=function(e,n,a){return n.children.map(n=>{for(const r of a.children)if(e.shouldReuseRoute(r.value.snapshot,n.value))return t(e,n,r);return t(e,n)})}(e,n,a);return new Ht(r,i)}{const a=e.retrieve(n.value);if(a){const t=a.route;return function t(e,n){if(e.value.routeConfig!==n.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(e.children.length!==n.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");n.value._futureSnapshot=e.value;for(let a=0;a<e.children.length;++a)t(e.children[a],n.children[a])}(n,t),t}{const a=new $t(new o.a((r=n.value).url),new o.a(r.params),new o.a(r.queryParams),new o.a(r.fragment),new o.a(r.data),r.outlet,r.component,r),i=n.children.map(n=>t(e,n));return new Ht(a,i)}}var r}(t,e._root,n?n._root:void 0);return new Wt(a,e)}(this.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return Object.assign({},t,{targetRouterState:e})}),Object(q.a)(t=>{this.currentUrlTree=t.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl),this.routerState=t.targetRouterState,"deferred"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),(u=this.rootContexts,d=this.routeReuseStrategy,l=t=>this.triggerEvent(t),Object(_.a)(t=>(new ge(d,t.targetRouterState,t.currentRouterState,l).activate(u),t))),Object(q.a)({next(){n=!0},complete(){n=!0}}),(r=()=>{if(!n&&!a){this.resetUrlToCurrentUrlTree();const n=new U(t.id,this.serializeUrl(t.extractedUrl),`Navigation ID ${t.id} is not equal to the current navigation id ${this.navigationId}`);e.next(n),t.resolve(!1)}this.currentNavigation=null},t=>t.lift(new F(r))),Object(w.a)(n=>{if(a=!0,(r=n)&&r.ngNavigationCancelingError){const a=me(n.url);a||(this.navigated=!0,this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));const r=new U(t.id,this.serializeUrl(t.extractedUrl),n.message);e.next(r),t.resolve(!1),a&&this.navigateByUrl(n.url)}else{this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);const a=new W(t.id,this.serializeUrl(t.extractedUrl),n);e.next(a);try{t.resolve(this.errorHandler(n))}catch(i){t.reject(i)}}var r;return y.a}));var r,u,d,l}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}getTransition(){const t=this.transitions.value;return t.urlAfterRedirects=this.browserUrlTree,t}setTransition(t){this.transitions.next(Object.assign({},this.getTransition(),t))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{let e=this.parseUrl(t.url);const n="popstate"===t.type?"popstate":"hashchange",a=t.state&&t.state.navigationId?t.state:null;setTimeout(()=>{this.scheduleNavigation(e,n,a,{replaceUrl:!0})},0)}))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){ft(t),this.config=t.map(pt),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=null)}createUrlTree(t,e={}){const{relativeTo:n,queryParams:a,fragment:i,preserveQueryParams:s,queryParamsHandling:o,preserveFragment:u}=e;Object(r.isDevMode)()&&s&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");const d=n||this.routerState.root,l=u?this.currentUrlTree.fragment:i;let c=null;if(o)switch(o){case"merge":c=Object.assign({},this.currentUrlTree.queryParams,a);break;case"preserve":c=this.currentUrlTree.queryParams;break;default:c=a||null}else c=s?this.currentUrlTree.queryParams:a||null;return null!==c&&(c=this.removeEmptyProps(c)),function(t,e,n,a,r){if(0===n.length)return re(e.root,e.root,e,a,r);const i=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new ie(!0,0,t);let e=0,n=!1;const a=t.reduce((t,a,r)=>{if("object"==typeof a&&null!=a){if(a.outlets){const e={};return vt(a.outlets,(t,n)=>{e[n]="string"==typeof t?t.split("/"):t}),[...t,{outlets:e}]}if(a.segmentPath)return[...t,a.segmentPath]}return"string"!=typeof a?[...t,a]:0===r?(a.split("/").forEach((a,r)=>{0==r&&"."===a||(0==r&&""===a?n=!0:".."===a?e++:""!=a&&t.push(a))}),t):[...t,a]},[]);return new ie(n,e,a)}(n);if(i.toRoot())return re(e.root,new Ot([],{}),e,a,r);const s=function(t,e,n){if(t.isAbsolute)return new se(e.root,!0,0);if(-1===n.snapshot._lastPathIndex)return new se(n.snapshot._urlSegment,!0,0);const a=ae(t.commands[0])?0:1;return function(t,e,n){let a=t,r=e,i=n;for(;i>r;){if(i-=r,a=a.parent,!a)throw new Error("Invalid number of '../'");r=a.segments.length}return new se(a,!1,r-i)}(n.snapshot._urlSegment,n.snapshot._lastPathIndex+a,t.numberOfDoubleDots)}(i,e,t),o=s.processChildren?de(s.segmentGroup,s.index,i.commands):ue(s.segmentGroup,s.index,i.commands);return re(s.segmentGroup,o,e,a,r)}(d,this.currentUrlTree,t,c,l)}navigateByUrl(t,e={skipLocationChange:!1}){Object(r.isDevMode)()&&this.isNgZoneEnabled&&!r.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");const n=me(t)?t:this.parseUrl(t),a=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(a,"imperative",null,e)}navigate(t,e={skipLocationChange:!1}){return function(t){for(let e=0;e<t.length;e++){const n=t[e];if(null==n)throw new Error(`The requested path contains ${n} segment at index ${e}`)}}(t),this.navigateByUrl(this.createUrlTree(t,e),e)}serializeUrl(t){return this.urlSerializer.serialize(t)}parseUrl(t){let e;try{e=this.urlSerializer.parse(t)}catch(n){e=this.malformedUriErrorHandler(n,this.urlSerializer,t)}return e}isActive(t,e){if(me(t))return _t(this.currentUrlTree,t,e);const n=this.parseUrl(t);return _t(this.currentUrlTree,n,e)}removeEmptyProps(t){return Object.keys(t).reduce((e,n)=>{const a=t[n];return null!=a&&(e[n]=a),e},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.events.next(new H(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,this.currentNavigation=null,t.resolve(!0)},t=>{this.console.warn("Unhandled Navigation Error: ")})}scheduleNavigation(t,e,n,a){const r=this.getTransition();if(r&&"imperative"!==e&&"imperative"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"hashchange"==e&&"popstate"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"popstate"==e&&"hashchange"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);let i=null,s=null;const o=new Promise((t,e)=>{i=t,s=e}),u=++this.navigationId;return this.setTransition({id:u,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:a,resolve:i,reject:s,promise:o,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),o.catch(t=>Promise.reject(t))}setBrowserUrl(t,e,n,a){const r=this.urlSerializer.serialize(t);a=a||{},this.location.isCurrentPathEqualTo(r)||e?this.location.replaceState(r,"",Object.assign({},a,{navigationId:n})):this.location.go(r,"",Object.assign({},a,{navigationId:n}))}resetStateAndUrl(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})}}class on{constructor(t,e,n,a,r){this.router=t,this.route=e,this.commands=[],null==n&&a.setAttribute(r.nativeElement,"tabindex","0")}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated!, use queryParamsHandling instead."),this.preserve=t}onClick(){const t={skipLocationChange:dn(this.skipLocationChange),replaceUrl:dn(this.replaceUrl)};return this.router.navigateByUrl(this.urlTree,t),!0}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:dn(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:dn(this.preserveFragment)})}}class un{constructor(t,e,n){this.router=t,this.route=e,this.locationStrategy=n,this.commands=[],this.subscription=t.events.subscribe(t=>{t instanceof H&&this.updateTargetUrlAndHref()})}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead."),this.preserve=t}ngOnChanges(t){this.updateTargetUrlAndHref()}ngOnDestroy(){this.subscription.unsubscribe()}onClick(t,e,n,a){if(0!==t||e||n||a)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0;const r={skipLocationChange:dn(this.skipLocationChange),replaceUrl:dn(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,r),!1}updateTargetUrlAndHref(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:dn(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:dn(this.preserveFragment)})}}function dn(t){return""===t||!!t}class ln{constructor(t,e,n,a,r){this.router=t,this.element=e,this.renderer=n,this.link=a,this.linkWithHref=r,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.subscription=t.events.subscribe(t=>{t instanceof H&&this.update()})}ngAfterContentInit(){this.links.changes.subscribe(t=>this.update()),this.linksWithHrefs.changes.subscribe(t=>this.update()),this.update()}set routerLinkActive(t){const e=Array.isArray(t)?t:t.split(" ");this.classes=e.filter(t=>!!t)}ngOnChanges(t){this.update()}ngOnDestroy(){this.subscription.unsubscribe()}update(){this.links&&this.linksWithHrefs&&this.router.navigated&&Promise.resolve().then(()=>{const t=this.hasActiveLinks();this.isActive!==t&&(this.isActive=t,this.classes.forEach(e=>{t?this.renderer.addClass(this.element.nativeElement,e):this.renderer.removeClass(this.element.nativeElement,e)}))})}isLinkActive(t){return e=>t.isActive(e.urlTree,this.routerLinkActiveOptions.exact)}hasActiveLinks(){const t=this.isLinkActive(this.router);return this.link&&t(this.link)||this.linkWithHref&&t(this.linkWithHref)||this.links.some(t)||this.linksWithHrefs.some(t)}}class cn{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new fn,this.attachRef=null}}class fn{constructor(){this.contexts=new Map}onChildOutletCreated(t,e){const n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)}onChildOutletDestroyed(t){const e=this.getContext(t);e&&(e.outlet=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let e=this.getContext(t);return e||(e=new cn,this.contexts.set(t,e)),e}getContext(t){return this.contexts.get(t)||null}}class hn{constructor(t,e,n,a,i){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=i,this.activated=null,this._activatedRoute=null,this.activateEvents=new r.EventEmitter,this.deactivateEvents=new r.EventEmitter,this.name=a||"primary",t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,t}attach(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;const n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),a=this.parentContexts.getOrCreateContext(this.name).children,r=new gn(t,a,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,r),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}class gn{constructor(t,e,n){this.route=t,this.childContexts=e,this.parent=n}get(t,e){return t===$t?this.route:t===fn?this.childContexts:this.parent.get(t,e)}}class pn{}class bn{preload(t,e){return e().pipe(Object(w.a)(()=>Object(i.a)(null)))}}class mn{preload(t,e){return Object(i.a)(null)}}class yn{constructor(t,e,n,a,r){this.router=t,this.injector=a,this.preloadingStrategy=r,this.loader=new Xe(e,n,e=>t.triggerEvent(new X(e)),e=>t.triggerEvent(new tt(e)))}setUpPreloading(){this.subscription=this.router.events.pipe(Object(D.a)(t=>t instanceof H),Object(P.a)(()=>this.preload())).subscribe(()=>{})}preload(){const t=this.injector.get(r.NgModuleRef);return this.processRoutes(t,this.router.config)}ngOnDestroy(){this.subscription.unsubscribe()}processRoutes(t,e){const n=[];for(const a of e)if(a.loadChildren&&!a.canLoad&&a._loadedConfig){const t=a._loadedConfig;n.push(this.processRoutes(t.module,t.routes))}else a.loadChildren&&!a.canLoad?n.push(this.preloadConfig(t,a)):a.children&&n.push(this.processRoutes(t,a.children));return Object(s.a)(n).pipe(Object(V.a)(),Object(_.a)(t=>{}))}preloadConfig(t,e){return this.preloadingStrategy.preload(e,()=>this.loader.load(t.injector,e).pipe(Object(I.a)(t=>(e._loadedConfig=t,this.processRoutes(t.module,t.routes)))))}}class vn{constructor(t,e,n={}){this.router=t,this.viewportScroller=e,this.options=n,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},n.scrollPositionRestoration=n.scrollPositionRestoration||"disabled",n.anchorScrolling=n.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof Y?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof H&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof it&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,e){this.router.triggerEvent(new it(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}const xn=new r.InjectionToken("ROUTER_CONFIGURATION"),_n=new r.InjectionToken("ROUTER_FORROOT_GUARD"),Tn=[a.Location,{provide:Nt,useClass:Ct},{provide:sn,useFactory:Rn,deps:[r.ApplicationRef,Nt,fn,a.Location,r.Injector,r.NgModuleFactoryLoader,r.Compiler,Qe,xn,[tn,new r.Optional],[Ze,new r.Optional]]},fn,{provide:$t,useFactory:An,deps:[sn]},{provide:r.NgModuleFactoryLoader,useClass:r.SystemJsNgModuleLoader},yn,mn,bn,{provide:xn,useValue:{enableTracing:!1}}];function On(){return new r.NgProbeToken("Router",sn)}class wn{constructor(t,e){}static forRoot(t,e){return{ngModule:wn,providers:[Tn,Cn(t),{provide:_n,useFactory:Nn,deps:[[sn,new r.Optional,new r.SkipSelf]]},{provide:xn,useValue:e||{}},{provide:a.LocationStrategy,useFactory:In,deps:[a.PlatformLocation,[new r.Inject(a.APP_BASE_HREF),new r.Optional],xn]},{provide:vn,useFactory:Sn,deps:[sn,a.ViewportScroller,xn]},{provide:pn,useExisting:e&&e.preloadingStrategy?e.preloadingStrategy:mn},{provide:r.NgProbeToken,multi:!0,useFactory:On},[kn,{provide:r.APP_INITIALIZER,multi:!0,useFactory:En,deps:[kn]},{provide:Dn,useFactory:Ln,deps:[kn]},{provide:r.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:Dn}]]}}static forChild(t){return{ngModule:wn,providers:[Cn(t)]}}}function Sn(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new vn(t,e,n)}function In(t,e,n={}){return n.useHash?new a.HashLocationStrategy(t,e):new a.PathLocationStrategy(t,e)}function Nn(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function Cn(t){return[{provide:r.ANALYZE_FOR_ENTRY_COMPONENTS,multi:!0,useValue:t},{provide:Qe,multi:!0,useValue:t}]}function Rn(t,e,n,a,r,i,s,o,u={},d,l){const c=new sn(null,e,n,a,r,i,s,mt(o));if(d&&(c.urlHandlingStrategy=d),l&&(c.routeReuseStrategy=l),u.errorHandler&&(c.errorHandler=u.errorHandler),u.malformedUriErrorHandler&&(c.malformedUriErrorHandler=u.malformedUriErrorHandler),u.enableTracing){const t=Object(z.q)();c.events.subscribe(e=>{t.logGroup(`Router Event: ${e.constructor.name}`),t.log(e.toString()),t.log(e),t.logGroupEnd()})}return u.onSameUrlNavigation&&(c.onSameUrlNavigation=u.onSameUrlNavigation),u.paramsInheritanceStrategy&&(c.paramsInheritanceStrategy=u.paramsInheritanceStrategy),u.urlUpdateStrategy&&(c.urlUpdateStrategy=u.urlUpdateStrategy),u.relativeLinkResolution&&(c.relativeLinkResolution=u.relativeLinkResolution),c}function An(t){return t.routerState.root}class kn{constructor(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new x.a}appInitializer(){return this.injector.get(a.LOCATION_INITIALIZED,Promise.resolve(null)).then(()=>{let t=null;const e=new Promise(e=>t=e),n=this.injector.get(sn),a=this.injector.get(xn);if(this.isLegacyDisabled(a)||this.isLegacyEnabled(a))t(!0);else if("disabled"===a.initialNavigation)n.setUpLocationChangeListener(),t(!0);else{if("enabled"!==a.initialNavigation)throw new Error(`Invalid initialNavigation options: '${a.initialNavigation}'`);n.hooks.afterPreactivation=()=>this.initNavigation?Object(i.a)(null):(this.initNavigation=!0,t(!0),this.resultOfPreactivationDone),n.initialNavigation()}return e})}bootstrapListener(t){const e=this.injector.get(xn),n=this.injector.get(yn),a=this.injector.get(vn),i=this.injector.get(sn),s=this.injector.get(r.ApplicationRef);t===s.components[0]&&(this.isLegacyEnabled(e)?i.initialNavigation():this.isLegacyDisabled(e)&&i.setUpLocationChangeListener(),n.setUpPreloading(),a.init(),i.resetRootComponentType(s.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}isLegacyEnabled(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation}isLegacyDisabled(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation}}function En(t){return t.appInitializer.bind(t)}function Ln(t){return t.bootstrapListener.bind(t)}const Dn=new r.InjectionToken("Router Initializer")},iSVu:function(t,e,n){var a=n("xs3f"),r=Function.toString;"function"!=typeof a.inspectSource&&(a.inspectSource=function(t){return r.call(t)}),t.exports=a.inspectSource},iYuL:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},idmN:function(t,e,n){var a=n("ZWtO"),r=n("FZoo"),i=n("4uTw");t.exports=function(t,e,n){for(var s=-1,o=e.length,u={};++s<o;){var d=e[s],l=a(t,d);n(l,d)&&r(u,i(d,t),l)}return u}},ienR:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return q})),n.d(e,"c",(function(){return j})),n.d(e,"d",(function(){return F})),n.d(e,"e",(function(){return G})),n.d(e,"f",(function(){return Y})),n.d(e,"g",(function(){return nt})),n.d(e,"h",(function(){return H})),n.d(e,"i",(function(){return z})),n.d(e,"j",(function(){return V})),n.d(e,"k",(function(){return B})),n.d(e,"l",(function(){return b})),n.d(e,"m",(function(){return st})),n.d(e,"n",(function(){return rt})),n.d(e,"o",(function(){return it})),n.d(e,"p",(function(){return lt})),n.d(e,"q",(function(){return ot})),n.d(e,"r",(function(){return ut})),n.d(e,"s",(function(){return dt})),n.d(e,"t",(function(){return M})),n.d(e,"u",(function(){return m})),n.d(e,"v",(function(){return p})),n.d(e,"w",(function(){return U})),n.d(e,"x",(function(){return W})),n.d(e,"y",(function(){return K})),n.d(e,"z",(function(){return $})),n.d(e,"A",(function(){return J})),n.d(e,"B",(function(){return Q})),n.d(e,"C",(function(){return X})),n.d(e,"D",(function(){return tt})),n.d(e,"E",(function(){return et}));var a=n("8Y7J"),r=n("pLZG"),i=n("lJxs"),s=n("IzEk"),o=n("xj/R"),u=n("2Vo4"),d=n("AfCQ"),l=n("2uy1"),c=(n("GS7A"),n("z/SZ")),f=(n("s7LF"),n("hpHm"));class h{constructor(){this.adaptivePosition=!1,this.useUtc=!1,this.isAnimated=!1,this.containerClass="theme-green",this.displayMonths=1,this.showWeekNumbers=!0,this.dateInputFormat="L",this.rangeSeparator=" - ",this.rangeInputFormat="L",this.monthTitle="MMMM",this.yearTitle="YYYY",this.dayLabel="D",this.monthLabel="MMMM",this.yearLabel="YYYY",this.weekNumbers="w"}}class g{constructor(){this._customRangesFish=[]}set minDate(t){this._effects.setMinDate(t)}set maxDate(t){this._effects.setMaxDate(t)}set daysDisabled(t){this._effects.setDaysDisabled(t)}set datesDisabled(t){this._effects.setDatesDisabled(t)}set isDisabled(t){this._effects.setDisabled(t)}set dateCustomClasses(t){this._effects.setDateCustomClasses(t)}setViewMode(t){}navigateTo(t){}dayHoverHandler(t){}weekHoverHandler(t){}monthHoverHandler(t){}yearHoverHandler(t){}daySelectHandler(t){}monthSelectHandler(t){}yearSelectHandler(t){}_stopPropagation(t){t.stopPropagation()}}let p=(()=>{class t{calculate(){return{type:t.CALCULATE}}format(){return{type:t.FORMAT}}flag(){return{type:t.FLAG}}select(e){return{type:t.SELECT,payload:e}}changeViewMode(e){return{type:t.CHANGE_VIEWMODE,payload:e}}navigateTo(e){return{type:t.NAVIGATE_TO,payload:e}}navigateStep(e){return{type:t.NAVIGATE_OFFSET,payload:e}}setOptions(e){return{type:t.SET_OPTIONS,payload:e}}selectRange(e){return{type:t.SELECT_RANGE,payload:e}}hoverDay(e){return{type:t.HOVER,payload:e.isHovered?e.cell.date:null}}minDate(e){return{type:t.SET_MIN_DATE,payload:e}}maxDate(e){return{type:t.SET_MAX_DATE,payload:e}}daysDisabled(e){return{type:t.SET_DAYSDISABLED,payload:e}}datesDisabled(e){return{type:t.SET_DATESDISABLED,payload:e}}isDisabled(e){return{type:t.SET_IS_DISABLED,payload:e}}setDateCustomClasses(e){return{type:t.SET_DATE_CUSTOM_CLASSES,payload:e}}setLocale(e){return{type:t.SET_LOCALE,payload:e}}}return t.CALCULATE="[datepicker] calculate dates matrix",t.FORMAT="[datepicker] format datepicker values",t.FLAG="[datepicker] set flags",t.SELECT="[datepicker] select date",t.NAVIGATE_OFFSET="[datepicker] shift view date",t.NAVIGATE_TO="[datepicker] change view date",t.SET_OPTIONS="[datepicker] update render options",t.HOVER="[datepicker] hover date",t.CHANGE_VIEWMODE="[datepicker] switch view mode",t.SET_MIN_DATE="[datepicker] set min date",t.SET_MAX_DATE="[datepicker] set max date",t.SET_DAYSDISABLED="[datepicker] set days disabled",t.SET_DATESDISABLED="[datepicker] set dates disabled",t.SET_IS_DISABLED="[datepicker] set is disabled",t.SET_DATE_CUSTOM_CLASSES="[datepicker] set date custom classes",t.SET_LOCALE="[datepicker] set datepicker locale",t.SELECT_RANGE="[daterangepicker] select dates range",t})();class b{constructor(){this._defaultLocale="en",this._locale=new u.a(this._defaultLocale),this._localeChange=this._locale.asObservable()}get locale(){return this._locale}get localeChange(){return this._localeChange}get currentLocale(){return this._locale.getValue()}use(t){t!==this.currentLocale&&this._locale.next(t)}}class m{constructor(t,e){this._actions=t,this._localeService=e,this._subs=[]}init(t){return this._store=t,this}setValue(t){this._store.dispatch(this._actions.select(t))}setRangeValue(t){this._store.dispatch(this._actions.selectRange(t))}setMinDate(t){return this._store.dispatch(this._actions.minDate(t)),this}setMaxDate(t){return this._store.dispatch(this._actions.maxDate(t)),this}setDaysDisabled(t){return this._store.dispatch(this._actions.daysDisabled(t)),this}setDatesDisabled(t){return this._store.dispatch(this._actions.datesDisabled(t)),this}setDisabled(t){return this._store.dispatch(this._actions.isDisabled(t)),this}setDateCustomClasses(t){return this._store.dispatch(this._actions.setDateCustomClasses(t)),this}setOptions(t){const e=Object.assign({locale:this._localeService.currentLocale},t);return this._store.dispatch(this._actions.setOptions(e)),this}setBindings(t){return t.daysCalendar=this._store.select(t=>t.flaggedMonths).pipe(Object(r.a)(t=>!!t)),t.monthsCalendar=this._store.select(t=>t.flaggedMonthsCalendar).pipe(Object(r.a)(t=>!!t)),t.yearsCalendar=this._store.select(t=>t.yearsCalendarFlagged).pipe(Object(r.a)(t=>!!t)),t.viewMode=this._store.select(t=>t.view.mode),t.options=this._store.select(t=>t.showWeekNumbers).pipe(Object(i.a)(t=>({showWeekNumbers:t}))),this}setEventHandlers(t){return t.setViewMode=t=>{this._store.dispatch(this._actions.changeViewMode(t))},t.navigateTo=t=>{this._store.dispatch(this._actions.navigateStep(t.step))},t.dayHoverHandler=t=>{const e=t.cell;e.isOtherMonth||e.isDisabled||(this._store.dispatch(this._actions.hoverDay(t)),e.isHovered=t.isHovered)},t.monthHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.yearHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.monthSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{month:Object(o.l)(t.date),year:Object(o.j)(t.date)},viewMode:"day"}))},t.yearSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{year:Object(o.j)(t.date)},viewMode:"month"}))},this}registerDatepickerSideEffects(){return this._subs.push(this._store.select(t=>t.view).subscribe(t=>{this._store.dispatch(this._actions.calculate())})),this._subs.push(this._store.select(t=>t.monthsModel).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.format()))),this._subs.push(this._store.select(t=>t.formattedMonths).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedRange).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.monthsCalendar).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.yearsCalendarModel).pipe(Object(r.a)(t=>!!t)).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.hoveredDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.dateCustomClasses).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._localeService.localeChange.subscribe(t=>this._store.dispatch(this._actions.setLocale(t)))),this}destroy(){for(const t of this._subs)t.unsubscribe()}}const y={date:new Date,mode:"day"},v=Object.assign(new h,{locale:"en",view:y,selectedRange:[],monthViewOptions:{width:7,height:6}});function x(t,e,n){const a=e&&Object(o.p)(Object(o.d)(t,"month"),e,"day"),r=n&&Object(o.n)(Object(o.G)(t,"month"),n,"day");return a||r}function _(t,e,n){const a=e&&Object(o.p)(Object(o.d)(t,"year"),e,"day"),r=n&&Object(o.n)(Object(o.G)(t,"year"),n,"day");return a||r}function T(t,e=0){const n=t&&t.yearsCalendarModel&&t.yearsCalendarModel[e];return n&&n.years&&n.years[0]&&n.years[0][0]&&n.years[0][0].date}function O(t,e){let n=t.initialDate;const a=new Array(t.height);for(let r=0;r<t.height;r++){a[r]=new Array(t.width);for(let i=0;i<t.width;i++)a[r][i]=e(n),n=Object(o.F)(n,t.shift)}return a}function w(t,e){const n=Object(o.i)(t),a=function(t,e){if(Object(o.t)(t,e.firstDayOfWeek))return t;const n=function(t,e){if(0===e)return t;const n=t-e%7;return n<0?n+7:n}(Object(o.h)(t),e.firstDayOfWeek);return Object(o.F)(t,{day:-n})}(n,e);return{daysMatrix:O({width:e.width,height:e.height,initialDate:a,shift:{day:1}},t=>t),month:n}}function S(t){const e=Object(o.k)(t),n=e.weekdaysShort(),a=e.firstDayOfWeek();return[...n.slice(a),...n.slice(0,a)]}function I(t,e){return!e||t>=e}const N={month:1};function C(t,e){return{months:O({width:3,height:4,initialDate:Object(o.G)(t,"year"),shift:N},t=>({date:t,label:Object(o.f)(t,e.monthLabel,e.locale)})),monthTitle:"",yearTitle:Object(o.f)(t,e.yearTitle,e.locale)}}const R=-1*(Math.floor(8)-1),A={year:1};function k(t,e,n){const a=O({width:4,height:4,initialDate:function(t,e){return e&&t.getFullYear()>=e.getFullYear()&&t.getFullYear()<e.getFullYear()+16?e:Object(o.F)(t,{year:R})}(t,n),shift:A},t=>({date:t,label:Object(o.f)(t,e.yearLabel,e.locale)}));return{years:a,monthTitle:"",yearTitle:function(t,e){return`${Object(o.f)(t[0][0].date,e.yearTitle,e.locale)} - ${Object(o.f)(t[3][3].date,e.yearTitle,e.locale)}`}(a,e)}}function E(t=v,e){switch(e.type){case p.CALCULATE:return function(t){const e=t.displayMonths;let n=t.view.date;if("day"===t.view.mode){t.showPreviousMonth&&0===t.selectedRange.length&&(n=Object(o.F)(n,{month:-1})),t.monthViewOptions.firstDayOfWeek=Object(o.k)(t.locale).firstDayOfWeek();const a=new Array(e);for(let r=0;r<e;r++)a[r]=w(n,t.monthViewOptions),n=Object(o.F)(n,{month:1});return Object.assign({},t,{monthsModel:a})}if("month"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=C(n,D(t)),n=Object(o.F)(n,{year:1});return Object.assign({},t,{monthsCalendar:a})}if("year"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=k(n,D(t),"year"===t.minMode?T(t,r):void 0),n=Object(o.F)(n,{year:16});return Object.assign({},t,{yearsCalendarModel:a})}return t}(t);case p.FORMAT:return function(t,e){if("day"===t.view.mode){const e=t.monthsModel.map((e,n)=>function(t,e,n){return{month:t.month,monthTitle:Object(o.f)(t.month,e.monthTitle,e.locale),yearTitle:Object(o.f)(t.month,e.yearTitle,e.locale),weekNumbers:(a=t.daysMatrix,r=e.weekNumbers,i=e.locale,a.map(t=>t[0]?Object(o.f)(t[0],r,i):"")),weekdays:S(e.locale),weeks:t.daysMatrix.map((t,a)=>({days:t.map((t,r)=>({date:t,label:Object(o.f)(t,e.dayLabel,e.locale),monthIndex:n,weekIndex:a,dayIndex:r}))}))};var a,r,i}(e,D(t),n));return Object.assign({},t,{formattedMonths:e})}const n=t.displayMonths;let a=t.view.date;if("month"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=C(a,D(t)),a=Object(o.F)(a,{year:1});return Object.assign({},t,{monthsCalendar:e})}if("year"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=k(a,D(t)),a=Object(o.F)(a,{year:16});return Object.assign({},t,{yearsCalendarModel:e})}return t}(t);case p.FLAG:return function(t,e){if("day"===t.view.mode){const e=t.formattedMonths.map((e,n)=>function(t,e){return t.weeks.forEach(n=>{n.days.forEach((a,r)=>{const i=!Object(o.w)(a.date,t.month),s=!i&&Object(o.v)(a.date,e.hoveredDate),u=!i&&e.selectedRange&&Object(o.v)(a.date,e.selectedRange[0]),d=!i&&e.selectedRange&&Object(o.v)(a.date,e.selectedRange[1]),l=!i&&Object(o.v)(a.date,e.selectedDate)||u||d,c=!i&&e.selectedRange&&function(t,e,n){return!(!t||!e[0])&&(e[1]?t>e[0]&&t<=e[1]:!!n&&t>e[0]&&t<=n)}(a.date,e.selectedRange,e.hoveredDate),f=e.isDisabled||Object(o.p)(a.date,e.minDate,"day")||Object(o.n)(a.date,e.maxDate,"day")||Object(o.s)(a.date,e.daysDisabled)||(h=a.date,!(void 0===(g=e.datesDisabled)||!g||!g.length)&&g.some(t=>Object(o.u)(h,t,"date")));var h,g;const p=new Date,b=!i&&Object(o.v)(a.date,p),m=e.dateCustomClasses&&e.dateCustomClasses.map(t=>Object(o.v)(a.date,t.date)?t.classes:[]).reduce((t,e)=>t.concat(e),[]).join(" ")||"",y=Object.assign({},a,{isOtherMonth:i,isHovered:s,isSelected:l,isSelectionStart:u,isSelectionEnd:d,isInRange:c,isDisabled:f,isToday:b,customClasses:m});a.isOtherMonth===y.isOtherMonth&&a.isHovered===y.isHovered&&a.isSelected===y.isSelected&&a.isSelectionStart===y.isSelectionStart&&a.isSelectionEnd===y.isSelectionEnd&&a.isDisabled===y.isDisabled&&a.isInRange===y.isInRange&&a.customClasses===y.customClasses||(n.days[r]=y)})}),t.hideLeftArrow=e.isDisabled||e.monthIndex>0&&e.monthIndex!==e.displayMonths,t.hideRightArrow=e.isDisabled||e.monthIndex<e.displayMonths&&e.monthIndex+1!==e.displayMonths,t.disableLeftArrow=x(Object(o.F)(t.month,{month:-1}),e.minDate,e.maxDate),t.disableRightArrow=x(Object(o.F)(t.month,{month:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,daysDisabled:t.daysDisabled,datesDisabled:t.datesDisabled,hoveredDate:t.hoveredDate,selectedDate:t.selectedDate,selectedRange:t.selectedRange,displayMonths:t.displayMonths,dateCustomClasses:t.dateCustomClasses,monthIndex:n}));return Object.assign({},t,{flaggedMonths:e})}if("month"===t.view.mode){const e=t.monthsCalendar.map((e,n)=>{return r={isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredMonth:t.hoveredMonth,selectedDate:t.selectedDate,displayMonths:t.displayMonths,monthIndex:n},(a=e).months.forEach((t,e)=>{t.forEach((t,n)=>{const i=Object(o.w)(t.date,r.hoveredMonth),s=r.isDisabled||x(t.date,r.minDate,r.maxDate),u=Object(o.w)(t.date,r.selectedDate),d=Object.assign(t,{isHovered:i,isDisabled:s,isSelected:u});t.isHovered===d.isHovered&&t.isDisabled===d.isDisabled&&t.isSelected===d.isSelected||(a.months[e][n]=d)})}),a.hideLeftArrow=r.monthIndex>0&&r.monthIndex!==r.displayMonths,a.hideRightArrow=r.monthIndex<r.displayMonths&&r.monthIndex+1!==r.displayMonths,a.disableLeftArrow=_(Object(o.F)(a.months[0][0].date,{year:-1}),r.minDate,r.maxDate),a.disableRightArrow=_(Object(o.F)(a.months[0][0].date,{year:1}),r.minDate,r.maxDate),a;var a,r});return Object.assign({},t,{flaggedMonthsCalendar:e})}if("year"===t.view.mode){const e=t.yearsCalendarModel.map((e,n)=>function(t,e){t.years.forEach((n,a)=>{n.forEach((n,r)=>{const i=Object(o.x)(n.date,e.hoveredYear),s=e.isDisabled||_(n.date,e.minDate,e.maxDate),u=Object(o.x)(n.date,e.selectedDate),d=Object.assign(n,{isHovered:i,isDisabled:s,isSelected:u});n.isHovered===d.isHovered&&n.isDisabled===d.isDisabled&&n.isSelected===d.isSelected||(t.years[a][r]=d)})}),t.hideLeftArrow=e.yearIndex>0&&e.yearIndex!==e.displayMonths,t.hideRightArrow=e.yearIndex<e.displayMonths&&e.yearIndex+1!==e.displayMonths,t.disableLeftArrow=_(Object(o.F)(t.years[0][0].date,{year:-1}),e.minDate,e.maxDate);const n=t.years.length-1,a=t.years[n].length-1;return t.disableRightArrow=_(Object(o.F)(t.years[n][a].date,{year:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredYear:t.hoveredYear,selectedDate:t.selectedDate,displayMonths:t.displayMonths,yearIndex:n}));return Object.assign({},t,{yearsCalendarFlagged:e})}return t}(t);case p.NAVIGATE_OFFSET:return function(t,e){const n={view:{mode:t.view.mode,date:L(t,e)}};return Object.assign({},t,n)}(t,e);case p.NAVIGATE_TO:{const n=e.payload,a=Object(o.E)(t.view.date,n.unit);let r,i;return I(n.viewMode,t.minMode)?(i=n.viewMode,r={view:{date:a,mode:i}}):(i=t.view.mode,r={selectedDate:a,view:{date:a,mode:i}}),Object.assign({},t,r)}case p.CHANGE_VIEWMODE:return I(e.payload,t.minMode)?Object.assign({},t,{view:{date:t.view.date,mode:e.payload}}):t;case p.HOVER:return Object.assign({},t,{hoveredDate:e.payload});case p.SELECT:{const n={selectedDate:e.payload,view:t.view},a=t.view.mode,r=P(e.payload||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_OPTIONS:{const n=e.payload,a=n.minMode?n.minMode:t.view.mode,r=P(Object(o.r)(n.value)&&n.value||Object(o.o)(n.value)&&Object(o.r)(n.value[0])&&n.value[0]||t.view.date,n.minDate,n.maxDate);return n.view={mode:a,date:r},n.value&&(Object(o.o)(n.value)&&(n.selectedRange=n.value),n.value instanceof Date&&(n.selectedDate=n.value)),Object.assign({},t,n)}case p.SELECT_RANGE:{const n={selectedRange:e.payload,view:t.view},a=t.view.mode,r=P(e.payload&&e.payload[0]||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_MIN_DATE:return Object.assign({},t,{minDate:e.payload});case p.SET_MAX_DATE:return Object.assign({},t,{maxDate:e.payload});case p.SET_IS_DISABLED:return Object.assign({},t,{isDisabled:e.payload});case p.SET_DATE_CUSTOM_CLASSES:return Object.assign({},t,{dateCustomClasses:e.payload});default:return t}}function L(t,e){if("year"===t.view.mode&&"year"===t.minMode){const n=T(t,0),a=Object(o.F)(n,{year:-R});return Object(o.F)(a,e.payload)}return Object(o.F)(Object(o.G)(t.view.date,"month"),e.payload)}function D(t){return{locale:t.locale,monthTitle:t.monthTitle,yearTitle:t.yearTitle,dayLabel:t.dayLabel,monthLabel:t.monthLabel,yearLabel:t.yearLabel,weekNumbers:t.weekNumbers}}function P(t,e,n){const a=Array.isArray(t)?t[0]:t;return e&&Object(o.n)(e,a,"day")?e:n&&Object(o.p)(n,a,"day")?n:a}class M extends d.b{constructor(){const t=new u.a({type:"[datepicker] dispatcher init"});super(t,E,new d.a(v,t,E))}}class q extends g{constructor(t,e,n,r,i,s,o){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=o,this.valueChange=new a.EventEmitter,this.animationState="void",this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.isOtherMonthsActive=this._config.selectFromOtherMonth,this.containerClass=this._config.containerClass,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedDate).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||this._store.dispatch(this._actions.select(t.date))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class j{constructor(t,e,n,r,i){this._config=t,this.placement="bottom",this.triggers="click",this.outsideClick=!0,this.container="body",this.outsideEsc=!0,this.bsValueChange=new a.EventEmitter,this._subs=[],Object.assign(this,this._config),this._datepicker=i.createLoader(e,r,n),this.onShown=this._datepicker.onShown,this.onHidden=this._datepicker.onHidden}get isOpen(){return this._datepicker.isShown}set isOpen(t){t?this.show():this.hide()}set bsValue(t){this._bsValue&&t&&this._bsValue.getTime()===t.getTime()||(this._bsValue=t,this.bsValueChange.emit(t))}ngOnInit(){this._datepicker.listen({outsideClick:this.outsideClick,outsideEsc:this.outsideEsc,triggers:this.triggers,show:()=>this.show()}),this.setConfig()}ngOnChanges(t){this._datepickerRef&&this._datepickerRef.instance&&(t.minDate&&(this._datepickerRef.instance.minDate=this.minDate),t.maxDate&&(this._datepickerRef.instance.maxDate=this.maxDate),t.daysDisabled&&(this._datepickerRef.instance.daysDisabled=this.daysDisabled),t.datesDisabled&&(this._datepickerRef.instance.datesDisabled=this.datesDisabled),t.isDisabled&&(this._datepickerRef.instance.isDisabled=this.isDisabled),t.dateCustomClasses&&(this._datepickerRef.instance.dateCustomClasses=this.dateCustomClasses))}show(){this._datepicker.isShown||(this.setConfig(),this._datepickerRef=this._datepicker.provide({provide:h,useValue:this._config}).attach(q).to(this.container).position({attachment:this.placement}).show({placement:this.placement}),this._subs.push(this.bsValueChange.subscribe(t=>{this._datepickerRef.instance.value=t})),this._subs.push(this._datepickerRef.instance.valueChange.subscribe(t=>{this.bsValue=t,this.hide()})))}hide(){this.isOpen&&this._datepicker.hide();for(const t of this._subs)t.unsubscribe()}toggle(){if(this.isOpen)return this.hide();this.show()}setConfig(){this._config=Object.assign({},this._config,this.bsConfig,{value:this._bsValue,isDisabled:this.isDisabled,minDate:this.minDate||this.bsConfig&&this.bsConfig.minDate,maxDate:this.maxDate||this.bsConfig&&this.bsConfig.maxDate,daysDisabled:this.daysDisabled||this.bsConfig&&this.bsConfig.daysDisabled,dateCustomClasses:this.dateCustomClasses||this.bsConfig&&this.bsConfig.dateCustomClasses,datesDisabled:this.datesDisabled||this.bsConfig&&this.bsConfig.datesDisabled,minMode:this.minMode||this.bsConfig&&this.bsConfig.minMode})}ngOnDestroy(){this._datepicker.dispose()}}class F extends h{}class G extends q{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class V extends h{constructor(){super(...arguments),this.displayMonths=2,this.isAnimated=!1}}class z extends g{constructor(t,e,n,r,i,s,o){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=o,this.valueChange=new a.EventEmitter,this.animationState="void",this._rangeStack=[],this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setRangeValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.containerClass=this._config.containerClass,this.isOtherMonthsActive=this._config.selectFromOtherMonth,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedRange).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||(1===this._rangeStack.length&&(this._rangeStack=t.date>=this._rangeStack[0]?[this._rangeStack[0],t.date]:[t.date]),0===this._rangeStack.length&&(this._rangeStack=[t.date]),this._store.dispatch(this._actions.selectRange(this._rangeStack)),2===this._rangeStack.length&&(this._rangeStack=[]))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class B extends z{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class Y{constructor(t,e,n,a,r){this._picker=t,this._localeService=e,this._renderer=n,this._elRef=a,this.changeDetection=r,this._onChange=Function.prototype,this._onTouched=Function.prototype,this._validatorChange=Function.prototype,this._picker.bsValueChange.subscribe(t=>{let e=t;if(t){const n=this._localeService.currentLocale,a=Object(o.k)(n);if(!a)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);e=a.preinput(t)}this._setInputValue(e),this._value!==e&&(this._value=e,this._onChange(e),this._onTouched()),this.changeDetection.markForCheck()}),this._localeService.localeChange.subscribe(()=>{this._setInputValue(this._value)})}_setInputValue(t){const e=t?Object(o.f)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale):"";this._renderer.setProperty(this._elRef.nativeElement,"value",e)}onChange(t){this.writeValue(t.target.value),this._onChange(this._value),this._onTouched()}validate(t){const e=t.value;if(null==e||""===e)return null;if(Object(o.q)(e)){if(!Object(o.r)(e))return{bsDate:{invalid:e}};if(this._picker&&this._picker.minDate&&Object(o.p)(e,this._picker.minDate,"date"))return this.writeValue(this._picker.minDate),{bsDate:{minDate:this._picker.minDate}};if(this._picker&&this._picker.maxDate&&Object(o.n)(e,this._picker.maxDate,"date"))return this.writeValue(this._picker.maxDate),{bsDate:{maxDate:this._picker.maxDate}}}}registerOnValidatorChange(t){this._validatorChange=t}writeValue(t){if(t){const e=this._localeService.currentLocale;if(!Object(o.k)(e))throw new Error(`Locale "${e}" is not defined, please add it with "defineLocale(...)"`);this._value=Object(o.B)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale),this._picker._config.useUtc&&(this._value=Object(o.H)(this._value))}else this._value=null;this._picker.bsValue=this._value}setDisabledState(t){this._picker.isDisabled=t,t?this._renderer.setAttribute(this._elRef.nativeElement,"disabled","disabled"):this._renderer.removeAttribute(this._elRef.nativeElement,"disabled")}registerOnChange(t){this._onChange=t}registerOnTouched(t){this._onTouched=t}onBlur(){this._onTouched()}hide(){this._picker.hide(),this._renderer.selectRootElement(this._elRef.nativeElement).blur()}}class H extends h{constructor(){super(...arguments),this.displayMonths=2}}class U{}class W{}class K{}class ${constructor(t,e,n){this._config=t,this._elRef=e,this._renderer=n}ngOnInit(){this.day.isToday&&this._config&&this._config.customTodayClass&&this._renderer.addClass(this._elRef.nativeElement,this._config.customTodayClass),"string"==typeof this.day.customClasses&&this.day.customClasses.split(" ").filter(t=>t).forEach(t=>{this._renderer.addClass(this._elRef.nativeElement,t)})}}const Z=function(){var t={UP:0,DOWN:1};return t[t.UP]="UP",t[t.DOWN]="DOWN",t}();class J{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter}navTo(t){this.onNavigate.emit(t?Z.DOWN:Z.UP)}view(t){this.onViewMode.emit(t)}}class Q{constructor(t){this._config=t,this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter,this.onHoverWeek=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{month:Z.DOWN===t?-1:1}})}changeViewMode(t){this.onViewMode.emit(t)}selectDay(t){this.onSelect.emit(t)}selectWeek(t){if(!this._config.selectWeek)return;if(t.days&&t.days[0]&&!t.days[0].isDisabled&&this._config.selectFromOtherMonth)return void this.onSelect.emit(t.days[0]);if(0===t.days.length)return;const e=t.days.find(t=>this._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled);this.onSelect.emit(e)}weekHoverHandler(t,e){this._config.selectWeek&&t.days.find(t=>this._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled)&&(t.isHovered=e,this.isWeekHovered=e,this.onHoverWeek.emit(t))}hoverDay(t,e){this._config.selectFromOtherMonth&&t.isOtherMonth&&(t.isOtherMonthHovered=e),this.onHover.emit({cell:t,isHovered:e})}}class X{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:Z.DOWN===t?-1:1}})}viewMonth(t){this.onSelect.emit(t)}hoverMonth(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class tt{constructor(){this.ampm="ok",this.hours=0,this.minutes=0}}class et{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:16*(Z.DOWN===t?-1:1)}})}viewYear(t){this.onSelect.emit(t)}hoverYear(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class nt{static forRoot(){return{ngModule:nt,providers:[c.a,l.a,M,p,h,H,F,V,m,b]}}}class at{format(t,e,n){return Object(o.f)(t,e,n)}}class rt{constructor(){this.selectionDone=new a.EventEmitter(void 0),this.update=new a.EventEmitter(!1),this.activeDateChange=new a.EventEmitter(void 0),this.stepDay={},this.stepMonth={},this.stepYear={},this.modes=["day","month","year"],this.dateFormatter=new at}get activeDate(){return this._activeDate}set activeDate(t){this._activeDate=t}ngOnInit(){this.uniqueId=`datepicker--${Math.floor(1e4*Math.random())}`,this.initDate?(this.activeDate=this.initDate,this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate)):void 0===this.activeDate&&(this.activeDate=new Date)}ngOnChanges(t){this.refreshView(),this.checkIfActiveDateGotUpdated(t.activeDate)}checkIfActiveDateGotUpdated(t){if(t&&!t.firstChange){const e=t.previousValue;e&&e instanceof Date&&e.getTime()!==t.currentValue.getTime()&&this.activeDateChange.emit(this.activeDate)}}setCompareHandler(t,e){"day"===e&&(this.compareHandlerDay=t),"month"===e&&(this.compareHandlerMonth=t),"year"===e&&(this.compareHandlerYear=t)}compare(t,e){if(void 0!==t&&void 0!==e)return"day"===this.datepickerMode&&this.compareHandlerDay?this.compareHandlerDay(t,e):"month"===this.datepickerMode&&this.compareHandlerMonth?this.compareHandlerMonth(t,e):"year"===this.datepickerMode&&this.compareHandlerYear?this.compareHandlerYear(t,e):void 0}setRefreshViewHandler(t,e){"day"===e&&(this.refreshViewHandlerDay=t),"month"===e&&(this.refreshViewHandlerMonth=t),"year"===e&&(this.refreshViewHandlerYear=t)}refreshView(){"day"===this.datepickerMode&&this.refreshViewHandlerDay&&this.refreshViewHandlerDay(),"month"===this.datepickerMode&&this.refreshViewHandlerMonth&&this.refreshViewHandlerMonth(),"year"===this.datepickerMode&&this.refreshViewHandlerYear&&this.refreshViewHandlerYear()}dateFilter(t,e){return this.dateFormatter.format(t,e,this.locale)}isActive(t){return 0===this.compare(t.date,this.activeDate)&&(this.activeDateId=t.uid,!0)}createDateObject(t,e){const n={};return n.date=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n.date=this.fixTimeZone(n.date),n.label=this.dateFilter(t,e),n.selected=0===this.compare(t,this.selectedDate),n.disabled=this.isDisabled(t),n.current=0===this.compare(t,new Date),n.customClass=this.getCustomClassForDate(n.date),n}split(t,e){const n=[];for(;t.length>0;)n.push(t.splice(0,e));return n}fixTimeZone(t){const e=t.getHours();return new Date(t.getFullYear(),t.getMonth(),t.getDate(),23===e?e+2:0)}select(t,e=!0){this.datepickerMode===this.minMode?(this.activeDate||(this.activeDate=new Date(0,0,0,0,0,0,0)),this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&this.selectionDone.emit(this.activeDate)):(this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)-1])),this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate),this.refreshView()}move(t){let e;if("day"===this.datepickerMode&&(e=this.stepDay),"month"===this.datepickerMode&&(e=this.stepMonth),"year"===this.datepickerMode&&(e=this.stepYear),e){const n=this.activeDate.getFullYear()+t*(e.years||0),a=this.activeDate.getMonth()+t*(e.months||0);this.activeDate=new Date(n,a,1),this.refreshView(),this.activeDateChange.emit(this.activeDate)}}toggleMode(t){const e=t||1;this.datepickerMode===this.maxMode&&1===e||this.datepickerMode===this.minMode&&-1===e||(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)+e],this.refreshView())}getCustomClassForDate(t){if(!this.customClass)return"";const e=this.customClass.find(e=>e.date.valueOf()===t.valueOf()&&e.mode===this.datepickerMode,this);return void 0===e?"":e.clazz}compareDateDisabled(t,e){if(void 0!==t&&void 0!==e)return"day"===t.mode&&this.compareHandlerDay?this.compareHandlerDay(t.date,e):"month"===t.mode&&this.compareHandlerMonth?this.compareHandlerMonth(t.date,e):"year"===t.mode&&this.compareHandlerYear?this.compareHandlerYear(t.date,e):void 0}isDisabled(t){let e=!1;return this.dateDisabled&&this.dateDisabled.forEach(n=>{0===this.compareDateDisabled(n,t)&&(e=!0)}),this.dayDisabled&&(e=e||this.dayDisabled.indexOf(t.getDay())>-1),e||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0}}class it{constructor(){this.locale="en",this.datepickerMode="day",this.startingDay=0,this.yearRange=20,this.minMode="day",this.maxMode="year",this.showWeeks=!0,this.formatDay="DD",this.formatMonth="MMMM",this.formatYear="YYYY",this.formatDayHeader="dd",this.formatDayTitle="MMMM YYYY",this.formatMonthTitle="YYYY",this.onlyCurrentMonth=!1,this.monthColLimit=3,this.yearColLimit=5,this.shortcutPropagation=!1}}class st{constructor(t){this.datepickerMode="day",this.showWeeks=!0,this.selectionDone=new a.EventEmitter(void 0),this.activeDateChange=new a.EventEmitter(void 0),this.onChange=Function.prototype,this.onTouched=Function.prototype,this._now=new Date,this.config=t,this.configureOptions()}get activeDate(){return this._activeDate||this._now}set activeDate(t){this._activeDate=t}configureOptions(){Object.assign(this,this.config)}onUpdate(t){this.activeDate=t,this.onChange(t)}onSelectionDone(t){this.selectionDone.emit(t)}onActiveDateChange(t){this.activeDateChange.emit(t)}writeValue(t){if(0!==this._datePicker.compare(t,this._activeDate))return t&&t instanceof Date?(this.activeDate=t,void this._datePicker.select(t,!1)):void(this.activeDate=t?new Date(t):void 0)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}}class ot{constructor(t){this.labels=[],this.rows=[],this.weekNumbers=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepDay={months:1},this.datePicker.setRefreshViewHandler((function(){const e=this.activeDate.getFullYear(),n=this.activeDate.getMonth(),a=new Date(e,n,1),r=this.startingDay-a.getDay(),i=r>0?7-r:-r,s=new Date(a.getTime());i>0&&s.setDate(1-i);const o=t.getDates(s,42),u=[];for(let t=0;t<42;t++){const e=this.createDateObject(o[t],this.formatDay);e.secondary=o[t].getMonth()!==n,e.uid=this.uniqueId+"-"+t,u[t]=e}t.labels=[];for(let d=0;d<7;d++)t.labels[d]={},t.labels[d].abbr=this.dateFilter(u[d].date,this.formatDayHeader),t.labels[d].full=this.dateFilter(u[d].date,"EEEE");if(t.title=this.dateFilter(this.activeDate,this.formatDayTitle),t.rows=this.split(u,7),this.showWeeks){t.weekNumbers=[];const e=(11-this.startingDay)%7,n=t.rows.length;for(let a=0;a<n;a++)t.weekNumbers.push(t.getISO8601WeekNumber(t.rows[a][e].date))}}),"day"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),a=new Date(e.getFullYear(),e.getMonth(),e.getDate());return n.getTime()-a.getTime()}),"day"),this.datePicker.refreshView()}getDates(t,e){const n=new Array(e);let a,r=new Date(t.getTime()),i=0;for(;i<e;)a=new Date(r.getTime()),a=this.datePicker.fixTimeZone(a),n[i++]=a,r=new Date(a.getFullYear(),a.getMonth(),a.getDate()+1);return n}getISO8601WeekNumber(t){const e=new Date(t.getTime());e.setDate(e.getDate()+4-(e.getDay()||7));const n=e.getTime();return e.setMonth(0),e.setDate(1),Math.floor(Math.round((n-e.getTime())/864e5)/7)+1}}class ut{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepMonth={years:1},this.datePicker.setRefreshViewHandler((function(){const e=new Array(12),n=this.activeDate.getFullYear();let a;for(let t=0;t<12;t++)a=new Date(n,t,1),a=this.fixTimeZone(a),e[t]=this.createDateObject(a,this.formatMonth),e[t].uid=this.uniqueId+"-"+t;t.title=this.dateFilter(this.activeDate,this.formatMonthTitle),t.rows=this.split(e,t.datePicker.monthColLimit)}),"month"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth()),a=new Date(e.getFullYear(),e.getMonth());return n.getTime()-a.getTime()}),"month"),this.datePicker.refreshView()}}class dt{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepYear={years:this.datePicker.yearRange},this.datePicker.setRefreshViewHandler((function(){const e=new Array(this.yearRange);let n;const a=t.getStartingYear(this.activeDate.getFullYear());for(let t=0;t<this.yearRange;t++)n=new Date(a+t,0,1),n=this.fixTimeZone(n),e[t]=this.createDateObject(n,this.formatYear),e[t].uid=this.uniqueId+"-"+t;t.title=[e[0].label,e[this.yearRange-1].label].join(" - "),t.rows=this.split(e,t.datePicker.yearColLimit)}),"year"),this.datePicker.setCompareHandler((function(t,e){return t.getFullYear()-e.getFullYear()}),"year"),this.datePicker.refreshView()}getStartingYear(t){return(t-1)/this.datePicker.yearRange*this.datePicker.yearRange+1}}class lt{static forRoot(){return{ngModule:lt,providers:[it]}}}},ijCd:function(t,e,n){var a=n("R/W3"),r=n("MMmD"),i=n("4qC0"),s=n("Sxd8"),o=n("P/G1"),u=Math.max;t.exports=function(t,e,n,d){t=r(t)?t:o(t),n=n&&!d?s(n):0;var l=t.length;return n<0&&(n=u(l+n,0)),i(t)?n<=l&&t.indexOf(e,n)>-1:!!l&&a(t,e,n)>-1}},insk:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");n("+0ag"),n("mSOc"),n("20UP");class r{constructor(t,e,n,r,i){this.summaryService=t,this.sanitizer=e,this.settingsService=n,this.cephReleaseNamePipe=r,this.i18n=i,this.grafanaExist=!1,this.mode="&kiosk",this.loading=!0,this.styles={},this.dashboardExist=!0,this.icons=a.a,this.DEFAULT_TIME="from=now-1h&to=now",this.grafanaTimes=[{name:this.i18n("Last 5 minutes"),value:"from=now-5m&to=now"},{name:this.i18n("Last 15 minutes"),value:"from=now-15m&to=now"},{name:this.i18n("Last 30 minutes"),value:"from=now-30m&to=now"},{name:this.i18n("Last 1 hour (Default)"),value:"from=now-1h&to=now"},{name:this.i18n("Last 3 hours"),value:"from=now-3h&to=now"},{name:this.i18n("Last 6 hours"),value:"from=now-6h&to=now"},{name:this.i18n("Last 12 hours"),value:"from=now-12h&to=now"},{name:this.i18n("Last 24 hours"),value:"from=now-24h&to=now"},{name:this.i18n("Yesterday"),value:"from=now-1d%2Fd&to=now-1d%2Fd"},{name:this.i18n("Today"),value:"from=now%2Fd&to=now%2Fd"},{name:this.i18n("Today so far"),value:"from=now%2Fd&to=now"},{name:this.i18n("Day before yesterday"),value:"from=now-2d%2Fd&to=now-2d%2Fd"},{name:this.i18n("Last 2 days"),value:"from=now-2d&to=now"},{name:this.i18n("This day last week"),value:"from=now-7d%2Fd&to=now-7d%2Fd"},{name:this.i18n("Previous week"),value:"from=now-1w%2Fw&to=now-1w%2Fw"},{name:this.i18n("This week"),value:"from=now%2Fw&to=now%2Fw"},{name:this.i18n("This week so far"),value:"from=now%2Fw&to=now"},{name:this.i18n("Last 7 days"),value:"from=now-7d&to=now"},{name:this.i18n("Previous month"),value:"from=now-1M%2FM&to=now-1M%2FM"},{name:this.i18n("This month"),value:"from=now%2FM&to=now%2FM"},{name:this.i18n("This month so far"),value:"from=now%2FM&to=now"},{name:this.i18n("Last 30 days"),value:"from=now-30d&to=now"},{name:this.i18n("Last 90 days"),value:"from=now-90d&to=now"},{name:this.i18n("Last 6 months"),value:"from=now-6M&to=now"},{name:this.i18n("Last 1 year"),value:"from=now-1y&to=now"},{name:this.i18n("Previous year"),value:"from=now-1y%2Fy&to=now-1y%2Fy"},{name:this.i18n("This year"),value:"from=now%2Fy&to=now%2Fy"},{name:this.i18n("This year so far"),value:"from=now%2Fy&to=now"},{name:this.i18n("Last 2 years"),value:"from=now-2y&to=now"},{name:this.i18n("Last 5 years"),value:"from=now-5y&to=now"}]}ngOnInit(){this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three"};const t=this.summaryService.subscribe(e=>{if(!e)return;const n=this.cephReleaseNamePipe.transform(e.version);this.docsUrl=`http://docs.ceph.com/docs/${n}/mgr/dashboard/`+"#enabling-the-embedding-of-grafana-dashboards",setTimeout(()=>{t.unsubscribe()},0)});this.settingsService.ifSettingConfigured("api/grafana/url",t=>{this.grafanaExist=!0,this.loading=!1,this.baseUrl=t+"/d/",this.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]}getFrame(){this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(t=>this.dashboardExist=200===t),this.url=this.baseUrl+this.uid+"/"+this.grafanaPath+"&refresh=2s"+this.mode+"&"+this.time,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)}onTimepickerChange(){this.grafanaExist&&this.getFrame()}reset(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()}ngOnChanges(){this.grafanaExist&&this.getFrame()}}},iqWW:function(t,e,n){"use strict";var a=n("ZUd8").charAt;t.exports=function(t,e,n){return e+(n?a(t,e).length:1)}},itsj:function(t,e){t.exports=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}},iutN:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("FE24"),i=n("GS7A"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[],[[2,"dropup",null],[2,"dropdown",null],[2,"show",null],[2,"open",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"up"===n.direction,"down"===n.direction,n.isOpen,n.isOpen)}))}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-dropdown-container",[["style","display:block;position: absolute;"]],null,null,null,o,s)),a["ɵdid"](1,180224,null,0,r.b,[r.f,a.ChangeDetectorRef,a.Renderer2,a.ElementRef,i.b],null,null)],null,null)}var d=a["ɵccf"]("bs-dropdown-container",r.b,u,{},{},["*"])},j8L6:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm"),s=n("DqMs"),o=n("/NlG"),u=n("GiVz"),d=n("o4+5"),l=n("aXbf"),c=n("SVse");n("b5OY"),n("pxLl"),n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return b}));var f=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," "," "])),a["ɵppd"](1,1)],null,(function(t,e){var n=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent.parent,0),e.context.row.value));t(e,0,0,n,e.context.row.unit)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getCounters(n)&&a),a}),r.b,r.a)),a["ɵdid"](1,2867200,null,0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},{fetchData:"fetchData"}),(t()(),a["ɵand"](0,[[1,2],["valueTpl",2]],null,0,null,h))],(function(t,e){var n=e.component;t(e,1,0,n.counters,n.columns,"flex",!1)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,o.a,[u.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Performance counters not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function b(t){return a["ɵvid"](0,[a["ɵpid"](0,d.a,[l.a]),a["ɵqud"](671088640,1,{valueTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](3,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["warning",2]],null,0,null,p))],(function(t,e){t(e,3,0,e.component.counters,a["ɵnov"](e,4))}),null)}},"jKX/":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));class a{constructor(t=[]){["read","create","update","delete"].forEach(e=>this[e]=t.includes(e))}}class r{constructor(t){this.hosts=new a(t.hosts),this.configOpt=new a(t["config-opt"]),this.pool=new a(t.pool),this.osd=new a(t.osd),this.monitor=new a(t.monitor),this.rbdImage=new a(t["rbd-image"]),this.iscsi=new a(t.iscsi),this.rbdMirroring=new a(t["rbd-mirroring"]),this.rgw=new a(t.rgw),this.cephfs=new a(t.cephfs),this.manager=new a(t.manager),this.log=new a(t.log),this.user=new a(t.user),this.grafana=new a(t.grafana),this.prometheus=new a(t.prometheus),this.nfs=new a(t["nfs-ganesha"])}}},jUeY:function(t,e,n){!function(t){"use strict";t.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return t?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,n){return t>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(t){return"μ"===(t+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,e){var n,a=this._calendarEl[t],r=e&&e.hours();return((n=a)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(a=a.apply(e)),a.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("wd/R"))},jV1L:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-expander",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <span\n        *ngIf="node.hasChildren"\n        [class.toggle-children-wrapper-expanded]="node.isExpanded"\n        [class.toggle-children-wrapper-collapsed]="node.isCollapsed"\n        class="toggle-children-wrapper"\n        (click)="node.mouseAction(\'expanderClick\', $event)"\n      >\n        <span class="toggle-children"></span>\n      </span>\n      <span *ngIf="!node.hasChildren" class="toggle-children-placeholder">\n      </span>\n    </ng-container>\n  '})],t)}()},jVDg:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n){this.poolName=t,this.namespace=e,this.imageName=n}static fromString(t){const e=t.split("/");return new this(e[0],e.length>=3?e[1]:null,e.length>=3?e[2]:e[1])}getNameSpace(){return this.namespace?`${this.namespace}/`:""}toString(){return`${this.poolName}/${this.getNameSpace()}${this.imageName}`}toStringEncoded(){return encodeURIComponent(`${this.poolName}/${this.getNameSpace()}${this.imageName}`)}}},jVdC:function(t,e,n){!function(t){"use strict";var e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function a(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function r(t,e,n){var r=t+" ";switch(n){case"ss":return r+(a(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return r+(a(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return r+(a(t)?"godziny":"godzin");case"MM":return r+(a(t)?"miesiące":"miesięcy");case"yy":return r+(a(t)?"lata":"lat")}}t.defineLocale("pl",{months:function(t,a){return t?""===a?"("+n[t.month()]+"|"+e[t.month()]+")":/D MMMM/.test(a)?n[t.month()]:e[t.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},jZKg:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("HDdC"),r=n("quSY");function i(t,e){return new a.a(n=>{const a=new r.a;let i=0;return a.add(e.schedule((function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()}))),a})}},jeLo:function(t,e,n){var a=n("juv8"),r=n("mTTR");t.exports=function(t){return a(t,r(t))}},jfSC:function(t,e,n){!function(t){"use strict";var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};t.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(t){return/بعد از ظهر/.test(t)},meridiem:function(t,e,n){return t<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("wd/R"))},jnO4:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(t){return function(e,n,i,s){var o=a(e),u=r[t][a(e)];return 2===o&&(u=u[n?0:1]),u.replace(/%d/i,e)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},jqst:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="id-ID">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Pengalih navigasi</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dasbor</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfigurasi</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Pencerminan</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemfile</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buket</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Pilih bahasa</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Memuat data panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Pemilih Waktu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Reset Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Kembali</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Gagal memuat data.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>dipilih</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>ditemukan</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nama</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Deskripsi</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Deskripsi lengkap</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Bawaan</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon bawaan</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Simpan</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Penampil peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Memuat...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nama hos</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Isian ini tidak boleh kosong.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ya, saya yakin.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Batal</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Tutup</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Daftar Hos</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performa Keseluruhan</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Entri tidak ditemukan</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log Klaster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log Audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Memuat konfigurasi...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Konfigurasi tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edit modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Nilai yang dimasukkan bukan UUID yang valid, cth: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Nilai yang dimasukkan harus alamat IP yang valid.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Nilai yang dimasukkan harus berupa angka.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Nilai yang dimasukkan harus berupa angka atau desimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Perbarui</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID Klaster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap diubah</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kuorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kuorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Memenuhi Kuorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Tidak dalam Kuorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Tambah</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fitur</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD Klaster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Kirim</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Tingkat lanjut...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioritas pemulihan OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioritas</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Ubah nilai prioritas</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Isian ini harus diisi!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Nilai harus antara 0 dan 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ubah bobot</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Dalam } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {dalam } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Daftar OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Hapus</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Kesehatan</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistik </target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klien</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Semua klien dapat mengakses</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Alamat</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Wajib diisi</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Harus mengandung satu atau lebih nilai yang dipisahkan koma</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Contoh:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipe Akses</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Tambah klien</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Klaster tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Pilih klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Tambah daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend Penyimpanan</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Tidak ada pool data tersedia --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Pilih backend penyimpanan --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Pengguna Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Pengguna tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Pilih pengguna gerbang objek --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Klien tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Pilih klien cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nama CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Label Keamanan</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Aktifkan label keamanan</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS Path</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Lintasan atau path harus dimulai dengan \'/\' dan diikuti dengan kata</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Direktori baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Path</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Path hanya boleh berupa \'/\' atau kata</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Buket baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokol NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klien mungkin tidak dapat mount subdirektori (cth. jika Tag = foo, klien mungkin tidak bisa mount foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Tag yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Pseudo yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Tipe akses tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Pilih tipe akses --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Squash tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokol Transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Selamat datang di Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nama pengguna harus diisi</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Kata sandi harus diisi</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Masuk</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Maaf, pengguna tidak terdaftar di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Terlarang</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Maaf, Anda tidak dizinkan melihat hal yang Anda inginkan.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfigurasi RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Menghapus nilai konfigurasi lokal. Nilai konfigurasi induk akan diturun dan digunakan.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Nilai minimum adalah 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Daftar pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nama hanya boleh terdiri dari alfanumerik, tanda hubung, dan garis bawah.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Nama profil erasure code sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pecahan data (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Harus sama dengan atau lebih dari 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pecahan Coding (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Harus sama dengan atau lebih dari 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Penduga daya tahan (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalitas (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domain kegagalan Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalitas Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Tidak ada</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Teknik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Ukuran paket</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush root</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Kelas perangkat Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>apa saja</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Direktori</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nama...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Nama pool Ceph yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Jenis pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pilih jenis pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grup penempatan</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Dibutuhkan setidaknya satu grup penempatan!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Klaster Anda tidak dapat menangani PG sebanyak ini. Mohon hitung ulang jumlah PG yang dibutuhkan.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Bantuan penghitungan</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Jumlah replikasi</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Overwrites</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikasi</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Tidak ada profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Pilih profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Aturan CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Pilih aturan crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Aturan crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush steps</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresi</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritma</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Tidak ada algoritma pengompresian erasure --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Ukuran blob minimum</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>cth. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Nilai harus lebih besar dari 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Ukuran maksimum blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>cth. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Nilai harus lebih besar dari ukuran minimum blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rasio</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rasio kompresi</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Nilai harus antara 0.0 dan 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>cth. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detail</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detail Performa</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detil Cache Bertingkat</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Pindahkan image ke tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Proteksi berakhir pada</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format tanggal salah. Mohon gunakan "TTTT-BB-HH JJ:mm:dd".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Proteksi telah kedaluarsa. Mohon pilih tanggal masa mendatang atau kosongkan.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Pindahkan Image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Ikhtisar</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Otentikasi Discovery</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri dari 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Kata sandi</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Pengguna Bersama</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Kata sandi bersama</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informasi tersedia:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI Target tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool Data</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Dibuat</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Ukuran</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objek</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Ukuran objek</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Disiapkan</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total disiapkan</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Induk</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Awalan nama blok</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Urutan</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Pengaturan ini akan membatalkan nilai global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Ini adalah nilai global. Tidak ada nilai yang diset untuk image ini.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' dan \'@\' tidak diperbolehkan.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Tidak ada pool rbd tersedia --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pilih pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Gunakan pool data terdedikasi</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool data</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool terdedikasi yang menyimpan data-objek dari RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Anda harus menaikkan ukuran.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Tingkat lanjut</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Setrip</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Pilih ukuran setrip --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Isian ini harus diisi karena jumlah setrip telah ditentukan!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Unit setrip lebih besar dari ukuran objek.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Isian wajib diisi karena unit setrip didefinisikan!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Jumlah setrip harus lebih besar dari 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Anda akan mengembalikan semula</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Kosongkan Tempah Sampah</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Semua</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nama Pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Pulihkan Image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Untuk memulihkan</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>ketik nama baru image dan pilih</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nama Baru</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Kedaluwarsa pada</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Diproteksi hingga</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologi iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Mengganti parameter ini dari nilai bawaan biasanya tidak diperlukan.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Konfirmasi</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pengaturan Lanjut</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Target IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Pola IQN salah.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Contoh: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Informasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Pengaturan lanjutan target ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portal</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Tambahkan portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Pengaturan Image ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Tambahkan image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Otentikasi ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klien IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inisiator IQN harus unik.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri atas 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inisiator termasuk ke dalam grup. Image akan dikonfigurasi di dalam grup.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Tidak ada yang ditambahkan.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Tambahkan inisiator</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Tambahkan grup</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Masalah</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Menyinkronkan</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Siap</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Edit mode pencerminan pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Klaster mitra harus dihapus sebelum menonaktfikan pencerminan.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Tambah} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nama Klaster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nama klaster tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Alamat Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Alamat dengan pemisah-koma...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Alamat monitor tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX Key</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-encoded key...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Kunci CephX harus base64 encoded.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Penghitung kinerja tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Daftar Daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Penghitung Performa</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Memuat data buket...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Nilai tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Nama yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Pemilik</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Pilih pengguna --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Diaktifkan</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Jenis indeks</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Aturan penempatan</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Penanda</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Penanda maksimum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versi</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versi Master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Modifikasi waktu</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zona grup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kuota Buket</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Ukuran maksimum</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Objek maksimum</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nama pengguna</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Pilih nama pengguna --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Kunci otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Kunci akses</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Kunci rahasia</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nama lengkap</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Alamat email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Dihentikan</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistem</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Buket maksimum</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Kemampuan</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kuota pengguna</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Tampilkan</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipe</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Pilih tipe --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Pilih izin --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>ID subpengguna sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>baca, tulis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>penuh</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Kunci Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Sandi otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Memuat data pengguna...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Data pengguna tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>ID pengguna yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ini bukan alamat email yang valid.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Alamat email yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Maks. buket</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Dimatikan</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Ubahsuai</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Kunci S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Tidak ada sub-pengguna.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Kunci tidak ditemukan.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Kemampuan tidak ada.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Ukuran tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Ukuran maks.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objek tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objek maks.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Nilai yang dimasukkan harus &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Deskripsi...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Peran</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Konfirmasi kata sandi</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Konfirmasi kata sandi tidak sesuai dengan kata sandi.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Email tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Anda akan menghapus izin "pengguna baca / perbarui" dari diri Anda sendiri.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jika melanjutkan, Anda tidak akan lagi dapat menambahkan atau menghapus peran dari pengguna manapun.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Anda yakin ingin melanjutkan?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Bantuan</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentasi </target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Tentang</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Pengaturan Dasbor</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Manajemen Pengguna</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Pengguna masuk</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Keluar</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atribut (peta OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Penghitung kinerja</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Tulis</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maks</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Sumber</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Level</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Boleh diperbarui saat dijalankan (bisa diedit)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Nilai Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Lihat juga</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status Klaster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manajer Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server Metadata</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateway iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS klien</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput Pengguna</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Baca/Tulis Klien</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Kinerja</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Kapasitas mentah</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapasitas</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Terkini</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Otentikasi penemuan telah diperbarui</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Tidak ada portal yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Tidak ada image yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Tidak ada image yang tersedia. Mohon pastikan Anda telah menambahkan image ke target.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Tidak ada inisiator tersedia. Mohon pastikan Anda telah menambahkan inisiator ke target.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Keadaan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Baca Bytes</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Tulis Bytes</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Ops Baca</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Ops Tulis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Sejak</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Isu</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Kemajuan</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode Edit</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Tambahkan Mitra</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edit Mitra</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Hapus Mitra</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Pemimpin</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Jauh</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mitra pencerminan</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Perataan mendalam</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Lapisan</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Kunci eksklusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Peta objek (butuh kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Penjurnalan (membutuhkan kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Kembalikan snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Kembalikan</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Dihapus pada</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipe</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>keadaan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versi</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>induk</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon siaga</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivitas</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Penggunaan</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Diperbarui</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Nilai dapat diperbarui saat runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemon/klien tidak dapat mengambil nilai dari\nbasis data konfigurasi monitor. Kami tidak mengizinkan mengubah ini dari \'ceph config\nset ...\'. Pilihan ini harus dikonfigurasi melalui ceph.conf atau CLI.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Pilihan hanya dapat bekerja selama daemon dimulai.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan klaster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Dapat diedit</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktifkan</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Nonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Menghubungkan kembali, mohon tunggu...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Alamat Publik</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Buka Sesi</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Tidak boleh Masuk</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD yang telah ditandai keluar tidak akan ditandai masuk saat mereka menyala</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Tidak boleh Keluar</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD tidak akan otomatis ditandai keluar setelah interval dikonfigurasi</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Tidak Nyala</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD tidak diizinkan menyala</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Tidak Mati</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Laporan kegagalan OSD sedang diabaikan sehingga monitor tidak akan menandai OSD mati</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Jeda</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Jeda baca dan tulis</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nonaktifkan Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nonaktifkan Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Deep Scrubing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Tidak ada Penambalan</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Penambalan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Tidak ada Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Pemulihan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Urutan Bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Gunakan urutan bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Buang Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD memiliki snapset yang dikonversi</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Pulihkan yang telah dihapus</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Penghapusan dilakukan saat pemulihan bukan saat bermitra</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Batas Maks Log PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Taruh batas maks pada panjang log pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD diperbarui</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>keluar</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>masuk</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>gugur</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Tandai</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD hilang</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>ditandai hilang</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Buang</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>dibuang</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>hancurkan</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>dihancurkan</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>hapus</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bita baca</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bita tulis</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Ops baca</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Ops tulis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Maks Penambalan</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Maks Pemulihan Aktif</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Maks Menjalankan Pemulihan Tunggal</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Jeda Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tugas</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Keparahan</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Dimulai</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Terpakai</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Tersedia</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bersih</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Bekerja</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Peringatan</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Tidak diketahui</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>nyala</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>tidak ada filesistem</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>siaga</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon aktif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kuorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Layanan NFS Ganesha belum dikonfigurasi.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Filesistem CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(diturunkan dari konfig global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>diturunkan dari konfig global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Tidak ada daemon tersedia.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Waktu Usir</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Waktu Buang</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Target Maks Bita</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Target Maks Objek</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Tidak ada aplikasi ditambahkan</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Batas aplikasi tercapai</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Sebuah pool hanya dapat memiliki empat definisi aplikasi.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Karakter diperbolehkan \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Panjang maksimum 128 karakter</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Saring atau tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Ukuran Replikasi</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Perubahan Terakhir</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil Erasure Code</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Aturan Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Cakupan</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Buat</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Peran Sistem</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Perbarui pengguna</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Lanjutkan</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Anda dikeluarkan otomatis karena peran Anda telah berubah.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Tiap objek dipecah dalam pecahan-data, masing-masing disimpan pada OSD yang berbeda.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Hitung pecahan coding untuk tiap objek dan simpan pada OSD yang berbeda.\nJumlah pecahan data juga menjadi jumlah OSD yang diperbolehkan mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Plugin jerasure merupakan plugin paling umum dan fleksibel,\nserta merupakan plugin bawaan Ceph untuk pool erasure code.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Teknik yang lebih fleksibel yaitu reed_sol_van : cukup mengeset k\ndan m. Teknik cauchy_good bisa lebih cepat, namun Anda harus memilih ukuran paket\ndengan seksama. Semua reed_sol_r6_op, liberation, blaum_roth, liber8tion setara dengan RAID6\ndalam hal mereka hanya bisa diatur dengan m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Penyandian dilakukan setiap saat pada ukuran bita paket.\nSulit untuk menentukan ukuran paket yang tepat.\nSilakan cek dokumentasi jerasure untuk informasi lebih mendalam.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Pada plugin jerasure, saat objek dengan erasure code disimpan pada\nbanyak OSD, pemulihan dari OSD yang hilang membutuhkan akses dari OSD lainnya.\nContoh, saat jerasure dikonfigurasi dengan k=8 dan m=4, saat satu OSD mati, maka pemulihan akan membutuhkan pembacaan dari tujuh OSD lainnya.\n\nPlugin lrc erasure code membuat pecahan paritas lokal agar dapat memulihkan \ndengan OSD yang lebih sedikit. Contoh, jika lrc dikonfigurasi dengan k=8, m=4, dan l=4, maka lrc akan\nmembuat pecahan paritas tambahan tiap empat OSD. Saat satu OSD mati, maka pemulihan dapat dilakukan hanya dengan 4 OSD, alih-alih 7 OSD.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Kelompokkan pecahan data dan coding ke dalam ukuran lokalitas. Controh\nuntuk k=4 dan m=2, saat lokalitas=3 dua grup dari tiga akan dibuat. Setiap set akan\ndipulihkan tanpa membaca pecahan dari set lainnya.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Tipe buket crush setiap set pecahan yang didefinisikan oleh l  \nakan disimpan. Contoh, jika diset pada rak, tiap grup pecahan l akan \nditempatkan pada rak berbeda. Ini akan digunakan pada aturan step CRUSH yaitu \nmemilih tiap rak. Jika tidak diset, tidak akan ada pengelompokkan.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Plugin isa menghimpun perpustakaan ISA. Hanya dapat berjalan pada prosesor Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Plugin ISA memiliki dua jenis Reed Solomon.\nJika reed_sol_van diset, maka menjadi Vandermonde, jika cauchy diset, maka menjadi Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Plugin shec mengenkapsulasi banyak pustaka SHEC.\nHal ini agar ceph dapat dipulihkan dengan lebih efisien dari kode Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Jumlah potongan paritas yang masing-masing mencakup setiap potongan data \ndalam rentang perhitungannya. Nilai ini digunakan untuk perkiraan daya tahan. Contoh, jika c=2, \n2 OSD dapat mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nama buket crush digunakan sebagai langkah pertama dari aturan CRUSH.\nContoh diambil langkah bawaan.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Memastikan tidak ada pecahan data berada pada buket dengan domain kegagalan\nyang sama. Contoh, saat domain gagal adalah hos, maka tidak ada pecahan data yang akan disimpan \npada hos yang sama. Aturan CRUSH seperti step chooseleaf hos akan digunakan untuk hal tersebut.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Batasi penempatan ke perangkat dengan kelas tertentu\n(cth. ssd atau hdd), menggunakan nama kelas perangkat crush pada peta CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Set nama direktori empat plugin erasure code akan dimuat.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Izinkan semua operasi</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Izinkan hanya untuk operasi yang tidak mengubah server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Tidak diizinkan untuk operasi baca dan tulis, namun izinkan operasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Tidak diizinkan untuk baca, tulis, atau operasi lainnya yang mengubah atribut berkas atau konten direktori</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Tidak diizinkan untuk semua hal</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Pilih prioritas --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Rendah</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Tinggi</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informasi</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>5 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>15 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>30 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>1 Jam Terakhir (Bawaan)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>3 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>6 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>12 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>24 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Kemarin</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hari ini</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Sejauh hari ini</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Kemarin dulu</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>2 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Hari ini minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Minggu ini</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Sejauh minggu ini</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>7 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Bulan lalu</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Bulan ini</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Sejauh bulan ini</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>30 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>90 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>6 bulan terakhir</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>1 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Tahun lalu</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tahun ini</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Sejauh tahun ini</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>2 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>5 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Tidak ada yang dipilih.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Batalkan memilih untuk memilih ulang</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Batas pemilihan tercapai</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tanda penyaringan</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Tambahkan lencana</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Tidak ada yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klon</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Salin</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Hancurkan</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Ratakan</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Tandai Gugur</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Tandai Masuk</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Tandai Hilang</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Tandai Keluar</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteksi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Ubah nama</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Pulihkan</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Pindahkan ke Tempat Sampah</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Tidak diproteksi</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Dihapus</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Diklon</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Disalin</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Diratakan</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Dibuang</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Dipulihkan</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Dikembalikan</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ya</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Tidak</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kualitas Layanan atau QoS</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limit IO bytes per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limit operasi IO per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit Baca BPS </target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limit byte baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limit operasi baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit Tulis BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limit tulis byte per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limit operasi tulis per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Letupan BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari IO byte.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Letupan IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Letupan Baca BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari baca byte.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Letupan IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Letupan BPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari tulis byte.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Letupan IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Mengeksekusi</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>eksekusi</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Dieksekusi</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tugas tak diketahui</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Membuat</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>buat</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Memperbarui</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>perbarui</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Menghapus</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Pengklonan</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klon</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Menyalin</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>salin</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Meratakan</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>ratakan</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Mengembalikan</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>kembalikan</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Memindahkan</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>pindah</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>dipindahkan</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Tidak dapat menemukan image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Memulihkan</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>pulihkan</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Membuang</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>buang</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>semua pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Gagal menonaktifkan pencerminan karena sedang bermitra.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},jtHE:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("XNiG"),r=n("qgXg"),i=n("quSY"),s=n("pxpQ"),o=n("9ppp"),u=n("Ylt2");class d extends a.a{constructor(t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,n){super(),this.scheduler=n,this._events=[],this._infiniteTimeWindow=!1,this._bufferSize=t<1?1:t,this._windowTime=e<1?1:e,e===Number.POSITIVE_INFINITY?(this._infiniteTimeWindow=!0,this.next=this.nextInfiniteTimeWindow):this.next=this.nextTimeWindow}nextInfiniteTimeWindow(t){const e=this._events;e.push(t),e.length>this._bufferSize&&e.shift(),super.next(t)}nextTimeWindow(t){this._events.push(new l(this._getNow(),t)),this._trimBufferThenGetEvents(),super.next(t)}_subscribe(t){const e=this._infiniteTimeWindow,n=e?this._events:this._trimBufferThenGetEvents(),a=this.scheduler,r=n.length;let d;if(this.closed)throw new o.a;if(this.isStopped||this.hasError?d=i.a.EMPTY:(this.observers.push(t),d=new u.a(this,t)),a&&t.add(t=new s.a(t,a)),e)for(let i=0;i<r&&!t.closed;i++)t.next(n[i]);else for(let i=0;i<r&&!t.closed;i++)t.next(n[i].value);return this.hasError?t.error(this.thrownError):this.isStopped&&t.complete(),d}_getNow(){return(this.scheduler||r.a).now()}_trimBufferThenGetEvents(){const t=this._getNow(),e=this._bufferSize,n=this._windowTime,a=this._events,r=a.length;let i=0;for(;i<r&&!(t-a[i].time<n);)i++;return r>e&&(i=Math.max(i,r-e)),i>0&&a.splice(0,i),a}}class l{constructor(t,e){this.time=t,this.value=e}}},juv8:function(t,e,n){var a=n("MrPd"),r=n("hypo");t.exports=function(t,e,n,i){var s=!n;n||(n={});for(var o=-1,u=e.length;++o<u;){var d=e[o],l=i?i(n[d],t[d],d,n,t):void 0;void 0===l&&(l=t[d]),s?r(n,d,l):a(n,d,l)}return n}},"k+1r":function(t,e,n){var a=n("QkVE");t.exports=function(t){var e=a(this,t).delete(t);return this.size-=e?1:0,e}},kEOa:function(t,e,n){!function(t){"use strict";var e={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};t.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(t){return t.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(t,e){return 12===t&&(t=0),"রাত"===e&&t>=4||"দুপুর"===e&&t<5||"বিকাল"===e?t+12:t},meridiem:function(t,e,n){return t<4?"রাত":t<10?"সকাল":t<17?"দুপুর":t<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("wd/R"))},kJI8:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},kJWO:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")()},kOOl:function(t,e){var n=0,a=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+a).toString(36)}},kOpN:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},kRJp:function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("XGwC");t.exports=a?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},kekF:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},kmMV:function(t,e,n){"use strict";var a,r,i=n("rW0t"),s=n("n3/R"),o=RegExp.prototype.exec,u=String.prototype.replace,d=o,l=(r=/b*/g,o.call(a=/a/,"a"),o.call(r,"a"),0!==a.lastIndex||0!==r.lastIndex),c=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(l||f||c)&&(d=function(t){var e,n,a,r,s=this,d=c&&s.sticky,h=i.call(s),g=s.source,p=0,b=t;return d&&(-1===(h=h.replace("y","")).indexOf("g")&&(h+="g"),b=String(t).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==t[s.lastIndex-1])&&(g="(?: "+g+")",b=" "+b,p++),n=new RegExp("^(?:"+g+")",h)),f&&(n=new RegExp("^"+g+"$(?!\\s)",h)),l&&(e=s.lastIndex),a=o.call(d?n:s,b),d?a?(a.input=a.input.slice(p),a[0]=a[0].slice(p),a.index=s.lastIndex,s.lastIndex+=a[0].length):s.lastIndex=0:l&&a&&(s.lastIndex=s.global?a.index+a[0].length:e),f&&a&&a.length>1&&u.call(a[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(a[r]=void 0)})),a}),t.exports=d},"kn/O":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("HDdC"),r=n("mtw6"),i=n("G1I9"),s=n("QTAa"),o=n("9nlD"),u=n("mSOc"),d=n("VXsX"),l=n("ufoC"),c=n("8Y7J");let f=(()=>{class t{constructor(t,e,n,a){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.taskManagerService=a}wrapTaskAroundCall({task:t,call:e}){return new a.a(n=>{e.subscribe(e=>{202===e.status?this._handleExecutingTasks(t):(this.summaryService.refresh(),t.success=!0,this.notificationService.notifyTask(t))},e=>{t.success=!1,t.exception=e.error,n.error(e)},()=>{n.complete()})})}_handleExecutingTasks(t){const e=new i.b(r.a.info,this.taskMessageService.getRunningTitle(t));e.isFinishedTask=!0,this.notificationService.show(e);const n=new s.a(t.name,t.metadata);this.summaryService.addRunningTask(n),this.taskManagerService.subscribe(n.name,n.metadata,t=>{this.notificationService.notifyTask(t)})}}return t.ngInjectableDef=c["ɵɵdefineInjectable"]({factory:function(){return new t(c["ɵɵinject"](o.a),c["ɵɵinject"](u.a),c["ɵɵinject"](l.a),c["ɵɵinject"](d.a))},token:t,providedIn:"root"}),t})()},kvvV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},l5ep:function(t,e,n){!function(t){"use strict";t.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(t){var e="";return t>20?e=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(e=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),t+e},week:{dow:1,doy:4}})}(n("wd/R"))},l7GE:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{notifyNext(t,e,n,a,r){this.destination.next(e)}notifyError(t,e){this.destination.error(t)}notifyComplete(t){this.destination.complete()}}},lJxs:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){if("function"!=typeof t)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new i(t,e))}}class i{constructor(t,e){this.project=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.project,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.project=e,this.count=0,this.thisArg=n||this}_next(t){let e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}},lMq5:function(t,e,n){var a=n("0Dky"),r=/#|\.prototype\./,i=function(t,e){var n=o[s(t)];return n==d||n!=u&&("function"==typeof e?a(e):!!e)},s=i.normalize=function(t){return String(t).replace(r,".").toLowerCase()},o=i.data={},u=i.NATIVE="N",d=i.POLYFILL="P";t.exports=i},"lOp/":function(t,e,n){"use strict";var a=n("PqYM"),r=n("pxpQ"),i=n("eIep"),s=n("jtHE"),o=n("D0XW"),u=n("8Y7J");class d{constructor(t){this.zone=t,this.scheduler=o.a}now(){return this.scheduler.now()}}let l=(()=>{class t extends d{constructor(t){super(t)}schedule(...t){return this.zone.runOutsideAngular(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](u.NgZone))},token:t,providedIn:"root"}),t})(),c=(()=>{class t extends d{constructor(t){super(t)}schedule(...t){return this.zone.run(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](u.NgZone))},token:t,providedIn:"root"}),t})(),f=(()=>{class t{constructor(t,e){this.leave=t,this.enter=e}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](l),u["ɵɵinject"](c))},token:t,providedIn:"root"}),t})();n.d(e,"a",(function(){return h}));let h=(()=>{class t{constructor(t){this.ngZone=t,this.DEFAULT_REFRESH_INTERVAL=5e3,this.DEFAULT_DUE_TIME=0}get(t,e=this.DEFAULT_REFRESH_INTERVAL,n=this.DEFAULT_DUE_TIME){return Object(a.a)(n,e,this.ngZone.leave).pipe(Object(r.b)(this.ngZone.enter),Object(i.a)(t),function(t,e,n){let a;return a=t&&"object"==typeof t?t:{bufferSize:t,windowTime:void 0,refCount:!1,scheduler:void 0},t=>t.lift(function({bufferSize:t=Number.POSITIVE_INFINITY,windowTime:e=Number.POSITIVE_INFINITY,refCount:n,scheduler:a}){let r,i,o=0,u=!1,d=!1;return function(l){o++,r&&!u||(u=!1,r=new s.a(t,e,a),i=l.subscribe({next(t){r.next(t)},error(t){u=!0,r.error(t)},complete(){d=!0,i=void 0,r.complete()}}));const c=r.subscribe(this);this.add(()=>{o--,c.unsubscribe(),i&&!d&&n&&0===o&&(i.unsubscribe(),i=void 0,r=void 0)})}}(a))}({refCount:!0,bufferSize:1}))}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](f))},token:t,providedIn:"root"}),t})()},lQqw:function(t,e,n){var a=n("MMmD");t.exports=function(t,e){return function(n,r){if(null==n)return n;if(!a(n))return t(n,r);for(var i=n.length,s=e?i:-1,o=Object(n);(e?s--:++s<i)&&!1!==r(o[s],s,o););return n}}},lSCD:function(t,e,n){var a=n("NykK"),r=n("GoyQ");t.exports=function(t){if(!r(t))return!1;var e=a(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},lXzo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"минута":"минуту":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];t.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:e,m:e,mm:e,h:"час",hh:e,d:"день",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночи":t<12?"утра":t<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:4}})}(n("wd/R"))},lYtQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"хэдхэн секунд":"хэдхэн секундын";case"ss":return t+(e?" секунд":" секундын");case"m":case"mm":return t+(e?" минут":" минутын");case"h":case"hh":return t+(e?" цаг":" цагийн");case"d":case"dd":return t+(e?" өдөр":" өдрийн");case"M":case"MM":return t+(e?" сар":" сарын");case"y":case"yy":return t+(e?" жил":" жилийн");default:return t}}t.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(t){return"ҮХ"===t},meridiem:function(t,e,n){return t<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" өдөр";default:return t}}})}(n("wd/R"))},lgnt:function(t,e,n){!function(t){"use strict";var e={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};t.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},ljhN:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},"lm/5":function(t,e,n){var a=n("fmRc"),r=n("wF/u");t.exports=function(t,e,n,i){var s=n.length,o=s,u=!i;if(null==t)return!o;for(t=Object(t);s--;){var d=n[s];if(u&&d[2]?d[1]!==t[d[0]]:!(d[0]in t))return!1}for(;++s<o;){var l=(d=n[s])[0],c=t[l],f=d[1];if(u&&d[2]){if(void 0===c&&!(l in t))return!1}else{var h=new a;if(i)var g=i(c,f,l,t,e,h);if(!(void 0===g?r(f,c,3,i,h):g))return!1}}return!0}},lyxo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=" ";return(t%100>=20||t>=100&&t%100==0)&&(a=" de "),t+a+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:e,m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}(n("wd/R"))},"m/L8":function(t,e,n){var a=n("g6v/"),r=n("DPsx"),i=n("glrk"),s=n("wE6v"),o=Object.defineProperty;e.f=a?o:function(t,e,n){if(i(t),e=s(e,!0),i(n),r)try{return o(t,e,n)}catch(a){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},m92n:function(t,e,n){var a=n("glrk");t.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(s){var i=t.return;throw void 0!==i&&a(i.call(t)),s}}},mCNh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("KqfI");function r(...t){return i(t)}function i(t){return t?1===t.length?t[0]:function(e){return t.reduce((t,e)=>e(t),e)}:a.a}},mSOc:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("LvDl"),r=n("2Vo4"),i=n("lOp/"),s=n("8Y7J"),o=n("IheW");let u=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.REFRESH_INTERVAL=5e3,this.summaryDataSource=new r.a(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/summary")}retrieveSummaryObserver(){return t=>{this.summaryDataSource.next(t)}}getCurrentSummary(){return this.summaryDataSource.getValue()}subscribe(t,e){return this.summaryData$.subscribe(t,e)}addRunningTask(t){const e=this.summaryDataSource.getValue();e&&(a.isArray(e.executing_tasks)?e.executing_tasks.find(e=>e.name===t.name&&a.isEqual(e.metadata,t.metadata))||e.executing_tasks.push(t):e.executing_tasks=[t],this.summaryDataSource.next(e))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](o.c),s["ɵɵinject"](i.a))},token:t,providedIn:"root"}),t})()},mTTR:function(t,e,n){var a=n("b80T"),r=n("QcOe"),i=n("MMmD");t.exports=function(t){return i(t)?a(t,!0):r(t)}},mXUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return d})),n.d(e,"b",(function(){return c}));var a=n("8Y7J"),r=n("+gVj"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".invalid-feedback[_ngcontent-%COMP%], .valid-feedback[_ngcontent-%COMP%] {\n        display: block;\n      }"],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.component.className)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function u(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,e.component.messages())}),null)}var d=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bfv-messages",[],null,null,null,u,s)),a["ɵdid"](1,49152,null,0,r.e,[r.a],{messages:[0,"messages"]},null)],(function(t,e){t(e,1,0,e.component.messages)}),null)}function c(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,!e.component.messagesBlock)}),null)}},mc0g:function(t,e){t.exports=function(t){return function(e,n,a){for(var r=-1,i=Object(e),s=a(e),o=s.length;o--;){var u=s[t?o:++r];if(!1===n(i[u],u,i))break}return e}}},mdPL:function(t,e,n){(function(t){var a=n("WFqU"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r&&a.process,o=function(){try{return i&&i.require&&i.require("util").types||s&&s.binding&&s.binding("util")}catch(t){}}();t.exports=o}).call(this,n("YuTi")(t))},mfoh:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return p}));var a,r=n("CFvb"),i=n("P4Tr"),s=n.n(i),o=n("mwIZ"),u=n.n(o),d=n("Puqe"),l=n.n(d),c=n("UB5X"),f=n.n(c),h={TOGGLE_ACTIVE:function(t,e,n){return e&&e.toggleActivated()},TOGGLE_ACTIVE_MULTI:function(t,e,n){return e&&e.toggleActivated(!0)},TOGGLE_SELECTED:function(t,e,n){return e&&e.toggleSelected()},ACTIVATE:function(t,e,n){return e.setIsActive(!0)},DEACTIVATE:function(t,e,n){return e.setIsActive(!1)},SELECT:function(t,e,n){return e.setIsSelected(!0)},DESELECT:function(t,e,n){return e.setIsSelected(!1)},FOCUS:function(t,e,n){return e.focus()},TOGGLE_EXPANDED:function(t,e,n){return e.hasChildren&&e.toggleExpanded()},EXPAND:function(t,e,n){return e.expand()},COLLAPSE:function(t,e,n){return e.collapse()},DRILL_DOWN:function(t,e,n){return t.focusDrillDown()},DRILL_UP:function(t,e,n){return t.focusDrillUp()},NEXT_NODE:function(t,e,n){return t.focusNextNode()},PREVIOUS_NODE:function(t,e,n){return t.focusPreviousNode()},MOVE_NODE:function(t,e,n,a){var r=a.from,i=a.to;n.ctrlKey?t.copyNode(r,i):t.moveNode(r,i)}},g={mouse:{click:h.TOGGLE_ACTIVE,dblClick:null,contextMenu:null,expanderClick:h.TOGGLE_EXPANDED,checkboxClick:h.TOGGLE_SELECTED,drop:h.MOVE_NODE},keys:(a={},a[r.a.RIGHT]=h.DRILL_DOWN,a[r.a.LEFT]=h.DRILL_UP,a[r.a.DOWN]=h.NEXT_NODE,a[r.a.UP]=h.PREVIOUS_NODE,a[r.a.SPACE]=h.TOGGLE_ACTIVE,a[r.a.ENTER]=h.TOGGLE_ACTIVE,a)},p=function(){function t(t){void 0===t&&(t={}),this.options=t,this.actionMapping=s()({},this.options.actionMapping,g),t.rtl&&(this.actionMapping.keys[r.a.RIGHT]=u()(t,["actionMapping","keys",r.a.RIGHT])||h.DRILL_UP,this.actionMapping.keys[r.a.LEFT]=u()(t,["actionMapping","keys",r.a.LEFT])||h.DRILL_DOWN)}return Object.defineProperty(t.prototype,"hasChildrenField",{get:function(){return this.options.hasChildrenField||"hasChildren"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"childrenField",{get:function(){return this.options.childrenField||"children"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"displayField",{get:function(){return this.options.displayField||"name"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"idField",{get:function(){return this.options.idField||"id"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpandedField",{get:function(){return this.options.isExpandedField||"isExpanded"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"getChildren",{get:function(){return this.options.getChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"levelPadding",{get:function(){return this.options.levelPadding||0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useVirtualScroll",{get:function(){return this.options.useVirtualScroll},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateExpand",{get:function(){return this.options.animateExpand},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateSpeed",{get:function(){return this.options.animateSpeed||1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateAcceleration",{get:function(){return this.options.animateAcceleration||1.2},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollOnActivate",{get:function(){return void 0===this.options.scrollOnActivate||this.options.scrollOnActivate},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rtl",{get:function(){return!!this.options.rtl},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rootId",{get:function(){return this.options.rootId},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useCheckbox",{get:function(){return this.options.useCheckbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useTriState",{get:function(){return void 0===this.options.useTriState||this.options.useTriState},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollContainer",{get:function(){return this.options.scrollContainer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allowDragoverStyling",{get:function(){return void 0===this.options.allowDragoverStyling||this.options.allowDragoverStyling},enumerable:!0,configurable:!0}),t.prototype.getNodeClone=function(t){return this.options.getNodeClone?this.options.getNodeClone(t):l()(Object.assign({},t.data),["id"])},t.prototype.allowDrop=function(t,e,n){return this.options.allowDrop instanceof Function?this.options.allowDrop(t,e,n):void 0===this.options.allowDrop||this.options.allowDrop},t.prototype.allowDrag=function(t){return this.options.allowDrag instanceof Function?this.options.allowDrag(t):this.options.allowDrag},t.prototype.nodeClass=function(t){return this.options.nodeClass?this.options.nodeClass(t):""},t.prototype.nodeHeight=function(t){if(t.data.virtual)return 0;var e=this.options.nodeHeight||22;return"function"==typeof e&&(e=e(t)),e+(0===t.index?2:1)*this.dropSlotHeight},Object.defineProperty(t.prototype,"dropSlotHeight",{get:function(){return f()(this.options.dropSlotHeight)?this.options.dropSlotHeight:2},enumerable:!0,configurable:!0}),t}()},moLw:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("8Y7J"),s=n("SVse");e.ClickOutsideDirective=function(){function t(t,e,n){this._el=t,this._ngZone=e,this.platformId=n,this.clickOutsideEnabled=!0,this.attachOutsideOnClick=!1,this.delayClickOutsideInit=!1,this.emitOnBlur=!1,this.exclude="",this.excludeBeforeClick=!1,this.clickOutsideEvents="",this.clickOutside=new i.EventEmitter,this._nodesExcluded=[],this._events=["click"],this._initOnClickBody=this._initOnClickBody.bind(this),this._onClickBody=this._onClickBody.bind(this),this._onWindowBlur=this._onWindowBlur.bind(this)}return t.prototype.ngOnInit=function(){s.isPlatformBrowser(this.platformId)&&this._init()},t.prototype.ngOnDestroy=function(){s.isPlatformBrowser(this.platformId)&&(this._removeClickOutsideListener(),this._removeAttachOutsideOnClickListener(),this._removeWindowBlurListener())},t.prototype.ngOnChanges=function(t){s.isPlatformBrowser(this.platformId)&&(t.attachOutsideOnClick||t.exclude||t.emitOnBlur)&&this._init()},t.prototype._init=function(){""!==this.clickOutsideEvents&&(this._events=this.clickOutsideEvents.split(",").map((function(t){return t.trim()}))),this._excludeCheck(),this.attachOutsideOnClick?this._initAttachOutsideOnClickListener():this._initOnClickBody(),this.emitOnBlur&&this._initWindowBlurListener()},t.prototype._initOnClickBody=function(){this.delayClickOutsideInit?setTimeout(this._initClickOutsideListener.bind(this)):this._initClickOutsideListener()},t.prototype._excludeCheck=function(){if(this.exclude)try{var t=Array.from(document.querySelectorAll(this.exclude));t&&(this._nodesExcluded=t)}catch(e){console.error("[ng-click-outside] Check your exclude selector syntax.",e)}},t.prototype._onClickBody=function(t){this.clickOutsideEnabled&&(this.excludeBeforeClick&&this._excludeCheck(),this._el.nativeElement.contains(t.target)||this._shouldExclude(t.target)||(this._emit(t),this.attachOutsideOnClick&&this._removeClickOutsideListener()))},t.prototype._onWindowBlur=function(t){var e=this;setTimeout((function(){document.hidden||e._emit(t)}))},t.prototype._emit=function(t){var e=this;this.clickOutsideEnabled&&this._ngZone.run((function(){return e.clickOutside.emit(t)}))},t.prototype._shouldExclude=function(t){for(var e=0,n=this._nodesExcluded;e<n.length;e++)if(n[e].contains(t))return!0;return!1},t.prototype._initClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.addEventListener(e,t._onClickBody)}))}))},t.prototype._removeClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.removeEventListener(e,t._onClickBody)}))}))},t.prototype._initAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.addEventListener(e,t._initOnClickBody)}))}))},t.prototype._removeAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.removeEventListener(e,t._initOnClickBody)}))}))},t.prototype._initWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.addEventListener("blur",t._onWindowBlur)}))},t.prototype._removeWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.removeEventListener("blur",t._onWindowBlur)}))},a([i.Input(),r("design:type",Boolean)],t.prototype,"clickOutsideEnabled",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"attachOutsideOnClick",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"delayClickOutsideInit",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"emitOnBlur",void 0),a([i.Input(),r("design:type",String)],t.prototype,"exclude",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"excludeBeforeClick",void 0),a([i.Input(),r("design:type",String)],t.prototype,"clickOutsideEvents",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"clickOutside",void 0),a([i.Injectable(),i.Directive({selector:"[clickOutside]"})],t)}()},mrSG:function(t,e,n){"use strict";n.r(e),n.d(e,"__extends",(function(){return r})),n.d(e,"__assign",(function(){return i})),n.d(e,"__rest",(function(){return s})),n.d(e,"__decorate",(function(){return o})),n.d(e,"__param",(function(){return u})),n.d(e,"__metadata",(function(){return d})),n.d(e,"__awaiter",(function(){return l})),n.d(e,"__generator",(function(){return c})),n.d(e,"__exportStar",(function(){return f})),n.d(e,"__values",(function(){return h})),n.d(e,"__read",(function(){return g})),n.d(e,"__spread",(function(){return p})),n.d(e,"__spreadArrays",(function(){return b})),n.d(e,"__await",(function(){return m})),n.d(e,"__asyncGenerator",(function(){return y})),n.d(e,"__asyncDelegator",(function(){return v})),n.d(e,"__asyncValues",(function(){return x})),n.d(e,"__makeTemplateObject",(function(){return _})),n.d(e,"__importStar",(function(){return T})),n.d(e,"__importDefault",(function(){return O})),n.d(e,"__classPrivateFieldGet",(function(){return w})),n.d(e,"__classPrivateFieldSet",(function(){return S}));var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function r(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function s(t,e){var n={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&e.indexOf(a)<0&&(n[a]=t[a]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(t);r<a.length;r++)e.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(t,a[r])&&(n[a[r]]=t[a[r]])}return n}function o(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}function u(t,e){return function(n,a){e(n,a,t)}}function d(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function l(t,e,n,a){return new(n||(n=Promise))((function(r,i){function s(t){try{u(a.next(t))}catch(e){i(e)}}function o(t){try{u(a.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,o)}u((a=a.apply(t,e||[])).next())}))}function c(t,e){var n,a,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function o(i){return function(o){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,a&&(r=2&i[0]?a.return:i[0]?a.throw||((r=a.return)&&r.call(a),0):a.next)&&!(r=r.call(a,i[1])).done)return r;switch(a=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,a=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(r=(r=s.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){s.label=i[1];break}if(6===i[0]&&s.label<r[1]){s.label=r[1],r=i;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(i);break}r[2]&&s.ops.pop(),s.trys.pop();continue}i=e.call(t,s)}catch(o){i=[6,o],a=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,o])}}}function f(t,e){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}function h(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],a=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(o){r={error:o}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function p(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(g(arguments[e]));return t}function b(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,o=i.length;s<o;s++,r++)a[r]=i[s];return a}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function y(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,r=n.apply(t,e||[]),i=[];return a={},s("next"),s("throw"),s("return"),a[Symbol.asyncIterator]=function(){return this},a;function s(t){r[t]&&(a[t]=function(e){return new Promise((function(n,a){i.push([t,e,n,a])>1||o(t,e)}))})}function o(t,e){try{!function(t){t.value instanceof m?Promise.resolve(t.value.v).then(u,d):l(i[0][2],t)}(r[t](e))}catch(n){l(i[0][3],n)}}function u(t){o("next",t)}function d(t){o("throw",t)}function l(t,e){t(e),i.shift(),i.length&&o(i[0][0],i[0][1])}}function v(t){var e,n;return e={},a("next"),a("throw",(function(t){throw t})),a("return"),e[Symbol.iterator]=function(){return this},e;function a(a,r){e[a]=t[a]?function(e){return(n=!n)?{value:m(t[a](e)),done:"return"===a}:r?r(e):e}:r}}function x(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=h(t),e={},a("next"),a("throw"),a("return"),e[Symbol.asyncIterator]=function(){return this},e);function a(n){e[n]=t[n]&&function(e){return new Promise((function(a,r){!function(t,e,n,a){Promise.resolve(a).then((function(e){t({value:e,done:n})}),e)}(a,r,(e=t[n](e)).done,e.value)}))}}}function _(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function T(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function O(t){return t&&t.__esModule?t:{default:t}}function w(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function S(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}},mtw6:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.error=0]="error",t[t.info=1]="info",t[t.success=2]="success",t}({})},"mv/X":function(t,e,n){var a=n("ljhN"),r=n("MMmD"),i=n("wJg7"),s=n("GoyQ");t.exports=function(t,e,n){if(!s(n))return!1;var o=typeof e;return!!("number"==o?r(n)&&i(e,n.length):"string"==o&&e in n)&&a(n[e],t)}},mwIZ:function(t,e,n){var a=n("ZWtO");t.exports=function(t,e,n){var r=null==t?void 0:a(t,e);return void 0===r?n:r}},"n/D3":function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return c}));var a=n("cp0P"),r=(n("SgmB"),n("ZDA6"),n("+fVR")),i=n("0+/T"),s=n("Rf2I"),o=(n("sne2"),n("x38r")),u=n("oxzT"),d=n("mtw6"),l=n("vCyI");n("nSDx"),n("aexS"),n("9nlD");const c=new(n("EgGo").a)("user-management/roles");class f extends r.a{constructor(t,e,n,a,r,i,s,o,d){super(),this.roleService=t,this.scopeService=e,this.emptyPipe=n,this.authStorageService=a,this.modalService=r,this.notificationService=i,this.i18n=s,this.urlBuilder=o,this.actionLabels=d,this.selection=new l.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:u.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"create",icon:u.a.clone,name:this.actionLabels.CLONE,disable:()=>!this.selection.hasSingleSelection,click:()=>this.cloneRole()},{permission:"update",icon:u.a.edit,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().name),name:this.actionLabels.EDIT},{permission:"delete",icon:u.a.destroy,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,click:()=>this.deleteRoleModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:3},{name:this.i18n("Description"),prop:"description",flexGrow:5,pipe:this.emptyPipe},{name:this.i18n("System Role"),prop:"system",cellClass:"text-center",flexGrow:1,cellTransformation:o.a.checkIcon}]}getRoles(){Object(a.a)([this.roleService.list(),this.scopeService.list()]).subscribe(t=>{this.roles=t[0],this.scopes=t[1]})}updateSelection(t){this.selection=t}deleteRole(t){this.roleService.delete(t).subscribe(()=>{this.getRoles(),this.modalRef.hide(),this.notificationService.show(d.a.success,this.i18n("Deleted role '{{role_name}}'",{role_name:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteRoleModal(){const t=this.selection.first().name;this.modalRef=this.modalService.show(i.a,{initialState:{itemDescription:"Role",itemNames:[t],submitAction:()=>this.deleteRole(t)}})}cloneRole(){const t=this.selection.first().name;this.modalRef=this.modalService.show(s.a,{initialState:{fields:[{type:"text",name:"newName",value:`${t}_clone`,label:this.i18n("New name"),required:!0}],titleText:this.i18n("Clone Role"),submitButtonText:this.i18n("Clone Role"),onSubmit:e=>{this.roleService.clone(t,e.newName).subscribe(()=>{this.getRoles(),this.notificationService.show(d.a.success,this.i18n("Cloned role '{{dst_name}}' from '{{src_name}}'",{src_name:t,dst_name:e.newName}))})}}})}}},"n3/R":function(t,e,n){"use strict";var a=n("0Dky");function r(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=a((function(){var t=r("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=a((function(){var t=r("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},n6bG:function(t,e,n){"use strict";function a(t){return"function"==typeof t}n.d(e,"a",(function(){return a}))},nSDx:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.isUndefined(t)||a.isNull(t)?"-":t}}},nYho:function(t,e,n){(function(t){var a;!function(r){"object"==typeof global&&global;var i,s=2147483647,o=/^xn--/,u=/[^\x20-\x7E]/,d=/[\x2E\u3002\uFF0E\uFF61]/g,l={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=Math.floor,f=String.fromCharCode;function h(t){throw RangeError(l[t])}function g(t,e){for(var n=t.length,a=[];n--;)a[n]=e(t[n]);return a}function p(t,e){var n=t.split("@"),a="";return n.length>1&&(a=n[0]+"@",t=n[1]),a+g((t=t.replace(d,".")).split("."),e).join(".")}function b(t){for(var e,n,a=[],r=0,i=t.length;r<i;)(e=t.charCodeAt(r++))>=55296&&e<=56319&&r<i?56320==(64512&(n=t.charCodeAt(r++)))?a.push(((1023&e)<<10)+(1023&n)+65536):(a.push(e),r--):a.push(e);return a}function m(t){return g(t,(function(t){var e="";return t>65535&&(e+=f((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+f(t)})).join("")}function y(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function v(t,e,n){var a=0;for(t=n?c(t/700):t>>1,t+=c(t/e);t>455;a+=36)t=c(t/35);return c(a+36*t/(t+38))}function x(t){var e,n,a,r,i,o,u,d,l,f,g,p=[],b=t.length,y=0,x=128,_=72;for((n=t.lastIndexOf("-"))<0&&(n=0),a=0;a<n;++a)t.charCodeAt(a)>=128&&h("not-basic"),p.push(t.charCodeAt(a));for(r=n>0?n+1:0;r<b;){for(i=y,o=1,u=36;r>=b&&h("invalid-input"),((d=(g=t.charCodeAt(r++))-48<10?g-22:g-65<26?g-65:g-97<26?g-97:36)>=36||d>c((s-y)/o))&&h("overflow"),y+=d*o,!(d<(l=u<=_?1:u>=_+26?26:u-_));u+=36)o>c(s/(f=36-l))&&h("overflow"),o*=f;_=v(y-i,e=p.length+1,0==i),c(y/e)>s-x&&h("overflow"),x+=c(y/e),y%=e,p.splice(y++,0,x)}return m(p)}function _(t){var e,n,a,r,i,o,u,d,l,g,p,m,x,_,T,O=[];for(m=(t=b(t)).length,e=128,n=0,i=72,o=0;o<m;++o)(p=t[o])<128&&O.push(f(p));for(a=r=O.length,r&&O.push("-");a<m;){for(u=s,o=0;o<m;++o)(p=t[o])>=e&&p<u&&(u=p);for(u-e>c((s-n)/(x=a+1))&&h("overflow"),n+=(u-e)*x,e=u,o=0;o<m;++o)if((p=t[o])<e&&++n>s&&h("overflow"),p==e){for(d=n,l=36;!(d<(g=l<=i?1:l>=i+26?26:l-i));l+=36)O.push(f(y(g+(T=d-g)%(_=36-g),0))),d=c(T/_);O.push(f(y(d,0))),i=v(n,x,a==r),n=0,++a}++n,++e}return O.join("")}i={version:"1.3.2",ucs2:{decode:b,encode:m},decode:x,encode:_,toASCII:function(t){return p(t,(function(t){return u.test(t)?"xn--"+_(t):t}))},toUnicode:function(t){return p(t,(function(t){return o.test(t)?x(t.slice(4).toLowerCase()):t}))}},void 0===(a=(function(){return i}).call(e,n,e,t))||(t.exports=a)}()}).call(this,n("YuTi")(t))},ngJS:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>e=>{for(let n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.complete()}},nmnc:function(t,e,n){var a=n("Kz5y");t.exports=a.Symbol},ntOU:function(t,e,n){"use strict";var a=n("rpNk").IteratorPrototype,r=n("fHMY"),i=n("XGwC"),s=n("1E5z"),o=n("P4y1"),u=function(){return this};t.exports=function(t,e,n){var d=e+" Iterator";return t.prototype=r(a,{next:i(1,n)}),s(t,d,!1,!0),o[d]=u,t}},nyYc:function(t,e,n){!function(t){"use strict";t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},o1bE:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n("wd/R"))},"o4+5":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1e3,["","k","M","G","T","P","E","Z","Y"])}}},"oCl/":function(t,e,n){var a=n("CH3K"),r=n("LcsW"),i=n("MvSz"),s=n("0ycA");t.exports=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)a(e,i(t)),t=r(t);return e}:s},oMSZ:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.pwdExpirationSpan=0,this.pwdExpirationSpan=t.user_pwd_expiration_span,this.pwdExpirationWarning1=t.user_pwd_expiration_warning_1,this.pwdExpirationWarning2=t.user_pwd_expiration_warning_2}}},or5M:function(t,e,n){var a=n("1hJj"),r=n("QoRX"),i=n("xYSL");t.exports=function(t,e,n,s,o,u){var d=1&n,l=t.length,c=e.length;if(l!=c&&!(d&&c>l))return!1;var f=u.get(t);if(f&&u.get(e))return f==e;var h=-1,g=!0,p=2&n?new a:void 0;for(u.set(t,e),u.set(e,t);++h<l;){var b=t[h],m=e[h];if(s)var y=d?s(m,b,h,e,t,u):s(b,m,h,t,e,u);if(void 0!==y){if(y)continue;g=!1;break}if(p){if(!r(e,(function(t,e){if(!i(p,e)&&(b===t||o(b,t,n,s,u)))return p.push(e)}))){g=!1;break}}else if(b!==m&&!o(b,m,n,s,u)){g=!1;break}}return u.delete(t),u.delete(e),g}},"otv/":function(t,e,n){var a=n("nmnc"),r=a?a.prototype:void 0,i=r?r.valueOf:void 0;t.exports=function(t){return i?Object(i.call(t)):{}}},oxzT:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.add="fa fa-plus",t.addCircle="fa fa-plus-circle",t.minusCircle="fa fa-minus-circle",t.edit="fa fa-pencil",t.destroy="fa fa-times",t.destroyCircle="fa fa-times-circle",t.exchange="fa fa-exchange",t.copy="fa fa-copy",t.clipboard="fa fa-clipboard",t.flatten="fa fa-chain-broken",t.trash="fa fa-trash-o",t.lock="fa fa-lock",t.unlock="fa fa-unlock",t.clone="fa fa-clone",t.undo="fa fa-undo",t.search="fa fa-search",t.start="fa fa-play",t.stop="fa fa-stop",t.analyse="fa fa-stethoscope",t.deepCheck="fa fa-cog",t.reweight="fa fa-balance-scale",t.left="fa fa-arrow-left",t.right="fa fa-arrow-right",t.down="fa fa-arrow-down",t.erase="fa fa-eraser",t.user="fa fa-user",t.users="fa fa-users",t.share="fa fa-share-alt",t.key="fa fa-key-modern",t.warning="fa fa-exclamation-triangle",t.info="fa fa-info",t.infoCircle="fa fa-info-circle",t.questionCircle="fa fa-question-circle-o",t.check="fa fa-check",t.show="fa fa-eye",t.paragraph="fa fa-paragraph",t.terminal="fa fa-terminal",t.magic="fa fa-magic",t.hourglass="fa fa-hourglass-o",t.filledHourglass="fa fa-hourglass",t.table="fa fa-table",t.spinner="fa fa-spinner",t.refresh="fa fa-refresh",t.bullseye="fa fa-bullseye",t.disk="fa fa-hdd-o",t.server="fa fa-server",t.filter="fa fa-filter",t.lineChart="fa fa-line-chart",t.signOut="fa fa-sign-out",t.health="fa fa-heartbeat",t.circle="fa fa-circle",t.bell="fa fa-bell",t.tag="fa fa-tag",t.leftArrow="fa fa-angle-left",t.rightArrow="fa fa-angle-right",t.leftArrowDouble="fa fa-angle-double-left",t.rightArrowDouble="fa fa-angle-double-right",t.flag="fa fa-flag",t.clearFilters="fa fa-window-close",t.download="fa fa-download",t.upload="fa fa-upload",t.large="fa fa-lg",t.large2x="fa fa-2x",t.large3x="fa fa-3x",t.stack="fa fa-stack",t.stack1x="fa fa-stack-1x",t.stack2x="fa fa-stack-2x",t.pulse="fa fa-pulse",t.spin="fa fa-spin",t.inverse="fa fa-inverse",t}({})},"p/rL":function(t,e,n){!function(t){"use strict";t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("wd/R"))},p4Cf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},pFRH:function(t,e,n){var a=n("cvCv"),r=n("O0oS"),i=n("zZ0H");t.exports=r?function(t,e){return r(t,"toString",{configurable:!0,enumerable:!1,value:a(e),writable:!0})}:i},pKUh:function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return d}));var a=n("8Y7J"),r=n("2ZVE"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%]   .nav-tabs[_ngcontent-%COMP%]   .nav-item.disabled[_ngcontent-%COMP%]   a.disabled[_ngcontent-%COMP%]{cursor:default}"],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","bs-remove-tab"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(n.preventDefault(),a=!1!==r.removeTab(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),a["ɵted"](-1,null,[" ❌"]))],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"li",[],[[2,"active",null],[2,"disabled",null]],[[null,"keydown"]],(function(t,e,n){var a=!0;return"keydown"===e&&(a=!1!==t.component.keyNavActions(n,t.context.index)&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2),(t()(),a["ɵeld"](4,0,null,null,5,"a",[["class","nav-link"],["href","javascript:void(0);"],["role","tab"]],[[1,"aria-controls",0],[1,"aria-selected",0],[1,"id",0],[2,"active",null],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.context.$implicit.active=!0)&&a),a}),null,null)),(t()(),a["ɵeld"](5,16777216,null,null,2,"span",[],null,null,null,null,null)),a["ɵdid"](6,16384,null,0,r.a,[a.ViewContainerRef],{ngTransclude:[0,"ngTransclude"]},null),(t()(),a["ɵted"](7,null,["",""])),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](9,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,"nav-item",e.context.$implicit.customClass||"");t(e,2,0,n),t(e,6,0,e.context.$implicit.headingRef),t(e,9,0,e.context.$implicit.removable)}),(function(t,e){t(e,0,0,e.context.$implicit.active,e.context.$implicit.disabled),t(e,4,0,e.context.$implicit.id?e.context.$implicit.id:"",!!e.context.$implicit.active,e.context.$implicit.id?e.context.$implicit.id+"-link":"",e.context.$implicit.active,e.context.$implicit.disabled),t(e,7,0,e.context.$implicit.heading)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"ul",[["class","nav"],["role","tablist"]],[[1,"aria-label",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"div",[["class","tab-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"nav",n.classMap),t(e,4,0,n.tabs)}),(function(t,e){t(e,0,0,e.component.ariaLabel)}))}},pL04:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},pLZG:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){return n.lift(new i(t,e))}}class i{constructor(t,e){this.predicate=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.predicate=e,this.thisArg=n,this.count=0}_next(t){let e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)}}},pMnS:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("iInd"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,r.r,[r.b,a.ViewContainerRef,a.ComponentFactoryResolver,[8,null],a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"ng-component",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.F,[],null,null)],null,null)}var u=a["ɵccf"]("ng-component",r.F,o,{},{},[])},pSRY:function(t,e,n){var a=n("QkVE");t.exports=function(t){return a(this,t).has(t)}},pZt1:function(t,e){t.exports=function(t){return t&&t.length?t[0]:void 0}},pcHL:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-children",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        [class.tree-children]="true"\n        [class.tree-children-no-padding]="node.options.levelPadding"\n        *treeAnimateOpen="\n          node.isExpanded;\n          speed: node.options.animateSpeed;\n          acceleration: node.options.animateAcceleration;\n          enabled: node.options.animateExpand\n        "\n      >\n        <tree-node-collection\n          *ngIf="node.children"\n          [nodes]="node.children"\n          [templates]="templates"\n          [treeModel]="node.treeModel"\n        >\n        </tree-node-collection>\n        <tree-loading-component\n          [style.padding-left]="node.getNodePadding()"\n          class="tree-node-loading"\n          *ngIf="!node.children"\n          [template]="templates.loadingTemplate"\n          [node]="node"\n        ></tree-loading-component>\n      </div>\n    </ng-container>\n  '})],t)}()},pkCn:function(t,e,n){"use strict";var a=n("0Dky");t.exports=function(t,e){var n=[][t];return!!n&&a((function(){n.call(null,e||function(){throw 1},1)}))}},ppGB:function(t,e){var n=Math.ceil,a=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?a:n)(t)}},pxLl:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("mrSG"),r=n("IheW"),i=n("LRne"),s=n("5+tZ"),o=n("xTzq"),u=n("8Y7J"),d=n("pL04");let l=(()=>{let t=class{constructor(t){this.http=t,this.url="api/perf_counters"}list(){return this.http.get(this.url)}get(t,e){return this.http.get(`${this.url}/${t}/${e}`).pipe(Object(s.a)(t=>Object(i.a)(t.counters)))}};return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](r.c))},token:t,providedIn:d.a}),t=a.__decorate([o.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},pxpQ:function(t,e,n){"use strict";var a=n("7o/Q"),r=n("EY2u"),i=n("LRne"),s=n("z6cu");let o=(()=>{class t{constructor(t,e,n){this.kind=t,this.value=e,this.error=n,this.hasValue="N"===t}observe(t){switch(this.kind){case"N":return t.next&&t.next(this.value);case"E":return t.error&&t.error(this.error);case"C":return t.complete&&t.complete()}}do(t,e,n){switch(this.kind){case"N":return t&&t(this.value);case"E":return e&&e(this.error);case"C":return n&&n()}}accept(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)}toObservable(){switch(this.kind){case"N":return Object(i.a)(this.value);case"E":return Object(s.a)(this.error);case"C":return Object(r.b)()}throw new Error("unexpected notification kind value")}static createNext(e){return void 0!==e?new t("N",e):t.undefinedValueNotification}static createError(e){return new t("E",void 0,e)}static createComplete(){return t.completeNotification}}return t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t})();function u(t,e=0){return function(n){return n.lift(new d(t,e))}}n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return l}));class d{constructor(t,e=0){this.scheduler=t,this.delay=e}call(t,e){return e.subscribe(new l(t,this.scheduler,this.delay))}}class l extends a.a{constructor(t,e,n=0){super(t),this.scheduler=e,this.delay=n}static dispatch(t){const{notification:e,destination:n}=t;e.observe(n),this.unsubscribe()}scheduleMessage(t){this.destination.add(this.scheduler.schedule(l.dispatch,this.delay,new c(t,this.destination)))}_next(t){this.scheduleMessage(o.createNext(t))}_error(t){this.scheduleMessage(o.createError(t)),this.unsubscribe()}_complete(){this.scheduleMessage(o.createComplete()),this.unsubscribe()}}class c{constructor(t,e){this.notification=t,this.destination=e}}},qZTm:function(t,e,n){var a=n("fR/l"),r=n("MvSz"),i=n("7GkX");t.exports=function(t){return a(t,i,r)}},qgXg:function(t,e,n){"use strict";var a=n("3N8a");class r extends a.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}schedule(t,e=0){return e>0?super.schedule(t,e):(this.delay=e,this.state=t,this.scheduler.flush(this),this)}execute(t,e){return e>0||this.closed?super.execute(t,e):this._execute(t,e)}requestAsyncId(t,e,n=0){return null!==n&&n>0||null===n&&this.delay>0?super.requestAsyncId(t,e,n):t.flush(this)}}var i=n("IjjT");class s extends i.a{}n.d(e,"a",(function(){return o}));const o=new s(r)},quSY:function(t,e,n){"use strict";var a=n("DH7j"),r=n("XoHu"),i=n("n6bG");const s=(()=>{function t(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((t,e)=>`${e+1}) ${t.toString()}`).join("\n  ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return t.prototype=Object.create(Error.prototype),t})();n.d(e,"a",(function(){return o}));let o=(()=>{class t{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}unsubscribe(){let e;if(this.closed)return;let{_parentOrParents:n,_unsubscribe:o,_subscriptions:d}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof t)n.remove(this);else if(null!==n)for(let t=0;t<n.length;++t)n[t].remove(this);if(Object(i.a)(o))try{o.call(this)}catch(l){e=l instanceof s?u(l.errors):[l]}if(Object(a.a)(d)){let t=-1,n=d.length;for(;++t<n;){const n=d[t];if(Object(r.a)(n))try{n.unsubscribe()}catch(l){e=e||[],l instanceof s?e=e.concat(u(l.errors)):e.push(l)}}}if(e)throw new s(e)}add(e){let n=e;if(!e)return t.EMPTY;switch(typeof e){case"function":n=new t(e);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof t)){const e=n;n=new t,n._subscriptions=[e]}break;default:throw new Error("unrecognized teardown "+e+" added to Subscription.")}let{_parentOrParents:a}=n;if(null===a)n._parentOrParents=this;else if(a instanceof t){if(a===this)return n;n._parentOrParents=[a,this]}else{if(-1!==a.indexOf(this))return n;a.push(this)}const r=this._subscriptions;return null===r?this._subscriptions=[n]:r.push(n),n}remove(t){const e=this._subscriptions;if(e){const n=e.indexOf(t);-1!==n&&e.splice(n,1)}}}var e;return t.EMPTY=((e=new t).closed=!0,e),t})();function u(t){return t.reduce((t,e)=>t.concat(e instanceof s?e.errors:e),[])}},r8II:function(t,e,n){"use strict";e.decode=e.parse=n("YcCt"),e.encode=e.stringify=n("6MUB")},rB9j:function(t,e,n){"use strict";var a=n("I+eb"),r=n("kmMV");a({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},rEGp:function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},rKzb:function(t,e,n){"use strict";var a=n("4syw"),r=n("8YOa").getWeakData,i=n("glrk"),s=n("hh1v"),o=n("GarU"),u=n("ImZN"),d=n("tycR"),l=n("UTVS"),c=n("afO8"),f=c.set,h=c.getterFor,g=d.find,p=d.findIndex,b=0,m=function(t){return t.frozen||(t.frozen=new y)},y=function(){this.entries=[]},v=function(t,e){return g(t.entries,(function(t){return t[0]===e}))};y.prototype={get:function(t){var e=v(this,t);if(e)return e[1]},has:function(t){return!!v(this,t)},set:function(t,e){var n=v(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=p(this.entries,(function(e){return e[0]===t}));return~e&&this.entries.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,d){var c=t((function(t,a){o(t,c,e),f(t,{type:e,id:b++,frozen:void 0}),null!=a&&u(a,t[d],t,n)})),g=h(e),p=function(t,e,n){var a=g(t),s=r(i(e),!0);return!0===s?m(a).set(e,n):s[a.id]=n,t};return a(c.prototype,{delete:function(t){var e=g(this);if(!s(t))return!1;var n=r(t);return!0===n?m(e).delete(t):n&&l(n,e.id)&&delete n[e.id]},has:function(t){var e=g(this);if(!s(t))return!1;var n=r(t);return!0===n?m(e).has(t):n&&l(n,e.id)}}),a(c.prototype,n?{get:function(t){var e=g(this);if(s(t)){var n=r(t);return!0===n?m(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return p(this,t,e)}}:{add:function(t){return p(this,t,!0)}}),c}}},rW0t:function(t,e,n){"use strict";var a=n("glrk");t.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},rZud:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Component)({selector:"tree-node-content",encapsulation:a.ViewEncapsulation.None,template:'\n  <span *ngIf="!template">{{ node.displayField }}</span>\n  <ng-container\n    [ngTemplateOutlet]="template"\n    [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index }">\n  </ng-container>'})],t)}()},raLr:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвилина":"хвилину":"h"===n?e?"година":"годину":t+" "+(a=+t,r={ss:e?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:e?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:e?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}function n(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}t.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(t,e){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:e,m:e,mm:e,h:"годину",hh:e,d:"день",dd:e,M:"місяць",MM:e,y:"рік",yy:e},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(t){return/^(дня|вечора)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночі":t<12?"ранку":t<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},rkAj:function(t,e,n){var a=n("g6v/"),r=n("0Dky"),i=n("UTVS"),s=Object.defineProperty,o={},u=function(t){throw t};t.exports=function(t,e){if(i(o,t))return o[t];e||(e={});var n=[][t],d=!!i(e,"ACCESSORS")&&e.ACCESSORS,l=i(e,0)?e[0]:u,c=i(e,1)?e[1]:void 0;return o[t]=!!n&&!r((function(){if(d&&!a)return!0;var t={length:-1};d?s(t,1,{enumerable:!0,get:u}):t[1]=1,n.call(t,l,c)}))}},rpNk:function(t,e,n){"use strict";var a,r,i,s=n("4WOD"),o=n("kRJp"),u=n("UTVS"),d=n("tiKp"),l=n("xDBR"),c=d("iterator"),f=!1;[].keys&&("next"in(i=[].keys())?(r=s(s(i)))!==Object.prototype&&(a=r):f=!0),null==a&&(a={}),l||u(a,c)||o(a,c,(function(){return this})),t.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:f}},"s+uk":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},s7LF:function(t,e,n){"use strict";n.d(e,"C",(function(){return Tt})),n.d(e,"G",(function(){return gt})),n.d(e,"D",(function(){return R})),n.d(e,"E",(function(){return pt})),n.d(e,"F",(function(){return F})),n.d(e,"c",(function(){return d})),n.d(e,"d",(function(){return h})),n.d(e,"p",(function(){return u})),n.d(e,"b",(function(){return l})),n.d(e,"e",(function(){return c})),n.d(e,"q",(function(){return p})),n.d(e,"r",(function(){return m})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return ot})),n.d(e,"u",(function(){return ht})),n.d(e,"w",(function(){return C})),n.d(e,"x",(function(){return A})),n.d(e,"j",(function(){return xt})),n.d(e,"l",(function(){return bt})),n.d(e,"g",(function(){return yt})),n.d(e,"m",(function(){return mt})),n.d(e,"v",(function(){return q})),n.d(e,"A",(function(){return M})),n.d(e,"z",(function(){return _t})),n.d(e,"h",(function(){return Ot})),n.d(e,"a",(function(){return nt})),n.d(e,"f",(function(){return it})),n.d(e,"i",(function(){return at})),n.d(e,"k",(function(){return rt})),n.d(e,"o",(function(){return x})),n.d(e,"B",(function(){return T})),n.d(e,"n",(function(){return wt})),n.d(e,"y",(function(){return St}));var a=n("8Y7J"),r=n("cUpR"),i=n("cp0P"),s=n("Cfvw"),o=n("lJxs");const u=new a.InjectionToken("NgValueAccessor");class d{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}const l=new a.InjectionToken("CompositionEventMode");class c{constructor(t,e,n){this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=t=>{},this.onTouched=()=>{},this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const t=Object(r.q)()?Object(r.q)().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}class f{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}reset(t){this.control&&this.control.reset(t)}hasError(t,e){return!!this.control&&this.control.hasError(t,e)}getError(t,e){return this.control?this.control.getError(t,e):null}}class h extends f{get formDirective(){return null}get path(){return null}}function g(){throw new Error("unimplemented")}class p extends f{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null,this._rawValidators=[],this._rawAsyncValidators=[]}get validator(){return g()}get asyncValidator(){return g()}}class b{constructor(t){this._cd=t}get ngClassUntouched(){return!!this._cd.control&&this._cd.control.untouched}get ngClassTouched(){return!!this._cd.control&&this._cd.control.touched}get ngClassPristine(){return!!this._cd.control&&this._cd.control.pristine}get ngClassDirty(){return!!this._cd.control&&this._cd.control.dirty}get ngClassValid(){return!!this._cd.control&&this._cd.control.valid}get ngClassInvalid(){return!!this._cd.control&&this._cd.control.invalid}get ngClassPending(){return!!this._cd.control&&this._cd.control.pending}}class m extends b{constructor(t){super(t)}}class y extends b{constructor(t){super(t)}}function v(t){return null==t||0===t.length}const x=new a.InjectionToken("NgValidators"),_=/^(?=.{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 T{static min(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n<t?{min:{min:t,actual:e.value}}:null}}static max(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}}static required(t){return v(t.value)?{required:!0}:null}static requiredTrue(t){return!0===t.value?null:{required:!0}}static email(t){return v(t.value)?null:_.test(t.value)?null:{email:!0}}static minLength(t){return e=>{if(v(e.value))return null;const n=e.value?e.value.length:0;return n<t?{minlength:{requiredLength:t,actualLength:n}}:null}}static maxLength(t){return e=>{const n=e.value?e.value.length:0;return n>t?{maxlength:{requiredLength:t,actualLength:n}}:null}}static pattern(t){if(!t)return T.nullValidator;let e,n;return"string"==typeof t?(n="","^"!==t.charAt(0)&&(n+="^"),n+=t,"$"!==t.charAt(t.length-1)&&(n+="$"),e=new RegExp(n)):(n=t.toString(),e=t),t=>{if(v(t.value))return null;const a=t.value;return e.test(a)?null:{pattern:{requiredPattern:n,actualValue:a}}}}static nullValidator(t){return null}static compose(t){if(!t)return null;const e=t.filter(O);return 0==e.length?null:function(t){return S(function(t,e){return e.map(e=>e(t))}(t,e))}}static composeAsync(t){if(!t)return null;const e=t.filter(O);return 0==e.length?null:function(t){const n=function(t,e){return e.map(e=>e(t))}(t,e).map(w);return Object(i.a)(n).pipe(Object(o.a)(S))}}}function O(t){return null!=t}function w(t){const e=Object(a["ɵisPromise"])(t)?Object(s.a)(t):t;if(!Object(a["ɵisObservable"])(e))throw new Error("Expected validator to return Promise or Observable.");return e}function S(t){const e=t.reduce((t,e)=>null!=e?Object.assign({},t,e):t,{});return 0===Object.keys(e).length?null:e}function I(t){return t.validate?e=>t.validate(e):t}function N(t){return t.validate?e=>t.validate(e):t}class C{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}class R{constructor(){this._accessors=[]}add(t,e){this._accessors.push([t,e])}remove(t){for(let e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)}select(t){this._accessors.forEach(e=>{this._isSameGroup(e,t)&&e[1]!==t&&e[1].fireUncheck(t.value)})}_isSameGroup(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name}}class A{constructor(t,e,n,a){this._renderer=t,this._elementRef=e,this._registry=n,this._injector=a,this.onChange=()=>{},this.onTouched=()=>{}}ngOnInit(){this._control=this._injector.get(p),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)}registerOnChange(t){this._fn=t,this.onChange=()=>{t(this.value),this._registry.select(this)}}fireUncheck(t){this.writeValue(t)}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_checkName(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)}_throwNameError(){throw new Error('\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')}}const k='\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });',E='\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });',L='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>';class D{static controlParentException(){throw new Error(`formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      ${k}`)}static ngModelGroupException(){throw new Error(`formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        ${E}\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        ${L}`)}static missingFormException(){throw new Error(`formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       ${k}`)}static groupParentException(){throw new Error(`formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      ${E}`)}static arrayParentException(){throw new Error('formArrayName must be used with a parent formGroup directive.  You\'ll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        \n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; index as i">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });')}static disabledAttrWarning(){console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")}static ngModelWarning(t){console.warn(`\n    It looks like you're using ngModel on the same form field as ${t}. \n    Support for using the ngModel input property and ngModelChange event with \n    reactive form directives has been deprecated in Angular v6 and will be removed \n    in Angular v7.\n    \n    For more information on this, see our API docs here:\n    https://angular.io/api/forms/${"formControl"===t?"FormControlDirective":"FormControlName"}#use-with-ngmodel\n    `)}}function P(t,e){return null==t?`${e}`:(e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class M{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error(`compareWith must be a function, but received ${JSON.stringify(t)}`);this._compareWith=t}writeValue(t){this.value=t;const e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);const n=P(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)}registerOnChange(t){this.onChange=e=>{this.value=this._getOptionValue(e),t(this.value)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e),t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e):t}}class q{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption())}set ngValue(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(P(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function j(t,e){return null==t?`${e}`:("string"==typeof e&&(e=`'${e}'`),e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class F{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){null!=this._select&&(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function G(t,e){return[...e.path,t]}function V(t,e){t||H(e,"Cannot find control with"),e.valueAccessor||H(e,"No value accessor for form control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator]),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(n=>{t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&z(t,e)})}(t,e),function(t,e){t.registerOnChange((t,n)=>{e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&z(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),e.valueAccessor.setDisabledState&&t.registerOnDisabledChange(t=>{e.valueAccessor.setDisabledState(t)}),e._rawValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())}),e._rawAsyncValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())})}function z(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function B(t,e){null==t&&H(e,"Cannot find control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator])}function Y(t){return H(t,"There is no FormControl instance attached to form control element with")}function H(t,e){let n;throw n=t.path.length>1?`path: '${t.path.join(" -> ")}'`:t.path[0]?`name: '${t.path}'`:"unspecified name attribute",new Error(`${e} ${n}`)}function U(t){return null!=t?T.compose(t.map(I)):null}function W(t){return null!=t?T.composeAsync(t.map(N)):null}function K(t,e){if(!t.hasOwnProperty("model"))return!1;const n=t.model;return!!n.isFirstChange()||!Object(a["ɵlooseIdentical"])(e,n.currentValue)}const $=[d,class{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(t))}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}},C,M,class{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error(`compareWith must be a function, but received ${JSON.stringify(t)}`);this._compareWith=t}writeValue(t){let e;if(this.value=t,Array.isArray(t)){const n=t.map(t=>this._getOptionId(t));e=(t,e)=>{t._setSelected(n.indexOf(e.toString())>-1)}}else e=(t,e)=>{t._setSelected(!1)};this._optionMap.forEach(e)}registerOnChange(t){this.onChange=e=>{const n=[];if(e.hasOwnProperty("selectedOptions")){const t=e.selectedOptions;for(let e=0;e<t.length;e++){const a=t.item(e),r=this._getOptionValue(a.value);n.push(r)}}else{const t=e.options;for(let e=0;e<t.length;e++){const a=t.item(e);if(a.selected){const t=this._getOptionValue(a.value);n.push(t)}}}this.value=n,t(n)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(t){const e=(this._idCounter++).toString();return this._optionMap.set(e,t),e}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e)._value,t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e)._value:t}},A];function Z(t,e){t._syncPendingControls(),e.forEach(t=>{const e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)})}function J(t,e){if(!e)return null;Array.isArray(e)||H(t,"Value accessor was not provided as an array for form control with");let n=void 0,a=void 0,r=void 0;return e.forEach(e=>{var i;e.constructor===c?n=e:(i=e,$.some(t=>i.constructor===t)?(a&&H(t,"More than one built-in value accessor matches form control with"),a=e):(r&&H(t,"More than one custom value accessor matches form control with"),r=e))}),r||a||n||(H(t,"No valid value accessor for form control with"),null)}function Q(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}function X(t){const e=et(t)?t.validators:t;return Array.isArray(e)?U(e):e||null}function tt(t,e){const n=et(e)?e.asyncValidators:t;return Array.isArray(n)?W(n):n||null}function et(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class nt{constructor(t,e){this.validator=t,this.asyncValidator=e,this._onCollectionChange=()=>{},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}get parent(){return this._parent}get valid(){return"VALID"===this.status}get invalid(){return"INVALID"===this.status}get pending(){return"PENDING"==this.status}get disabled(){return"DISABLED"===this.status}get enabled(){return"DISABLED"!==this.status}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this.validator=X(t)}setAsyncValidators(t){this.asyncValidator=tt(t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(t=>t.markAllAsTouched())}markAsUntouched(t={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}markAsDirty(t={}){this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}markAsPristine(t={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}markAsPending(t={}){this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}disable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="DISABLED",this.errors=null,this._forEachChild(e=>{e.disable(Object.assign({},t,{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!0))}enable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="VALID",this._forEachChild(e=>{e.enable(Object.assign({},t,{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(t){this._parent=t}updateValueAndValidity(t={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this.status||this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t){if(this.asyncValidator){this.status="PENDING";const e=w(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(e=>this.setErrors(e,{emitEvent:t}))}}_cancelExistingSubscription(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)}get(t){return function(t,e,n){return null==e?null:(e instanceof Array||(e=e.split(".")),e instanceof Array&&0===e.length?null:e.reduce((t,e)=>t instanceof rt?t.controls.hasOwnProperty(e)?t.controls[e]:null:t instanceof it&&t.at(e)||null,t))}(this,t)}getError(t,e){const n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}_initObservables(){this.valueChanges=new a.EventEmitter,this.statusChanges=new a.EventEmitter}_calculateStatus(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t={}){this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}_updateTouched(t={}){this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}_isBoxedValue(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){et(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){return!t&&this._parent&&this._parent.dirty&&!this._parent._anyControlsDirty()}}class at extends nt{constructor(t=null,e,n){super(X(e),tt(n,e)),this._onChange=[],this._applyFormState(t),this._setUpdateStrategy(e),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),this._initObservables()}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(t=>t(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=null,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_clearChangeFns(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=()=>{}}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_forEachChild(t){}_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(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}class rt extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}removeControl(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){this._checkAllValuesPresent(t),Object.keys(t).forEach(n=>{this._throwIfControlMissing(n),this.controls[n].setValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){Object.keys(t).forEach(n=>{this.controls[n]&&this.controls[n].patchValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t={},e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,n)=>(t[n]=e instanceof at?e.value:e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(t,e)=>!!e._syncPendingControls()||t);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!Object.keys(this.controls).length)throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[t])throw new Error(`Cannot find form control with name: ${t}.`)}_forEachChild(t){Object.keys(this.controls).forEach(e=>t(this.controls[e],e))}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){let e=!1;return this._forEachChild((n,a)=>{e=e||this.contains(a)&&t(n)}),e}_reduceValue(){return this._reduceChildren({},(t,e,n)=>((e.enabled||this.disabled)&&(t[n]=e.value),t))}_reduceChildren(t,e){let n=t;return this._forEachChild((t,a)=>{n=e(n,t,a)}),n}_allControlsDisabled(){for(const t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control with name: '${n}'.`)})}}class it extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}at(t){return this.controls[t]}push(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()}insert(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()}removeAt(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),this.updateValueAndValidity()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){this._checkAllValuesPresent(t),t.forEach((t,n)=>{this._throwIfControlMissing(n),this.at(n).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t.forEach((t,n)=>{this.at(n)&&this.at(n).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t=[],e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t instanceof at?t.value:t.getRawValue())}clear(){this.controls.length<1||(this._forEachChild(t=>t._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity())}_syncPendingControls(){let t=this.controls.reduce((t,e)=>!!e._syncPendingControls()||t,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(t))throw new Error(`Cannot find form control at index ${t}`)}_forEachChild(t){this.controls.forEach((e,n)=>{t(e,n)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control at index: ${n}.`)})}_allControlsDisabled(){for(const t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}}const st=(()=>Promise.resolve(null))();class ot extends h{constructor(t,e){super(),this.submitted=!1,this._directives=[],this.ngSubmit=new a.EventEmitter,this.form=new rt({},U(t),W(e))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){st.then(()=>{const e=this._findContainer(t.path);t.control=e.registerControl(t.name,t.control),V(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.push(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name),Q(this._directives,t)})}addFormGroup(t){st.then(()=>{const e=this._findContainer(t.path),n=new rt({});B(n,t),e.registerControl(t.name,n),n.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,e){st.then(()=>{this.form.get(t.path).setValue(e)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submitted=!0,Z(this.form,this._directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}}class ut{static modelParentException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup's partner directive "formControlName" instead.  Example:\n\n      ${k}\n\n      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n      Example:\n\n      \n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  `)}static formGroupNameException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      ${E}\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      ${L}`)}static missingNameException(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')}static modelGroupParentException(){throw new Error(`\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      ${E}\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      ${L}`)}static ngFormWarning(){console.warn("\n    It looks like you're using 'ngForm'.\n\n    Support for using the 'ngForm' element selector has been deprecated in Angular v6 and will be removed\n    in Angular v9.\n\n    Use 'ng-form' instead.\n\n    Before:\n    <ngForm #myForm=\"ngForm\">\n\n    After:\n    <ng-form #myForm=\"ngForm\">\n    ")}}const dt=new a.InjectionToken("NgFormSelectorWarning");class lt extends h{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return G(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){}}class ct extends lt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){this._parent instanceof ct||this._parent instanceof ot||ut.modelGroupParentException()}}const ft=(()=>Promise.resolve(null))();class ht extends p{constructor(t,e,n,r){super(),this.control=new at,this._registered=!1,this.update=new a.EventEmitter,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=J(this,r)}ngOnChanges(t){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in t&&this._updateDisabled(t),K(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?G(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_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(){V(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){!(this._parent instanceof ct)&&this._parent instanceof lt?ut.formGroupNameException():this._parent instanceof ct||this._parent instanceof ot||ut.modelParentException()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||ut.missingNameException()}_updateValue(t){ft.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1})})}_updateDisabled(t){const e=t.isDisabled.currentValue,n=""===e||e&&"false"!==e;ft.then(()=>{n&&!this.control.disabled?this.control.disable():!n&&this.control.disabled&&this.control.enable()})}}class gt{}const pt=new a.InjectionToken("NgModelWithFormControlWarning");class bt extends h{constructor(t,e){super(),this._validators=t,this._asyncValidators=e,this.submitted=!1,this.directives=[],this.form=null,this.ngSubmit=new a.EventEmitter}ngOnChanges(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(t){const e=this.form.get(t.path);return V(e,t),e.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),e}getControl(t){return this.form.get(t.path)}removeControl(t){Q(this.directives,t)}addFormGroup(t){const e=this.form.get(t.path);B(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormGroup(t){}getFormGroup(t){return this.form.get(t.path)}addFormArray(t){const e=this.form.get(t.path);B(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormArray(t){}getFormArray(t){return this.form.get(t.path)}updateModel(t,e){this.form.get(t.path).setValue(e)}onSubmit(t){return this.submitted=!0,Z(this.form,this.directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_updateDomValue(){this.directives.forEach(t=>{const e=this.form.get(t.path);t.control!==e&&(function(t,e){e.valueAccessor.registerOnChange(()=>Y(e)),e.valueAccessor.registerOnTouched(()=>Y(e)),e._rawValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),e._rawAsyncValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),t&&t._clearChangeFns()}(t.control,t),e&&V(e,t),t.control=e)}),this.form._updateTreeValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(()=>this._updateDomValue()),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{}),this._oldForm=this.form}_updateValidators(){const t=U(this._validators);this.form.validator=T.compose([this.form.validator,t]);const e=W(this._asyncValidators);this.form.asyncValidator=T.composeAsync([this.form.asyncValidator,e])}_checkFormPresent(){this.form||D.missingFormException()}}class mt extends lt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){vt(this._parent)&&D.groupParentException()}}class yt extends h{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return G(this.name,this._parent)}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){vt(this._parent)&&D.arrayParentException()}}function vt(t){return!(t instanceof mt||t instanceof bt||t instanceof yt)}let xt=(()=>{class t extends p{constructor(t,e,n,r,i){super(),this._ngModelWarningConfig=i,this._added=!1,this.update=new a.EventEmitter,this._ngModelWarningSent=!1,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=J(this,r)}set isDisabled(t){D.disabledAttrWarning()}ngOnChanges(e){var n,r;this._added||this._setUpControl(),K(e,this.viewModel)&&("formControlName",n=t,this,r=this._ngModelWarningConfig,Object(a.isDevMode)()&&"never"!==r&&((null!==r&&"once"!==r||n._ngModelWarningSentOnce)&&("always"!==r||this._ngModelWarningSent)||(D.ngModelWarning("formControlName"),n._ngModelWarningSentOnce=!0,this._ngModelWarningSent=!0)),this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}get path(){return G(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}_checkParentType(){!(this._parent instanceof mt)&&this._parent instanceof lt?D.ngModelGroupException():this._parent instanceof mt||this._parent instanceof bt||this._parent instanceof yt||D.controlParentException()}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0}}return t._ngModelWarningSentOnce=!1,t})();class _t{get required(){return this._required}set required(t){this._required=null!=t&&!1!==t&&"false"!==`${t}`,this._onChange&&this._onChange()}validate(t){return this.required?T.required(t):null}registerOnValidatorChange(t){this._onChange=t}}class Tt{}class Ot{group(t,e=null){const n=this._reduceControls(t);let a=null,r=null,i=void 0;return null!=e&&(function(t){return void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn}(e)?(a=null!=e.validators?e.validators:null,r=null!=e.asyncValidators?e.asyncValidators:null,i=null!=e.updateOn?e.updateOn:void 0):(a=null!=e.validator?e.validator:null,r=null!=e.asyncValidator?e.asyncValidator:null)),new rt(n,{asyncValidators:r,updateOn:i,validators:a})}control(t,e,n){return new at(t,e,n)}array(t,e,n){const a=t.map(t=>this._createControl(t));return new it(a,e,n)}_reduceControls(t){const e={};return Object.keys(t).forEach(n=>{e[n]=this._createControl(t[n])}),e}_createControl(t){return t instanceof at||t instanceof rt||t instanceof it?t:Array.isArray(t)?this.control(t[0],t.length>1?t[1]:null,t.length>2?t[2]:null):this.control(t)}}class wt{static withConfig(t){return{ngModule:wt,providers:[{provide:dt,useValue:t.warnOnDeprecatedNgFormSelector}]}}}class St{static withConfig(t){return{ngModule:St,providers:[{provide:pt,useValue:t.warnOnNgModelWithFormControl}]}}}},sEFX:function(t,e,n){"use strict";var a=n("AO7/"),r=n("9d/t");t.exports=a?{}.toString:function(){return"[object "+r(this)+"]"}},sEf8:function(t,e){t.exports=function(t){return function(e){return t(e)}}},sEfC:function(t,e,n){var a=n("GoyQ"),r=n("QIyF"),i=n("tLB3"),s=Math.max,o=Math.min;t.exports=function(t,e,n){var u,d,l,c,f,h,g=0,p=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=u,a=d;return u=d=void 0,g=e,c=t.apply(a,n)}function v(t){return g=t,f=setTimeout(_,e),p?y(t):c}function x(t){var n=t-h;return void 0===h||n>=e||n<0||b&&t-g>=l}function _(){var t=r();if(x(t))return T(t);f=setTimeout(_,function(t){var n=e-(t-h);return b?o(n,l-(t-g)):n}(t))}function T(t){return f=void 0,m&&u?y(t):(u=d=void 0,c)}function O(){var t=r(),n=x(t);if(u=arguments,d=this,h=t,n){if(void 0===f)return v(h);if(b)return clearTimeout(f),f=setTimeout(_,e),y(h)}return void 0===f&&(f=setTimeout(_,e)),c}return e=i(e)||0,a(n)&&(p=!!n.leading,l=(b="maxWait"in n)?s(i(n.maxWait)||0,e):l,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==f&&clearTimeout(f),g=0,u=h=d=f=void 0},O.flush=function(){return void 0===f?c:T(r())},O}},sLuX:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm");n("FSuO"),n("a0VL"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return o}));var s=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function o(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{table:0}),(t()(),a["ɵeld"](1,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,r.b,r.a)),a["ɵdid"](2,2867200,[[1,4],["table",4]],0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],header:[4,"header"],footer:[5,"footer"],limit:[6,"limit"],autoReload:[7,"autoReload"],autoSave:[8,"autoSave"],customCss:[9,"customCss"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.tableData,n.columns,"flex",!1,!1,!1,0,n.autoReload,!1,n.customCss)}),null)}},sMBO:function(t,e,n){var a=n("g6v/"),r=n("m/L8").f,i=Function.prototype,s=i.toString,o=/^\s*function ([^ (]*)/;!a||"name"in i||r(i,"name",{configurable:!0,get:function(){try{return s.call(this).match(o)[1]}catch(t){return""}}})},sVev:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return t.prototype=Object.create(Error.prototype),t})()},sb0X:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("s7LF"),i=n("oxzT"),s=n("LvDl");class o{constructor(t){this.elRef=t,this.type="submit",this.disabled=!1,this.submitAction=new a.EventEmitter,this.loading=!1,this.icons=i.a}ngOnInit(){this.form.statusChanges.subscribe(()=>{s.has(this.form.errors,"cdSubmitButton")&&(this.loading=!1,s.unset(this.form.errors,"cdSubmitButton"),this.form instanceof r.a&&this.form.updateValueAndValidity())})}submit(t){this.focusButton(),this.form instanceof r.l&&this.form.onSubmit(t),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())}focusButton(){this.elRef.nativeElement.offsetParent.querySelector(`button[type="${this.type}"]`).focus()}focusInvalid(){const t=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");t&&t.focus()}}},seXi:function(t,e,n){var a=n("qZTm"),r=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,i,s,o){var u=1&n,d=a(t),l=d.length;if(l!=a(e).length&&!u)return!1;for(var c=l;c--;){var f=d[c];if(!(u?f in e:r.call(e,f)))return!1}var h=o.get(t);if(h&&o.get(e))return h==e;var g=!0;o.set(t,e),o.set(e,t);for(var p=u;++c<l;){var b=t[f=d[c]],m=e[f];if(i)var y=u?i(m,b,f,e,t,o):i(b,m,f,t,e,o);if(!(void 0===y?b===m||s(b,m,n,i,o):y)){g=!1;break}p||(p="constructor"==f)}if(g&&!p){var v=t.constructor,x=e.constructor;v!=x&&"constructor"in t&&"constructor"in e&&!("function"==typeof v&&v instanceof v&&"function"==typeof x&&x instanceof x)&&(g=!1)}return o.delete(t),o.delete(e),g}},shjB:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},sne2:function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"e",(function(){return s})),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u})),n.d(e,"d",(function(){return d}));var a=n("8Y7J"),r=n("GiVz");let i=(()=>{class t{}return t.organization="ceph",t.projectName="Ceph Dashboard",t.license="Free software (LGPL 2.1).",t})();var s=function(t){return t.CREATE="create",t.EDIT="edit",t.UPDATE="update",t.REMOVE="remove",t.DELETE="delete",t.ADD="add",t.COPY="copy",t.CLONE="clone",t.RECREATE="recreate",t.EXPIRE="expire",t}({}),o=function(t){return t.CREATE="Create",t.DELETE="Delete",t.ADD="Add",t.REMOVE="Remove",t.EDIT="Edit",t.CANCEL="Cancel",t.COPY="Copy",t.CLONE="Clone",t.UPDATE="Update",t.EVICT="Evict",t.SHOW="Show",t.RECREATE="Recreate",t.EXPIRE="Expire",t}({});let u=(()=>{class t{constructor(t){this.i18n=t,this.CREATE=this.i18n("Create"),this.DELETE=this.i18n("Delete"),this.ADD=this.i18n("Add"),this.SET=this.i18n("Set"),this.REMOVE=this.i18n("Remove"),this.UNSET=this.i18n("Unset"),this.EDIT=this.i18n("Edit"),this.UPDATE=this.i18n("Update"),this.CANCEL=this.i18n("Cancel"),this.CLONE=this.i18n("Clone"),this.COPY=this.i18n("Copy"),this.DEEP_SCRUB=this.i18n("Deep Scrub"),this.DESTROY=this.i18n("Destroy"),this.EVICT=this.i18n("Evict"),this.FLATTEN=this.i18n("Flatten"),this.MARK_DOWN=this.i18n("Mark Down"),this.MARK_IN=this.i18n("Mark In"),this.MARK_LOST=this.i18n("Mark Lost"),this.MARK_OUT=this.i18n("Mark Out"),this.PROTECT=this.i18n("Protect"),this.PURGE=this.i18n("Purge"),this.RENAME=this.i18n("Rename"),this.RESTORE=this.i18n("Restore"),this.REWEIGHT=this.i18n("Reweight"),this.ROLLBACK=this.i18n("Rollback"),this.SCRUB=this.i18n("Scrub"),this.SHOW=this.i18n("Show"),this.TRASH=this.i18n("Move to Trash"),this.UNPROTECT=this.i18n("Unprotect"),this.CHANGE=this.i18n("Change"),this.RECREATE=this.i18n("Recreate"),this.EXPIRE=this.i18n("Expire")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})(),d=(()=>{class t{constructor(t){this.i18n=t,this.CREATED=this.i18n("Created"),this.DELETED=this.i18n("Deleted"),this.ADDED=this.i18n("Added"),this.REMOVED=this.i18n("Removed"),this.EDITED=this.i18n("Edited"),this.CANCELED=this.i18n("Canceled"),this.CLONED=this.i18n("Cloned"),this.COPIED=this.i18n("Copied"),this.DEEP_SCRUBBED=this.i18n("Deep Scrubbed"),this.DESTROYED=this.i18n("Destroyed"),this.FLATTENED=this.i18n("Flattened"),this.MARKED_DOWN=this.i18n("Marked Down"),this.MARKED_IN=this.i18n("Marked In"),this.MARKED_LOST=this.i18n("Marked Lost"),this.MARKED_OUT=this.i18n("Marked Out"),this.PROTECTED=this.i18n("Protected"),this.PURGED=this.i18n("Purged"),this.RENAMED=this.i18n("Renamed"),this.RESTORED=this.i18n("Restored"),this.REWEIGHTED=this.i18n("Reweighted"),this.ROLLED_BACK=this.i18n("Rolled back"),this.SCRUBBED=this.i18n("Scrubbed"),this.SHOWED=this.i18n("Showed"),this.TRASHED=this.i18n("Moved to Trash"),this.UNPROTECTED=this.i18n("Unprotected"),this.CHANGE=this.i18n("Change"),this.RECREATED=this.i18n("Recreated"),this.EXPIRED=this.i18n("Expired")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},sp3z:function(t,e,n){!function(t){"use strict";t.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(t){return"ຕອນແລງ"===t},meridiem:function(t,e,n){return t<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(t){return"ທີ່"+t}})}(n("wd/R"))},"t/zF":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.name=t,this.metadata=e}}},t2Dn:function(t,e,n){var a=n("hypo"),r=n("ljhN");t.exports=function(t,e,n){(void 0===n||r(t[e],n))&&(void 0!==n||e in t)||a(t,e,n)}},tAZD:function(t,e,n){var a,r,i;!function(s){if("object"==typeof t.exports){var o=s(0,e);void 0!==o&&(t.exports=o)}else r=[n,e],void 0===(i="function"==typeof(a=s)?a.apply(e,r):a)||(t.exports=i)}((function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=void 0;e.default=["en",[["a","p"],["AM","PM"],n],[["AM","PM"],n,n],[["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"]],n,[["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"]],n,[["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}",n,"{1} 'at' {0}",n],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}]}))},tGlX:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},tLB3:function(t,e,n){var a=n("GoyQ"),r=n("/9aa"),i=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,u=/^0o[0-7]+$/i,d=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(r(t))return NaN;if(a(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=a(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(i,"");var n=o.test(t);return n||u.test(t)?d(t.slice(2),n?2:8):s.test(t)?NaN:+t}},tMB7:function(t,e,n){var a=n("y1pI");t.exports=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]}},tT3J:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("wd/R"))},tUCv:function(t,e,n){!function(t){"use strict";t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("wd/R"))},tadb:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"DataView");t.exports=a},tiKp:function(t,e,n){var a=n("2oRo"),r=n("VpIT"),i=n("UTVS"),s=n("kOOl"),o=n("STAE"),u=n("/b8u"),d=r("wks"),l=a.Symbol,c=u?l:l&&l.withoutSetter||s;t.exports=function(t){return i(d,t)||(d[t]=o&&i(l,t)?l[t]:c("Symbol."+t)),d[t]}},tycR:function(t,e,n){var a=n("A2ZE"),r=n("RK3t"),i=n("ewvW"),s=n("UMSQ"),o=n("ZfDv"),u=[].push,d=function(t){var e=1==t,n=2==t,d=3==t,l=4==t,c=6==t,f=5==t||c;return function(h,g,p,b){for(var m,y,v=i(h),x=r(v),_=a(g,p,3),T=s(x.length),O=0,w=b||o,S=e?w(h,T):n?w(h,0):void 0;T>O;O++)if((f||O in x)&&(y=_(m=x[O],O,v),t))if(e)S[O]=y;else if(y)switch(t){case 3:return!0;case 5:return m;case 6:return O;case 2:u.call(S,m)}else if(l)return!1;return c?-1:d||l?l:S}};t.exports={forEach:d(0),map:d(1),filter:d(2),some:d(3),every:d(4),find:d(5),findIndex:d(6)}},u3GI:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},u8Dt:function(t,e,n){var a=n("YESw"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(a){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return r.call(e,t)?e[t]:void 0}},uEye:function(t,e,n){!function(t){"use strict";t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uIqm:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("w9WL"),i=n("LvDl"),s=n("PqYM"),o=n("HDdC"),u=n("oxzT"),d=n("x38r");class l{constructor(t){this.errorConfig={resetData:!0,displayError:!0},this.error=t}}var c=n("vCyI");n.d(e,"a",(function(){return f}));class f{constructor(t,e){this.ngZone=t,this.cdRef=e,this.columnMode="flex",this.onlyActionHeader=!1,this.toolHeader=!0,this.searchField=!0,this.header=!0,this.footer=!0,this.limit=10,this.hasDetails=!1,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.updateExpandedOnRefresh="onChange",this.autoSave=!0,this.searchableObjects=!1,this.extraFilterableColumns=[],this.fetchData=new a.EventEmitter,this.updateSelection=new a.EventEmitter,this.setExpandedRow=new a.EventEmitter,this.columnFiltersChanged=new a.EventEmitter,this.selection=new c.a,this.expanded=void 0,this.icons=u.a,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.loadingError=!1,this.paginationClasses={pagerLeftArrow:u.a.leftArrowDouble,pagerRightArrow:u.a.rightArrowDouble,pagerPrevious:u.a.leftArrow,pagerNext:u.a.rightArrow},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1,this.columnFilters=[]}get columnFiltered(){return i.some(this.columnFilters,t=>void 0!==t.value)}static prepareSearch(t){return(t=t.toLowerCase().replace(/,/g,"")).match(/['"][^'"]+['"]/)&&(t=t.replace(/['"][^'"]+['"]/g,t=>t.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+"))),t.split(" ").filter(t=>t)}ngOnInit(){if(this.table.element.addEventListener("mouseenter",t=>t.stopPropagation(),!0),this._addTemplates(),!this.sorts){const t=-1!==i.findIndex(this.columns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(t?this.identifier:this.columns[0].prop+""),t||this.forceIdentifier||(this.identifier=this.columns[0].prop+"")}this.initUserConfig(),this.columns.forEach(t=>{t.cellTransformation&&(t.cellTemplate=this.cellTemplates[t.cellTransformation]),t.flexGrow||(t.flexGrow=t.prop+""===this.identifier?1:2),t.resizeable||(t.resizeable=!1)}),this.initExpandCollapseColumn(),this.initCheckboxColumn(),this.filterHiddenColumns(),this.initColumnFilters(),this.updateColumnFilterOptions(),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),i.isInteger(this.autoReload)&&this.autoReload>0?this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=Object(s.a)(0,this.autoReload).subscribe(()=>{this.ngZone.run(()=>this.reloadData())})}):this.autoReload?this.useData():this.reloadData()}initUserConfig(){this.autoSave&&(this.tableName=this._calculateUniqueTableName(this.columns),this._loadUserConfig(),this._initUserConfigAutoSave()),this.userConfig.limit||(this.userConfig.limit=this.limit),this.userConfig.sorts||(this.userConfig.sorts=this.sorts),this.userConfig.columns?this.columns.forEach((t,e)=>{t.isHidden=this.userConfig.columns[e].isHidden}):this.updateUserColumns()}_calculateUniqueTableName(t){const e=t=>{if(!i.isString(t))return 0;let e=0;for(let n=0;n<t.length;n++)e+=t.charCodeAt(n)*n;return e};return t.reduce((t,n,a)=>(e(n.prop)+e(n.name))*(a+1)+t,0).toString()}_loadUserConfig(){const t=this.localStorage.getItem(this.tableName);t&&(this.userConfig=JSON.parse(t))}_initUserConfigAutoSave(){const t=o.a.create(this._initUserConfigProxy.bind(this));this.saveSubscriber=t.subscribe(this._saveUserConfig.bind(this))}_initUserConfigProxy(t){this.userConfig=new Proxy(this.userConfig,{set:(e,n,a)=>(e[n]=a,t.next(e),!0)})}_saveUserConfig(t){this.localStorage.setItem(this.tableName,JSON.stringify(t))}updateUserColumns(){this.userConfig.columns=this.columns.map(t=>({prop:t.prop,name:t.name,isHidden:!!t.isHidden}))}initCheckboxColumn(){"multiClick"===this.selectionType&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,checkboxable:!0,canAutoResize:!1,cellClass:"cd-datatable-checkbox",width:30})}initExpandCollapseColumn(){this.hasDetails&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,isHidden:!1,canAutoResize:!1,cellClass:"cd-datatable-expand-collapse",width:40,cellTemplate:this.rowDetailsTpl})}filterHiddenColumns(){this.tableColumns=this.columns.filter(t=>!t.isHidden)}initColumnFilters(){let t=i.filter(this.columns,{filterable:!0});t=[...t,...this.extraFilterableColumns],this.columnFilters=t.map(t=>({column:t,options:[],value:t.filterInitValue?this.createColumnFilterOption(t.filterInitValue,t.pipe):void 0})),this.selectedFilter=i.first(this.columnFilters)}createColumnFilterOption(t,e){return{raw:i.toString(t),formatted:e?e.transform(t):i.toString(t)}}updateColumnFilterOptions(){this.columnFilters.forEach(t=>{let e=[];if(i.isUndefined(t.column.filterOptions)){const n=i.filter(i.map(this.data,t.column.prop),t=>i.isString(t)&&""!==t||i.isBoolean(t)||i.isFinite(t)||i.isDate(t));e=i.sortedUniq(n.sort())}else e=t.column.filterOptions;const n=e.map(e=>this.createColumnFilterOption(e,t.column.pipe));t.value&&i.isUndefined(i.find(n,{raw:t.value.raw}))&&(t.value=void 0),t.options=n})}onSelectFilter(t){this.selectedFilter=t}onChangeFilter(t,e){t.value=i.isEqual(t.value,e)?void 0:e,this.updateFilter()}doColumnFiltering(){const t=[];let e=[...this.data],n=[];return this.columnFilters.forEach(a=>{if(void 0===a.value)return;t.push({name:a.column.name,prop:a.column.prop,value:a.value});const s=i.partition(e,t=>{const e=Object(r.C)(a.column.prop)(t,a.column.prop);return i.isUndefined(a.column.filterPredicate)?`${e}`===a.value.raw:a.column.filterPredicate(t,a.value.raw)});e=s[0],n=[...n,...s[1]]}),this.columnFiltersChanged.emit({filters:t,data:e,dataOut:n}),i.forEach(this.selection.selected,t=>{void 0===i.find(e,{[this.identifier]:t[this.identifier]})&&(this.selection=new c.a,this.onSelect(this.selection))}),e}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()}ngAfterContentChecked(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate(),i.get(this.table,"cd").markForCheck())}_addTemplates(){this.cellTemplates.bold=this.tableCellBoldTpl,this.cellTemplates.checkIcon=this.checkIconTpl,this.cellTemplates.sparkline=this.sparklineTpl,this.cellTemplates.routerLink=this.routerLinkTpl,this.cellTemplates.perSecond=this.perSecondTpl,this.cellTemplates.executing=this.executingTpl,this.cellTemplates.classAdding=this.classAddingTpl,this.cellTemplates.badge=this.badgeTpl,this.cellTemplates.map=this.mapTpl,this.cellTemplates.truncate=this.truncateTpl}useCustomClass(t){if(!this.customCss)throw new Error("Custom classes are not set!");const e=Object.keys(this.customCss),n=Object.values(this.customCss).map((n,a)=>(i.isFunction(n)&&n(t)||n===t)&&e[a]).filter(t=>t).join(" ");return i.isEmpty(n)?void 0:n}ngOnChanges(){this.useData()}setLimit(t){const e=parseInt(t.target.value,10);e>0&&(this.userConfig.limit=e)}reloadData(){if(!this.updating){this.loadingError=!1;const t=new l(()=>{this.loadingError=t.errorConfig.displayError,t.errorConfig.resetData&&(this.data=[]),this.useData()});this.fetchData.emit(t),this.updating=!0}}refreshBtn(){this.loadingIndicator=!0,this.reloadData()}rowIdentity(){return t=>{const e=t[this.identifier];if(i.isUndefined(e))throw new Error(`Wrong identifier "${this.identifier}" -> "${e}"`);return e}}useData(){this.data&&(this.updateColumnFilterOptions(),this.updateFilter(),this.reset(),this.updateSelected(),this.updateExpanded())}reset(){this.loadingIndicator=!1,this.updating=!1}updateSelected(){if("never"===this.updateSelectionOnRefresh)return;const t=[];this.selection.selected.forEach(e=>{for(const n of this.data)e[this.identifier]===n[this.identifier]&&t.push(n)}),"onChange"===this.updateSelectionOnRefresh&&i.isEqual(this.selection.selected,t)||(this.selection.selected=t,this.onSelect(this.selection))}updateExpanded(){if(i.isUndefined(this.expanded)||"never"===this.updateExpandedOnRefresh)return;const t=this.expanded[this.identifier],e=i.find(this.data,e=>t===e[this.identifier]);"onChange"===this.updateExpandedOnRefresh&&i.isEqual(this.expanded,e)||(this.expanded=e,this.setExpandedRow.emit(e))}onSelect(t){this.selection.selected=t.selected,this.updateSelection.emit(i.clone(this.selection))}toggleColumn(t){const e=t.target.name,n=!t.target.checked;n&&1===this.tableColumns.length?t.target.checked=!0:(i.find(this.columns,t=>t.prop===e).isHidden=n,this.updateColumns())}updateColumns(){this.updateUserColumns(),this.filterHiddenColumns();const t=this.userConfig.sorts[0].prop;i.find(this.tableColumns,e=>e.prop===t)||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop)),this.table.recalculate(),this.cdRef.detectChanges()}createSortingDefinition(t){return[{prop:t,dir:r.A.asc}]}changeSorting({sorts:t}){this.userConfig.sorts=t}onClearSearch(){this.search="",this.updateFilter()}onClearFilters(){this.columnFilters.forEach(t=>{t.value=void 0}),this.selectedFilter=i.first(this.columnFilters),this.updateFilter()}updateFilter(){let t=0!==this.columnFilters.length?this.doColumnFiltering():this.data;if(this.search.length>0&&t){const e=this.columns.filter(t=>t.cellTransformation!==d.a.sparkline);t=this.subSearch(t,f.prepareSearch(this.search),e),this.table.offset=0}this.rows=t}subSearch(t,e,n){if(0===e.length||0===t.length)return t;const a=e.pop().replace(/\+/g," ").split(":"),r=[...n];return 2===a.length&&(n=r.filter(t=>-1!==t.name.toLowerCase().indexOf(a[0]))),t=this.basicDataSearch(i.last(a),t,n),this.subSearch(t,e,r)}basicDataSearch(t,e,n){return 0===t.length?e:e.filter(e=>n.filter(n=>{let a=i.get(e,n.prop);if(i.isUndefined(n.pipe)||(a=n.pipe.transform(a)),i.isUndefined(a)||i.isNull(a))return!1;if(i.isArray(a)?a=a.join(" "):(i.isNumber(a)||i.isBoolean(a))&&(a=a.toString()),i.isObjectLike(a)){if(!this.searchableObjects)return!1;a=JSON.stringify(a)}return-1!==a.toLowerCase().indexOf(t)}).length>0)}getRowClass(){return()=>({clickable:!i.isUndefined(this.selectionType)})}toggleExpandRow(t,e){e?(this.expanded=void 0,this.setExpandedRow.emit(void 0)):(this.expanded=t,this.table.rowDetail.collapseAllRows(),this.setExpandedRow.emit(t)),this.table.rowDetail.toggleExpandRow(t)}}},uNpg:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-checkbox",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <input\n        class="tree-node-checkbox"\n        type="checkbox"\n        (click)="node.mouseAction(\'checkboxClick\', $event)"\n        [checked]="node.isSelected"\n        [indeterminate]="node.isPartiallySelected"\n      />\n    </ng-container>\n  '})],t)}()},uXwI:function(t,e,n){!function(t){"use strict";var e={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(t,e,n){return n?e%10==1&&e%100!=11?t[2]:t[3]:e%10==1&&e%100!=11?t[0]:t[1]}function a(t,a,r){return t+" "+n(e[r],t,a)}function r(t,a,r){return n(e[r],t,a)}t.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(t,e){return e?"dažas sekundes":"dažām sekundēm"},ss:a,m:r,mm:a,h:r,hh:a,d:r,dd:a,M:r,MM:a,y:r,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uYzU:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){}transform(t){switch(t){case"user:rbd":return"user:rbd (tcmu-runner)";default:return t}}}},ufoC:function(t,e,n){"use strict";var a=function(t){return t.auth="Login",t.cephfs="CephFS",t.rbd="RBD",t.pool="Pool",t.osd="OSD",t.role="Role",t.user="User",t}({}),r=n("jVDg"),i=n("8Y7J"),s=n("GiVz");n.d(e,"a",(function(){return d}));class o{constructor(t,e,n){this.running=t,this.failure=e,this.success=n}}class u{failure(t){return this.i18n("Failed to {{failure}} {{metadata}}",{failure:this.operation.failure,metadata:this.involves(t)})}running(t){return`${this.operation.running} ${this.involves(t)}`}success(t){return`${this.operation.success} ${this.involves(t)}`}constructor(t,e,n,a){this.i18n=t,this.operation=e,this.involves=n,this.errors=a||(()=>({}))}}let d=(()=>{class t{constructor(t){this.i18n=t,this.defaultMessage=this.newTaskMessage(new o(this.i18n("Executing"),this.i18n("execute"),this.i18n("Executed")),t=>t&&(a[t.component]||t.component)||this.i18n("unknown task"),()=>({})),this.commonOperations={create:new o(this.i18n("Creating"),this.i18n("create"),this.i18n("Created")),update:new o(this.i18n("Updating"),this.i18n("update"),this.i18n("Updated")),delete:new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),add:new o(this.i18n("Adding"),this.i18n("add"),this.i18n("Added")),remove:new o(this.i18n("Removing"),this.i18n("remove"),this.i18n("Removed")),import:new o(this.i18n("Importing"),this.i18n("import"),this.i18n("Imported"))},this.rbd={default:t=>this.i18n("RBD '{{id}}'",{id:`${t.image_spec}`}),create:t=>{const e=new r.a(t.pool_name,t.namespace,t.image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},child:t=>{const e=new r.a(t.child_pool_name,t.child_namespace,t.child_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},destination:t=>{const e=new r.a(t.dest_pool_name,t.dest_namespace,t.dest_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},snapshot:t=>this.i18n("RBD snapshot '{{id}}'",{id:`${t.image_spec}@${t.snapshot_name}`})},this.rbd_mirroring={site_name:()=>this.i18n("mirroring site name"),bootstrap:()=>this.i18n("bootstrap token"),pool:t=>this.i18n("mirror mode for pool '{{id}}'",{id:`${t.pool_name}`}),pool_peer:t=>this.i18n("mirror peer for pool '{{id}}'",{id:`${t.pool_name}`})},this.grafana={update_dashboards:()=>this.i18n("all dashboards")},this.messages={"host/create":this.newTaskMessage(this.commonOperations.create,t=>this.host(t)),"host/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.host(t)),"osd/create":this.newTaskMessage(this.commonOperations.create,t=>this.i18n("OSDs (DriveGroups: {{tracking_id}})",{tracking_id:t.tracking_id})),"osd/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.osd(t)),"pool/create":this.newTaskMessage(this.commonOperations.create,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/edit":this.newTaskMessage(this.commonOperations.update,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.pool(t)),"ecp/create":this.newTaskMessage(this.commonOperations.create,t=>this.ecp(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.ecp(t)})})),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.ecp(t)),"crushRule/create":this.newTaskMessage(this.commonOperations.create,t=>this.crushRule(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.crushRule(t)})})),"crushRule/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.crushRule(t)),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.create,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.create(t)})})),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.default(t)})})),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,t=>({16:this.i18n("{{rbd_name}} is busy.",{rbd_name:this.rbd.default(t)}),39:this.i18n("{{rbd_name}} contains snapshots.",{rbd_name:this.rbd.default(t)})})),"rbd/clone":this.newTaskMessage(new o(this.i18n("Cloning"),this.i18n("clone"),this.i18n("Cloned")),this.rbd.child,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.child(t)}),22:this.i18n("Snapshot of {{rbd_name}} must be protected.",{rbd_name:this.rbd.child(t)})})),"rbd/copy":this.newTaskMessage(new o(this.i18n("Copying"),this.i18n("copy"),this.i18n("Copied")),this.rbd.destination,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.destination(t)})})),"rbd/flatten":this.newTaskMessage(new o(this.i18n("Flattening"),this.i18n("flatten"),this.i18n("Flattened")),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,t=>({17:this.i18n("Name is already used by {{snap_name}}.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,t=>({16:this.i18n("Cannot unprotect {{snap_name}} because it contains child images.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,t=>({16:this.i18n("Cannot delete {{snap_name}} because it's protected.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/rollback":this.newTaskMessage(new o(this.i18n("Rolling back"),this.i18n("rollback"),this.i18n("Rolled back")),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new o(this.i18n("Moving"),this.i18n("move"),this.i18n("Moved")),t=>this.i18n("image '{{id}}' to trash",{id:t.image_spec}),()=>({2:this.i18n("Could not find image.")})),"rbd/trash/restore":this.newTaskMessage(new o(this.i18n("Restoring"),this.i18n("restore"),this.i18n("Restored")),t=>this.i18n("image '{{id}}' into '{{new_id}}'",{id:t.image_id_spec,new_id:t.new_image_name}),t=>({17:this.i18n("Image name '{{id}}' is already in use.",{id:t.new_image_name})})),"rbd/trash/remove":this.newTaskMessage(new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),t=>this.i18n("image '{{id}}'",{id:`${t.image_id_spec}`})),"rbd/trash/purge":this.newTaskMessage(new o(this.i18n("Purging"),this.i18n("purge"),this.i18n("Purged")),t=>{let e=this.i18n("all pools");return t.pool_name&&(e=`'${t.pool_name}'`),this.i18n("images from {{message}}",{message:e})}),"rbd/mirroring/site_name/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.site_name,()=>({})),"rbd/mirroring/bootstrap/create":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/bootstrap/import":this.newTaskMessage(this.commonOperations.import,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,()=>({16:this.i18n("Cannot disable mirroring because it contains a peer.")})),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,()=>({})),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,t=>this.iscsiTarget(t)),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,t=>this.iscsiTarget(t)),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.iscsiTarget(t)),"nfs/create":this.newTaskMessage(this.commonOperations.create,t=>this.nfs(t)),"nfs/edit":this.newTaskMessage(this.commonOperations.update,t=>this.nfs(t)),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.nfs(t)),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,()=>({})),"orchestrator/identify_device":this.newTaskMessage(new o(this.i18n("Identifying"),this.i18n("identify"),this.i18n("Identified")),t=>this.i18n("device '{{device}}' on host '{{hostname}}'",t))}}newTaskMessage(t,e,n){return new u(this.i18n,t,e,n)}host(t){return this.i18n("host '{{hostname}}'",{hostname:t.hostname})}osd(t){return this.i18n("OSD '{{svc_id}}'",{svc_id:t.svc_id})}pool(t){return this.i18n("pool '{{pool_name}}'",{pool_name:t.pool_name})}ecp(t){return this.i18n("erasure code profile '{{name}}'",{name:t.name})}crushRule(t){return this.i18n("crush rule '{{name}}'",{name:t.name})}iscsiTarget(t){return this.i18n("target '{{target_iqn}}'",{target_iqn:t.target_iqn})}nfs(t){return this.i18n("NFS {{nfs_id}}",{nfs_id:`'${t.cluster_id}:${t.export_id?t.export_id:t.path}'`})}_getTaskTitle(t){return t.name&&t.name.startsWith("progress/")?this.newTaskMessage(new o(t.name.replace("progress/",""),"",t.name.replace("progress/","")),t=>""):this.messages[t.name]||this.defaultMessage}getSuccessTitle(t){return this._getTaskTitle(t).success(t.metadata)}getErrorMessage(t){return this._getTaskTitle(t).errors(t.metadata)[t.exception.code]||t.exception.detail}getErrorTitle(t){return this._getTaskTitle(t).failure(t.metadata)}getRunningTitle(t){return this._getTaskTitle(t).running(t.metadata)}getRunningText(t){return this._getTaskTitle(t).operation.running}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.a))},token:t,providedIn:"root"}),t})()},"ut/Y":function(t,e,n){var a=n("ZCpW"),r=n("GDhZ"),i=n("zZ0H"),s=n("Z0cm"),o=n("+c4W");t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?s(t)?r(t[0],t[1]):a(t):o(t)}},uy83:function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return Object.isExtensible(Object.preventExtensions({}))}))},uyHG:function(t,e){var n,a=/^\[object .+?Constructor\]$/,r="object"==typeof global&&global&&global.Object===Object&&global,i="object"==typeof self&&self&&self.Object===Object&&self,s=r||i||Function("return this")(),o=Array.prototype,u=Function.prototype,d=Object.prototype,l=s["__core-js_shared__"],c=(n=/[^.]+$/.exec(l&&l.keys&&l.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",f=u.toString,h=d.hasOwnProperty,g=d.toString,p=RegExp("^"+f.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),b=o.splice,m=w(s,"Map"),y=w(Object,"create");function v(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function x(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function _(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function T(t,e){for(var n,a,r=t.length;r--;)if((n=t[r][0])===(a=e)||n!=n&&a!=a)return r;return-1}function O(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function w(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return function(t){return!(!I(t)||(e=t,c&&c in e))&&(function(t){var e=I(t)?g.call(t):"";return"[object Function]"==e||"[object GeneratorFunction]"==e}(t)||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(n){}return e}(t)?p:a).test(function(t){if(null!=t){try{return f.call(t)}catch(e){}try{return t+""}catch(e){}}return""}(t));var e}(n)?n:void 0}function S(t,e){if("function"!=typeof t||e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s),s};return n.cache=new(S.Cache||_),n}function I(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}v.prototype.clear=function(){this.__data__=y?y(null):{}},v.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},v.prototype.get=function(t){var e=this.__data__;if(y){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return h.call(e,t)?e[t]:void 0},v.prototype.has=function(t){var e=this.__data__;return y?void 0!==e[t]:h.call(e,t)},v.prototype.set=function(t,e){return this.__data__[t]=y&&void 0===e?"__lodash_hash_undefined__":e,this},x.prototype.clear=function(){this.__data__=[]},x.prototype.delete=function(t){var e=this.__data__,n=T(e,t);return!(n<0||(n==e.length-1?e.pop():b.call(e,n,1),0))},x.prototype.get=function(t){var e=this.__data__,n=T(e,t);return n<0?void 0:e[n][1]},x.prototype.has=function(t){return T(this.__data__,t)>-1},x.prototype.set=function(t,e){var n=this.__data__,a=T(n,t);return a<0?n.push([t,e]):n[a][1]=e,this},_.prototype.clear=function(){this.__data__={hash:new v,map:new(m||x),string:new v}},_.prototype.delete=function(t){return O(this,t).delete(t)},_.prototype.get=function(t){return O(this,t).get(t)},_.prototype.has=function(t){return O(this,t).has(t)},_.prototype.set=function(t,e){return O(this,t).set(t,e),this},S.Cache=_,t.exports=S},vCyI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this._selected=[],t&&(this._selected=t),this.update()}update(){this.hasSelection=this._selected.length>0,this.hasSingleSelection=1===this._selected.length,this.hasMultiSelection=this._selected.length>1}set selected(t){this._selected=t,this.update()}get selected(){return this._selected}add(t){this._selected.push(t),this.update()}first(){return this.hasSelection?this._selected[0]:null}}},vkgz:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("KqfI"),i=n("n6bG");function s(t,e,n){return function(a){return a.lift(new o(t,e,n))}}class o{constructor(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}call(t,e){return e.subscribe(new u(t,this.nextOrObserver,this.error,this.complete))}}class u extends a.a{constructor(t,e,n,a){super(t),this._tapNext=r.a,this._tapError=r.a,this._tapComplete=r.a,this._tapError=n||r.a,this._tapComplete=a||r.a,Object(i.a)(e)?(this._context=this,this._tapNext=e):e&&(this._context=e,this._tapNext=e.next||r.a,this._tapError=e.error||r.a,this._tapComplete=e.complete||r.a)}_next(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)}_error(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)}_complete(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()}}},"w/wX":function(t,e,n){var a=n("QqLw"),r=n("ExA7");t.exports=function(t){return r(t)&&"[object Set]"==a(t)}},w9WL:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("XNiG"),i=n("xgIS"),s=n("2Vo4"),o=n("l7GE"),u=n("ZUHj");function d(t){return e=>e.lift(new l(t))}class l{constructor(t){this.notifier=t}call(t,e){const n=new c(t),a=Object(u.a)(n,this.notifier);return a&&!n.seenValue?(n.add(a),e.subscribe(n)):n}}class c extends o.a{constructor(t){super(t),this.seenValue=!1}notifyNext(t,e,n,a,r){this.seenValue=!0,this.complete()}notifyComplete(){}}var f=n("mrSG");n.d(e,"a",(function(){return p})),n.d(e,"b",(function(){return pt})),n.d(e,"c",(function(){return tt})),n.d(e,"d",(function(){return ht})),n.d(e,"e",(function(){return D})),n.d(e,"f",(function(){return dt})),n.d(e,"g",(function(){return b})),n.d(e,"h",(function(){return ut})),n.d(e,"i",(function(){return et})),n.d(e,"j",(function(){return lt})),n.d(e,"k",(function(){return gt})),n.d(e,"l",(function(){return mt})),n.d(e,"m",(function(){return xt})),n.d(e,"n",(function(){return ot})),n.d(e,"o",(function(){return q})),n.d(e,"p",(function(){return M})),n.d(e,"q",(function(){return P})),n.d(e,"r",(function(){return g})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return _})),n.d(e,"u",(function(){return _t})),n.d(e,"v",(function(){return x})),n.d(e,"w",(function(){return ct})),n.d(e,"x",(function(){return v})),n.d(e,"y",(function(){return h})),n.d(e,"z",(function(){return T})),n.d(e,"A",(function(){return it})),n.d(e,"B",(function(){return m})),n.d(e,"C",(function(){return w}));class h{constructor(t){this.document=t,this.width=this.getWidth()}getWidth(){const t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);const e=t.offsetWidth;t.style.overflow="scroll";const n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);const a=n.offsetWidth;return t.parentNode.removeChild(t),e-a}}class g{getDimensions(t){return t.getBoundingClientRect()}}class p{constructor(){this.columnInputChanges=new r.a}get columnInputChanges$(){return this.columnInputChanges.asObservable()}onInputChange(){this.columnInputChanges.next()}}class b{constructor(t){this.template=t}}class m{constructor(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new a.EventEmitter}ngOnInit(){this.runCheck()}ngOnDestroy(){clearTimeout(this.timeout)}onVisibilityChange(){this.zone.run(()=>{this.isVisible=!0,this.visible.emit(!0)})}runCheck(){const t=()=>{const{offsetHeight:e,offsetWidth:n}=this.element.nativeElement;e&&n?(clearTimeout(this.timeout),this.onVisibilityChange()):(clearTimeout(this.timeout),this.zone.runOutsideAngular(()=>{this.timeout=setTimeout(()=>t(),50)}))};this.timeout=setTimeout(()=>t())}}class y{constructor(t){this.dragX=!0,this.dragY=!0,this.dragStart=new a.EventEmitter,this.dragging=new a.EventEmitter,this.dragEnd=new a.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}ngOnChanges(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)}ngOnDestroy(){this._destroySubscription()}onMouseup(t){this.isDragging&&(this.isDragging=!1,this.element.classList.remove("dragging"),this.subscription&&(this._destroySubscription(),this.dragEnd.emit({event:t,element:this.element,model:this.dragModel})))}onMousedown(t){if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;const e={x:t.clientX,y:t.clientY},n=Object(i.a)(document,"mouseup");this.subscription=n.subscribe(t=>this.onMouseup(t));const a=Object(i.a)(document,"mousemove").pipe(d(n)).subscribe(t=>this.move(t,e));this.subscription.add(a),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}}move(t,e){if(!this.isDragging)return;const n=t.clientY-e.y;this.dragX&&(this.element.style.left=`${t.clientX-e.x}px`),this.dragY&&(this.element.style.top=`${n}px`),this.element.classList.add("dragging"),this.dragging.emit({event:t,element:this.element,model:this.dragModel})}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global;class v{constructor(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new a.EventEmitter,this.resizing=!1,this.element=t.nativeElement}ngAfterViewInit(){const t=this.renderer;this.resizeHandle=t.createElement("span"),t.addClass(this.resizeHandle,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,this.resizeHandle)}ngOnDestroy(){this._destroySubscription(),this.renderer.destroyNode?this.renderer.destroyNode(this.resizeHandle):this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle),this.resizeHandle)}onMouseup(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))}onMousedown(t){const e=t.target.classList.contains("resize-handle"),n=this.element.clientWidth,a=t.screenX;if(e){t.stopPropagation(),this.resizing=!0;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup());const r=Object(i.a)(document,"mousemove").pipe(d(e)).subscribe(t=>this.move(t,n,a));this.subscription.add(r)}}move(t,e,n){const a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=`${a}px`)}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class x{constructor(t,e){this.document=e,this.reorder=new a.EventEmitter,this.targetChanged=new a.EventEmitter,this.differ=t.find({}).create()}ngAfterContentInit(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))}ngOnDestroy(){this.draggables.forEach(t=>{t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})}updateSubscriptions(){const t=this.differ.diff(this.createMapDiffs());if(t){const e=({currentValue:t,previousValue:e})=>{n({previousValue:e}),t&&(t.dragStart.subscribe(this.onDragStart.bind(this)),t.dragging.subscribe(this.onDragging.bind(this)),t.dragEnd.subscribe(this.onDragEnd.bind(this)))},n=({previousValue:t})=>{t&&(t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe())};t.forEachAddedItem(e),t.forEachRemovedItem(n)}}onDragStart(){this.positions={};let t=0;for(const e of this.draggables.toArray()){const n=e.element,a=parseInt(n.offsetLeft.toString(),0);this.positions[e.dragModel.prop]={left:a,right:a+parseInt(n.offsetWidth.toString(),0),index:t++,element:n}}}onDragging({model:t,event:e}){const n=this.positions[t.prop],a=this.isTarget(t,e);a?this.lastDraggingIndex!==a.i&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,newIndex:a.i,initialIndex:n.index}),this.lastDraggingIndex=a.i):this.lastDraggingIndex!==n.index&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,initialIndex:n.index}),this.lastDraggingIndex=n.index)}onDragEnd({element:t,model:e,event:n}){const a=this.positions[e.prop],r=this.isTarget(e,n);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:e}),this.lastDraggingIndex=void 0,t.style.left="auto"}isTarget(t,e){let n=0;const a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY);for(const r in this.positions){const e=this.positions[r];if(t.prop!==r&&a.find(t=>t===e.element))return{pos:e,i:n};n++}}createMapDiffs(){return this.draggables.toArray().reduce((t,e)=>(t[e.dragModel.$$id]=e,t),{})}}class _{constructor(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new a.EventEmitter,this.longPressing=new a.EventEmitter,this.longPressEnd=new a.EventEmitter,this.mouseX=0,this.mouseY=0}get press(){return this.pressing}get isLongPress(){return this.isLongPressing}onMouseDown(t){if(1!==t.which||!this.pressEnabled)return;if(t.target.classList.contains("resize-handle"))return;this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup()),this.timeout=setTimeout(()=>{this.isLongPressing=!0,this.longPressStart.emit({event:t,model:this.pressModel}),this.subscription.add(Object(i.a)(document,"mousemove").pipe(d(e)).subscribe(t=>this.onMouseMove(t))),this.loop(t)},this.duration),this.loop(t)}onMouseMove(t){if(this.pressing&&!this.isLongPressing){const e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}}loop(t){this.isLongPressing&&(this.timeout=setTimeout(()=>{this.longPressing.emit({event:t,model:this.pressModel}),this.loop(t)},50))}endPress(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})}onMouseup(){this.endPress()}ngOnDestroy(){this._destroySubscription()}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class T{constructor(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new a.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this._scrollEventListener=null,this.element=e.nativeElement}ngOnInit(){if(this.scrollbarV||this.scrollbarH){const t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this._scrollEventListener=this.onScrolled.bind(this),this.parentElement.addEventListener("scroll",this._scrollEventListener)}}ngOnDestroy(){this._scrollEventListener&&(this.parentElement.removeEventListener("scroll",this._scrollEventListener),this._scrollEventListener=null)}setOffset(t){this.parentElement&&(this.parentElement.scrollTop=t)}onScrolled(t){const e=t.currentTarget;requestAnimationFrame(()=>{this.scrollYPos=e.scrollTop,this.scrollXPos=e.scrollLeft,this.updateOffset()})}updateOffset(){let t;this.scrollYPos<this.prevScrollYPos?t="down":this.scrollYPos>this.prevScrollYPos&&(t="up"),this.scroll.emit({direction:t,scrollYPos:this.scrollYPos,scrollXPos:this.scrollXPos}),this.prevScrollYPos=this.scrollYPos,this.prevScrollXPos=this.scrollXPos}}function O(){return""}function w(t){return null==t?O:"number"==typeof t?S:-1!==t.indexOf(".")?N:I}function S(t,e){if(null==t)return"";if(!t||null==e)return t;const n=t[e];return null==n?"":n}function I(t,e){if(null==t)return"";if(!t||!e)return t;const n=t[e];return null==n?"":n}function N(t,e){if(null==t)return"";if(!t||!e)return t;let n=t[e];if(void 0!==n)return n;n=t;const a=e.split(".");if(a.length)for(let r=0;r<a.length;r++)if(n=n[a[r]],null==n)return"";return n}function C(t){return t&&(e=>w(t)(e,t))}function R(t,e,n){if(e&&n){const a={},r=t.length;let i=null;a[0]=new A;const s=t.reduce((t,e)=>{const a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]);for(let e=0;e<r;e++)a[n(t[e])]=new A(t[e]);for(let u=0;u<r;u++){i=a[n(t[u])];let r=0;const o=e(i.row);o&&s.indexOf(o)>-1&&(r=o),i.parent=a[r],i.row.level=i.parent.row.level+1,i.parent.children.push(i)}let o=[];return a[0].flatten((function(){o=[...o,this.row]}),!0),o}return t}class A{constructor(t=null){t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}flatten(t,e){if("expanded"===this.row.treeStatus)for(let n=0,a=this.children.length;n<a;n++){const a=this.children[n];t.apply(a,Array.prototype.slice.call(arguments,2)),e&&a.flatten.apply(a,arguments)}}}function k(t){return(t=(t=(t=t.replace(/[^a-zA-Z0-9 ]/g," ")).replace(/([a-z](?=[A-Z]))/g,"$1 ")).replace(/([^a-zA-Z0-9 ])|^[0-9]+/g,"").trim().toLowerCase()).replace(/([ 0-9]+)([a-zA-Z])/g,(function(t,e,n){return e.trim()+n.toUpperCase()}))}function E(t){if(!t)return;let e=!1;for(const n of t)n.$$id||(n.$$id=("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)),L(n.prop)&&n.name&&(n.prop=k(n.name)),n.$$valueGetter||(n.$$valueGetter=w(n.prop)),!L(n.prop)&&L(n.name)&&(n.name=String(n.prop).replace(/([A-Z])/g,t=>` ${t}`).replace(/^./,t=>t.toUpperCase())),L(n.prop)&&L(n.name)&&(n.name=""),n.hasOwnProperty("resizeable")||(n.resizeable=!0),n.hasOwnProperty("sortable")||(n.sortable=!0),n.hasOwnProperty("draggable")||(n.draggable=!0),n.hasOwnProperty("canAutoResize")||(n.canAutoResize=!0),n.hasOwnProperty("width")||(n.width=150),n.hasOwnProperty("isTreeColumn")&&n.isTreeColumn&&!e?e=!0:n.isTreeColumn=!1}function L(t){return null==t}class D{constructor(t){this.template=t}}class P{constructor(t){this.template=t}}class M{constructor(){this.rowHeight=0,this.toggle=new a.EventEmitter}get template(){return this._templateInput||this._templateQuery}toggleExpandRow(t){this.toggle.emit({type:"row",value:t})}expandAllRows(){this.toggle.emit({type:"all",value:!0})}collapseAllRows(){this.toggle.emit({type:"all",value:!1})}}class q{get template(){return this._templateInput||this._templateQuery}}function j(t){const e={left:[],center:[],right:[]};if(t)for(const n of t)n.frozenLeft?e.left.push(n):n.frozenRight?e.right.push(n):e.center.push(n);return e}function F(t,e){return{left:G(t.left),center:G(t.center),right:G(t.right),total:Math.floor(G(e))}}function G(t,e){let n=0;if(t)for(const a of t)n+=parseFloat(e&&a[e]?a[e]:a.width);return n}function V(t){const e=[],n=j(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}class z{constructor(){this.treeArray=[]}clearCache(){this.treeArray=[]}initCache(t){const{rows:e,rowHeight:n,detailRowHeight:a,externalVirtual:r,rowCount:i,rowIndexes:s,rowExpansions:o}=t,u="function"==typeof n,d="function"==typeof a;if(!u&&isNaN(n))throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n        valid number or function value: (${n}) when 'scrollbarV' is enabled.`);if(!d&&isNaN(a))throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n        valid number or function value: (${a}) when 'scrollbarV' is enabled.`);const l=r?i:e.length;this.treeArray=new Array(l);for(let c=0;c<l;++c)this.treeArray[c]=0;for(let c=0;c<l;++c){const t=e[c];let r=n;u&&(r=n(t));const i=o.has(t);t&&i&&(r+=d?a(t,s.get(t)):a),this.update(c,r)}}getRowIndex(t){return 0===t?0:this.calcRowIndex(t)}update(t,e){if(!this.treeArray.length)throw new Error(`Update at index ${t} with value ${e} failed:\n        Row Height cache not initialized.`);const n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1}query(t){if(!this.treeArray.length)throw new Error(`query at index ${t} failed: Fenwick tree array not initialized.`);let e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e}queryBetween(t,e){return this.query(e)-this.query(t-1)}calcRowIndex(t){if(!this.treeArray.length)return 0;let e=-1;const n=this.treeArray.length;for(let a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){const r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1}}const B={},Y="undefined"!=typeof document?document.createElement("div").style:void 0,H=function(){const t="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0,e=void 0!==t?Array.prototype.slice.call(t).join("").match(/-(moz|webkit|ms)-/):null,n=null!==e?e[1]:void 0,a=void 0!==n?"WebKit|Moz|MS|O".match(new RegExp("("+n+")","i"))[1]:void 0;return a?{dom:a,lowercase:n,css:`-${n}-`,js:n[0].toUpperCase()+n.substr(1)}:void 0}();function U(t){const e=k(t);return B[e]||(void 0!==H&&void 0!==Y[H.css+t]?B[e]=H.css+t:void 0!==Y[t]&&(B[e]=t)),B[e]}const W="undefined"!=typeof window?U("transform"):void 0,K="undefined"!=typeof window?U("backfaceVisibility"):void 0,$="undefined"!=typeof window?!!U("transform"):void 0,Z="undefined"!=typeof window?!!U("perspective"):void 0,J="undefined"!=typeof window?window.navigator.userAgent:"Chrome",Q=/Safari\//.test(J)&&!/Chrome\//.test(J);function X(t,e,n){void 0!==W&&$?!Q&&Z?(t[W]=`translate3d(${e}px, ${n}px, 0)`,t[K]="hidden"):t[k(W)]=`translate(${e}px, ${n}px)`:(t.top=`${n}px`,t.left=`${e}px`)}class tt{constructor(t){this.cd=t,this.selected=[],this.scroll=new a.EventEmitter,this.page=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.detailToggle=new a.EventEmitter,this.rowContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowHeightsCache=new z,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=[],this.getDetailRowHeight=(t,e)=>{if(!this.rowDetail)return 0;const n=this.rowDetail.rowHeight;return"function"==typeof n?n(t,e):n},this.rowTrackingFn=(t,e)=>{const n=this.getRowIndex(e);return this.trackByProp?e[this.trackByProp]:n}}set pageSize(t){this._pageSize=t,this.recalcLayout()}get pageSize(){return this._pageSize}set rows(t){this._rows=t,this.recalcLayout()}get rows(){return this._rows}set columns(t){this._columns=t;const e=j(t);this.columnGroupWidths=F(e,t)}get columns(){return this._columns}set offset(t){this._offset=t,(!this.scrollbarV||this.scrollbarV&&!this.virtualization)&&this.recalcLayout()}get offset(){return this._offset}set rowCount(t){this._rowCount=t,this.recalcLayout()}get rowCount(){return this._rowCount}get bodyWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}set bodyHeight(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()}get bodyHeight(){return this._bodyHeight}get selectEnabled(){return!!this.selectionType}get scrollHeight(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)}ngOnInit(){this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(({type:t,value:e})=>{"row"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(({type:t,value:e})=>{"group"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()}))}ngOnDestroy(){(this.rowDetail||this.groupHeader)&&this.listener.unsubscribe()}updateOffsetY(t){this.scroller&&(this.scrollbarV&&this.virtualization&&t?t=this.rowHeightsCache.query(this.pageSize*t-1):this.scrollbarV&&!this.virtualization&&(t=0),this.scroller.setOffset(t||0))}onBodyScroll(t){const e=t.scrollYPos,n=t.scrollXPos;this.offsetY===e&&this.offsetX===n||this.scroll.emit({offsetY:e,offsetX:n}),this.offsetY=e,this.offsetX=n,this.updateIndexes(),this.updatePage(t.direction),this.updateRows()}updatePage(t){let e=this.indexes.first/this.pageSize;"up"===t?e=Math.ceil(e):"down"===t&&(e=Math.floor(e)),void 0===t||isNaN(e)||this.page.emit({offset:e})}updateRows(){const{first:t,last:e}=this.indexes;let n=t,a=0;const r=[];if(this.rowIndexes.clear(),this.groupedRows){let t=3;for(1===this.groupedRows.length&&(t=this.groupedRows[0].value.length);n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++}else for(;n<e&&n<this.rowCount;){const t=this.rows[n];t&&(this.rowIndexes.set(t,n),r[a]=t),a++,n++}this.temp=r}getRowHeight(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight}getGroupHeight(t){let e=0;if(t.value)for(let n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e}getRowAndDetailHeight(t){let e=this.getRowHeight(t);return this.getRowExpanded(t)&&(e+=this.getDetailRowHeight(t)),e}getRowsStyles(t){const e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){let n=0;if(this.groupedRows){const e=t[t.length-1];n=e?this.getRowIndex(e):0}else n=this.getRowIndex(t);X(e,0,this.rowHeightsCache.query(n-1))}return e}getBottomSummaryRowStyles(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;const t={position:"absolute"};return X(t,0,this.rowHeightsCache.query(this.rows.length-1)),t}hideIndicator(){setTimeout(()=>this.loadingIndicator=!1,500)}updateIndexes(){let t=0,e=0;if(this.scrollbarV)if(this.virtualization){const n=parseInt(this.bodyHeight,0);t=this.rowHeightsCache.getRowIndex(this.offsetY),e=this.rowHeightsCache.getRowIndex(n+this.offsetY)+1}else t=0,e=this.rowCount;else this.externalPaging||(t=Math.max(this.offset*this.pageSize,0)),e=Math.min(t+this.pageSize,this.rowCount);this.indexes={first:t,last:e}}refreshRowHeightCache(){if(this.scrollbarV&&(!this.scrollbarV||this.virtualization)&&(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length)){const t=new Set;for(const e of this.rows)this.getRowExpanded(e)&&t.add(e);this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:t})}}getAdjustedViewPortIndex(){const t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t}toggleRowExpansion(t){const e=this.getAdjustedViewPortIndex(),n=this.getRowExpandedIdx(t,this.rowExpansions),a=n>-1;if(this.scrollbarV&&this.virtualization){const e=this.getDetailRowHeight(t)*(a?-1:1),n=this.getRowIndex(t);this.rowHeightsCache.update(n,e)}a?this.rowExpansions.splice(n,1):this.rowExpansions.push(t),this.detailToggle.emit({rows:[t],currentIndex:e})}toggleAllRows(t){this.rowExpansions=[];const e=this.getAdjustedViewPortIndex();if(t)for(const n of this.rows)this.rowExpansions.push(n);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:e})}recalcLayout(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()}columnTrackingFn(t,e){return e.$$id}stylesByGroup(t){const e=this.columnGroupWidths,n=this.offsetX,a={width:`${e[t]}px`};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n),0)}return a}getRowExpanded(t){if(0===this.rowExpansions.length&&this.groupExpansionDefault)for(const e of this.groupedRows)this.rowExpansions.push(e);return this.getRowExpandedIdx(t,this.rowExpansions)>-1}getRowExpandedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}getRowIndex(t){return this.rowIndexes.get(t)||0}onTreeAction(t){this.treeAction.emit({row:t})}}class et{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this._columnGroupWidths={total:100},this._styleByGroup={left:{},center:{},right:{}},this.destroyed=!1}set innerWidth(t){this._innerWidth=t,setTimeout(()=>{if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns),this.setStylesByGroup()}})}get innerWidth(){return this._innerWidth}set headerHeight(t){this._headerHeight="auto"!==t?`${t}px`:t}get headerHeight(){return this._headerHeight}set columns(t){this._columns=t;const e=j(t);this._columnsByPin=V(t),setTimeout(()=>{this._columnGroupWidths=F(e,t),this.setStylesByGroup()})}get columns(){return this._columns}set offsetX(t){this._offsetX=t,this.setStylesByGroup()}get offsetX(){return this._offsetX}ngOnDestroy(){this.destroyed=!0}onLongPressStart({event:t,model:e}){e.dragging=!0,this.dragEventTarget=t}onLongPressEnd({event:t,model:e}){this.dragEventTarget=t,setTimeout(()=>{const t=this._columns.find(t=>t.$$id===e.$$id);t&&(t.dragging=!1)},5)}get headerWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}onColumnResized(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})}onColumnReordered({prevIndex:t,newIndex:e,model:n}){const a=this.getColumn(e);a.isTarget=!1,a.targetMarkerContext=void 0,this.reorder.emit({column:n,prevValue:t,newValue:e})}onTargetChanged({prevIndex:t,newIndex:e,initialIndex:n}){if(t||0===t){const e=this.getColumn(t);e.isTarget=!1,e.targetMarkerContext=void 0}if(e||0===e){const t=this.getColumn(e);t.isTarget=!0,n!==e&&(t.targetMarkerContext={class:"targetMarker ".concat(n>e?"dragFromRight":"dragFromLeft")})}}getColumn(t){const e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];const n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]}onSort({column:t,prevValue:e,newValue:n}){if(t.dragging)return;const a=this.calcNewSorts(t,e,n);this.sort.emit({sorts:a,column:t,prevValue:e,newValue:n})}calcNewSorts(t,e,n){let a=0;this.sorts||(this.sorts=[]);const r=this.sorts.map((e,n)=>((e=Object.assign({},e)).prop===t.prop&&(a=n),e));return void 0===n?r.splice(a,1):e?r[a].dir=n:("single"===this.sortType&&r.splice(0,this.sorts.length),r.push({dir:n,prop:t.prop})),r}setStylesByGroup(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.destroyed||this.cd.detectChanges()}calcStylesByGroup(t){const e=this._columnGroupWidths,n={width:`${e[t]}px`};return"center"===t?X(n,-1*this.offsetX,0):"right"===t&&X(n,-1*(e.total-this.innerWidth),0),n}}function nt(t,e,n){let a,r,i;n=n||{};let s=null,o=0;function u(){o=!1===n.leading?0:+new Date,s=null,i=t.apply(a,r)}return function(){const d=+new Date;o||!1!==n.leading||(o=d);const l=e-(d-o);return a=this,r=arguments,l<=0?(clearTimeout(s),s=null,o=d,i=t.apply(a,r)):s||!1===n.trailing||(s=setTimeout(u,l)),i}}function at(t,e){for(const n of e){const e=t.indexOf(n);t.splice(e,1)}}function rt(t,e=300){let n=0;for(const a of t)n+=a.width||e;return n}const it={asc:"asc",desc:"desc"};function st(t,e){if(null==t&&(t=0),null==e&&(e=0),t instanceof Date&&e instanceof Date){if(t<e)return-1;if(t>e)return 1}else if(isNaN(parseFloat(t))||!isFinite(t)||isNaN(parseFloat(e))||!isFinite(e)){if(t=String(t),e=String(e),t.toLowerCase()<e.toLowerCase())return-1;if(t.toLowerCase()>e.toLowerCase())return 1}else{if(parseFloat(t)<parseFloat(e))return-1;if(parseFloat(t)>parseFloat(e))return 1}return 0}let ot=(()=>{class t{constructor(t,e,n,r,i,o,u){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=o,this.configuration=u,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode="standard",this.headerHeight=30,this.footerHeight=0,this.externalPaging=!1,this.externalSorting=!1,this.loadingIndicator=!1,this.reorderable=!0,this.swapColumns=!0,this.sortType="single",this.sorts=[],this.cssClasses={sortAscending:"datatable-icon-up",sortDescending:"datatable-icon-down",pagerLeftArrow:"datatable-icon-left",pagerRightArrow:"datatable-icon-right",pagerPrevious:"datatable-icon-prev",pagerNext:"datatable-icon-skip"},this.messages={emptyMessage:"No data to display",totalMessage:"total",selectedMessage:"selected"},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.sort=new a.EventEmitter,this.page=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.tableContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowCount=0,this._offsetX=new s.a(0),this._count=0,this._offset=0,this._subscriptions=[],this.rowIdentity=t=>this._groupRowsBy?t.key:t,this.element=r.nativeElement,this.rowDiffer=i.find({}).create(),this.configuration&&this.configuration.messages&&(this.messages=Object.assign({},this.configuration.messages))}set rows(t){this._rows=t,t&&(this._internalRows=[...t]),this.externalSorting||this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()}get rows(){return this._rows}set groupRowsBy(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))}get groupRowsBy(){return this._groupRowsBy}set columns(t){t&&(this._internalColumns=[...t],E(this._internalColumns),this.recalculateColumns()),this._columns=t}get columns(){return this._columns}set limit(t){this._limit=t,this.recalculate()}get limit(){return this._limit}set count(t){this._count=t,this.recalculate()}get count(){return this._count}set offset(t){this._offset=t}get offset(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)}get isFixedHeader(){const t=this.headerHeight;return"string"!=typeof t||"auto"!==t}get isFixedRow(){return"auto"!==this.rowHeight}get isVertScroll(){return this.scrollbarV}get isVirtualized(){return this.virtualization}get isHorScroll(){return this.scrollbarH}get isSelectable(){return void 0!==this.selectionType}get isCheckboxSelection(){return"checkbox"===this.selectionType}get isCellSelection(){return"cell"===this.selectionType}get isSingleSelection(){return"single"===this.selectionType}get isMultiSelection(){return"multi"===this.selectionType}get isMultiClickSelection(){return"multiClick"===this.selectionType}set columnTemplates(t){this._columnTemplates=t,this.translateColumns(t)}get columnTemplates(){return this._columnTemplates}get allRowsSelected(){let t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){const e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t}ngOnInit(){this.recalculate()}ngAfterViewInit(){this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(()=>{this.recalculate(),this.externalPaging&&this.scrollbarV&&this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:0})})}ngAfterContentInit(){this.columnTemplates.changes.subscribe(t=>this.translateColumns(t)),this.listenForColumnInputChanges()}translateColumns(t){if(t){const e=t.toArray();e.length&&(this._internalColumns=function(t){const e=[];for(const n of t){const t={},a=Object.getOwnPropertyNames(n);for(const e of a)t[e]=n[e];n.headerTemplate&&(t.headerTemplate=n.headerTemplate),n.cellTemplate&&(t.cellTemplate=n.cellTemplate),n.summaryFunc&&(t.summaryFunc=n.summaryFunc),n.summaryTemplate&&(t.summaryTemplate=n.summaryTemplate),e.push(t)}return e}(e),E(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}}groupArrayBy(t,e){const n=new Map;return t.forEach(t=>{const a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,t=>({key:t[0],value:t[1]}))}ngDoCheck(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=[...this.rows]:this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())}recalculate(){this.recalculateDims(),this.recalculateColumns()}onWindowResize(){this.recalculate()}recalculateColumns(t=this._internalColumns,e=-1,n=this.scrollbarH){if(!t)return;let a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),"force"===this.columnMode?function(t,e,n,a,r=300){const i=t.slice(n+1,t.length).filter(t=>!1!==t.canAutoResize);for(const c of i)c.$$oldWidth||(c.$$oldWidth=c.width);let s=0,o=!1,u=rt(t,r),d=e-u;const l=[];do{s=d/i.length,o=u>=e;for(const t of i){if(o&&a)t.width=t.$$oldWidth||t.width||r;else{const e=(t.width||r)+s;t.minWidth&&e<t.minWidth?(t.width=t.minWidth,l.push(t)):t.maxWidth&&e>t.maxWidth?(t.width=t.maxWidth,l.push(t)):t.width=e}t.width=Math.max(0,t.width)}u=rt(t),d=e-u,at(i,l)}while(d>1&&0!==i.length)}(t,a,e,n):"flex"===this.columnMode&&function(t,e){const n=function(t,e){let n=0;for(const a of t)n+=a.width;return n}(t),a=function(t){let e=0;for(const n of t)e+=n.flexGrow||0;return e}(t),r=j(t);n!==e&&function(t,e,n){for(const i in t)for(const a of t[i])a.canAutoResize?a.width=0:(e-=a.width,n-=a.flexGrow?a.flexGrow:0);const a={};let r=e;do{const e=r/n;r=0;for(const n in t)for(const i of t[n])if(i.canAutoResize&&!a[i.prop]){const t=i.width+i.flexGrow*e;void 0!==i.minWidth&&t<i.minWidth?(r+=t-i.minWidth,i.width=i.minWidth,a[i.prop]=!0):i.width=t}}while(0!==r)}(r,e,a)}(t,a),t}recalculateDims(){const t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){let e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()}recalculatePages(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()}onBodyPage({offset:t}){this.externalPaging&&!this.virtualization||(this.offset=t,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))}onBodyScroll(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()}onFooterPage(t){this.offset=t.page-1,this.bodyComponent.updateOffsetY(this.offset),this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}),this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected}))}calcPageSize(t=this.rows){if(this.scrollbarV&&this.virtualization){const t=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(t,0)}return void 0!==this.limit?this.limit:t?t.length:0}calcRowCount(t=this.rows){return this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0}onColumnContextmenu({event:t,column:e}){this.tableContextmenu.emit({event:t,type:"header",content:e})}onRowContextmenu({event:t,row:e}){this.tableContextmenu.emit({event:t,type:"body",content:e})}onColumnResize({column:t,newValue:e}){if(void 0===t)return;let n;const a=this._internalColumns.map((a,r)=>((a=Object.assign({},a)).$$id===t.$$id&&(n=r,a.width=e,a.$$oldWidth=e),a));this.recalculateColumns(a,n),this._internalColumns=a,this.resize.emit({column:t,newValue:e})}onColumnReorder({column:t,newValue:e,prevValue:n}){const a=this._internalColumns.map(t=>Object.assign({},t));if(this.swapColumns){const r=a[e];a[e]=t,a[n]=r}else if(e>n){const t=a[n];for(let r=n;r<e;r++)a[r]=a[r+1];a[e]=t}else{const t=a[n];for(let r=n;r>e;r--)a[r]=a[r-1];a[e]=t}this._internalColumns=a,this.reorder.emit({column:t,newValue:e,prevValue:n})}onColumnSort(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)}onHeaderSelect(t){if(this.selectAllRowsOnPage){const t=this.bodyComponent.indexes.first,e=this.bodyComponent.indexes.last,n=this.selected.length===e-t;this.selected=[],n||this.selected.push(...this._internalRows.slice(t,e))}else{const t=this.selected.length===this.rows.length;this.selected=[],t||this.selected.push(...this.rows)}this.select.emit({selected:this.selected})}onBodySelect(t){this.select.emit(t)}onTreeAction(t){const e=t.row,n=this._rows.findIndex(e=>e[this.treeToRelation]===t.row[this.treeToRelation]);this.treeAction.emit({row:e,rowIndex:n})}ngOnDestroy(){this._subscriptions.forEach(t=>t.unsubscribe())}listenForColumnInputChanges(){this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(()=>{this.columnTemplates&&this.columnTemplates.notifyOnChanges()}))}sortInternalRows(){this._internalRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return[...t];const a=new Map;t.forEach((t,e)=>a.set(t,e));const r=[...t],i=e.reduce((t,e)=>(e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t),{}),s=n.map(t=>{const e=t.prop;return{prop:e,dir:t.dir,valueGetter:w(e),compareFn:i[e]||st}});return r.sort((function(t,e){for(const n of s){const{prop:a,valueGetter:r}=n,i=r(t,a),s=r(e,a),o=n.dir!==it.desc?n.compareFn(i,s,t,e,n.dir):-n.compareFn(i,s,t,e,n.dir);if(0!==o)return o}return a.has(t)&&a.has(e)?a.get(t)<a.get(e)?-1:1:0}))}(this._internalRows,this._internalColumns,this.sorts)}}return Object(f.__decorate)([function(t,e,n){return{configurable:!0,enumerable:n.enumerable,get:function(){return Object.defineProperty(this,e,{configurable:!0,enumerable:n.enumerable,value:nt(n.value,5,void 0)}),this[e]}}},Object(f.__metadata)("design:type",Function),Object(f.__metadata)("design:paramtypes",[]),Object(f.__metadata)("design:returntype",void 0)],t.prototype,"onWindowResize",null),t})();class ut{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this.sortFn=this.onSort.bind(this),this.selectFn=this.select.emit.bind(this.select),this.cellContext={column:this.column,sortDir:this.sortDir,sortFn:this.sortFn,allRowsSelected:this.allRowsSelected,selectFn:this.selectFn}}set allRowsSelected(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t}get allRowsSelected(){return this._allRowsSelected}set column(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()}get column(){return this._column}set sorts(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()}get sorts(){return this._sorts}get columnCssClasses(){let t="datatable-header-cell";if(this.column.sortable&&(t+=" sortable"),this.column.resizeable&&(t+=" resizeable"),this.column.headerClass)if("string"==typeof this.column.headerClass)t+=" "+this.column.headerClass;else if("function"==typeof this.column.headerClass){const e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=` ${a}`)}}const e=this.sortDir;return e&&(t+=` sort-active sort-${e}`),t}get name(){return void 0===this.column.headerTemplate?this.column.name:void 0}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get width(){return this.column.width}get isCheckboxable(){return this.column.checkboxable&&this.column.headerCheckboxable&&"checkbox"===this.selectionType}onContextmenu(t){this.columnContextmenu.emit({event:t,column:this.column})}calcSortDir(t){if(t&&this.column){const e=t.find(t=>t.prop===this.column.prop);if(e)return e.dir}}onSort(){if(!this.column.sortable)return;const t=(e=this.sortDir,"single"===this.sortType?e===it.asc?it.desc:it.asc:e?e===it.asc?it.desc:void 0:it.asc);var e;this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}calcSortClass(t){return t===it.asc?`sort-btn sort-asc ${this.sortAscendingIcon}`:t===it.desc?`sort-btn sort-desc ${this.sortDescendingIcon}`:"sort-btn"}}class dt{constructor(){this.selectedCount=0,this.page=new a.EventEmitter}get isVisible(){return this.rowCount/this.pageSize>1}get curPage(){return this.offset+1}}class lt{constructor(){this.change=new a.EventEmitter,this._count=0,this._page=1,this._size=0}set size(t){this._size=t,this.pages=this.calcPages()}get size(){return this._size}set count(t){this._count=t,this.pages=this.calcPages()}get count(){return this._count}set page(t){this._page=t,this.pages=this.calcPages()}get page(){return this._page}get totalPages(){const t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)}canPrevious(){return this.page>1}canNext(){return this.page<this.totalPages}prevPage(){this.selectPage(this.page-1)}nextPage(){this.selectPage(this.page+1)}selectPage(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))}calcPages(t){const e=[];let n=1,a=this.totalPages;t=t||this.page,5<this.totalPages&&(n=t-Math.floor(2.5),a=t+Math.floor(2.5),n<1?(n=1,a=Math.min(n+5-1,this.totalPages)):a>this.totalPages&&(n=Math.max(this.totalPages-5+1,1),a=this.totalPages));for(let r=n;r<=a;r++)e.push({number:r,text:r});return e}}class ct{}const ft=function(){var t={up:38,down:40,return:13,escape:27,left:37,right:39};return t[t.up]="up",t[t.down]="down",t[t.return]="return",t[t.escape]="escape",t[t.left]="left",t[t.right]="right",t}();class ht{constructor(t,e,n,r){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=r.nativeElement,this._rowDiffer=t.find({}).create()}set columns(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()}get columns(){return this._columns}set innerWidth(t){if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()}get innerWidth(){return this._innerWidth}set offsetX(t){this._offsetX=t,this.buildStylesByGroup()}get offsetX(){return this._offsetX}get cssClass(){let t="datatable-body-row";if(this.isSelected&&(t+=" active"),this.rowIndex%2!=0&&(t+=" datatable-row-odd"),this.rowIndex%2==0&&(t+=" datatable-row-even"),this.rowClass){const e=this.rowClass(this.row);if("string"==typeof e)t+=` ${e}`;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=` ${a}`)}}return t}get columnsTotalWidths(){return this._columnGroupWidths.total}ngDoCheck(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}buildStylesByGroup(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()}calcStylesByGroup(t){const e=this._columnGroupWidths,n=this.offsetX,a={width:`${e[t]}px`};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n+this.scrollbarHelper.width),0)}return a}onActivate(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))}onMouseenter(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})}recalculateColumns(t=this.columns){this._columns=t;const e=j(this._columns);this._columnsByPin=V(this._columns),this._columnGroupWidths=F(e,this._columns)}onTreeAction(){this.treeAction.emit()}}class gt{constructor(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new a.EventEmitter(!1),this.groupContext={group:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this.rowContext={row:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this._expanded=!1,this.rowDiffer=e.find({}).create()}set rowIndex(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set expanded(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}ngDoCheck(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())}onContextmenu(t){this.rowContextmenu.emit({event:t,row:this.row})}getGroupHeaderStyle(){const t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t}}class pt{constructor(t,e){this.cd=e,this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this.isFocused=!1,this.onCheckboxChangeFn=this.onCheckboxChange.bind(this),this.activateFn=this.activate.emit.bind(this.activate),this.cellContext={onCheckboxChangeFn:this.onCheckboxChangeFn,activateFn:this.activateFn,row:this.row,group:this.group,value:this.value,column:this.column,rowHeight:this.rowHeight,isSelected:this.isSelected,rowIndex:this.rowIndex,treeStatus:this.treeStatus,onTreeAction:this.onTreeAction.bind(this)},this._element=t.nativeElement}set group(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()}get group(){return this._group}set rowHeight(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowHeight(){return this._rowHeight}set isSelected(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()}get isSelected(){return this._isSelected}set expanded(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}set rowIndex(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set column(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()}get column(){return this._column}set row(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()}get row(){return this._row}set sorts(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)}get sorts(){return this._sorts}set treeStatus(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()}get treeStatus(){return this._treeStatus}get columnCssClasses(){let t="datatable-body-cell";if(this.column.cellClass)if("string"==typeof this.column.cellClass)t+=" "+this.column.cellClass;else if("function"==typeof this.column.cellClass){const e=this.column.cellClass({row:this.row,group:this.group,column:this.column,value:this.value,rowHeight:this.rowHeight});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=` ${a}`)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===it.asc&&(t+=" sort-asc"),this.sortDir===it.desc&&(t+=" sort-desc"),t}get width(){return this.column.width}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get height(){const t=this.rowHeight;return isNaN(t)?t:t+"px"}ngDoCheck(){this.checkValueUpdates()}ngOnDestroy(){this.cellTemplate&&this.cellTemplate.clear()}checkValueUpdates(){let t="";if(this.row&&this.column){const e=this.column.$$valueGetter(this.row,this.column.prop),n=this.column.pipe;n?t=n.transform(e):void 0!==t&&(t=e)}else t="";this.value!==t&&(this.value=t,this.cellContext.value=t,this.sanitizedValue=null!=t?this.stripHtml(t):t,this.cd.markForCheck())}onFocus(){this.isFocused=!0}onBlur(){this.isFocused=!1}onClick(t){this.activate.emit({type:"click",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onDblClick(t){this.activate.emit({type:"dblclick",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element}))}onCheckboxChange(t){this.activate.emit({type:"checkbox",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element,treeStatus:"collapsed"})}calcSortDir(t){if(!t)return;const e=t.find(t=>t.prop===this.column.prop);return e?e.dir:void 0}stripHtml(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t}onTreeAction(){this.treeAction.emit(this.row)}calcLeftMargin(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0}}function bt(t,e,n){const a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t}class mt{constructor(){this.activate=new a.EventEmitter,this.select=new a.EventEmitter}selectRow(t,e,n){if(!this.selectEnabled)return;const a="checkbox"===this.selectionType,r="multiClick"===this.selectionType;let i=[];i="multi"===this.selectionType||a||r?t.shiftKey?function(t,e,n,a,r){const i=n<a;for(let s=0;s<e.length;s++){const r=e[s],o=s>=a&&s<=n,u=s<=a&&s>=n;let d={start:0,end:0};d=i?{start:n,end:a}:{start:a,end:n+1},(i&&u||!i&&o)&&s>=d.start&&s<=d.end&&t.push(r)}return t}([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):bt(t.ctrlKey||t.metaKey||r||a?[...this.selected]:[],n,this.getRowSelectedIdx.bind(this)):bt([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(i=i.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),this.selected.push(...i),this.prevIndex=e,this.select.emit({selected:i})}onActivate(t,e){const{type:n,event:a,row:r}=t,i="checkbox"===this.selectionType;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===ft.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)}onKeyboardFocus(t){const{keyCode:e}=t.event;if(e===ft.up||e===ft.down||e===ft.right||e===ft.left){const n="cell"===this.selectionType;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}}focusRow(t,e){const n=this.getPrevNextRow(t,e);n&&n.focus()}getPrevNextRow(t,e){const n=t.parentElement;if(n){let t;if(e===ft.up?t=n.previousElementSibling:e===ft.down&&(t=n.nextElementSibling),t&&t.children.length)return t.children[0]}}focusCell(t,e,n,a){let r;if(n===ft.left)r=t.previousElementSibling;else if(n===ft.right)r=t.nextElementSibling;else if(n===ft.up||n===ft.down){const t=this.getPrevNextRow(e,n);if(t){const e=t.getElementsByClassName("datatable-body-cell");e.length&&(r=e[a])}}r&&r.focus()}getRowSelected(t){return this.getRowSelectedIdx(t,this.selected)>-1}getRowSelectedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}}function yt(t){const e=t.filter(t=>!!t);return e.length?e.some(t=>"number"!=typeof t)?null:e.reduce((t,e)=>t+e):null}function vt(t){return null}class xt{constructor(){this.summaryRow={}}ngOnChanges(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())}updateInternalColumns(){this._internalColumns=this.columns.map(t=>Object.assign({},t,{cellTemplate:t.summaryTemplate}))}updateValues(){this.summaryRow={},this.columns.filter(t=>!t.summaryTemplate).forEach(t=>{const e=this.rows.map(e=>e[t.prop]),n=this.getSummaryFunction(t);this.summaryRow[t.prop]=t.pipe?t.pipe.transform(n(e)):n(e)})}getSummaryFunction(t){return void 0===t.summaryFunc?yt:null===t.summaryFunc?vt:t.summaryFunc}}class _t{static forRoot(t){return{ngModule:_t,providers:[{provide:"configuration",useValue:t}]}}}"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=function(t,e){const n=[],a=[];let r,i,s;for(;(r=document.elementFromPoint(t,e))&&-1===n.indexOf(r)&&null!=r;)n.push(r),a.push({value:r.style.getPropertyValue("pointer-events"),priority:r.style.getPropertyPriority("pointer-events")}),r.style.setProperty("pointer-events","none","important");for(i=a.length;s=a[--i];)n[i].style.setProperty("pointer-events",s.value?s.value:"",s.priority);return n})},wE6v:function(t,e,n){var a=n("hh1v");t.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},"wF/u":function(t,e,n){var a=n("e5cp"),r=n("ExA7");t.exports=function t(e,n,i,s,o){return e===n||(null==e||null==n||!r(e)&&!r(n)?e!=e&&n!=n:a(e,n,i,s,t,o))}},wJg7:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var a=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==a||"symbol"!=a&&n.test(t))&&t>-1&&t%1==0&&t<e}},wQk9:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("wd/R"))},wclG:function(t,e,n){var a=n("pFRH"),r=n("88Gu")(a);t.exports=r},"wd/R":function(t,e,n){(function(t){t.exports=function(){"use strict";var e,a;function r(){return e.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function s(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){return void 0===t}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function d(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,a=[];for(n=0;n<t.length;++n)a.push(e(t[n],n));return a}function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function f(t,e){for(var n in e)c(e,n)&&(t[n]=e[n]);return c(e,"toString")&&(t.toString=e.toString),c(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,n,a){return Oe(t,e,n,a,!0).utc()}function g(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function p(t){if(null==t._isValid){var e=g(t),n=a.call(e.parsedDateParts,(function(t){return null!=t})),r=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(r=r&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return r;t._isValid=r}return t._isValid}function b(t){var e=h(NaN);return null!=t?f(g(e),t):g(e).userInvalidated=!0,e}a=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,a=0;a<n;a++)if(a in e&&t.call(this,e[a],a,e))return!0;return!1};var m=r.momentProperties=[];function y(t,e){var n,a,r;if(o(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),o(e._i)||(t._i=e._i),o(e._f)||(t._f=e._f),o(e._l)||(t._l=e._l),o(e._strict)||(t._strict=e._strict),o(e._tzm)||(t._tzm=e._tzm),o(e._isUTC)||(t._isUTC=e._isUTC),o(e._offset)||(t._offset=e._offset),o(e._pf)||(t._pf=g(e)),o(e._locale)||(t._locale=e._locale),m.length>0)for(n=0;n<m.length;n++)o(r=e[a=m[n]])||(t[a]=r);return t}var v=!1;function x(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function T(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function O(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=T(e)),n}function w(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),s=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&O(t[a])!==O(e[a]))&&s++;return s+i}function S(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function I(t,e){var n=!0;return f((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var a,i=[],s=0;s<arguments.length;s++){if(a="","object"==typeof arguments[s]){for(var o in a+="\n["+s+"] ",arguments[0])a+=o+": "+arguments[0][o]+", ";a=a.slice(0,-2)}else a=arguments[s];i.push(a)}S(t+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var N,C={};function R(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),C[t]||(S(e),C[t]=!0)}function A(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function k(t,e){var n,a=f({},t);for(n in e)c(e,n)&&(s(t[n])&&s(e[n])?(a[n]={},f(a[n],t[n]),f(a[n],e[n])):null!=e[n]?a[n]=e[n]:delete a[n]);for(n in t)c(t,n)&&!c(e,n)&&s(t[n])&&(a[n]=f({},a[n]));return a}function E(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,N=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)c(t,e)&&n.push(e);return n};var L={};function D(t,e){var n=t.toLowerCase();L[n]=L[n+"s"]=L[e]=t}function P(t){return"string"==typeof t?L[t]||L[t.toLowerCase()]:void 0}function M(t){var e,n,a={};for(n in t)c(t,n)&&(e=P(n))&&(a[e]=t[n]);return a}var q={};function j(t,e){q[t]=e}function F(t,e,n){var a=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}var G=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,V=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,z={},B={};function Y(t,e,n,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),t&&(B[t]=r),e&&(B[e[0]]=function(){return F(r.apply(this,arguments),e[1],e[2])}),n&&(B[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function H(t,e){return t.isValid()?(e=U(e,t.localeData()),z[e]=z[e]||function(t){var e,n,a,r=t.match(G);for(e=0,n=r.length;e<n;e++)r[e]=B[r[e]]?B[r[e]]:(a=r[e]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(e){var a,i="";for(a=0;a<n;a++)i+=A(r[a])?r[a].call(e,t):r[a];return i}}(e),z[e](t)):t.localeData().invalidDate()}function U(t,e){var n=5;function a(t){return e.longDateFormat(t)||t}for(V.lastIndex=0;n>=0&&V.test(t);)t=t.replace(V,a),V.lastIndex=0,n-=1;return t}var W=/\d/,K=/\d\d/,$=/\d{3}/,Z=/\d{4}/,J=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,at=/[+-]?\d{1,6}/,rt=/\d+/,it=/[+-]?\d+/,st=/Z|[+-]\d\d:?\d\d/gi,ot=/Z|[+-]\d\d(?::?\d\d)?/gi,ut=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,dt={};function lt(t,e,n){dt[t]=A(e)?e:function(t,a){return t&&n?n:e}}function ct(t,e){return c(dt,t)?dt[t](e._strict,e._locale):new RegExp(ft(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,a,r){return e||n||a||r}))))}function ft(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ht={};function gt(t,e){var n,a=e;for("string"==typeof t&&(t=[t]),u(e)&&(a=function(t,n){n[e]=O(t)}),n=0;n<t.length;n++)ht[t[n]]=a}function pt(t,e){gt(t,(function(t,n,a,r){a._w=a._w||{},e(t,a._w,a,r)}))}function bt(t,e,n){null!=e&&c(ht,t)&&ht[t](e,n._a,n,t)}function mt(t){return yt(t)?366:365}function yt(t){return t%4==0&&t%100!=0||t%400==0}Y("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),Y(0,["YY",2],0,(function(){return this.year()%100})),Y(0,["YYYY",4],0,"year"),Y(0,["YYYYY",5],0,"year"),Y(0,["YYYYYY",6,!0],0,"year"),D("year","y"),j("year",1),lt("Y",it),lt("YY",Q,K),lt("YYYY",nt,Z),lt("YYYYY",at,J),lt("YYYYYY",at,J),gt(["YYYYY","YYYYYY"],0),gt("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):O(t)})),gt("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),gt("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return O(t)+(O(t)>68?1900:2e3)};var vt,xt=_t("FullYear",!0);function _t(t,e){return function(n){return null!=n?(Ot(this,t,n),r.updateOffset(this,e),this):Tt(this,t)}}function Tt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Ot(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&yt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),wt(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function wt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?yt(t)?29:28:31-n%7%2}vt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},Y("M",["MM",2],"Mo",(function(){return this.month()+1})),Y("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),Y("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),D("month","M"),j("month",8),lt("M",Q),lt("MM",Q,K),lt("MMM",(function(t,e){return e.monthsShortRegex(t)})),lt("MMMM",(function(t,e){return e.monthsRegex(t)})),gt(["M","MM"],(function(t,e){e[1]=O(t)-1})),gt(["MMM","MMMM"],(function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);null!=r?e[1]=r:g(n).invalidMonth=t}));var St=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,It="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Nt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ct(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=h([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))?r:null:"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))?r:-1!==(r=vt.call(this._longMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))?r:-1!==(r=vt.call(this._shortMonthsParse,s))?r:null}function Rt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=O(e);else if(!u(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),wt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function At(t){return null!=t?(Rt(this,t),r.updateOffset(this,!0),this):Tt(this,"Month")}var kt=ut,Et=ut;function Lt(){function t(t,e){return e.length-t.length}var e,n,a=[],r=[],i=[];for(e=0;e<12;e++)n=h([2e3,e]),a.push(this.monthsShort(n,"")),r.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(a.sort(t),r.sort(t),i.sort(t),e=0;e<12;e++)a[e]=ft(a[e]),r[e]=ft(r[e]);for(e=0;e<24;e++)i[e]=ft(i[e]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Dt(t,e,n,a,r,i,s){var o;return t<100&&t>=0?(o=new Date(t+400,e,n,a,r,i,s),isFinite(o.getFullYear())&&o.setFullYear(t)):o=new Date(t,e,n,a,r,i,s),o}function Pt(t){var e;if(t<100&&t>=0){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Mt(t,e,n){var a=7+e-n;return-(7+Pt(t,0,a).getUTCDay()-e)%7+a-1}function qt(t,e,n,a,r){var i,s,o=1+7*(e-1)+(7+n-a)%7+Mt(t,a,r);return o<=0?s=mt(i=t-1)+o:o>mt(t)?(i=t+1,s=o-mt(t)):(i=t,s=o),{year:i,dayOfYear:s}}function jt(t,e,n){var a,r,i=Mt(t.year(),e,n),s=Math.floor((t.dayOfYear()-i-1)/7)+1;return s<1?a=s+Ft(r=t.year()-1,e,n):s>Ft(t.year(),e,n)?(a=s-Ft(t.year(),e,n),r=t.year()+1):(r=t.year(),a=s),{week:a,year:r}}function Ft(t,e,n){var a=Mt(t,e,n),r=Mt(t+1,e,n);return(mt(t)-a+r)/7}function Gt(t,e){return t.slice(e,7).concat(t.slice(0,e))}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),j("week",5),j("isoWeek",5),lt("w",Q),lt("ww",Q,K),lt("W",Q),lt("WW",Q,K),pt(["w","ww","W","WW"],(function(t,e,n,a){e[a.substr(0,1)]=O(t)})),Y("d",0,"do","day"),Y("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),Y("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),Y("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),lt("d",Q),lt("e",Q),lt("E",Q),lt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),lt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),lt("dddd",(function(t,e){return e.weekdaysRegex(t)})),pt(["dd","ddd","dddd"],(function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);null!=r?e.d=r:g(n).invalidWeekday=t})),pt(["d","e","E"],(function(t,e,n,a){e[a]=O(t)}));var Vt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),zt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Bt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Yt(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)i=h([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))?r:-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:-1!==(r=vt.call(this._weekdaysParse,s))?r:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:-1!==(r=vt.call(this._weekdaysParse,s))?r:-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null}var Ht=ut,Ut=ut,Wt=ut;function Kt(){function t(t,e){return e.length-t.length}var e,n,a,r,i,s=[],o=[],u=[],d=[];for(e=0;e<7;e++)n=h([2e3,1]).day(e),a=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),i=this.weekdays(n,""),s.push(a),o.push(r),u.push(i),d.push(a),d.push(r),d.push(i);for(s.sort(t),o.sort(t),u.sort(t),d.sort(t),e=0;e<7;e++)o[e]=ft(o[e]),u[e]=ft(u[e]),d[e]=ft(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function $t(){return this.hours()%12||12}function Zt(t,e){Y(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Jt(t,e){return e._meridiemParse}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,$t),Y("k",["kk",2],0,(function(){return this.hours()||24})),Y("hmm",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)})),Y("hmmss",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)})),Y("Hmm",0,0,(function(){return""+this.hours()+F(this.minutes(),2)})),Y("Hmmss",0,0,(function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)})),Zt("a",!0),Zt("A",!1),D("hour","h"),j("hour",13),lt("a",Jt),lt("A",Jt),lt("H",Q),lt("h",Q),lt("k",Q),lt("HH",Q,K),lt("hh",Q,K),lt("kk",Q,K),lt("hmm",X),lt("hmmss",tt),lt("Hmm",X),lt("Hmmss",tt),gt(["H","HH"],3),gt(["k","kk"],(function(t,e,n){var a=O(t);e[3]=24===a?0:a})),gt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),gt(["h","hh"],(function(t,e,n){e[3]=O(t),g(n).bigHour=!0})),gt("hmm",(function(t,e,n){var a=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a)),g(n).bigHour=!0})),gt("hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a,2)),e[5]=O(t.substr(r)),g(n).bigHour=!0})),gt("Hmm",(function(t,e,n){var a=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a))})),gt("Hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a,2)),e[5]=O(t.substr(r))}));var Qt,Xt=_t("Hours",!0),te={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:It,monthsShort:Nt,week:{dow:0,doy:6},weekdays:Vt,weekdaysMin:Bt,weekdaysShort:zt,meridiemParse:/[ap]\.?m?\.?/i},ee={},ne={};function ae(t){return t?t.toLowerCase().replace("_","-"):t}function re(e){var a=null;if(!ee[e]&&void 0!==t&&t&&t.exports)try{a=Qt._abbr,n("RnhZ")("./"+e),ie(a)}catch(r){}return ee[e]}function ie(t,e){var n;return t&&((n=o(e)?oe(t):se(t,e))?Qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Qt._abbr}function se(t,e){if(null!==e){var n,a=te;if(e.abbr=t,null!=ee[t])R("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=ee[t]._config;else if(null!=e.parentLocale)if(null!=ee[e.parentLocale])a=ee[e.parentLocale]._config;else{if(null==(n=re(e.parentLocale)))return ne[e.parentLocale]||(ne[e.parentLocale]=[]),ne[e.parentLocale].push({name:t,config:e}),null;a=n._config}return ee[t]=new E(k(a,e)),ne[t]&&ne[t].forEach((function(t){se(t.name,t.config)})),ie(t),ee[t]}return delete ee[t],null}function oe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Qt;if(!i(t)){if(e=re(t))return e;t=[t]}return function(t){for(var e,n,a,r,i=0;i<t.length;){for(e=(r=ae(t[i]).split("-")).length,n=(n=ae(t[i+1]))?n.split("-"):null;e>0;){if(a=re(r.slice(0,e).join("-")))return a;if(n&&n.length>=e&&w(r,n,!0)>=e-1)break;e--}i++}return Qt}(t)}function ue(t){var e,n=t._a;return n&&-2===g(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>wt(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,g(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),g(t)._overflowWeeks&&-1===e&&(e=7),g(t)._overflowWeekday&&-1===e&&(e=8),g(t).overflow=e),t}function de(t,e,n){return null!=t?t:null!=e?e:n}function le(t){var e,n,a,i,s,o=[];if(!t._d){for(a=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,a,r,i,s,o,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,s=4,n=de(e.GG,t._a[0],jt(we(),1,4).year),a=de(e.W,1),((r=de(e.E,1))<1||r>7)&&(u=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;var d=jt(we(),i,s);n=de(e.gg,t._a[0],d.year),a=de(e.w,d.week),null!=e.d?((r=e.d)<0||r>6)&&(u=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>Ft(n,i,s)?g(t)._overflowWeeks=!0:null!=u?g(t)._overflowWeekday=!0:(o=qt(n,a,r,i,s),t._a[0]=o.year,t._dayOfYear=o.dayOfYear)}(t),null!=t._dayOfYear&&(s=de(t._a[0],a[0]),(t._dayOfYear>mt(s)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),n=Pt(s,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=a[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Pt:Dt).apply(null,o),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(g(t).weekdayMismatch=!0)}}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/Z|[+-]\d\d(?::?\d\d)?/,ge=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],be=/^\/?Date\((\-?\d+)/i;function me(t){var e,n,a,r,i,s,o=t._i,u=ce.exec(o)||fe.exec(o);if(u){for(g(t).iso=!0,e=0,n=ge.length;e<n;e++)if(ge[e][1].exec(u[1])){r=ge[e][0],a=!1!==ge[e][2];break}if(null==r)return void(t._isValid=!1);if(u[3]){for(e=0,n=pe.length;e<n;e++)if(pe[e][1].exec(u[3])){i=(u[2]||" ")+pe[e][0];break}if(null==i)return void(t._isValid=!1)}if(!a&&null!=i)return void(t._isValid=!1);if(u[4]){if(!he.exec(u[4]))return void(t._isValid=!1);s="Z"}t._f=r+(i||"")+(s||""),_e(t)}else t._isValid=!1}var ye=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ve={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function xe(t){var e,n,a,r,i,s,o,u,d=ye.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(d){var l=(e=d[3],n=d[2],a=d[5],r=d[6],i=d[7],s=[(o=d[4],u=parseInt(o,10),u<=49?2e3+u:u<=999?1900+u:u),Nt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)],i&&s.push(parseInt(i,10)),s);if(!function(t,e,n){return!t||zt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(g(n).weekdayMismatch=!0,n._isValid=!1,!1)}(d[1],l,t))return;t._a=l,t._tzm=function(t,e,n){if(t)return ve[t];if(e)return 0;var a=parseInt(n,10),r=a%100;return(a-r)/100*60+r}(d[8],d[9],d[10]),t._d=Pt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function _e(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],g(t).empty=!0;var e,n,a,i,s,o=""+t._i,u=o.length,d=0;for(a=U(t._f,t._locale).match(G)||[],e=0;e<a.length;e++)(n=(o.match(ct(i=a[e],t))||[])[0])&&((s=o.substr(0,o.indexOf(n))).length>0&&g(t).unusedInput.push(s),o=o.slice(o.indexOf(n)+n.length),d+=n.length),B[i]?(n?g(t).empty=!1:g(t).unusedTokens.push(i),bt(i,n,t)):t._strict&&!n&&g(t).unusedTokens.push(i);g(t).charsLeftOver=u-d,o.length>0&&g(t).unusedInput.push(o),t._a[3]<=12&&!0===g(t).bigHour&&t._a[3]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var a;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((a=t.isPM(n))&&e<12&&(e+=12),a||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),le(t),ue(t)}else xe(t);else me(t)}function Te(t){var e=t._i,n=t._f;return t._locale=t._locale||oe(t._l),null===e||void 0===n&&""===e?b({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(ue(e)):(d(e)?t._d=e:i(n)?function(t){var e,n,a,r,i;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;r<t._f.length;r++)i=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[r],_e(e),p(e)&&(i+=g(e).charsLeftOver,i+=10*g(e).unusedTokens.length,g(e).score=i,(null==a||i<a)&&(a=i,n=e));f(t,n||e)}(t):n?_e(t):function(t){var e=t._i;o(e)?t._d=new Date(r.now()):d(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=be.exec(t._i);null===e?(me(t),!1===t._isValid&&(delete t._isValid,xe(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=l(e.slice(0),(function(t){return parseInt(t,10)})),le(t)):s(e)?function(t){if(!t._d){var e=M(t._i);t._a=l([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),le(t)}}(t):u(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),p(t)||(t._d=null),t))}function Oe(t,e,n,a,r){var o,u={};return!0!==n&&!1!==n||(a=n,n=void 0),(s(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||i(t)&&0===t.length)&&(t=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=r,u._l=n,u._i=t,u._f=e,u._strict=a,(o=new x(ue(Te(u))))._nextDay&&(o.add(1,"d"),o._nextDay=void 0),o}function we(t,e,n,a){return Oe(t,e,n,a,!1)}r.createFromInputFallback=I("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=we.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:b()})),Ie=I("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=we.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:b()}));function Ne(t,e){var n,a;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return we();for(n=e[0],a=1;a<e.length;++a)e[a].isValid()&&!e[a][t](n)||(n=e[a]);return n}var Ce=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Re(t){var e=M(t),n=e.year||0,a=e.quarter||0,r=e.month||0,i=e.week||e.isoWeek||0,s=e.day||0,o=e.hour||0,u=e.minute||0,d=e.second||0,l=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===vt.call(Ce,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,a=0;a<Ce.length;++a)if(t[Ce[a]]){if(n)return!1;parseFloat(t[Ce[a]])!==O(t[Ce[a]])&&(n=!0)}return!0}(e),this._milliseconds=+l+1e3*d+6e4*u+1e3*o*60*60,this._days=+s+7*i,this._months=+r+3*a+12*n,this._data={},this._locale=oe(),this._bubble()}function Ae(t){return t instanceof Re}function ke(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ee(t,e){Y(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+F(~~(t/60),2)+e+F(~~t%60,2)}))}Ee("Z",":"),Ee("ZZ",""),lt("Z",ot),lt("ZZ",ot),gt(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=De(ot,t)}));var Le=/([\+\-]|\d\d)/gi;function De(t,e){var n=(e||"").match(t);if(null===n)return null;var a=((n[n.length-1]||[])+"").match(Le)||["-",0,0],r=60*a[1]+O(a[2]);return 0===r?0:"+"===a[0]?r:-r}function Pe(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(_(t)||d(t)?t.valueOf():we(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):we(t).local()}function Me(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function qe(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Fe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ge(t,e){var n,a,r,i,s,o,d=t,l=null;return Ae(t)?d={ms:t._milliseconds,d:t._days,M:t._months}:u(t)?(d={},e?d[e]=t:d.milliseconds=t):(l=je.exec(t))?(n="-"===l[1]?-1:1,d={y:0,d:O(l[2])*n,h:O(l[3])*n,m:O(l[4])*n,s:O(l[5])*n,ms:O(ke(1e3*l[6]))*n}):(l=Fe.exec(t))?d={y:Ve(l[2],n="-"===l[1]?-1:1),M:Ve(l[3],n),w:Ve(l[4],n),d:Ve(l[5],n),h:Ve(l[6],n),m:Ve(l[7],n),s:Ve(l[8],n)}:null==d?d={}:"object"==typeof d&&("from"in d||"to"in d)&&(i=we(d.from),s=we(d.to),r=i.isValid()&&s.isValid()?(s=Pe(s,i),i.isBefore(s)?o=ze(i,s):((o=ze(s,i)).milliseconds=-o.milliseconds,o.months=-o.months),o):{milliseconds:0,months:0},(d={}).ms=r.milliseconds,d.M=r.months),a=new Re(d),Ae(t)&&c(t,"_locale")&&(a._locale=t._locale),a}function Ve(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function ze(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Be(t,e){return function(n,a){var r;return null===a||isNaN(+a)||(R(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=a,a=r),Ye(this,Ge(n="string"==typeof n?+n:n,a),t),this}}function Ye(t,e,n,a){var i=e._milliseconds,s=ke(e._days),o=ke(e._months);t.isValid()&&(a=null==a||a,o&&Rt(t,Tt(t,"Month")+o*n),s&&Ot(t,"Date",Tt(t,"Date")+s*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,s||o))}Ge.fn=Re.prototype,Ge.invalid=function(){return Ge(NaN)};var He=Be(1,"add"),Ue=Be(-1,"subtract");function We(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),a=t.clone().add(n,"months");return-(n+(e-a<0?(e-a)/(a-t.clone().add(n-1,"months")):(e-a)/(t.clone().add(n+1,"months")-a)))||0}function Ke(t){var e;return void 0===t?this._locale._abbr:(null!=(e=oe(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var $e=I("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function Ze(){return this._locale}function Je(t,e){return(t%e+e)%e}function Qe(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function Xe(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function tn(t,e){Y(0,[t,t.length],0,e)}function en(t,e,n,a,r){var i;return null==t?jt(this,a,r).year:(e>(i=Ft(t,a,r))&&(e=i),nn.call(this,t,e,n,a,r))}function nn(t,e,n,a,r){var i=qt(t,e,n,a,r),s=Pt(i.year,0,i.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}Y(0,["gg",2],0,(function(){return this.weekYear()%100})),Y(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),j("weekYear",1),j("isoWeekYear",1),lt("G",it),lt("g",it),lt("GG",Q,K),lt("gg",Q,K),lt("GGGG",nt,Z),lt("gggg",nt,Z),lt("GGGGG",at,J),lt("ggggg",at,J),pt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){e[a.substr(0,2)]=O(t)})),pt(["gg","GG"],(function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)})),Y("Q",0,"Qo","quarter"),D("quarter","Q"),j("quarter",7),lt("Q",W),gt("Q",(function(t,e){e[1]=3*(O(t)-1)})),Y("D",["DD",2],"Do","date"),D("date","D"),j("date",9),lt("D",Q),lt("DD",Q,K),lt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),gt(["D","DD"],2),gt("Do",(function(t,e){e[2]=O(t.match(Q)[0])}));var an=_t("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),j("dayOfYear",4),lt("DDD",et),lt("DDDD",$),gt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=O(t)})),Y("m",["mm",2],0,"minute"),D("minute","m"),j("minute",14),lt("m",Q),lt("mm",Q,K),gt(["m","mm"],4);var rn=_t("Minutes",!1);Y("s",["ss",2],0,"second"),D("second","s"),j("second",15),lt("s",Q),lt("ss",Q,K),gt(["s","ss"],5);var sn,on=_t("Seconds",!1);for(Y("S",0,0,(function(){return~~(this.millisecond()/100)})),Y(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),Y(0,["SSS",3],0,"millisecond"),Y(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),Y(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),Y(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),Y(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),Y(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),Y(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),D("millisecond","ms"),j("millisecond",16),lt("S",et,W),lt("SS",et,K),lt("SSS",et,$),sn="SSSS";sn.length<=9;sn+="S")lt(sn,rt);function un(t,e){e[6]=O(1e3*("0."+t))}for(sn="S";sn.length<=9;sn+="S")gt(sn,un);var dn=_t("Milliseconds",!1);Y("z",0,0,"zoneAbbr"),Y("zz",0,0,"zoneName");var ln=x.prototype;function cn(t){return t}ln.add=He,ln.calendar=function(t,e){var n=t||we(),a=Pe(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",s=e&&(A(e[i])?e[i].call(this,n):e[i]);return this.format(s||this.localeData().calendar(i,this,we(n)))},ln.clone=function(){return new x(this)},ln.diff=function(t,e,n){var a,r,i;if(!this.isValid())return NaN;if(!(a=Pe(t,this)).isValid())return NaN;switch(r=6e4*(a.utcOffset()-this.utcOffset()),e=P(e)){case"year":i=We(this,a)/12;break;case"month":i=We(this,a);break;case"quarter":i=We(this,a)/3;break;case"second":i=(this-a)/1e3;break;case"minute":i=(this-a)/6e4;break;case"hour":i=(this-a)/36e5;break;case"day":i=(this-a-r)/864e5;break;case"week":i=(this-a-r)/6048e5;break;default:i=this-a}return n?i:T(i)},ln.endOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-Je(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-Je(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},ln.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=H(this,t);return this.localeData().postformat(e)},ln.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||we(t).isValid())?Ge({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},ln.fromNow=function(t){return this.from(we(),t)},ln.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||we(t).isValid())?Ge({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},ln.toNow=function(t){return this.to(we(),t)},ln.get=function(t){return A(this[t=P(t)])?this[t]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(t,e){var n=_(t)?t:we(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},ln.isBefore=function(t,e){var n=_(t)?t:we(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},ln.isBetween=function(t,e,n,a){var r=_(t)?t:we(t),i=_(e)?e:we(e);return!!(this.isValid()&&r.isValid()&&i.isValid())&&("("===(a=a||"()")[0]?this.isAfter(r,n):!this.isBefore(r,n))&&(")"===a[1]?this.isBefore(i,n):!this.isAfter(i,n))},ln.isSame=function(t,e){var n,a=_(t)?t:we(t);return!(!this.isValid()||!a.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()===a.valueOf():(n=a.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},ln.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},ln.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},ln.isValid=function(){return p(this)},ln.lang=$e,ln.locale=Ke,ln.localeData=Ze,ln.max=Ie,ln.min=Se,ln.parsingFlags=function(){return f({},g(this))},ln.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:q[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=M(t)),a=0;a<n.length;a++)this[n[a].unit](t[n[a].unit]);else if(A(this[t=P(t)]))return this[t](e);return this},ln.startOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=Je(e,6e4);break;case"second":e=this._d.valueOf(),e-=Je(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},ln.subtract=Ue,ln.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},ln.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):A(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";return this.format(n+a+"-MM-DD[T]HH:mm:ss.SSS"+e+'[")]')},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=xt,ln.isLeapYear=function(){return yt(this.year())},ln.weekYear=function(t){return en.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(t){return en.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},ln.month=At,ln.daysInMonth=function(){return wt(this.year(),this.month())},ln.week=ln.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},ln.isoWeek=ln.isoWeeks=function(t){var e=jt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},ln.weeksInYear=function(){var t=this.localeData()._week;return Ft(this.year(),t.dow,t.doy)},ln.isoWeeksInYear=function(){return Ft(this.year(),1,4)},ln.date=an,ln.day=ln.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},ln.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},ln.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},ln.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},ln.hour=ln.hours=Xt,ln.minute=ln.minutes=rn,ln.second=ln.seconds=on,ln.millisecond=ln.milliseconds=dn,ln.utcOffset=function(t,e,n){var a,i=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=De(ot,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=Me(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Ye(this,Ge(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Me(this)},ln.utc=function(t){return this.utcOffset(0,t)},ln.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Me(this),"m")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=De(st,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?we(t).utcOffset():0,(this.utcOffset()-t)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=qe,ln.isUTC=qe,ln.zoneAbbr=function(){return this._isUTC?"UTC":""},ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ln.dates=I("dates accessor is deprecated. Use date instead.",an),ln.months=I("months accessor is deprecated. Use month instead",At),ln.years=I("years accessor is deprecated. Use year instead",xt),ln.zone=I("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),ln.isDSTShifted=I("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Te(t))._a){var e=t._isUTC?h(t._a):we(t._a);this._isDSTShifted=this.isValid()&&w(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var fn=E.prototype;function hn(t,e,n,a){var r=oe(),i=h().set(a,e);return r[n](i,t)}function gn(t,e,n){if(u(t)&&(e=t,t=void 0),t=t||"",null!=e)return hn(t,e,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=hn(t,a,n,"month");return r}function pn(t,e,n,a){"boolean"==typeof t?(u(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,u(e)&&(n=e,e=void 0),e=e||"");var r,i=oe(),s=t?i._week.dow:0;if(null!=n)return hn(e,(n+s)%7,a,"day");var o=[];for(r=0;r<7;r++)o[r]=hn(e,(r+s)%7,a,"day");return o}fn.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return A(a)?a.call(e,n):a},fn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},fn.invalidDate=function(){return this._invalidDate},fn.ordinal=function(t){return this._ordinal.replace("%d",t)},fn.preparse=cn,fn.postformat=cn,fn.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return A(r)?r(t,e,n,a):r.replace(/%d/i,t)},fn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return A(n)?n(e):n.replace(/%s/i,e)},fn.set=function(t){var e,n;for(n in t)A(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},fn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||St).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},fn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[St.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},fn.monthsParse=function(t,e,n){var a,r,i;if(this._monthsParseExact)return Ct.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=h([2e3,a]),n&&!this._longMonthsParse[a]&&(this._longMonthsParse[a]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[a]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),n||this._monthsParse[a]||(i="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[a]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[a].test(t))return a;if(n&&"MMM"===e&&this._shortMonthsParse[a].test(t))return a;if(!n&&this._monthsParse[a].test(t))return a}},fn.monthsRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Et),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},fn.monthsShortRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=kt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},fn.week=function(t){return jt(t,this._week.dow,this._week.doy).week},fn.firstDayOfYear=function(){return this._week.doy},fn.firstDayOfWeek=function(){return this._week.dow},fn.weekdays=function(t,e){var n=i(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Gt(n,this._week.dow):t?n[t.day()]:n},fn.weekdaysMin=function(t){return!0===t?Gt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},fn.weekdaysShort=function(t){return!0===t?Gt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},fn.weekdaysParse=function(t,e,n){var a,r,i;if(this._weekdaysParseExact)return Yt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=h([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(i="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[a]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}},fn.weekdaysRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ht),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},fn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},fn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Wt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},fn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},fn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===O(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=I("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=I("moment.langData is deprecated. Use moment.localeData instead.",oe);var bn=Math.abs;function mn(t,e,n,a){var r=Ge(e,n);return t._milliseconds+=a*r._milliseconds,t._days+=a*r._days,t._months+=a*r._months,t._bubble()}function yn(t){return t<0?Math.floor(t):Math.ceil(t)}function vn(t){return 4800*t/146097}function xn(t){return 146097*t/4800}function _n(t){return function(){return this.as(t)}}var Tn=_n("ms"),On=_n("s"),wn=_n("m"),Sn=_n("h"),In=_n("d"),Nn=_n("w"),Cn=_n("M"),Rn=_n("Q"),An=_n("y");function kn(t){return function(){return this.isValid()?this._data[t]:NaN}}var En=kn("milliseconds"),Ln=kn("seconds"),Dn=kn("minutes"),Pn=kn("hours"),Mn=kn("days"),qn=kn("months"),jn=kn("years"),Fn=Math.round,Gn={ss:44,s:45,m:45,h:22,d:26,M:11};function Vn(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}var zn=Math.abs;function Bn(t){return(t>0)-(t<0)||+t}function Yn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=zn(this._milliseconds)/1e3,a=zn(this._days),r=zn(this._months);t=T(n/60),e=T(t/60),n%=60,t%=60;var i=T(r/12),s=r%=12,o=a,u=e,d=t,l=n?n.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var f=c<0?"-":"",h=Bn(this._months)!==Bn(c)?"-":"",g=Bn(this._days)!==Bn(c)?"-":"",p=Bn(this._milliseconds)!==Bn(c)?"-":"";return f+"P"+(i?h+i+"Y":"")+(s?h+s+"M":"")+(o?g+o+"D":"")+(u||d||l?"T":"")+(u?p+u+"H":"")+(d?p+d+"M":"")+(l?p+l+"S":"")}var Hn=Re.prototype;return Hn.isValid=function(){return this._isValid},Hn.abs=function(){var t=this._data;return this._milliseconds=bn(this._milliseconds),this._days=bn(this._days),this._months=bn(this._months),t.milliseconds=bn(t.milliseconds),t.seconds=bn(t.seconds),t.minutes=bn(t.minutes),t.hours=bn(t.hours),t.months=bn(t.months),t.years=bn(t.years),this},Hn.add=function(t,e){return mn(this,t,e,1)},Hn.subtract=function(t,e){return mn(this,t,e,-1)},Hn.as=function(t){if(!this.isValid())return NaN;var e,n,a=this._milliseconds;if("month"===(t=P(t))||"quarter"===t||"year"===t)switch(n=this._months+vn(e=this._days+a/864e5),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(xn(this._months)),t){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hour":return 24*e+a/36e5;case"minute":return 1440*e+a/6e4;case"second":return 86400*e+a/1e3;case"millisecond":return Math.floor(864e5*e)+a;default:throw new Error("Unknown unit "+t)}},Hn.asMilliseconds=Tn,Hn.asSeconds=On,Hn.asMinutes=wn,Hn.asHours=Sn,Hn.asDays=In,Hn.asWeeks=Nn,Hn.asMonths=Cn,Hn.asQuarters=Rn,Hn.asYears=An,Hn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*O(this._months/12):NaN},Hn._bubble=function(){var t,e,n,a,r,i=this._milliseconds,s=this._days,o=this._months,u=this._data;return i>=0&&s>=0&&o>=0||i<=0&&s<=0&&o<=0||(i+=864e5*yn(xn(o)+s),s=0,o=0),u.milliseconds=i%1e3,t=T(i/1e3),u.seconds=t%60,e=T(t/60),u.minutes=e%60,n=T(e/60),u.hours=n%24,s+=T(n/24),o+=r=T(vn(s)),s-=yn(xn(r)),a=T(o/12),o%=12,u.days=s,u.months=o,u.years=a,this},Hn.clone=function(){return Ge(this)},Hn.get=function(t){return t=P(t),this.isValid()?this[t+"s"]():NaN},Hn.milliseconds=En,Hn.seconds=Ln,Hn.minutes=Dn,Hn.hours=Pn,Hn.days=Mn,Hn.weeks=function(){return T(this.days()/7)},Hn.months=qn,Hn.years=jn,Hn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var a=Ge(t).abs(),r=Fn(a.as("s")),i=Fn(a.as("m")),s=Fn(a.as("h")),o=Fn(a.as("d")),u=Fn(a.as("M")),d=Fn(a.as("y")),l=r<=Gn.ss&&["s",r]||r<Gn.s&&["ss",r]||i<=1&&["m"]||i<Gn.m&&["mm",i]||s<=1&&["h"]||s<Gn.h&&["hh",s]||o<=1&&["d"]||o<Gn.d&&["dd",o]||u<=1&&["M"]||u<Gn.M&&["MM",u]||d<=1&&["y"]||["yy",d];return l[2]=e,l[3]=+t>0,l[4]=n,Vn.apply(null,l)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Hn.toISOString=Yn,Hn.toString=Yn,Hn.toJSON=Yn,Hn.locale=Ke,Hn.localeData=Ze,Hn.toIsoString=I("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Yn),Hn.lang=$e,Y("X",0,0,"unix"),Y("x",0,0,"valueOf"),lt("x",it),lt("X",/[+-]?\d+(\.\d{1,3})?/),gt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),gt("x",(function(t,e,n){n._d=new Date(O(t))})),r.version="2.24.0",e=we,r.fn=ln,r.min=function(){var t=[].slice.call(arguments,0);return Ne("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return Ne("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=h,r.unix=function(t){return we(1e3*t)},r.months=function(t,e){return gn(t,e,"months")},r.isDate=d,r.locale=ie,r.invalid=b,r.duration=Ge,r.isMoment=_,r.weekdays=function(t,e,n){return pn(t,e,n,"weekdays")},r.parseZone=function(){return we.apply(null,arguments).parseZone()},r.localeData=oe,r.isDuration=Ae,r.monthsShort=function(t,e){return gn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return pn(t,e,n,"weekdaysMin")},r.defineLocale=se,r.updateLocale=function(t,e){if(null!=e){var n,a,r=te;null!=(a=re(t))&&(r=a._config),(n=new E(e=k(r,e))).parentLocale=ee[t],ee[t]=n,ie(t)}else null!=ee[t]&&(null!=ee[t].parentLocale?ee[t]=ee[t].parentLocale:null!=ee[t]&&delete ee[t]);return ee[t]},r.locales=function(){return N(ee)},r.weekdaysShort=function(t,e,n){return pn(t,e,n,"weekdaysShort")},r.normalizeUnits=P,r.relativeTimeRounding=function(t){return void 0===t?Fn:"function"==typeof t&&(Fn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Gn[t]&&(void 0===e?Gn[t]:(Gn[t]=e,"s"===t&&(Gn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=ln,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},wg0c:function(t,e,n){var a=n("2oRo"),r=n("WKiH").trim,i=n("WJkJ"),s=a.parseInt,o=/^[+-]?0[Xx]/,u=8!==s(i+"08")||22!==s(i+"0x16");t.exports=u?function(t,e){var n=r(String(t));return s(n,e>>>0||(o.test(n)?16:10))}:s},wig9:function(t,e){t.exports=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r}},wnGv:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("s7LF"),i=n("LvDl"),s=n("oxzT"),o=n("QFaf"),u=n("DNAf"),d=n("a96k");class l{constructor(t){this.i18n=t,this.data=[],this.options=[],this.messages=new u.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.Object=Object,this.filteredOptions=[],this.icons=s.a}ngOnInit(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=i.sortBy(this.options,["name"]),this.updateOptions()}initFilter(){this.filter=new r.i("",{validators:this.customBadgeValidators}),this.form=new o.a({filter:this.filter}),this.filteredOptions=[...this.options||[]]}initMissingOptions(){const t=this.options.map(t=>t.name);this.data.filter(e=>-1===t.indexOf(e)).forEach(t=>this.addOption(t)),this.forceOptionsToReflectData()}addOption(t){this.options.push(new d.a(!1,t,"")),this.options=i.sortBy(this.options,["name"]),this.triggerSelection(this.options.find(e=>e.name===t))}triggerSelection(t){!t||this.selectionLimit&&!t.selected&&this.data.length>=this.selectionLimit||(t.selected=!t.selected,this.updateOptions(),this.selection.emit({option:t}))}updateOptions(){this.data.splice(0,this.data.length),this.options.forEach(t=>{t.selected&&this.data.push(t.name)}),this.updateFilter()}updateFilter(){this.filteredOptions=this.options.filter(t=>t.name.includes(this.filter.value))}forceOptionsToReflectData(){this.options.forEach(t=>{-1!==this.data.indexOf(t.name)&&(t.selected=!0)})}ngOnChanges(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()}selectOption(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())}addCustomOption(){this.isCreatable()&&(this.addOption(this.filter.value),this.resetFilter())}isCreatable(){return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(t=>t.name!==this.filter.value)}resetFilter(){this.filter.setValue(""),this.updateFilter()}removeItem(t){this.triggerSelection(this.options.find(e=>e.name===t&&e.selected))}}},woSy:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return t.prototype.onDrop=function(t){this.node.mouseAction("drop",t.event,{from:t.element,to:{parent:this.node,index:this.dropIndex}})},t.prototype.allowDrop=function(t,e){return this.node.options.allowDrop(t,{parent:this.node,index:this.dropIndex},e)},i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"dropIndex",void 0),i([Object(a.Component)({selector:"TreeNodeDropSlot, tree-node-drop-slot",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <div\n      class="node-drop-slot"\n      (treeDrop)="onDrop($event)"\n      [treeAllowDrop]="allowDrop.bind(this)"\n      [allowDragoverStyling]="true">\n    </div>\n  '})],t)}()},wrZu:function(t,e,n){var a=n("+K+b"),r=n("XYm9"),i=n("b2z7"),s=n("otv/"),o=n("yP5f");t.exports=function(t,e,n){var u=t.constructor;switch(e){case"[object ArrayBuffer]":return a(t);case"[object Boolean]":case"[object Date]":return new u(+t);case"[object DataView]":return r(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return o(t,n);case"[object Map]":return new u;case"[object Number]":case"[object String]":return new u(t);case"[object RegExp]":return i(t);case"[object Set]":return new u;case"[object Symbol]":return s(t)}}},x38r:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.bold="bold",t.sparkline="sparkline",t.perSecond="perSecond",t.checkIcon="checkIcon",t.routerLink="routerLink",t.executing="executing",t.classAdding="classAdding",t.badge="badge",t.map="map",t.truncate="truncate",t}({})},x6pH:function(t,e,n){!function(t){"use strict";t.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(t){return 2===t?"שעתיים":t+" שעות"},d:"יום",dd:function(t){return 2===t?"יומיים":t+" ימים"},M:"חודש",MM:function(t){return 2===t?"חודשיים":t+" חודשים"},y:"שנה",yy:function(t){return 2===t?"שנתיים":t%10==0&&10!==t?t+" שנה":t+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(t){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(t)},meridiem:function(t,e,n){return t<5?"לפנות בוקר":t<10?"בבוקר":t<12?n?'לפנה"צ':"לפני הצהריים":t<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("wd/R"))},xDBR:function(t,e){t.exports=!1},xSw7:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fgil"),i=n("aXbf"),s=n("978R"),o=n("z/SZ"),u=n("2uy1");n("GgAd"),n.d(e,"a",(function(){return d})),n.d(e,"b",(function(){return c}));var d=a["ɵcrt"]({encapsulation:0,styles:[[".bg-info[_ngcontent-%COMP%]{background-color:#2b99a8!important}.bg-freespace[_ngcontent-%COMP%]{background-color:#d1d1d1!important}.progress[_ngcontent-%COMP%]{height:20px;position:relative;margin-bottom:0}.progress[_ngcontent-%COMP%]   div.progress-bar[_ngcontent-%COMP%]{position:static}.progress[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{position:absolute;display:block;width:100%;color:#000;font-weight:400}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,14,"table",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Used: "])),(t()(),a["ɵeld"](4,0,null,null,3,"td",[["class","text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" ",""])),a["ɵppd"](7,1),(t()(),a["ɵeld"](8,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](9,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Free: "])),(t()(),a["ɵeld"](11,0,null,null,3,"td",[["class","'text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](12,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](13,null,["",""])),a["ɵppd"](14,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,6,0,t(e,7,0,a["ɵnov"](e.parent,0),n.usedBytes));t(e,6,0,r);var i=a["ɵunv"](e,13,0,t(e,14,0,a["ɵnov"](e.parent,0),n.freeBytes));t(e,13,0,i)}))}function c(t){return a["ɵvid"](0,[a["ɵpid"](0,r.a,[i.a]),(t()(),a["ɵand"](0,[["usageTooltipTpl",2]],null,0,null,l)),(t()(),a["ɵeld"](2,16777216,null,null,5,"div",[["class","progress"],["data-placement","left"]],null,null,null,null,null)),a["ɵdid"](3,212992,null,0,s.c,[a.ViewContainerRef,o.a,s.a,a.ElementRef,a.Renderer2,u.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(t()(),a["ɵeld"](4,0,null,null,2,"div",[["class","progress-bar bg-info"],["role","progressbar"]],[[4,"width",null]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,["","%"])),(t()(),a["ɵeld"](7,0,null,null,0,"div",[["class","progress-bar bg-freespace"],["role","progressbar"]],[[4,"width",null]],null,null,null,null))],(function(t,e){t(e,3,0,a["ɵnov"](e,1),"left")}),(function(t,e){var n=e.component;t(e,4,0,n.usedPercentage+"%"),t(e,6,0,n.usedPercentage),t(e,7,0,n.freePercentage+"%")}))}},xTzq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("LvDl");function r(...t){switch(t.length){case 1:return s.apply(void 0,t);case 3:return o.apply(void 0,t);default:throw new Error}}function i(t,e,n){const a=`__ignore_${e}`;Array.isArray(t[a])?t[a].push(n):t[a]=[n]}function s(t){for(const e of Object.getOwnPropertyNames(t.prototype)){const n=Object.getOwnPropertyDescriptor(t.prototype,e),a="constructor"===e;n.value instanceof Function&&!a&&(o(t.prototype,e,n),Object.defineProperty(t.prototype,e,n))}}function o(t,e,n){void 0===n&&(n=Object.getOwnPropertyDescriptor(t,e));const r=n.value;n.value=function(){const n=`__ignore_${e}`,i=t[n]||[],s=[];for(let t=0;t<arguments.length;t++)s[t]=a.isString(arguments[t])&&-1===i.indexOf(t)?encodeURIComponent(arguments[t]):arguments[t];const o=r.apply(this,s);return o}}},xYSL:function(t,e){t.exports=function(t,e){return t.has(e)}},xbPD:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t=null){return e=>e.lift(new i(t))}class i{constructor(t){this.defaultValue=t}call(t,e){return e.subscribe(new s(t,this.defaultValue))}}class s extends a.a{constructor(t,e){super(t),this.defaultValue=e,this.isEmpty=!0}_next(t){this.isEmpty=!1,this.destination.next(t)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}},xgIS:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("DH7j"),i=n("n6bG"),s=n("lJxs");function o(t,e,n,u){return Object(i.a)(n)&&(u=n,n=void 0),u?o(t,e,n).pipe(Object(s.a)(t=>Object(r.a)(t)?u(...t):u(t))):new a.a(a=>{!function t(e,n,a,r,i){let s;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){const t=e;e.addEventListener(n,a,i),s=()=>t.removeEventListener(n,a,i)}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){const t=e;e.on(n,a),s=()=>t.off(n,a)}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){const t=e;e.addListener(n,a),s=()=>t.removeListener(n,a)}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(let s=0,o=e.length;s<o;s++)t(e[s],n,a,r,i)}r.add(s)}(t,e,(function(t){a.next(arguments.length>1?Array.prototype.slice.call(arguments):t)}),a,n)})}},"xj/R":function(t,e,n){"use strict";function a(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function r(t){return"string"==typeof t}function i(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t){return t&&t.getTime&&!isNaN(t.getTime())}function o(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function d(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function l(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function f(t){return void 0===t}function h(t){const e=+t;let n=0;return 0!==e&&isFinite(e)&&(n=a(e)),n}n.d(e,"a",(function(){return $e})),n.d(e,"b",(function(){return Je})),n.d(e,"c",(function(){return Jt})),n.d(e,"d",(function(){return Tt})),n.d(e,"e",(function(){return nn})),n.d(e,"f",(function(){return xe})),n.d(e,"g",(function(){return an})),n.d(e,"h",(function(){return R})),n.d(e,"i",(function(){return L})),n.d(e,"j",(function(){return E})),n.d(e,"k",(function(){return Qt})),n.d(e,"l",(function(){return k})),n.d(e,"m",(function(){return rn})),n.d(e,"n",(function(){return Re})),n.d(e,"o",(function(){return d})),n.d(e,"p",(function(){return Ae})),n.d(e,"q",(function(){return i})),n.d(e,"r",(function(){return s})),n.d(e,"s",(function(){return ke})),n.d(e,"t",(function(){return D})),n.d(e,"u",(function(){return Ee})),n.d(e,"v",(function(){return q})),n.d(e,"w",(function(){return P})),n.d(e,"x",(function(){return M})),n.d(e,"y",(function(){return sn})),n.d(e,"z",(function(){return on})),n.d(e,"A",(function(){return un})),n.d(e,"B",(function(){return Ie})),n.d(e,"C",(function(){return hn})),n.d(e,"D",(function(){return gn})),n.d(e,"E",(function(){return bt})),n.d(e,"F",(function(){return pt})),n.d(e,"G",(function(){return _t})),n.d(e,"H",(function(){return Ne})),n.d(e,"I",(function(){return pn}));const g={},p={date:"day",hour:"hours",minute:"minutes",second:"seconds",millisecond:"milliseconds"};function b(t,e){const n=t.toLowerCase();let a=t;n in p&&(a=p[n]),g[n]=g[`${n}s`]=g[e]=a}function m(t){return r(t)?g[t]||g[t.toLowerCase()]:void 0}function y(t,e,n){const a=`${Math.abs(t)}`;return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}let v={},x={};const _=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;function T(t,e,n,a){t&&(x[t]=a),e&&(x[e[0]]=function(){return y(a.apply(null,arguments),e[1],e[2])}),n&&(x[n]=function(e,n){return n.locale.ordinal(a.apply(null,arguments),t)})}function O(t,e,n){const a=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(t),a}function w(t,e=0,n=1,a=0,r=0,i=0,s=0){const o=new Date(t,e,n,a,r,i,s);return t<100&&t>=0&&isFinite(o.getFullYear())&&o.setFullYear(t),o}function S(t,e=!1){return e?t.getUTCHours():t.getHours()}function I(t,e=!1){return e?t.getUTCMinutes():t.getMinutes()}function N(t,e=!1){return e?t.getUTCSeconds():t.getSeconds()}function C(t,e=!1){return e?t.getUTCMilliseconds():t.getMilliseconds()}function R(t,e=!1){return e?t.getUTCDay():t.getDay()}function A(t,e=!1){return e?t.getUTCDate():t.getDate()}function k(t,e=!1){return e?t.getUTCMonth():t.getMonth()}function E(t,e=!1){return e?t.getUTCFullYear():t.getFullYear()}function L(t){return w(t.getFullYear(),t.getMonth(),1,t.getHours(),t.getMinutes(),t.getSeconds())}function D(t,e){return t.getDay()===e}function P(t,e){return!(!t||!e)&&M(t,e)&&k(t)===k(e)}function M(t,e){return!(!t||!e)&&E(t)===E(e)}function q(t,e){return!(!t||!e)&&M(t,e)&&P(t,e)&&A(t)===A(e)}const j=/\d/,F=/\d\d/,G=/\d{3}/,V=/\d{4}/,z=/[+-]?\d{6}/,B=/\d\d?/,Y=/\d\d\d\d?/,H=/\d\d\d\d\d\d?/,U=/\d{1,3}/,W=/\d{1,4}/,K=/[+-]?\d{1,6}/,$=/\d+/,Z=/[+-]?\d+/,J=/Z|[+-]\d\d(?::?\d\d)?/gi,Q=/[+-]?\d+(\.\d{1,3})?/,X=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,tt={};function et(t,e,n){tt[t]=o(e)?e:function(t,a){return t&&n?n:e}}function nt(t,e){return l(tt,t)?tt[t](!1,e):new RegExp(at(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(t,e,n,a,r)=>e||n||a||r)))}function at(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}const rt={};function it(t,e){const n=r(t)?[t]:t;let a=e;if(u(e)&&(a=function(t,n,a){return n[e]=h(t),a}),d(n)&&o(a)){let t;for(t=0;t<n.length;t++)rt[n[t]]=a}}function st(t,e){it(t,(function(t,n,a,r){return a._w=a._w||{},e(t,a._w,a,r)}))}function ot(t,e,n){return null!=e&&l(rt,t)&&rt[t](e,n._a,n,t),n}function ut(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function dt(t,e){return E(t,e.isUTC).toString()}function lt(t){return h(t)+(h(t)>68?1900:2e3)}function ct(t){return ft(t)?366:365}function ft(t){return t%4==0&&t%100!=0||t%400==0}function ht(t,e){if(isNaN(t)||isNaN(e))return NaN;const n=(e%12+12)%12;return 1===n?ft(t+(e-n)/12)?29:28:31-n%7%2}const gt={year:0,month:0,day:0,hour:0,minute:0,seconds:0};function pt(t,e){const n=Object.assign({},gt,e),a=t.getFullYear()+(n.year||0),r=t.getMonth()+(n.month||0);let i=t.getDate()+(n.day||0);return n.month&&!n.day&&(i=Math.min(i,ht(a,r))),w(a,r,i,t.getHours()+(n.hour||0),t.getMinutes()+(n.minute||0),t.getSeconds()+(n.seconds||0))}function bt(t,e){return w(mt(t.getFullYear(),e.year),mt(t.getMonth(),e.month),1,mt(t.getHours(),e.hour),mt(t.getMinutes(),e.minute),mt(t.getSeconds(),e.seconds),mt(t.getMilliseconds(),e.milliseconds))}function mt(t,e){return u(e)?e:t}function yt(t,e,n){const a=Math.min(A(t),ht(E(t),e));return n?t.setUTCMonth(e,a):t.setMonth(e,a),t}function vt(t,e,n){return n?t.setUTCDate(e):t.setDate(e),t}function xt(t){return new Date(t.getTime())}function _t(t,e,n){const a=xt(t);switch(e){case"year":yt(a,0,n);case"quarter":case"month":vt(a,1,n);case"week":case"isoWeek":case"day":case"date":!function(t,e,n){n?t.setUTCHours(0):t.setHours(0)}(a,0,n);case"hours":!function(t,e,n){n?t.setUTCMinutes(0):t.setMinutes(0)}(a,0,n);case"minutes":!function(t,e,n){n?t.setUTCSeconds(0):t.setSeconds(0)}(a,0,n);case"seconds":!function(t,e,n){n?t.setUTCMilliseconds(0):t.setMilliseconds(0)}(a,0,n)}return"week"===e&&function(t,e,n={}){je(t,0-ze(t,n.locale,n.isUTC),"day")}(a,0,{isUTC:n}),"isoWeek"===e&&function(t,e,n={}){const a=function(t,e=Qt()){return r(t)?e.weekdaysParse(t)%7||7:u(t)&&isNaN(t)?null:t}(1,n.locale);Ge(t,Ve(t)%7?a:a-7)}(a),"quarter"===e&&yt(a,3*Math.floor(k(a,n)/3),n),a}function Tt(t,e,n){let a=e;return"date"===a&&(a="day"),function(t,e,n,a){return Fe(t,Pe(1,"milliseconds"),-1,a)}(je(_t(t,a,n),1,"isoWeek"===a?"week":a,n),0,0,n)}function Ot(t,e){const n=+_t(t,"day",e),a=+_t(t,"year",e);return Math.round((n-a)/864e5)+1}function wt(t,e,n){const a=e-n+7;return-(O(t,0,a).getUTCDay()-e+7)%7+a-1}function St(t,e,n,a){const r=wt(E(t,a),e,n),i=Math.floor((Ot(t,a)-r-1)/7)+1;let s,o;return i<1?(o=E(t,a)-1,s=i+It(o,e,n)):i>It(E(t,a),e,n)?(s=i-It(E(t,a),e,n),o=E(t,a)+1):(o=E(t,a),s=i),{week:s,year:o}}function It(t,e,n){const a=wt(t,e,n),r=wt(t+1,e,n);return(ct(t)-a+r)/7}const Nt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ct="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Rt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),kt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Et={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Lt=X,Dt=X;class Pt{constructor(t){t&&this.set(t)}set(t){let e;for(e in t){if(!t.hasOwnProperty(e))continue;const n=t[e];this[o(n)?e:`_${e}`]=n}this._config=t}calendar(t,e,n){const a=this._calendar[t]||this._calendar.sameElse;return o(a)?a.call(null,e,n):a}longDateFormat(t){const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])}get invalidDate(){return this._invalidDate}set invalidDate(t){this._invalidDate=t}ordinal(t,e){return this._ordinal.replace("%d",t.toString(10))}preparse(t){return t}preinput(t){return t}postvalue(t){return t}postformat(t){return t}relativeTime(t,e,n,a){const r=this._relativeTime[n];return o(r)?r(t,e,n,a):r.replace(/%d/i,t.toString(10))}pastFuture(t,e){const n=this._relativeTime[t>0?"future":"past"];return o(n)?n(e):n.replace(/%s/i,e)}months(t,e,n=!1){if(!t)return d(this._months)?this._months:this._months.standalone;if(d(this._months))return this._months[k(t,n)];const a=(this._months.isFormat||Nt).test(e)?"format":"standalone";return this._months[a][k(t,n)]}monthsShort(t,e,n=!1){if(!t)return d(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;if(d(this._monthsShort))return this._monthsShort[k(t,n)];const a=Nt.test(e)?"format":"standalone";return this._monthsShort[a][k(t,n)]}monthsParse(t,e,n){let a,r,i;if(this._monthsParseExact)return this.handleMonthStrictParse(t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=new Date(Date.UTC(2e3,i)),n&&!this._longMonthsParse[i]){const t=this.months(a,"",!0).replace(".",""),e=this.monthsShort(a,"",!0).replace(".","");this._longMonthsParse[i]=new RegExp(`^${t}$`,"i"),this._shortMonthsParse[i]=new RegExp(`^${e}$`,"i")}if(n||this._monthsParse[i]||(r=`^${this.months(a,"",!0)}|^${this.monthsShort(a,"",!0)}`,this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}}monthsRegex(t){return this._monthsParseExact?(l(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=Dt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)}monthsShortRegex(t){return this._monthsParseExact?(l(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=Lt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)}week(t,e){return St(t,this._week.dow,this._week.doy,e).week}firstDayOfWeek(){return this._week.dow}firstDayOfYear(){return this._week.doy}weekdays(t,e,n){if(!t)return d(this._weekdays)?this._weekdays:this._weekdays.standalone;if(d(this._weekdays))return this._weekdays[R(t,n)];const a=this._weekdays.isFormat.test(e)?"format":"standalone";return this._weekdays[a][R(t,n)]}weekdaysMin(t,e,n){return t?this._weekdaysMin[R(t,n)]:this._weekdaysMin}weekdaysShort(t,e,n){return t?this._weekdaysShort[R(t,n)]:this._weekdaysShort}weekdaysParse(t,e,n){let a,r;if(this._weekdaysParseExact)return this.handleWeekStrictParse(t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){const i=Ge(new Date(Date.UTC(2e3,1)),a,null,!0);if(n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp(`^${this.weekdays(i,"",!0).replace(".",".?")}$`,"i"),this._shortWeekdaysParse[a]=new RegExp(`^${this.weekdaysShort(i,"",!0).replace(".",".?")}$`,"i"),this._minWeekdaysParse[a]=new RegExp(`^${this.weekdaysMin(i,"",!0).replace(".",".?")}$`,"i")),this._weekdaysParse[a]||(r=`^${this.weekdays(i,"",!0)}|^${this.weekdaysShort(i,"",!0)}|^${this.weekdaysMin(i,"",!0)}`,this._weekdaysParse[a]=new RegExp(r.replace(".",""),"i")),!(d(this._fullWeekdaysParse)&&d(this._shortWeekdaysParse)&&d(this._minWeekdaysParse)&&d(this._weekdaysParse)))return;if(n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}}weekdaysRegex(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=X),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}weekdaysShortRegex(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=X),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}weekdaysMinRegex(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=X),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}isPM(t){return"p"===t.toLowerCase().charAt(0)}meridiem(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}formatLongDate(t){this._longDateFormat=this._longDateFormat?this._longDateFormat:Et;const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,t=>t.slice(1)),this._longDateFormat[t])}handleMonthStrictParse(t,e,n){const a=t.toLocaleLowerCase();let r,i,s;if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)s=new Date(2e3,r),this._shortMonthsParse[r]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(s,"").toLocaleLowerCase();return n?"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null):(i=this._longMonthsParse.indexOf(a),-1!==i?i:null):"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:(i=this._longMonthsParse.indexOf(a),-1!==i?i:null)):(i=this._longMonthsParse.indexOf(a),-1!==i?i:(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null))}handleWeekStrictParse(t,e,n){let a;const r=t.toLocaleLowerCase();if(!this._weekdaysParse){let t;for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],t=0;t<7;++t){const e=Ge(new Date(Date.UTC(2e3,1)),t,null,!0);this._minWeekdaysParse[t]=this.weekdaysMin(e).toLocaleLowerCase(),this._shortWeekdaysParse[t]=this.weekdaysShort(e).toLocaleLowerCase(),this._weekdaysParse[t]=this.weekdays(e,"").toLocaleLowerCase()}}if(d(this._weekdaysParse)&&d(this._shortWeekdaysParse)&&d(this._minWeekdaysParse))return n?"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:null):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null):"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null)))}computeMonthsParse(){const t=[],e=[],n=[];let a,r;for(r=0;r<12;r++)a=new Date(2e3,r),t.push(this.monthsShort(a,"")),e.push(this.months(a,"")),n.push(this.months(a,"")),n.push(this.monthsShort(a,""));for(t.sort(Mt),e.sort(Mt),n.sort(Mt),r=0;r<12;r++)t[r]=at(t[r]),e[r]=at(e[r]);for(r=0;r<24;r++)n[r]=at(n[r]);this._monthsRegex=new RegExp(`^(${n.join("|")})`,"i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._monthsShortStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}computeWeekdaysParse(){const t=[],e=[],n=[],a=[];let r;for(r=0;r<7;r++){const i=Ge(new Date(Date.UTC(2e3,1)),r,null,!0),s=this.weekdaysMin(i),o=this.weekdaysShort(i),u=this.weekdays(i);t.push(s),e.push(o),n.push(u),a.push(s),a.push(o),a.push(u)}for(t.sort(Mt),e.sort(Mt),n.sort(Mt),a.sort(Mt),r=0;r<7;r++)e[r]=at(e[r]),n[r]=at(n[r]),a[r]=at(a[r]);this._weekdaysRegex=new RegExp(`^(${a.join("|")})`,"i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(`^(${n.join("|")})`,"i"),this._weekdaysShortStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._weekdaysMinStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}}function Mt(t,e){return e.length-t.length}const qt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:Et,invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ct,monthsShort:Rt,week:{dow:0,doy:6},weekdays:At,weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysShort:kt,meridiemParse:/[ap]\.?m?\.?/i};function jt(t,e,n){const a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length);let i,s=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&h(t[i])!==h(e[i]))&&s++;return s+r}function Ft(t,e){T(null,[t,t.length,!1],null,e)}function Gt(t,e){return zt(t,e.locale).toString()}function Vt(t){return Bt(t).toString()}function zt(t,e=Qt(),n){return St(t,e.firstDayOfWeek(),e.firstDayOfYear(),n).year}function Bt(t,e){return St(t,1,4,e).year}function Yt(t,e){T(t,null,null,(function(t,n){let a=function(t,e={}){return e._isUTC?e._offset||0:function(t){return 15*-Math.round(t.getTimezoneOffset()/15)}(t)}(t,{_isUTC:n.isUTC,_offset:n.offset}),r="+";return a<0&&(a=-a,r="-"),r+y(~~(a/60),2)+e+y(~~a%60,2)}))}const Ht=/([\+\-]|\d\d)/gi,Ut={},Wt={};let Kt;function $t(t){return t?t.toLowerCase().replace("_","-"):t}function Zt(t,e){let n;return t&&(f(e)?n=Qt(t):r(t)&&(n=Jt(t,e)),n&&(Kt=n)),Kt&&Kt._abbr}function Jt(t,e){if(null===e)return delete Ut[t],Kt=Qt("en"),null;if(!e)return;let n=qt;if(e.abbr=t,null!=e.parentLocale){if(null==Ut[e.parentLocale])return Wt[e.parentLocale]||(Wt[e.parentLocale]=[]),Wt[e.parentLocale].push({name:t,config:e}),null;n=Ut[e.parentLocale]._config}return Ut[t]=new Pt(function(t,e){const n=Object.assign({},t);for(const a in e)l(e,a)&&(c(t[a])&&c(e[a])?(n[a]={},Object.assign(n[a],t[a]),Object.assign(n[a],e[a])):null!=e[a]?n[a]=e[a]:delete n[a]);for(const a in t)l(t,a)&&!l(e,a)&&c(t[a])&&(n[a]=Object.assign({},n[a]));return n}(n,e)),Wt[t]&&Wt[t].forEach((function(t){Jt(t.name,t.config)})),Zt(t),Ut[t]}function Qt(t){return Ut.en||(Zt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal(t){const e=t%10;return t+(1===h(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),T("w",["ww",2,!1],"wo",(function(t,e){return function(t,e=Qt(),n){return e.week(t,void 0)}(t,e.locale).toString(10)})),T("W",["WW",2,!1],"Wo",(function(t){return function(t,e){return St(t,1,4,void 0).week}(t).toString(10)})),b("week","w"),b("isoWeek","W"),et("w",B),et("ww",B,F),et("W",B),et("WW",B,F),st(["w","ww","W","WW"],(function(t,e,n,a){return e[a.substr(0,1)]=h(t),n})),T(null,["gg",2,!1],null,(function(t,e){return(zt(t,e.locale)%100).toString()})),T(null,["GG",2,!1],null,(function(t){return(Bt(t)%100).toString()})),Ft("gggg",Gt),Ft("ggggg",Gt),Ft("GGGG",Vt),Ft("GGGGG",Vt),b("weekYear","gg"),b("isoWeekYear","GG"),et("G",Z),et("g",Z),et("GG",B,F),et("gg",B,F),et("GGGG",W,V),et("gggg",W,V),et("GGGGG",K,z),et("ggggg",K,z),st(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){return e[a.substr(0,2)]=h(t),n})),st(["gg","GG"],(function(t,e,n,a){return e[a]=lt(t),n})),T("Y",null,null,(function(t,e){const n=E(t,e.isUTC);return n<=9999?n.toString(10):`+${n}`})),T(null,["YY",2,!1],null,(function(t,e){return(E(t,e.isUTC)%100).toString(10)})),T(null,["YYYY",4,!1],null,dt),T(null,["YYYYY",5,!1],null,dt),T(null,["YYYYYY",6,!0],null,dt),b("year","y"),et("Y",Z),et("YY",B,F),et("YYYY",W,V),et("YYYYY",K,z),et("YYYYYY",K,z),it(["YYYYY","YYYYYY"],0),it("YYYY",(function(t,e,n){return e[0]=2===t.length?lt(t):h(t),n})),it("YY",(function(t,e,n){return e[0]=lt(t),n})),it("Y",(function(t,e,n){return e[0]=parseInt(t,10),n})),T("z",null,null,(function(t,e){return e.isUTC?"UTC":""})),T("zz",null,null,(function(t,e){return e.isUTC?"Coordinated Universal Time":""})),T("X",null,null,(function(t){return function(t){return Math.floor(t.valueOf()/1e3)}(t).toString(10)})),T("x",null,null,(function(t){return t.valueOf().toString(10)})),et("x",Z),et("X",Q),it("X",(function(t,e,n){return n._d=new Date(1e3*parseFloat(t)),n})),it("x",(function(t,e,n){return n._d=new Date(h(t)),n})),T("s",["ss",2,!1],null,(function(t,e){return N(t,e.isUTC).toString(10)})),b("second","s"),et("s",B),et("ss",B,F),it(["s","ss"],5),T("Q",null,"Qo",(function(t,e){return function(t,e=!1){return Math.ceil((k(t,e)+1)/3)}(t,e.isUTC).toString(10)})),b("quarter","Q"),et("Q",j),it("Q",(function(t,e,n){return e[1]=3*(h(t)-1),n})),Yt("Z",":"),Yt("ZZ",""),et("Z",J),et("ZZ",J),it(["Z","ZZ"],(function(t,e,n){return n._useUTC=!0,n._tzm=function(t,e){const n=(e||"").match(t);if(null===n)return null;const a=n[n.length-1].match(Ht)||["-","0","0"],r=60*parseInt(a[1],10)+h(a[2]);return 0===r?0:"+"===a[0]?r:-r}(J,t),n})),T("M",["MM",2,!1],"Mo",(function(t,e){return(k(t,e.isUTC)+1).toString(10)})),T("MMM",null,null,(function(t,e){return e.locale.monthsShort(t,e.format,e.isUTC)})),T("MMMM",null,null,(function(t,e){return e.locale.months(t,e.format,e.isUTC)})),b("month","M"),et("M",B),et("MM",B,F),et("MMM",(function(t,e){return e.monthsShortRegex(t)})),et("MMMM",(function(t,e){return e.monthsRegex(t)})),it(["M","MM"],(function(t,e,n){return e[1]=h(t)-1,n})),it(["MMM","MMMM"],(function(t,e,n,a){const r=n._locale.monthsParse(t,a,n._strict);return null!=r?e[1]=r:ut(n).invalidMonth=!!t,n})),T("m",["mm",2,!1],null,(function(t,e){return I(t,e.isUTC).toString(10)})),b("minute","m"),et("m",B),et("mm",B,F),it(["m","mm"],4),function(){let t;for(T("S",null,null,(function(t,e){return(~~(C(t,e.isUTC)/100)).toString(10)})),T(null,["SS",2,!1],null,(function(t,e){return(~~(C(t,e.isUTC)/10)).toString(10)})),T(null,["SSS",3,!1],null,(function(t,e){return C(t,e.isUTC).toString(10)})),T(null,["SSSS",4,!1],null,(function(t,e){return(10*C(t,e.isUTC)).toString(10)})),T(null,["SSSSS",5,!1],null,(function(t,e){return(100*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSS",6,!1],null,(function(t,e){return(1e3*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSS",7,!1],null,(function(t,e){return(1e4*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSS",8,!1],null,(function(t,e){return(1e5*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSSS",9,!1],null,(function(t,e){return(1e6*C(t,e.isUTC)).toString(10)})),b("millisecond","ms"),et("S",U,j),et("SS",U,F),et("SSS",U,G),t="SSSS";t.length<=9;t+="S")et(t,$);function e(t,e,n){return e[6]=h(1e3*parseFloat(`0.${t}`)),n}for(t="S";t.length<=9;t+="S")it(t,e)}(),function(){function t(t,e){return S(t,e)%12||12}function e(t,e){T(t,null,null,(function(t,n){return n.locale.meridiem(S(t,n.isUTC),I(t,n.isUTC),e)}))}function n(t,e){return e._meridiemParse}T("H",["HH",2,!1],null,(function(t,e){return S(t,e.isUTC).toString(10)})),T("h",["hh",2,!1],null,(function(e,n){return t(e,n.isUTC).toString(10)})),T("k",["kk",2,!1],null,(function(t,e){return function(t,e){return S(t,e)||24}(t,e.isUTC).toString(10)})),T("hmm",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}`})),T("hmmss",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}${y(N(e,n.isUTC),2)}`})),T("Hmm",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}`})),T("Hmmss",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}${y(N(t,e.isUTC),2)}`})),e("a",!0),e("A",!1),b("hour","h"),et("a",n),et("A",n),et("H",B),et("h",B),et("k",B),et("HH",B,F),et("hh",B,F),et("kk",B,F),et("hmm",Y),et("hmmss",H),et("Hmm",Y),et("Hmmss",H),it(["H","HH"],3),it(["k","kk"],(function(t,e,n){const a=h(t);return e[3]=24===a?0:a,n})),it(["a","A"],(function(t,e,n){return n._isPm=n._locale.isPM(t),n._meridiem=t,n})),it(["h","hh"],(function(t,e,n){return e[3]=h(t),ut(n).bigHour=!0,n})),it("hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),ut(n).bigHour=!0,n})),it("hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),ut(n).bigHour=!0,n})),it("Hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),n})),it("Hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),n}))}(),T("DDD",["DDDD",3,!1],"DDDo",(function(t){return Ot(t).toString(10)})),b("dayOfYear","DDD"),et("DDD",U),et("DDDD",G),it(["DDD","DDDD"],(function(t,e,n){return n._dayOfYear=h(t),n})),T("d",null,"do",(function(t,e){return R(t,e.isUTC).toString(10)})),T("dd",null,null,(function(t,e){return e.locale.weekdaysMin(t,e.format,e.isUTC)})),T("ddd",null,null,(function(t,e){return e.locale.weekdaysShort(t,e.format,e.isUTC)})),T("dddd",null,null,(function(t,e){return e.locale.weekdays(t,e.format,e.isUTC)})),T("e",null,null,(function(t,e){return ze(t,e.locale,e.isUTC).toString(10)})),T("E",null,null,(function(t,e){return function(t,e){return R(t,e)||7}(t,e.isUTC).toString(10)})),b("day","d"),b("weekday","e"),b("isoWeekday","E"),et("d",B),et("e",B),et("E",B),et("dd",(function(t,e){return e.weekdaysMinRegex(t)})),et("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),et("dddd",(function(t,e){return e.weekdaysRegex(t)})),st(["dd","ddd","dddd"],(function(t,e,n,a){const r=n._locale.weekdaysParse(t,a,n._strict);return null!=r?e.d=r:ut(n).invalidWeekday=!!t,n})),st(["d","e","E"],(function(t,e,n,a){return e[a]=h(t),n})),T("D",["DD",2,!1],"Do",(function(t,e){return A(t,e.isUTC).toString(10)})),b("date","D"),et("D",B),et("DD",B,F),et("Do",(function(t,e){return e._dayOfMonthOrdinalParse||e._ordinalParse})),it(["D","DD"],2),it("Do",(function(t,e,n){return e[2]=h(t.match(B)[0]),n}))),t?function(t){let e,n,a=0;for(;a<t.length;){const i=$t(t[a]).split("-");let s=i.length;for(e=$t(t[a+1]),e=e?e.split("-"):null;s>0;){if(r=i.slice(0,s).join("-"),Ut[r]||console.error(`Khronos locale error: please load locale "${r}" before using it`),n=Ut[r],n)return n;if(e&&e.length>=s&&jt(i,e,!0)>=s-1)break;s--}a++}var r;return null}(d(t)?t:[t]):Kt}const Xt=["year","quarter","month","week","day","hours","minutes","seconds","milliseconds"],te=Xt.reduce((t,e)=>(t[e]=!0,t),{});function ee(t){return t<0?Math.floor(t):Math.ceil(t)}function ne(t){return 4800*t/146097}function ae(t){return 146097*t/4800}let re=Math.round;function ie(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}class se{constructor(t,e={}){this._data={},this._locale=Qt(),this._locale=e&&e._locale||Qt();const n=t.year||0,r=t.quarter||0,i=t.month||0,s=t.week||0,o=t.day||0,u=t.hours||0,d=t.minutes||0,l=t.seconds||0,c=t.milliseconds||0;return this._isValid=function(t){if(Object.keys(t).some(e=>e in te&&null===t[e]||isNaN(t[e])))return!1;let e=!1;for(let n=0;n<Xt.length;++n)if(t[Xt[n]]){if(e)return!1;t[Xt[n]]!==h(t[Xt[n]])&&(e=!0)}return!0}(t),this._milliseconds=+c+1e3*l+60*d*1e3+1e3*u*60*60,this._days=+o+7*s,this._months=+i+3*r+12*n,function(t){let e=t._milliseconds,n=t._days,r=t._months;const i=t._data;e>=0&&n>=0&&r>=0||e<=0&&n<=0&&r<=0||(e+=864e5*ee(ae(r)+n),n=0,r=0),i.milliseconds=e%1e3;const s=a(e/1e3);i.seconds=s%60;const o=a(s/60);i.minutes=o%60;const u=a(o/60);i.hours=u%24,n+=a(u/24);const d=a(ne(n));r+=d,n-=ee(ae(d));const l=a(r/12);return r%=12,i.day=n,i.month=r,i.year=l,t}(this)}isValid(){return this._isValid}humanize(t){if(!this.isValid())return this.localeData().invalidDate;const e=this.localeData();let n=function(t,e,n){const a=Pe(t).abs(),r=re(a.as("s")),i=re(a.as("m")),s=re(a.as("h")),o=re(a.as("d")),u=re(a.as("M")),d=re(a.as("y")),l=r<=44&&["s",r]||r<45&&["ss",r]||i<=1&&["m"]||i<45&&["mm",i]||s<=1&&["h"]||s<22&&["hh",s]||o<=1&&["d"]||o<26&&["dd",o]||u<=1&&["M"]||u<11&&["MM",u]||d<=1&&["y"]||["yy",d];return ie.apply(null,[l[0],l[1],e,+t>0,n])}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}localeData(){return this._locale}locale(t){return t?(this._locale=Qt(t)||this._locale,this):this._locale._abbr}abs(){const t=Math.abs,e=this._data;return this._milliseconds=t(this._milliseconds),this._days=t(this._days),this._months=t(this._months),e.milliseconds=t(e.milliseconds),e.seconds=t(e.seconds),e.minutes=t(e.minutes),e.hours=t(e.hours),e.month=t(e.month),e.year=t(e.year),this}as(t){if(!this.isValid())return NaN;let e,n;const a=this._milliseconds,r=m(t);if("month"===r||"year"===r)return e=this._days+a/864e5,n=this._months+ne(e),"month"===r?n:n/12;switch(e=this._days+Math.round(ae(this._months)),r){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hours":return 24*e+a/36e5;case"minutes":return 1440*e+a/6e4;case"seconds":return 86400*e+a/1e3;case"milliseconds":return Math.floor(864e5*e)+a;default:throw new Error(`Unknown unit ${r}`)}}valueOf(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*h(this._months/12):NaN}}function oe(t){if(null==t._isValid){const e=ut(t),n=Array.prototype.some.call(e.parsedDateParts,(function(t){return null!=t}));let a=!isNaN(t._d&&t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function ue(t,e){return t._d=new Date(NaN),Object.assign(ut(t),e||{userInvalidated:!0}),t}const de=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,le=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/Z|[+-]\d\d(?::?\d\d)?/,fe=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/,!0],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/,!0],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/,!0],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/,!0],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/,!0],["YYYYMMDD",/\d{8}/,!0],["GGGG[W]WWE",/\d{4}W\d{3}/,!0],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/,!0]],he=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ge=/^\/?Date\((\-?\d+)/i,pe={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480},be=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function me(t){if(!r(t._i))return t;const e=t._i,n=de.exec(e)||le.exec(e);let a,i,s,o,u,d;if(!n)return t._isValid=!1,t;for(u=0,d=fe.length;u<d;u++)if(fe[u][1].exec(n[1])){i=fe[u][0],a=!1!==fe[u][2];break}if(null==i)return t._isValid=!1,t;if(n[3]){for(u=0,d=he.length;u<d;u++)if(he[u][1].exec(n[3])){s=(n[2]||" ")+he[u][0];break}if(null==s)return t._isValid=!1,t}if(!a&&null!=s)return t._isValid=!1,t;if(n[4]){if(!ce.exec(n[4]))return t._isValid=!1,t;o="Z"}return t._f=i+(s||"")+(o||""),Se(t)}function ye(t){const e=parseInt(t,10);return e<=49?e+2e3:e}function ve(t){if(!r(t._i))return t;const e=be.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(!e)return function(t){return t._isValid=!1,t}(t);const n=function(t,e,n,a,r,i){const s=[ye(t),Rt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)];return i&&s.push(parseInt(i,10)),s}(e[4],e[3],e[2],e[5],e[6],e[7]);return function(t,e,n){return!t||kt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(ut(n).weekdayMismatch=!0,n._isValid=!1,!1)}(e[1],n,t)?(t._a=n,t._tzm=function(t,e,n){if(t)return pe[t];if(e)return 0;{const t=parseInt(n,10),e=t%100;return(t-e)/100*60+e}}(e[8],e[9],e[10]),t._d=O.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),ut(t).rfc2822=!0,t):t}function xe(t,e,n,a,r=0){const i=Qt(n||"en");if(!i)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);const u=function(t,e,n,a,r=0){if(!s(t))return n.invalidDate;const i=_e(e,n);return v[i]=v[i]||function(t){const e=t.match(_),n=e.length,a=new Array(n);for(let i=0;i<n;i++)a[i]=x[e[i]]?x[e[i]]:(r=e[i]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");var r;return function(e,r,i,s=0){const u=r.postvalue(e);let d="";for(let l=0;l<n;l++)d+=o(a[l])?a[l].call(null,u,{format:t,locale:r,isUTC:i,offset:s}):a[l];return d}}(i),v[i](t,n,a,r)}(t,e||(a?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ssZ"),i,a,r);return u?i.postformat(u):u}function _e(t,e){let n=t,a=5;const r=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,i=t=>e.formatLongDate(t)||t;for(r.lastIndex=0;a>=0&&r.test(n);)n=n.replace(r,i),r.lastIndex=0,a-=1;return n}function Te(t,e,n){return null!=t?t:null!=e?e:n}function Oe(t){const e=[];let n,a,r,i,s;if(t._d)return t;for(r=function(t){const e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){let e,n,a,r,i,s,o,u;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)i=1,s=4,n=Te(e.GG,t._a[0],St(new Date,1,4).year),a=Te(e.W,1),r=Te(e.E,1),(r<1||r>7)&&(u=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;const o=St(new Date,i,s);n=Te(e.gg,t._a[0],o.year),a=Te(e.w,o.week),null!=e.d?(r=e.d,(r<0||r>6)&&(u=!0)):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>It(n,i,s)?ut(t)._overflowWeeks=!0:null!=u?ut(t)._overflowWeekday=!0:(o=function(t,e,n,a,r){const i=1+7*(e-1)+(7+n-a)%7+wt(t,a,r);let s,o;return i<=0?(s=t-1,o=ct(s)+i):i>ct(t)?(s=t+1,o=i-ct(t)):(s=t,o=i),{year:s,dayOfYear:o}}(n,a,r,i,s),t._a[0]=o.year,t._dayOfYear=o.dayOfYear)}(t),null!=t._dayOfYear&&(s=Te(t._a[0],r[0]),(t._dayOfYear>ct(s)||0===t._dayOfYear)&&(ut(t)._overflowDayOfYear=!0),a=new Date(Date.UTC(s,0,t._dayOfYear)),t._a[1]=a.getUTCMonth(),t._a[2]=a.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=e[n]=r[n];for(;n<7;n++)t._a[n]=e[n]=null==t._a[n]?2===n?1:0:t._a[n];return 24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?O:w).apply(null,e),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(ut(t).weekdayMismatch=!0),t}function we(t){let e;const n=t._a;return n&&-2===ut(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>ht(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,ut(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),ut(t)._overflowWeeks&&-1===e&&(e=7),ut(t)._overflowWeekday&&-1===e&&(e=8),ut(t).overflow=e),t}function Se(t){if("ISO_8601"===t._f)return me(t);if("RFC_2822"===t._f)return ve(t);if(t._a=[],ut(t).empty=!0,d(t._f)||!t._i&&0!==t._i)return t;let e=t._i.toString(),n=0;const a=e.length,r=_e(t._f,t._locale).match(_)||[];let i,s,o,u;for(i=0;i<r.length;i++)s=r[i],o=(e.match(nt(s,t._locale))||[])[0],o&&(u=e.substr(0,e.indexOf(o)),u.length>0&&ut(t).unusedInput.push(u),e=e.slice(e.indexOf(o)+o.length),n+=o.length),x[s]?(o?ut(t).empty=!1:ut(t).unusedTokens.push(s),ot(s,o,t)):t._strict&&!o&&ut(t).unusedTokens.push(s);return ut(t).charsLeftOver=a-n,e.length>0&&ut(t).unusedInput.push(e),t._a[3]<=12&&!0===ut(t).bigHour&&t._a[3]>0&&(ut(t).bigHour=void 0),ut(t).parsedDateParts=t._a.slice(0),ut(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){let a=e;if(null==n)return a;if(null!=t.meridiemHour)return t.meridiemHour(a,n);if(null==t.isPM)return a;const r=t.isPM(n);return r&&a<12&&(a+=12),r||12!==a||(a=0),a}(t._locale,t._a[3],t._meridiem),Oe(t),we(t)}function Ie(t,e,n,a,s){return i(t)?t:function(t,e,n,a,s){const o={};let h=t;return(c(h)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;let e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(h)||d(h)&&0===h.length)&&(h=void 0),o._useUTC=o._isUTC=s,o._l=n,o._i=h,o._f=e,o._strict=a,function(t){const e=we(function(t){let e=t._i;const n=t._f;return t._locale=t._locale||Qt(t._l),null===e||void 0===n&&""===e?ue(t,{nullInput:!0}):(r(e)&&(t._i=e=t._locale.preparse(e)),i(e)?(t._d=xt(e),t):(d(n)?function(t){let e,n,a,r,i;if(!t._f||0===t._f.length)return ut(t).invalidFormat=!0,ue(t);for(i=0;i<t._f.length;i++)r=0,e=Object.assign({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],Se(e),oe(e)&&(r+=ut(e).charsLeftOver,r+=10*ut(e).unusedTokens.length,ut(e).score=r,(null==a||r<a)&&(a=r,n=e));Object.assign(t,n||e)}(t):n?Se(t):function(t){const e=t._i;if(f(e))t._d=new Date;else if(i(e))t._d=xt(e);else if(r(e))!function(t){if(!r(t._i))return t;const e=ge.exec(t._i);null!==e?t._d=new Date(+e[1]):(me(t),!1!==t._isValid||(delete t._isValid,ve(t),!1!==t._isValid||(delete t._isValid,ue(t))))}(t);else if(d(e)&&e.length){const n=e.slice(0);t._a=n.map(t=>r(t)?parseInt(t,10):t),Oe(t)}else if(c(e))!function(t){if(t._d)return t;const e=t._i;if(c(e)){const n=function(t){const e={};let n,a;for(a in t)l(t,a)&&(n=m(a),n&&(e[n]=t[a]));return e}(e);t._a=[n.year,n.month,n.day,n.hours,n.minutes,n.seconds,n.milliseconds].map(t=>r(t)?parseInt(t,10):t)}Oe(t)}(t);else{if(!u(e))return ue(t);t._d=new Date(e)}}(t),oe(t)||(t._d=null),t))}(t));return e._d=new Date(null!=e._d?e._d.getTime():NaN),oe(Object.assign({},e,{_isValid:null}))||(e._d=new Date(NaN)),e}(o)}(t,e,n,a,s)._d}function Ne(t){return t instanceof Date?new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()):null}function Ce(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Re(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()>e.valueOf():e.valueOf()<_t(t,n).valueOf())}function Ae(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()<e.valueOf():Tt(t,n).valueOf()<e.valueOf())}function ke(t,e){return!(void 0===e||!e||!e.length)&&e.some(e=>e===t.getDay())}function Ee(t,e,n="milliseconds"){if(!t||!e)return!1;if("milliseconds"===n)return t.valueOf()===e.valueOf();const a=e.valueOf();return _t(t,n).valueOf()<=a&&a<=Tt(t,n).valueOf()}const Le=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,De=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Pe(t,e,n={}){const a=function(t,e){if(null==t)return{};if(t instanceof se)return{milliseconds:t._milliseconds,day:t._days,month:t._months};if(u(t))return e?{[e]:t}:{milliseconds:t};if(r(t)){let e=Le.exec(t);if(e){const t="-"===e[1]?-1:1;return{year:0,day:h(e[2])*t,hours:h(e[3])*t,minutes:h(e[4])*t,seconds:h(e[5])*t,milliseconds:h(Ce(1e3*h(e[6])))*t}}if(e=De.exec(t),e){const t="-"===e[1]?-1:1;return{year:Me(e[2],t),month:Me(e[3],t),week:Me(e[4],t),day:Me(e[5],t),hours:Me(e[6],t),minutes:Me(e[7],t),seconds:Me(e[8],t)}}}if(c(t)&&("from"in t||"to"in t)){const e=function(t,e){if(!s(t)||!s(e))return{milliseconds:0,months:0};let n;const a=function(t,e,n={}){if(!n._isUTC)return t;const a=xt(e),r=6e4*(n._offset||0),i=t.valueOf()-a.valueOf()+r;return a.setTime(a.valueOf()+i),a}(e,t,{_offset:t.getTimezoneOffset()});return Ae(t,a)?n=qe(t,a):(n=qe(a,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n}(Ie(t.from),Ie(t.to));return{milliseconds:e.milliseconds,month:e.months}}return t}(t,e);return new se(a,n)}function Me(t,e){const n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function qe(t,e){const n={milliseconds:0,months:0};return n.months=k(e)-k(t)+12*(E(e)-E(t)),Re(je(xt(t),n.months,"month"),e)&&--n.months,n.milliseconds=+e-+je(xt(t),n.months,"month"),n}function je(t,e,n,a){return Fe(t,Pe(e,n),1,a)}function Fe(t,e,n,a){const r=e._milliseconds,i=Ce(e._days),s=Ce(e._months);return s&&yt(t,k(t,a)+s*n,a),i&&vt(t,A(t,a)+i*n,a),r&&function(t,e){t.setTime(e)}(t,function(t){return t.getTime()}(t)+r*n),xt(t)}function Ge(t,e,n=Qt(),a){const i=R(t,a);return je(t,function(t,e){if(!r(t))return t;const n=parseInt(t,10);if(!isNaN(n))return n;const a=e.weekdaysParse(t);return u(a)?a:null}(e,n)-i,"day")}function Ve(t,e){return R(t,e)}function ze(t,e=Qt(),n){return(R(t,n)+7-e.firstDayOfWeek())%7}const Be="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),Ye="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");function He(t){return t>1&&t<5&&1!=~~(t/10)}function Ue(t,e,n,a){const r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(He(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(He(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(He(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(He(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(He(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(He(t)?"roky":"let"):r+"lety"}}const We=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},Ke=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},$e={abbr:"cs",months:Be,monthsShort:Ye,monthsParse:function(t,e){let n,a=[];for(n=0;n<12;n++)a[n]=new RegExp("^"+t[n]+"$|^"+e[n]+"$","i");return a}(Be,Ye),shortMonthsParse:We(Ye),longMonthsParse:Ke(Be),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek(t){switch(Ve(t)){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek(t){switch(Ve(t)){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:Ue,ss:Ue,m:Ue,mm:Ue,h:Ue,hh:Ue,d:Ue,dd:Ue,M:Ue,MM:Ue,y:Ue,yy:Ue},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};function Ze(t,e,n,a){const r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}const Je={abbr:"de",months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ze,mm:"%d Minuten",h:Ze,hh:"%d Stunden",d:Ze,dd:Ze,M:Ze,MM:Ze,y:Ze,yy:Ze},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};let Qe="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Xe="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),tn=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],en=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;const nn={abbr:"es",months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:(t,e,n)=>t?/-MMM-/.test(e)?Xe[k(t,n)]:Qe[k(t,n)]:Qe,monthsRegex:en,monthsShortRegex:en,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:tn,longMonthsParse:tn,shortMonthsParse:tn,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:t=>"[hoy a la"+(1!==S(t)?"s":"")+"] LT",nextDay:t=>"[mañana a la"+(1!==S(t)?"s":"")+"] LT",nextWeek:t=>"dddd [a la"+(1!==S(t)?"s":"")+"] LT",lastDay:t=>"[ayer a la"+(1!==S(t)?"s":"")+"] LT",lastWeek:t=>"[el] dddd [pasado a la"+(1!==S(t)?"s":"")+"] LT",sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},an={abbr:"fr",months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal(t,e){const n=Number(t);switch(e){case"D":return n+(1===n?"er":"");default:case"M":case"Q":case"DDD":case"d":return n+(1===n?"er":"e");case"w":case"W":return n+(1===n?"re":"e")}},week:{dow:1,doy:4}},rn={abbr:"id",months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:(t,e)=>(12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0),meridiem:(t,e,n)=>t<11?"pagi":t<15?"siang":t<19?"sore":"malam",calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}},sn={abbr:"it",months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek(t){switch(Ve(t)){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:t=>(/^[0-9].+$/.test(t.toString(10))?"tra":"in")+" "+t,past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},on={abbr:"ja",months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日 HH:mm dddd"},meridiemParse:/午前|午後/i,isPM:t=>"午後"===t,meridiem:(t,e,n)=>t<12?"午前":"午後",calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t.toString(10)}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}},un={abbr:"ko",months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t.toString(10)}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}};let dn="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),ln="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function cn(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function fn(t,e,n){let a=t+" ";switch(n){case"ss":return a+(cn(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return a+(cn(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return a+(cn(t)?"godziny":"godzin");case"MM":return a+(cn(t)?"miesiące":"miesięcy");case"yy":return a+(cn(t)?"lata":"lat")}}const hn={abbr:"pl",months:(t,e,n)=>t?""===e?"("+ln[k(t,n)]+"|"+dn[k(t,n)]+")":/D MMMM/.test(e)?ln[k(t,n)]:dn[k(t,n)]:dn,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek(t){switch(Ve(t)){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 5:return"[W piątek o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek(t){switch(Ve(t)){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 4:return"[W zeszłą czwartek o] LT";case 5:return"[W zeszłą piątek o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:fn,m:fn,mm:fn,h:fn,hh:fn,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:fn,y:"rok",yy:fn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},gn={abbr:"pt-br",months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:t=>0===Ve(t)||6===Ve(t)?"[Último] dddd [às] LT":"[Última] dddd [às] LT",sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"},pn={abbr:"zh-cn",months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:(t,e)=>(12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12),meridiem(t,e,n){let a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal(t,e){const n=Number(t);switch(e){case"d":case"D":case"DDD":return n+"日";case"M":return n+"月";case"w":case"W":return n+"周";default:return n.toString()}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}}},xrYK:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"xs/l":function(t,e,n){var a=n("TYy9"),r=n("Ioao"),i=n("wclG");t.exports=function(t){return i(r(t,void 0,a),t+"")}},xs3f:function(t,e,n){var a=n("2oRo"),r=n("zk60"),i=a["__core-js_shared__"]||r("__core-js_shared__",{});t.exports=i},y1pI:function(t,e,n){var a=n("ljhN");t.exports=function(t,e){for(var n=t.length;n--;)if(a(t[n][0],e))return n;return-1}},yCtX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("HDdC"),r=n("ngJS"),i=n("jZKg");function s(t,e){return e?Object(i.a)(t,e):new a.a(Object(r.a)(t))}},yGOH:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},yGk4:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"Set");t.exports=a},yHx3:function(t,e){var n=Object.prototype.hasOwnProperty;t.exports=function(t){var e=t.length,a=new t.constructor(e);return e&&"string"==typeof t[0]&&n.call(t,"index")&&(a.index=t.index,a.input=t.input),a}},yJti:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.ValueOk=0]="ValueOk",t[t.ValueStale=1]="ValueStale",t[t.ValueNone=2]="ValueNone",t[t.ValueException=3]="ValueException",t}({})},yP5f:function(t,e,n){var a=n("+K+b");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},yPMs:function(t,e,n){!function(t){"use strict";t.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(t){return"M"===t.charAt(0)},meridiem:function(t,e,n){return t<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},yT6U:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e=!1){let n=t;return(!a.isArray(t)||a.isArray(t)&&e)&&(n=[t]),n}}},yYhs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("CoVI"),s=n("mfoh"),o=(n("CFvb"),n("MP8s"),n("f95s"),n("gk6K")),u=(n("dApe"),n("ZhuC")),d=n("fxL3"),l=n("TNUL"),c=n("rZud"),f=n("woSy"),h=n("jV1L"),g=n("pcHL"),p=n("WaXT"),b=n("OIDT"),m=n("HIU9"),y=n("uNpg"),v=n("Fwy9"),x=n("C523"),_=n("4Dmd");n("14R3"),n.d(e,"b",(function(){return T})),n.d(e,"a",(function(){return s.a}));var T=function(){function t(){}var e;return e=t,t.forRoot=function(){return{ngModule:e,providers:[o.a]}},e=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.NgModule)({declarations:[d.a,l.a,c.a,u.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],exports:[d.a,l.a,c.a,u.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],imports:[r.CommonModule],providers:[]})],t)}()},yoRg:function(t,e,n){var a=n("UTVS"),r=n("/GqU"),i=n("TWQb").indexOf,s=n("0BK2");t.exports=function(t,e){var n,o=r(t),u=0,d=[];for(n in o)!a(s,n)&&a(o,n)&&d.push(n);for(;e.length>u;)a(o,n=e[u++])&&(~i(d,n)||d.push(n));return d}},"yt+r":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="es-ES">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegación</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Consola</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Clúster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servicios</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuración</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos de gestor</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Repositorios</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloque</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imágenes</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Duplicación</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuarios</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Papeleras</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Seleccione un idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Cargando datos del panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selector de hora de Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Restablecer ajustes</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Atrás</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Error al cargar los datos.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>seleccionados</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrados</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nombre</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descripción</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descripción larga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Opción por defecto</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon por defecto</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Guardar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visor del mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Cargando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nombre de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sí, seguro.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Cerrar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Rendimiento general</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>No se encuentra ninguna entrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros del clúster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de auditoría</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Cargando configuración...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>No es posible cargar la configuración.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Módulo del gestor de edición</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>El valor introducido no es un UUID válido, por ejemplo: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>El valor introducido debe ser una dirección IP válida.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>El valor introducido debe ser un número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>El valor introducido debe ser un número o un decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Actualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de clúster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Mapa de supervisión modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Época de mapa de supervisión</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quórum de con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quórum de mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con requerido</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon requerido</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Con quórum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Sin quórum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Añadir</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Características</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Indicadores OSD de todo el clúster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridad de recuperación de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridad</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridad</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>El valor debe estar entre 0 y 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reequilibrar peso</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Suprimir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estadísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Cualquier cliente puede acceder</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Destinatarios</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo requerido</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Debe contener uno o varios valores separados por comas</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por ejemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Reducir privilegios</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Añadir clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- No hay ningún clúster disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Seleccione el clúster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Añadir daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Motor de almacenamiento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- No hay ningún repositorio de datos disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Seleccione el motor de almacenamiento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuario de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- No hay ningún usuario disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Seleccione el usuario de Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- No hay ningún cliente disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Seleccione el cliente de CephX --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nombre de CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ruta de CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>La ruta debe empezar por "/" y puede ir seguida de una palabra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Se creará un directorio nuevo</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ruta</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>La ruta solo puede ser una "/" o una palabra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Se creará una papelera nueva</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Etiqueta NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Puede que los clientes no monten subdirectorios (es decir, si Etiqueta = foo, el cliente puede que no monte foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Etiqueta, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Pseudo, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- No hay ningún tipo de acceso disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Seleccione el tipo de acceso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No hay ninguna reducción de privilegios disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>¡Bienvenidos a Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>El nombre de usuario es obligatorio</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>La contraseña es obligatoria</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Entrada</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Lo sentimos. El usuario no existe en Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Prohibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Lo sentimos. No tiene permiso para ver lo que busca.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuración de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Elimina el valor de configuración local. Se heredará y usará en su lugar el valor de configuración padre.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>El valor mínimo es 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de repositorios</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>El nombre solo puede tener caracteres alfanuméricos, guiones y guiones bajos.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>El nombre del perfil de código de borrado que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Complemento</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porciones de datos (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Debe ser igual o mayor que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porciones de código (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Debe ser igual o mayor que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidad (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localización (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio de error de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localización de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Ninguna</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamaño del paquete</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raíz de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Clase de dispositivo de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>cualquiera</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directorio</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nombre...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>El nombre del repositorio de Ceph que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de repositorio</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Seleccione un tipo de repositorio --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Se necesita al menos un grupo de colocación.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>El clúster no puede gestionar tantos grupos de colocación. Vuelva a calcular la cantidad que necesita.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ayuda para el cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamaño replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Indicadores</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sustituciones de códigos de borrado</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- No hay ningún perfil de código de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Seleccione un perfil de código de borrado --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Seleccione una regla de CRUSH --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regla de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Pasos de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compresión</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- No hay ningún algoritmo de compresión de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>p. ej. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>El valor debe ser mayor que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamaño de Blob máximo</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>p. ej. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>El valor debe ser mayor que el tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Relación</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Relación de compresión</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>El valor debe estar entre 0,0 y 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ej.: 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalles</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalles de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalles de niveles de caché</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover una imagen a la papelera</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protección caduca a las</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de fecha erróneo. Use el formato "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protección ya ha caducado. Seleccione una fecha del futuro o deje el campo vacío.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover imagen</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Resumen</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticación de descubrimiento</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuario</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Contraseña</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuario mutuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Contraseña mutua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Información disponible:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI no disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Repositorio</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creados</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamaño</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamaño del objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionados</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Padre</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefijo de nombre de bloque</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Orden</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantáneas</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagen</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Este ajuste sustituye al valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este es el valor global. No se ha definido ningún valor para esta opción para esta imagen.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>No se permiten los caracteres "/" ni "@".</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- No hay ningún repositorio RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Seleccione un repositorio --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar un repositorio dedicado para datos</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Repositorio dedicado para almacenar los datos de objeto de RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Debe aumentar el tamaño.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Repartición</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Seleccione la unidad de repartición --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido el recuento de repartición.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>La unidad de repartición es mayor que el tamaño del objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido la unidad de repartición.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>El recuento de repartición debe ser mayor que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Se dispone a revertir</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vaciar papelera</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Todas</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Repositorio:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nombre del repositorio...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar imágenes</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>escriba el nombre nuevo de la imagen y haga clic en</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nombre nuevo</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Caducó a las</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protección hasta</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topología iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Normalmente no es necesario cambiar los valores por defecto de estos parámetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ajustes</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Almacén</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ajustes avanzados</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>El IQN tiene un patrón erróneo.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por ejemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Más información</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tiene ajustes avanzados modificados.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portales</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Añadir portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagen tiene ajustes modificados.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Añadir imagen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticación de ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN del cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>El IQN del iniciador debe ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>El iniciador pertenece a un grupo. Las imágenes se configurarán en el grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>No se ha añadido ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Añadir iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Añadir grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papelera</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Listo</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de duplicación de repositorio</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Los clústeres de par deben eliminarse antes de inhabilitar la duplicación.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Añadir} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nombre del clúster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>El nombre del clúster no es válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID de CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID de CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>El ID de CephX no es válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Direcciones de monitores</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Direcciones delimitadas por comas...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>La dirección del monitor no es válida.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clave de CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clave con cifrado base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clave de CephX debe tener cifrado base64</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Los contadores de rendimiento no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Cargando datos de la papelera...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>El valor no es válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>El nombre que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Seleccione un usuario --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regla de colocación</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versión</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versión maestra</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hora de modificación</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zona</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cuota de papelera</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamaño máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Sin límite</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Número máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nombre de usuario</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Seleccione un nombre de usuario --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Autogenerar clave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clave de acceso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nombre completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Dirección de correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendido</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Número máximo de papeleras</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuarios</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacidades</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cuota de usuario</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Claves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Seleccione un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permiso</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Seleccione un permiso --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuario</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>El ID de subusuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lectura, escritura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>todos</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Autogenerar secreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Cargando datos del usuario...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>No es posible cargar los datos del usuario.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>El ID de usuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Esta dirección no es válida.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>La dirección de correo electrónico que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. papeleras</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Inhabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizar</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>No hay ningún subusuario.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>No hay ninguna clave.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>No hay ninguna capacidad</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamaño ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamaño máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objetos máx.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>El valor introducido debe ser mayor o igual que 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descripción...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permisos</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funciones</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar contraseña</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Las contraseñas no coinciden.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Correo electrónico no válido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Se dispone a eliminar los permisos "lectura/actualización de usuario" de su propio usuario.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si continúa, no podrá añadir ni eliminar funciones en ningún usuario.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>¿Seguro que desea continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ayuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentación</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Acerca de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ajustes de la consola</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestión del usuario</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuario que ha entrado</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Salir</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa de OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Los metadatos no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadatos</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contandor de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Escrituras</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lecturas</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores actuales</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origen</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nivel</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Se puede actualizar en el tiempo de ejecución (editable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Etiquetas</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Véase también</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Estado del clúster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons de gestor</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Instancias de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de metadatos</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Puertas de enlace iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS de cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Rendimiento del cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectura/escritura de cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Rendimiento de recuperación</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Depuración</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Rendimiento</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidad en bruto</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Grupos de colocación por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Estado del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidad</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Clasificaciones</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticación de descubrimiento actualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>No hay ningún portal disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>No hay ninguna imagen disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>No hay ninguna imagen disponible. Asegúrese de añadir una imagen al destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>No hay ningún iniciador disponible. Asegúrese de añadir un iniciador al destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancia</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progreso</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Editar modo</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Añadir par</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar par</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Suprimir par</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Líder</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>N.º locales</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N.º remotos</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>duplicar par</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplanamiento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>En capas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueo exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>En diario (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Reversión de instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revertir</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Suprimido a las</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versión</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raíz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de reserva</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Clasificación</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Actividad</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodos</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Actualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>El valor se puede actualizar en el tiempo de ejecución.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Los daemons/clientes no extraen este valor de la\n      base de datos de configuración del monitor. No se recomienda definir esta opción con "ceph config\n      set ...". Esta opción se debe configurar mediante ceph.conf o a través\n      de la línea de comandos.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>La opción solo surte efecto durante el inicio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>La opción solo afecta a la creación del clúster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>La opción solo afecta a la creación del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servicio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor actual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Inhabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Conectando de nuevo. Espere...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Dirección pública</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sesiones abiertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>No incluir</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Los OSD que se excluyeron anteriormente no se volverán a incluir cuando se inicien</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>No excluir</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Los OSD no se excluirán automáticamente después del intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>No activar</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>No se permite que los OSD se inicien</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>No desactivar</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Se ignoran los informes de error de OSD, de forma que los monitores no desactivarán los OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausa</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pone en pausa las lecturas y escrituras</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>No depurar</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>La depuración está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>No depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>La depuración profunda está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>No reponer</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>La reposición de grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>No recuperar</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La recuperación de los grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir limpiados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Los OSD tienen snapset convertidos</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Supresiones de recuperación</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Supresiones realizadas durante la recuperación, en lugar de emparejamientos</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Límite estricto de registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Establece un límite estricto para la longitud del registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Indicadores de OSD actualizados</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>Incluir</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>desactivar</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Limpiar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>limpiado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruido</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>suprimir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Número máximo de reposiciones</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máximo de recuperaciones activas</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máximo de recuperaciones de inicio único</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Reposo de recuperación</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Trabajo</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravedad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpio</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En curso</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Advertencia</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconocido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sin sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>reserva</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon activo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>El servicio NFS Ganesha no está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transportar</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistemas de archivos CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(se hereda de la configuración global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>se hereda de la configuración global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>No hay ningún daemon disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de caché</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Antigüedad mínima de expulsión</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Antigüedad mínima de vaciado</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Número máximo de bytes de destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Número máximo de objetos de destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>No se ha añadido ninguna aplicación</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Se ha alcanzado el límite de aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un repositorio solo puede tener hasta cuatro definiciones de aplicaciones.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: _, a-z, A-Z y 0-9</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longitud máxima es 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar o añadir aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Añadir aplicación</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamaño de réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Último cambio</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>papelera</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>papeleras</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuario</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuarios</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ámbito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lectura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crear</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Función del sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Actualizar usuario</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>La sesión se ha cerrado automáticamente porque sus funciones han cambiado.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto se divide en porciones de datos, cada una almacenada en un OSD distinto.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcula las porciones de código para cada objeto y las almacena en distintos OSD.\n      El número de porciones de código es también el número de OSD que pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>El complemento jerasure es el más genérico y flexible,\n          y también el complemento por defecto para los repositorios de código de borrado de Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La técnica más flexible es reed_sol_van: basta con definir k y m.\n          La técnica cauchy_good puede ser más rápida, pero hay que elegir con cuidado el tamaño\n          del paquete. reed_sol_r6_op, liberation, blaum_roth y liber8tion son todas equivalentes a RAID6\n          en el sentido de que solo se pueden configurar con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codificación se realizará según el tamaño de los paquetes de bytes de uno en uno.\n          Elegir el tamaño correcto es difícil.\n          La documentación de jerasure incluye información completa sobre el tema.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con el complemento jerasure, cuando un objeto de código de borrado se almacena\n          en varios OSD, para recuperarse de la pérdida de un OSD es necesario leer de todos los demás.\n          Por ejemplo, si jerasure está configurado con k=8 y m=4, cuando se pierde un OSD es necesario leer\n          de los otros once para repararlo.\n\n          El complemento de código de borrado lrc crea porciones de paridad local para poder realizar la recuperación con\n          menos OSDs. Por ejemplo, is lrc está configurado con k=8, m=4 y l=4, creará\n          una porción de paridad adicional para cada cuatro OSDs. Si se pierde un solo OSD, se puede recuperar\n          solo con cuatro OSD, en lugar de con once.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupa las porciones de código y de datos en localizaciones de conjuntos de tamaño. Por ejemplo,\n          para k=4 y m=2, si locality=3, se crean dos grupos de tres. Cada conjunto\n          se puede recuperar sin leer porciones de otro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>El tipo de papelera de CRUSH en el que se almacenará cada\n          conjunto de porciones definido por l. Por ejemplo, si se define como bastidor, cada grupo de l porciones\n          se colocará en un bastidor distinto. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step choose\n          rack". Si no se define, no se realiza este tipo de agrupamiento.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>El complemento isa encapsula la biblioteca ISA. Solo funciona en procesadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>El complemento ISA viene en dos formatos de Reed Solomon.\n          Si se define reed_sol_van, se trata de Vandermonde; si se define cauchy, se trata de Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>El complemento shec encapsula las distintas bibliotecas SHEC.\n          Permite a Ceph recuperar datos de forma más eficiente que los códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>El número de porciones de paridad. Cada uno de ellas incluye cada porción de datos\n           en su intervalo de cálculo. El número se usa como estimador de durabilidad. Por ejemplo, si c=2,\n          2 OSD pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>El nombre de la papelera de CRUSH usado para el primer paso de la regla de CRUSH.\n      Por ejemplo, "step take default".</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Asegúrese de que no hay dos porciones en una papelera con el mismo\n      dominio de error. Por ejemplo, si el dominio de error es host, no debe haber dos porciones almacenadas en el mismo\n      host. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step chooseleaf host".</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restringe la colocación a dispositivos de una clase concreta\n      (p.ej., ssd o hdd) usando los nombre de clase de dispositivo CRUSH en el mapa de CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Define el nombre de directorio del que se cargará el complemento de código de borrado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas las operaciones</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite solo las operaciones que no modifican el servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>No permite operaciones de lectura o escritura, pero sí cualquier otra</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>No permite operaciones de lectura o escritura, ni ninguna otra que modifique los atributos del archivo o el contenido del directorio</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>No permite ningún tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Seleccione la prioridad --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baja</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Información</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última hora (opción por defecto)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ayer</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoy</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Hoy hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Anteayer</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Los últimos 2 días</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este día la semana pasada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semana pasada</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Esta semana hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Los últimos 7 días</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>El mes pasado</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mes</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Este mes hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Los últimos 30 días</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Los últimos 90 días</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Los últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>El último año</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>El año pasado</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este año</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Este año hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Los últimos 2 años</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Los últimos 5 años</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>No se ha seleccionado ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deseleccione el elemento para volver a seleccionarlo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Se ha alcanzado el límite de selección</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrar etiquetas</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Añadir insignia</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>No hay ningún elemento disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplanar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar para desactivar</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar para incluir</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar para excluir</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renombrar</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover a la papelera</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Desproteger</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Suprimido</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Aplanado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Limpiado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Revertido</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sí</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Calidad del servicio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Límite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>El límite deseado de bytes de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Límite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>El límite deseado de operaciones de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Límite de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>El límite deseado de bytes de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Límite de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>El límite deseado de operaciones de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Límite de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>El límite deseado de bytes de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Límite de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>El límite deseado de operaciones de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Ráfaga de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de E/S.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Ráfaga de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de E/S.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Ráfaga de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de lectura.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Ráfaga de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de lectura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Ráfaga de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de escritura.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Ráfaga de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de escritura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Ejecutando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ejecutar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ejecutado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarea desconocida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crear</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Actualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>actualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Suprimiendo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplanando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplanar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Revirtiendo</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>revertir</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Moviendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>No se encuentra la imagen.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Limpiando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>limpiar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos los repositorios</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>No es posible inhabilitar la duplicación porque contiene un par</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"z+Ro":function(t,e,n){"use strict";function a(t){return t&&"function"==typeof t.schedule}n.d(e,"a",(function(){return a}))},"z/SZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("hpHm");class i{constructor(t,e,n){this.nodes=t,this.viewRef=e,this.componentRef=n}}class s{constructor(t,e,n,r,i,s,o,u){this._viewContainerRef=t,this._renderer=e,this._elementRef=n,this._injector=r,this._componentFactoryResolver=i,this._ngZone=s,this._applicationRef=o,this._posService=u,this.onBeforeShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onBeforeHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this._providers=[],this._isHiding=!1,this.containerDefaultSelector="body",this._listenOpts={},this._globalListener=Function.prototype}get isShown(){return!this._isHiding&&!!this._componentRef}attach(t){return this._componentFactory=this._componentFactoryResolver.resolveComponentFactory(t),this}to(t){return this.container=t||this.container,this}position(t){return this.attachment=t.attachment||this.attachment,this._elementRef=t.target||this._elementRef,this}provide(t){return this._providers.push(t),this}show(t={}){if(this._subscribePositioning(),this._innerComponent=null,!this._componentRef){this.onBeforeShow.emit(),this._contentRef=this._getContentRef(t.content,t.context,t.initialState);const e=a.Injector.create({providers:this._providers,parent:this._injector});this._componentRef=this._componentFactory.create(e,this._contentRef.nodes),this._applicationRef.attachView(this._componentRef.hostView),this.instance=this._componentRef.instance,Object.assign(this._componentRef.instance,t),this.container instanceof a.ElementRef&&this.container.nativeElement.appendChild(this._componentRef.location.nativeElement),"string"==typeof this.container&&"undefined"!=typeof document&&(document.querySelector(this.container)||document.querySelector(this.containerDefaultSelector)).appendChild(this._componentRef.location.nativeElement),!this.container&&this._elementRef&&this._elementRef.nativeElement.parentElement&&this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement),this._contentRef.componentRef&&(this._innerComponent=this._contentRef.componentRef.instance,this._contentRef.componentRef.changeDetectorRef.markForCheck(),this._contentRef.componentRef.changeDetectorRef.detectChanges()),this._componentRef.changeDetectorRef.markForCheck(),this._componentRef.changeDetectorRef.detectChanges(),this.onShown.emit(this._componentRef.instance)}return this._registerOutsideClick(),this._componentRef}hide(){if(!this._componentRef)return this;this._posService.deletePositionElement(this._componentRef.location),this.onBeforeHide.emit(this._componentRef.instance);const t=this._componentRef.location.nativeElement;return t.parentNode.removeChild(t),this._contentRef.componentRef&&this._contentRef.componentRef.destroy(),this._componentRef.destroy(),this._viewContainerRef&&this._contentRef.viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef)),this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._contentRef=null,this._componentRef=null,this._removeGlobalListener(),this.onHidden.emit(),this}toggle(){this.isShown?this.hide():this.show()}dispose(){this.isShown&&this.hide(),this._unsubscribePositioning(),this._unregisterListenersFn&&this._unregisterListenersFn()}listen(t){this.triggers=t.triggers||this.triggers,this._listenOpts.outsideClick=t.outsideClick,this._listenOpts.outsideEsc=t.outsideEsc,t.target=t.target||this._elementRef.nativeElement;const e=this._listenOpts.hide=()=>t.hide?t.hide():void this.hide(),n=this._listenOpts.show=e=>{t.show?t.show(e):this.show(e),e()};return this._unregisterListenersFn=Object(r.e)(this._renderer,{target:t.target,triggers:t.triggers,show:n,hide:e,toggle:t=>{this.isShown?e():n(t)}}),this}_removeGlobalListener(){this._globalListener&&(this._globalListener(),this._globalListener=null)}attachInline(t,e){return this._inlineViewRef=t.createEmbeddedView(e),this}_registerOutsideClick(){if(this._componentRef&&this._componentRef.location){if(this._listenOpts.outsideClick){const t=this._componentRef.location.nativeElement;setTimeout(()=>{this._globalListener=Object(r.h)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideClick:this._listenOpts.outsideClick,hide:()=>this._listenOpts.hide()})})}if(this._listenOpts.outsideEsc){const t=this._componentRef.location.nativeElement;this._globalListener=Object(r.g)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideEsc:this._listenOpts.outsideEsc,hide:()=>this._listenOpts.hide()})}}}getInnerComponent(){return this._innerComponent}_subscribePositioning(){!this._zoneSubscription&&this.attachment&&(this.onShown.subscribe(()=>{this._posService.position({element:this._componentRef.location,target:this._elementRef,attachment:this.attachment,appendToBody:"body"===this.container})}),this._zoneSubscription=this._ngZone.onStable.subscribe(()=>{this._componentRef&&this._posService.calcPosition()}))}_unsubscribePositioning(){this._zoneSubscription&&(this._zoneSubscription.unsubscribe(),this._zoneSubscription=null)}_getContentRef(t,e,n){if(!t)return new i([]);if(t instanceof a.TemplateRef){if(this._viewContainerRef){const n=this._viewContainerRef.createEmbeddedView(t,e);return n.markForCheck(),new i([n.rootNodes],n)}const n=t.createEmbeddedView({});return this._applicationRef.attachView(n),new i([n.rootNodes],n)}if("function"==typeof t){const e=this._componentFactoryResolver.resolveComponentFactory(t),r=a.Injector.create({providers:this._providers,parent:this._injector}),s=e.create(r);return Object.assign(s.instance,n),this._applicationRef.attachView(s.hostView),new i([[s.location.nativeElement]],s.hostView,s)}return new i([[this._renderer.createText(`${t}`)]])}}class o{constructor(t,e,n,a,r){this._componentFactoryResolver=t,this._ngZone=e,this._injector=n,this._posService=a,this._applicationRef=r}createLoader(t,e,n){return new s(e,n,t,this._injector,this._componentFactoryResolver,this._ngZone,this._applicationRef,this._posService)}}},z1FC:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["viensas secunds","'iensas secunds"],ss:[t+" secunds",t+" secunds"],m:["'n míut","'iens míut"],mm:[t+" míuts",t+" míuts"],h:["'n þora","'iensa þora"],hh:[t+" þoras",t+" þoras"],d:["'n ziua","'iensa ziua"],dd:[t+" ziuas",t+" ziuas"],M:["'n mes","'iens mes"],MM:[t+" mesen",t+" mesen"],y:["'n ar","'iens ar"],yy:[t+" ars",t+" ars"]};return a?r[n][0]:e?r[n][0]:r[n][1]}t.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(t){return"d'o"===t.toLowerCase()},meridiem:function(t,e,n){return t>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z3Vd:function(t,e,n){!function(t){"use strict";var e="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(t,n,a,r){var i=function(t){var n=Math.floor(t%1e3/100),a=Math.floor(t%100/10),r=t%10,i="";return n>0&&(i+=e[n]+"vatlh"),a>0&&(i+=(""!==i?" ":"")+e[a]+"maH"),r>0&&(i+=(""!==i?" ":"")+e[r]),""===i?"pagh":i}(t);switch(a){case"ss":return i+" lup";case"mm":return i+" tup";case"hh":return i+" rep";case"dd":return i+" jaj";case"MM":return i+" jar";case"yy":return i+" DIS"}}t.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==t.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==t.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"},past:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==t.indexOf("jar")?e.slice(0,-3)+"wen":-1!==t.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z5nN:function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return f}));var a=n("8Y7J"),r=n("LqlI"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["role","document"]],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","modal-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"modal-dialog"+(n.config.class?" "+n.config.class:""))}))}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"modal-container",[["class","modal"],["role","dialog"],["tabindex","-1"]],[[1,"aria-modal",0]],[[null,"mousedown"],[null,"mouseup"],["window","keydown.esc"]],(function(t,e,n){var r=!0;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,1).onClickStarted(n)&&r),"mouseup"===e&&(r=!1!==a["ɵnov"](t,1).onClickStop(n)&&r),"window:keydown.esc"===e&&(r=!1!==a["ɵnov"](t,1).onEsc(n)&&r),r}),s,i)),a["ɵdid"](1,245760,null,0,r.d,[r.f,a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),(function(t,e){t(e,0,0,!0)}))}var u=a["ɵccf"]("modal-container",r.d,o,{},{},["*"]),d=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function l(t){return a["ɵvid"](0,[],null,null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-modal-backdrop",[["class","modal-backdrop"]],null,null,null,l,d)),a["ɵdid"](1,114688,null,0,r.c,[a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),null)}var f=a["ɵccf"]("bs-modal-backdrop",r.c,c,{},{},[])},z6cu:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("HDdC");function r(t,e){return new a.a(e?n=>e.schedule(i,0,{error:t,subscriber:n}):e=>e.error(t))}function i({error:t,subscriber:e}){e.error(t)}},zBJ4:function(t,e,n){var a=n("2oRo"),r=n("hh1v"),i=a.document,s=r(i)&&r(i.createElement);t.exports=function(t){return s?i.createElement(t):{}}},zEVN:function(t,e,n){var a=n("Gi0A"),r=n("sEf8"),i=n("mdPL"),s=i&&i.isMap,o=s?r(s):a;t.exports=o},zKZe:function(t,e,n){var a=n("I+eb"),r=n("YNrV");a({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},zUnb:function(t,e,n){"use strict";n.r(e);var a=n("tAZD"),r=n.n(a),i=n("SVse"),s=n("8Y7J");function o(){return localStorage.getItem("access_token")}const u=t=>{t=t||"en-US";try{return n("F+uO")(`./messages.${t}.xlf`).default}catch(e){return[]}};class d{}class l{constructor(){}}var c=n("EApP"),f=s["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"flyInOut",definitions:[{type:0,name:"inactive",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:0,name:"active",styles:{type:6,styles:{opacity:1},offset:null},options:void 0},{type:0,name:"removed",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:1,expr:"inactive => active",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null},{type:1,expr:"active => removed",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null}],options:{}}]}});function h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"button",[["aria-label","Close"],["class","toast-close-button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.remove()&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"]))],null,null)}function g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](1,null,["[","]"]))],null,(function(t,e){t(e,1,0,e.component.duplicatesCount+1)}))}function p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,g)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.duplicatesCount)}),(function(t,e){var n=e.component;t(e,0,0,n.options.titleClass,n.title),t(e,1,0,n.title)}))}function b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message)}))}function m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message),t(e,1,0,n.message)}))}function y(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","toast-progress"]],[[4,"width",null]],null,null,null,null))],null,(function(t,e){t(e,1,0,e.component.width+"%")}))}function v(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,h)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,p)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,b)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,m)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,y)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.options.closeButton),t(e,3,0,n.title),t(e,5,0,n.message&&n.options.enableHtml),t(e,7,0,n.message&&!n.options.enableHtml),t(e,9,0,n.options.progressBar)}),null)}function x(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["toast-component",""]],[[8,"className",0],[40,"@flyInOut",0],[4,"display",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).tapToast()&&a),"mouseenter"===e&&(a=!1!==s["ɵnov"](t,1).stickAround()&&a),"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).delayedHideToast()&&a),a}),v,f)),s["ɵdid"](1,180224,null,0,c.c,[c.j,c.g,s.NgZone],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).toastClasses,s["ɵnov"](e,1).state,s["ɵnov"](e,1).displayStyle)}))}var _=s["ɵccf"]("[toast-component]",c.c,x,{},{},[]),T=n("pMnS"),O=n("jtHE");let w=(()=>{class t{}return t.START="start",t.STOP="stop",t.UPDATE="update",t.RESET="reset",t.UNSUBSCRIBE="unsubscribe",t})();class S{constructor(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new O.a,this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}getSettings(){return this.blockUISettings}updateSettings(t={}){this.blockUISettings=Object.assign({},this.blockUISettings,t)}decorate(t="block-ui-main"){const e={name:t,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,w.START,t),update:this.dispatch(this.blockUISubject,w.UPDATE,t),stop:this.dispatch(this.blockUISubject,w.STOP,t),reset:this.dispatch(this.blockUISubject,w.RESET,t),unsubscribe:this.dispatch(this.blockUISubject,w.UNSUBSCRIBE,t)};return this.blockUIInstances[t]=this.blockUIInstances[t]||e,e}observe(){return this.blockUIObservable}blockUIMiddleware({action:t,name:e}){let n=null;switch(t){case w.START:n=!0;break;case w.STOP:case w.RESET:n=!1}null!==n&&(this.blockUIInstances[e].isActive=n)}dispatch(t,e,n="block-ui-main"){return a=>{t.next({name:n,action:e,message:a})}}}class I{constructor(t){this.blockUI=t}ngOnInit(){this.name=this.name||"block-ui-main",this.template=this.template||this.blockUI.blockUISettings.template}}class N{constructor(t,e,n){this.blockUI=t,this.resolver=e,this.changeDetectionRef=n,this.name="block-ui-main",this.delayStart=0,this.delayStop=0,this.state={startTimeout:null,stopTimeout:null,blockCount:0},this.active=!1}ngOnInit(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())}ngAfterViewInit(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof s.TemplateRef)this.templateOutlet.createEmbeddedView(this.templateCmp);else{const t=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(t),this.updateBlockTemplate(this.message)}}catch(t){console.error("ng-block-ui:",t)}}ngAfterViewChecked(){this.detectChanges()}subscribeToBlockUI(t){return t.subscribe(t=>this.onDispatchedEvent(t))}onDispatchedEvent(t){switch(t.action){case w.START:this.onStart(t);break;case w.STOP:this.onStop(t);break;case w.UPDATE:this.onUpdate(t);break;case w.RESET:this.onReset();break;case w.UNSUBSCRIBE:this.onStop(t),this.onUnsubscribe(t.name)}}onStart({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;null===this.state.startTimeout&&(0===t?this.showBlock(e):this.state.startTimeout=setTimeout(()=>{this.showBlock(e)},t)),this.state.blockCount++,this.updateInstanceBlockCount()}}onStop({name:t}){if(t===this.name){const t=this.delayStop||this.settings.delayStop||0;this.state.blockCount>1?this.state.blockCount--:this.active?null===this.state.stopTimeout&&(0===t?this.hideBlock():this.state.stopTimeout=setTimeout(()=>{this.hideBlock()},t)):this.clearState(),this.updateInstanceBlockCount()}}onReset(){this.hideBlock()}onUpdate({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;0===t?this.updateMessage(e):setTimeout(()=>{this.updateMessage(e)},t)}}updateMessage(t){this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}showBlock(t){this.active=!0,this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}hideBlock(){this.clearState(),this.active=!1,this.detectChanges()}clearState(){null!=this.state.startTimeout&&clearTimeout(this.state.startTimeout),null!=this.state.stopTimeout&&clearTimeout(this.state.stopTimeout),this.state.blockCount=0,this.state.startTimeout=null,this.state.stopTimeout=null,this.updateInstanceBlockCount()}updateBlockTemplate(t){this.templateCompRef&&this.templateCompRef instanceof s.ComponentRef&&(this.templateCompRef.instance.message=t)}onUnsubscribe(t){this.blockUISubscription&&t===this.name&&this.blockUISubscription.unsubscribe()}updateInstanceBlockCount(){this.blockUI.blockUIInstances[this.name]&&(this.blockUI.blockUIInstances[this.name].blockCount=this.state.blockCount)}detectChanges(){this.changeDetectionRef.destroyed||this.changeDetectionRef.detectChanges()}ngOnDestroy(){this.onUnsubscribe(this.name)}}class C{constructor(t){this.blockUIInstance=t}start(t,e){this.dispatch(t,w.START,e)}stop(t){this.dispatch(t,w.STOP)}reset(t){this.dispatch(t,w.RESET)}unsubscribe(t){this.dispatch(t,w.UNSUBSCRIBE)}isActive(t=null){const e=t?this.toArray(t):null,n=this.blockUIInstance.blockUIInstances;return Object.keys(n).some(t=>e?e.indexOf(n[t].name)>=0&&n[t].isActive:n[t].isActive)}dispatch(t=[],e,n){this.toArray(t).forEach(t=>this.blockUIInstance.decorate(t)[e](n))}toArray(t=[]){return"string"==typeof t?[t]:t}}const R=new S,A=new s.InjectionToken("BlockUIModuleSettings");function k(t){return R.updateSettings(t),R}class E{static forRoot(t={}){return{ngModule:E,providers:[{provide:A,useValue:t},{provide:S,useFactory:k,deps:[A]},C]}}}function L(t){return function(e,n,a){e[n]=R.decorate(t)}}var D=s["ɵcrt"]({encapsulation:2,styles:[],data:{}});function P(t){return s["ɵvid"](0,[s["ɵncd"](null,0),(t()(),s["ɵeld"](1,0,null,null,1,"block-ui-content",[],null,null,null,B,j)),s["ɵdid"](2,12828672,null,0,N,[S,s.ComponentFactoryResolver,s.ChangeDetectorRef],{name:[0,"name"],delayStart:[1,"delayStart"],delayStop:[2,"delayStop"],defaultMessage:[3,"defaultMessage"],templateCmp:[4,"templateCmp"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.name,n.delayStart,n.delayStop,n.message,n.template)}),null)}function M(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui",[],null,null,null,P,D)),s["ɵdid"](1,114688,null,0,I,[S],null,null)],(function(t,e){t(e,1,0)}),null)}var q=s["ɵccf"]("block-ui",I,M,{name:"name",message:"message",delayStart:"delayStart",delayStop:"delayStop",template:"template"},{},["*"]),j=s["ɵcrt"]({encapsulation:2,styles:["\n.block-ui-wrapper {\n  display: none;\n  position: fixed;\n  height: 100%;\n  width: 100%;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.70);\n  z-index: 30000;\n  cursor: wait;\n}\n\n.block-ui-wrapper.block-ui-wrapper--element {\n  position: absolute;\n}\n\n.block-ui-wrapper.active {\n  display: block;\n}\n\n.block-ui-wrapper.block-ui-main {\n  position: fixed;\n}\n\n.block-ui-spinner,\n.block-ui-template {\n  position: absolute;\n  top: 40%;\n  margin: 0 auto;\n  left: 0;\n  right: 0;\n  transform: translateY(-50%);\n}\n\n.block-ui-spinner > .message {\n  font-size: 1.3em;\n  text-align: center;\n  color: #fff;\n}\n\n.block-ui__element {\n  position: relative;\n}\n\n.loader,\n.loader:after {\n  border-radius: 50%;\n  width: 10em;\n  height: 10em;\n}\n.loader {\n  margin: 7px auto;\n  font-size: 5px;\n  position: relative;\n  text-indent: -9999em;\n  border-top: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-right: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-left: 1.1em solid #ffffff;\n  -webkit-transform: translateZ(0);\n  -ms-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-animation: load8 1.1s infinite linear;\n  animation: load8 1.1s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n"],data:{}});function F(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.message||n.defaultMessage)}))}function G(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","block-ui-spinner"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","loader"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,F)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.message||n.defaultMessage)}),null)}function V(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function z(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,[[1,3],["templateOutlet",2]],null,0,null,V)),(t()(),s["ɵand"](0,null,null,0))],null,null)}function B(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{templateOutlet:0}),(t()(),s["ɵeld"](1,0,null,null,7,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](4,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,G)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,z)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=s["ɵinlineInterpolate"](2,"block-ui-wrapper ",n.name," ",n.className,""),r=t(e,4,0,n.active);t(e,3,0,a,r),t(e,6,0,!n.templateCmp),t(e,8,0,n.templateCmp)}),null)}function Y(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui-content",[],null,null,null,B,j)),s["ɵdid"](1,12828672,null,0,N,[S,s.ComponentFactoryResolver,s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var H=s["ɵccf"]("block-ui-content",N,Y,{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:"message",templateCmp:"template"},{},[]),U=n("FE24"),W=n("z/SZ"),K=n("GS7A"),$=n("s7LF"),Z=n("+gVj"),J=n("LvDl"),Q=n("xj/R"),X=n("IheW");let tt=(()=>{class t{constructor(t,e){this.http=t,this.localeId=e}getLocale(){return this.localeId||"en-US"}setLocale(t){document.cookie=`cd-lang=${t}`}getLanguages(){return this.http.get("ui-api/langs")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](s.LOCALE_ID))},token:t,providedIn:"root"}),t})();var et=function(t){return t.cs="Čeština",t["de-DE"]="Deutsch",t["en-US"]="English",t["es-ES"]="Español",t["fr-FR"]="Français",t["id-ID"]="Bahasa Indonesia",t["it-IT"]="Italiano",t["ja-JP"]="日本語",t["ko-KR"]="한국어",t["pl-PL"]="Polski",t["pt-BR"]="Português (brasileiro)",t["zh-CN"]="中文 (简体)",t["zh-TW"]="中文 (繁體)",t}({});let nt={cs:Q.a,de:Q.b,es:Q.e,fr:Q.g,id:Q.m,it:Q.y,ja:Q.z,ko:Q.A,pl:Q.C,pt:Q.D,zh:Q.I};class at{constructor(t,e){this.localeService=t,this.languageService=e,this.isDropdown=!0,this.supportedLanguages=et}ngOnInit(){this.selectedLanguage=this.languageService.getLocale(),this.defineUsedLanguage(),this.languageService.getLanguages().subscribe(t=>{this.supportedLanguages=J.pick(this.supportedLanguages,t)})}defineUsedLanguage(){const t=this.selectedLanguage.slice(0,2);t in nt&&(Object(Q.c)(t,nt[t]),this.localeService.use(t))}reloadWindow(){window.location.reload()}changeLanguage(t){this.languageService.setLocale(t),this.reloadWindow()}}var rt=n("ienR"),it=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function st(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.changeLanguage(t.context.$implicit.key)&&a),a}),null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.value)}))}function ot(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,st)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,2,0,s["ɵunv"](e,2,0,s["ɵnov"](e,3).transform(n.supportedLanguages)))}),null)}function ut(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,7,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](2,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Select a Language"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,ot)),s["ɵdid"](7,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen),t(e,5,0,n.supportedLanguages[n.selectedLanguage])}))}function dt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.key),t(e,2,0,e.context.$implicit.key)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function lt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"change"===e&&(a=!1!==r.changeLanguage(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedLanguage=n)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](3,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,2,null,dt)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,3,0,n.selectedLanguage),t(e,8,0,s["ɵunv"](e,8,0,s["ɵnov"](e,9).transform(n.supportedLanguages)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function ct(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ut)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lt)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.isDropdown),t(e,3,0,!n.isDropdown)}),null)}var ft=n("quSY"),ht=n("oxzT"),gt=n("9nlD"),pt=n("mSOc");class bt{constructor(t,e){this.notificationService=t,this.summaryService=e,this.icons=ht.a,this.hasRunningTasks=!1,this.subs=new ft.a}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{t&&(this.hasRunningTasks=t.executing_tasks.length>0)}))}ngOnDestroy(){this.subs.unsubscribe()}toggleSidebar(){this.notificationService.toggleSidebar()}}var mt=s["ɵcrt"]({encapsulation:0,styles:[[".running[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{color:#2b99a8}.running[_ngcontent-%COMP%]:hover   i[_ngcontent-%COMP%]{color:#fff}"]],data:{}});function yt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"a",[["title","Tasks and Notifications"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSidebar()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{running:0}),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"]))],(function(t,e){var n=e.component,a=t(e,3,0,n.hasRunningTasks);t(e,2,0,a);var r=t(e,7,0,n.icons.bell);t(e,6,0,r)}),null)}var vt=n("+0ag"),xt=n("aexS"),_t=function(t,e,n){this.name=t,this.version=e,this.os=n,this.type="browser"},Tt=function(t){this.version=t,this.type="node",this.name="node",this.os=process.platform},Ot=function(t,e,n,a){this.name=t,this.version=e,this.os=n,this.bot=a,this.type="bot-device"},wt=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},St=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,It=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["vivaldi",/Vivaldi\/([0-9\.]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/Edg\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],Nt=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Ct(t){var e=function(t){return""!==t&&It.reduce((function(e,n){var a=n[0];if(e)return e;var r=n[1].exec(t);return!!r&&[a,r]}),!1)}(t);if(!e)return null;var n=e[0],a=e[1];if("searchbot"===n)return new wt;var r=a[1]&&a[1].split(/[._]/).slice(0,3);r?r.length<3&&(r=function(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,o=i.length;s<o;s++,r++)a[r]=i[s];return a}(r,function(t){for(var e=[],n=0;n<t;n++)e.push("0");return e}(3-r.length))):r=[];var i=r.join("."),s=function(t){for(var e=0,n=Nt.length;e<n;e++){var a=Nt[e],r=a[0];if(a[1].exec(t))return r}return null}(t),o=St.exec(t);return o&&o[1]?new Ot(n,i,s,o[1]):new _t(n,r.join("."),s)}var Rt=n("Mxhz"),At=n("sne2");class kt{constructor(t,e,n,a){this.modalRef=t,this.summaryService=e,this.userService=n,this.authStorageService=a,this.userPermission=this.authStorageService.getPermissions().user}ngOnInit(){this.copyright="Copyright(c) 2020 Ceph contributors.",this.projectConstants=At.c,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(t=>{if(!t)return;const e=t.version.replace("ceph version ","").split(" ");this.hostAddr=t.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),this.versionNumber=e[0],this.versionHash=e[1],this.versionName=e.slice(2,e.length).join(" ")})}ngOnDestroy(){this.subs.unsubscribe()}setVariables(){const t={};t.user=localStorage.getItem("dashboard_username"),t.role="user",this.userPermission.read&&this.userService.get(t.user).subscribe(e=>{t.role=e.roles});const e="undefined"!=typeof navigator?Ct(navigator.userAgent):"undefined"!=typeof process&&process.version?new Tt(process.version.slice(1)):null;return t.browserName=e&&e.name?e.name:"Not detected",t.browserVersion=e&&e.version?e.version:"Not detected",t.browserOS=e&&e.os?e.os:"Not detected",t}}class Et{constructor(t,e,n,a){this.summaryService=t,this.cephReleaseNamePipe=e,this.modalService=n,this.authStorageService=a,this.icons=ht.a}ngOnInit(){const t=this.summaryService.subscribe(e=>{if(!e)return;const n=this.cephReleaseNamePipe.transform(e.version);this.docsUrl=`http://docs.ceph.com/docs/${n}/mgr/dashboard/`,setTimeout(()=>{t.unsubscribe()},0)})}openAboutModal(){this.modalRef=this.modalService.show(kt),this.modalRef.setClass("modal-lg")}goToApiDocs(){this.docsFormElement.nativeElement.children[0].value=this.authStorageService.getToken(),this.docsFormElement.nativeElement.submit()}}var Lt=n("LqlI"),Dt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Pt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"a",[["class","dropdown-item"],["target","_blank"]],[[8,"href",4]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](5,{disabled:0}),(t()(),s["ɵted"](-1,null,["Documentation"])),(t()(),s["ɵeld"](7,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.goToApiDocs()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["API"])),(t()(),s["ɵeld"](10,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.openAboutModal()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["About"]))],(function(t,e){var n=t(e,5,0,!e.component.docsUrl);t(e,4,0,"dropdown-item",n)}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function Mt(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{docsFormElement:0}),(t()(),s["ɵeld"](1,0,[[1,0],["docsForm",1]],null,1,"form",[["action","/docs"],["method","post"],["target","_blank"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"input",[["name","token"],["type","hidden"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](5,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](6,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Help"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,7).onClick()&&a),a}),null,null)),s["ɵdid"](7,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,1),(t()(),s["ɵeld"](12,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Help"])),(t()(),s["ɵand"](16777216,null,null,1,null,Pt)),s["ɵdid"](15,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,5,0);var a=t(e,11,0,n.icons.questionCircle);t(e,10,0,a)}),(function(t,e){t(e,3,0,s["ɵnov"](e,5).dropup,s["ɵnov"](e,5).isOpen,s["ɵnov"](e,5).isOpen&&s["ɵnov"](e,5).isBs4),t(e,6,0,!0,s["ɵnov"](e,7).isDisabled,s["ɵnov"](e,7).isOpen)}))}var qt=n("iInd");class jt{constructor(t){this.authStorageService=t,this.icons=ht.a;const e=this.authStorageService.getPermissions();this.userPermission=e.user,this.configOptPermission=e.configOpt}ngOnInit(){}}var Ft=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Gt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/user-management"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["User management"]))],(function(t,e){t(e,2,0,"/user-management")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function Vt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/telemetry"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Telemetry configuration"]))],(function(t,e){t(e,2,0,"/telemetry")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function zt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Gt)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vt)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.userPermission.read),t(e,4,0,n.configOptPermission.read)}),null)}function Bt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](2,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Dashboard Settings"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard Settings"])),(t()(),s["ɵand"](16777216,null,null,1,null,zt)),s["ɵdid"](12,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.deepCheck);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}function Yt(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Bt)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.userPermission.read)}),null)}var Ht=n("DSvg");class Ut{constructor(t,e){this.authStorageService=t,this.authService=e,this.icons=ht.a}ngOnInit(){this.username=this.authStorageService.getUsername(),this.sso=this.authStorageService.isSSO()}logout(){this.authService.logout()}}var Wt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Kt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"a",[["class","dropdown-item"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](5,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](6,1),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Change password"]))],(function(t,e){var n=e.component;t(e,2,0,"/user-profile/edit");var a=t(e,6,0,n.icons.lock);t(e,5,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function $t(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"li",[["class","disabled"],["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"a",[["class","dropdown-item disabled"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Signed in as "])),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,0,"li",[["class","dropdown-divider"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Kt)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,null,7,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,6,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.logout()&&a),a}),null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](13,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](14,1),(t()(),s["ɵeld"](15,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sign out"]))],(function(t,e){var n=e.component;t(e,8,0,!n.sso);var a=t(e,14,0,n.icons.signOut);t(e,13,0,a)}),(function(t,e){t(e,5,0,e.component.username)}))}function Zt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](2,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Logged in user"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Logged in user"])),(t()(),s["ɵand"](16777216,null,null,1,null,$t)),s["ɵdid"](12,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.user);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}const Jt=[Object(K.h)({height:0,visibility:"hidden"}),Object(K.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(K.h)({height:"*",visibility:"visible"}))],Qt=[Object(K.h)({height:"*",visibility:"visible"}),Object(K.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(K.h)({height:0,visibility:"hidden"}))];class Xt{constructor(t,e,n){this._el=t,this._renderer=e,this.collapsed=new s.EventEmitter,this.collapses=new s.EventEmitter,this.expanded=new s.EventEmitter,this.expands=new s.EventEmitter,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapse=!0,this.isCollapsing=!1,this.isAnimated=!1,this._display="block",this._stylesLoaded=!1,this._COLLAPSE_ACTION_NAME="collapse",this._EXPAND_ACTION_NAME="expand",this._factoryCollapseAnimation=n.build(Qt),this._factoryExpandAnimation=n.build(Jt)}set display(t){this.isAnimated?(this._display=t,"none"!==t?this.show():this.hide()):this._renderer.setStyle(this._el.nativeElement,"display",t)}set collapse(t){this._player&&!this._isAnimationDone||(this.isExpanded=t,this.toggle())}get collapse(){return this.isExpanded}ngAfterViewChecked(){this._stylesLoaded=!0,this._player&&this._isAnimationDone&&(this._player.reset(),this._renderer.setStyle(this._el.nativeElement,"height","*"))}toggle(){this.isExpanded?this.hide():this.show()}hide(){this.isCollapsing=!0,this.isExpanded=!1,this.isCollapsed=!0,this.isCollapsing=!1,this.collapses.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._COLLAPSE_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.collapsed.emit(this),this._renderer.setStyle(this._el.nativeElement,"display","none")})}show(){this._renderer.setStyle(this._el.nativeElement,"display",this._display),this.isCollapsing=!0,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapsing=!1,this.expands.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._EXPAND_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.expanded.emit(this)})}animationRun(t,e){if(!t||!this._stylesLoaded)return t=>t();this._renderer.setStyle(this._el.nativeElement,"overflow","hidden"),this._renderer.addClass(this._el.nativeElement,"collapse");const n=e===this._EXPAND_ACTION_NAME?this._factoryExpandAnimation:this._factoryCollapseAnimation;return this._player&&this._player.destroy(),this._player=n.create(this._el.nativeElement),this._player.play(),t=>this._player.onDone(t)}}class te{static forRoot(){return{ngModule:te,providers:[]}}}class ee{transform(t){return"HEALTH_OK"===t?{color:"#00bb00"}:"HEALTH_WARN"===t?{color:"#ffa500"}:"HEALTH_ERR"===t?{color:"#ff0000"}:null}}var ne=n("MdoF"),ae=n("CNMR"),re=n("20UP"),ie=n("oMSZ");class se{constructor(t,e){this.settingsService=t,this.authStorageService=e}ngOnInit(){this.settingsService.getStandardSettings().subscribe(t=>{this.pwdExpirationSettings=new ie.a(t);const e=this.authStorageService.getPwdExpirationDate();e&&(this.expirationDays=this.getExpirationDays(e),this.alertType=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning2?"danger":"warning",this.authStorageService.isPwdDisplayedSource.next(!0))})}getExpirationDays(t){const e=new Date,n=new Date(1e3*t);return Math.floor((n.valueOf()-e.valueOf())/864e5)}close(){this.authStorageService.isPwdDisplayedSource.next(!1)}}var oe=s["ɵcrt"]({encapsulation:0,styles:[[".no-margin-bottom .alert{margin-bottom:0}"]],data:{}});function ue(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["less than 1"])),(t()(),s["ɵted"](-1,null,[" day. Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function de(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),(t()(),s["ɵted"](-1,null,[" day(s). Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,3,0,e.component.expirationDays),t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function le(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"alert",[["class","no-margin-bottom"]],null,[[null,"onClose"]],(function(t,e,n){var a=!0;return"onClose"===e&&(a=!1!==t.component.close(n)&&a),a}),ne.c,ne.b)),s["ɵdid"](1,114688,null,0,ae.a,[ae.b,s.ChangeDetectorRef],{type:[0,"type"],dismissible:[1,"dismissible"]},{onClose:"onClose"}),(t()(),s["ɵand"](16777216,null,0,1,null,ue)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,de)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,s["ɵinlineInterpolate"](1,"",n.alertType,""),!0),t(e,3,0,0===n.expirationDays),t(e,5,0,n.expirationDays>0)}),null)}function ce(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,le)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,null!=n.expirationDays&&n.expirationDays<=n.pwdExpirationSettings.pwdExpirationWarning1)}),null)}var fe=n("7qid"),he=n("38Bd"),ge=n("wd/R");class pe{transform(t,e=!1){return e?ge(t).fromNow():this._forHumans(t)}_forHumans(t){const e=[[`${Math.floor(t/31536e3)}`,"years"],[`${Math.floor(t%31536e3/86400)}`,"days"],[`${Math.floor(t%86400/3600)}`,"hours"],[`${Math.floor(t%3600/60)}`,"minutes"],[`${Math.floor(t%60)}`,"seconds"]];let n="";for(let a=0,r=e.length;a<r;a++)"0"!==e[a][0]&&(n+=" "+e[a][0]+" "+("1"===e[a][0]?e[a][1].substr(0,e[a][1].length-1):e[a][1]));return n.trim()||"1 second"}}var be=n("a0VL"),me=n("moLw"),ye=n("WF9J"),ve=s["ɵcrt"]({encapsulation:2,styles:["[data-simplebar]{position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;flex-wrap:wrap;-webkit-box-pack:start;justify-content:flex-start;align-content:flex-start;-webkit-box-align:start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;visibility:visible;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;-webkit-box-flex:inherit;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;-webkit-transition:opacity linear;transition:opacity linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}","ngx-simplebar{display:block}"],data:{}});function xe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","simplebar-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","simplebar-height-auto-observer-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"div",[["class","simplebar-height-auto-observer"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","simplebar-mask"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","simplebar-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","simplebar-content-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"div",[["class","simplebar-content"]],null,null,null,null,null)),s["ɵncd"](null,0),(t()(),s["ɵeld"](8,0,null,null,0,"div",[["class","simplebar-placeholder"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"div",[["class","simplebar-track simplebar-horizontal"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"div",[["class","simplebar-track simplebar-vertical"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null))],null,null)}var _e=n("O9Tv"),Te=n("G1I9"),Oe=n("lJxs"),we=n("pL04");let Se=(()=>{class t{constructor(t,e){this.http=t,this.settingsService=e,this.baseURL="api/prometheus",this.settingsKey={alertmanager:"api/settings/alertmanager-api-host",prometheus:"api/settings/prometheus-api-host"}}ifAlertmanagerConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,t,e)}disableAlertmanagerConfig(){this.settingsService.disableSetting(this.settingsKey.alertmanager)}ifPrometheusConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,t,e)}disablePrometheusConfig(){this.settingsService.disableSetting(this.settingsKey.prometheus)}getAlerts(t={}){return this.http.get(this.baseURL,{params:t})}getSilences(t={}){return this.http.get(`${this.baseURL}/silences`,{params:t})}getRules(t="all"){return this.http.get(`${this.baseURL}/rules`).pipe(Object(Oe.a)(e=>(["alerting","rewrites"].includes(t)&&e.groups.map(e=>{e.rules=e.rules.filter(e=>e.type===t)}),e)))}setSilence(t){return this.http.post(`${this.baseURL}/silence`,t,{observe:"response"})}expireSilence(t){return this.http.delete(`${this.baseURL}/silence/${t}`,{observe:"response"})}getNotifications(t){return this.http.get(`${this.baseURL}/notifications?from=${t&&t.id?t.id:"last"}`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](re.a))},token:t,providedIn:we.a}),t})();var Ie=n("mtw6");let Ne=(()=>{class t{constructor(t){this.notificationService=t}sendNotifications(t){t.forEach(t=>this.notificationService.show(t))}convertToCustomAlerts(t){return J.uniqWith(t.map(t=>({status:J.isObject(t.status)?t.status.state:this.getPrometheusNotificationStatus(t),name:t.labels.alertname,url:t.generatorURL,summary:t.annotations.summary,fingerprint:J.isObject(t.status)&&t.fingerprint})),J.isEqual)}getPrometheusNotificationStatus(t){const e=t.status;return"firing"===e?"active":e}convertAlertToNotification(t){return new Te.b(this.formatType(t.status),`${t.name} (${t.status})`,this.appendSourceLink(t,t.summary),void 0,"Prometheus")}formatType(t){return Ie.a[J.findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},e=>e.includes(t))]}appendSourceLink(t,e){return`${e} <a href="${t.url}" target="_blank"><i class="${ht.a.lineChart}"></i></a>`}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](gt.a))},token:t,providedIn:"root"}),t})(),Ce=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.canAlertsBeNotified=!1,this.alerts=[],this.rules=[]}getAlerts(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getAlerts().subscribe(t=>this.handleAlerts(t),t=>{[404,504].includes(t.status)&&this.prometheusService.disableAlertmanagerConfig()})})}getRules(){this.prometheusService.ifPrometheusConfigured(()=>{this.prometheusService.getRules("alerting").subscribe(t=>{this.rules=t.groups.reduce((t,e)=>t.concat(e.rules.map(t=>(t.group=e.name,t))),[])})})}refresh(){this.getAlerts(),this.getRules()}handleAlerts(t){this.canAlertsBeNotified&&this.notifyOnAlertChanges(t,this.alerts),this.alerts=t,this.canAlertsBeNotified=!0}notifyOnAlertChanges(t,e){const n=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(t),this.alertFormatter.convertToCustomAlerts(e)).map(t=>this.alertFormatter.convertAlertToNotification(t));this.alertFormatter.sendNotifications(n)}getChangedAlerts(t,e){return J.differenceWith(t,e,J.isEqual).concat(this.getVanishedAlerts(t,e))}getVanishedAlerts(t,e){return J.differenceWith(e,t,(t,e)=>t.fingerprint===e.fingerprint).map(t=>(t.status="resolved",t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Ne),s["ɵɵinject"](Se))},token:t,providedIn:"root"}),t})(),Re=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.backendFailure=!1,this.notifications=[]}refresh(){this.backendFailure||this.prometheusService.getNotifications(J.last(this.notifications)).subscribe(t=>this.handleNotifications(t),()=>this.backendFailure=!0)}handleNotifications(t){0!==t.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(J.flatten(t.map(t=>this.formatNotification(t)))),this.notifications=this.notifications.concat(t))}formatNotification(t){return this.alertFormatter.convertToCustomAlerts(t.alerts).map(t=>this.alertFormatter.convertAlertToNotification(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Ne),s["ɵɵinject"](Se))},token:t,providedIn:"root"}),t})();var Ae=n("ufoC");class ke{constructor(t,e,n,a,r,i,s,o){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.prometheusNotificationService=a,this.authStorageService=r,this.prometheusAlertService=i,this.ngZone=s,this.cdRef=o,this.isSidebarOpened=!1,this.executingTasks=[],this.subs=new ft.a,this.icons=ht.a,this.last_task="",this.mutex=new _e.Mutex,this.simplebar={autoHide:!1},this.notifications=[]}ngOnDestroy(){window.clearInterval(this.interval),window.clearTimeout(this.timeout),this.subs.unsubscribe()}ngOnInit(){this.last_task=window.localStorage.getItem("last_task");const t=this.authStorageService.getPermissions();t.prometheus.read&&t.configOpt.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.triggerPrometheusAlerts()})},5e3)})),this.subs.add(this.notificationService.data$.subscribe(t=>{this.notifications=J.orderBy(t,["timestamp"],["desc"]),this.cdRef.detectChanges()})),this.subs.add(this.notificationService.sidebarSubject.subscribe(t=>{this.isSidebarOpened=!t&&!this.isSidebarOpened,window.clearTimeout(this.timeout),this.timeout=window.setTimeout(()=>{this.cdRef.detectChanges()},0)})),this.subs.add(this.summaryService.subscribe(t=>{t&&(this._handleTasks(t.executing_tasks),this.mutex.acquire().then(e=>{J.filter(t.finished_tasks,t=>!this.last_task||ge(t.end_time).isAfter(this.last_task)).forEach(t=>{const e=this.notificationService.finishedTaskToNotification(t,t.success),n=new Te.a(e);n.timestamp=t.end_time,n.duration=t.duration,this.last_task&&!ge(t.end_time).isAfter(this.last_task)||(this.last_task=t.end_time,window.localStorage.setItem("last_task",this.last_task)),this.notificationService.save(n)}),this.cdRef.detectChanges(),e()}))}))}_handleTasks(t){for(const e of t)e.description=this.taskMessageService.getRunningTitle(e);this.executingTasks=t}triggerPrometheusAlerts(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()}removeAll(){this.notificationService.removeAll()}remove(t){this.notificationService.remove(t)}closeSidebar(){this.isSidebarOpened=!1}trackByFn(t){return t}}var Ee=s["ɵcrt"]({encapsulation:0,styles:[["[_nghost-%COMP%]{position:fixed;top:53px;bottom:10px;right:-350px;width:350px;max-width:90vw;z-index:9;transition:all .6s}.active[_nghost-%COMP%]{right:20px}.card[_ngcontent-%COMP%]{height:100%}ngx-simplebar[_ngcontent-%COMP%]{height:calc(100% - 42.2px)}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.btn-link[_ngcontent-%COMP%]   .fa-trash-o[_ngcontent-%COMP%]{color:#000}table[_ngcontent-%COMP%]{width:100%}.row[_ngcontent-%COMP%]{margin-left:0;margin-right:0}"]],data:{}});function Le(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,27,"div",[["class","card tc_task border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,26,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[["class","text-info"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](7,2),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,4),(t()(),s["ɵeld"](16,0,null,null,12,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](19,null,["",""])),(t()(),s["ɵeld"](20,0,null,null,2,"div",[["class","progress mb-1"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,1,"progressbar",[["class","progress-striped active"],["max","100"]],[[1,"max",0],[2,"progress",null]],null,null,fe.b,fe.a)),s["ɵdid"](22,49152,null,0,he.b,[he.c],{animate:[0,"animate"],striped:[1,"striped"],value:[2,"value"],max:[3,"max"]},null),(t()(),s["ɵeld"](23,0,null,null,5,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,2,"small",[["class","date float-left"]],null,null,null,null,null)),(t()(),s["ɵted"](25,null,[" "," "])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"span",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵted"](28,null,[" "," % "])),(t()(),s["ɵeld"](29,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x);t(e,6,0,"text-info",a);var r=t(e,11,0,n.icons.stack2x,n.icons.circle);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.spinner,n.icons.spin,n.icons.inverse);t(e,14,0,i),t(e,22,0,!0,!0,e.context.$implicit.progress,"100")}),(function(t,e){t(e,19,0,e.context.$implicit.description),t(e,21,0,s["ɵnov"](e,22).max,s["ɵnov"](e,22).addClass);var n=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit.begin_time));t(e,25,0,n),t(e,28,0,e.context.$implicit.progress||0)}))}function De(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Le)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.executingTasks,n.trackByFn)}),null)}function Pe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"small",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration:"])),(t()(),s["ɵted"](4,null,[" "," "])),s["ɵpid"](0,pe,[]),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(e.parent.context.$implicit.duration)))}))}function Me(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,37,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,35,"div",[["class","card tc_notification border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,34,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,3),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,3),(t()(),s["ɵeld"](16,0,null,null,20,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,19,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,4,"button",[["class","btn btn-link float-right mt-0 pt-0"],["title","Remove notification"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.remove(t.context.index),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](21,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](24,null,["",""])),(t()(),s["ɵeld"](25,0,null,null,0,"p",[["class","card-text"]],[[8,"innerHTML",1]],null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,10,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Pe)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](29,0,null,null,3,"small",[["class","date"]],[[8,"title",0]],null,null,null,null)),s["ɵppd"](30,1),(t()(),s["ɵted"](31,null,["",""])),s["ɵpid"](0,pe,[]),(t()(),s["ɵeld"](33,0,null,null,3,"i",[["class","float-right custom-icon"]],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](35,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](36,1),(t()(),s["ɵeld"](37,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x,e.context.$implicit.textClass);t(e,6,0,a);var r=t(e,11,0,n.icons.circle,n.icons.stack2x);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.inverse,e.context.$implicit.iconClass);t(e,14,0,i);var s=t(e,22,0,n.icons.trash);t(e,21,0,s),t(e,28,0,e.context.$implicit.duration);var o=t(e,36,0,e.context.$implicit.applicationClass);t(e,35,0,"float-right custom-icon",o)}),(function(t,e){t(e,24,0,e.context.$implicit.title),t(e,25,0,e.context.$implicit.message);var n=s["ɵunv"](e,29,0,t(e,30,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.timestamp));t(e,29,0,n),t(e,31,0,s["ɵunv"](e,31,0,s["ɵnov"](e,32).transform(e.context.$implicit.timestamp,!0))),t(e,33,0,e.context.$implicit.application)}))}function qe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"button",[["class","btn btn-light btn-block"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.removeAll(),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,["   "])),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear notifications"])),(t()(),s["ɵeld"](9,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Me)),s["ɵdid"](11,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.trash);t(e,4,0,a),t(e,11,0,n.notifications)}),null)}function je(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,qe)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.notifications.length>0)}),null)}function Fe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","message text-center"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["There are no notifications."]))],null,null)}function Ge(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Fe)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,0===n.notifications.length&&0===n.executingTasks.length)}),null)}function Ve(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function ze(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Be(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ye(t){return s["ɵvid"](2,[s["ɵpid"](0,be.a,[i.DatePipe]),(t()(),s["ɵand"](0,[["tasksTpl",2]],null,0,null,De)),(t()(),s["ɵand"](0,[["notificationsTpl",2]],null,0,null,je)),(t()(),s["ɵand"](0,[["emptyTpl",2]],null,0,null,Ge)),(t()(),s["ɵeld"](4,0,null,null,16,"div",[["class","card"]],null,[[null,"clickOutside"]],(function(t,e,n){var a=!0;return"clickOutside"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),s["ɵdid"](5,737280,null,0,me.ClickOutsideDirective,[s.ElementRef,s.NgZone,s.PLATFORM_ID],{clickOutsideEnabled:[0,"clickOutsideEnabled"]},{clickOutside:"clickOutside"}),(t()(),s["ɵeld"](6,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"])),(t()(),s["ɵeld"](9,0,null,null,2,"button",[["class","close float-right"],["tabindex","-1"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](12,0,null,null,8,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,xe,ve)),s["ɵdid"](13,4440064,null,0,ye.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](14,0,null,0,6,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ve)),s["ɵdid"](16,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ze)),s["ɵdid"](18,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Be)),s["ɵdid"](20,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.isSidebarOpened),t(e,13,0,n.simplebar),t(e,16,0,s["ɵnov"](e,1)),t(e,18,0,s["ɵnov"](e,2)),t(e,20,0,s["ɵnov"](e,3))}),null)}var He=n("ej+x");class Ue{constructor(t,e,n,a){this.authStorageService=t,this.summaryService=e,this.featureToggles=n,this.prometheusAlertService=a,this.isPwdDisplayed=!1,this.icons=ht.a,this.isCollapsed=!0,this.showMenuSidebar=!0,this.displayedSubMenu="",this.simplebar={autoHide:!1},this.subs=new ft.a,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{t&&(this.summaryData=t)})),this.subs.add(this.authStorageService.isPwdDisplayed$.subscribe(t=>{this.isPwdDisplayed=t}))}ngOnDestroy(){this.subs.unsubscribe()}blockHealthColor(){if(this.summaryData&&this.summaryData.rbd_mirroring){if(this.summaryData.rbd_mirroring.errors>0)return{color:"#d9534f"};if(this.summaryData.rbd_mirroring.warnings>0)return{color:"#f0ad4e"}}}toggleSubMenu(t){this.displayedSubMenu=this.displayedSubMenu===t?"":t}}var We=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";  .cd-navbar-top .cd-navbar-brand{background:#374249;border-top:4px solid #2b99a8}  .cd-navbar-top .cd-navbar-brand.isPwdDisplayed{top:37.6px}  .cd-navbar-top .cd-navbar-brand .navbar-brand,   .cd-navbar-top .cd-navbar-brand .navbar-brand:hover{color:#eee;height:auto;padding:0}  .cd-navbar-top .cd-navbar-brand .navbar-brand>img{height:25px}  .cd-navbar-top .cd-navbar-brand .navbar-toggler{border:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler:focus,   .cd-navbar-top .cd-navbar-brand .navbar-toggler:hover{outline:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler .fa-navicon{color:#eee}  .cd-navbar-top .cd-navbar-brand .navbar-collapse{padding:0}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>.active>a{color:#eee;background-color:#2b99a8}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:focus,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}  .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a,   .cd-navbar-top .navbar-nav>li>a{color:#eee;line-height:1;padding:13.5px 18px!important;position:relative;display:block;text-decoration:none}  .cd-navbar-top .navbar-nav .nav-link,   .cd-navbar-top .navbar-nav .nav-link:hover{color:#eee}  .cd-navbar-top .navbar-nav>li:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown].open>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:focus,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>li>a:focus,   .cd-navbar-top .navbar-nav>.open>a,   .cd-navbar-top .navbar-nav>.open>a:focus,   .cd-navbar-top .navbar-nav>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}@media (min-width:768px){  .cd-navbar-top .cd-navbar-utility{border-bottom:0;position:absolute;right:0;top:0;font-size:1.1rem}}@media (max-width:calc(768px - 1px)){  .cd-navbar-top .navbar-nav{margin:0}  .cd-navbar-top .navbar-nav .fa{margin-right:.5em}  .cd-navbar-top .navbar-nav .open .dropdown-menu{border:0;padding-top:0;padding-bottom:0;background-color:#2b99a8}  .cd-navbar-top .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 35px;color:#eee}  .cd-navbar-top .navbar-nav .open .dropdown-menu>.active>a{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}}.cd-navbar-primary[_ngcontent-%COMP%]   .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:focus, .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:hover{color:#eee!important;background-color:#2b99a8!important;border:0!important}.wrapper[_ngcontent-%COMP%]{display:flex;width:100%}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]{width:200px;top:43px;background:#374249;overflow-y:auto;position:fixed;bottom:0;left:0;z-index:999;color:#fff;transition:all .3s}.wrapper[_ngcontent-%COMP%]   #sidebar.active[_ngcontent-%COMP%]{margin-left:-200px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul.component[_ngcontent-%COMP%]{padding:20px 0;margin:0}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:#fff;padding:10px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{padding:10px;font-size:1.1em;display:block;color:#fff;text-decoration:none}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{color:#fff;background:#2b99a8}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] > .badge[_ngcontent-%COMP%]{margin-left:5px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li.active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]   a[aria-expanded=true][_ngcontent-%COMP%]{color:#fff}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]{position:relative}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]::after{position:absolute;right:20px;content:"";font-family:ForkAwesome;border:0;font-size:1rem;transition:transform .3s ease-in-out}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[aria-expanded=true][_ngcontent-%COMP%]::after{transform:rotate(90deg)}.wrapper[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{font-size:.9em!important;padding-left:30px!important;background:#4d5c66}.wrapper[_ngcontent-%COMP%]   .cd-navbar-primary[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:focus{outline:0}.wrapper[_ngcontent-%COMP%]   ngx-simplebar[_ngcontent-%COMP%]{height:100%}#content[_ngcontent-%COMP%]{width:calc(100% - 200px);transition:all .3s;position:absolute;top:43px;bottom:0;right:0}#content.active[_ngcontent-%COMP%]{width:100vw}.isPwdDisplayed[_nghost-%COMP%]   .cd-navbar-top[_ngcontent-%COMP%]   .cd-navbar-brand[_ngcontent-%COMP%]{top:37.6px}.isPwdDisplayed[_nghost-%COMP%]   #sidebar[_ngcontent-%COMP%]{top:80.6px}.isPwdDisplayed[_nghost-%COMP%]   #content[_ngcontent-%COMP%]{top:80.6px}.isPwdDisplayed[_nghost-%COMP%]   cd-notifications-sidebar[_ngcontent-%COMP%]{top:90.6px}']],data:{}});function Ke(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function $e(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ze(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-language-selector",[["class","cd-navbar"]],null,null,null,ct,it)),s["ɵdid"](2,114688,null,0,at,[rt.l,tt],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"cd-notifications",[["class","cd-navbar"]],null,null,null,yt,mt)),s["ɵdid"](5,245760,null,0,bt,[gt.a,pt.a],null,null),(t()(),s["ɵeld"](6,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"cd-dashboard-help",[["class","cd-navbar"]],null,null,null,Mt,Dt)),s["ɵdid"](8,114688,null,0,Et,[pt.a,vt.a,Lt.b,xt.a],null,null),(t()(),s["ɵeld"](9,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"cd-administration",[["class","cd-navbar"]],null,null,null,Yt,Ft)),s["ɵdid"](11,114688,null,0,jt,[xt.a],null,null),(t()(),s["ɵeld"](12,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"cd-identity",[["class","cd-navbar"]],null,null,null,Zt,Wt)),s["ɵdid"](14,114688,null,0,Ut,[xt.a,Ht.a],null,null)],(function(t,e){t(e,2,0),t(e,5,0),t(e,8,0),t(e,11,0),t(e,14,0)}),null)}function Je(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,5,{links:1}),s["ɵqud"](603979776,6,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/hosts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[6,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Hosts"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/hosts")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Qe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_inventory"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,7,{links:1}),s["ɵqud"](603979776,8,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/inventory"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[8,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Inventory"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/inventory")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Xe(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_monitor"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,9,{links:1}),s["ɵqud"](603979776,10,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/monitor/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[10,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Monitors"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/monitor/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function tn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_services"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,11,{links:1}),s["ɵqud"](603979776,12,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/services/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[12,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Services"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/services/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function en(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_osds"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,13,{links:1}),s["ɵqud"](603979776,14,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/osd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[14,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["OSDs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/osd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function nn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_configuration"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,15,{links:1}),s["ɵqud"](603979776,16,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/configuration"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[16,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Configuration"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/configuration")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function an(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_crush"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,17,{links:1}),s["ɵqud"](603979776,18,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/crush-map"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[18,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["CRUSH map"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/crush-map")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function rn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_modules"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,19,{links:1}),s["ɵqud"](603979776,20,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/mgr-modules"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[20,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Manager modules"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/mgr-modules")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function sn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_log"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,21,{links:1}),s["ɵqud"](603979776,22,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[22,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/logs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function on(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.prometheusAlertService.alerts.length)}))}function un(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"li",[["class","tc_submenuitem tc_submenuitem_monitoring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,23,{links:1}),s["ɵqud"](603979776,24,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,5,"a",[["routerLink","/monitoring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[24,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Monitoring"])),(t()(),s["ɵand"](16777216,null,null,1,null,on)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/monitoring"),t(e,9,0,n.prometheusAlertService.alerts.length>0)}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function dn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,"li",[["class","nav-item tc_menuitem_cluster"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,3,{links:1}),s["ɵqud"](603979776,4,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("cluster")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](7,0,null,null,21,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Je)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qe)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xe)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tn)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,en)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nn)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,an)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rn)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sn)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,un)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"cluster"!==n.displayedSubMenu),t(e,10,0,n.permissions.hosts.read),t(e,12,0,n.permissions.hosts.read),t(e,14,0,n.permissions.monitor.read),t(e,16,0,n.permissions.hosts.read),t(e,18,0,n.permissions.osd.read),t(e,20,0,n.permissions.configOpt.read),t(e,22,0,n.permissions.osd.read),t(e,24,0,n.permissions.configOpt.read),t(e,26,0,n.permissions.log.read),t(e,28,0,n.permissions.prometheus.read)}),(function(t,e){t(e,4,0,"cluster"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing)}))}function ln(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_pool"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,25,{links:1}),s["ɵqud"](603979776,26,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/pool"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[26,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Pools"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/pool")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function cn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_images"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,29,{links:1}),s["ɵqud"](603979776,30,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/rbd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[30,4],[28,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Images"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/rbd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function fn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)}))}function hn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors)}))}function gn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"li",[["class","tc_submenuitem tc_submenuitem_block_mirroring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,31,{links:1}),s["ɵqud"](603979776,32,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,7,"a",[["routerLink","/block/mirroring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[32,4],[28,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Mirroring"])),(t()(),s["ɵand"](16777216,null,null,1,null,fn)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hn)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/block/mirroring"),t(e,9,0,0!==(null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)),t(e,11,0,0!==(null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors))}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function pn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_iscsi"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,33,{links:1}),s["ɵqud"](603979776,34,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/iscsi"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[34,4],[28,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["iSCSI"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/iscsi")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function bn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"li",[["class","nav-item tc_menuitem_block"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,27,{links:1}),s["ɵqud"](603979776,28,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,4,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("block")&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Block"])),(t()(),s["ɵeld"](9,0,null,null,7,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](10,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cn)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gn)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pn)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,6,0,n.blockHealthColor()),t(e,10,0,!0,"block"!==n.displayedSubMenu),t(e,12,0,n.permissions.rbdImage.read&&e.parent.context.ngIf.rbd),t(e,14,0,n.permissions.rbdMirroring.read&&e.parent.context.ngIf.mirroring),t(e,16,0,n.permissions.iscsi.read&&e.parent.context.ngIf.iscsi)}),(function(t,e){t(e,4,0,"block"==e.component.displayedSubMenu),t(e,9,0,s["ɵnov"](e,10).isCollapse,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isCollapsed,s["ɵnov"](e,10).isCollapsing)}))}function mn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_nfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,35,{links:1}),s["ɵqud"](603979776,36,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/nfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[36,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["NFS"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/nfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function yn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_cephfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,37,{links:1}),s["ɵqud"](603979776,38,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/cephfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[38,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Filesystems"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/cephfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function vn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"li",[["class","nav-item tc_menuitem_rgw"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,39,{links:1}),s["ɵqud"](603979776,40,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("rgw")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"])),(t()(),s["ɵeld"](7,0,null,null,22,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵeld"](9,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_daemons"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](10,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,41,{links:1}),s["ɵqud"](603979776,42,{linksWithHrefs:1}),(t()(),s["ɵeld"](13,0,null,null,2,"a",[["routerLink","/rgw/daemon"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,14).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](14,671744,[[42,4],[40,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](16,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_users"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](17,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,43,{links:1}),s["ɵqud"](603979776,44,{linksWithHrefs:1}),(t()(),s["ɵeld"](20,0,null,null,2,"a",[["routerLink","/rgw/user"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](21,671744,[[44,4],[40,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Users"])),(t()(),s["ɵeld"](23,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_buckets"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](24,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,45,{links:1}),s["ɵqud"](603979776,46,{linksWithHrefs:1}),(t()(),s["ɵeld"](27,0,null,null,2,"a",[["routerLink","/rgw/bucket"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,28).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](28,671744,[[46,4],[40,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Buckets"]))],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"rgw"!==n.displayedSubMenu),t(e,10,0,"active"),t(e,14,0,"/rgw/daemon"),t(e,17,0,"active"),t(e,21,0,"/rgw/user"),t(e,24,0,"active"),t(e,28,0,"/rgw/bucket")}),(function(t,e){t(e,4,0,"rgw"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing),t(e,13,0,s["ɵnov"](e,14).target,s["ɵnov"](e,14).href),t(e,20,0,s["ɵnov"](e,21).target,s["ɵnov"](e,21).href),t(e,27,0,s["ɵnov"](e,28).target,s["ɵnov"](e,28).href)}))}function xn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"li",[["class","nav-item tc_menuitem_dashboard"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](2,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,1,{links:1}),s["ɵqud"](603979776,2,{linksWithHrefs:1}),(t()(),s["ɵeld"](5,0,null,null,11,"a",[["class","nav-link"],["routerLink","/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,[[2,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard"])),(t()(),s["ɵted"](-1,null,["  "])),(t()(),s["ɵeld"](10,0,null,null,6,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](12,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](13,1),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](15,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](16,1),(t()(),s["ɵand"](16777216,null,null,1,null,dn)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ln)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bn)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mn)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yn)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vn)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"active"),t(e,6,0,"/dashboard");var a=t(e,13,0,n.icons.health);t(e,12,0,a);var r=s["ɵunv"](e,15,0,t(e,16,0,s["ɵnov"](e.parent.parent,0),null==n.summaryData?null:n.summaryData.health_status));t(e,15,0,r),t(e,18,0,n.permissions.hosts.read||n.permissions.monitor.read||n.permissions.osd.read||n.permissions.configOpt.read||n.permissions.log.read||n.permissions.prometheus.read),t(e,20,0,n.permissions.pool.read),t(e,22,0,(n.permissions.rbdImage.read||n.permissions.rbdMirroring.read||n.permissions.iscsi.read)&&(e.context.ngIf.rbd||e.context.ngIf.mirroring||e.context.ngIf.iscsi)),t(e,24,0,n.permissions.nfs.read&&e.context.ngIf.nfs),t(e,26,0,n.permissions.cephfs.read&&e.context.ngIf.cephfs),t(e,28,0,n.permissions.rgw.read&&e.context.ngIf.rgw)}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function _n(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,2,null,xn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef]),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,s["ɵunv"](e,1,0,s["ɵnov"](e,2).transform(n.enabledFeature$)))}),null)}function Tn(t){return s["ɵvid"](0,[s["ɵpid"](0,ee,[]),(t()(),s["ɵeld"](1,0,null,null,1,"cd-pwd-expiration-notification",[],null,null,null,ce,oe)),s["ɵdid"](2,114688,null,0,se,[re.a,xt.a],null,null),(t()(),s["ɵeld"](3,0,null,null,1,"cd-notifications-sidebar",[],[[2,"active",null]],null,null,Ye,Ee)),s["ɵdid"](4,245760,null,0,ke,[gt.a,pt.a,Ae.a,Re,xt.a,Ce,s.NgZone,s.ChangeDetectorRef],null,null),(t()(),s["ɵeld"](5,0,null,null,15,"div",[["class","cd-navbar-top"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,14,"nav",[["class","navbar fixed-top navbar-expand-md navbar-dark cd-navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"button",[["class","btn btn-link py-0"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.showMenuSidebar=!r.showMenuSidebar)&&a),a}),null,null)),(t()(),s["ɵeld"](8,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-bars fa-2x"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"a",[["class","navbar-brand ml-2"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"img",[["alt","Ceph"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,4,"button",[["class","navbar-toggler"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.isCollapsed=!r.isCollapsed)&&a),a}),null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Toggle navigation"])),(t()(),s["ɵeld"](14,0,null,null,1,"span",[["class",""]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,0,"i",[["class","fa fa-navicon fa-lg"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,4,"div",[["class","collapse navbar-collapse"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](17,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{collapse:[0,"collapse"]},null),(t()(),s["ɵeld"](18,0,null,null,2,"ul",[["class","nav navbar-nav cd-navbar-utility my-2 my-md-0"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ke)),s["ɵdid"](20,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](21,0,null,null,14,"div",[["class","wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,8,"nav",[["id","sidebar"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](24,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](25,{active:0}),(t()(),s["ɵeld"](26,0,null,null,4,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,xe,ve)),s["ɵdid"](27,4440064,null,0,ye.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](28,0,null,0,2,"ul",[["class","list-unstyled components cd-navbar-primary"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,$e)),s["ɵdid"](30,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](31,0,null,null,4,"div",[["id","content"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](33,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](34,{active:0}),s["ɵncd"](null,0),(t()(),s["ɵand"](0,[["cd_utilities",2]],null,0,null,Ze)),(t()(),s["ɵand"](0,[["cd_menu",2]],null,0,null,_n))],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0),t(e,17,0,n.isCollapsed),t(e,20,0,s["ɵnov"](e,36));var a=t(e,25,0,!n.showMenuSidebar);t(e,24,0,a),t(e,27,0,n.simplebar),t(e,30,0,s["ɵnov"](e,37));var r=t(e,34,0,!n.showMenuSidebar);t(e,33,0,r)}),(function(t,e){t(e,3,0,s["ɵnov"](e,4).isSidebarOpened),t(e,16,0,s["ɵnov"](e,17).isCollapse,s["ɵnov"](e,17).isExpanded,s["ɵnov"](e,17).isExpanded,s["ɵnov"](e,17).isExpanded,s["ɵnov"](e,17).isCollapsed,s["ɵnov"](e,17).isCollapsing)}))}var On=n("LRne"),wn=n("HDdC"),Sn=n("Cfvw"),In=n("pLZG"),Nn=n("5+tZ"),Cn=n("l7GE"),Rn=n("ZUHj");class An{constructor(t,e){this.keySelector=t,this.flushes=e}call(t,e){return e.subscribe(new kn(t,this.keySelector,this.flushes))}}class kn extends Cn.a{constructor(t,e,n){super(t),this.keySelector=e,this.values=new Set,n&&this.add(Object(Rn.a)(this,n))}notifyNext(t,e,n,a,r){this.values.clear()}notifyError(t,e){this._error(t)}_next(t){this.keySelector?this._useKeySelector(t):this._finalizeNext(t,t)}_useKeySelector(t){let e;const{destination:n}=this;try{e=this.keySelector(t)}catch(a){return void n.error(a)}this._finalizeNext(e,t)}_finalizeNext(t,e){const{values:n}=this;n.has(t)||(n.add(t),this.destination.next(e))}}var En=n("128B");function Ln(t,e,n){return 0===n?[e]:(t.push(e),t)}function Dn(){return Object(En.a)(Ln,[])}var Pn=n("SxV6"),Mn=n("GyhO");class qn{resolve(t){const e=t.routeConfig.data,n=null===e.path?null:this.getFullPath(t),a=[{text:"string"==typeof e.breadcrumbs?e.breadcrumbs:e.breadcrumbs.text||e.text||n,path:n}];return Object(On.a)(a)}getFullPath(t){return t.pathFromRoot.reduce((t,e)=>t+e.url.reduce((t,e)=>t+"/"+e.path,""),"")}}class jn{constructor(t,e){this.router=t,this.injector=e,this.crumbs=[],this.finished=!1,this.defaultResolver=new qn,this.subscription=this.router.events.pipe(Object(In.a)(t=>t instanceof qt.e)).subscribe(()=>{this.finished=!1}),this.subscription=this.router.events.pipe(Object(In.a)(t=>t instanceof qt.d)).subscribe(()=>{var e;this._resolveCrumbs(t.routerState.snapshot.root).pipe(Object(Nn.a)(t=>t),(e=t=>t.text,t=>t.lift(new An(e,void 0))),Dn(),Object(Nn.a)(t=>{const e=this.postProcess(t);return this.wrapIntoObservable(e).pipe(Object(Pn.a)())})).subscribe(t=>{this.finished=!0,this.crumbs=t})})}ngOnDestroy(){this.subscription.unsubscribe()}_resolveCrumbs(t){let e;const n=t.routeConfig&&t.routeConfig.data;if(n&&n.breadcrumbs){let a;a=n.breadcrumbs.prototype instanceof qn?this.injector.get(n.breadcrumbs):this.defaultResolver;const r=a.resolve(t);e=this.wrapIntoObservable(r).pipe(Object(Pn.a)())}else e=Object(On.a)([]);return t.firstChild&&(e=e.pipe(function(...t){return e=>e.lift.call(Object(Mn.a)(e,...t))}(this._resolveCrumbs(t.firstChild)))),e}postProcess(t){const e=[];return t.forEach(t=>{const n=t.text.split("/");if(n.length>1){t.text=n[n.length-1];for(let t=0;t<n.length-1;t++)e.push({text:n[t],path:null})}e.push(t)}),e}isPromise(t){return t&&"function"==typeof t.then}wrapIntoObservable(t){return t instanceof wn.a?t:this.isPromise(t)?Object(Sn.a)(Promise.resolve(t)):Object(On.a)(t)}}var Fn=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.breadcrumb[_ngcontent-%COMP%]{padding:8px 0;background-color:transparent;border-radius:0;margin-top:8px}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{padding:0 5px 0 7px;color:#474544;font-family:ForkAwesome;content:""}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:#474544}']],data:{}});function Gn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[["preserveFragment",""]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,"",e.parent.context.$implicit.path)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,e.parent.context.$implicit.text)}))}function Vn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.text)}))}function zn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"li",[["class","breadcrumb-item"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](3,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Gn)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vn)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,e.context.last&&e.component.finished);t(e,2,0,"breadcrumb-item",n),t(e,5,0,!e.context.last&&null!==e.context.$implicit.path),t(e,7,0,e.context.last||null===e.context.$implicit.path)}),null)}function Bn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"ol",[["class","breadcrumb"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,zn)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.crumbs)}),null)}function Yn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Bn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.crumbs.length)}),null)}var Hn=n("978R"),Un=n("VXsX");const Wn=()=>Object.assign(new Hn.a,{container:"body"});class Kn{constructor(t,e,n){this.router=t,this.summaryService=e,this.taskManagerService=n,this.subs=new ft.a}ngOnInit(){this.subs.add(this.summaryService.startPolling()),this.subs.add(this.taskManagerService.init(this.summaryService))}ngOnDestroy(){this.subs.unsubscribe()}isDashboardPage(){return"/dashboard"===this.router.url}}var $n=s["ɵcrt"]({encapsulation:0,styles:[[".dashboard[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;padding:0}.container-fluid[_ngcontent-%COMP%]{overflow:auto}  #toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function Zn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"block-ui",[],null,null,null,P,D)),s["ɵdid"](1,114688,null,0,I,[S],null,null),(t()(),s["ɵeld"](2,0,null,0,9,"cd-navigation",[],[[2,"isPwdDisplayed",null]],null,null,Tn,We)),s["ɵdid"](3,245760,null,0,Ue,[xt.a,pt.a,He.a,Ce],null,null),(t()(),s["ɵeld"](4,0,null,0,7,"div",[["class","container-fluid h-100"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{dashboard:0}),(t()(),s["ɵeld"](8,0,null,null,1,"cd-breadcrumbs",[],null,null,null,Yn,Fn)),s["ɵdid"](9,180224,null,0,jn,[qt.m,s.Injector],null,null),(t()(),s["ɵeld"](10,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](11,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){var n=e.component;t(e,1,0),t(e,3,0);var a=t(e,7,0,n.isDashboardPage());t(e,6,0,"container-fluid h-100",a),t(e,11,0)}),(function(t,e){t(e,2,0,s["ɵnov"](e,3).isPwdDisplayed)}))}function Jn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-workbench-layout",[],null,null,null,Zn,$n)),s["ɵprd"](5120,null,Hn.a,Wn,[]),s["ɵdid"](2,245760,null,0,Kn,[qt.m,pt.a,Un.a],null,null)],(function(t,e){t(e,2,0)}),null)}var Qn=s["ɵccf"]("cd-workbench-layout",Kn,Jn,{},{},[]),Xn=n("pKUh"),ta=n("2ZVE"),ea=n("KOzp"),na=n("2uy1");class aa{constructor(){this.cardClass=""}}var ra=s["ɵcrt"]({encapsulation:0,styles:[[".card[_ngcontent-%COMP%]{height:100%;border:.5px solid #ddd;border-radius:3px;box-shadow:0 1px 1px rgba(3,3,3,.175);font-size:12px}@media screen and (min-width:320px){.card[_ngcontent-%COMP%]{font-size:calc(12px + 9 * ((100vw - 320px)/ 1728))}}@media screen and (min-width:2048px){.card[_ngcontent-%COMP%]{font-size:21px}}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]{padding-top:40px!important}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]   .card-title[_ngcontent-%COMP%]{position:absolute;left:0;top:0}.no-center[_ngcontent-%COMP%]{position:unset;top:unset;left:unset;transform:unset}.content-highlight[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function ia(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,e.component.link)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,n.cardTitle)}))}function sa(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" "," "]))],null,(function(t,e){t(e,0,0,e.component.cardTitle)}))}function oa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵeld"](3,0,null,null,8,"div",[["class","card-body d-flex align-items-center justify-content-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"h5",[["class","card-title m-4"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ia)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noLinkTitle",2]],null,0,null,sa)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-text text-center"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"card",n.cardClass),t(e,6,0,n.link,s["ɵnov"](e,7)),t(e,10,0,"card-text text-center",n.contentClass)}),null)}class ua{}var da=s["ɵcrt"]({encapsulation:0,styles:[[".info-group-title[_ngcontent-%COMP%]{margin:0 0 .5vw .5vw;font-size:21px}"]],data:{}});function la(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","info-group-title"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"div",[["class","row"]],null,null,null,null,null)),s["ɵncd"](null,0)],null,(function(t,e){t(e,2,0,e.component.groupTitle)}))}var ca=n("hrfs"),fa=n("MO+k"),ha=n("NEZu"),ga=n("Fgil"),pa=n("o4+5"),ba=function(t){return t.DEFAULT_RED="#ff7592",t.DEFAULT_BLUE="#1d699d",t.DEFAULT_ORANGE="#ffa500",t.DEFAULT_MAGENTA="#564d65",t.DEFAULT_GREEN="#00bb00",t}({});class ma{constructor(t,e){this.dimlessBinary=t,this.dimless=e,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new s.EventEmitter,this.chartConfig={chartType:"pie",dataset:[{label:null,borderWidth:0}],options:{legend:{display:!0,position:"right",labels:{usePointStyle:!0},onClick:(t,e)=>{this.onLegendClick(t,e)}},animation:{duration:0},tooltips:{enabled:!1},title:{display:!1}}},this.hiddenSlices=[]}ngOnInit(){fa.pluginService.register({beforeDraw:function(t){if(!t.options.center_text)return;const e=t.chart.width,n=t.chart.height,a=t.chart.ctx;a.restore();const r=(n/114).toFixed(2);a.font=r+"em sans-serif",a.textBaseline="middle";const i=t.options.center_text,s=Math.round((e-a.measureText(i).width)/2);a.fillText(i,s,n/2),a.save()}});const t=new ha.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",(t,e)=>e+t.caretY-t.height-10+"px");t.getBody=t=>this.getChartTooltipBody(t),this.chartConfig.options.tooltips.custom=e=>{t.customTooltips(e)},this.chartConfig.colors=[{backgroundColor:[ba.DEFAULT_RED,ba.DEFAULT_BLUE,ba.DEFAULT_ORANGE,ba.DEFAULT_GREEN,ba.DEFAULT_MAGENTA]}],J.merge(this.chartConfig,this.config),this.prepareFn.emit([this.chartConfig,this.data])}ngOnChanges(){this.prepareFn.emit([this.chartConfig,this.data]),this.hideSlices(),this.setChartSliceBorderWidth()}getChartTooltipBody(t){const e=t[0].split(": ");return this.showLabelAsTooltip?e[0]:(e[1]=this.isBytesData?this.dimlessBinary.transform(e[1]):this.dimless.transform(e[1]),e.join(": "))}setChartSliceBorderWidth(){let t=0;J.forEach(this.chartConfig.dataset[0].data,(function(e){e>0&&(t+=1)})),this.chartConfig.dataset[0].borderWidth=t>1?1:0}onLegendClick(t,e){t.stopPropagation(),this.hiddenSlices[e.index]=!e.hidden,this.ngOnChanges()}hideSlices(){J.forEach(this.chartConfig.dataset[0].data,(t,e)=>{this.hiddenSlices[e]&&(this.chartConfig.dataset[0].data[e]=void 0)})}}var ya=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;position:unset;width:100%;height:100%}.chart-canvas[_ngcontent-%COMP%]{position:unset;width:100%;height:100%;margin-left:auto;margin-right:auto;max-width:100%;max-height:100%}']],data:{}});function va(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvasRef:0}),s["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""],["class","chart-canvas"]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,ca.a,[s.ElementRef,ca.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chartConfig.dataset,n.chartConfig.labels,n.chartConfig.options,n.chartConfig.chartType,n.chartConfig.colors)}),null)}class xa{constructor(t){this.i18n=t}transform(t){return t?`${t.monmap.mons.length.toString()} (${this.i18n("quorum")} ${t.quorum.join(", ")})`:""}}var _a=n("GiVz");class Ta{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=0,n=0;J.each(t.osds,t=>{t.in&&e++,t.up&&n++});const a=[{content:`${t.osds.length} ${this.i18n("total")}`,class:""}];a.push({content:"",class:"card-text-line-break"}),a.push({content:`${n} ${this.i18n("up")}, ${e} ${this.i18n("in")}`,class:""});const r=t.osds.length-n,i=n-e;if(r>0||i>0){a.push({content:"",class:"card-text-line-break"});const t=r>0?`${r} ${this.i18n("down")}`:"",e=r>0&&i>0?", ":"",n=i>0?`${i} ${this.i18n("out")}`:"";a.push({content:`${t}${e}${n}`,class:"card-text-error"})}return a}}class Oa{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=this.i18n("n/a");const n=J.isUndefined(t.active_name)?"":`${this.i18n("active daemon")}: ${t.active_name}`;n.length>0&&(e="1");const a=t.standbys.map(t=>t.name).join(", "),r=a?`${this.i18n("standby daemons")}: ${a}`:"",i=t.standbys.length,s=[{content:`${e} ${this.i18n("active")}`,class:"popover-info",titleText:n}];return s.push({content:"",class:"card-text-line-break",titleText:""}),s.push({content:`${i} ${this.i18n("standby")}`,class:"popover-info",titleText:r}),s}}class wa{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e="",n="",a=0,r=0,i=0;J.each(t.standbys,()=>{a+=1}),t.standbys&&!t.filesystems?(e=`${a} ${this.i18n("up")}`,n=this.i18n("no filesystems")):0===t.filesystems.length?e=this.i18n("no filesystems"):(J.each(t.filesystems,t=>{J.each(t.mdsmap.info,t=>{"up:standby-replay"===t.state?i+=1:r+=1})}),e=`${r} ${this.i18n("active")}`,n=`${a+i} ${this.i18n("standby")}`);const s=t.standbys.map(t=>t.name).join(", "),o=s?`${this.i18n("standby daemons")}: ${s}`:"",u=t.filesystems?t.filesystems.length:0,d=Object.values(u>0?t.filesystems[0].mdsmap.info:{}).map(t=>t.name).join(", ");let l=d?`${this.i18n("active daemon")}: ${d}`:"";!r&&u>0&&(l=`${i} ${this.i18n("standbyReplay")}`);const c=[{content:e,class:"popover-info",titleText:l}];return n&&(c.push({content:"",class:"card-text-line-break",titleText:""}),c.push({content:n,class:"popover-info",titleText:o})),c}}class Sa{transform(t,e){return J.round(t,e)}}var Ia=n("aXbf");let Na=(()=>{class t{constructor(t){this.http=t}getFullHealth(){return this.http.get("api/health/full")}getMinimalHealth(){return this.http.get("api/health/minimal")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})();var Ca=n("2Vo4"),Ra=n("D0XW"),Aa=n("Y7HM");function ka(t){const{subscriber:e,counter:n,period:a}=t;e.next(n),this.schedule({subscriber:e,counter:n+1,period:a},a)}let Ea=(()=>{class t{constructor(t){this.ngZone=t,this.intervalDataSource=new Ca.a(null),this.intervalData$=this.intervalDataSource.asObservable();const e=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(e)}setRefreshInterval(t){this.intervalTime=t,sessionStorage.setItem("dashboard_interval",t.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.ngZone.runOutsideAngular(()=>{this.intervalSubscription=function(t=0,e=Ra.a){return(!Object(Aa.a)(t)||t<0)&&(t=0),e&&"function"==typeof e.schedule||(e=Ra.a),new wn.a(n=>(n.add(e.schedule(ka,t,{subscriber:n,counter:0,period:t})),n))}(this.intervalTime).subscribe(()=>this.ngZone.run(()=>{this.intervalDataSource.next(this.intervalTime)}))})}getRefreshInterval(){return this.intervalTime}ngOnDestroy(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](s.NgZone))},token:t,providedIn:"root"}),t})();var La=n("d+Og");class Da{constructor(t,e,n,a,r,i,s,o){this.healthService=t,this.i18n=e,this.authStorageService=n,this.pgCategoryService=a,this.featureToggles=r,this.refreshIntervalService=i,this.dimlessBinary=s,this.dimless=o,this.interval=new ft.a,this.icons=ht.a,this.rawCapacityChartConfig={options:{title:{display:!0,position:"bottom"}}},this.objectsChartConfig={options:{title:{display:!0,position:"bottom"}},colors:[{backgroundColor:[ba.DEFAULT_GREEN,ba.DEFAULT_MAGENTA,ba.DEFAULT_ORANGE,ba.DEFAULT_RED]}]},this.pgStatusChartConfig={colors:[{backgroundColor:[ba.DEFAULT_GREEN,ba.DEFAULT_BLUE,ba.DEFAULT_ORANGE,ba.DEFAULT_RED]}]},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}ngOnInit(){this.getHealth(),this.interval=this.refreshIntervalService.intervalData$.subscribe(()=>{this.getHealth()})}ngOnDestroy(){this.interval.unsubscribe()}getHealth(){this.healthService.getMinimalHealth().subscribe(t=>{this.healthData=t})}prepareReadWriteRatio(t){const e=[],n=[],a=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;e.push(`${this.i18n("Writes")} (${this.calcPercentage(this.healthData.client_perf.write_op_per_sec,a)}%)`),n.push(this.healthData.client_perf.write_op_per_sec),e.push(`${this.i18n("Reads")} (${this.calcPercentage(this.healthData.client_perf.read_op_per_sec,a)}%)`),n.push(this.healthData.client_perf.read_op_per_sec),t.dataset[0].data=n,t.labels=e}prepareRawUsage(t,e){const n=this.calcPercentage(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes),a=this.calcPercentage(e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes);t.dataset[0].data=[e.df.stats.total_used_raw_bytes,e.df.stats.total_avail_bytes],t.labels=[`${this.dimlessBinary.transform(e.df.stats.total_used_raw_bytes)} ${this.i18n("Used")} (${a}%)`,`${this.dimlessBinary.transform(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes)} ${this.i18n("Avail.")} (${n}%)`],t.options.title.text=`${this.dimlessBinary.transform(e.df.stats.total_bytes)} ${this.i18n("total")}`}preparePgStatus(t,e){const n={};let a=0;J.forEach(e.pg_info.statuses,(t,e)=>{const r=this.pgCategoryService.getTypeByStates(e);J.isUndefined(n[r])&&(n[r]=0),n[r]+=t,a+=t}),t.dataset[0].data=this.pgCategoryService.getAllTypes().map(t=>n[t]),t.labels=[`${this.i18n("Clean")} (${this.calcPercentage(n.clean,a)}%)`,`${this.i18n("Working")} (${this.calcPercentage(n.working,a)}%)`,`${this.i18n("Warning")} (${this.calcPercentage(n.warning,a)}%)`,`${this.i18n("Unknown")} (${this.calcPercentage(n.unknown,a)}%)`]}prepareObjects(t,e){const n=e.pg_info.object_stats.num_object_copies,a=n-e.pg_info.object_stats.num_objects_misplaced-e.pg_info.object_stats.num_objects_degraded-e.pg_info.object_stats.num_objects_unfound;t.labels=[`${this.i18n("Healthy")} (${this.calcPercentage(a,n)}%)`,`${this.i18n("Misplaced")} (${this.calcPercentage(e.pg_info.object_stats.num_objects_misplaced,n)}%)`,`${this.i18n("Degraded")} (${this.calcPercentage(e.pg_info.object_stats.num_objects_degraded,n)}%)`,`${this.i18n("Unfound")} (${this.calcPercentage(e.pg_info.object_stats.num_objects_unfound,n)}%)`],t.dataset[0].data=[a,e.pg_info.object_stats.num_objects_misplaced,e.pg_info.object_stats.num_objects_degraded,e.pg_info.object_stats.num_objects_unfound],t.options.title.text=`${this.dimless.transform(e.pg_info.object_stats.num_objects)} ${this.i18n("total")} (${this.dimless.transform(n)} ${this.i18n("replicas")})`,t.options.maintainAspectRatio=window.innerWidth>=375}isClientReadWriteChartShowable(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0}calcPercentage(t,e){return J.isNumber(t)&&J.isNumber(e)&&0!==e?Math.round(t/e*100):0}}var Pa=s["ɵcrt"]({encapsulation:0,styles:[['cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}  .pg-status-popover-wrapper{position:relative}  .pg-status-popover-wrapper .popover{position:absolute;width:116%;max-height:20vh;min-width:unset!important;max-width:unset!important}  .pg-status-popover-wrapper .popover .popover-body{max-width:100%;max-height:19vh;font-size:12px}.logs-link[_ngcontent-%COMP%]{text-align:center}.card-text-error[_ngcontent-%COMP%]{display:inline;color:red}.card-text-line-break[_ngcontent-%COMP%]:after{content:"\\a";white-space:pre}.popover-info[_ngcontent-%COMP%]:hover{cursor:pointer}']],data:{}});function Ma(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function qa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵted"](6,null,[": "," "]))],(function(t,e){var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent.parent.parent,0),e.context.$implicit.severity));t(e,3,0,n)}),(function(t,e){t(e,5,0,e.context.$implicit.type),t(e,6,0,e.context.$implicit.summary.message)}))}function ja(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ma)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,qa)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent.parent,7)),t(e,4,0,n.healthData.health.checks)}),null)}function Fa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵand"](0,[["healthChecks",2]],null,0,null,ja)),(t()(),s["ɵeld"](2,16777216,null,null,5,"div",[["class","info-card-content-clickable"],["container","body"],["containerClass","info-card-popover-cluster-status"],["placement","bottom"],["triggers",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).toggle()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](5,1),s["ɵdid"](6,212992,[["healthChecksTarget",4]],0,ea.c,[ea.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,na.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"],container:[3,"container"],containerClass:[4,"containerClass"]},null),(t()(),s["ɵted"](7,null,[" "," "])),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,4,0,a),t(e,6,0,s["ɵnov"](e,1),"bottom","","body","info-card-popover-cluster-status")}),(function(t,e){t(e,7,0,e.component.healthData.health.status)}))}function Ga(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,[" "," "]))],(function(t,e){var n=e.component,a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,3,0,a)}),(function(t,e){t(e,5,0,e.component.healthData.health.status)}))}function Va(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Cluster Status"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Fa)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ga)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Cluster Status","content-highlight"),t(e,3,0,(null==n.healthData.health?null:null==n.healthData.health.checks?null:n.healthData.health.checks.length)>0),t(e,5,0,!(null!=n.healthData.health&&null!=n.healthData.health.checks&&n.healthData.health.checks.length))}),null)}function za(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Monitors"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/monitor"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Monitors","/monitor","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,1),n.healthData.mon_status));t(e,2,0,a)}))}function Ba(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,3,0,e.context.$implicit.content)}))}function Ya(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","OSDs"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/osd"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ba)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"OSDs","/osd","content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function Ha(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function Ua(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-info-card",[["cardTitle","Manager Daemons"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,Ha)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵppd"](4,1)],(function(t,e){var n=e.component;t(e,1,0,"Manager Daemons","content-highlight");var a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent,3),n.healthData.mgr_map));t(e,3,0,a)}),null)}function Wa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Hosts"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/hosts"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Hosts","/hosts","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.hosts)}))}function Ka(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Object Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/rgw/daemon"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Object Gateways","/rgw/daemon","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.rgw)}))}function $a(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function Za(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Metadata Servers"],["class","cd-status-card"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,$a)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"Metadata Servers",(e.context.ngIf.length>1?"text-area-size-2":"")+" content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function Ja(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"cd-info-card",[["cardTitle","iSCSI Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/block/iscsi"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "])),(t()(),s["ɵeld"](3,0,null,0,0,"span",[["class","card-text-line-break"]],null,null,null,null,null)),(t()(),s["ɵted"](4,0,[" "," up, "])),(t()(),s["ɵeld"](5,0,null,0,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{"card-text-error":0}),(t()(),s["ɵted"](9,null,[""," down"]))],(function(t,e){var n=e.component;t(e,1,0,"iSCSI Gateways","/block/iscsi","content-highlight");var a=t(e,8,0,n.healthData.iscsi_daemons.down>0);t(e,7,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.healthData.iscsi_daemons.up+n.healthData.iscsi_daemons.down),t(e,4,0,n.healthData.iscsi_daemons.up),t(e,9,0,n.healthData.iscsi_daemons.down)}))}function Qa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,19,"cd-info-group",[["groupTitle","Status"]],null,null,null,la,da)),s["ɵdid"](1,49152,null,0,ua,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Va)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,za)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,Ya)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](8,1),(t()(),s["ɵand"](16777216,null,0,1,null,Ua)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Wa)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ka)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,Za)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](17,1),(t()(),s["ɵand"](16777216,null,0,1,null,Ja)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Status"),t(e,3,0,null==n.healthData.health?null:n.healthData.health.status),t(e,5,0,n.healthData.mon_status);var a=s["ɵunv"](e,7,0,t(e,8,0,s["ɵnov"](e.parent.parent,2),n.healthData.osd_map));t(e,7,0,a),t(e,10,0,n.healthData.mgr_map),t(e,12,0,null!=n.healthData.hosts),t(e,14,0,e.parent.context.ngIf.rgw&&null!=n.healthData.rgw);var r=s["ɵunv"](e,16,0,t(e,17,0,s["ɵnov"](e.parent.parent,4),e.parent.context.ngIf.cephfs&&n.healthData.fs_map));t(e,16,0,r),t(e,19,0,e.parent.context.ngIf.iscsi&&null!=n.healthData.iscsi_daemons)}),null)}function Xa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client IOPS"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,2)],(function(t,e){t(e,1,0,"Client IOPS","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,5),n.healthData.client_perf.read_op_per_sec+n.healthData.client_perf.write_op_per_sec,1));t(e,2,0,a)}))}function tr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client Throughput"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Client Throughput","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,6),n.healthData.client_perf.read_bytes_sec+n.healthData.client_perf.write_bytes_sec))+"/s";t(e,2,0,a)}))}function er(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareReadWriteRatio(n[0],n[1])&&a),a}),va,ya)),s["ɵdid"](1,638976,null,0,ma,[ga.a,pa.a],{data:[0,"data"]},{prepareFn:"prepareFn"})],(function(t,e){t(e,1,0,e.component.healthData)}),null)}function nr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" N/A "]))],null,null)}function ar(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Client Read/Write"],["class","cd-performance-card"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,er)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,nr)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Client Read/Write",n.isClientReadWriteChartShowable()?"content-chart":"content-highlight"),t(e,3,0,n.isClientReadWriteChartShowable()),t(e,5,0,!n.isClientReadWriteChartShowable())}),null)}function rr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Recovery Throughput"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Recovery Throughput","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,6),n.healthData.client_perf.recovering_bytes_per_sec))+"/s";t(e,2,0,a)}))}function ir(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Scrub"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Scrub","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.scrub_status)}))}function sr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"cd-info-group",[["groupTitle","Performance"]],null,null,null,la,da)),s["ɵdid"](1,49152,null,0,ua,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Xa)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,tr)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ar)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,rr)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ir)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance"),t(e,3,0,n.healthData.client_perf),t(e,5,0,n.healthData.client_perf),t(e,7,0,n.healthData.client_perf),t(e,9,0,n.healthData.client_perf),t(e,11,0,n.healthData.scrub_status)}),null)}function or(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Pools"],["class","cd-capacity-card order-md-1 order-lg-4 order-xl-1"],["contentClass","content-highlight"],["link","/pool"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Pools","/pool","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.pools.length)}))}function ur(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Raw Capacity"],["class","cd-capacity-card order-md-3 order-lg-1 order-xl-2"],["contentClass","content-chart"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareRawUsage(n[0],n[1])&&a),a}),va,ya)),s["ɵdid"](3,638976,null,0,ma,[ga.a,pa.a],{data:[0,"data"],config:[1,"config"],isBytesData:[2,"isBytesData"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Raw Capacity","content-chart"),t(e,3,0,n.healthData,n.rawCapacityChartConfig,!0)}),null)}function dr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Objects"],["class","cd-capacity-card order-md-4 order-lg-2 order-xl-3"],["contentClass","content-chart"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareObjects(n[0],n[1])&&a),a}),va,ya)),s["ɵdid"](3,638976,null,0,ma,[ga.a,pa.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Objects","content-chart"),t(e,3,0,n.healthData,n.objectsChartConfig)}),null)}function lr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","PGs per OSD"],["class","cd-capacity-card order-md-2 order-lg-5 order-xl-4"],["contentClass","content-highlight"]],null,null,null,oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"PGs per OSD","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,7),n.healthData.pg_info.pgs_per_osd));t(e,2,0,a)}))}function cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function fr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit.key,e.context.$implicit.value)}))}function hr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,cr)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,fr)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent,7)),t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(n.healthData.pg_info.statuses)))}),null)}function gr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"cd-info-card",[["cardTitle","PG Status"],["class","cd-capacity-card order-md-5 order-lg-3 order-xl-5"],["contentClass","content-chart"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).toggle()&&a),a}),oa,ra)),s["ɵdid"](1,49152,null,0,aa,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](0,[["pgStatus",2]],0,0,null,hr)),(t()(),s["ɵeld"](3,0,null,0,4,"div",[["class","pg-status-popover-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,3,"div",[["placement","bottom"],["triggers",""]],null,null,null,null,null)),s["ɵdid"](5,212992,[["pgStatusTarget",4]],0,ea.c,[ea.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,na.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"]},null),(t()(),s["ɵeld"](6,0,null,null,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.preparePgStatus(n[0],n[1])&&a),a}),va,ya)),s["ɵdid"](7,638976,null,0,ma,[ga.a,pa.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"PG Status","content-chart"),t(e,5,0,s["ɵnov"](e,2),"bottom",""),t(e,7,0,n.healthData,n.pgStatusChartConfig)}),null)}function pr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"cd-info-group",[["groupTitle","Capacity"]],null,null,null,la,da)),s["ɵdid"](1,49152,null,0,ua,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,or)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ur)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,dr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,lr)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,gr)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Capacity"),t(e,3,0,n.healthData.pools),t(e,5,0,n.healthData.df),t(e,7,0,null!=(null==n.healthData.pg_info?null:null==n.healthData.pg_info.object_stats?null:n.healthData.pg_info.object_stats.num_objects)),t(e,9,0,n.healthData.pg_info),t(e,11,0,n.healthData.pg_info)}),null)}function br(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"p",[["class","logs-link"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,[" See "])),(t()(),s["ɵeld"](7,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](8,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"])),(t()(),s["ɵted"](-1,null,[" for more details."]))],(function(t,e){var n=t(e,5,0,e.component.icons.infoCircle);t(e,4,0,n),t(e,8,0,"/logs")}),(function(t,e){t(e,7,0,s["ɵnov"](e,8).target,s["ɵnov"](e,8).href)}))}function mr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,br)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.permissions.log.read)}),null)}function yr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"div",[["class","container-fluid"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Qa)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sr)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pr)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logsLink",2]],null,0,null,mr))],(function(t,e){var n=e.component;t(e,2,0,(null==n.healthData.health?null:n.healthData.health.status)||n.healthData.mon_status||n.healthData.osd_map||n.healthData.mgr_map||null!=n.healthData.hosts||null!=n.healthData.rgw||n.healthData.fs_map||null!=n.healthData.iscsi_daemons),t(e,4,0,n.healthData.client_perf||n.healthData.scrub_status),t(e,6,0,n.healthData.pools||n.healthData.df||n.healthData.pg_info)}),null)}function vr(t){return s["ɵvid"](0,[s["ɵpid"](0,ee,[]),s["ɵpid"](0,xa,[_a.a]),s["ɵpid"](0,Ta,[_a.a]),s["ɵpid"](0,Oa,[_a.a]),s["ɵpid"](0,wa,[_a.a]),s["ɵpid"](0,Sa,[]),s["ɵpid"](0,ga.a,[Ia.a]),s["ɵpid"](0,pa.a,[Ia.a]),(t()(),s["ɵand"](16777216,null,null,2,null,yr)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,9,0,s["ɵunv"](e,9,0,s["ɵnov"](e,10).transform(n.healthData&&n.enabledFeature$)))}),null)}class xr{constructor(t){this.refreshIntervalService=t,this.intervalList={"5 s":5e3,"10 s":1e4,"15 s":15e3,"30 s":3e4,"1 min":6e4,"3 min":18e4,"5 min":3e5},this.intervalKeys=Object.keys(this.intervalList)}ngOnInit(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3}changeRefreshInterval(t){this.refreshIntervalService.setRefreshInterval(t)}}var _r=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Tr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){var n=e.component;t(e,1,0,n.intervalList[e.context.$implicit]),t(e,2,0,n.intervalList[e.context.$implicit])}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Or(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,12,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,11,"div",[["class","float-right d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"label",[["class","col-form-label my-0 mx-2"],["for","refreshInterval"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Refresh"])),(t()(),s["ɵeld"](5,0,null,null,8,"select",[["class","form-control custom-select"],["id","refreshInterval"],["name","refreshInterval"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,6).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,6).onTouched()&&a),"change"===e&&(a=!1!==r.changeRefreshInterval(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedInterval=n)&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](8,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](10,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](11,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Tr)),s["ɵdid"](13,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,8,0,"refreshInterval",n.selectedInterval),t(e,13,0,n.intervalKeys)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending,s["ɵnov"](e,11).validClass,s["ɵnov"](e,11).invalidClass)}))}class wr{constructor(){this.hasGrafana=!1}ngOnInit(){}}var Sr=s["ɵcrt"]({encapsulation:0,styles:[["div[_ngcontent-%COMP%]{padding-top:20px}"]],data:{}});function Ir(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-health",[],null,null,null,vr,Pa)),s["ɵdid"](5,245760,null,0,Da,[Na,_a.a,xt.a,La.a,He.a,Ea,ga.a,pa.a],null,null),(t()(),s["ɵeld"](6,0,null,0,1,"tab",[["heading","Statistics"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null)],(function(t,e){t(e,3,0,"Health"),t(e,5,0),t(e,7,0,"Statistics")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function Nr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-health",[],null,null,null,vr,Pa)),s["ɵdid"](1,245760,null,0,Da,[Na,_a.a,xt.a,La.a,He.a,Ea,ga.a,pa.a],null,null)],(function(t,e){t(e,1,0)}),null)}function Cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-refresh-selector",[],null,null,null,Or,_r)),s["ɵdid"](2,114688,null,0,xr,[Ea],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Ir)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nr)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.hasGrafana),t(e,6,0,!n.hasGrafana)}),null)}function Rr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-dashboard",[],null,null,null,Cr,Sr)),s["ɵdid"](1,114688,null,0,wr,[],null,null)],(function(t,e){t(e,1,0)}),null)}var Ar=s["ɵccf"]("cd-dashboard",wr,Rr,{},{},[]),kr=n("a278"),Er=n("insk"),Lr=n("cUpR"),Dr=n("25BL"),Pr=n("uIqm"),Mr=n("NUGo"),qr=n("S7zO"),jr=n("DqMs"),Fr=n("/NlG");class Gr{constructor(t,e){this.cephReleaseNamePipe=t,this.summaryService=e}ngOnInit(){const t=this.summaryService.subscribe(e=>{if(!e)return;const n=this.cephReleaseNamePipe.transform(e.version);this.docsUrl=`http://docs.ceph.com/docs/${n}/mgr/orchestrator/`,setTimeout(()=>{t.unsubscribe()},0)})}}var Vr=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function zr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Orchestrator is not available. Please consult the "])),(t()(),s["ɵeld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵted"](-1,0,[" on how to configure and enable the functionality."]))],(function(t,e){t(e,1,0,"info")}),(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}let Br=(()=>{class t{constructor(t){this.http=t,this.url="api/orchestrator"}status(){return this.http.get(`${this.url}/status`)}identifyDevice(t,e,n){return this.http.post(`${this.url}/identify_device`,{hostname:t,device:e,duration:n})}inventoryList(t){const e=t?{params:(new X.h).set("hostname",t)}:{};return this.http.get(`${this.url}/inventory`,e)}inventoryDeviceList(t){return this.inventoryList(t).pipe(Object(Nn.a)(t=>{const e=J.flatMap(t,t=>t.devices.map(e=>(e.hostname=t.name,e.uid=e.device_id?e.device_id:`${e.hostname}-${e.path}`,e)));return Object(On.a)(e)}))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})();var Yr=n("Rf2I"),Hr=n("x38r"),Ur=n("vCyI");class Wr{constructor(t,e,n,a,r,i){this.authStorageService=t,this.dimlessBinary=e,this.i18n=n,this.modalService=a,this.notificationService=r,this.orchService=i,this.devices=[],this.hiddenColumns=[],this.filterColumns=["hostname","human_readable_type","available","sys_api.vendor","sys_api.model","sys_api.size"],this.selectionType=void 0,this.filterChange=new s.EventEmitter,this.fetchInventory=new s.EventEmitter,this.icons=ht.a,this.columns=[],this.selection=new Ur.a}ngOnInit(){this.permission=this.authStorageService.getPermissions().osd,this.tableActions=[{permission:"update",icon:ht.a.show,click:()=>this.identifyDevice(),name:this.i18n("Identify"),disable:()=>!this.selection.hasSingleSelection,canBePrimary:t=>!t.hasSingleSelection,visible:()=>J.isString(this.selectionType)}];const t=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Device path"),prop:"path",flexGrow:1},{name:this.i18n("Type"),prop:"human_readable_type",flexGrow:1,cellTransformation:Hr.a.badge,customTemplateConfig:{map:{hdd:{value:"HDD",class:"badge-hdd"},ssd:{value:"SSD",class:"badge-ssd"}}}},{name:this.i18n("Available"),prop:"available",flexGrow:1},{name:this.i18n("Vendor"),prop:"sys_api.vendor",flexGrow:1},{name:this.i18n("Model"),prop:"sys_api.model",flexGrow:1},{name:this.i18n("Size"),prop:"sys_api.size",flexGrow:1,pipe:this.dimlessBinary},{name:this.i18n("OSDs"),prop:"osd_ids",flexGrow:1,cellTransformation:Hr.a.badge,customTemplateConfig:{class:"badge-dark",prefix:"osd."}}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),J.forEach(this.filterColumns,t=>{const e=J.find(this.columns,{prop:t});e&&(e.filterable=!0)}),this.fetchInventory.observers.length>0&&(this.fetchInventorySub=this.table.fetchData.subscribe(()=>{this.fetchInventory.emit()}))}ngOnDestroy(){this.fetchInventorySub&&this.fetchInventorySub.unsubscribe()}onColumnFiltersChanged(t){this.filterChange.emit(t)}updateSelection(t){this.selection=t}identifyDevice(){const t=this.selection.first(),e=t.hostname,n=t.path||t.device_id;this.modalService.show(Yr.a,{initialState:{titleText:this.i18n("Identify device {{device}}",{device:n}),message:this.i18n("Please enter the duration how long to blink the LED."),fields:[{type:"select",name:"duration",value:300,required:!0,options:[{text:this.i18n("1 minute"),value:60},{text:this.i18n("2 minutes"),value:120},{text:this.i18n("5 minutes"),value:300},{text:this.i18n("10 minutes"),value:600},{text:this.i18n("15 minutes"),value:900}]}],submitButtonText:this.i18n("Execute"),onSubmit:t=>{this.orchService.identifyDevice(e,n,t.duration).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n("Identifying '{{device}}' started on host '{{hostname}}'",{hostname:e,device:n}))})}}})}}var Kr=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}"]],data:{}});function $r(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","uid"]],null,[[null,"updateSelection"],[null,"columnFiltersChanged"]],(function(t,e,n){var a=!0,r=t.component;return"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"columnFiltersChanged"===e&&(a=!1!==r.onColumnFiltersChanged(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](2,2867200,[[1,4]],0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],searchField:[3,"searchField"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{updateSelection:"updateSelection",columnFiltersChanged:"columnFiltersChanged"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](4,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.devices,n.columns,"flex",!1,!1,"uid",!0,n.selectionType),t(e,4,0,n.permission,n.selection,n.tableActions)}),null)}class Zr{constructor(t){this.orchService=t,this.icons=ht.a,this.hasOrchestrator=!1,this.devices=[]}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,t.available&&this.getInventory()})}ngOnChanges(){this.hasOrchestrator&&(this.devices=[],this.getInventory())}getInventory(){""!==this.hostname&&this.orchService.inventoryDeviceList(this.hostname).subscribe(t=>{this.devices=t},()=>{this.devices=[]})}refresh(){this.getInventory()}}var Jr=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Qr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,zr,Vr)),s["ɵdid"](1,114688,null,0,Gr,[vt.a,pt.a],null,null)],(function(t,e){t(e,1,0)}),null)}function Xr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Devices"])),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"cd-inventory-devices",[["selectionType","single"]],null,[[null,"fetchInventory"]],(function(t,e,n){var a=!0;return"fetchInventory"===e&&(a=!1!==t.component.refresh()&&a),a}),$r,Kr)),s["ɵdid"](6,245760,null,0,Wr,[xt.a,ga.a,_a.a,Lt.b,gt.a,Br],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],selectionType:[2,"selectionType"]},{fetchInventory:"fetchInventory"}),s["ɵpad"](7,1)],(function(t,e){var n=e.component,a=n.devices,r=void 0===n.hostname?s["ɵEMPTY_ARRAY"]:t(e,7,0,"hostname");t(e,6,0,a,r,"single")}),null)}function ti(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Qr)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,!n.hasOrchestrator),t(e,3,0,n.hasOrchestrator)}),null)}function ei(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-inventory",[],null,null,null,ti,Jr)),s["ɵdid"](1,638976,null,0,Zr,[Br],null,null)],(function(t,e){t(e,1,0)}),null)}var ni=s["ɵccf"]("cd-inventory",Zr,ei,{hostname:"hostname"},{},[]);let ai=(()=>{class t{constructor(t){this.http=t,this.url="api/service"}list(t){const e=t?{params:(new X.h).set("service_name",t)}:{};return this.http.get(this.url,e)}getDaemons(t){return this.http.get(`${this.url}/${t}/daemons`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})(),ri=(()=>{class t{constructor(){}calculateAdditionalData(t){if(!t.life_expectancy_min||!t.life_expectancy_max)return t.state="unknown",t;const e=t=>!!Number.parseFloat(t),n=(t,n)=>t&&n&&e(t)&&e(n)?ge.duration(ge(t).diff(ge(n))).asWeeks():null,a=ge.duration(ge(ge.now()).diff(ge(t.life_expectancy_stamp))).asWeeks(),r=n(t.life_expectancy_max,t.life_expectancy_stamp),i=n(t.life_expectancy_min,t.life_expectancy_stamp);return t.state=a>1?"stale":null!==r&&r<=2?"bad":null!==i&&i<=4?"warning":"good",t.life_expectancy_weeks={max:null!==r?Math.round(r):null,min:null!==i?Math.round(i):null},t}readable(t){return t.readableDaemons=t.daemons.join(" "),t}prepareDevice(t){return this.readable(this.calculateAdditionalData(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})(),ii=(()=>{class t{constructor(t,e){this.http=t,this.deviceService=e,this.baseURL="api/host"}list(){return this.http.get(this.baseURL)}create(t){return this.http.post(this.baseURL,{hostname:t},{observe:"response"})}delete(t){return this.http.delete(`${this.baseURL}/${t}`,{observe:"response"})}getDevices(t){return this.http.get(`${this.baseURL}/${t}/devices`).pipe(Object(Oe.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}getSmartData(t){return this.http.get(`${this.baseURL}/${t}/smart`)}getDaemons(t){return this.http.get(`${this.baseURL}/${t}/daemons`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](ri))},token:t,providedIn:we.a}),t})();class si{constructor(t,e,n,a){this.i18n=t,this.hostService=e,this.cephServiceService=n,this.orchService=a,this.daemons=[],this.columns=[],this.hasOrchestrator=!1}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1,filterable:!0},{name:this.i18n("Daemon type"),prop:"daemon_type",flexGrow:1,filterable:!0},{name:this.i18n("Daemon ID"),prop:"daemon_id",flexGrow:1,filterable:!0},{name:this.i18n("Container ID"),prop:"container_id",flexGrow:3,filterable:!0,cellTransformation:Hr.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Container Image name"),prop:"container_image_name",flexGrow:3,filterable:!0},{name:this.i18n("Container Image ID"),prop:"container_image_id",flexGrow:3,filterable:!0,cellTransformation:Hr.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Version"),prop:"version",flexGrow:1,filterable:!0},{name:this.i18n("Status"),prop:"status_desc",flexGrow:1,filterable:!0,cellTemplate:this.statusTpl},{name:this.i18n("Last Refreshed"),prop:"last_refresh",flexGrow:2}],this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available})}ngOnChanges(){J.isUndefined(this.daemonsTable)||this.daemonsTable.reloadData()}ngAfterViewInit(){this.daemonsTableTplsSub=this.daemonsTableTpls.changes.subscribe(t=>{this.daemonsTable=t.first})}ngOnDestroy(){this.daemonsTableTplsSub&&this.daemonsTableTplsSub.unsubscribe()}getStatusClass(t){return J.get({"-1":"badge-danger",0:"badge-warning",1:"badge-success"},t,"badge-dark")}getDaemons(t){let e;if(this.hostname)e=this.hostService.getDaemons(this.hostname);else{if(!this.serviceName)return void(this.daemons=[]);e=this.cephServiceService.getDaemons(this.serviceName)}e.subscribe(t=>{this.daemons=t},()=>{this.daemons=[],t.error()})}}var oi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ui(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,zr,Vr)),s["ɵdid"](1,114688,null,0,Gr,[vt.a,pt.a],null,null)],(function(t,e){t(e,1,0)}),null)}function di(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getDaemons(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](1,2867200,[[2,4],["daemonsTable",4]],0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,1,0,n.daemons,n.columns,"flex",6e4)}),null)}function li(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",e.component.getStatusClass(e.context.row.status))}),(function(t,e){t(e,3,0,e.context.row.status_desc)}))}function ci(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{statusTpl:0}),s["ɵqud"](671088640,2,{daemonsTableTpls:1}),(t()(),s["ɵand"](16777216,null,null,1,null,ui)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,di)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["statusTpl",2]],null,0,null,li))],(function(t,e){var n=e.component;t(e,3,0,!n.hasOrchestrator),t(e,5,0,n.hasOrchestrator)}),null)}var fi=n("sLuX"),hi=n("FSuO"),gi=n("QC43"),pi=n("XFyV");let bi=(()=>{class t{constructor(t,e,n){this.http=t,this.i18n=e,this.deviceService=n,this.path="api/osd",this.osdRecvSpeedModalPriorities={KNOWN_PRIORITIES:[{name:null,text:this.i18n("-- Select the priority --"),values:{osd_max_backfills:null,osd_recovery_max_active:null,osd_recovery_max_single_start:null,osd_recovery_sleep:null}},{name:"low",text:this.i18n("Low"),values:{osd_max_backfills:1,osd_recovery_max_active:1,osd_recovery_max_single_start:1,osd_recovery_sleep:.5}},{name:"default",text:this.i18n("Default"),values:{osd_max_backfills:1,osd_recovery_max_active:3,osd_recovery_max_single_start:1,osd_recovery_sleep:0}},{name:"high",text:this.i18n("High"),values:{osd_max_backfills:4,osd_recovery_max_active:4,osd_recovery_max_single_start:4,osd_recovery_sleep:0}}]}}create(t){const e={method:"drive_groups",data:t,tracking_id:J.join(J.map(t,"service_id"),", ")};return this.http.post(this.path,e,{observe:"response"})}getList(){return this.http.get(`${this.path}`)}getDetails(t){return this.http.get(`${this.path}/${t}`)}getSmartData(t){return this.http.get(`${this.path}/${t}/smart`)}scrub(t,e){return this.http.post(`${this.path}/${t}/scrub?deep=${e}`,null)}getFlags(){return this.http.get(`${this.path}/flags`)}updateFlags(t){return this.http.put(`${this.path}/flags`,{flags:t})}markOut(t){return this.http.post(`${this.path}/${t}/mark_out`,null)}markIn(t){return this.http.post(`${this.path}/${t}/mark_in`,null)}markDown(t){return this.http.post(`${this.path}/${t}/mark_down`,null)}reweight(t,e){return this.http.post(`${this.path}/${t}/reweight`,{weight:e})}update(t,e){return this.http.put(`${this.path}/${t}`,{device_class:e})}markLost(t){return this.http.post(`${this.path}/${t}/mark_lost`,null)}purge(t){return this.http.post(`${this.path}/${t}/purge`,null)}destroy(t){return this.http.post(`${this.path}/${t}/destroy`,null)}delete(t,e){const n=e?{params:(new X.h).set("force","true")}:{};return n.observe="response",this.http.delete(`${this.path}/${t}`,n)}safeToDestroy(t){return this.http.get(`${this.path}/safe_to_destroy?ids=${t}`)}safeToDelete(t){return this.http.get(`${this.path}/safe_to_delete?svc_ids=${t}`)}getDevices(t){return this.http.get(`${this.path}/${t}/devices`).pipe(Object(Oe.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](_a.a),s["ɵɵinject"](ri))},token:t,providedIn:we.a}),t})();class mi{constructor(t,e,n){this.i18n=t,this.osdService=e,this.hostService=n,this.osdId=null,this.hostname=null,this.loading=!1,this.incompatible=!1,this.error=!1,this.data={}}isSmartError(t){return void 0!==J.get(t,"error")}isNvmeSmartData(t){return"nvme"===J.get(t,"device.protocol","").toLowerCase()}isHddSmartData(t){return"ata"===J.get(t,"device.protocol","").toLowerCase()}fetchData(t){const e={};J.each(t,(t,n)=>{if(this.isSmartError(t)){let a="";return a=this.i18n(-22===t.smartctl_error_code?"Smartctl has received an unknown argument (error code {{code}}). You may be using an incompatible version of smartmontools. Version >= 7.0 of smartmontools is required to successfully retrieve data.":"An error with error code {{code}} occurred.",{code:t.smartctl_error_code}),void(e[n]={error:t.error,smartctl_error_code:t.smartctl_error_code,smartctl_output:t.smartctl_output,userMessage:a,device:t.dev,identifier:t.nvme_vendor})}1!==t.json_format_version[0]?this.incompatible=!0:this.isHddSmartData(t)?e[n]=this.extractHddData(t):this.isNvmeSmartData(t)&&(e[n]=this.extractNvmeData(t))}),this.data=e,this.loading=!1}extractNvmeData(t){return{info:J.omitBy(t,(t,e)=>["nvme_smart_health_information_log"].includes(e)),smart:{nvmeData:t.nvme_smart_health_information_log},device:t.device.name,identifier:t.serial_number}}extractHddData(t){const e=J.omitBy(t,(t,e)=>["ata_smart_attributes","ata_smart_selective_self_test_log","ata_smart_data"].includes(e));return{info:e,smart:{attributes:t.ata_smart_attributes,data:t.ata_smart_data},device:e.device.name,identifier:e.serial_number}}updateData(){this.loading=!0,null!==this.osdId?this.osdService.getSmartData(this.osdId).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1}):null!==this.hostname&&this.hostService.getSmartData(this.hostname).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1})}ngOnInit(){this.smartDataColumns=[{prop:"id",name:this.i18n("ID")},{prop:"name",name:this.i18n("Name")},{prop:"raw.value",name:this.i18n("Raw")},{prop:"thresh",name:this.i18n("Threshold")},{prop:"value",name:this.i18n("Value")},{prop:"when_failed",name:this.i18n("When Failed")},{prop:"worst",name:this.i18n("Worst")}]}ngOnChanges(t){this.data={},t.osdId?this.osdId=t.osdId.currentValue:t.hostname&&(this.hostname=t.hostname.currentValue),this.updateData()}}var yi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function vi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Failed to retrieve SMART data."]))],(function(t,e){t(e,1,0,"error")}),null)}function xi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The data received has the JSON format version 2.x and is currently incompatible with the dashboard."]))],(function(t,e){t(e,1,0,"warning")}),null)}function _i(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available."]))],(function(t,e){t(e,1,0,"info")}),null)}function Ti(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-error"],["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](2,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](3,0,["",""]))],(function(t,e){t(e,2,0,"warning")}),(function(t,e){t(e,3,0,e.parent.context.$implicit.value.userMessage)}))}function Oi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-passed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](2,114688,null,0,Fr.a,[_a.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["passed"]))],(function(t,e){t(e,2,0,"SMART overall-health self-assessment test result","info","slim")}),null)}function wi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-failed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["failed"]))],(function(t,e){t(e,1,0,"SMART overall-health self-assessment test result","warning","slim")}),null)}function Si(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["updateSelectionOnRefresh","never"]],null,null,null,Dr.b,Dr.a)),s["ɵdid"](1,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],updateSelectionOnRefresh:[2,"updateSelectionOnRefresh"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.attributes.table,e.component.smartDataColumns,"never")}),null)}function Ii(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["updateSelectionOnRefresh","never"]],null,null,null,fi.b,fi.a)),s["ɵdid"](1,638976,null,0,hi.a,[be.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.nvmeData,!0)}),null)}function Ni(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available for this device."]))],(function(t,e){t(e,1,0,"info")}),null)}function Ci(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Oi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["selfTestFailed",2]],null,0,null,wi)),(t()(),s["ɵeld"](3,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](4,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](5,0,null,0,3,"tab",[["heading","Device Information"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](6,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"cd-table-key-value",[],null,null,null,fi.b,fi.a)),s["ɵdid"](8,638976,null,0,hi.a,[be.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null),(t()(),s["ɵeld"](9,0,null,0,7,"tab",[["heading","SMART"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](10,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Si)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ii)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ni)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.parent.context.$implicit.value.info.smart_status.passed,s["ɵnov"](e,2)),t(e,6,0,"Device Information"),t(e,8,0,e.parent.context.$implicit.value.info,!0),t(e,10,0,"SMART"),t(e,12,0,e.parent.context.$implicit.value.smart.attributes),t(e,14,0,e.parent.context.$implicit.value.smart.nvmeData),t(e,16,0,!e.parent.context.$implicit.value.smart.attributes&&!e.parent.context.$implicit.value.smart.nvmeData)}),(function(t,e){t(e,3,0,s["ɵnov"](e,4).clazz),t(e,5,0,s["ɵnov"](e,6).id,s["ɵnov"](e,6).active,s["ɵnov"](e,6).addClass,s["ɵnov"](e,6).role,s["ɵnov"](e,6).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby)}))}function Ri(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,4,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ti)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noError",2]],null,0,null,Ci))],(function(t,e){t(e,3,0,e.context.$implicit.value.device+" ("+e.context.$implicit.value.identifier+")"),t(e,5,0,e.context.$implicit.value.error,s["ɵnov"](e,6))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function Ai(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,_i)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵand"](16777216,null,null,2,null,Ri)),s["ɵdid"](5,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!s["ɵunv"](e,2,0,s["ɵnov"](e,3).transform(n.data)).length),t(e,5,0,s["ɵunv"](e,5,0,s["ɵnov"](e,6).transform(n.data)))}),null)}function ki(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,vi)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xi)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ai)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.error),t(e,4,0,n.incompatible),t(e,6,0,!n.error&&!n.incompatible)}),null)}function Ei(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,gi.b,gi.a)),s["ɵdid"](1,49152,null,0,pi.a,[],null,null),(t()(),s["ɵted"](-1,0,["SMART data is loading."]))],null,null)}function Li(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ki)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["isLoading",2]],null,0,null,Ei))],(function(t,e){t(e,1,0,!e.component.loading,s["ɵnov"](e,2))}),null)}class Di{constructor(t,e,n,a){this.hostService=t,this.i18n=e,this.datePipe=n,this.osdService=a,this.hostname="",this.osdId=null,this.devices=null,this.columns=[],this.translationMapping={"=1":"# week",other:"# weeks"}}ngOnInit(){const t=t=>this.devices=t;this.hostname?this.hostService.getDevices(this.hostname).subscribe(t):null!==this.osdId&&this.osdService.getDevices(this.osdId).subscribe(t),this.columns=[{prop:"devid",name:this.i18n("Device ID"),minWidth:200},{prop:"state",name:this.i18n("State of Health"),flexGrow:1,cellTransformation:Hr.a.badge,customTemplateConfig:{map:{good:{value:this.i18n("Good"),class:"badge-success"},warning:{value:this.i18n("Warning"),class:"badge-warning"},bad:{value:this.i18n("Bad"),class:"badge-danger"},stale:{value:this.i18n("Stale"),class:"badge-info"},unknown:{value:this.i18n("Unknown"),class:"badge-dark"}}}},{prop:"life_expectancy_weeks",name:this.i18n("Life Expectancy"),cellTemplate:this.lifeExpectancyTemplate},{prop:"life_expectancy_stamp",name:this.i18n("Prediction Creation Date"),cellTemplate:this.lifeExpectancyTimestampTemplate,pipe:this.datePipe,isHidden:!0},{prop:"location",name:this.i18n("Device Name"),cellTemplate:this.locationTemplate},{prop:"readableDaemons",name:this.i18n("Daemons")}]}}var Pi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Mi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[],null,null,null,Dr.b,Dr.a)),s["ɵdid"](1,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.devices,n.columns)}),null)}function qi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Neither hostname nor OSD ID given"]))],(function(t,e){t(e,1,0,"warning")}),null)}function ji(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.dev)}))}function Fi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ji)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Gi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["> ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.min,n.translationMapping));t(e,1,0,a)}))}function Vi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["< ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a)}))}function zi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[""," to ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=e.parent.context.value.min,r=s["ɵunv"](e,1,1,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a,r)}))}function Bi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Gi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value.min&&!e.context.value.max),t(e,3,0,e.context.value.max&&!e.context.value.min),t(e,5,0,e.context.value.max&&e.context.value.min)}),null)}function Yi(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ","\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function Hi(t){return s["ɵvid"](0,[s["ɵpid"](0,i.I18nPluralPipe,[i.NgLocalization]),s["ɵqud"](402653184,1,{locationTemplate:0}),s["ɵqud"](402653184,2,{lifeExpectancyTemplate:0}),s["ɵqud"](402653184,3,{lifeExpectancyTimestampTemplate:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Mi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qi)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["deviceLocation",2]],null,0,null,Fi)),(t()(),s["ɵand"](0,[[2,2],["lifeExpectancy",2]],null,0,null,Bi)),(t()(),s["ɵand"](0,[[3,2],["lifeExpectancyTimestamp",2]],null,0,null,Yi))],(function(t,e){var n=e.component;t(e,5,0,n.hostname||null!==n.osdId),t(e,7,0,""===n.hostname&&null===n.osdId)}),null)}n("jKX/");class Ui{get selectedHostname(){return void 0!==this.selection?this.selection.hostname:null}constructor(){}}var Wi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ki(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Inventory"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-inventory",[],null,null,null,ti,Jr)),s["ɵdid"](3,638976,null,0,Zr,[Br],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Inventory"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function $i(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-service-daemon-list",[],null,null,null,ci,oi)),s["ɵdid"](3,4964352,null,0,si,[_a.a,ii,ai,Br],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Daemons"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Zi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","rtOg0AiWz"]],null,null,null,kr.b,kr.a)),s["ɵdid"](3,638976,null,0,Er.a,[pt.a,Lr.b,re.a,vt.a,_a.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"host-details?var-ceph_hosts="+n.selectedHostname,"three","rtOg0AiWz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Ji(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-smart-list",[],null,null,null,Li,yi)),s["ɵdid"](1,638976,null,0,mi,[_a.a,bi,ii],{hostname:[0,"hostname"]},null)],(function(t,e){t(e,1,0,e.component.selectedHostname)}),null)}function Qi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,[[1,4]],0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-device-list",[],null,null,null,Hi,Pi)),s["ɵdid"](5,114688,null,0,Di,[ii,_a.a,i.DatePipe,bi],{hostname:[0,"hostname"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ki)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,$i)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Zi)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](13,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ji)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,n.selection.hostname),t(e,7,0,n.permissions.hosts.read),t(e,9,0,n.permissions.hosts.read),t(e,11,0,n.permissions.grafana.read),t(e,13,0,"Device health"),t(e,15,0,n.selectedHostname,s["ɵnov"](e.parent,3))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function Xi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No hostname found."]))],(function(t,e){t(e,1,0,"error")}),null)}function ts(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Qi)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["noHostname",2]],null,0,null,Xi))],(function(t,e){t(e,2,0,e.component.selection)}),null)}var es=n("EgGo"),ns=n("+fVR"),as=n("0+/T"),rs=n("kvvV"),is=n("85J/"),ss=n("FFMq");class os{constructor(t){this.bsModalRef=t}ngOnInit(){}onSubmit(){this.bsModalRef.hide()}}let us=(()=>{class t{constructor(t,e){this.orchService=t,this.modalService=e}checkOrchestratorOrModal(t,e,n){this.orchService.status().subscribe(a=>{a.available?n():this.modalService.show(os,{initialState:{actionDescription:t,itemDescription:e}})})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Br),s["ɵɵinject"](Lt.b))},token:t,providedIn:"root"}),t})();var ds=n("kn/O");const ls=new es.a("hosts");class cs extends ns.a{constructor(t,e,n,a,r,i,s,o,u,d,l){super(),this.authStorageService=t,this.hostService=e,this.cephShortVersionPipe=n,this.joinPipe=a,this.i18n=r,this.urlBuilder=i,this.actionLabels=s,this.modalService=o,this.taskWrapper=u,this.router=d,this.depCheckerService=l,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new Ur.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:ht.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("Host"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})}},{name:this.actionLabels.DELETE,permission:"delete",icon:ht.a.destroy,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("Host"),()=>this.deleteHostModal())},disable:()=>!this.selection.hasSelection}]}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Services"),prop:"services",flexGrow:3,cellTemplate:this.servicesTpl},{name:this.i18n("Labels"),prop:"labels",flexGrow:1,pipe:this.joinPipe},{name:this.i18n("Version"),prop:"ceph_version",flexGrow:1,pipe:this.cephShortVersionPipe}]}updateSelection(t){this.selection=t}deleteHostModal(){const t=this.selection.first().hostname;this.modalRef=this.modalService.show(as.a,{initialState:{itemDescription:"Host",itemNames:[t],actionDescription:"delete",submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new rs.a("host/delete",{hostname:t}),call:this.hostService.delete(t)})}})}getHosts(t){if(this.isLoadingHosts)return;const e={mds:"cephfs",mon:"monitor",osd:"osd",rgw:"rgw","rbd-mirror":"rbdMirroring",mgr:"manager","tcmu-runner":"iscsi"};this.isLoadingHosts=!0,this.hostService.list().subscribe(t=>{t.map(t=>(t.services.map(t=>{t.cdLink=`/perf_counters/${t.type}/${encodeURIComponent(t.id)}`;const n=this.permissions[e[t.type]];return t.canRead=!!n&&n.read,t}),t)),this.hosts=t,this.isLoadingHosts=!1},()=>{this.isLoadingHosts=!1,t.error()})}}var fs=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function hs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"a",[["class","service-link"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),s["ɵpad"](2,1),(t()(),s["ɵted"](3,null,["",".",""]))],(function(t,e){var n=e.component.cdParams,a=t(e,2,0,e.parent.context.$implicit.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,3,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function gs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ","."," "]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function ps(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[", "]))],null,null)}function bs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,hs)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gs)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ps)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.canRead),t(e,4,0,!e.context.$implicit.canRead),t(e,6,0,!e.context.last)}),null)}function ms(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,bs)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function ys(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","y0KGL0iZz"]],null,null,null,kr.b,kr.a)),s["ɵdid"](3,638976,null,0,Er.a,[pt.a,Lr.b,re.a,vt.a,_a.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"host-overview?","two","y0KGL0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function vs(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{servicesTpl:0}),(t()(),s["ɵeld"](1,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](2,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](3,0,null,0,9,"tab",[["heading","Hosts List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](4,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](5,0,null,null,7,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getHosts(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](6,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](7,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","host-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](9,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](0,[[1,2],["servicesTpl",2]],null,0,null,ms)),(t()(),s["ɵeld"](11,0,null,3,1,"cd-host-details",[["cdTableDetail",""]],null,null,null,ts,Wi)),s["ɵdid"](12,49152,null,0,Ui,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ys)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,"Hosts List"),t(e,6,0,n.hosts,n.columns,"flex",!0,"single"),t(e,9,0,n.permissions.hosts,n.selection,n.tableActions),t(e,12,0,n.permissions,n.expandedRow),t(e,14,0,n.permissions.grafana.read)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).clazz),t(e,3,0,s["ɵnov"](e,4).id,s["ɵnov"](e,4).active,s["ɵnov"](e,4).addClass,s["ɵnov"](e,4).role,s["ɵnov"](e,4).ariaLabelledby)}))}function xs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-hosts",[],null,null,null,vs,fs)),s["ɵprd"](256,null,es.a,ls,[]),s["ɵdid"](2,114688,null,0,cs,[xt.a,ii,is.a,ss.a,_a.a,es.a,At.b,Lt.b,ds.a,qt.m,us],null,null)],(function(t,e){t(e,2,0)}),null)}var _s=s["ɵccf"]("cd-hosts",cs,xs,{},{},[]),Ts=n("mXUL"),Os=n("IZUe"),ws=n("gp3X"),Ss=n("sb0X"),Is=n("KVJa"),Ns=n("Z21x"),Cs=n("8xTl"),Rs=n("QFaf"),As=n("1Ni5");class ks{constructor(t,e,n,a,r){this.router=t,this.i18n=e,this.actionLabels=n,this.hostService=a,this.taskWrapper=r,this.loading=!0,this.resource=this.i18n("host"),this.action=this.actionLabels.CREATE,this.createForm()}ngOnInit(){this.hostService.list().subscribe(t=>{this.hostnames=t.map(t=>t.hostname),this.loading=!1})}createForm(){this.hostForm=new Rs.a({hostname:new $.i("",{validators:[$.B.required,As.a.custom("uniqueName",t=>this.hostnames&&-1!==this.hostnames.indexOf(t))]})})}submit(){const t=this.hostForm.get("hostname").value;this.taskWrapper.wrapTaskAroundCall({task:new rs.a("host/"+At.e.CREATE,{hostname:t}),call:this.hostService.create(t)}).subscribe(void 0,()=>{this.hostForm.setErrors({cdSubmitButton:!0})},()=>{this.router.navigate(["/hosts"])})}}var Es=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ls(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,gi.b,gi.a)),s["ɵdid"](1,49152,null,0,pi.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading..."]))],null,null)}function Ds(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ps(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The chosen hostname is already in use."]))],null,null)}function Ms(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,39,"form",[["name","hostForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,2).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,2).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.G,[],null,null),s["ɵdid"](2,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](4,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](5,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](6,0,null,null,33,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[""," ",""])),s["ɵppd"](9,1),s["ɵppd"](10,1),(t()(),s["ɵeld"](11,0,null,null,19,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](13,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","hostname"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Hostname"])),(t()(),s["ɵeld"](18,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","hostname"],["id","hostname"],["name","hostname"],["placeholder","mon-123"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,Os.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](23,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](25,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](26,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ds)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ps)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](31,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),ws.b,ws.a)),s["ɵdid"](34,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](35,0,[""," ",""])),s["ɵppd"](36,1),s["ɵppd"](37,1),(t()(),s["ɵeld"](38,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](39,49152,null,0,Ns.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,2,0,n.hostForm),t(e,5,0,n.hostForm),t(e,13,0),t(e,20,0,""),t(e,23,0,"hostname"),t(e,26,0,"hostname"),t(e,28,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"required")),t(e,30,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"uniqueName")),t(e,34,0,s["ɵnov"](e,2))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,8,0,t(e,9,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,8,1,t(e,10,0,s["ɵnov"](e.parent,1),n.resource));t(e,8,0,a,r),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass);var i=s["ɵunv"](e,35,0,t(e,36,0,s["ɵnov"](e.parent,0),n.action)),o=s["ɵunv"](e,35,1,t(e,37,0,s["ɵnov"](e.parent,1),n.resource));t(e,35,0,i,o)}))}function qs(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Cs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,Ls)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ms)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.loading),t(e,6,0,!n.loading)}),null)}function js(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-host-form",[],null,null,null,qs,Es)),s["ɵdid"](1,114688,null,0,ks,[qt.m,_a.a,At.b,ii,ds.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Fs=s["ɵccf"]("cd-host-form",ks,js,{},{},[]);let Gs=(()=>{class t{constructor(t){this.http=t}getMonitor(){return this.http.get("api/monitor")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})();class Vs{constructor(t,e){this.monitorService=t,this.i18n=e,this.inQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:Hr.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")},{prop:"cdOpenSessions",name:this.i18n("Open Sessions"),cellTransformation:Hr.a.sparkline,comparator:(t,e)=>{const n=J.last(t),a=J.last(e);return n&&a&&n!==a?n>a?1:-1:0}}]},this.notInQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:Hr.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")}]}}refresh(){this.monitorService.getMonitor().subscribe(t=>{t.in_quorum.map(t=>(t.cdOpenSessions=t.stats.num_sessions.map(t=>t[1]),t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),t.out_quorum.map(t=>(t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),this.inQuorum.data=[...t.in_quorum],this.notInQuorum.data=[...t.out_quorum],this.mon_status=t.mon_status})}}var zs=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Bs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,35,"table",[["class","table table-striped"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster ID"])),(t()(),s["ɵeld"](4,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap modified"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap epoch"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum con"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum mon"])),(t()(),s["ɵeld"](24,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](25,null,["",""])),(t()(),s["ɵeld"](26,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required con"])),(t()(),s["ɵeld"](29,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required mon"])),(t()(),s["ɵeld"](34,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](35,null,["",""]))],null,(function(t,e){var n=e.component;t(e,5,0,n.mon_status.monmap.fsid),t(e,10,0,n.mon_status.monmap.modified),t(e,15,0,n.mon_status.monmap.epoch),t(e,20,0,n.mon_status.features.quorum_con),t(e,25,0,n.mon_status.features.quorum_mon),t(e,30,0,n.mon_status.features.required_con),t(e,35,0,n.mon_status.features.required_mon)}))}function Ys(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"div",[["class","col-lg-4"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Status"])),(t()(),s["ɵand"](16777216,null,null,1,null,Bs)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,8,"div",[["class","col-lg-8"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["In Quorum"])),(t()(),s["ɵeld"](10,0,null,null,1,"cd-table",[],null,null,null,Dr.b,Dr.a)),s["ɵdid"](11,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(t()(),s["ɵeld"](12,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Not In Quorum"])),(t()(),s["ɵeld"](14,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),Dr.b,Dr.a)),s["ɵdid"](15,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,6,0,n.mon_status),t(e,11,0,n.inQuorum.data,n.inQuorum.columns),t(e,15,0,n.notInQuorum.data,n.notInQuorum.columns)}),null)}function Hs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitor",[],null,null,null,Ys,zs)),s["ɵdid"](1,49152,null,0,Vs,[Gs,_a.a],null,null)],null,null)}var Us=s["ɵccf"]("cd-monitor",Vs,Hs,{},{},[]);class Ws{constructor(){}ngOnInit(){}}var Ks=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function $s(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,[[1,4]],0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-service-daemon-list",[],null,null,null,ci,oi)),s["ɵdid"](5,4964352,null,0,si,[_a.a,ii,ai,Br],{serviceName:[0,"serviceName"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Daemons"),t(e,5,0,n.selection.service_name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function Zs(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,$s)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.component.selection)}),null)}class Js extends ns.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.i18n=e,this.orchService=n,this.cephServiceService=a,this.hiddenColumns=[],this.checkingOrchestrator=!0,this.hasOrchestrator=!1,this.columns=[],this.services=[],this.isLoadingServices=!1,this.selection=new Ur.a,this.permissions=this.authStorageService.getPermissions()}ngOnInit(){const t=[{name:this.i18n("Service"),prop:"service_name",flexGrow:1},{name:this.i18n("Container image name"),prop:"status.container_image_name",flexGrow:3},{name:this.i18n("Container image ID"),prop:"status.container_image_id",flexGrow:3,cellTransformation:Hr.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Running"),prop:"status.running",flexGrow:1},{name:this.i18n("Size"),prop:"status.size",flexGrow:1},{name:this.i18n("Last Refreshed"),prop:"status.last_refresh",flexGrow:1}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available})}ngOnChanges(){this.hasOrchestrator&&(this.services=[],this.table.reloadData())}getServices(t){this.isLoadingServices||(this.isLoadingServices=!0,this.cephServiceService.list().subscribe(t=>{this.services=t,this.isLoadingServices=!1},()=>{this.isLoadingServices=!1,this.services=[],t.error()}))}}var Qs=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Xs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,zr,Vr)),s["ɵdid"](1,114688,null,0,Gr,[vt.a,pt.a],null,null)],(function(t,e){t(e,1,0)}),null)}function to(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","service_name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getServices(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](2,2867200,[[1,4]],0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{fetchData:"fetchData",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,3,1,"cd-service-details",[["cdTableDetail",""]],null,null,null,Zs,Ks)),s["ɵdid"](4,114688,null,0,Ws,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.services,n.columns,"flex",!0,6e4,"service_name","true","single"),t(e,4,0,n.permissions,n.expandedRow)}),null)}function eo(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{table:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Xs)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,to)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,!n.hasOrchestrator),t(e,4,0,n.hasOrchestrator)}),null)}function no(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-services",[],null,null,null,eo,Qs)),s["ɵdid"](1,638976,null,0,Js,[xt.a,_a.a,Br,ai],null,null)],(function(t,e){t(e,1,0)}),null)}var ao=s["ɵccf"]("cd-services",Js,no,{hostname:"hostname",hiddenColumns:"hiddenColumns"},{},[]),ro=n("xSw7"),io=n("GgAd"),so=n("j8L6"),oo=n("b5OY"),uo=n("pxLl");class lo{constructor(){this.last={}}ngOnChanges(){this.render()}hexdigits(t){const e=Math.floor(255*t).toString(16);return 1===e.length?"0"+e:e}hexcolor(t,e,n){return"#"+this.hexdigits(t)+this.hexdigits(e)+this.hexdigits(n)}render(){if(!this.histogram)return;let t=0;J.each(this.histogram.values,(e,n)=>{J.each(e,(e,a)=>{let r;r=this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e,t=Math.max(t,r)})}),this.valuesStyle=this.histogram.values.map((e,n)=>e.map((e,a)=>{const r=t?(this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e)/t:0;return{backgroundColor:this.hexcolor(1-r,r,0)}})),this.last=this.histogram.values}}var co=s["ɵcrt"]({encapsulation:0,styles:[["table[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{height:10px}table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{width:10px;height:10px}"]],data:{}});function fo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function ho(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,fo)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function go(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"table",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ho)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.valuesStyle)}),null)}class po{constructor(t,e){this.osdService=t,this.authStorageService=e,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.osd={loaded:!1},this.selection&&(this.osd=this.selection,this.refresh())}refresh(){this.osdService.getDetails(this.osd.id).subscribe(t=>{this.osd.details=t,this.osd.histogram_failed="",J.isObject(t.histogram)||(this.osd.histogram_failed=t.histogram,this.osd.details.histogram=void 0),this.osd.loaded=!0})}}var bo=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function mo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-device-list",[],null,null,null,Hi,Pi)),s["ɵdid"](1,114688,null,0,Di,[ii,_a.a,i.DatePipe,bi],{osdId:[0,"osdId"]},null)],(function(t,e){t(e,1,0,e.component.osd.id)}),null)}function yo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[],null,null,null,fi.b,fi.a)),s["ɵdid"](1,638976,null,0,hi.a,[be.a],{data:[0,"data"]},null)],(function(t,e){t(e,1,0,e.component.osd.details.osd_map)}),null)}function vo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),fi.b,fi.a)),s["ɵdid"](1,638976,null,0,hi.a,[be.a],{data:[0,"data"]},{fetchData:"fetchData"})],(function(t,e){t(e,1,0,e.component.osd.details.osd_metadata)}),null)}function xo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Metadata not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function _o(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-performance-counter",[["serviceType","osd"]],null,null,null,so.b,so.a)),s["ɵdid"](1,114688,null,0,oo.a,[uo.a,_a.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){t(e,1,0,"osd",e.component.osd.id)}),null)}function To(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,["Histogram not available: ",""]))],(function(t,e){t(e,1,0,"warning")}),(function(t,e){t(e,2,0,e.component.osd.histogram_failed)}))}function Oo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Writes"])),(t()(),s["ɵeld"](4,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,go,co)),s["ɵdid"](5,573440,null,0,lo,[],{histogram:[0,"histogram"]},null),(t()(),s["ɵeld"](6,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Reads"])),(t()(),s["ɵeld"](9,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,go,co)),s["ɵdid"](10,573440,null,0,lo,[],{histogram:[0,"histogram"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.osd.details.histogram.osd.op_w_latency_in_bytes_histogram),t(e,10,0,n.osd.details.histogram.osd.op_r_latency_out_bytes_histogram)}),null)}function wo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","GrafanaStyles.two"],["uid","CrAHE0iZz"]],null,null,null,kr.b,kr.a)),s["ɵdid"](3,638976,null,0,Er.a,[pt.a,Lr.b,re.a,vt.a,_a.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"osd-device-details?var-osd=osd."+n.osd.id,"GrafanaStyles.two","CrAHE0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function So(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"tabset",[["id","tabset-osd-details"]],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mo)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[["heading","Attributes (OSD map)"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yo)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](10,0,null,0,4,"tab",[["heading","Metadata"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](11,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vo)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noMetaData",2]],null,0,null,xo)),(t()(),s["ɵeld"](15,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](16,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](17,0,null,null,1,"cd-smart-list",[],null,null,null,Li,yi)),s["ɵdid"](18,638976,null,0,mi,[_a.a,bi,ii],{osdId:[0,"osdId"]},null),(t()(),s["ɵeld"](19,0,null,0,3,"tab",[["heading","Performance counter"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](20,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_o)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,0,5,"tab",[["heading","Histogram"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](24,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,To)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Oo)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,wo)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,n.osd.loaded&&null!==n.osd.id),t(e,7,0,"Attributes (OSD map)"),t(e,9,0,n.osd.loaded),t(e,11,0,"Metadata"),t(e,13,0,n.osd.loaded&&n.osd.details.osd_metadata,s["ɵnov"](e,14)),t(e,16,0,"Device health"),t(e,18,0,n.osd.id),t(e,20,0,"Performance counter"),t(e,22,0,n.osd.loaded),t(e,24,0,"Histogram"),t(e,26,0,n.osd.loaded&&n.osd.histogram_failed),t(e,28,0,n.osd.loaded&&n.osd.details.histogram),t(e,30,0,n.grafanaPermission.read)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,10,0,s["ɵnov"](e,11).id,s["ɵnov"](e,11).active,s["ɵnov"](e,11).addClass,s["ɵnov"](e,11).role,s["ɵnov"](e,11).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby),t(e,19,0,s["ɵnov"](e,20).id,s["ɵnov"](e,20).active,s["ɵnov"](e,20).addClass,s["ɵnov"](e,20).role,s["ɵnov"](e,20).ariaLabelledby),t(e,23,0,s["ɵnov"](e,24).id,s["ɵnov"](e,24).active,s["ɵnov"](e,24).addClass,s["ɵnov"](e,24).role,s["ɵnov"](e,24).ariaLabelledby)}))}function Io(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,So)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}function No(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-details",[],null,null,null,Io,bo)),s["ɵdid"](1,573440,null,0,po,[bi,xt.a],null,null)],null,null)}var Co=s["ɵccf"]("cd-osd-details",po,No,{selection:"selection"},{},[]),Ro=n("cp0P"),Ao=n("OLbh");class ko{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.osdFlagsForm=new $.k({}),this.allFlags={noin:{code:"noin",name:this.i18n("No In"),value:!1,description:this.i18n("OSDs that were previously marked out will not be marked back in when they start")},noout:{code:"noout",name:this.i18n("No Out"),value:!1,description:this.i18n("OSDs will not automatically be marked out after the configured interval")},noup:{code:"noup",name:this.i18n("No Up"),value:!1,description:this.i18n("OSDs are not allowed to start")},nodown:{code:"nodown",name:this.i18n("No Down"),value:!1,description:this.i18n("OSD failure reports are being ignored, such that the monitors will not mark OSDs down")},pause:{code:"pause",name:this.i18n("Pause"),value:!1,description:this.i18n("Pauses reads and writes")},noscrub:{code:"noscrub",name:this.i18n("No Scrub"),value:!1,description:this.i18n("Scrubbing is disabled")},"nodeep-scrub":{code:"nodeep-scrub",name:this.i18n("No Deep Scrub"),value:!1,description:this.i18n("Deep Scrubbing is disabled")},nobackfill:{code:"nobackfill",name:this.i18n("No Backfill"),value:!1,description:this.i18n("Backfilling of PGs is suspended")},norebalance:{code:"norebalance",name:this.i18n("No Rebalance"),value:!1,description:this.i18n("OSD will choose not to backfill unless PG is also degraded")},norecover:{code:"norecover",name:this.i18n("No Recover"),value:!1,description:this.i18n("Recovery of PGs is suspended")},sortbitwise:{code:"sortbitwise",name:this.i18n("Bitwise Sort"),value:!1,description:this.i18n("Use bitwise sort"),disabled:!0},purged_snapdirs:{code:"purged_snapdirs",name:this.i18n("Purged Snapdirs"),value:!1,description:this.i18n("OSDs have converted snapsets"),disabled:!0},recovery_deletes:{code:"recovery_deletes",name:this.i18n("Recovery Deletes"),value:!1,description:this.i18n("Deletes performed during recovery instead of peering"),disabled:!0},pglog_hardlimit:{code:"pglog_hardlimit",name:this.i18n("PG Log Hard Limit"),value:!1,description:this.i18n("Puts a hard limit on pg log length"),disabled:!0}},this.unknownFlags=[],this.permissions=this.authStorageService.getPermissions()}ngOnInit(){this.osdService.getFlags().subscribe(t=>{t.forEach(t=>{this.allFlags[t]?this.allFlags[t].value=!0:this.unknownFlags.push(t)}),this.flags=J.toArray(this.allFlags)})}submitAction(){const t=this.flags.filter(t=>t.value).map(t=>t.code).concat(this.unknownFlags);this.osdService.updateFlags(t).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n("Updated OSD Flags")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}var Eo=n("MuvH");let Lo=(()=>{class t{static getType(t){const e=J.find(this.knownTypes,e=>e.name===t);if(void 0!==e)return e;throw new Error('Found unknown type "'+t+'" for config option.')}static getTypeValidators(e){const n=t.getType(e.type);if("bool"===n.name||"str"===n.name)return;const a={validators:[],patternHelpText:n.patternHelpText};return n.isNumberType?(e.max&&""!==e.max&&(a.max=e.max,a.validators.push($.B.max(e.max))),e.min&&""!==e.min?(a.min=e.min,a.validators.push($.B.min(e.min))):"defaultMin"in n&&(a.min=n.defaultMin,a.validators.push($.B.min(n.defaultMin))),a.validators.push("float"===e.type?As.a.decimalNumber():As.a.number(n.allowsNegative))):"addr"===e.type?a.validators=[As.a.ip()]:"uuid"===e.type&&(a.validators=[As.a.uuid()]),a}static getTypeStep(t,e){if(["uint","int","size","secs"].includes(t))return 1;if("float"===t){if(null!==e&&-1!==e.toString().indexOf(".")){const t=e.toString().split(".");return Math.pow(10,-t[1].length)}return.1}}}return t.knownTypes=[{name:"uint",inputType:"number",humanReadable:"Unsigned integer value",defaultMin:0,patternHelpText:"The entered value needs to be an unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"int",inputType:"number",humanReadable:"Integer value",patternHelpText:"The entered value needs to be a number.",isNumberType:!0,allowsNegative:!0},{name:"size",inputType:"number",humanReadable:"Unsigned integer value (>=16bit)",defaultMin:0,patternHelpText:"The entered value needs to be a unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"secs",inputType:"number",humanReadable:"Number of seconds",defaultMin:1,patternHelpText:"The entered value needs to be a number >= 1.",isNumberType:!0,allowsNegative:!1},{name:"float",inputType:"number",humanReadable:"Double value",patternHelpText:"The entered value needs to be a number or decimal.",isNumberType:!0,allowsNegative:!0},{name:"str",inputType:"text",humanReadable:"Text",isNumberType:!1},{name:"addr",inputType:"text",humanReadable:"IPv4 or IPv6 address",patternHelpText:"The entered value needs to be a valid IP address.",isNumberType:!1},{name:"uuid",inputType:"text",humanReadable:"UUID",patternHelpText:"The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",isNumberType:!1},{name:"bool",inputType:"checkbox",humanReadable:"Boolean value",isNumberType:!1}],t})();class Do{constructor(t){this.configService=t,this.optionNames=[],this.optionsForm=new Rs.a({}),this.optionsFormDir=new $.t([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.icons=ht.a,this.options=[],this.optionsFormGroup=new Rs.a({})}static optionNameToText(t){const e=["mon","mgr","osd","mds","client"];return t.split("_").filter((t,n)=>0!==n||!e.includes(t)).map(t=>t.charAt(0).toUpperCase()+t.substring(1)).join(" ")}ngOnInit(){this.createForm(),this.loadStoredData()}createForm(){this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(t=>{this.optionsFormGroup.addControl(t,new $.i(null))})}getStep(t,e){return Lo.getTypeStep(t,e)}loadStoredData(){this.configService.filter(this.optionNames).subscribe(t=>{this.options=t.map(t=>{const e=this.optionsForm.get(t.name),n=Lo.getTypeValidators(t);return t.additionalTypeInfo=Lo.getType(t.type),t.text=Do.optionNameToText(t.name),t.value=J.find(t.value,t=>"osd"===t.section),t.value&&e.setValue("bool"===t.additionalTypeInfo.name?"true"===t.value.value:t.value.value),n&&(t.patternHelpText=n.patternHelpText,"max"in n&&""!==n.max&&(t.maxValue=n.max),"min"in n&&""!==n.min&&(t.minValue=n.min),e.setValidators(n.validators)),t})})}saveValues(){const t={};return this.optionNames.forEach(e=>{const n=this.optionsForm.getValue(e);null!==n&&""!==n&&(t[e]={section:"osd",value:n})}),this.configService.bulkCreate({options:t})}resetValue(t){this.configService.delete(t,"osd").subscribe(()=>{this.optionsForm.get(t).reset()})}}let Po=(()=>{class t{}return t.basicOptions=["osd_scrub_during_recovery","osd_scrub_begin_hour","osd_scrub_end_hour","osd_scrub_begin_week_day","osd_scrub_end_week_day","osd_scrub_min_interval","osd_scrub_max_interval","osd_deep_scrub_interval","osd_scrub_auto_repair","osd_max_scrubs","osd_scrub_priority","osd_scrub_sleep"],t.advancedOptions=["osd_scrub_auto_repair_num_errors","osd_debug_deep_scrub_sleep","osd_deep_scrub_keys","osd_deep_scrub_large_omap_object_key_threshold","osd_deep_scrub_large_omap_object_value_sum_threshold","osd_deep_scrub_randomize_ratio","osd_deep_scrub_stride","osd_deep_scrub_update_digest_min_age","osd_requested_scrub_priority","osd_scrub_backoff_ratio","osd_scrub_chunk_max","osd_scrub_chunk_min","osd_scrub_cost","osd_scrub_interval_randomize_ratio","osd_scrub_invalid_stats","osd_scrub_load_threshold","osd_scrub_max_preemptions"],t})();class Mo{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.notificationService=n,this.i18n=a,this.actionLabels=r,this.basicOptions=Po.basicOptions,this.advancedOptions=Po.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new Rs.a({}),this.resource=this.i18n("PG scrub options"),this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}submitAction(){const t=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&t.push(this.advancedOptionsValues.saveValues()),Object(Ro.a)(t).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n("Updated PG scrub options")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}class qo{constructor(t,e,n,a,r,i){this.bsModalRef=t,this.authStorageService=e,this.configService=n,this.notificationService=a,this.i18n=r,this.osdService=i,this.priorities=[],this.priorityAttrs={},this.permissions=this.authStorageService.getPermissions(),this.priorities=this.osdService.osdRecvSpeedModalPriorities.KNOWN_PRIORITIES,this.osdRecvSpeedForm=new Rs.a({priority:new $.i(null,{validators:[$.B.required]}),customizePriority:new $.i(!1)}),this.priorityAttrs={osd_max_backfills:{text:this.i18n("Max Backfills"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_active:{text:this.i18n("Recovery Max Active"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_single_start:{text:this.i18n("Recovery Max Single Start"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_sleep:{text:this.i18n("Recovery Sleep"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0}},Object.keys(this.priorityAttrs).forEach(t=>{this.osdRecvSpeedForm.addControl(t,new $.i(null,{validators:[$.B.required]}))})}ngOnInit(){this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(t=>{const e=this.getCurrentValues(t);this.detectPriority(e.values,t=>{this.setPriority(t)}),this.setDescription(e.configOptions),this.setValidators(e.configOptions)})}detectPriority(t,e){const n=J.find(this.priorities,e=>J.isEqual(e.values,t));return this.osdRecvSpeedForm.controls.customizePriority.setValue(!1),n?e(n):4===Object.entries(t).length?(this.osdRecvSpeedForm.controls.customizePriority.setValue(!0),e(Object({name:"custom",text:this.i18n("Custom"),values:t}))):e(this.priorities[0])}getCurrentValues(t){const e={values:{},configOptions:[]};return t.forEach(t=>{e.configOptions.push(t),"value"in t?t.value.forEach(n=>{"osd"===n.section&&(e.values[t.name]=Number(n.value))}):"default"in t&&null!==t.default&&(e.values[t.name]=Number(t.default))}),e}setDescription(t){t.forEach(t=>{""!==t.desc&&(this.priorityAttrs[t.name].desc=t.desc)})}setPriority(t){const e=J.find(this.priorities,t=>"custom"===t.name);"custom"===t.name?e||this.priorities.push(t):e&&this.priorities.splice(this.priorities.indexOf(e),1),this.osdRecvSpeedForm.controls.priority.setValue(t.name),Object.entries(t.values).forEach(([t,e])=>{this.osdRecvSpeedForm.controls[t].setValue(e)})}setValidators(t){t.forEach(t=>{const e=Lo.getTypeValidators(t);e?(e.validators.push($.B.required),"max"in e&&""!==e.max&&(this.priorityAttrs[t.name].maxValue=e.max),"min"in e&&""!==e.min&&(this.priorityAttrs[t.name].minValue=e.min),this.priorityAttrs[t.name].patternHelpText=e.patternHelpText,this.osdRecvSpeedForm.controls[t.name].setValidators(e.validators)):this.osdRecvSpeedForm.controls[t.name].setValidators($.B.required)})}onCustomizePriorityChange(){const t={};if(Object.keys(this.priorityAttrs).forEach(e=>{t[e]=this.osdRecvSpeedForm.getValue(e)}),this.osdRecvSpeedForm.getValue("customizePriority")){const e={name:"custom",text:this.i18n("Custom"),values:t};this.setPriority(e)}else this.detectPriority(t,t=>{this.setPriority(t)})}onPriorityChange(t){const e=J.find(this.priorities,e=>e.name===t)||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(e)}submitAction(){const t={};Object.keys(this.priorityAttrs).forEach(e=>{t[e]={section:"osd",value:this.osdRecvSpeedForm.getValue(e)}}),this.configService.bulkCreate({options:t}).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n('Updated OSD recovery speed priority "{{value}}"',{value:this.osdRecvSpeedForm.getValue("priority")})),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}var jo=n("2EZI");class Fo{constructor(t,e,n){this.bsModalRef=t,this.osdService=e,this.fb=n,this.currentWeight=1}get weight(){return this.reweightForm.get("weight")}ngOnInit(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[$.B.required,$.B.max(1),$.B.min(0)])})}reweight(){this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(()=>this.bsModalRef.hide())}}class Go{constructor(t,e,n,a,r){this.bsModalRef=t,this.osdService=e,this.notificationService=n,this.i18n=a,this.joinPipe=r,this.selected=[]}ngOnInit(){this.scrubForm=new $.k({})}scrub(){Object(Ro.a)(this.selected.map(t=>this.osdService.scrub(t,this.deep))).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n("{{operation}} was initialized in the following OSD(s): {{id}}",{operation:this.deep?"Deep scrub":"Scrub",id:this.joinPipe.transform(this.selected)})),this.bsModalRef.hide()},()=>this.bsModalRef.hide())}}const Vo=new es.a("osd");class zo extends ns.a{constructor(t,e,n,a,r,i,s,o,u,d,l){super(),this.authStorageService=t,this.osdService=e,this.dimlessBinaryPipe=n,this.modalService=a,this.i18n=r,this.urlBuilder=i,this.router=s,this.depCheckerService=o,this.taskWrapper=u,this.actionLabels=d,this.notificationService=l,this.icons=ht.a,this.selection=new Ur.a,this.osds=[],this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:ht.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("OSD"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})},canBePrimary:t=>!t.hasSelection},{name:this.actionLabels.EDIT,permission:"update",icon:ht.a.edit,click:()=>this.editAction()},{name:this.actionLabels.SCRUB,permission:"update",icon:ht.a.analyse,click:()=>this.scrubAction(!1),disable:()=>!this.hasOsdSelected,canBePrimary:t=>t.hasSelection},{name:this.actionLabels.DEEP_SCRUB,permission:"update",icon:ht.a.deepCheck,click:()=>this.scrubAction(!0),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.REWEIGHT,permission:"update",click:()=>this.reweight(),disable:()=>!this.hasOsdSelected||!this.selection.hasSingleSelection,icon:ht.a.reweight},{name:this.actionLabels.MARK_OUT,permission:"update",click:()=>this.showConfirmationModal(this.i18n("out"),this.osdService.markOut),disable:()=>this.isNotSelectedOrInState("out"),icon:ht.a.left},{name:this.actionLabels.MARK_IN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("in"),this.osdService.markIn),disable:()=>this.isNotSelectedOrInState("in"),icon:ht.a.right},{name:this.actionLabels.MARK_DOWN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("down"),this.osdService.markDown),disable:()=>this.isNotSelectedOrInState("down"),icon:ht.a.down},{name:this.actionLabels.MARK_LOST,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Mark"),this.i18n("OSD lost"),this.i18n("marked lost"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",this.osdService.markLost),disable:()=>this.isNotSelectedOrInState("up"),icon:ht.a.flatten},{name:this.actionLabels.PURGE,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Purge"),this.i18n("OSD"),this.i18n("purged"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new Ur.a,this.osdService.purge(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:ht.a.erase},{name:this.actionLabels.DESTROY,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("destroy"),this.i18n("OSD"),this.i18n("destroyed"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new Ur.a,this.osdService.destroy(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:ht.a.destroyCircle},{name:this.actionLabels.DELETE,permission:"delete",click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("OSD"),()=>{this.showCriticalConfirmationModal(this.i18n("delete"),this.i18n("OSD"),this.i18n("deleted"),t=>this.osdService.safeToDelete(JSON.stringify(t)),"is_safe_to_delete",t=>(this.selection=new Ur.a,this.taskWrapper.wrapTaskAroundCall({task:new rs.a("osd/"+At.e.DELETE,{svc_id:t}),call:this.osdService.delete(t,!0)})),!0)})},disable:()=>!this.hasOsdSelected,icon:ht.a.destroy}]}static collectStates(t){const e=[t.in?"in":"out"];return t.up?e.push("up"):t.state.includes("destroyed")?e.push("destroyed"):e.push("down"),e}ngOnInit(){this.clusterWideActions=[{name:this.i18n("Flags"),icon:ht.a.flag,click:()=>this.configureFlagsAction(),permission:"read",visible:()=>this.permissions.osd.read},{name:this.i18n("Recovery Priority"),icon:ht.a.deepCheck,click:()=>this.configureQosParamsAction(),permission:"read",visible:()=>this.permissions.configOpt.read},{name:this.i18n("PG scrub"),icon:ht.a.analyse,click:()=>this.configurePgScrubAction(),permission:"read",visible:()=>this.permissions.configOpt.read}],this.columns=[{prop:"host.name",name:this.i18n("Host")},{prop:"id",name:this.i18n("ID"),flexGrow:1,cellTransformation:Hr.a.bold},{prop:"collectedStates",name:this.i18n("Status"),flexGrow:1,cellTransformation:Hr.a.badge,customTemplateConfig:{map:{in:{class:"badge-success"},up:{class:"badge-success"},down:{class:"badge-danger"},out:{class:"badge-danger"},destroyed:{class:"badge-danger"}}}},{prop:"tree.device_class",name:this.i18n("Device class"),flexGrow:1,cellTransformation:Hr.a.badge,customTemplateConfig:{map:{hdd:{class:"badge-hdd"},ssd:{class:"badge-ssd"}}}},{prop:"stats.numpg",name:this.i18n("PGs"),flexGrow:1},{prop:"stats.stat_bytes",name:this.i18n("Size"),flexGrow:1,pipe:this.dimlessBinaryPipe},{prop:"stats.usage",name:this.i18n("Usage"),cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:this.i18n("Read bytes"),cellTransformation:Hr.a.sparkline},{prop:"stats_history.in_bytes",name:this.i18n("Write bytes"),cellTransformation:Hr.a.sparkline},{prop:"stats.op_r",name:this.i18n("Read ops"),cellTransformation:Hr.a.perSecond},{prop:"stats.op_w",name:this.i18n("Write ops"),cellTransformation:Hr.a.perSecond}]}getSelectedOsdIds(){const t=this.osds.map(t=>t.id);return this.selection.selected.map(t=>t.id).filter(e=>t.includes(e))}getSelectedOsds(){return this.osds.filter(t=>!J.isUndefined(t)&&this.getSelectedOsdIds().includes(t.id))}get hasOsdSelected(){return this.getSelectedOsdIds().length>0}updateSelection(t){this.selection=t}isNotSelectedOrInState(t){const e=this.getSelectedOsds();if(0===e.length)return!0;switch(t){case"in":return e.some(t=>1===t.in);case"out":return e.some(t=>1!==t.in);case"down":return e.some(t=>1!==t.up);case"up":return e.some(t=>1===t.up)}}getOsdList(){this.osdService.getList().subscribe(t=>{this.osds=t.map(t=>(t.collectedStates=zo.collectStates(t),t.stats_history.out_bytes=t.stats_history.op_out_bytes.map(t=>t[1]),t.stats_history.in_bytes=t.stats_history.op_in_bytes.map(t=>t[1]),t.stats.usage=t.stats.stat_bytes_used/t.stats.stat_bytes,t.cdIsBinary=!0,t))})}editAction(){const t=J.filter(this.osds,["id",this.selection.first().id]).pop();this.modalService.show(Yr.a,{initialState:{titleText:this.i18n("Edit OSD: {{id}}",{id:t.id}),fields:[{type:"text",name:"deviceClass",value:t.tree.device_class,label:this.i18n("Device class"),required:!0}],submitButtonText:this.i18n("Edit OSD"),onSubmit:e=>{this.osdService.update(t.id,e.deviceClass).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n('Updated OSD "{{id}}"',{id:t.id})),this.getOsdList()})}}})}scrubAction(t){if(!this.hasOsdSelected)return;const e={selected:this.getSelectedOsdIds(),deep:t};this.bsModalRef=this.modalService.show(Go,{initialState:e})}configureFlagsAction(){this.bsModalRef=this.modalService.show(ko,{})}showConfirmationModal(t,e){this.bsModalRef=this.modalService.show(Ao.a,{initialState:{titleText:this.i18n("Mark OSD {{markAction}}",{markAction:t}),buttonText:this.i18n("Mark {{markAction}}",{markAction:t}),bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:t},onSubmit:()=>{Object(Ro.a)(this.getSelectedOsdIds().map(t=>e.call(this.osdService,t))).subscribe(()=>this.bsModalRef.hide())}}})}reweight(){const t=this.osds.filter(t=>t.id===this.selection.first().id).pop();this.modalService.show(Fo,{initialState:{currentWeight:t.weight,osdId:t.id}})}showCriticalConfirmationModal(t,e,n,a,r,i,s=!1){a(this.getSelectedOsdIds()).subscribe(a=>{const o=this.modalService.show(as.a,{initialState:{actionDescription:t,itemDescription:e,bodyTemplate:this.criticalConfirmationTpl,bodyContext:{safeToPerform:a[r],message:a.message,actionDescription:n},submitAction:()=>{const t=Object(Ro.a)(this.getSelectedOsdIds().map(t=>i.call(this.osdService,t)));s?t.subscribe(void 0,()=>{this.getOsdList(),o.hide()},()=>o.hide()):t.subscribe(()=>{this.getOsdList(),o.hide()},()=>o.hide())}}})})}configureQosParamsAction(){this.bsModalRef=this.modalService.show(qo,{})}configurePgScrubAction(){this.bsModalRef=this.modalService.show(Mo,{class:"modal-lg"})}}var Bo=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Yo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,ro.b,ro.a)),s["ɵdid"](1,573440,null,0,io.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],(function(t,e){t(e,1,0,e.context.row.stats.stat_bytes,e.context.row.stats.stat_bytes_used)}),null)}function Ho(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","lo02I1Aiz"]],null,null,null,kr.b,kr.a)),s["ɵdid"](3,638976,null,0,Er.a,[pt.a,Lr.b,re.a,vt.a,_a.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"osd-overview?","three","lo02I1Aiz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Uo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["OSD(s) ",""])),s["ɵppd"](3,1),(t()(),s["ɵted"](-1,null,[" will be marked\n"])),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.getSelectedOsdIds()));t(e,2,0,a),t(e,6,0,e.context.markActionDescription)}))}function Wo(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSDs are"]))],null,null)}function Ko(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSD is"]))],null,null)}function $o(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","danger"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"cd-alert-panel",[["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](2,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The "])),(t()(),s["ɵeld"](4,0,null,0,5,null,null,null,null,null,null,null)),s["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wo)),s["ɵdid"](7,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ko)),s["ɵdid"](9,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](10,0,[" not safe to be ","! ",""]))],(function(t,e){var n=e.component;t(e,2,0,"warning"),t(e,5,0,n.selection.hasSingleSelection),t(e,7,0,"0"),t(e,9,0,"1")}),(function(t,e){t(e,10,0,e.parent.context.actionDescription,e.parent.context.message)}))}function Zo(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,$o)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](4,null,["OSD ",""])),s["ɵppd"](5,1),(t()(),s["ɵted"](-1,null,[" will be\n"])),(t()(),s["ɵeld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],(function(t,e){t(e,1,0,!e.context.safeToPerform)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent,0),n.getSelectedOsdIds()));t(e,4,0,a),t(e,8,0,e.context.actionDescription)}))}function Jo(t){return s["ɵvid"](0,[s["ɵpid"](0,ss.a,[]),s["ɵqud"](402653184,1,{osdUsageTpl:0}),s["ɵqud"](402653184,2,{markOsdConfirmationTpl:0}),s["ɵqud"](402653184,3,{criticalConfirmationTpl:0}),s["ɵqud"](402653184,4,{tableComponent:0}),s["ɵqud"](671088640,5,{reweightBodyTpl:0}),s["ɵqud"](671088640,6,{safeToDestroyBodyTpl:0}),(t()(),s["ɵeld"](7,0,null,null,16,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](8,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](9,0,null,0,12,"tab",[["heading","OSDs List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](10,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](11,0,null,null,9,"cd-table",[["selectionType","multiClick"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getOsdList()&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](12,2867200,[[4,4]],0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],autoReload:[3,"autoReload"],selectionType:[4,"selectionType"],updateSelectionOnRefresh:[5,"updateSelectionOnRefresh"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](13,0,null,1,5,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","osd-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](15,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](16,0,null,null,2,"cd-table-actions",[["btnColor","light"],["class","btn-group"],["dropDownOnly","Cluster-wide configuration"],["id","cluster-wide-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](17,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"],btnColor:[3,"btnColor"],dropDownOnly:[4,"dropDownOnly"]},null),s["ɵpod"](18,{read:0}),(t()(),s["ɵeld"](19,0,null,3,1,"cd-osd-details",[["cdTableDetail",""]],null,null,null,Io,bo)),s["ɵdid"](20,573440,null,0,po,[bi,xt.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["osdUsageTpl",2]],null,0,null,Yo)),(t()(),s["ɵand"](16777216,null,0,1,null,Ho)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["markOsdConfirmationTpl",2]],null,0,null,Uo)),(t()(),s["ɵand"](0,[[3,2],["criticalConfirmationTpl",2]],null,0,null,Zo))],(function(t,e){var n=e.component;t(e,10,0,"OSDs List"),t(e,12,0,n.osds,n.columns,!0,!1,"multiClick","never"),t(e,15,0,n.permissions.osd,n.selection,n.tableActions);var a=t(e,18,0,!0);t(e,17,0,a,n.selection,n.clusterWideActions,"light","Cluster-wide configuration"),t(e,20,0,n.expandedRow),t(e,23,0,n.permissions.grafana.read)}),(function(t,e){t(e,7,0,s["ɵnov"](e,8).clazz),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby)}))}function Qo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-osd-list",[],null,null,null,Jo,Bo)),s["ɵprd"](256,null,es.a,Vo,[]),s["ɵdid"](2,114688,null,0,zo,[xt.a,bi,ga.a,Lt.b,_a.a,es.a,qt.m,us,ds.a,At.b,gt.a],null,null)],(function(t,e){t(e,2,0)}),null)}var Xo=s["ɵccf"]("cd-osd-list",zo,Qo,{},{},[]),tu=n("4HWh"),eu=n("p4Cf");class nu{constructor(t,e,n){this.formBuilder=t,this.bsModalRef=e,this.actionLabels=n,this.submitAction=new s.EventEmitter,this.icons=ht.a,this.filterColumns=[],this.devices=[],this.filteredDevices=[],this.capacity=0,this.canSubmit=!1,this.requiredFilters=[],this.action=n.ADD,this.createForm()}ngAfterViewInit(){const t=J.filter(this.inventoryDevices.columns,t=>this.filterColumns.includes(t.prop)&&"hostname"!==t.prop);this.requiredFilters=J.map(t,"name")}createForm(){this.formGroup=this.formBuilder.group({})}onFilterChange(t){if(this.capacity=0,this.canSubmit=!1,J.isEmpty(t.filters))this.filteredDevices=[],this.event=void 0;else{const e=t.filters.filter(t=>"hostname"!==t.prop);this.canSubmit=!J.isEmpty(e),this.filteredDevices=t.data,this.capacity=J.sumBy(this.filteredDevices,"sys_api.size"),this.event=t}}onSubmit(){this.submitAction.emit(this.event),this.bsModalRef.hide()}}class au{constructor(t,e){this.bsModalService=t,this.i18n=e,this.selected=new s.EventEmitter,this.cleared=new s.EventEmitter,this.icons=ht.a,this.devices=[],this.capacity=0,this.appliedFilters=[],this.tooltips={noAvailDevices:this.i18n("No available devices"),addPrimaryFirst:this.i18n("Please add primary devices first"),addByFilters:this.i18n("Add devices by using filters")}}ngOnInit(){this.updateAddButtonTooltip()}ngOnChanges(){this.updateAddButtonTooltip()}showSelectionModal(){let t=["human_readable_type","sys_api.vendor","sys_api.model","sys_api.size"];"data"===this.type&&(t=["hostname",...t]),this.bsModalService.show(nu,{class:"modal-xl",initialState:{hostname:this.hostname,deviceType:this.name,devices:this.availDevices,filterColumns:t}}).content.submitAction.subscribe(t=>{this.devices=t.data,this.capacity=J.sumBy(this.devices,"sys_api.size"),this.appliedFilters=t.filters;const e=J.assign({type:this.type},t);this.selected.emit(e)})}updateAddButtonTooltip(){this.addButtonTooltip="data"===this.type&&0===this.availDevices.length?this.tooltips.noAvailDevices:this.canSelect?0===this.availDevices.length?this.tooltips.noAvailDevices:this.tooltips.addByFilters:this.tooltips.addPrimaryFirst}clearDevices(){const t={type:this.type,clearedDevices:[...this.devices]};this.devices=[],this.cleared.emit(t)}}var ru=s["ɵcrt"]({encapsulation:0,styles:[[".tc_clearSelections[_ngcontent-%COMP%]{text-decoration:none}"]],data:{}});function iu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The primary storage devices. These devices contain all OSD data."]))],null,null)}function su(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device."]))],null,null)}function ou(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB devices can be used for storing BlueStore’s internal metadata. It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD)."]))],null,null)}function uu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"button",[["class","btn btn-light"],["data-toggle","tooltip"],["type","button"]],[[8,"title",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showSelectionModal()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add"]))],(function(t,e){var n=t(e,5,0,e.component.icons.add);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,1,0,n.addButtonTooltip,0===n.availDevices.length||!n.canSelect)}))}function du(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",": ",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.name,e.context.$implicit.value.formatted)}))}function lu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["Raw capacity: ",""])),s["ɵppd"](3,1)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent,0),n.capacity));t(e,2,0,a)}))}function cu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","pb-2 my-2 border-bottom"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,du)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,6,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.clearDevices(),a=!1),a}),null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,2,"cd-inventory-devices",[],null,null,null,$r,Kr)),s["ɵdid"](12,245760,null,0,Wr,[xt.a,ga.a,_a.a,Lt.b,gt.a,Br],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},null),s["ɵpad"](13,2),(t()(),s["ɵand"](16777216,null,null,1,null,lu)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.appliedFilters);var a=t(e,7,0,n.icons.clearFilters);t(e,6,0,a);var r=n.devices,i=t(e,13,0,"available","osd_ids");t(e,12,0,r,i,s["ɵEMPTY_ARRAY"]),t(e,15,0,"data"===n.type)}),null)}function fu(t){return s["ɵvid"](0,[s["ɵpid"](0,ga.a,[Ia.a]),(t()(),s["ɵeld"](1,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](2,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,10,"label",[["class","cd-col-form-label"],["for","createDeleteButton"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," devices"])),(t()(),s["ɵeld"](8,0,null,null,7,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](9,49152,null,0,eu.a,[],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,iu)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,su)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ou)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](16,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,uu)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["blockClearDevices",2]],null,0,null,cu))],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,"data"===n.type),t(e,13,0,"wal"===n.type),t(e,15,0,"db"===n.type),t(e,18,0,0===n.devices.length,s["ɵnov"](e,19))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,n.name)}))}class hu{constructor(t,e,n,a,r){this.bsModalRef=t,this.actionLabels=e,this.formBuilder=n,this.osdService=a,this.taskWrapper=r,this.driveGroups=[],this.submitAction=new s.EventEmitter,this.action=e.CREATE,this.createForm()}ngOnInit(){}createForm(){this.formGroup=this.formBuilder.group({})}onSubmit(){this.taskWrapper.wrapTaskAroundCall({task:new rs.a("osd/"+At.e.CREATE,{tracking_id:J.join(J.map(this.driveGroups,"service_id"),", ")}),call:this.osdService.create(this.driveGroups)}).subscribe(void 0,()=>{this.formGroup.setErrors({cdSubmitButton:!0})},()=>{this.submitAction.emit(),this.bsModalRef.hide()})}}class gu{constructor(){this.reset(),this.formatterService=new Ia.a,this.deviceSelectionAttrs={"sys_api.vendor":{name:"vendor"},"sys_api.model":{name:"model"},device_id:{name:"device_id"},human_readable_type:{name:"rotational",formatter:t=>"hdd"===t.toLowerCase()},"sys_api.size":{name:"size",formatter:t=>this.formatterService.format_number(t,1024,["B","KB","MB","GB","TB","PB"]).replace(" ","")}}}reset(){this.spec={service_type:"osd",service_id:`dashboard-${J.now()}`}}setName(t){this.spec.service_id=t}setHostPattern(t){this.spec.host_pattern=t}setDeviceSelection(t,e){const n=`${t}_devices`;this.spec[n]={},e.forEach(t=>{const e=this.deviceSelectionAttrs[t.prop];e&&(this.spec[n][e.name]=e.formatter?e.formatter(t.value.raw):t.value.raw)})}clearDeviceSelection(t){delete this.spec[`${t}_devices`]}setSlots(t,e){const n=`${t}_slots`;0===e?delete this.spec[n]:this.spec[n]=e}setFeature(t,e){e?this.spec[t]=!0:delete this.spec[t]}}class pu{constructor(t,e,n,a,r,i){this.actionLabels=t,this.authStorageService=e,this.i18n=n,this.orchService=a,this.router=r,this.bsModalService=i,this.icons=ht.a,this.columns=[],this.loading=!1,this.allDevices=[],this.availDevices=[],this.dataDeviceFilters=[],this.dbDeviceFilters=[],this.walDeviceFilters=[],this.hostname="",this.driveGroup=new gu,this.featureList=[],this.hasOrchestrator=!1,this.resource=this.i18n("OSDs"),this.action=this.actionLabels.CREATE,this.features={encrypted:{key:"encrypted",desc:this.i18n("Encryption")}},this.featureList=J.map(this.features,(t,e)=>Object.assign(t,{key:e})),this.createForm()}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.hasOrchestrator&&this.getDataDevices()}),this.form.get("walSlots").valueChanges.subscribe(t=>this.setSlots("wal",t)),this.form.get("dbSlots").valueChanges.subscribe(t=>this.setSlots("db",t)),J.each(this.features,t=>{this.form.get("features").get(t.key).valueChanges.subscribe(e=>this.featureFormUpdate(t.key,e))})}createForm(){this.form=new Rs.a({walSlots:new $.i(0,{updateOn:"blur",validators:[$.B.min(0)]}),dbSlots:new $.i(0,{updateOn:"blur",validators:[$.B.min(0)]}),features:new Rs.a(this.featureList.reduce((t,e)=>(t[e.key]=new $.i({value:!1,disabled:!0}),t),{}))})}getDataDevices(){this.loading||(this.loading=!0,this.orchService.inventoryDeviceList().subscribe(t=>{this.allDevices=J.filter(t,"available"),this.availDevices=[...this.allDevices],this.loading=!1},()=>{this.allDevices=[],this.availDevices=[],this.loading=!1}))}setSlots(t,e){"number"==typeof e&&e>=0&&this.driveGroup.setSlots(t,e)}featureFormUpdate(t,e){this.driveGroup.setFeature(t,e)}enableFeatures(){this.featureList.forEach(t=>{this.form.get(t.key).enable({emitEvent:!1})})}disableFeatures(){this.featureList.forEach(t=>{const e=this.form.get(t.key);e.disable({emitEvent:!1}),e.setValue(!1,{emitEvent:!1})})}onDevicesSelected(t){if(this.availDevices=t.dataOut,"data"===t.type){const e=J.find(t.filters,{prop:"hostname"});e?(this.hostname=e.value.raw,this.availDevices=t.dataOut.filter(t=>t.hostname===this.hostname),this.driveGroup.setHostPattern(this.hostname)):this.driveGroup.setHostPattern("*"),this.enableFeatures()}this.driveGroup.setDeviceSelection(t.type,t.filters)}onDevicesCleared(t){"data"===t.type?(this.availDevices=[...this.allDevices],this.walDeviceSelectionGroups.devices=[],this.dbDeviceSelectionGroups.devices=[],this.disableFeatures(),this.driveGroup.reset(),this.form.get("walSlots").setValue(0,{emitEvent:!1}),this.form.get("dbSlots").setValue(0,{emitEvent:!1})):(this.availDevices=[...this.availDevices,...t.clearedDevices],this.driveGroup.clearDeviceSelection(t.type),this.form.get(`${t.type}Slots`).setValue(0,{emitEvent:!1}))}submit(){const t=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${t}-${J.now()}`),this.bsModalService.show(hu,{initialState:{driveGroups:[this.driveGroup.spec]}}).content.submitAction.subscribe(()=>{this.router.navigate(["/osd"])}),this.previewButton.loading=!1}}var bu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function mu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,zr,Vr)),s["ɵdid"](1,114688,null,0,Gr,[vt.a,pt.a],null,null)],(function(t,e){t(e,1,0)}),null)}function yu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function vu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","walSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["WAL slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](8,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per WAL device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"input",[["class","form-control"],["formControlName","walSlots"],["id","walSlots"],["min","0"],["name","walSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,16)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,16)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,16)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),a}),null,null)),s["ɵdid"](16,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](17,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](19,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](21,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](22,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yu)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,19,0,"walSlots"),t(e,22,0,"walSlots"),t(e,24,0,n.form.showError("walSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,21).ngClassUntouched,s["ɵnov"](e,21).ngClassTouched,s["ɵnov"](e,21).ngClassPristine,s["ɵnov"](e,21).ngClassDirty,s["ɵnov"](e,21).ngClassValid,s["ɵnov"](e,21).ngClassInvalid,s["ɵnov"](e,21).ngClassPending,s["ɵnov"](e,22).validClass,s["ɵnov"](e,22).invalidClass)}))}function xu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function _u(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","dbSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](8,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per DB device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"input",[["class","form-control"],["formControlName","dbSlots"],["id","dbSlots"],["min","0"],["name","dbSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,16)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,16)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,16)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),a}),null,null)),s["ɵdid"](16,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](17,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](19,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](21,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](22,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xu)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,19,0,"dbSlots"),t(e,22,0,"dbSlots"),t(e,24,0,n.form.showError("dbSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,21).ngClassUntouched,s["ɵnov"](e,21).ngClassTouched,s["ɵnov"](e,21).ngClassPristine,s["ɵnov"](e,21).ngClassDirty,s["ɵnov"](e,21).ngClassValid,s["ɵnov"](e,21).ngClassInvalid,s["ɵnov"](e,21).ngClassPending,s["ɵnov"](e,22).validClass,s["ɵnov"](e,22).invalidClass)}))}function Tu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,2).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](4,671744,[[9,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](6,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](7,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](9,null,["",""]))],(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,7,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵnov"](e,6).ngClassUntouched,s["ɵnov"](e,6).ngClassTouched,s["ɵnov"](e,6).ngClassPristine,s["ɵnov"](e,6).ngClassDirty,s["ɵnov"](e,6).ngClassValid,s["ɵnov"](e,6).ngClassInvalid,s["ɵnov"](e,6).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass]),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,9,0,e.context.$implicit.desc)}))}function Ou(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,48,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,41,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[""," ",""])),s["ɵppd"](10,1),s["ɵppd"](11,1),(t()(),s["ɵeld"](12,0,null,null,29,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,2,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"cd-osd-devices-selection-groups",[["name","Primary"],["type","data"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),fu,ru)),s["ɵdid"](15,638976,[[1,4],["dataDeviceSelectionGroups",4]],0,au,[Lt.b,_a.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵeld"](16,0,null,null,10,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Shared devices"])),(t()(),s["ɵeld"](19,0,null,null,1,"cd-osd-devices-selection-groups",[["name","WAL"],["type","wal"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),fu,ru)),s["ɵdid"](20,638976,[[2,4],["walDeviceSelectionGroups",4]],0,au,[Lt.b,_a.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,vu)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,null,1,"cd-osd-devices-selection-groups",[["name","DB"],["type","db"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),fu,ru)),s["ɵdid"](24,638976,[[3,4],["dbDeviceSelectionGroups",4]],0,au,[Lt.b,_a.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,_u)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,14,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Configuration"])),(t()(),s["ɵeld"](30,0,null,null,11,"div",[["class","form-group row"],["formGroupName","features"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](31,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](33,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](34,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](37,0,null,0,1,"label",[["class","cd-col-form-label"],["for","features"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Features"])),(t()(),s["ɵeld"](39,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Tu)),s["ɵdid"](41,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](42,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),ws.b,ws.a)),s["ɵdid"](45,114688,[[4,4],["previewButton",4]],0,Ss.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Preview"])),(t()(),s["ɵeld"](47,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](48,49152,null,0,Ns.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.form),t(e,6,0,n.form),t(e,15,0,"data","Primary",n.availDevices,0!==n.availDevices.length),t(e,20,0,"wal","WAL",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,22,0,0!==s["ɵnov"](e,20).devices.length),t(e,24,0,"db","DB",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,26,0,0!==s["ɵnov"](e,24).devices.length),t(e,31,0,"features"),t(e,34,0),t(e,41,0,n.featureList),t(e,45,0,s["ɵnov"](e,3),0===s["ɵnov"](e,15).devices.length)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending);var a=s["ɵunv"](e,9,0,t(e,10,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,9,1,t(e,11,0,s["ɵnov"](e.parent,1),n.resource));t(e,9,0,a,r),t(e,30,0,s["ɵnov"](e,33).ngClassUntouched,s["ɵnov"](e,33).ngClassTouched,s["ɵnov"](e,33).ngClassPristine,s["ɵnov"](e,33).ngClassDirty,s["ɵnov"](e,33).ngClassValid,s["ɵnov"](e,33).ngClassInvalid,s["ɵnov"](e,33).ngClassPending,s["ɵnov"](e,34).hasErrors,s["ɵnov"](e,34).hasSuccess)}))}function wu(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Cs.a,[]),s["ɵqud"](671088640,1,{dataDeviceSelectionGroups:0}),s["ɵqud"](671088640,2,{walDeviceSelectionGroups:0}),s["ɵqud"](671088640,3,{dbDeviceSelectionGroups:0}),s["ɵqud"](671088640,4,{previewButton:0}),(t()(),s["ɵand"](16777216,null,null,1,null,mu)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ou)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,!n.hasOrchestrator),t(e,9,0,!n.loading&&n.hasOrchestrator)}),null)}function Su(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-form",[],null,null,null,wu,bu)),s["ɵdid"](1,114688,null,0,pu,[At.b,xt.a,_a.a,Br,qt.m,Lt.b],null,null)],(function(t,e){t(e,1,0)}),null)}var Iu=s["ɵccf"]("cd-osd-form",pu,Su,{},{},[]),Nu=n("iExv");class Cu{constructor(t){this.i18n=t,this.flags={runtime:this.i18n("The value can be updated at runtime."),no_mon_update:this.i18n("Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via 'ceph config\n      set ...'. This option should be configured via ceph.conf or via the\n      command line."),startup:this.i18n("Option takes effect only during daemon startup."),cluster_create:this.i18n("Option only affects cluster creation."),create:this.i18n("Option only affects daemon creation.")}}ngOnChanges(){this.selection&&(this.selection.services=J.split(this.selection.services,","))}}var Ru=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Au(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function ku(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),s["ɵppd"](4,1)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.component.flags[e.context.$implicit],""));var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit));t(e,3,0,n)}))}function Eu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function Lu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,94,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,92,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,90,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,89,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Current values"])),(t()(),s["ɵeld"](24,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Au)),s["ɵdid"](26,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](30,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](31,null,["",""])),(t()(),s["ɵeld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](35,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](36,null,["",""])),(t()(),s["ɵeld"](37,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type"])),(t()(),s["ɵeld"](40,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](41,null,["",""])),(t()(),s["ɵeld"](42,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Min"])),(t()(),s["ɵeld"](45,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](46,null,["",""])),(t()(),s["ɵeld"](47,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Max"])),(t()(),s["ɵeld"](50,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](51,null,["",""])),(t()(),s["ɵeld"](52,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Flags"])),(t()(),s["ɵeld"](55,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ku)),s["ɵdid"](57,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](58,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](61,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Eu)),s["ɵdid"](63,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](65,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Source"])),(t()(),s["ɵeld"](67,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](68,null,["",""])),(t()(),s["ɵeld"](69,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](70,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Level"])),(t()(),s["ɵeld"](72,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](73,null,["",""])),(t()(),s["ɵeld"](74,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Can be updated at runtime (editable)"])),(t()(),s["ɵeld"](77,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](78,null,["",""])),s["ɵppd"](79,1),(t()(),s["ɵeld"](80,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](81,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tags"])),(t()(),s["ɵeld"](83,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](84,null,["",""])),(t()(),s["ɵeld"](85,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enum values"])),(t()(),s["ɵeld"](88,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](89,null,["",""])),(t()(),s["ɵeld"](90,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](91,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["See also"])),(t()(),s["ɵeld"](93,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](94,null,["",""]))],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,26,0,n.selection.value),t(e,57,0,n.selection.flags),t(e,63,0,n.selection.services)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,10,0,n.selection.name),t(e,15,0,n.selection.desc),t(e,20,0,n.selection.long_desc),t(e,31,0,n.selection.default),t(e,36,0,n.selection.daemon_default),t(e,41,0,n.selection.type),t(e,46,0,n.selection.min),t(e,51,0,n.selection.max),t(e,68,0,n.selection.source),t(e,73,0,n.selection.level);var a=s["ɵunv"](e,78,0,t(e,79,0,s["ɵnov"](e.parent,1),n.selection.can_update_at_runtime));t(e,78,0,a),t(e,84,0,n.selection.tags),t(e,89,0,n.selection.enum_values),t(e,94,0,n.selection.see_also)}))}function Du(t){return s["ɵvid"](0,[s["ɵpid"](0,i.UpperCasePipe,[]),s["ɵpid"](0,Nu.a,[_a.a]),(t()(),s["ɵand"](16777216,null,null,1,null,Lu)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.selection)}),null)}class Pu extends ns.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.configurationService=e,this.i18n=n,this.actionLabels=a,this.data=[],this.icons=ht.a,this.selection=new Ur.a,this.filters=[{name:this.i18n("Level"),prop:"level",filterOptions:["basic","advanced","dev"],filterInitValue:"basic",filterPredicate:(t,e)=>{let n;return function(t){t[t.basic=0]="basic",t[t.advanced=1]="advanced",t[t.dev=2]="dev"}(n||(n={})),n[t.level]<=n[e]}},{name:this.i18n("Service"),prop:"services",filterOptions:["mon","mgr","osd","mds","common","mds_client","rgw"],filterPredicate:(t,e)=>t.services.includes(e)},{name:this.i18n("Source"),prop:"source",filterOptions:["mon"],filterPredicate:(t,e)=>!!t.hasOwnProperty("source")&&t.source.includes(e)},{name:this.i18n("Modified"),prop:"modified",filterOptions:["yes","no"],filterPredicate:(t,e)=>!("yes"!==e||!t.hasOwnProperty("value"))||"no"===e&&!t.hasOwnProperty("value")}],this.permission=this.authStorageService.getPermissions().configOpt;const r=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().name)}`;this.tableActions=[{permission:"update",icon:ht.a.edit,routerLink:()=>`/configuration/edit/${r()}`,name:this.actionLabels.EDIT,disable:()=>!this.isEditable(this.selection)}]}ngOnInit(){this.columns=[{canAutoResize:!0,prop:"name",name:this.i18n("Name")},{prop:"desc",name:this.i18n("Description"),cellClass:"wrap"},{prop:"value",name:this.i18n("Current value"),cellClass:"wrap",cellTemplate:this.confValTpl},{prop:"default",name:this.i18n("Default"),cellClass:"wrap"},{prop:"can_update_at_runtime",name:this.i18n("Editable"),cellTransformation:Hr.a.checkIcon,flexGrow:.4,cellClass:"text-center"}]}updateSelection(t){this.selection=t}getConfigurationList(t){this.configurationService.getConfigData().subscribe(t=>{this.data=t},()=>{t.error()})}isEditable(t){return 1===t.selected.length&&t.selected[0].can_update_at_runtime}}var Mu=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}  datatable-body-cell.wrap{word-break:break-all}"]],data:{}});function qu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function ju(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,qu)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.parent.context.value)}),null)}function Fu(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ju)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Gu(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{confValTpl:0}),s["ɵqud"](671088640,2,{confFlagTpl:0}),(t()(),s["ɵeld"](2,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getConfigurationList(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](3,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"],extraFilterableColumns:[4,"extraFilterableColumns"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](5,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](6,0,null,3,1,"cd-configuration-details",[["cdTableDetail",""]],null,null,null,Du,Ru)),s["ɵdid"](7,573440,null,0,Cu,[_a.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["confValTpl",2]],null,0,null,Fu))],(function(t,e){var n=e.component;t(e,3,0,n.data,n.columns,!0,"single",n.filters),t(e,5,0,n.permission,n.selection,n.tableActions),t(e,7,0,n.expandedRow)}),null)}function Vu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration",[],null,null,null,Gu,Mu)),s["ɵdid"](1,114688,null,0,Pu,[xt.a,Eo.a,_a.a,At.b],null,null)],(function(t,e){t(e,1,0)}),null)}var zu=s["ɵccf"]("cd-configuration",Pu,Vu,{},{},[]);class Bu{constructor(){this.value=[]}}class Yu{constructor(t,e,n,a,r){this.route=t,this.router=e,this.configService=n,this.notificationService=a,this.i18n=r,this.availSections=["global","mon","mgr","osd","mds","client"],this.createForm()}createForm(){const t={name:new $.i({value:null}),desc:new $.i({value:null}),long_desc:new $.i({value:null}),values:new $.k({}),default:new $.i({value:null}),daemon_default:new $.i({value:null}),services:new $.i([])};this.availSections.forEach(e=>{t.values.addControl(e,new $.i(null))}),this.configForm=new Rs.a(t)}ngOnInit(){this.route.params.subscribe(t=>{this.configService.get(t.name).subscribe(t=>{this.setResponse(t)})})}getValidators(t){const e=Lo.getTypeValidators(t);if(e)return this.patternHelpText=e.patternHelpText,"max"in e&&""!==e.max&&(this.maxValue=e.max),"min"in e&&""!==e.min&&(this.minValue=e.min),e.validators}getStep(t,e){return Lo.getTypeStep(t,e)}setResponse(t){this.response=t;const e=this.getValidators(t);this.configForm.get("name").setValue(t.name),this.configForm.get("desc").setValue(t.desc),this.configForm.get("long_desc").setValue(t.long_desc),this.configForm.get("default").setValue(t.default),this.configForm.get("daemon_default").setValue(t.daemon_default),this.configForm.get("services").setValue(t.services),this.response.value&&this.response.value.forEach(t=>{let e=null;e="true"===t.value||"false"!==t.value&&t.value,this.configForm.get("values").get(t.section).setValue(e)}),this.availSections.forEach(t=>{this.configForm.get("values").get(t).setValidators(e)});const n=Lo.getType(t.type);this.type=n.name,this.inputType=n.inputType,this.humanReadableType=n.humanReadable}createRequest(){const t=[];if(this.availSections.forEach(e=>{const n=this.configForm.getValue(e);null!==n&&""!==n&&t.push({section:e,value:n})}),!J.isEqual(this.response.value,t)){const e=new Bu;return e.name=this.configForm.getValue("name"),e.value=t,e}return null}submit(){const t=this.createRequest();t&&this.configService.create(t).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n("Updated config option {{name}}",{name:t.name})),this.router.navigate(["/configuration"])},()=>{this.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])}}var Hu=s["ɵcrt"]({encapsulation:0,styles:[[".form-component-badge[_ngcontent-%COMP%]{height:34px;display:block}.form-component-badge[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{margin-top:7px}.resize-vertical[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function Uu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","desc"],["id","desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"desc"),t(e,13,0,"desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Wu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","long_desc"],["id","long_desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"long_desc"),t(e,13,0,"long_desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Ku(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](6,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","default"],["id","default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,10,0,"default"),t(e,13,0,"default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function $u(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](6,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","daemon_default"],["id","daemon_default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[9,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,10,0,"daemon_default"),t(e,13,0,"daemon_default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Zu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","form-component-badge"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function Ju(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Zu)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,8,0,n.configForm.getValue("services"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function Qu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,19,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,18,"select",[["class","form-control custom-select"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[13,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](14,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](15,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](16,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Default --"])),(t()(),s["ɵeld"](18,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](19,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](20,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["true"])),(t()(),s["ɵeld"](22,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](23,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](24,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["false"]))],(function(t,e){t(e,1,0),t(e,10,0,e.parent.context.$implicit),t(e,13,0,e.parent.context.$implicit),t(e,15,0,null),t(e,16,0,null),t(e,19,0,!0),t(e,20,0,!0),t(e,23,0,!1),t(e,24,0,!1)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Xu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function td(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function ed(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.component.maxValue)}))}function nd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.component.minValue)}))}function ad(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,6,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[15,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xu)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,td)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ed)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nd)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,e.parent.context.$implicit),t(e,13,0,e.parent.context.$implicit),t(e,15,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"pattern")),t(e,17,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,19,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"max")),t(e,21,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,1,[n.inputType,e.parent.context.$implicit,n.humanReadableType,n.getStep(n.type,n.configForm.getValue(e.parent.context.$implicit)),s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass])}))}function rd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Qu)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ad)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"bool"===n.type),t(e,4,0,"bool"!==n.type)}),null)}function id(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,52,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,51,"form",[["name","configForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,45,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit"])),(t()(),s["ɵted"](11,null,[" "," "])),(t()(),s["ɵeld"](12,0,null,null,32,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](14,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](19,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,6,"input",[["class","form-control"],["formControlName","name"],["id","name"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](23,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](25,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](26,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Uu)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wu)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ku)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$u)),s["ɵdid"](34,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ju)),s["ɵdid"](36,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](37,0,null,null,7,"div",[["formGroupName","values"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](38,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](40,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](41,0,null,null,1,"h2",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Values"])),(t()(),s["ɵand"](16777216,null,null,1,null,rd)),s["ɵdid"](44,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](45,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](47,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),ws.b,ws.a)),s["ɵdid"](48,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](49,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](51,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](52,49152,null,0,Ns.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,14,0),t(e,23,0,"name"),t(e,26,0,"name"),t(e,28,0,n.configForm.getValue("desc")),t(e,30,0,n.configForm.getValue("long_desc")),t(e,32,0,""!==n.configForm.getValue("default")),t(e,34,0,""!==n.configForm.getValue("daemon_default")),t(e,36,0,n.configForm.getValue("services").length>0),t(e,38,0,"values"),t(e,44,0,n.availSections),t(e,48,0,s["ɵnov"](e,3))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,11,0,n.configForm.getValue("name")),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,20,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass),t(e,37,0,s["ɵnov"](e,40).ngClassUntouched,s["ɵnov"](e,40).ngClassTouched,s["ɵnov"](e,40).ngClassPristine,s["ɵnov"](e,40).ngClassDirty,s["ɵnov"](e,40).ngClassValid,s["ɵnov"](e,40).ngClassInvalid,s["ɵnov"](e,40).ngClassPending)}))}function sd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration-form",[],null,null,null,id,Hu)),s["ɵdid"](1,114688,null,0,Yu,[qt.a,qt.m,Eo.a,gt.a,_a.a],null,null)],(function(t,e){t(e,1,0)}),null)}var od=s["ɵccf"]("cd-configuration-form",Yu,sd,{},{},[]),ud=n("LOMR"),dd=n("MP8s"),ld=n("fxL3"),cd=n("gk6K"),fd=n("mrSG"),hd=n("yYhs");class gd{constructor(t){this.healthService=t,this.icons=ht.a,this.loadingIndicator=!0,this.nodes=[],this.treeOptions={useVirtualScroll:!0,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}},this.metadataKeyMap={}}ngOnInit(){this.healthService.getFullHealth().subscribe(t=>{this.loadingIndicator=!1,this.nodes=this.abstractTreeData(t)})}abstractTreeData(t){const e=t.osd_map.tree.nodes||[],n={};if(0===e.length)return[{name:"No nodes!"}];const a=[];return e.reverse().forEach(t=>{"root"===t.type&&a.push(t.id),n[t.id]=this.generateTreeLeaf(t,n)}),a.map(t=>n[t])}generateTreeLeaf(t,e){const n=t.id;this.metadataKeyMap[n]=t;const a=[],r={name:t.name+" ("+t.type+")",status:t.status,cdId:n,type:t.type};return t.children&&(t.children.sort().forEach(t=>{a.push(e[t])}),r.children=a),r}onNodeSelected(t,e){if(hd.a.ACTIVATE(t,e,!0),void 0!==e.data.cdId){const t=this.metadataKeyMap[e.data.cdId],{name:n,type:a}=t,r=fd.__rest(t,["name","type","status"]);this.metadata=r,this.metadataTitle=n+" ("+a+")"}else delete this.metadata,delete this.metadataTitle}onUpdateData(){this.tree.treeModel.expandAll()}}var pd=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function bd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,3)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.large,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function md(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](3,2),s["ɵpad"](4,3),s["ɵpod"](5,{"badge-success":0,"badge-danger":1}),(t()(),s["ɵted"](6,null,[" "," "]))],(function(t,e){var n=t(e,5,0,t(e,3,0,"in","up").includes(e.parent.context.$implicit.data.status),t(e,4,0,"down","out","destroyed").includes(e.parent.context.$implicit.data.status));t(e,2,0,"badge",n)}),(function(t,e){t(e,6,0,e.parent.context.$implicit.data.status)}))}function yd(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,md)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "])),(t()(),s["ɵeld"](4,0,null,null,3,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{"type-osd":0})],(function(t,e){t(e,1,0,e.context.$implicit.data.status);var n=t(e,7,0,"osd"===e.context.$implicit.data.type);t(e,6,0,"node-name",n)}),(function(t,e){t(e,4,0,e.context.$implicit.data.name)}))}function vd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-table-key-value",[],null,null,null,fi.b,fi.a)),s["ɵdid"](4,638976,null,0,hi.a,[be.a],{data:[0,"data"]},null)],(function(t,e){t(e,4,0,e.component.metadata)}),(function(t,e){t(e,2,0,e.component.metadataTitle)}))}function xd(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tree:0}),(t()(),s["ɵeld"](1,0,null,null,19,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,18,"div",[["class","col-sm-12 col-lg-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,17,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CRUSH map viewer"])),(t()(),s["ɵeld"](6,0,null,null,14,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,10,"div",[["class","col-sm-6 col-lg-6"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,bd)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,null,7,"tree-root",[],null,[[null,"updateData"],["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0,r=t.component;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,13).onMousedown(n)&&a),"updateData"===e&&(a=!1!==r.onUpdateData()&&a),a}),ud.b,ud.a)),s["ɵprd"](131584,null,dd.a,dd.a,[]),s["ɵdid"](13,573440,[[1,4],["tree",4]],4,ld.a,[dd.a,cd.a],{nodes:[0,"nodes"],options:[1,"options"]},{updateData:"updateData"}),s["ɵqud"](603979776,2,{loadingTemplate:0}),s["ɵqud"](603979776,3,{treeNodeTemplate:0}),s["ɵqud"](603979776,4,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,5,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["treeNodeTemplate",2]],null,0,null,yd)),(t()(),s["ɵand"](16777216,null,null,1,null,vd)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,10,0,n.loadingIndicator),t(e,13,0,n.nodes,n.treeOptions),t(e,20,0,n.metadata)}),null)}function _d(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-crushmap",[],null,null,null,xd,pd)),s["ɵdid"](1,114688,null,0,gd,[Na],null,null)],(function(t,e){t(e,1,0)}),null)}var Td=s["ɵccf"]("cd-crushmap",gd,_d,{},{},[]),Od=n("AfCQ");let wd=(()=>{class t{writeValue(e){return{type:t.WRITE_VALUE,payload:e}}changeHours(e){return{type:t.CHANGE_HOURS,payload:e}}changeMinutes(e){return{type:t.CHANGE_MINUTES,payload:e}}changeSeconds(e){return{type:t.CHANGE_SECONDS,payload:e}}setTime(e){return{type:t.SET_TIME_UNIT,payload:e}}updateControls(e){return{type:t.UPDATE_CONTROLS,payload:e}}}return t.WRITE_VALUE="[timepicker] write value from ng model",t.CHANGE_HOURS="[timepicker] change hours",t.CHANGE_MINUTES="[timepicker] change minutes",t.CHANGE_SECONDS="[timepicker] change seconds",t.SET_TIME_UNIT="[timepicker] set time unit",t.UPDATE_CONTROLS="[timepicker] update controls",t})();function Sd(t){return!!t&&!(t instanceof Date&&isNaN(t.getHours()))&&("string"!=typeof t||Sd(new Date(t)))}function Id(t,e){return!(t.min&&e<t.min||t.max&&e>t.max)}function Nd(t){return"number"==typeof t?t:parseInt(t,10)}function Cd(t,e=!1){const n=Nd(t);return isNaN(n)||n<0||n>(e?12:24)?NaN:n}function Rd(t){const e=Nd(t);return isNaN(e)||e<0||e>60?NaN:e}function Ad(t){const e=Nd(t);return isNaN(e)||e<0||e>60?NaN:e}function kd(t){return"string"==typeof t?new Date(t):t}function Ed(t,e){if(!t)return Ed(Dd(new Date,0,0,0),e);let n=t.getHours(),a=t.getMinutes(),r=t.getSeconds();return e.hour&&(n+=Nd(e.hour)),e.minute&&(a+=Nd(e.minute)),e.seconds&&(r+=Nd(e.seconds)),Dd(t,n,a,r)}function Ld(t,e){let n=Cd(e.hour);const a=Rd(e.minute),r=Ad(e.seconds)||0;return e.isPM&&12!==n&&(n+=12),t?isNaN(n)||isNaN(a)?t:Dd(t,n,a,r):isNaN(n)||isNaN(a)?t:Dd(new Date,n,a,r)}function Dd(t,e,n,a){const r=new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,n,a,t.getMilliseconds());return r.setFullYear(t.getFullYear()),r.setMonth(t.getMonth()),r.setDate(t.getDate()),r}function Pd(t){const e=t.toString();return e.length>1?e:`0${e}`}function Md(t,e){return!isNaN(Cd(t,e))}function qd(t){return!isNaN(Rd(t))}function jd(t){return!isNaN(Ad(t))}function Fd(t,e="0",n="0",a){return Md(t,a)&&qd(e)&&jd(n)}function Gd(t,e){if(t.readonlyInput||t.disabled)return!1;if(e){if("wheel"===e.source&&!t.mousewheel)return!1;if("key"===e.source&&!t.arrowkeys)return!1}return!0}function Vd(t){const{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:o,showSpinners:u,showMeridian:d,showSeconds:l,meridians:c,min:f,max:h}=t;return{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:o,showSpinners:u,showMeridian:d,showSeconds:l,meridians:c,min:f,max:h}}class zd{constructor(){this.hourStep=1,this.minuteStep=5,this.secondsStep=10,this.showMeridian=!0,this.meridians=["AM","PM"],this.readonlyInput=!1,this.disabled=!1,this.mousewheel=!0,this.arrowkeys=!0,this.showSpinners=!0,this.showSeconds=!1,this.showMinutes=!0,this.hoursPlaceholder="HH",this.minutesPlaceholder="MM",this.secondsPlaceholder="SS",this.ariaLabelHours="hours",this.ariaLabelMinutes="minutes",this.ariaLabelSeconds="seconds"}}const Bd={value:null,config:new zd,controls:{canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0}};function Yd(t=Bd,e){switch(e.type){case wd.WRITE_VALUE:return Object.assign({},t,{value:e.payload});case wd.CHANGE_HOURS:{if(!Gd(t.config,e.payload)||(a=t.controls,!(n=e.payload).step||n.step>0&&!a.canIncrementHours||n.step<0&&!a.canDecrementHours))return t;const r=Ed(t.value,{hour:e.payload.step});return!t.config.max&&!t.config.min||Id(t.config,r)?Object.assign({},t,{value:r}):t}case wd.CHANGE_MINUTES:{if(!Gd(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementMinutes||t.step<0&&!e.canDecrementMinutes)}(e.payload,t.controls))return t;const n=Ed(t.value,{minute:e.payload.step});return!t.config.max&&!t.config.min||Id(t.config,n)?Object.assign({},t,{value:n}):t}case wd.CHANGE_SECONDS:{if(!Gd(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementSeconds||t.step<0&&!e.canDecrementSeconds)}(e.payload,t.controls))return t;const n=Ed(t.value,{seconds:e.payload.step});return!t.config.max&&!t.config.min||Id(t.config,n)?Object.assign({},t,{value:n}):t}case wd.SET_TIME_UNIT:{if(!Gd(t.config))return t;const n=Ld(t.value,e.payload);return Object.assign({},t,{value:n})}case wd.UPDATE_CONTROLS:{const n=function(t,e){const{min:n,max:a,hourStep:r,minuteStep:i,secondsStep:s,showSeconds:o}=e,u={canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0};if(!t)return u;if(a){const e=Ed(t,{hour:r});if(u.canIncrementHours=a>e,!u.canIncrementHours){const e=Ed(t,{minute:i});u.canIncrementMinutes=o?a>e:a>=e}if(!u.canIncrementMinutes){const e=Ed(t,{seconds:s});u.canIncrementSeconds=a>=e}t.getHours()<12&&(u.canToggleMeridian=Ed(t,{hour:12})<a)}if(n){const e=Ed(t,{hour:-r});if(u.canDecrementHours=n<e,!u.canDecrementHours){const e=Ed(t,{minute:-i});u.canDecrementMinutes=o?n<e:n<=e}if(!u.canDecrementMinutes){const e=Ed(t,{seconds:-s});u.canDecrementSeconds=n<=e}t.getHours()>=12&&(u.canToggleMeridian=Ed(t,{hour:-12})>n)}return u}(t.value,e.payload),a={value:t.value,config:e.payload,controls:n};return t.config.showMeridian!==a.config.showMeridian&&t.value&&(a.value=new Date(t.value)),Object.assign({},t,a)}default:return t}var n,a}class Hd extends Od.b{constructor(){const t=new Ca.a({type:"[mini-ngrx] dispatcher init"});super(t,Yd,new Od.a(Bd,t,Yd))}}class Ud{constructor(t,e,n,a){this._cd=e,this._store=n,this._timepickerActions=a,this.isValid=new s.EventEmitter,this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1,this.onChange=Function.prototype,this.onTouched=Function.prototype,Object.assign(this,t),this.timepickerSub=n.select(t=>t.value).subscribe(t=>{this._renderTime(t),this.onChange(t),this._store.dispatch(this._timepickerActions.updateControls(Vd(this)))}),n.select(t=>t.controls).subscribe(t=>{this.isValid.emit(Fd(this.hours,this.minutes,this.seconds,this.isPM())),Object.assign(this,t),e.markForCheck()})}get isSpinnersVisible(){return this.showSpinners&&!this.readonlyInput}get isEditable(){return!(this.readonlyInput||this.disabled)}resetValidation(){this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1}isPM(){return this.showMeridian&&this.meridian===this.meridians[1]}prevDef(t){t.preventDefault()}wheelSign(t){return-1*Math.sign(t.deltaY)}ngOnChanges(t){this._store.dispatch(this._timepickerActions.updateControls(Vd(this)))}changeHours(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeHours({step:t,source:e}))}changeMinutes(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeMinutes({step:t,source:e}))}changeSeconds(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeSeconds({step:t,source:e}))}updateHours(t){if(this.resetValidation(),this.hours=t,!Md(this.hours,this.isPM())||!this.isValidLimit())return this.invalidHours=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateMinutes(t){if(this.resetValidation(),this.minutes=t,!qd(this.minutes)||!this.isValidLimit())return this.invalidMinutes=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateSeconds(t){if(this.resetValidation(),this.seconds=t,!jd(this.seconds)||!this.isValidLimit())return this.invalidSeconds=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}isValidLimit(){return function(t,e,n){const a=Ld(new Date,t);return!(e&&a>e||n&&a<n)}({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()},this.max,this.min)}_updateTime(){if(!Fd(this.hours,this.showMinutes?this.minutes:void 0,this.showSeconds?this.seconds:void 0,this.isPM()))return this.isValid.emit(!1),void this.onChange(null);this._store.dispatch(this._timepickerActions.setTime({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()}))}toggleMeridian(){this.showMeridian&&this.isEditable&&this._store.dispatch(this._timepickerActions.changeHours({step:12,source:""}))}writeValue(t){Sd(t)?this._store.dispatch(this._timepickerActions.writeValue(kd(t))):null==t&&this._store.dispatch(this._timepickerActions.writeValue(null))}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.disabled=t,this._cd.markForCheck()}ngOnDestroy(){this.timepickerSub.unsubscribe()}_renderTime(t){if(!Sd(t))return this.hours="",this.minutes="",this.seconds="",void(this.meridian=this.meridians[0]);const e=kd(t);let n=e.getHours();this.showMeridian&&(this.meridian=this.meridians[n>=12?1:0],n%=12,0===n&&(n=12)),this.hours=Pd(n),this.minutes=Pd(e.getMinutes()),this.seconds=Pd(e.getUTCSeconds())}}class Wd{static forRoot(){return{ngModule:Wd,providers:[zd,wd,Hd]}}}var Kd=s["ɵcrt"]({encapsulation:2,styles:["\n    .bs-chevron {\n      border-style: solid;\n      display: block;\n      width: 9px;\n      height: 9px;\n      position: relative;\n      border-width: 3px 0px 0 3px;\n    }\n\n    .bs-chevron-up {\n      -webkit-transform: rotate(45deg);\n      transform: rotate(45deg);\n      top: 2px;\n    }\n\n    .bs-chevron-down {\n      -webkit-transform: rotate(-135deg);\n      transform: rotate(-135deg);\n      top: -2px;\n    }\n\n    .bs-timepicker-field {\n      width: 50px;\n      padding: .375rem .55rem;\n    }\n  "],data:{}});function $d(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function Zd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementMinutes||!n.isEditable)}))}function Jd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function Qd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementSeconds||!n.isEditable)}))}function Xd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function tl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function el(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function nl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeMinutes(r.minuteStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeMinutes(r.minuteStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep,"key")&&a),"change"===e&&(a=!1!==r.updateMinutes(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidMinutes),t(e,1,0,n.invalidMinutes,n.minutesPlaceholder,n.readonlyInput,n.disabled,n.minutes,n.labelMinutes)}))}function al(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function rl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeSeconds(r.secondsStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeSeconds(r.secondsStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep,"key")&&a),"change"===e&&(a=!1!==r.updateSeconds(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidSeconds),t(e,1,0,n.invalidSeconds,n.secondsPlaceholder,n.readonlyInput,n.disabled,n.seconds,n.labelSeconds)}))}function il(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function sl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-default text-center"],["type","button"]],[[8,"disabled",0],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleMeridian()&&a),a}),null,null)),(t()(),s["ɵted"](2,null,[""," "]))],null,(function(t,e){var n=e.component;t(e,1,0,!n.isEditable||!n.canToggleMeridian,!n.isEditable||!n.canToggleMeridian),t(e,2,0,n.meridian)}))}function ol(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function ul(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementMinutes||!n.isEditable)}))}function dl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function ll(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementSeconds||!n.isEditable)}))}function cl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function fl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function hl(t){return s["ɵvid"](2,[(t()(),s["ɵeld"](0,0,null,null,48,"table",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,$d)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zd)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jd)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qd)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xd)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tl)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,14,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeHours(r.hourStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeHours(r.hourStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeHours(0-r.hourStep,"key")&&a),"change"===e&&(a=!1!==r.updateHours(n.target.value)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,el)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nl)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,al)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rl)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,il)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sl)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](33,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](34,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(0-r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](36,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ol)),s["ɵdid"](38,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ul)),s["ɵdid"](40,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dl)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ll)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cl)),s["ɵdid"](46,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fl)),s["ɵdid"](48,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.showMinutes),t(e,9,0,n.showMinutes),t(e,11,0,n.showSeconds),t(e,13,0,n.showSeconds),t(e,15,0,n.showMeridian),t(e,17,0,n.showMeridian),t(e,22,0,n.showMinutes),t(e,24,0,n.showMinutes),t(e,26,0,n.showSeconds),t(e,28,0,n.showSeconds),t(e,30,0,n.showMeridian),t(e,32,0,n.showMeridian),t(e,38,0,n.showMinutes),t(e,40,0,n.showMinutes),t(e,42,0,n.showSeconds),t(e,44,0,n.showSeconds),t(e,46,0,n.showMeridian),t(e,48,0,n.showMeridian)}),(function(t,e){var n=e.component;t(e,2,0,!n.showSpinners),t(e,4,0,!n.canIncrementHours||!n.isEditable),t(e,19,0,n.invalidHours),t(e,20,0,n.invalidHours,n.hoursPlaceholder,n.readonlyInput,n.disabled,n.hours,n.labelHours),t(e,33,0,!n.showSpinners),t(e,35,0,!n.canDecrementHours||!n.isEditable)}))}var gl=n("E2fk");let pl=(()=>{class t{constructor(t){this.http=t}getLogs(){return this.http.get("api/logs/all")}validateDashboardUrl(t){return this.http.get(`api/grafana/validation/${t}`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})();class bl{constructor(t,e,n){this.logsService=t,this.datePipe=e,this.ngZone=n,this.icons=ht.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.prioritys=[{name:"Info",value:"[INF]"},{name:"Warning",value:"[WRN]"},{name:"Error",value:"[ERR]"},{name:"All",value:"All"}],this.priority="All",this.search="",this.startTime=new Date,this.endTime=new Date,this.startTime.setHours(0,0),this.endTime.setHours(23,59)}ngOnInit(){this.getInfo(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.getInfo()})},5e3)})}ngOnDestroy(){clearInterval(this.interval)}getInfo(){this.logsService.getLogs().subscribe(t=>{this.contentData=t,this.filterLogs()})}abstractfilters(){const t=this.priority,e=this.search.toLowerCase().replace(/,/g,"");let n;if(this.selectedDate){const t=this.selectedDate.getMonth()+1,e=this.selectedDate.getDate();n=`${this.selectedDate.getFullYear().toString()}-${t<=9?`0${t}`:`${t}`}-${e<=9?`0${e}`:`${e}`}`}else n="";return{priority:t,key:e,yearMonthDay:n,sTime:60*(this.startTime?this.startTime.getHours():0)+(this.startTime?this.startTime.getMinutes():0),eTime:60*(this.endTime?this.endTime.getHours():23)+(this.endTime?this.endTime.getMinutes():59)}}filterExecutor(t,e){return t.filter(t=>{const n=this.datePipe.transform(t.stamp,"mediumTime"),a=parseInt(n.split(":")[0],10),r=parseInt(n.split(":")[1],10);let i,s,o;return i="All"===e.priority?t.priority:e.priority,s=e.yearMonthDay?e.yearMonthDay:t.stamp,o=60*a+r,t.priority===i&&-1!==t.message.toLowerCase().indexOf(e.key)&&-1!==t.stamp.indexOf(s)&&o>=e.sTime&&o<=e.eTime})}filterLogs(){const t=this.abstractfilters();this.clog=this.filterExecutor(this.contentData.clog,t),this.audit_log=this.filterExecutor(this.contentData.audit_log,t)}clearSearchKey(){this.search="",this.filterLogs()}clearDate(){this.selectedDate=null,this.filterLogs()}}var ml=s["ɵcrt"]({encapsulation:0,styles:[["p[_ngcontent-%COMP%]{font-family:monospace}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:flex}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.card[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{font-weight:700;flex-shrink:0}.card[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.card[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.card[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#a94442}.card[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.card[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}  timepicker table tbody tr td input.bs-timepicker-field{width:3.5rem!important;font-size:1rem;padding:4px 6px}.middle[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function yl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function vl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function xl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function _l(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,vl)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xl)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.clog),t(e,5,0,0===n.contentData.clog.length)}),null)}function Tl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function Ol(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function wl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Tl)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ol)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.audit_log),t(e,5,0,0===n.contentData.audit_log.length)}),null)}function Sl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,yl)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](3,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](4,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](5,0,null,0,3,"tab",[["heading","Cluster Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](6,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_l)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,3,"tab",[["heading","Audit Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](10,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wl)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,s["ɵnov"](e.parent,4)),t(e,6,0,"Cluster Logs"),t(e,8,0,n.clog),t(e,10,0,"Audit Logs"),t(e,12,0,n.audit_log)}),(function(t,e){t(e,3,0,s["ɵnov"](e,4).clazz),t(e,5,0,s["ɵnov"](e,6).id,s["ɵnov"](e,6).active,s["ɵnov"](e,6).addClass,s["ɵnov"](e,6).role,s["ɵnov"](e,6).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby)}))}function Il(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function Nl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,81,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](2,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority:"])),(t()(),s["ɵeld"](7,0,null,0,8,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"ngModelChange"===e&&(a=!1!==(r.priority=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Il)),s["ɵdid"](15,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](16,0,null,null,22,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](17,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](20,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Keyword:"])),(t()(),s["ɵeld"](22,0,null,0,16,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,5,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](25,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](27,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](28,1),(t()(),s["ɵeld"](29,0,null,null,6,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,30)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,30).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,30)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,30)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.search=n)&&a),"keyup"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](30,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](32,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](34,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](35,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵeld"](36,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearSearchKey()&&a),a}),null,null)),(t()(),s["ɵeld"](38,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](39,0,null,null,19,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](40,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](43,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Date:"])),(t()(),s["ɵeld"](45,0,null,0,13,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["placeholder","Datepicker"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,47)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,47).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,47)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,47)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,49).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,49).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,49).onBlur()&&a),"ngModelChange"===e&&(a=!1!==(r.selectedDate=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](47,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](48,737280,null,0,rt.c,[rt.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](49,16384,null,0,rt.f,[rt.c,rt.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[rt.f]),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,rt.f]),s["ɵdid"](52,671744,null,0,$.u,[[8,null],[6,$.o],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](54,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](55,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵeld"](56,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](57,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearDate()&&a),a}),null,null)),(t()(),s["ɵeld"](58,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,22,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](60,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](63,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Time range:"])),(t()(),s["ɵeld"](65,0,null,0,16,"div",[["class","d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](66,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.startTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),hl,Kd)),s["ɵprd"](512,null,Hd,Hd,[]),s["ɵdid"](68,704512,null,0,Ud,[zd,s.ChangeDetectorRef,Hd,wd],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[Ud]),s["ɵdid"](70,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](72,16384,null,0,$.r,[[4,$.q]],null,null),(t()(),s["ɵeld"](73,0,null,null,1,"span",[["class","middle"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" — "])),(t()(),s["ɵeld"](75,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.endTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),hl,Kd)),s["ɵprd"](512,null,Hd,Hd,[]),s["ɵdid"](77,704512,null,0,Ud,[zd,s.ChangeDetectorRef,Hd,wd],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[Ud]),s["ɵdid"](79,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](81,16384,null,0,$.r,[[4,$.q]],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,10,0,n.priority),t(e,15,0,n.prioritys),t(e,17,0);var a=t(e,28,0,n.icons.search);t(e,27,0,a),t(e,32,0,n.search),t(e,40,0),t(e,48,0,n.bsConfig),t(e,52,0,n.selectedDate),t(e,60,0),t(e,68,0,1,!1,!1),t(e,70,0,n.startTime),t(e,77,0,1,!1,!1),t(e,79,0,n.endTime)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass),t(e,16,0,s["ɵnov"](e,17).hasErrors,s["ɵnov"](e,17).hasSuccess),t(e,29,0,s["ɵnov"](e,34).ngClassUntouched,s["ɵnov"](e,34).ngClassTouched,s["ɵnov"](e,34).ngClassPristine,s["ɵnov"](e,34).ngClassDirty,s["ɵnov"](e,34).ngClassValid,s["ɵnov"](e,34).ngClassInvalid,s["ɵnov"](e,34).ngClassPending,s["ɵnov"](e,35).validClass,s["ɵnov"](e,35).invalidClass),t(e,38,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,39,0,s["ɵnov"](e,40).hasErrors,s["ɵnov"](e,40).hasSuccess),t(e,46,0,s["ɵnov"](e,54).ngClassUntouched,s["ɵnov"](e,54).ngClassTouched,s["ɵnov"](e,54).ngClassPristine,s["ɵnov"](e,54).ngClassDirty,s["ɵnov"](e,54).ngClassValid,s["ɵnov"](e,54).ngClassInvalid,s["ɵnov"](e,54).ngClassPending,s["ɵnov"](e,55).validClass,s["ɵnov"](e,55).invalidClass),t(e,58,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,59,0,s["ɵnov"](e,60).hasErrors,s["ɵnov"](e,60).hasSuccess),t(e,66,0,s["ɵnov"](e,72).ngClassUntouched,s["ɵnov"](e,72).ngClassTouched,s["ɵnov"](e,72).ngClassPristine,s["ɵnov"](e,72).ngClassDirty,s["ɵnov"](e,72).ngClassValid,s["ɵnov"](e,72).ngClassInvalid,s["ɵnov"](e,72).ngClassPending),t(e,75,0,s["ɵnov"](e,81).ngClassUntouched,s["ɵnov"](e,81).ngClassTouched,s["ɵnov"](e,81).ngClassPristine,s["ɵnov"](e,81).ngClassDirty,s["ɵnov"](e,81).ngClassValid,s["ɵnov"](e,81).ngClassInvalid,s["ɵnov"](e,81).ngClassPending)}))}function Cl(t){return s["ɵvid"](0,[s["ɵpid"](0,be.a,[i.DatePipe]),s["ɵpid"](0,gl.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,Sl)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logFiltersTpl",2]],null,0,null,Nl))],(function(t,e){t(e,3,0,e.component.contentData)}),null)}function Rl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-logs",[],null,null,null,Cl,ml)),s["ɵdid"](1,245760,null,0,bl,[pl,i.DatePipe,s.NgZone],null,null)],(function(t,e){t(e,1,0)}),null)}var Al=s["ɵccf"]("cd-logs",bl,Rl,{},{},[]),kl=n("OcYo");let El=(()=>{class t{constructor(t,e,n,a,r,i,s){this.formBuilder=t,this.mgrModuleService=e,this.notificationService=n,this.router=a,this.telemetryService=r,this.i18n=i,this.textToDownloadService=s,this.error=!1,this.licenseAgrmt=!1,this.loading=!1,this.options={},this.requiredFields=["channel_basic","channel_crash","channel_device","channel_ident","interval","proxy","contact","description"],this.report=void 0,this.reportId=void 0,this.sendToUrl="",this.sendToDeviceUrl="",this.step=1}ngOnInit(){this.loading=!0;const t=[this.mgrModuleService.getOptions("telemetry"),this.mgrModuleService.getConfig("telemetry")];Object(Ro.a)(t).subscribe(t=>{const e=t[1];this.moduleEnabled=e.enabled,this.sendToUrl=e.url,this.sendToDeviceUrl=e.device_url,this.options=J.pick(t[0],this.requiredFields);const n=J.pick(e,this.requiredFields);this.createConfigForm(),this.configForm.setValue(n),this.loading=!1},t=>{this.error=!0})}createConfigForm(){const t={};J.forEach(Object.values(this.options),e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.configForm=this.formBuilder.group(t)}createPreviewForm(){const t={report:JSON.stringify(this.report,null,2),reportId:this.reportId,licenseAgrmt:[this.licenseAgrmt,$.B.requiredTrue]};this.previewForm=this.formBuilder.group(t)}getValidators(t){const e=[];switch(t.type){case"int":e.push(As.a.number()),e.push($.B.required),J.isNumber(t.min)&&e.push($.B.min(t.min)),J.isNumber(t.max)&&e.push($.B.max(t.max));break;case"str":J.isNumber(t.min)&&e.push($.B.minLength(t.min)),J.isNumber(t.max)&&e.push($.B.maxLength(t.max))}return e}getReport(){this.loading=!0,this.telemetryService.getReport().subscribe(t=>{this.report=t,this.reportId=t.report.report_id,this.createPreviewForm(),this.loading=!1,this.step++},t=>{this.error=!0})}updateConfig(){const t={};J.forEach(Object.values(this.options),e=>{const n=this.configForm.get(e.name);n.dirty&&n.valid&&(t[e.name]=n.value)}),this.mgrModuleService.updateConfig("telemetry",t).subscribe(()=>{this.disableModule(this.i18n("Your settings have been applied successfully. Due to privacy/legal reasons the Telemetry module is now disabled until you complete the next step and accept the license."),()=>{this.getReport()})},()=>{this.configForm.setErrors({cdSubmitButton:!0})})}download(t,e){this.textToDownloadService.download(JSON.stringify(t,null,2),e)}disableModule(t=null,e=null){this.telemetryService.enable(!1).subscribe(()=>{t&&this.notificationService.show(Ie.a.success,t),e?e():this.router.navigate([""])})}next(){this.configForm.pristine?this.getReport():this.updateConfig()}back(){this.step--}onSubmit(){this.telemetryService.enable().subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n("The Telemetry module has been configured and activated successfully.")),this.router.navigate([""])})}}return fd.__decorate([L(),fd.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})(),Ll=(()=>{class t{constructor(t){this.http=t,this.url="api/mgr/module"}list(){return this.http.get(`${this.url}`)}getConfig(t){return this.http.get(`${this.url}/${t}`)}updateConfig(t,e){return this.http.put(`${this.url}/${t}`,{config:e})}enable(t){return this.http.post(`${this.url}/${t}/enable`,null)}disable(t){return this.http.post(`${this.url}/${t}/disable`,null)}getOptions(t){return this.http.get(`${this.url}/${t}/options`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})(),Dl=(()=>{class t{constructor(t){this.http=t,this.url="api/telemetry"}getReport(){return this.http.get(`${this.url}/report`)}enable(t=!0){const e={enable:t};return t&&(e.license_name="sharing-1-0"),this.http.put(`${this.url}`,e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})();var Pl=n("Iab2");let Ml=(()=>{class t{constructor(){}download(t,e){Object(Pl.saveAs)(new Blob([t]),e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();var ql=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function jl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,gi.b,gi.a)),s["ɵdid"](1,49152,null,0,pi.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function Fl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function Gl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The plugin is already "])),(t()(),s["ɵeld"](2,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["enabled"])),(t()(),s["ɵted"](-1,null,[". Click "])),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"])),(t()(),s["ɵted"](-1,null,[" to disable it.  "])),(t()(),s["ɵeld"](8,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.disableModule("The Telemetry module has been disabled successfully.")&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"]))],null,null)}function Vl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is too low! It must be greater or equal to 8."]))],null,null)}function zl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,224,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,223,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,217,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report configuration"])),(t()(),s["ɵeld"](10,0,null,null,209,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,12,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The telemetry module sends anonymous data about this Ceph cluster back to the Ceph developers to help understand how Ceph is used and what problems users may be experiencing."])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" This data is visualized on "])),(t()(),s["ɵeld"](15,0,null,null,1,"a",[["href","https://telemetry-public.ceph.com/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["public dashboards"])),(t()(),s["ɵted"](-1,null,[" that allow the community to quickly see summary statistics on how many clusters are reporting, their total capacity and OSD count, and version distribution trends."])),(t()(),s["ɵeld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The data being reported does "])),(t()(),s["ɵeld"](21,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["not"])),(t()(),s["ɵted"](23,null,[" contain any sensitive data like pool names, object names, object contents, hostnames, or device serial numbers. It contains counters and statistics on how the cluster has been deployed, the version of Ceph, the distribution of the hosts and other parameters which help the project to gain a better understanding of the way Ceph is used. The data is sent secured to "," and "," (device report)."])),(t()(),s["ɵand"](16777216,null,null,1,null,Gl)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Channels"])),(t()(),s["ɵeld"](28,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,['The telemetry report is broken down into several "channels", each with a different type of information that can be configured below.'])),(t()(),s["ɵeld"](30,0,null,null,31,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](31,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,17,"label",[["class","cd-col-form-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Basic"])),(t()(),s["ɵeld"](37,0,null,null,14,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](38,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](39,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes basic information about the cluster:"])),(t()(),s["ɵeld"](41,0,null,0,10,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](42,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Capacity of the cluster"])),(t()(),s["ɵeld"](44,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number of monitors, managers, OSDs, MDSs, object gateways, or other daemons"])),(t()(),s["ɵeld"](46,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Software version currently being used"])),(t()(),s["ɵeld"](48,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number and types of RADOS pools and CephFS file systems"])),(t()(),s["ɵeld"](50,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Names of configuration options that have been changed from their default (but not their values)"])),(t()(),s["ɵeld"](52,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](54,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_basic"],["id","channel_basic"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,55).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,55).onTouched()&&a),a}),null,null)),s["ɵdid"](55,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](57,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](59,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](60,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](61,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](62,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](63,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](66,0,null,0,15,"label",[["class","cd-col-form-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](67,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Crash"])),(t()(),s["ɵeld"](69,0,null,null,12,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](70,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](71,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes information about daemon crashes:"])),(t()(),s["ɵeld"](73,0,null,0,8,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](74,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type of daemon"])),(t()(),s["ɵeld"](76,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version of the daemon"])),(t()(),s["ɵeld"](78,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Operating system (OS distribution, kernel version)"])),(t()(),s["ɵeld"](80,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Stack trace identifying where in the Ceph code the crash occurred"])),(t()(),s["ɵeld"](82,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](83,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](84,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_crash"],["id","channel_crash"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,85).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,85).onTouched()&&a),a}),null,null)),s["ɵdid"](85,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](87,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](89,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](90,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](91,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](92,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](93,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](96,0,null,0,4,"label",[["class","cd-col-form-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](97,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Device"])),(t()(),s["ɵeld"](99,0,null,null,1,"cd-helper",[["html","Includes information about device metrics like anonymized SMART metrics."]],null,null,null,tu.b,tu.a)),s["ɵdid"](100,49152,null,0,eu.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](101,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](102,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](103,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_device"],["id","channel_device"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,104).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,104).onTouched()&&a),a}),null,null)),s["ɵdid"](104,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](106,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](108,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](109,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](110,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](111,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](112,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](115,0,null,0,11,"label",[["class","cd-col-form-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵeld"](116,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ident"])),(t()(),s["ɵeld"](118,0,null,null,8,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](119,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](120,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes user-provided identifying information about the cluster:"])),(t()(),s["ɵeld"](122,0,null,0,4,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](123,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster description"])),(t()(),s["ɵeld"](125,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact email address"])),(t()(),s["ɵeld"](127,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](128,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](129,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_ident"],["id","channel_ident"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,130).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,130).onTouched()&&a),a}),null,null)),s["ɵdid"](130,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](132,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](134,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](135,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](136,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵeld"](137,0,null,null,5,"legend",[],null,null,null,null,null)),(t()(),s["ɵeld"](138,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact Information"])),(t()(),s["ɵeld"](140,0,null,null,2,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](141,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](-1,0,["Submitting any contact information is completely optional and disabled by default."])),(t()(),s["ɵeld"](143,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](144,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](147,0,null,0,1,"label",[["class","cd-col-form-label"],["for","contact"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact"])),(t()(),s["ɵeld"](149,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](150,0,null,null,6,"input",[["class","form-control"],["formControlName","contact"],["id","contact"],["placeholder","Example User <user@example.com>"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,151)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,151).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,151)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,151)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](151,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](153,671744,[[9,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](155,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](156,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](157,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](158,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](161,0,null,0,1,"label",[["class","cd-col-form-label"],["for","description"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](163,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](164,0,null,null,6,"input",[["class","form-control"],["formControlName","description"],["id","description"],["placeholder","My first Ceph cluster"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,165)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,165).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,165)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,165)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](165,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](167,671744,[[11,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](169,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](170,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](171,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced Settings"])),(t()(),s["ɵeld"](173,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](174,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](177,0,null,0,5,"label",[["class","cd-col-form-label"],["for","interval"]],null,null,null,null,null)),(t()(),s["ɵeld"](178,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Interval"])),(t()(),s["ɵeld"](180,0,null,null,2,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](181,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](-1,0,["The module compiles and sends a new report every 24 hours by default. You can adjust this interval by setting a different number of hours."])),(t()(),s["ɵeld"](183,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](184,0,null,null,7,"input",[["class","form-control"],["formControlName","interval"],["id","interval"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,185)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,185).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,185)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,185)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,186).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,186).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,186).onTouched()&&a),a}),null,null)),s["ɵdid"](185,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](186,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](188,671744,[[13,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](190,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](191,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vl)),s["ɵdid"](193,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](194,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](195,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](198,0,null,0,8,"label",[["class","cd-col-form-label"],["for","proxy"]],null,null,null,null,null)),(t()(),s["ɵeld"](199,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Proxy"])),(t()(),s["ɵeld"](201,0,null,null,5,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](202,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](203,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["If the cluster cannot directly connect to the configured telemetry endpoint (default telemetry.ceph.com), you can configure a HTTP/HTTPS proxy server by e.g. adding https://10.0.0.1:8080"])),(t()(),s["ɵeld"](205,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You can also include a user:pass if needed e.g. https://ceph:telemetry@10.0.0.1:8080"])),(t()(),s["ɵeld"](207,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](208,0,null,null,6,"input",[["class","form-control"],["formControlName","proxy"],["id","proxy"],["placeholder","https://10.0.0.1:8080"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,209)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,209).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,209)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,209)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](209,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](211,671744,[[15,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](213,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](214,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](215,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](216,0,null,null,3,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](217,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Note:"])),(t()(),s["ɵted"](-1,null,[" By clicking 'Next' you will first see a preview of the report content before you can activate the automatic submission of your data."])),(t()(),s["ɵeld"](220,0,null,null,4,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](221,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](222,0,null,null,2,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.next()&&a),a}),null,null)),(t()(),s["ɵeld"](223,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Next"]))],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,25,0,n.moduleEnabled),t(e,31,0),t(e,57,0,"channel_basic"),t(e,60,0,"channel_basic"),t(e,63,0),t(e,87,0,"channel_crash"),t(e,90,0,"channel_crash"),t(e,93,0),t(e,100,0,"Includes information about device metrics like anonymized SMART metrics."),t(e,106,0,"channel_device"),t(e,109,0,"channel_device"),t(e,112,0),t(e,132,0,"channel_ident"),t(e,135,0,"channel_ident"),t(e,144,0),t(e,153,0,"contact"),t(e,156,0,"contact"),t(e,158,0),t(e,167,0,"description"),t(e,170,0,"description"),t(e,174,0),t(e,188,0,"interval"),t(e,191,0,"interval"),t(e,193,0,n.configForm.showError("interval",s["ɵnov"](e,3),"min")),t(e,195,0),t(e,211,0,"proxy"),t(e,214,0,"proxy")}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,23,0,n.sendToUrl,n.sendToDeviceUrl),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,54,0,s["ɵnov"](e,59).ngClassUntouched,s["ɵnov"](e,59).ngClassTouched,s["ɵnov"](e,59).ngClassPristine,s["ɵnov"](e,59).ngClassDirty,s["ɵnov"](e,59).ngClassValid,s["ɵnov"](e,59).ngClassInvalid,s["ɵnov"](e,59).ngClassPending,s["ɵnov"](e,60).validClass,s["ɵnov"](e,60).invalidClass),t(e,62,0,s["ɵnov"](e,63).hasErrors,s["ɵnov"](e,63).hasSuccess),t(e,84,0,s["ɵnov"](e,89).ngClassUntouched,s["ɵnov"](e,89).ngClassTouched,s["ɵnov"](e,89).ngClassPristine,s["ɵnov"](e,89).ngClassDirty,s["ɵnov"](e,89).ngClassValid,s["ɵnov"](e,89).ngClassInvalid,s["ɵnov"](e,89).ngClassPending,s["ɵnov"](e,90).validClass,s["ɵnov"](e,90).invalidClass),t(e,92,0,s["ɵnov"](e,93).hasErrors,s["ɵnov"](e,93).hasSuccess),t(e,103,0,s["ɵnov"](e,108).ngClassUntouched,s["ɵnov"](e,108).ngClassTouched,s["ɵnov"](e,108).ngClassPristine,s["ɵnov"](e,108).ngClassDirty,s["ɵnov"](e,108).ngClassValid,s["ɵnov"](e,108).ngClassInvalid,s["ɵnov"](e,108).ngClassPending,s["ɵnov"](e,109).validClass,s["ɵnov"](e,109).invalidClass),t(e,111,0,s["ɵnov"](e,112).hasErrors,s["ɵnov"](e,112).hasSuccess),t(e,129,0,s["ɵnov"](e,134).ngClassUntouched,s["ɵnov"](e,134).ngClassTouched,s["ɵnov"](e,134).ngClassPristine,s["ɵnov"](e,134).ngClassDirty,s["ɵnov"](e,134).ngClassValid,s["ɵnov"](e,134).ngClassInvalid,s["ɵnov"](e,134).ngClassPending,s["ɵnov"](e,135).validClass,s["ɵnov"](e,135).invalidClass),t(e,143,0,s["ɵnov"](e,144).hasErrors,s["ɵnov"](e,144).hasSuccess),t(e,150,0,s["ɵnov"](e,155).ngClassUntouched,s["ɵnov"](e,155).ngClassTouched,s["ɵnov"](e,155).ngClassPristine,s["ɵnov"](e,155).ngClassDirty,s["ɵnov"](e,155).ngClassValid,s["ɵnov"](e,155).ngClassInvalid,s["ɵnov"](e,155).ngClassPending,s["ɵnov"](e,156).validClass,s["ɵnov"](e,156).invalidClass),t(e,157,0,s["ɵnov"](e,158).hasErrors,s["ɵnov"](e,158).hasSuccess),t(e,164,0,s["ɵnov"](e,169).ngClassUntouched,s["ɵnov"](e,169).ngClassTouched,s["ɵnov"](e,169).ngClassPristine,s["ɵnov"](e,169).ngClassDirty,s["ɵnov"](e,169).ngClassValid,s["ɵnov"](e,169).ngClassInvalid,s["ɵnov"](e,169).ngClassPending,s["ɵnov"](e,170).validClass,s["ɵnov"](e,170).invalidClass),t(e,173,0,s["ɵnov"](e,174).hasErrors,s["ɵnov"](e,174).hasSuccess),t(e,184,0,s["ɵnov"](e,190).ngClassUntouched,s["ɵnov"](e,190).ngClassTouched,s["ɵnov"](e,190).ngClassPristine,s["ɵnov"](e,190).ngClassDirty,s["ɵnov"](e,190).ngClassValid,s["ɵnov"](e,190).ngClassInvalid,s["ɵnov"](e,190).ngClassPending,s["ɵnov"](e,191).validClass,s["ɵnov"](e,191).invalidClass),t(e,194,0,s["ɵnov"](e,195).hasErrors,s["ɵnov"](e,195).hasSuccess),t(e,208,0,s["ɵnov"](e,213).ngClassUntouched,s["ɵnov"](e,213).ngClassTouched,s["ɵnov"](e,213).ngClassPristine,s["ɵnov"](e,213).ngClassDirty,s["ɵnov"](e,213).ngClassValid,s["ɵnov"](e,213).ngClassInvalid,s["ɵnov"](e,213).ngClassPending,s["ɵnov"](e,214).validClass,s["ɵnov"](e,214).invalidClass)}))}function Bl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,73,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,72,"form",[["name","previewForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,66,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report preview"])),(t()(),s["ɵeld"](10,0,null,null,55,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](12,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,17,{FormControlNames:1}),s["ɵqud"](603979776,18,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,1,"label",[["class","cd-col-form-label"],["for","reportId"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report ID"])),(t()(),s["ɵeld"](17,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,6,"input",[["class","form-control"],["formControlName","reportId"],["id","reportId"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](21,671744,[[17,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](23,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](24,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](25,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](26,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,19,{FormControlNames:1}),s["ɵqud"](603979776,20,{messagesBlock:0}),(t()(),s["ɵeld"](29,0,null,0,1,"label",[["class","cd-col-form-label"],["for","report"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report preview"])),(t()(),s["ɵeld"](31,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,6,"textarea",[["class","form-control"],["formControlName","report"],["id","report"],["readonly",""],["rows","15"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,33)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,33).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,33)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,33)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](33,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](35,671744,[[19,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](37,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](38,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](39,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](40,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,21,{FormControlNames:1}),s["ɵqud"](603979776,22,{messagesBlock:0}),(t()(),s["ɵeld"](43,0,null,0,4,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"button",[["class","btn btn-light mr-2"],["title","Download"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.download(r.report,"telemetry_report.json")&&a),a}),null,null)),(t()(),s["ɵeld"](45,0,null,null,0,"i",[["class","fa fa-download"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,1,"button",[["cdCopy2ClipboardButton","report"],["class","btn btn-light"],["formatted",""],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,47).onClick()&&a),a}),null,null)),s["ɵdid"](47,81920,null,0,kl.a,[s.ElementRef,s.Renderer2,c.j,_a.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"],formatted:[1,"formatted"]},null),(t()(),s["ɵeld"](48,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](49,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,23,{FormControlNames:1}),s["ɵqud"](603979776,24,{messagesBlock:0}),(t()(),s["ɵeld"](52,0,null,0,13,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,12,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](54,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","licenseAgrmt"],["id","licenseAgrmt"],["name","licenseAgrmt"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,55).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,55).onTouched()&&a),a}),null,null)),s["ɵdid"](55,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](57,671744,[[23,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](59,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](60,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](61,0,null,null,4,"label",[["class","custom-control-label"],["for","licenseAgrmt"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["I agree to my telemetry data being submitted under the Community Data License Agreement - Sharing - Version 1.0 ("])),(t()(),s["ɵeld"](63,0,null,null,1,"a",[["href","https://cdla.io/sharing-1-0/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["https://cdla.io/sharing-1-0/"])),(t()(),s["ɵted"](-1,null,[")"])),(t()(),s["ɵeld"](66,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](67,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](68,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),ws.b,ws.a)),s["ɵdid"](69,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](70,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](72,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.previewForm),t(e,6,0,n.previewForm),t(e,12,0),t(e,21,0,"reportId"),t(e,24,0,"reportId"),t(e,26,0),t(e,35,0,"report"),t(e,38,0,"report"),t(e,40,0),t(e,47,0,"report",""),t(e,49,0),t(e,57,0,"licenseAgrmt"),t(e,60,0,"licenseAgrmt"),t(e,69,0,n.previewForm)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,24).validClass,s["ɵnov"](e,24).invalidClass),t(e,25,0,s["ɵnov"](e,26).hasErrors,s["ɵnov"](e,26).hasSuccess),t(e,32,0,s["ɵnov"](e,37).ngClassUntouched,s["ɵnov"](e,37).ngClassTouched,s["ɵnov"](e,37).ngClassPristine,s["ɵnov"](e,37).ngClassDirty,s["ɵnov"](e,37).ngClassValid,s["ɵnov"](e,37).ngClassInvalid,s["ɵnov"](e,37).ngClassPending,s["ɵnov"](e,38).validClass,s["ɵnov"](e,38).invalidClass),t(e,39,0,s["ɵnov"](e,40).hasErrors,s["ɵnov"](e,40).hasSuccess),t(e,48,0,s["ɵnov"](e,49).hasErrors,s["ɵnov"](e,49).hasSuccess),t(e,54,0,s["ɵnov"](e,59).ngClassUntouched,s["ɵnov"](e,59).ngClassTouched,s["ɵnov"](e,59).ngClassPristine,s["ɵnov"](e,59).ngClassDirty,s["ɵnov"](e,59).ngClassValid,s["ɵnov"](e,59).ngClassInvalid,s["ɵnov"](e,59).ngClassPending,s["ɵnov"](e,60).validClass,s["ɵnov"](e,60).invalidClass)}))}function Yl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](2,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zl)),s["ɵdid"](4,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bl)),s["ɵdid"](6,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],(function(t,e){t(e,2,0,e.component.step),t(e,4,0,1),t(e,6,0,2)}),null)}function Hl(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,jl)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fl)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yl)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&!n.error),t(e,3,0,n.loading&&n.error),t(e,5,0,!n.loading&&!n.error)}),null)}function Ul(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-telemetry",[],null,null,null,Hl,ql)),s["ɵdid"](1,114688,null,0,El,[jo.a,Ll,gt.a,qt.m,Dl,_a.a,Ml],null,null)],(function(t,e){t(e,1,0)}),null)}var Wl=s["ɵccf"]("cd-telemetry",El,Ul,{},{},[]);const Kl=new es.a("silence");class $l extends ns.a{constructor(t,e,n,a,r){super(),this.authStorageService=t,this.prometheusAlertService=e,this.urlBuilder=n,this.i18n=a,this.cdDatePipe=r,this.selection=new Ur.a,this.icons=ht.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"unprocessed","badge badge-info":"suppressed"},this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:t=>t.hasSingleSelection,disable:t=>!t.hasSingleSelection||t.first().cdExecuting,icon:ht.a.add,routerLink:()=>"/monitoring"+this.urlBuilder.getCreateFrom(this.selection.first().fingerprint),name:this.i18n("Create Silence")}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"labels.alertname",flexGrow:2},{name:this.i18n("Job"),prop:"labels.job",flexGrow:2},{name:this.i18n("Severity"),prop:"labels.severity"},{name:this.i18n("State"),prop:"status.state",cellTransformation:Hr.a.classAdding},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("URL"),prop:"generatorURL",sortable:!1,cellTemplate:this.externalLinkTpl}]}updateSelection(t){this.selection=t}}var Zl=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Jl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,fi.b,fi.a)),s["ɵdid"](1,638976,null,0,hi.a,[be.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function Ql(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](4,1),(t()(),s["ɵted"](-1,null,[" Source"]))],(function(t,e){var n=t(e,4,0,e.component.icons.lineChart);t(e,3,0,n)}),(function(t,e){t(e,0,0,e.context.value)}))}function Xl(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{externalLinkTpl:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["identifier","fingerprint"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](2,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](4,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,Jl)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["externalLinkTpl",2]],null,0,null,Ql))],(function(t,e){var n=e.component;t(e,2,0,n.prometheusAlertService.alerts,n.columns,!0,"fingerprint",!0,"single",n.customCss),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}class tc extends ns.a{constructor(t){super(),this.i18n=t,this.hideKeys=["alerts","type"]}ngOnInit(){this.columns=[{prop:"name",name:this.i18n("Name")},{prop:"labels.severity",name:this.i18n("Severity")},{prop:"group",name:this.i18n("Group")},{prop:"duration",name:this.i18n("Duration"),pipe:new pe},{prop:"query",name:this.i18n("Query"),isHidden:!0},{prop:"annotations.description",name:this.i18n("Description")}]}}var ec=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function nc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,fi.b,fi.a)),s["ɵdid"](5,638976,null,0,hi.a,[be.a],{data:[0,"data"],renderObjects:[1,"renderObjects"],hideKeys:[2,"hideKeys"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.expandedRow,!0,n.hideKeys)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function ac(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.setExpandedRow(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](1,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵand"](16777216,null,3,1,null,nc)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.data,n.columns,!0,"single"),t(e,3,0,n.expandedRow)}),null)}var rc=n("w9WL");const ic=new es.a("monitoring/silence");class sc extends ns.a{constructor(t,e,n,a,r,i,s,o,u){super(),this.authStorageService=t,this.i18n=e,this.cdDatePipe=n,this.prometheusService=a,this.modalService=r,this.notificationService=i,this.urlBuilder=s,this.actionLabels=o,this.succeededLabels=u,this.silences=[],this.selection=new Ur.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"pending","badge badge-default":"expired"},this.sorts=[{prop:"endsAt",dir:rc.A.desc}],this.permission=this.authStorageService.getPermissions().prometheus;const d=t=>t.first()&&t.first().status&&"expired"===t.first().status.state;this.tableActions=[{permission:"create",icon:ht.a.add,routerLink:()=>this.urlBuilder.getCreate(),preserveFragment:!0,canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"create",canBePrimary:t=>t.hasSingleSelection&&d(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&d(t)||!d(t),icon:ht.a.copy,routerLink:()=>this.urlBuilder.getRecreate(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.RECREATE},{permission:"update",icon:ht.a.edit,canBePrimary:t=>t.hasSingleSelection&&!d(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&!d(t)||d(t),routerLink:()=>this.urlBuilder.getEdit(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.EDIT},{permission:"delete",icon:ht.a.trash,canBePrimary:t=>t.hasSingleSelection&&!d(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||d(t),click:()=>this.expireSilence(),name:this.actionLabels.EXPIRE}],this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:3},{name:this.i18n("Created by"),prop:"createdBy",flexGrow:2},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("Updated"),prop:"updatedAt",pipe:this.cdDatePipe},{name:this.i18n("Ends"),prop:"endsAt",pipe:this.cdDatePipe},{name:this.i18n("Status"),prop:"status.state",cellTransformation:Hr.a.classAdding}]}refresh(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getSilences().subscribe(t=>{this.silences=t},()=>{this.prometheusService.disableAlertmanagerConfig()})})}updateSelection(t){this.selection=t}expireSilence(){const t=this.selection.first().id,e=this.i18n("Silence");this.modalRef=this.modalService.show(as.a,{initialState:{itemDescription:e,itemNames:[t],actionDescription:this.actionLabels.EXPIRE,submitActionObservable:()=>new wn.a(n=>{this.prometheusService.expireSilence(t).subscribe(()=>{this.notificationService.show(Ie.a.success,`${this.succeededLabels.EXPIRED} ${e} ${t}`,void 0,void 0,"Prometheus")},t=>{t.application="Prometheus",n.error(t)},()=>{n.complete(),this.refresh()})})}})}}var oc=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function uc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,fi.b,fi.a)),s["ɵdid"](1,638976,null,0,hi.a,[be.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function dc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"fetchData"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"fetchData"===e&&(a=!1!==r.refresh()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](1,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],sorts:[2,"sorts"],hasDetails:[3,"hasDetails"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](3,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,uc)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.silences,n.columns,n.sorts,!0,!0,"single",n.customCss),t(e,3,0,n.permission,n.selection,n.tableActions),t(e,5,0,n.expandedRow)}),null)}class lc{constructor(t,e,n,a,r,i){this.prometheusAlertService=t,this.prometheusService=e,this.route=n,this.router=a,this.summaryService=r,this.cephReleaseNamePipe=i,this.isPrometheusConfigured=!1,this.isAlertmanagerConfigured=!1,this.docsUrl=""}ngOnInit(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.isAlertmanagerConfigured=!0}),this.prometheusService.ifPrometheusConfigured(()=>{this.isPrometheusConfigured=!0});const t=this.summaryService.subscribe(e=>{if(!e)return;const n=this.cephReleaseNamePipe.transform(e.version);this.docsUrl=`https://docs.ceph.com/docs/${n}/mgr/dashboard/#enabling-prometheus-alerting`,setTimeout(()=>{t.unsubscribe()},0)});if(this.route.snapshot.fragment){const t=this.tabs.tabs.find(t=>t.elementRef.nativeElement.id===this.route.snapshot.fragment);t&&(t.active=!0),this.router.navigate([],{fragment:this.route.snapshot.fragment})}}setFragment(t){this.router.navigate([],{fragment:t.id})}}var cc=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function fc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-active-alert-list",[],null,null,null,Xl,Zl)),s["ɵprd"](256,null,es.a,Kl,[]),s["ɵdid"](2,114688,null,0,$l,[xt.a,Ce,es.a,_a.a,be.a],null,null)],(function(t,e){t(e,2,0)}),null)}function hc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all active Prometheus alerts, please provide the URL to the API of Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info")}),(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function gc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-rules-list",[],null,null,null,ac,ec)),s["ɵdid"](1,114688,null,0,tc,[_a.a],{data:[0,"data"]},null)],(function(t,e){t(e,1,0,e.component.prometheusAlertService.rules)}),null)}function pc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all configured Prometheus alerts, please provide the URL to the API of Prometheus as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info")}),(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function bc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-silences-list",[],null,null,null,dc,oc)),s["ɵprd"](256,null,es.a,ic,[]),s["ɵdid"](2,49152,null,0,sc,[xt.a,_a.a,be.a,Se,Lt.b,gt.a,es.a,At.b,At.d],null,null)],null,null)}function mc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To enable Silences, please provide the URL to the API of the Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info")}),(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function yc(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{tabs:0}),(t()(),s["ɵeld"](1,0,null,null,19,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](2,180224,[[1,4],["tabs",4]],0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](3,0,null,0,5,"tab",[["heading","Active Alerts"],["id","active-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](4,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,fc)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hc)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,5,"tab",[["heading","All Alerts"],["id","all-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](10,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,gc)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pc)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](15,0,null,0,5,"tab",[["heading","Silences"],["id","silences"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](16,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,bc)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mc)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,"Active Alerts","active-alerts"),t(e,6,0,n.isAlertmanagerConfigured),t(e,8,0,!n.isAlertmanagerConfigured),t(e,10,0,"All Alerts","all-alerts"),t(e,12,0,n.isPrometheusConfigured),t(e,14,0,!n.isPrometheusConfigured),t(e,16,0,"Silences","silences"),t(e,18,0,n.isAlertmanagerConfigured),t(e,20,0,!n.isAlertmanagerConfigured)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).clazz),t(e,3,0,s["ɵnov"](e,4).id,s["ɵnov"](e,4).active,s["ɵnov"](e,4).addClass,s["ɵnov"](e,4).role,s["ɵnov"](e,4).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby)}))}function vc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitoring-list",[],null,null,null,yc,cc)),s["ɵdid"](1,114688,null,0,lc,[Ce,Se,qt.a,qt.m,pt.a,vt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var xc=s["ɵccf"]("cd-monitoring-list",lc,vc,{},{},[]);let _c=(()=>{class t{constructor(t){this.i18n=t,this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}singleMatch(t,e){return this.multiMatch([t],e)}multiMatch(t,e){if(!t.some(t=>t.isRegex))return t.forEach(t=>{e=this.getMatchedRules(t,e)}),this.describeMatch(e)}getMatchedRules(t,e){const n=this.getAttributePath(t.name);return e.filter(e=>J.get(e,n)===t.value)}describeMatch(t){let e=0;return t.forEach(t=>e+=t.alerts.length),{status:this.getMatchText(t.length,e),cssClass:e?"has-success":"has-warning"}}getAttributePath(t){return this.valueAttributePath[t]}getMatchText(t,e){const n={noRule:this.i18n("Your matcher seems to match no currently defined rule or active alert."),noAlerts:this.i18n("no active alerts"),alert:this.i18n("1 active alert"),alerts:this.i18n("{{n}} active alerts",{n:e}),rule:this.i18n("Matches 1 rule"),rules:this.i18n("Matches {{n}} rules",{n:t})};return t?this.i18n("{{rules}} with {{alerts}}.",{rules:t>1?n.rules:n.rule,alerts:e?e>1?n.alerts:n.alert:n.noAlerts}):n.noRule}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](_a.a))},token:t,providedIn:"root"}),t})(),Tc=(()=>{class t{constructor(){}calculateDuration(t,e){const n=+t,a=+e,r=this.getDuration(Math.abs(n-a));return n>a?"-"+r:r}getDuration(t){const e=new Date(t),n=e.getUTCHours(),a=e.getUTCMinutes(),r=(t,e)=>t?t+e:t;return[r(Math.floor(t/864e5),"d"),r(n,"h"),r(a,"m")].filter(t=>t).join(" ")}calculateDate(t,e,n){const a=+t;if(J.isNaN(a))return;const r=this.getDurationMs(e)*(n?-1:1);return new Date(a+r)}getDurationMs(t){return 6e4*(60*(24*this.getNumbersFromString(t,"d")+this.getNumbersFromString(t,"h"))+this.getNumbersFromString(t,"m"))}getNumbersFromString(t,e){const n=t.match(new RegExp(`[0-9 ]+${e}`,"i"));return n?parseInt(n[0],10):0}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();class Oc{constructor(t,e,n){this.formBuilder=t,this.silenceMatcher=e,this.bsModalRef=n,this.submitAction=new s.EventEmitter,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.createForm(),this.subscribeToChanges()}createForm(){this.form=this.formBuilder.group({name:[null,[$.B.required]],value:[{value:null,disabled:!0},[$.B.required]],isRegex:new $.i(!1)})}subscribeToChanges(){this.form.get("name").valueChanges.subscribe(t=>{null!==t?(this.setPossibleValues(t),this.form.get("value").enable()):this.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(t=>{const e=this.form.value;e.value=t,this.matcherMatch=this.silenceMatcher.singleMatch(e,this.rules)})}setPossibleValues(t){this.possibleValues=J.sortedUniq(this.rules.map(e=>J.get(e,this.silenceMatcher.getAttributePath(t))).filter(t=>t))}preFillControls(t){this.form.setValue(t)}onSubmit(){this.submitAction.emit(this.form.value),this.bsModalRef.hide()}}class wc{constructor(t,e,n,a,r,i,s,o,u,d,l,c){this.i18n=t,this.router=e,this.authStorageService=n,this.formBuilder=a,this.prometheusService=r,this.notificationService=i,this.route=s,this.timeDiff=o,this.bsModalService=u,this.silenceMatcher=d,this.actionLabels=l,this.succeededLabels=c,this.icons=ht.a,this.bsConfig={dateInputFormat:"YYYY-MM-DDT HH:mm"},this.recreate=!1,this.edit=!1,this.resource=this.i18n("silence"),this.matchers=[],this.matcherMatch=void 0,this.matcherConfig=[{tooltip:this.i18n("Attribute name"),icon:this.icons.paragraph,attribute:"name"},{tooltip:this.i18n("Value"),icon:this.icons.terminal,attribute:"value"},{tooltip:this.i18n("Regular expression"),icon:this.icons.magic,attribute:"isRegex"}],this.init()}init(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()}chooseMode(){this.edit=this.router.url.startsWith("/monitoring/silence/edit"),this.recreate=this.router.url.startsWith("/monitoring/silence/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE}authenticate(){this.permission=this.authStorageService.getPermissions().prometheus,this.permission.read&&(this.edit?this.permission.update:this.permission.create)||this.router.navigate(["/404"])}createForm(){this.form=this.formBuilder.group({startsAt:[null,[$.B.required]],duration:["2h",[$.B.min(1)]],endsAt:[null,[$.B.required]],createdBy:[this.authStorageService.getUsername(),[$.B.required]],comment:[null,[$.B.required]]},{validators:As.a.custom("matcherRequired",()=>0===this.matchers.length)})}setupDates(){const t=new Date;t.setSeconds(0,0),this.form.silentSet("startsAt",t),this.updateDate(),this.subscribeDateChanges()}updateDate(t){const e=this.timeDiff.calculateDate(this.form.getValue(t?"endsAt":"startsAt"),this.form.getValue("duration"),t);e&&this.form.silentSet(t?"startsAt":"endsAt",e)}subscribeDateChanges(){this.form.get("startsAt").valueChanges.subscribe(()=>{this.onDateChange()}),this.form.get("duration").valueChanges.subscribe(()=>{this.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(()=>{this.onDateChange(!0)})}onDateChange(t){this.form.getValue("startsAt")<this.form.getValue("endsAt")?this.updateDuration():this.updateDate(t)}updateDuration(){this.form.silentSet("duration",this.timeDiff.calculateDuration(this.form.getValue("startsAt"),this.form.getValue("endsAt")))}getData(){this.getRules(),this.getModeSpecificData()}getRules(){this.prometheusService.ifPrometheusConfigured(()=>this.prometheusService.getRules().subscribe(t=>{this.rules=t.groups.reduce((t,e)=>J.concat(t,e.rules),[])},()=>{this.prometheusService.disablePrometheusConfig(),this.rules=[]}),()=>{this.rules=[],this.notificationService.show(Ie.a.info,this.i18n("Please add your Prometheus host to the dashboard configuration and refresh the page"),void 0,void 0,"Prometheus")})}getModeSpecificData(){this.route.params.subscribe(t=>{t.id&&(this.edit||this.recreate?this.prometheusService.getSilences(t).subscribe(t=>{this.fillFormWithSilence(t[0])}):this.prometheusService.getAlerts(t).subscribe(t=>{this.fillFormByAlert(t[0])}))})}fillFormWithSilence(t){this.id=t.id,this.edit&&(["startsAt","endsAt"].forEach(e=>this.form.silentSet(e,new Date(t[e]))),this.updateDuration()),["createdBy","comment"].forEach(e=>this.form.silentSet(e,t[e])),this.matchers=t.matchers,this.validateMatchers()}validateMatchers(){this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(()=>this.validateMatchers(),100)}fillFormByAlert(t){const e=t.labels;Object.keys(e).forEach(t=>this.setMatcher({name:t,value:e[t],isRegex:!1}))}setMatcher(t,e){J.isNumber(e)?this.matchers[e]=t:this.matchers.push(t),this.validateMatchers()}showMatcherModal(t){const e=this.bsModalService.show(Oc),n=e.content;n.rules=this.rules,J.isNumber(t)&&(n.editMode=!0,n.preFillControls(this.matchers[t])),e.content.submitAction.subscribe(e=>{this.setMatcher(e,t)})}deleteMatcher(t){this.matchers.splice(t,1),this.validateMatchers()}submit(){this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(t=>{this.router.navigate(["/monitoring"],{fragment:"silences"}),this.notificationService.show(Ie.a.success,this.getNotificationTile(t.body.silenceId),void 0,void 0,"Prometheus")},()=>this.form.setErrors({cdSubmitButton:!0}))}getSubmitData(){const t=this.form.value;return delete t.duration,t.startsAt=t.startsAt.toISOString(),t.endsAt=t.endsAt.toISOString(),t.matchers=this.matchers,this.edit&&(t.id=this.id),t}getNotificationTile(t){let e;return e=this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED,`${e} ${this.resource} ${t}`}}var Sc=s["ɵcrt"]({encapsulation:0,styles:[["textarea[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function Ic(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"input",[["class","form-control"],["disabled",""],["readonly",""],["type","text"]],[[8,"id",0],[8,"value",0],[2,"is-valid",null],[2,"is-invalid",null]],null,null,null,null)),s["ɵdid"](2,16384,null,0,Z.h,[[8,null],Z.a],null,null)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute],s["ɵnov"](e,2).validClass,s["ɵnov"](e,2).invalidClass)}))}function Nc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,0,"input",[["disabled",""],["readonly",""],["type","checkbox"]],[[8,"id",0],[8,"checked",0]],null,null,null,null))],null,(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])}))}function Cc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,16777216,null,null,5,"span",[["class","input-group-text"]],null,null,null,null,null)),s["ɵdid"](3,212992,null,0,Hn.c,[s.ViewContainerRef,W.a,Hn.a,s.ElementRef,s.Renderer2,na.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵand"](16777216,null,null,1,null,Ic)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nc)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,3,0,e.context.$implicit.tooltip);var n=t(e,7,0,e.context.$implicit.icon);t(e,6,0,n),t(e,9,0,"isRegex"!==e.context.$implicit.attribute),t(e,11,0,"isRegex"===e.context.$implicit.attribute)}),null)}function Rc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","input-group my-2"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Cc)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Edit"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal(t.context.index)&&a),a}),null,null)),s["ɵdid"](5,212992,null,0,Hn.c,[s.ViewContainerRef,W.a,Hn.a,s.ElementRef,s.Renderer2,na.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](8,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](9,1),(t()(),s["ɵeld"](10,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Delete"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.deleteMatcher(t.context.index)&&a),a}),null,null)),s["ɵdid"](11,212992,null,0,Hn.c,[s.ViewContainerRef,W.a,Hn.a,s.ElementRef,s.Renderer2,na.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,1),(t()(),s["ɵeld"](16,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,2,0,n.matcherConfig),t(e,5,0,"Edit");var a=t(e,9,0,n.icons.edit);t(e,8,0,a),t(e,11,0,"Delete");var r=t(e,15,0,n.icons.trash);t(e,14,0,r)}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"matcher-edit-",e.context.index,"")),t(e,10,0,s["ɵinlineInterpolate"](1,"matcher-delete-",e.context.index,""))}))}function Ac(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](1,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](-1,0,["Editing a silence will expire the old silence and recreate it as a new silence"]))],null,null)}function kc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Ec(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Lc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Dc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Pc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Mc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"h5",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{"text-warning":0,"text-danger":1}),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["A silence requires at least one matcher"]))],(function(t,e){var n=t(e,3,0,!s["ɵnov"](e.parent,6).submitted,s["ɵnov"](e.parent,6).submitted);t(e,2,0,n)}),null)}function qc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function jc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,qc)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{index:0,matcher:1})],(function(t,e){var n=t(e,3,0,e.context.index,e.context.$implicit);t(e,2,0,n,s["ɵnov"](e.parent,2))}),null)}function Fc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function Gc(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Cs.a,[]),(t()(),s["ɵand"](0,[["matcherTpl",2]],null,0,null,Rc)),(t()(),s["ɵeld"](3,0,null,null,137,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,136,"form",[["class","form"],["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,$.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](8,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](9,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,130,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](13,null,[" "," "," "])),s["ɵppd"](14,1),s["ɵppd"](15,1),(t()(),s["ɵand"](16777216,null,null,1,null,Ac)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,113,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](20,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](23,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","created-by"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Creator"])),(t()(),s["ɵeld"](25,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,6,"input",[["class","form-control"],["formControlName","createdBy"],["id","created-by"],["name","created-by"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,27)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,27).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,27)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,27)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](27,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](29,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](31,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](32,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kc)),s["ɵdid"](34,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](35,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](36,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](39,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","comment"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Comment"])),(t()(),s["ɵeld"](41,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](42,0,null,null,7,"textarea",[["class","form-control"],["formControlName","comment"],["id","comment"],["name","comment"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,43)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,43).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,43)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,43)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](43,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](45,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](47,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](48,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "])),(t()(),s["ɵand"](16777216,null,null,1,null,Ec)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](52,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](53,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](56,0,null,0,5,"label",[["class","cd-col-form-label"],["for","starts-at"]],null,null,null,null,null)),(t()(),s["ɵeld"](57,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Start time"])),(t()(),s["ɵeld"](59,0,null,null,2,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](60,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](-1,0,["If the start time lies in the past the creation time will be used"])),(t()(),s["ɵeld"](62,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](63,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","startsAt"],["id","starts-at"],["name","starts-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,64)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,64).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,64)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,64)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,66).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,66).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,66).onBlur()&&a),a}),null,null)),s["ɵdid"](64,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](65,737280,null,0,rt.c,[rt.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](66,16384,null,0,rt.f,[rt.c,rt.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[rt.f]),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,rt.f]),s["ɵdid"](69,671744,[[5,4]],0,$.j,[[3,$.d],[6,$.o],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](71,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](72,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lc)),s["ɵdid"](74,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](75,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](76,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](79,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","duration"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration"])),(t()(),s["ɵeld"](81,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](82,0,null,null,6,"input",[["class","form-control"],["formControlName","duration"],["id","duration"],["name","duration"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,83)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,83).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,83)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,83)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](83,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](85,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](87,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](88,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dc)),s["ɵdid"](90,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](91,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](92,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](95,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","ends-at"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["End time"])),(t()(),s["ɵeld"](97,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](98,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","endsAt"],["id","ends-at"],["name","ends-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,99)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,99).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,99)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,99)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,101).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,101).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,101).onBlur()&&a),a}),null,null)),s["ɵdid"](99,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](100,737280,null,0,rt.c,[rt.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](101,16384,null,0,rt.f,[rt.c,rt.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[rt.f]),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,rt.f]),s["ɵdid"](104,671744,[[9,4]],0,$.j,[[3,$.d],[6,$.o],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](106,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](107,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pc)),s["ɵdid"](109,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](110,0,null,null,21,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](111,0,null,null,1,"legend",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matchers"])),(t()(),s["ɵeld"](113,0,null,null,16,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Mc)),s["ɵdid"](115,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jc)),s["ɵdid"](117,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](118,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](119,0,null,null,10,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](120,0,null,null,9,"button",[["class","btn btn-light float-right my-3"],["id","add-matcher"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](122,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](123,{"btn-warning":0}),(t()(),s["ɵeld"](124,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](126,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](127,1),(t()(),s["ɵeld"](128,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add matcher"])),(t()(),s["ɵand"](16777216,null,null,1,null,Fc)),s["ɵdid"](131,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](132,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](133,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](134,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),ws.b,ws.a)),s["ɵdid"](135,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](136,0,[" "," "," "])),s["ɵppd"](137,1),s["ɵppd"](138,1),(t()(),s["ɵeld"](139,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](140,49152,null,0,Ns.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.form),t(e,9,0,n.form),t(e,17,0,n.edit),t(e,20,0),t(e,29,0,"createdBy"),t(e,32,0,"createdBy"),t(e,34,0,n.form.showError("createdBy",s["ɵnov"](e,6),"required")),t(e,36,0),t(e,45,0,"comment"),t(e,48,0,"comment"),t(e,51,0,n.form.showError("comment",s["ɵnov"](e,6),"required")),t(e,53,0),t(e,65,0,n.bsConfig),t(e,69,0,"startsAt"),t(e,72,0,"startsAt"),t(e,74,0,n.form.showError("startsAt",s["ɵnov"](e,6),"required")),t(e,76,0),t(e,85,0,"duration"),t(e,88,0,"duration"),t(e,90,0,n.form.showError("duration",s["ɵnov"](e,6),"required")),t(e,92,0),t(e,100,0,n.bsConfig),t(e,104,0,"endsAt"),t(e,107,0,"endsAt"),t(e,109,0,n.form.showError("endsAt",s["ɵnov"](e,6),"required")),t(e,115,0,0===n.matchers.length),t(e,117,0,n.matchers);var a=t(e,123,0,s["ɵnov"](e,6).submitted&&0===n.matchers.length);t(e,122,0,"btn btn-light float-right my-3",a);var r=t(e,127,0,n.icons.add);t(e,126,0,r),t(e,131,0,n.matchers.length&&n.matcherMatch),t(e,135,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,13,0,t(e,14,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,13,1,t(e,15,0,s["ɵnov"](e,1),n.resource));t(e,13,0,a,r),t(e,19,0,s["ɵnov"](e,20).hasErrors,s["ɵnov"](e,20).hasSuccess),t(e,26,0,s["ɵnov"](e,31).ngClassUntouched,s["ɵnov"](e,31).ngClassTouched,s["ɵnov"](e,31).ngClassPristine,s["ɵnov"](e,31).ngClassDirty,s["ɵnov"](e,31).ngClassValid,s["ɵnov"](e,31).ngClassInvalid,s["ɵnov"](e,31).ngClassPending,s["ɵnov"](e,32).validClass,s["ɵnov"](e,32).invalidClass),t(e,35,0,s["ɵnov"](e,36).hasErrors,s["ɵnov"](e,36).hasSuccess),t(e,42,0,s["ɵnov"](e,47).ngClassUntouched,s["ɵnov"](e,47).ngClassTouched,s["ɵnov"](e,47).ngClassPristine,s["ɵnov"](e,47).ngClassDirty,s["ɵnov"](e,47).ngClassValid,s["ɵnov"](e,47).ngClassInvalid,s["ɵnov"](e,47).ngClassPending,s["ɵnov"](e,48).validClass,s["ɵnov"](e,48).invalidClass),t(e,52,0,s["ɵnov"](e,53).hasErrors,s["ɵnov"](e,53).hasSuccess),t(e,63,0,s["ɵnov"](e,71).ngClassUntouched,s["ɵnov"](e,71).ngClassTouched,s["ɵnov"](e,71).ngClassPristine,s["ɵnov"](e,71).ngClassDirty,s["ɵnov"](e,71).ngClassValid,s["ɵnov"](e,71).ngClassInvalid,s["ɵnov"](e,71).ngClassPending,s["ɵnov"](e,72).validClass,s["ɵnov"](e,72).invalidClass),t(e,75,0,s["ɵnov"](e,76).hasErrors,s["ɵnov"](e,76).hasSuccess),t(e,82,0,s["ɵnov"](e,87).ngClassUntouched,s["ɵnov"](e,87).ngClassTouched,s["ɵnov"](e,87).ngClassPristine,s["ɵnov"](e,87).ngClassDirty,s["ɵnov"](e,87).ngClassValid,s["ɵnov"](e,87).ngClassInvalid,s["ɵnov"](e,87).ngClassPending,s["ɵnov"](e,88).validClass,s["ɵnov"](e,88).invalidClass),t(e,91,0,s["ɵnov"](e,92).hasErrors,s["ɵnov"](e,92).hasSuccess),t(e,98,0,s["ɵnov"](e,106).ngClassUntouched,s["ɵnov"](e,106).ngClassTouched,s["ɵnov"](e,106).ngClassPristine,s["ɵnov"](e,106).ngClassDirty,s["ɵnov"](e,106).ngClassValid,s["ɵnov"](e,106).ngClassInvalid,s["ɵnov"](e,106).ngClassPending,s["ɵnov"](e,107).validClass,s["ɵnov"](e,107).invalidClass);var i=s["ɵunv"](e,136,0,t(e,137,0,s["ɵnov"](e,0),n.action)),o=s["ɵunv"](e,136,1,t(e,138,0,s["ɵnov"](e,1),n.resource));t(e,136,0,i,o)}))}function Vc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-prometheus-form",[],null,null,null,Gc,Sc)),s["ɵdid"](1,49152,null,0,wc,[_a.a,qt.m,xt.a,jo.a,Se,gt.a,qt.a,Tc,Lt.b,_c,At.b,At.d],null,null)],null,null)}var zc=s["ɵccf"]("cd-prometheus-form",wc,Vc,{},{},[]);let Bc=(()=>{class t{constructor(e){this.route=e,this.route.queryParams.subscribe(e=>{this.fromLink=e.fromLink||t.defaultFromLink}),this.route.params.subscribe(t=>{this.serviceId=decodeURIComponent(t.id),this.serviceType=t.type})}}return t.defaultFromLink="/hosts",t})();var Yc=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Hc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",".",""])),(t()(),s["ɵeld"](2,0,null,null,1,"cd-table-performance-counter",[],null,null,null,so.b,so.a)),s["ɵdid"](3,114688,null,0,oo.a,[uo.a,_a.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.serviceType,n.serviceId)}),(function(t,e){var n=e.component;t(e,1,0,n.serviceType,n.serviceId)}))}function Uc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-performance-counter",[],null,null,null,Hc,Yc)),s["ɵdid"](1,49152,null,0,Bc,[qt.a],null,null)],null,null)}var Wc=s["ɵccf"]("cd-performance-counter",Bc,Uc,{},{},[]);class Kc{constructor(t){this.mgrModuleService=t}ngOnChanges(){this.selection&&this.mgrModuleService.getConfig(this.selection.name).subscribe(t=>{this.module_config=t})}}var $c=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Zc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,fi.b,fi.a)),s["ɵdid"](5,638976,null,0,hi.a,[be.a],{data:[0,"data"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.module_config)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function Jc(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Zc)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}var Qc=n("PqYM");let Xc=(()=>{class t extends ns.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.mgrModuleService=e,this.notificationService=n,this.i18n=a,this.columns=[],this.modules=[],this.selection=new Ur.a,this.permission=this.authStorageService.getPermissions().configOpt,this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellClass:"text-center",cellTransformation:Hr.a.checkIcon},{name:this.i18n("Always-On"),prop:"always_on",isHidden:!0,flexGrow:1,cellClass:"text-center",cellTransformation:Hr.a.checkIcon}];const r=()=>this.selection.first()&&encodeURIComponent(this.selection.first().name);this.tableActions=[{name:this.i18n("Edit"),permission:"update",disable:()=>!this.selection.hasSelection||0===Object.values(this.selection.first().options).length,routerLink:()=>`/mgr-modules/edit/${r()}`,icon:ht.a.edit},{name:this.i18n("Enable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("enabled"),icon:ht.a.start},{name:this.i18n("Disable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("disabled"),disableDesc:()=>this.getTableActionDisabledDesc(),icon:ht.a.stop}]}getModuleList(t){this.mgrModuleService.list().subscribe(t=>{this.modules=t},()=>{t.error()})}updateSelection(t){this.selection=t}isTableActionDisabled(t){if(!this.selection.hasSelection)return!0;const e=this.selection.first();if("dashboard"===e.name)return!0;if(e.always_on)return!0;switch(t){case"enabled":return e.enabled;case"disabled":return!e.enabled}}getTableActionDisabledDesc(){if(this.selection.hasSelection&&this.selection.first().always_on)return this.i18n("This Manager module is always on.")}updateModuleState(){if(!this.selection.hasSelection)return;let t;const e=()=>{Object(Qc.a)(2e3).subscribe(()=>{this.mgrModuleService.list().subscribe(()=>{this.notificationService.suspendToasties(!1),this.blockUI.stop(),this.table.refreshBtn()},()=>{e()})})},n=this.selection.first();t=n.enabled?this.mgrModuleService.disable(n.name):this.mgrModuleService.enable(n.name),t.subscribe(()=>{},()=>{this.notificationService.suspendToasties(!0),this.blockUI.start(this.i18n("Reconnecting, please wait ...")),e()})}}return fd.__decorate([L(),fd.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})();var tf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ef(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","module"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"fetchData"===e&&(a=!1!==r.getModuleList(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](2,2867200,[[1,4],["table",4]],0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](4,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](5,0,null,3,1,"cd-mgr-module-details",[["cdTableDetail",""]],null,null,null,Jc,$c)),s["ɵdid"](6,573440,null,0,Kc,[Ll],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.modules,n.columns,"flex",!0,!1,"module","single"),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}function nf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-list",[],null,null,null,ef,tf)),s["ɵdid"](1,49152,null,0,Xc,[xt.a,Ll,gt.a,_a.a],null,null)],null,null)}var af=s["ɵccf"]("cd-mgr-module-list",Xc,nf,{},{},[]);class rf{constructor(t,e,n,a,r,i){this.route=t,this.router=e,this.formBuilder=n,this.mgrModuleService=a,this.notificationService=r,this.i18n=i,this.error=!1,this.loading=!1,this.moduleName="",this.moduleOptions=[]}ngOnInit(){this.route.params.subscribe(t=>{this.moduleName=decodeURIComponent(t.name),this.loading=!0;const e=[this.mgrModuleService.getOptions(this.moduleName),this.mgrModuleService.getConfig(this.moduleName)];Object(Ro.a)(e).subscribe(t=>{this.loading=!1,this.moduleOptions=t[0],this.createForm(),this.mgrModuleForm.setValue(t[1])},t=>{this.error=!0})})}getValidators(t){const e=[];switch(t.type){case"addr":e.push(As.a.ip());break;case"uint":case"int":case"size":case"secs":e.push(As.a.number()),e.push($.B.required),J.isNumber(t.min)&&e.push($.B.min(t.min)),J.isNumber(t.max)&&e.push($.B.max(t.max));break;case"str":J.isNumber(t.min)&&e.push($.B.minLength(t.min)),J.isNumber(t.max)&&e.push($.B.maxLength(t.max));break;case"float":e.push($.B.required),e.push(As.a.decimalNumber());break;case"uuid":e.push(As.a.uuid())}return e}createForm(){const t={};J.forEach(this.moduleOptions,e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.mgrModuleForm=this.formBuilder.group(t)}goToListView(){this.router.navigate(["/mgr-modules"])}onSubmit(){if(this.mgrModuleForm.pristine)return void this.goToListView();const t={};J.forEach(this.moduleOptions,e=>{const n=this.mgrModuleForm.get(e.name);n.dirty&&n.valid&&(t[e.name]=n.value)}),this.mgrModuleService.updateConfig(this.moduleName,t).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n('Updated options for module "{{name}}".',{name:this.moduleName})),this.goToListView()},()=>{this.mgrModuleForm.setErrors({cdSubmitButton:!0})})}}var sf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function of(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,gi.b,gi.a)),s["ɵdid"](1,49152,null,0,pi.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function uf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function df(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](1,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.parent.context.$implicit.value.long_desc||e.parent.context.$implicit.value.desc));t(e,2,0,n)}))}function lf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](3,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](5,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](7,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](8,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](9,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}))}function cf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](3,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,6,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function ff(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function hf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](3,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ff)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,6,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,8,0,e.parent.parent.context.$implicit.value.enum_allowed)}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function gf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8"]))],null,null)}function pf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a valid IP address."]))],null,null)}function bf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,cf)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hf)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gf)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pf)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===e.parent.context.$implicit.value.enum_allowed.length),t(e,4,0,e.parent.context.$implicit.value.enum_allowed.length>0),t(e,6,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,8,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),null)}function mf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function yf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must be lower or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.max)}))}function vf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must be greater or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.min)}))}function xf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function _f(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"min",0],[8,"max",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](3,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](5,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](7,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](8,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mf)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yf)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vf)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xf)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,10,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,12,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"max")),t(e,14,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"min")),t(e,16,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.min,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.max,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass])}))}function Tf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Of(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number or decimal."]))],null,null)}function wf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](3,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](5,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](7,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](8,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tf)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Of)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,10,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,12,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass)}))}function Sf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,3,"label",[["class","col-form-label col-sm-5"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,df)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,lf)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,bf)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](12,3),(t()(),s["ɵand"](16777216,null,0,2,null,_f)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](15,4),(t()(),s["ɵand"](16777216,null,0,1,null,wf)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0),t(e,7,0,e.context.$implicit.value.long_desc||e.context.$implicit.value.desc),t(e,9,0,"bool"===e.context.$implicit.value.type);var n=t(e,12,0,"addr","str","uuid").includes(e.context.$implicit.value.type);t(e,11,0,n);var a=t(e,15,0,"uint","int","size","secs").includes(e.context.$implicit.value.type);t(e,14,0,a),t(e,17,0,"float"===e.context.$implicit.value.type)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.value.name,"")),t(e,5,0,e.context.$implicit.value.name)}))}function If(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,21,"form",[["name","mgrModuleForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,15,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit Manager module"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Sf)),s["ɵdid"](12,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](14,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),ws.b,ws.a)),s["ɵdid"](17,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](18,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Update"])),(t()(),s["ɵeld"](20,0,null,null,2,"button",[["class","btn btn-light"],["routerLink","/mgr-modules"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick()&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,qt.n,[qt.m,qt.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.mgrModuleForm),t(e,6,0,n.mgrModuleForm),t(e,12,0,s["ɵunv"](e,12,0,s["ɵnov"](e,13).transform(n.moduleOptions))),t(e,17,0,n.mgrModuleForm),t(e,21,0,"/mgr-modules")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending)}))}function Nf(t){return s["ɵvid"](0,[s["ɵpid"](0,Cs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,of)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,uf)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,If)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.loading&&!n.error),t(e,4,0,n.loading&&n.error),t(e,6,0,!n.loading&&!n.error)}),null)}function Cf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-form",[],null,null,null,Nf,sf)),s["ɵdid"](1,114688,null,0,rf,[qt.a,qt.m,jo.a,Ll,gt.a,_a.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Rf=s["ɵccf"]("cd-mgr-module-form",rf,Cf,{},{},[]),Af=n("xTzq");let kf=(()=>{let t=class{constructor(t){this.http=t,this.baseURL="api/cephfs",this.baseUiURL="ui-api/cephfs"}list(){return this.http.get(`${this.baseURL}`)}lsDir(t,e){let n=`${this.baseUiURL}/${t}/ls_dir?depth=2`;return e&&(n+=`&path=${encodeURIComponent(e)}`),this.http.get(n)}getCephfs(t){return this.http.get(`${this.baseURL}/${t}`)}getTabs(t){return this.http.get(`ui-api/cephfs/${t}/tabs`)}getClients(t){return this.http.get(`${this.baseURL}/${t}/clients`)}evictClient(t,e){return this.http.delete(`${this.baseURL}/${t}/client/${e}`)}getMdsCounters(t){return this.http.get(`${this.baseURL}/${t}/mds_counters`)}mkSnapshot(t,e,n){let a=new X.h;return a=a.append("path",e),J.isUndefined(n)||(a=a.append("name",n)),this.http.post(`${this.baseURL}/${t}/mk_snapshot`,null,{params:a})}rmSnapshot(t,e,n){let a=new X.h;return a=a.append("path",e),a=a.append("name",n),this.http.post(`${this.baseURL}/${t}/rm_snapshot`,null,{params:a})}updateQuota(t,e,n){let a=new X.h;return a=a.append("path",e),this.http.post(`${this.baseURL}/${t}/set_quotas`,n,{observe:"response",params:a})}};return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t=fd.__decorate([Af.a,fd.__metadata("design:paramtypes",[X.c])],t),t})();class Ef{constructor(t,e,n,a,r,i,s,o){this.authStorageService=t,this.modalService=e,this.cephfsService=n,this.cdDatePipe=a,this.i18n=r,this.actionLabels=i,this.notificationService=s,this.dimlessBinaryPipe=o,this.icons=ht.a,this.loadingIndicator=!1,this.loading={},this.treeOptions={useVirtualScroll:!0,getChildren:t=>this.updateDirectory(t.id),actionMapping:{mouse:{click:this.selectAndShowNode.bind(this),expanderClick:this.selectAndShowNode.bind(this)}}}}selectAndShowNode(t,e,n){hd.a.TOGGLE_EXPANDED(t,e,n),this.selectNode(e)}selectNode(t){hd.a.TOGGLE_ACTIVE(void 0,t,void 0),this.selectedDir=this.getDirectory(t),"/"!==t.id&&this.setSettings(t)}ngOnInit(){this.permission=this.authStorageService.getPermissions().cephfs,this.setUpQuotaTable(),this.setUpSnapshotTable()}setUpQuotaTable(){this.quota={columns:[{prop:"row.name",name:this.i18n("Name"),flexGrow:1},{prop:"row.value",name:this.i18n("Value"),sortable:!1,flexGrow:1},{prop:"row.originPath",name:this.i18n("Origin"),sortable:!1,cellTemplate:this.originTmpl,flexGrow:1}],selection:new Ur.a,updateSelection:t=>{this.quota.selection=t},tableActions:[{name:this.actionLabels.SET,icon:ht.a.edit,permission:"update",visible:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UPDATE,icon:ht.a.edit,permission:"update",visible:t=>t.first()&&t.first().dirValue>0,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UNSET,icon:ht.a.destroy,permission:"update",disable:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.unsetQuotaModal()}]}}setUpSnapshotTable(){this.snapshot={columns:[{prop:"name",name:this.i18n("Name"),flexGrow:1},{prop:"path",name:this.i18n("Path"),isHidden:!0,flexGrow:2},{prop:"created",name:this.i18n("Created"),flexGrow:1,pipe:this.cdDatePipe}],selection:new Ur.a,updateSelection:t=>{this.snapshot.selection=t},tableActions:[{name:this.actionLabels.CREATE,icon:ht.a.add,permission:"create",canBePrimary:t=>!t.hasSelection,click:()=>this.createSnapshot()},{name:this.actionLabels.DELETE,icon:ht.a.destroy,permission:"delete",click:()=>this.deleteSnapshotModal(),canBePrimary:t=>t.hasSelection,disable:t=>!t.hasSelection}]}}ngOnChanges(){this.selectedDir=void 0,this.dirs=[],this.requestedPaths=[],this.nodeIds={},this.id&&(this.setRootNode(),this.firstCall())}setRootNode(){this.nodes=[{name:"/",id:"/",isExpanded:!0}]}firstCall(){setTimeout(()=>{this.getNode("/").loadNodeChildren()},10)}updateDirectory(t){if(this.unsetLoadingIndicator(),this.requestedPaths.includes(t)){if(!0===this.loading[t])return}else this.requestedPaths.push(t);return new Promise(e=>{this.setLoadingIndicator(t,!0),this.cephfsService.lsDir(this.id,t).subscribe(n=>{this.updateTreeStructure(n),this.updateQuotaTable(),this.updateTree(),e(this.getChildren(t)),this.setLoadingIndicator(t,!1)})})}setLoadingIndicator(t,e){this.loading[t]=e,this.unsetLoadingIndicator()}getSubDirectories(t,e=this.dirs){return e.filter(e=>e.parent===t)}getChildren(t){const e=this.getSubTree(t);return J.sortBy(this.getSubDirectories(t),"path").map(t=>this.createNode(t,e))}createNode(t,e){return this.nodeIds[t.path]=t,e||this.getSubTree(t.parent),{name:t.name,id:t.path,hasChildren:this.getSubDirectories(t.path,e).length>0}}getSubTree(t){return this.dirs.filter(e=>e.parent&&e.parent.startsWith(t))}setSettings(t){const e=(t,e)=>t?e?e(t):t:"";this.settings=[this.getQuota(t,"max_files",e),this.getQuota(t,"max_bytes",t=>e(t,t=>this.dimlessBinaryPipe.transform(t)))]}getQuota(t,e,n){const a=t.id;t=this.getOrigin(t,e);const r=this.getDirectory(t),i=r.quotas[e];let s=i,o=r.path;if(t.id===a)if("/"===t.parent.id)s=0;else{const n=this.getDirectory(this.getOrigin(t.parent,e));s=n.quotas[e],o=n.path}return{row:{name:this.i18n("max_bytes"===e?"Max size":"Max files"),value:n(i),originPath:i?r.path:""},quotaKey:e,dirValue:this.nodeIds[a].quotas[e],nextTreeMaximum:{value:s,path:s?o:""}}}getOrigin(t,e){if(t.parent&&"/"!==t.parent.id){const n=this.getQuotaFromTree(t,e),a=this.getOrigin(t.parent,e),r=this.getQuotaFromTree(a,e);return 0===n||0!==r&&r<n?a:t}return t}getQuotaFromTree(t,e){return this.getDirectory(t).quotas[e]}getDirectory(t){return this.nodeIds[t.id]}selectOrigin(t){this.selectNode(this.getNode(t))}getNode(t){return this.treeComponent.treeModel.getNodeById(t)}updateQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.nextTreeMaximum,a=e.quotaKey,r=e.dirValue;this.modalService.show(Yr.a,{initialState:{titleText:this.getModalQuotaTitle(0===r?this.actionLabels.SET:this.actionLabels.UPDATE,t),message:n.value?this.i18n("The inherited {{quotaValue}} is the maximum value to be used.",{quotaValue:this.getQuotaValueFromPathMsg(n.value,n.path)}):void 0,fields:[this.getQuotaFormField(e.row.name,a,r,n.value)],submitButtonText:this.i18n("Save"),onSubmit:t=>this.updateQuota(t)}})}getModalQuotaTitle(t,e){return this.i18n("{{action}} CephFS {{quotaName}} quota for '{{path}}'",{action:t,quotaName:this.getQuotaName(),path:e})}getQuotaName(){return this.isBytesQuotaSelected()?this.i18n("size"):this.i18n("files")}isBytesQuotaSelected(){return"max_bytes"===this.quota.selection.first().quotaKey}getQuotaValueFromPathMsg(t,e){return this.i18n("{{quotaName}} quota {{value}} from '{{path}}'",{value:this.isBytesQuotaSelected()?this.dimlessBinaryPipe.transform(t):t,quotaName:this.getQuotaName(),path:e})}getQuotaFormField(t,e,n,a){const r="max_bytes"===e,i=[r?As.a.binaryMin(0):$.B.min(0)];a&&i.push(r?As.a.binaryMax(a):$.B.max(a));const s={type:r?"binary":"number",label:t,name:e,value:n,validators:i,required:!0};return r||(s.errors={min:this.i18n("Value has to be at least {{value}} or more",{value:0}),max:this.i18n("Value has to be at most {{value}} or less",{value:a})}),s}updateQuota(t,e){const n=this.selectedDir.path,a=this.quota.selection.first().quotaKey,r=0===this.selectedDir.quotas[a]?this.actionLabels.SET:0===t[a]?this.actionLabels.UNSET:this.i18n("Updated");this.cephfsService.updateQuota(this.id,n,t).subscribe(()=>{e&&e(),this.notificationService.show(Ie.a.success,this.getModalQuotaTitle(r,n)),this.forceDirRefresh()})}unsetQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.quotaKey,a=e.nextTreeMaximum,r=e.dirValue;this.modalRef=this.modalService.show(Ao.a,{initialState:{titleText:this.getModalQuotaTitle(this.actionLabels.UNSET,t),buttonText:this.actionLabels.UNSET,description:this.i18n("{{action}} {{quotaValue}} {{conclusion}}.",{action:this.actionLabels.UNSET,quotaValue:this.getQuotaValueFromPathMsg(r,t),conclusion:a.value>0?this.i18n(a.value>r?"in order to inherit {{quotaValue}}":"which isn't used because of the inheritance of {{quotaValue}}",{quotaValue:this.getQuotaValueFromPathMsg(a.value,a.path)}):this.i18n("in order to have no quota on the directory")}),onSubmit:()=>this.updateQuota({[n]:0},()=>this.modalRef.hide())}})}createSnapshot(){const t=this.selectedDir.path;this.modalService.show(Yr.a,{initialState:{titleText:this.i18n("Create Snapshot"),message:this.i18n("Please enter the name of the snapshot."),fields:[{type:"text",name:"name",value:`${ge().toISOString(!0)}`,required:!0}],submitButtonText:this.i18n("Create Snapshot"),onSubmit:e=>{this.cephfsService.mkSnapshot(this.id,t,e.name).subscribe(e=>{this.notificationService.show(Ie.a.success,this.i18n('Created snapshot "{{name}}" for "{{path}}"',{name:e,path:t})),this.forceDirRefresh()})}}})}forceDirRefresh(t){if(!t){const e=this.selectedDir;if(!e)throw new Error("This function can only be called without path if an selection was made");t=e.parent?e.parent:e.path}this.getNode(t).loadNodeChildren()}updateTreeStructure(t){const e=(t,e)=>{const n=t.filter(t=>t.parent===e),a=n.map(t=>t.path);return{children:n,paths:a}};J.uniq(t.map(t=>t.parent).sort()).forEach(n=>{const a=e(t,n),r=e(this.dirs,n);r.children.forEach(t=>{a.paths.includes(t.path)||this.removeOldDirectory(t)}),a.children.forEach(t=>{r.paths.includes(t.path)?this.updateExistingDirectory(r.children,t):this.addNewDirectory(t)})})}removeOldDirectory(t){const e=t.path;J.remove(this.dirs,t=>t.path===e),delete this.nodeIds[e],this.updateDirectoriesParentNode(t)}updateDirectoriesParentNode(t){const e=t.parent;if(!e)return;const n=this.getNode(e);if(!n)return;const a=this.getChildren(e);n.data.children=a,n.data.hasChildren=a.length>0,this.treeComponent.treeModel.update()}addNewDirectory(t){this.dirs.push(t),this.nodeIds[t.path]=t,this.updateDirectoriesParentNode(t)}updateExistingDirectory(t,e){const n=t.find(t=>t.path===e.path);Object.assign(n,e)}updateQuotaTable(){const t=this.selectedDir?this.getNode(this.selectedDir.path):void 0;t&&"/"!==t.id&&this.setSettings(t)}updateTree(t=!1){this.loadingIndicator&&!t||(this.treeComponent.treeModel.update(),this.nodes=[...this.nodes],this.treeComponent.sizeChanged())}deleteSnapshotModal(){this.modalRef=this.modalService.show(as.a,{initialState:{itemDescription:this.i18n("CephFs Snapshot"),itemNames:this.snapshot.selection.selected.map(t=>t.name),submitAction:()=>this.deleteSnapshot()}})}deleteSnapshot(){const t=this.selectedDir.path;this.snapshot.selection.selected.forEach(e=>{const n=e.name;this.cephfsService.rmSnapshot(this.id,t,n).subscribe(()=>{this.notificationService.show(Ie.a.success,this.i18n('Deleted snapshot "{{name}}" for "{{path}}"',{name:n,path:t}))})}),this.modalRef.hide(),this.forceDirRefresh()}refreshAllDirectories(){this.loadingIndicator=!0,this.requestedPaths.map(t=>this.forceDirRefresh(t));const t=setInterval(()=>{this.updateTree(!0),this.loadingIndicator||clearInterval(t)},3e3)}unsetLoadingIndicator(){this.loadingIndicator&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=setTimeout(()=>{if(Object.values(this.loading).some(t=>t))return this.unsetLoadingIndicator();this.loadingIndicator=!1,this.updateTree()},3e3))}}var Lf=s["ɵcrt"]({encapsulation:0,styles:[["tree-root .tree-children{overflow:inherit}.quota-origin[_ngcontent-%COMP%]{cursor:pointer;color:#2b99a8}.quota-origin[_ngcontent-%COMP%]:hover{color:#212121}"]],data:{}});function Df(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function Pf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tree-root",[],null,[["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,2).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,2).onMousedown(n)&&a),a}),ud.b,ud.a)),s["ɵprd"](131584,null,dd.a,dd.a,[]),s["ɵdid"](2,573440,[[1,4]],4,ld.a,[dd.a,cd.a],{nodes:[0,"nodes"],options:[1,"options"]},null),s["ɵqud"](603979776,3,{loadingTemplate:0}),s["ɵqud"](603979776,4,{treeNodeTemplate:0}),s["ɵqud"](603979776,5,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,6,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["loadingTemplate",2]],null,0,null,Df))],(function(t,e){var n=e.component;t(e,2,0,n.nodes,n.treeOptions)}),null)}function Mf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Quotas"])),(t()(),s["ɵeld"](3,0,null,null,3,"cd-table",[["identifier","quotaKey"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.quota.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](4,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],onlyActionHeader:[2,"onlyActionHeader"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],identifier:[6,"identifier"],forceIdentifier:[7,"forceIdentifier"],selectionType:[8,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](5,0,null,0,1,"cd-table-actions",[["class","only-table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](6,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.settings,n.quota.columns,!0,!1,!1,0,"quotaKey",!0,"single"),t(e,6,0,n.permission,n.quota.selection,n.quota.tableActions)}),null)}function qf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[["class","col-sm-8 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,[" "," "])),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Mf)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Snapshots"])),(t()(),s["ɵeld"](9,0,null,null,3,"cd-table",[["forceIdentifier","true"],["identifier","name"],["selectionType","multiClick"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.snapshot.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](10,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](11,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](12,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,6,0,"/"!==n.selectedDir.path),t(e,10,0,n.selectedDir.snapshots,n.snapshot.columns,"name","true","multiClick"),t(e,12,0,n.permission,n.snapshot.selection,n.snapshot.tableActions)}),(function(t,e){t(e,3,0,e.component.selectedDir.path)}))}function jf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","quota-origin"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectOrigin(t.context.value)&&a),a}),null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function Ff(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{treeComponent:0}),s["ɵqud"](402653184,2,{originTmpl:0}),(t()(),s["ɵeld"](2,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,10,"div",[["class","col-sm-4 pr-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,9,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"button",[["class","btn btn-light pull-right"],["type","button"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshAllDirectories()&&a),a}),null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](9,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](10,2),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Pf)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qf)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["origin",2]],null,0,null,jf))],(function(t,e){var n=e.component,a=t(e,10,0,n.icons.large,n.icons.refresh);t(e,9,0,a),t(e,13,0,n.nodes),t(e,15,0,n.selectedDir)}),(function(t,e){var n=e.component;t(e,6,0,n.loadingIndicator),t(e,7,0,n.loadingIndicator)}))}class Gf{constructor(){this.lhsCounter="mds_mem.ino",this.rhsCounter="mds_server.handle_client_request",this.chart={datasets:[{label:this.lhsCounter,yAxisID:"LHS",data:[],lineTension:.1},{label:this.rhsCounter,yAxisID:"RHS",data:[],lineTension:.1}],options:{title:{text:"",display:!0},responsive:!0,maintainAspectRatio:!1,legend:{position:"top"},scales:{xAxes:[{position:"top",type:"time",time:{displayFormats:{quarter:"MMM YYYY"}},ticks:{maxRotation:0}}],yAxes:[{id:"LHS",type:"linear",position:"left"},{id:"RHS",type:"linear",position:"right"}]},tooltips:{enabled:!1,mode:"index",intersect:!1,position:"nearest",callbacks:{title:(t,e)=>{let n=0;if(t.length>0){const a=t[0];n=e.datasets[a.datasetIndex].data[a.index].x}return n.toString()}}}},chartType:"line"}}ngOnInit(){J.isUndefined(this.mdsCounter)||(this.setChartTooltip(),this.updateChart())}ngOnChanges(){J.isUndefined(this.mdsCounter)||this.updateChart()}setChartTooltip(){const t=new ha.a(this.chartCanvas,this.chartTooltip,t=>t.caretX+"px",t=>t.caretY-t.height-23+"px");t.getTitle=t=>ge(t,"x").format("LTS"),t.checkOffset=!0,J.merge(this.chart,{options:{title:{text:this.mdsCounter.name},tooltips:{custom:e=>t.customTooltips(e)}}})}updateChart(){const t=[{data:this.convertTimeSeries(this.mdsCounter[this.lhsCounter])},{data:this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])}];J.merge(this.chart,{datasets:t}),this.chart.datasets=[...this.chart.datasets]}convertTimeSeries(t){const e=[];return J.each(t,t=>{e.push({x:1e3*t[0],y:t[1]})}),e.shift(),e}deltaTimeSeries(t){let e,n=t[0];const a=[];for(e=1;e<t.length;e++){const r=t[e];a.push({x:1e3*r[0],y:r[1]-n[1]}),n=r}return a}}var Vf=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto auto 20px;cursor:pointer;overflow:visible;position:relative;height:500px;width:100%}']],data:{}});function zf(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvas:0}),s["ɵqud"](402653184,2,{chartTooltip:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,ca.a,[s.ElementRef,ca.c],{datasets:[0,"datasets"],options:[1,"options"],chartType:[2,"chartType"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chart.datasets,n.chart.options,n.chart.chartType)}),null)}class Bf{constructor(t,e,n){this.dimlessBinary=t,this.dimless=e,this.i18n=n,this.standbys=[],this.objectValues=Object.values}ngOnChanges(){this.setStandbys()}setStandbys(){this.standbys=[{key:this.i18n("Standby daemons"),value:this.data.standbys}]}ngOnInit(){this.columns={ranks:[{prop:"rank",name:this.i18n("Rank")},{prop:"state",name:this.i18n("State")},{prop:"mds",name:this.i18n("Daemon")},{prop:"activity",name:this.i18n("Activity"),cellTemplate:this.activityTmpl},{prop:"dns",name:this.i18n("Dentries"),pipe:this.dimless},{prop:"inos",name:this.i18n("Inodes"),pipe:this.dimless}],pools:[{prop:"pool",name:this.i18n("Pool")},{prop:"type",name:this.i18n("Type")},{prop:"size",name:this.i18n("Size"),pipe:this.dimlessBinary},{name:this.i18n("Usage"),cellTemplate:this.poolUsageTpl,comparator:(t,e,n,a)=>{const r=n.used/n.avail,i=a.used/a.avail;return r===i?0:r>i?1:-1}}]}}trackByFn(t,e){return e.name}}var Yf=s["ɵcrt"]({encapsulation:0,styles:[[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]],data:{}});function Hf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"cd-cephfs-chart",[],null,null,null,zf,Vf)),s["ɵdid"](3,638976,null,0,Gf,[],{mdsCounter:[0,"mdsCounter"]},null)],(function(t,e){t(e,3,0,e.context.$implicit)}),null)}function Uf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,ro.b,ro.a)),s["ɵdid"](1,573440,null,0,io.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],(function(t,e){t(e,1,0,e.context.row.size,e.context.row.used)}),null)}function Wf(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ",": "," /s\n"])),s["ɵppd"](1,1)],null,(function(t,e){var n="standby-replay"===e.context.row.state?"Evts":"Reqs",a=s["ɵunv"](e,0,1,t(e,1,0,s["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n,a)}))}function Kf(t){return s["ɵvid"](0,[s["ɵpid"](0,pa.a,[Ia.a]),s["ɵqud"](402653184,1,{poolUsageTpl:0}),s["ɵqud"](402653184,2,{activityTmpl:0}),(t()(),s["ɵeld"](3,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ranks"])),(t()(),s["ɵeld"](7,0,null,null,1,"cd-table",[],null,null,null,Dr.b,Dr.a)),s["ɵdid"](8,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](9,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Standbys"])),(t()(),s["ɵeld"](11,0,null,null,1,"cd-table-key-value",[],null,null,null,fi.b,fi.a)),s["ɵdid"](12,638976,null,0,hi.a,[be.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](13,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pools"])),(t()(),s["ɵeld"](16,0,null,null,1,"cd-table",[],null,null,null,Dr.b,Dr.a)),s["ɵdid"](17,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["MDS performance counters"])),(t()(),s["ɵand"](16777216,null,null,1,null,Hf)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,[[1,2],["poolUsageTpl",2]],null,0,null,Uf)),(t()(),s["ɵand"](0,[[2,2],["activityTmpl",2]],null,0,null,Wf))],(function(t,e){var n=e.component;t(e,8,0,n.data.ranks,n.columns.ranks,!1),t(e,12,0,n.standbys),t(e,17,0,n.data.pools,n.columns.pools,!1),t(e,21,0,n.objectValues(n.data.mdsCounters),n.trackByFn)}),null)}var $f=n("C6Ij"),Zf=n("AWcq");class Jf{constructor(t,e,n,a,r,i){this.cephfsService=t,this.modalService=e,this.notificationService=n,this.authStorageService=a,this.i18n=r,this.actionLabels=i,this.triggerApiUpdate=new s.EventEmitter,this.selection=new Ur.a,this.permission=this.authStorageService.getPermissions().cephfs,this.tableActions=[{permission:"update",icon:ht.a.signOut,click:()=>this.evictClientModal(),name:this.actionLabels.EVICT}]}ngOnInit(){this.columns=[{prop:"id",name:this.i18n("id")},{prop:"type",name:this.i18n("type")},{prop:"state",name:this.i18n("state")},{prop:"version",name:this.i18n("version")},{prop:"hostname",name:this.i18n("Host")},{prop:"root",name:this.i18n("root")}]}updateSelection(t){this.selection=t}evictClient(t){this.cephfsService.evictClient(this.id,t).subscribe(()=>{this.triggerApiUpdate.emit(),this.modalRef.hide(),this.notificationService.show(Ie.a.success,this.i18n('Evicted client "{{clientId}}"',{clientId:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}evictClientModal(){const t=this.selection.first().id;this.modalRef=this.modalService.show(as.a,{initialState:{itemDescription:"client",itemNames:[t],actionDescription:"evict",submitAction:()=>this.evictClient(t)}})}}var Qf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Xf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,$f.b,$f.a)),s["ɵdid"](1,114688,null,0,Zf.a,[],{status:[0,"status"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"cd-table",[["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](3,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](5,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.clients.status),t(e,3,0,n.clients.data,n.columns,"single"),t(e,5,0,n.permission,n.selection,n.tableActions)}),null)}var th=n("yJti");class eh{constructor(t,e,n){this.ngZone=t,this.authStorageService=e,this.cephfsService=n,this.clients={data:[],status:th.a.ValueNone},this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.directoriesSelected=!1,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection?this.selection.id!==this.id&&this.setupSelected(this.selection.id,this.selection.mdsmap.info):this.unsubscribeInterval()}setupSelected(t,e){this.id=t;const n=J.first(Object.values(e));this.grafanaId=n&&n.name,this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.clients={data:[],status:th.a.ValueNone},this.updateInterval()}updateInterval(){this.unsubscribeInterval(),this.subscribeInterval()}unsubscribeInterval(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}subscribeInterval(){this.ngZone.runOutsideAngular(()=>this.reloadSubscriber=Object(Qc.a)(0,5e3).subscribe(()=>this.ngZone.run(()=>this.refresh())))}refresh(){this.cephfsService.getTabs(this.id).subscribe(t=>{this.data=t,this.softRefresh()},()=>{this.clients.status=th.a.ValueException})}softRefresh(){const t=J.cloneDeep(this.data);this.clients=t.clients,this.details={standbys:t.standbys,pools:t.pools,ranks:t.ranks,mdsCounters:t.mds_counters,name:t.name}}ngOnDestroy(){this.unsubscribeInterval()}}var nh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ah(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](2,0,null,null,1,"span",[["class","badge badge-pill badge-tab ml-1"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""]))],null,(function(t,e){t(e,3,0,e.component.clients.data.length)}))}function rh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-directories",[],null,null,null,Ff,Lf)),s["ɵdid"](1,638976,null,0,Ef,[xt.a,Lt.b,kf,be.a,_a.a,At.b,gt.a,ga.a],{id:[0,"id"]},null)],(function(t,e){t(e,1,0,e.component.id)}),null)}function ih(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","tbO9LAiZz"]],null,null,null,kr.b,kr.a)),s["ɵdid"](3,638976,null,0,Er.a,[pt.a,Lr.b,re.a,vt.a,_a.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"mds-performance?var-mds_servers=mds."+n.grafanaId,"one","tbO9LAiZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function sh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵeld"](4,0,null,null,1,"cd-cephfs-detail",[],null,null,null,Kf,Yf)),s["ɵdid"](5,638976,null,0,Bf,[ga.a,pa.a,_a.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,5,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](7,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],null,{selectTab:"selectTab"}),(t()(),s["ɵand"](0,null,null,1,null,ah)),s["ɵdid"](9,16384,null,0,ta.c,[s.TemplateRef,ta.b],null,null),(t()(),s["ɵeld"](10,0,null,null,1,"cd-cephfs-clients",[],null,[[null,"triggerApiUpdate"]],(function(t,e,n){var a=!0;return"triggerApiUpdate"===e&&(a=!1!==t.component.refresh()&&a),a}),Xf,Qf)),s["ɵdid"](11,114688,null,0,Jf,[kf,Lt.b,gt.a,xt.a,_a.a,At.b],{id:[0,"id"],clients:[1,"clients"]},{triggerApiUpdate:"triggerApiUpdate"}),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Directories"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=0!=(t.component.directoriesSelected=!0)&&a),a}),null,null)),s["ɵdid"](13,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,rh)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ih)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.details),t(e,7,0),t(e,11,0,n.id,n.clients),t(e,13,0,"Directories"),t(e,15,0,n.directoriesSelected),t(e,17,0,n.grafanaPermission.read&&n.grafanaId)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function oh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,sh)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}class uh extends ns.a{constructor(t,e,n){super(),this.cephfsService=t,this.cdDatePipe=e,this.i18n=n,this.filesystems=[],this.selection=new Ur.a}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"mdsmap.fs_name",flexGrow:2},{name:this.i18n("Created"),prop:"mdsmap.created",flexGrow:2,pipe:this.cdDatePipe},{name:this.i18n("Enabled"),prop:"mdsmap.enabled",flexGrow:1,cellTransformation:Hr.a.checkIcon}]}loadFilesystems(t){this.cephfsService.list().subscribe(t=>{this.filesystems=t},()=>{t.error()})}updateSelection(t){this.selection=t}}var dh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function lh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.loadFilesystems(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](1,2867200,null,0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,3,1,"cd-cephfs-tabs",[["cdTableDetail",""]],null,null,null,oh,nh)),s["ɵdid"](3,704512,null,0,eh,[s.NgZone,xt.a,kf],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.filesystems,n.columns,"flex",!0,"id","true","single"),t(e,3,0,n.expandedRow)}),null)}function ch(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-list",[],null,null,null,lh,dh)),s["ɵdid"](1,114688,null,0,uh,[kf,be.a,_a.a],null,null)],(function(t,e){t(e,1,0)}),null)}var fh=s["ɵccf"]("cd-cephfs-list",uh,ch,{},{},[]),hh=n("D4zM"),gh=n("1nQr");class ph{constructor(t,e,n,a,r,i,s,o){this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=o,this.passwordPolicyHelpText="",this.icons=ht.a,this.action=this.actionLabels.CHANGE,this.resource=this.i18n("password"),this.createForm()}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({oldpassword:[null,[$.B.required,As.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("newpassword")===this.userForm.getValue("oldpassword"))]],newpassword:[null,[$.B.required,As.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("oldpassword")===this.userForm.getValue("newpassword"))],[As.a.passwordPolicy(this.userService,()=>this.authStorageService.getUsername(),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=J.defaultTo(n,"")})]],confirmnewpassword:[null,[$.B.required]]},{validators:[As.a.match("newpassword","confirmnewpassword")]})}onSubmit(){if(this.userForm.pristine)return;const t=this.authStorageService.getUsername(),e=this.userForm.getValue("oldpassword"),n=this.userForm.getValue("newpassword");this.userService.changePassword(t,e,n).subscribe(()=>this.onPasswordChange(),()=>{this.userForm.setErrors({cdSubmitButton:!0})})}onPasswordChange(){this.notificationService.show(Ie.a.success,this.i18n('Updated user password"')),this.router.navigate(["/login"])}}var bh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function mh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function yh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function vh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-helper",[["class","text-pre"]],null,null,null,tu.b,tu.a)),s["ɵdid"](1,49152,null,0,eu.a,[],{class:[0,"class"],html:[1,"html"]},null)],(function(t,e){t(e,1,0,"text-pre",s["ɵinlineInterpolate"](1,"",e.component.passwordPolicyHelpText,""))}),null)}function xh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function _h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function Th(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function Oh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function wh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function Sh(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Cs.a,[]),(t()(),s["ɵeld"](2,0,null,null,93,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,92,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,5).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit()&&a),a}),null,null)),s["ɵdid"](4,16384,null,0,$.G,[],null,null),s["ɵdid"](5,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](7,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](8,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](9,0,null,null,86,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,[""," ",""])),s["ɵppd"](12,1),s["ɵppd"](13,1),(t()(),s["ɵeld"](14,0,null,null,74,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](16,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","oldpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Old password"])),(t()(),s["ɵeld"](21,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,7,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,24)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,24).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,24)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,24)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](24,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](26,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](28,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](29,4210688,null,0,Os.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](30,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](31,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,33).onClick()&&a),a}),null,null)),s["ɵdid"](33,81920,null,0,hh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mh)),s["ɵdid"](35,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yh)),s["ɵdid"](37,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](38,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](39,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](42,0,null,0,4,"label",[["class","cd-col-form-label"],["for","newpassword"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New password"])),(t()(),s["ɵand"](16777216,null,null,1,null,vh)),s["ɵdid"](46,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](47,0,null,0,19,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","Password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,50)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,50).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,50)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,50)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](50,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](52,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](54,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](55,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](56,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](57,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,58).onClick()&&a),a}),null,null)),s["ɵdid"](58,81920,null,0,hh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](59,0,null,null,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](60,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,xh)),s["ɵdid"](62,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_h)),s["ɵdid"](64,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Th)),s["ɵdid"](66,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](67,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](68,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](71,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","confirmnewpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Confirm new password"])),(t()(),s["ɵeld"](73,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](74,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,76)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,76).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,76)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,76)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](76,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](78,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](80,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](81,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](82,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](83,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,84).onClick()&&a),a}),null,null)),s["ɵdid"](84,81920,null,0,hh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Oh)),s["ɵdid"](86,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wh)),s["ɵdid"](88,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](89,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](90,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](91,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),ws.b,ws.a)),s["ɵdid"](92,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](93,0,[" "," "," "])),s["ɵppd"](94,1),s["ɵppd"](95,1)],(function(t,e){var n=e.component;t(e,5,0,n.userForm),t(e,8,0,n.userForm),t(e,16,0),t(e,26,0,"oldpassword"),t(e,29,0,""),t(e,30,0,"oldpassword"),t(e,33,0,"oldpassword"),t(e,35,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"required")),t(e,37,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"notmatch")),t(e,39,0),t(e,46,0,n.passwordPolicyHelpText.length>0),t(e,52,0,"newpassword"),t(e,55,0,"newpassword"),t(e,58,0,"newpassword"),t(e,62,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"required")),t(e,64,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"notmatch")),t(e,66,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"passwordPolicy")),t(e,68,0),t(e,78,0,"confirmnewpassword"),t(e,81,0,"confirmnewpassword"),t(e,84,0,"confirmnewpassword"),t(e,86,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"required")),t(e,88,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"match")),t(e,92,0,n.userForm)}),(function(t,e){var n=e.component;t(e,3,0,s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending);var a=s["ɵunv"](e,11,0,t(e,12,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,11,1,t(e,13,0,s["ɵnov"](e,1),n.resource));t(e,11,0,a,r),t(e,15,0,s["ɵnov"](e,16).hasErrors,s["ɵnov"](e,16).hasSuccess),t(e,23,0,s["ɵnov"](e,28).ngClassUntouched,s["ɵnov"](e,28).ngClassTouched,s["ɵnov"](e,28).ngClassPristine,s["ɵnov"](e,28).ngClassDirty,s["ɵnov"](e,28).ngClassValid,s["ɵnov"](e,28).ngClassInvalid,s["ɵnov"](e,28).ngClassPending,s["ɵnov"](e,30).validClass,s["ɵnov"](e,30).invalidClass),t(e,38,0,s["ɵnov"](e,39).hasErrors,s["ɵnov"](e,39).hasSuccess),t(e,49,0,s["ɵnov"](e,54).ngClassUntouched,s["ɵnov"](e,54).ngClassTouched,s["ɵnov"](e,54).ngClassPristine,s["ɵnov"](e,54).ngClassDirty,s["ɵnov"](e,54).ngClassValid,s["ɵnov"](e,54).ngClassInvalid,s["ɵnov"](e,54).ngClassPending,s["ɵnov"](e,55).validClass,s["ɵnov"](e,55).invalidClass),t(e,60,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,67,0,s["ɵnov"](e,68).hasErrors,s["ɵnov"](e,68).hasSuccess),t(e,75,0,s["ɵnov"](e,80).ngClassUntouched,s["ɵnov"](e,80).ngClassTouched,s["ɵnov"](e,80).ngClassPristine,s["ɵnov"](e,80).ngClassDirty,s["ɵnov"](e,80).ngClassValid,s["ɵnov"](e,80).ngClassInvalid,s["ɵnov"](e,80).ngClassPending,s["ɵnov"](e,81).validClass,s["ɵnov"](e,81).invalidClass);var i=s["ɵunv"](e,93,0,t(e,94,0,s["ɵnov"](e,0),n.action)),o=s["ɵunv"](e,93,1,t(e,95,0,s["ɵnov"](e,1),n.resource));t(e,93,0,i,o)}))}function Ih(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-user-password-form",[],null,null,null,Sh,bh)),s["ɵdid"](1,49152,null,0,ph,[_a.a,At.b,gt.a,Rt.a,xt.a,jo.a,qt.m,gh.a],null,null)],null,null)}var Nh=s["ɵccf"]("cd-user-password-form",ph,Ih,{},{},[]);class Ch{constructor(t,e,n,a){this.route=t,this.summaryService=e,this.cephReleaseNamePipe=n,this.i18n=a,this.message=this.i18n("The NFS Ganesha service is not configured.")}ngOnInit(){const t=this.summaryService.subscribe(e=>{if(!e)return;const n=this.cephReleaseNamePipe.transform(e.version);this.docsUrl=`http://docs.ceph.com/docs/${n}/mgr/dashboard/`+"#configuring-nfs-ganesha-in-the-dashboard",setTimeout(()=>{t.unsubscribe()},0)});this.routeParamsSubscribe=this.route.params.subscribe(t=>{this.message=t.message})}ngOnDestroy(){this.routeParamsSubscribe.unsubscribe()}}var Rh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ah(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["type","info"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,[" ",""])),(t()(),s["ɵeld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,0,4,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please consult the "])),(t()(),s["ɵeld"](6,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵted"](-1,null,[" on how to configure and enable the NFS Ganesha management functionality."]))],(function(t,e){t(e,1,0,"info")}),(function(t,e){var n=e.component;t(e,2,0,n.message),t(e,6,0,s["ɵinlineInterpolate"](1,"",n.docsUrl,""))}))}function kh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-501",[],null,null,null,Ah,Rh)),s["ɵdid"](1,245760,null,0,Ch,[qt.a,pt.a,vt.a,_a.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Eh=s["ɵccf"]("cd-nfs-501",Ch,kh,{},{},[]);class Lh{constructor(t){this.i18n=t,this.clients=[],this.clientsColumns=[{name:this.i18n("Addresses"),prop:"addresses",flexGrow:2},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:1},{name:this.i18n("Squash"),prop:"squash",flexGrow:1}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.clients=this.selectedItem.clients,this.data={},this.data[this.i18n("Cluster")]=this.selectedItem.cluster_id,this.data[this.i18n("Daemons")]=this.selectedItem.daemons,this.data[this.i18n("NFS Protocol")]=this.selectedItem.protocols.map(t=>"NFSv"+t),this.data[this.i18n("Pseudo")]=this.selectedItem.pseudo,this.data[this.i18n("Access Type")]=this.selectedItem.access_type,this.data[this.i18n("Squash")]=this.selectedItem.squash,this.data[this.i18n("Transport")]=this.selectedItem.transports,this.data[this.i18n("Path")]=this.selectedItem.path,"CEPH"===this.selectedItem.fsal.name?(this.data[this.i18n("Storage Backend")]=this.i18n("CephFS"),this.data[this.i18n("CephFS User")]=this.selectedItem.fsal.user_id,this.data[this.i18n("CephFS Filesystem")]=this.selectedItem.fsal.fs_name,this.data[this.i18n("Security Label")]=this.selectedItem.fsal.sec_label_xattr):(this.data[this.i18n("Storage Backend")]=this.i18n("Object Gateway"),this.data[this.i18n("Object Gateway User")]=this.selectedItem.fsal.rgw_user_id))}}var Dh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ph(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Xn.b,Xn.a)),s["ɵdid"](1,180224,null,0,ta.e,[ta.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,fi.b,fi.a)),s["ɵdid"](5,638976,null,0,hi.a,[be.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,ta.b,[ta.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","addresses"],["selectionType",""]],null,null,null,Dr.b,Dr.a)),s["ɵdid"](9,2867200,[["table",4]],0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.data),t(e,7,0,s["ɵinlineInterpolate"](1,"Clients (",n.clients.length,")")),t(e,9,0,n.clients,n.clientsColumns,"flex","addresses","true","")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function Mh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ph)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}var qh=n("VTlA");let jh=(()=>{class t{constructor(t,e){this.http=t,this.i18n=e,this.apiPath="api/nfs-ganesha",this.uiApiPath="ui-api/nfs-ganesha",this.nfsAccessType=[{value:"RW",help:this.i18n("Allows all operations")},{value:"RO",help:this.i18n("Allows only operations that do not modify the server")},{value:"MDONLY",help:this.i18n("Does not allow read or write operations, but allows any other operation")},{value:"MDONLY_RO",help:this.i18n("Does not allow read, write, or any operation that modifies file        attributes or directory content")},{value:"NONE",help:this.i18n("Allows no access at all")}],this.nfsFsal=[{value:"CEPH",descr:this.i18n("CephFS")},{value:"RGW",descr:this.i18n("Object Gateway")}],this.nfsSquash=["no_root_squash","root_id_squash","root_squash","all_squash"]}list(){return this.http.get(`${this.apiPath}/export`)}get(t,e){return this.http.get(`${this.apiPath}/export/${t}/${e}`)}create(t){return this.http.post(`${this.apiPath}/export`,t,{observe:"response"})}update(t,e,n){return this.http.put(`${this.apiPath}/export/${t}/${e}`,n,{observe:"response"})}delete(t,e){return this.http.delete(`${this.apiPath}/export/${t}/${e}`,{observe:"response"})}lsDir(t){return this.http.get(`${this.uiApiPath}/lsdir?root_dir=${t}`)}buckets(t){return this.http.get(`${this.uiApiPath}/rgw/buckets?user_id=${t}`)}clients(){return this.http.get(`${this.uiApiPath}/cephx/clients`)}fsals(){return this.http.get(`${this.uiApiPath}/fsals`)}filesystems(){return this.http.get(`${this.uiApiPath}/cephfs/filesystems`)}daemon(){return this.http.get(`${this.apiPath}/daemon`)}start(t){return this.http.put(`${this.apiPath}/service/${t}/start`,null,{observe:"response"})}stop(t){return this.http.put(`${this.apiPath}/service/${t}/stop`,null,{observe:"response"})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](_a.a))},token:t,providedIn:we.a}),t})();class Fh extends ns.a{constructor(t,e,n,a,r,i,s){super(),this.authStorageService=t,this.i18n=e,this.modalService=n,this.nfsService=a,this.taskListService=r,this.taskWrapper=i,this.actionLabels=s,this.selection=new Ur.a,this.isDefaultCluster=!1,this.builders={"nfs/create":t=>({path:t.path,cluster_id:t.cluster_id,fsal:t.fsal})},this.permission=this.authStorageService.getPermissions().nfs;const o=()=>this.selection.first()&&`${encodeURI(this.selection.first().cluster_id)}/${encodeURI(this.selection.first().export_id)}`;this.tableActions=[{permission:"create",icon:ht.a.add,routerLink:()=>"/nfs/create",canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:ht.a.edit,routerLink:()=>`/nfs/edit/${o()}`,name:this.actionLabels.EDIT},{permission:"delete",icon:ht.a.destroy,click:()=>this.deleteNfsModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Path"),prop:"path",flexGrow:2,cellTransformation:Hr.a.executing},{name:this.i18n("Pseudo"),prop:"pseudo",flexGrow:2},{name:this.i18n("Cluster"),prop:"cluster_id",flexGrow:2},{name:this.i18n("Daemons"),prop:"daemons",flexGrow:2},{name:this.i18n("Storage Backend"),prop:"fsal",flexGrow:2,cellTemplate:this.nfsFsal},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:2}],this.nfsService.daemon().subscribe(t=>{const e=J(t).map(t=>t.cluster_id).uniq().value();this.isDefaultCluster=1===e.length&&"_default_"===e[0],this.columns[2].isHidden=this.isDefaultCluster,this.table&&this.table.updateColumns(),this.taskListService.init(()=>this.nfsService.list(),t=>this.prepareResponse(t),t=>this.exports=t,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)},()=>{this.onFetchError()})}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}prepareResponse(t){let e=[];return t.forEach(t=>{t.id=`${t.cluster_id}:${t.export_id}`,t.state="LOADING",e=e.concat(t)}),e}onFetchError(){this.table.reset(),this.viewCacheStatus={status:th.a.ValueException}}itemFilter(t,e){return t.cluster_id===e.metadata.cluster_id&&t.export_id===e.metadata.export_id}taskFilter(t){return["nfs/create","nfs/delete","nfs/edit"].includes(t.name)}updateSelection(t){this.selection=t}deleteNfsModal(){const t=this.selection.first().cluster_id,e=this.selection.first().export_id;this.modalRef=this.modalService.show(as.a,{initialState:{itemDescription:this.i18n("NFS export"),itemNames:[`${t}:${e}`],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new rs.a("nfs/delete",{cluster_id:t,export_id:e}),call:this.nfsService.delete(t,e)})}})}}var Gh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Vh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS"]))],null,null)}function zh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"]))],null,null)}function Bh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Vh)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zh)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,"CEPH"===e.context.value.name),t(e,3,0,"RGW"===e.context.value.name)}),null)}function Yh(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{nfsState:0}),s["ɵqud"](402653184,2,{nfsFsal:0}),s["ɵqud"](402653184,3,{table:0}),(t()(),s["ɵeld"](3,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Dr.b,Dr.a)),s["ɵdid"](4,2867200,[[3,4],["table",4]],0,Pr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](5,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Mr.b,Mr.a)),s["ɵdid"](7,114688,null,0,qr.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](8,0,null,3,1,"cd-nfs-details",[["cdTableDetail",""]],null,null,null,Mh,Dh)),s["ɵdid"](9,573440,null,0,Lh,[_a.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[2,2],["nfsFsal",2]],null,0,null,Bh))],(function(t,e){var n=e.component;t(e,4,0,n.exports,n.columns,"flex",!0,"id","true","single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,9,0,n.expandedRow)}),null)}function Hh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-nfs-list",[],null,null,null,Yh,Gh)),s["ɵprd"](131584,null,qh.a,qh.a,[Ae.a,pt.a]),s["ɵdid"](2,245760,null,0,Fh,[xt.a,_a.a,Lt.b,jh,qh.a,ds.a,At.b],null,null)],(function(t,e){t(e,2,0)}),null)}var Uh=s["ɵccf"]("cd-nfs-list",Fh,Hh,{},{},[]),Wh=n("hpHm");function Kh(t){return!!t&&(t instanceof wn.a||"function"==typeof t.lift&&"function"==typeof t.subscribe)}var $h=n("7o/Q");function Zh(t,e=Ra.a){return n=>n.lift(new Jh(t,e))}class Jh{constructor(t,e){this.dueTime=t,this.scheduler=e}call(t,e){return e.subscribe(new Qh(t,this.dueTime,this.scheduler))}}class Qh extends $h.a{constructor(t,e,n){super(t),this.dueTime=e,this.scheduler=n,this.debouncedSubscription=null,this.lastValue=null,this.hasValue=!1}_next(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(Xh,this.dueTime,this))}_complete(){this.debouncedNext(),this.destination.complete()}debouncedNext(){if(this.clearDebounce(),this.hasValue){const{lastValue:t}=this;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}}clearDebounce(){const t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)}}function Xh(t){t.debouncedNext()}var tg=n("eIep");const eg={"Á":"A","Ă":"A","Ắ":"A","Ặ":"A","Ằ":"A","Ẳ":"A","Ẵ":"A","Ǎ":"A","Â":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ä":"A","Ǟ":"A","Ȧ":"A","Ǡ":"A","Ạ":"A","Ȁ":"A","À":"A","Ả":"A","Ȃ":"A","Ā":"A","Ą":"A","Å":"A","Ǻ":"A","Ḁ":"A","Ⱥ":"A","Ã":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ɓ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ć":"C","Č":"C","Ç":"C","Ḉ":"C","Ĉ":"C","Ċ":"C","Ƈ":"C","Ȼ":"C","Ď":"D","Ḑ":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","Ɗ":"D","Ḏ":"D","Dz":"D","Dž":"D","Đ":"D","Ƌ":"D","DZ":"DZ","DŽ":"DZ","É":"E","Ĕ":"E","Ě":"E","Ȩ":"E","Ḝ":"E","Ê":"E","Ế":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","Ḙ":"E","Ë":"E","Ė":"E","Ẹ":"E","Ȅ":"E","È":"E","Ẻ":"E","Ȇ":"E","Ē":"E","Ḗ":"E","Ḕ":"E","Ę":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ƒ":"F","Ǵ":"G","Ğ":"G","Ǧ":"G","Ģ":"G","Ĝ":"G","Ġ":"G","Ɠ":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Ȟ":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","Í":"I","Ĭ":"I","Ǐ":"I","Î":"I","Ï":"I","Ḯ":"I","İ":"I","Ị":"I","Ȉ":"I","Ì":"I","Ỉ":"I","Ȋ":"I","Ī":"I","Į":"I","Ɨ":"I","Ĩ":"I","Ḭ":"I","Ꝺ":"D","Ꝼ":"F","Ᵹ":"G","Ꞃ":"R","Ꞅ":"S","Ꞇ":"T","Ꝭ":"IS","Ĵ":"J","Ɉ":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","Ꝃ":"K","Ḳ":"K","Ƙ":"K","Ḵ":"K","Ꝁ":"K","Ꝅ":"K","Ĺ":"L","Ƚ":"L","Ľ":"L","Ļ":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","Ⱡ":"L","Ꝉ":"L","Ḻ":"L","Ŀ":"L","Ɫ":"L","Lj":"L","Ł":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ń":"N","Ň":"N","Ņ":"N","Ṋ":"N","Ṅ":"N","Ṇ":"N","Ǹ":"N","Ɲ":"N","Ṉ":"N","Ƞ":"N","Nj":"N","Ñ":"N","NJ":"NJ","Ó":"O","Ŏ":"O","Ǒ":"O","Ô":"O","Ố":"O","Ộ":"O","Ồ":"O","Ổ":"O","Ỗ":"O","Ö":"O","Ȫ":"O","Ȯ":"O","Ȱ":"O","Ọ":"O","Ő":"O","Ȍ":"O","Ò":"O","Ỏ":"O","Ơ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ȏ":"O","Ꝋ":"O","Ꝍ":"O","Ō":"O","Ṓ":"O","Ṑ":"O","Ɵ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Õ":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ɛ":"E","Ɔ":"O","Ȣ":"OU","Ṕ":"P","Ṗ":"P","Ꝓ":"P","Ƥ":"P","Ꝕ":"P","Ᵽ":"P","Ꝑ":"P","Ꝙ":"Q","Ꝗ":"Q","Ŕ":"R","Ř":"R","Ŗ":"R","Ṙ":"R","Ṛ":"R","Ṝ":"R","Ȑ":"R","Ȓ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꜿ":"C","Ǝ":"E","Ś":"S","Ṥ":"S","Š":"S","Ṧ":"S","Ş":"S","Ŝ":"S","Ș":"S","Ṡ":"S","Ṣ":"S","Ṩ":"S","Ť":"T","Ţ":"T","Ṱ":"T","Ț":"T","Ⱦ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","Ṯ":"T","Ʈ":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ɯ":"M","Ʌ":"V","Ꜩ":"TZ","Ú":"U","Ŭ":"U","Ǔ":"U","Û":"U","Ṷ":"U","Ü":"U","Ǘ":"U","Ǚ":"U","Ǜ":"U","Ǖ":"U","Ṳ":"U","Ụ":"U","Ű":"U","Ȕ":"U","Ù":"U","Ủ":"U","Ư":"U","Ứ":"U","Ự":"U","Ừ":"U","Ử":"U","Ữ":"U","Ȗ":"U","Ū":"U","Ṻ":"U","Ų":"U","Ů":"U","Ũ":"U","Ṹ":"U","Ṵ":"U","Ꝟ":"V","Ṿ":"V","Ʋ":"V","Ṽ":"V","Ꝡ":"VY","Ẃ":"W","Ŵ":"W","Ẅ":"W","Ẇ":"W","Ẉ":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ý":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","Ỵ":"Y","Ỳ":"Y","Ƴ":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","Ɏ":"Y","Ỹ":"Y","Ź":"Z","Ž":"Z","Ẑ":"Z","Ⱬ":"Z","Ż":"Z","Ẓ":"Z","Ȥ":"Z","Ẕ":"Z","Ƶ":"Z","IJ":"IJ","Œ":"OE","ᴀ":"A","ᴁ":"AE","ʙ":"B","ᴃ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʛ":"G","ʜ":"H","ɪ":"I","ʁ":"R","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴌ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ɶ":"OE","ᴐ":"O","ᴕ":"OU","ᴘ":"P","ʀ":"R","ᴎ":"N","ᴙ":"R","ꜱ":"S","ᴛ":"T","ⱻ":"E","ᴚ":"R","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z","á":"a","ă":"a","ắ":"a","ặ":"a","ằ":"a","ẳ":"a","ẵ":"a","ǎ":"a","â":"a","ấ":"a","ậ":"a","ầ":"a","ẩ":"a","ẫ":"a","ä":"a","ǟ":"a","ȧ":"a","ǡ":"a","ạ":"a","ȁ":"a","à":"a","ả":"a","ȃ":"a","ā":"a","ą":"a","ᶏ":"a","ẚ":"a","å":"a","ǻ":"a","ḁ":"a","ⱥ":"a","ã":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ḃ":"b","ḅ":"b","ɓ":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","ƀ":"b","ƃ":"b","ɵ":"o","ć":"c","č":"c","ç":"c","ḉ":"c","ĉ":"c","ɕ":"c","ċ":"c","ƈ":"c","ȼ":"c","ď":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","ɗ":"d","ᶑ":"d","ḏ":"d","ᵭ":"d","ᶁ":"d","đ":"d","ɖ":"d","ƌ":"d","ı":"i","ȷ":"j","ɟ":"j","ʄ":"j","dz":"dz","dž":"dz","é":"e","ĕ":"e","ě":"e","ȩ":"e","ḝ":"e","ê":"e","ế":"e","ệ":"e","ề":"e","ể":"e","ễ":"e","ḙ":"e","ë":"e","ė":"e","ẹ":"e","ȅ":"e","è":"e","ẻ":"e","ȇ":"e","ē":"e","ḗ":"e","ḕ":"e","ⱸ":"e","ę":"e","ᶒ":"e","ɇ":"e","ẽ":"e","ḛ":"e","ꝫ":"et","ḟ":"f","ƒ":"f","ᵮ":"f","ᶂ":"f","ǵ":"g","ğ":"g","ǧ":"g","ģ":"g","ĝ":"g","ġ":"g","ɠ":"g","ḡ":"g","ᶃ":"g","ǥ":"g","ḫ":"h","ȟ":"h","ḩ":"h","ĥ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","ẖ":"h","ħ":"h","ƕ":"hv","í":"i","ĭ":"i","ǐ":"i","î":"i","ï":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","ȋ":"i","ī":"i","į":"i","ᶖ":"i","ɨ":"i","ĩ":"i","ḭ":"i","ꝺ":"d","ꝼ":"f","ᵹ":"g","ꞃ":"r","ꞅ":"s","ꞇ":"t","ꝭ":"is","ǰ":"j","ĵ":"j","ʝ":"j","ɉ":"j","ḱ":"k","ǩ":"k","ķ":"k","ⱪ":"k","ꝃ":"k","ḳ":"k","ƙ":"k","ḵ":"k","ᶄ":"k","ꝁ":"k","ꝅ":"k","ĺ":"l","ƚ":"l","ɬ":"l","ľ":"l","ļ":"l","ḽ":"l","ȴ":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","ŀ":"l","ɫ":"l","ᶅ":"l","ɭ":"l","ł":"l","lj":"lj","ſ":"s","ẜ":"s","ẛ":"s","ẝ":"s","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","ń":"n","ň":"n","ņ":"n","ṋ":"n","ȵ":"n","ṅ":"n","ṇ":"n","ǹ":"n","ɲ":"n","ṉ":"n","ƞ":"n","ᵰ":"n","ᶇ":"n","ɳ":"n","ñ":"n","nj":"nj","ó":"o","ŏ":"o","ǒ":"o","ô":"o","ố":"o","ộ":"o","ồ":"o","ổ":"o","ỗ":"o","ö":"o","ȫ":"o","ȯ":"o","ȱ":"o","ọ":"o","ő":"o","ȍ":"o","ò":"o","ỏ":"o","ơ":"o","ớ":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ȏ":"o","ꝋ":"o","ꝍ":"o","ⱺ":"o","ō":"o","ṓ":"o","ṑ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","õ":"o","ṍ":"o","ṏ":"o","ȭ":"o","ƣ":"oi","ꝏ":"oo","ɛ":"e","ᶓ":"e","ɔ":"o","ᶗ":"o","ȣ":"ou","ṕ":"p","ṗ":"p","ꝓ":"p","ƥ":"p","ᵱ":"p","ᶈ":"p","ꝕ":"p","ᵽ":"p","ꝑ":"p","ꝙ":"q","ʠ":"q","ɋ":"q","ꝗ":"q","ŕ":"r","ř":"r","ŗ":"r","ṙ":"r","ṛ":"r","ṝ":"r","ȑ":"r","ɾ":"r","ᵳ":"r","ȓ":"r","ṟ":"r","ɼ":"r","ᵲ":"r","ᶉ":"r","ɍ":"r","ɽ":"r","ↄ":"c","ꜿ":"c","ɘ":"e","ɿ":"r","ś":"s","ṥ":"s","š":"s","ṧ":"s","ş":"s","ŝ":"s","ș":"s","ṡ":"s","ṣ":"s","ṩ":"s","ʂ":"s","ᵴ":"s","ᶊ":"s","ȿ":"s","ɡ":"g","ᴑ":"o","ᴓ":"o","ᴝ":"u","ť":"t","ţ":"t","ṱ":"t","ț":"t","ȶ":"t","ẗ":"t","ⱦ":"t","ṫ":"t","ṭ":"t","ƭ":"t","ṯ":"t","ᵵ":"t","ƫ":"t","ʈ":"t","ŧ":"t","ᵺ":"th","ɐ":"a","ᴂ":"ae","ǝ":"e","ᵷ":"g","ɥ":"h","ʮ":"h","ʯ":"h","ᴉ":"i","ʞ":"k","ꞁ":"l","ɯ":"m","ɰ":"m","ᴔ":"oe","ɹ":"r","ɻ":"r","ɺ":"r","ⱹ":"r","ʇ":"t","ʌ":"v","ʍ":"w","ʎ":"y","ꜩ":"tz","ú":"u","ŭ":"u","ǔ":"u","û":"u","ṷ":"u","ü":"u","ǘ":"u","ǚ":"u","ǜ":"u","ǖ":"u","ṳ":"u","ụ":"u","ű":"u","ȕ":"u","ù":"u","ủ":"u","ư":"u","ứ":"u","ự":"u","ừ":"u","ử":"u","ữ":"u","ȗ":"u","ū":"u","ṻ":"u","ų":"u","ᶙ":"u","ů":"u","ũ":"u","ṹ":"u","ṵ":"u","ᵫ":"ue","ꝸ":"um","ⱴ":"v","ꝟ":"v","ṿ":"v","ʋ":"v","ᶌ":"v","ⱱ":"v","ṽ":"v","ꝡ":"vy","ẃ":"w","ŵ":"w","ẅ":"w","ẇ":"w","ẉ":"w","ẁ":"w","ⱳ":"w","ẘ":"w","ẍ":"x","ẋ":"x","ᶍ":"x","ý":"y","ŷ":"y","ÿ":"y","ẏ":"y","ỵ":"y","ỳ":"y","ƴ":"y","ỷ":"y","ỿ":"y","ȳ":"y","ẙ":"y","ɏ":"y","ỹ":"y","ź":"z","ž":"z","ẑ":"z","ʑ":"z","ⱬ":"z","ż":"z","ẓ":"z","ȥ":"z","ẕ":"z","ᵶ":"z","ᶎ":"z","ʐ":"z","ƶ":"z","ɀ":"z","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ij":"ij","œ":"oe","st":"st","ₐ":"a","ₑ":"e","ᵢ":"i","ⱼ":"j","ₒ":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","ₓ":"x"};class ng{constructor(t,e=t,n=!1){this.item=t,this.value=e,this.header=n}isHeader(){return this.header}toString(){return this.value}}function ag(t){return t?t.replace(/[^A-Za-z0-9\[\] ]/g,(function(t){return eg[t]||t})):""}function rg(t,e=" ",n=""){const a=t.split(new RegExp(`(?:[${n}])([^${n}]+)`+`(?:[${n}])|([^${e}]+)`,"g")),r=[],i=a.length;let s;const o=new RegExp(`[${n}]+`,"g");for(let u=0;u<i;u+=1)s=a[u],s&&s.length&&s!==e&&r.push(s.replace(o,""));return r}function ig(t,e){if(!e||"object"!=typeof t)return t.toString();if(e.endsWith("()"))return t[e.slice(0,e.length-2)]().toString();const n=e.replace(/\[(\w+)\]/g,".$1").replace(/^\./,"").split(".");for(const a of n)a in t&&(t=t[a]);return t?t.toString():""}class sg{constructor(t,e,n,a){this.positionService=t,this.renderer=e,this.element=n,this.changeDetectorRef=a,this.isFocused=!1,this.height=0,this._matches=[],this.isScrolledIntoView=function(t){const e=this.ulElement.nativeElement.scrollTop,n=e+Number(this.ulElement.nativeElement.offsetHeight),a=t.offsetTop;return a+t.offsetHeight<=n&&a>=e},this.positionServiceSubscription=this.positionService.event$.subscribe(()=>{if(this.isAnimated)return this.animationState=this.isTopPosition?"animated-up":"animated-down",void this.changeDetectorRef.detectChanges();this.animationState="unanimated",this.changeDetectorRef.detectChanges()})}get isBs4(){return!Object(Wh.d)()}get active(){return this._active}get matches(){return this._matches}set matches(t){if(this.positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition}},allowedPositions:["top","bottom"]}),this._matches=t,this.needScrollbar=this.typeaheadScrollable&&this.typeaheadOptionsInScrollableView<this.matches.length,this.typeaheadScrollable&&setTimeout(()=>{this.setScrollableMode()}),this.typeaheadIsFirstItemActive&&this._matches.length>0&&(this._active=this._matches[0],this._active.isHeader()&&this.nextActiveMatch()),this._active&&!this.typeaheadIsFirstItemActive){const t=this._matches.find(t=>t.value===this._active.value);if(t)return void this.selectActive(t);this._active=null}}get isTopPosition(){return this.element.nativeElement.classList.contains("top")}get optionsListTemplate(){return this.parent?this.parent.optionsListTemplate:void 0}get isAnimated(){return!!this.parent&&this.parent.isAnimated}get adaptivePosition(){return!!this.parent&&this.parent.adaptivePosition}get typeaheadScrollable(){return!!this.parent&&this.parent.typeaheadScrollable}get typeaheadOptionsInScrollableView(){return this.parent?this.parent.typeaheadOptionsInScrollableView:5}get typeaheadIsFirstItemActive(){return!this.parent||this.parent.typeaheadIsFirstItemActive}get itemTemplate(){return this.parent?this.parent.typeaheadItemTemplate:void 0}selectActiveMatch(t){this._active&&this.parent.typeaheadSelectFirstItem&&this.selectMatch(this._active),!this.parent.typeaheadSelectFirstItem&&t&&this.selectMatch(this._active)}prevActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t-1<0?this.matches.length-1:t-1],this._active.isHeader()&&this.prevActiveMatch(),this.typeaheadScrollable&&this.scrollPrevious(t)}nextActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t+1>this.matches.length-1?0:t+1],this._active.isHeader()&&this.nextActiveMatch(),this.typeaheadScrollable&&this.scrollNext(t)}selectActive(t){this.isFocused=!0,this._active=t}highlight(t,e){let n,a,r=t.value,i=(this.parent&&this.parent.typeaheadLatinize?ag(r):r).toLowerCase();if("object"==typeof e){const t=e.length;for(let s=0;s<t;s+=1)n=i.indexOf(e[s]),a=e[s].length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+`${r.substring(n+a)}`,i=`${i.substring(0,n)}        ${" ".repeat(a)}         `+`${i.substring(n+a)}`)}else e&&(n=i.indexOf(e),a=e.length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+`${r.substring(n+a)}`));return r}focusLost(){this.isFocused=!1}isActive(t){return this._active===t}selectMatch(t,e){return e&&(e.stopPropagation(),e.preventDefault()),this.parent.changeModel(t),setTimeout(()=>this.parent.typeaheadOnSelect.emit(t),0),!1}setScrollableMode(){if(this.ulElement||(this.ulElement=this.element),this.liElements.first){const t=Wh.b.getStyles(this.ulElement.nativeElement),e=Wh.b.getStyles(this.liElements.first.nativeElement),n=parseFloat((t["padding-bottom"]?t["padding-bottom"]:"").replace("px","")),a=parseFloat((t["padding-top"]?t["padding-top"]:"0").replace("px","")),r=parseFloat((e.height?e.height:"0").replace("px",""));this.guiHeight=`${this.typeaheadOptionsInScrollableView*r+a+n}px`}this.renderer.setStyle(this.element.nativeElement,"visibility","visible")}scrollPrevious(t){if(0!==t){if(this.liElements){const e=this.liElements.toArray()[t-1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop)}}else this.scrollToBottom()}scrollNext(t){if(t+1>this.matches.length-1)this.scrollToTop();else if(this.liElements){const e=this.liElements.toArray()[t+1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop-Number(this.ulElement.nativeElement.offsetHeight)+Number(e.nativeElement.offsetHeight))}}ngOnDestroy(){this.positionServiceSubscription.unsubscribe()}scrollToBottom(){this.ulElement.nativeElement.scrollTop=this.ulElement.nativeElement.scrollHeight}scrollToTop(){this.ulElement.nativeElement.scrollTop=0}}class og{constructor(){this.adaptivePosition=!1,this.isAnimated=!1,this.hideResultsOnBlur=!0,this.selectFirstItem=!0,this.isFirstItemActive=!0,this.minLength=1}}class ug{constructor(t,e,n,a,r,i,o){this.changeDetection=n,this.element=a,this.ngControl=r,this.renderer=i,this.typeaheadMinLength=void 0,this.isAnimated=!1,this.typeaheadAsync=void 0,this.typeaheadLatinize=!0,this.typeaheadSingleWords=!0,this.typeaheadWordDelimiters=" ",this.typeaheadPhraseDelimiters="'\"",this.typeaheadScrollable=!1,this.typeaheadOptionsInScrollableView=5,this.typeaheadSelectFirstItem=!0,this.typeaheadIsFirstItemActive=!0,this.typeaheadLoading=new s.EventEmitter,this.typeaheadNoResults=new s.EventEmitter,this.typeaheadOnSelect=new s.EventEmitter,this.typeaheadOnBlur=new s.EventEmitter,this.dropup=!1,this.isActiveItemChanged=!1,this.isTypeaheadOptionsListActive=!1,this.keyUpEventEmitter=new s.EventEmitter,this.placement="bottom-left",this._subscriptions=[],this._typeahead=t.createLoader(a,o,i).provide({provide:og,useValue:e}),Object.assign(this,{typeaheadHideResultsOnBlur:e.hideResultsOnBlur,typeaheadSelectFirstItem:e.selectFirstItem,typeaheadIsFirstItemActive:e.isFirstItemActive,typeaheadMinLength:e.minLength,adaptivePosition:e.adaptivePosition,isAnimated:e.isAnimated})}ngOnInit(){this.typeaheadOptionsLimit=this.typeaheadOptionsLimit||20,this.typeaheadMinLength=void 0===this.typeaheadMinLength?1:this.typeaheadMinLength,this.typeaheadWaitMs=this.typeaheadWaitMs||0,void 0!==this.typeaheadAsync||Kh(this.typeahead)||(this.typeaheadAsync=!1),Kh(this.typeahead)&&(this.typeaheadAsync=!0),this.typeaheadAsync?this.asyncActions():this.syncActions()}onInput(t){const e=void 0!==t.target.value?t.target.value:void 0!==t.target.textContent?t.target.textContent:t.target.innerText;null!=e&&e.trim().length>=this.typeaheadMinLength?(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(t.target.value)):(this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!1),this.hide())}onChange(t){if(this._container){if(27===t.keyCode||"Escape"===t.key)return void this.hide();if(38===t.keyCode||"ArrowUp"===t.key)return this.isActiveItemChanged=!0,void this._container.prevActiveMatch();if(40===t.keyCode||"ArrowDown"===t.key)return this.isActiveItemChanged=!0,void this._container.nextActiveMatch();if(13===t.keyCode||"Enter"===t.key)return void this._container.selectActiveMatch()}}onFocus(){0===this.typeaheadMinLength&&(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(this.element.nativeElement.value||""))}onBlur(){this._container&&!this._container.isFocused&&this.typeaheadOnBlur.emit(this._container.active)}onKeydown(t){if(this._container&&(9===t.keyCode||"Tab"===t.key||13===t.keyCode||"Enter"===t.key)){if(t.preventDefault(),this.typeaheadSelectFirstItem)return void this._container.selectActiveMatch();this.typeaheadSelectFirstItem||(this._container.selectActiveMatch(this.isActiveItemChanged),this.isActiveItemChanged=!1,this.hide())}}changeModel(t){const e=t.value;this.ngControl.viewToModelUpdate(e),this.ngControl.control.setValue(e),this.changeDetection.markForCheck(),this.hide()}get matches(){return this._matches}show(){this._typeahead.attach(sg).to(this.container).position({attachment:`${this.dropup?"top":"bottom"} start`}).show({typeaheadRef:this,placement:this.placement,animation:!1,dropup:this.dropup}),this._outsideClickListener=this.renderer.listen("document","click",t=>{0===this.typeaheadMinLength&&this.element.nativeElement.contains(t.target)||this.typeaheadHideResultsOnBlur&&!this.element.nativeElement.contains(t.target)&&this.onOutsideClick()}),this._container=this._typeahead.instance,this._container.parent=this;const t=(this.typeaheadLatinize?ag(this.ngControl.control.value):this.ngControl.control.value).toString().toLowerCase();this._container.query=this.typeaheadSingleWords?rg(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches,this.element.nativeElement.focus()}hide(){this._typeahead.isShown&&(this._typeahead.hide(),this._outsideClickListener(),this._container=null)}onOutsideClick(){this._container&&!this._container.isFocused&&this.hide()}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._typeahead.dispose()}asyncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(Zh(this.typeaheadWaitMs),Object(tg.a)(t=>this.typeahead.pipe(Object(Oe.a)(e=>{const n=this.normalizeQuery(t);return e.filter(t=>t&&this.testMatch(this.normalizeOption(t),n))})))).subscribe(t=>{this.finalizeAsyncCall(t)}))}syncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(Zh(this.typeaheadWaitMs),Object(Nn.a)(t=>{const e=this.normalizeQuery(t);return Object(Sn.a)(this.typeahead).pipe(Object(In.a)(t=>t&&this.testMatch(this.normalizeOption(t),e)),Dn())})).subscribe(t=>{this.finalizeAsyncCall(t)}))}normalizeOption(t){const e=ig(t,this.typeaheadOptionField);return(this.typeaheadLatinize?ag(e):e).toLowerCase()}normalizeQuery(t){let e=(this.typeaheadLatinize?ag(t):t).toString().toLowerCase();return e=this.typeaheadSingleWords?rg(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,e}testMatch(t,e){let n;if("object"==typeof e){n=e.length;for(let a=0;a<n;a+=1)if(e[a].length>0&&t.indexOf(e[a])<0)return!1;return!0}return t.indexOf(e)>=0}finalizeAsyncCall(t){if(this.prepareMatches(t||[]),this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!this.hasMatches()),this.hasMatches())if(this._container){const t=((this.typeaheadLatinize?ag(this.ngControl.control.value):this.ngControl.control.value)||"").toString().toLowerCase();this._container.query=this.typeaheadSingleWords?rg(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches}else this.show();else this.hide()}prepareMatches(t){const e=t.slice(0,this.typeaheadOptionsLimit);if(this.typeaheadGroupField){let t=[];e.map(t=>ig(t,this.typeaheadGroupField)).filter((t,e,n)=>n.indexOf(t)===e).forEach(n=>{t.push(new ng(n,n,!0)),t=t.concat(e.filter(t=>ig(t,this.typeaheadGroupField)===n).map(t=>new ng(t,ig(t,this.typeaheadOptionField))))}),this._matches=t}else this._matches=e.map(t=>new ng(t,ig(t,this.typeaheadOptionField)))}hasMatches(){return this._matches.length>0}}class dg{static forRoot(){return{ngModule:dg,providers:[W.a,na.a,og]}}}var lg=n("WiuZ"),cg=n("wnGv"),fg=n("TYzs");class hg{constructor(t,e){this.nfsService=t,this.i18n=e,this.nfsSquash=this.nfsService.nfsSquash,this.nfsAccessType=this.nfsService.nfsAccessType,this.icons=ht.a}getNoAccessTypeDescr(){return this.form.getValue("access_type")?`${this.form.getValue("access_type")} ${this.i18n("(inherited from global config)")}`:this.i18n("-- Select the access type --")}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>this.getValue(t,"access_type")===e.value);return J.isObjectLike(e)?e.help:""}getNoSquashDescr(){return this.form.getValue("squash")?`${this.form.getValue("squash")} (${this.i18n("inherited from global config")})`:this.i18n("-- Select what kind of user id squashing is performed --")}addClient(){const t=this.form.get("clients"),e="(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)",n=new Rs.a({addresses:new $.i("",{validators:[$.B.required,$.B.pattern(`${e}([ ,]{1,2}${e})*`)]}),access_type:new $.i(""),squash:new $.i("")});return t.push(n),n}removeClient(t){this.form.get("clients").removeAt(t)}showError(t,e,n,a){return this.form.controls.clients.controls[t].showError(e,n,a)}getValue(t,e){return this.form.get("clients").at(t).getValue(e)}resolveModel(t){J.forEach(t,t=>{this.addClient().patchValue(t)})}trackByFn(t){return t}}var gg=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function pg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","no-border text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Any client can access"]))],null,null)}function bg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function mg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Must contain one or more comma-separated values"])),(t()(),s["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["For example:"])),(t()(),s["ɵted"](-1,null,[" 192.168.0.10, 192.168.1.0/8 "]))],null,null)}function yg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function vg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getAccessTypeHelp(e.parent.context.index))}))}function xg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function _g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,71,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,70,"div",[["class","card"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](2,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](4,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](5,0,null,null,4,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](6,null,[" "," "])),s["ɵppd"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","float-right clickable"],["tooltip","Remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeClient(t.context.index)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](10,0,null,null,61,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](12,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,1,"label",[["class","cd-col-form-label"],["for","addresses"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Addresses"])),(t()(),s["ɵeld"](17,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,6,"input",[["class","form-control"],["formControlName","addresses"],["id","addresses"],["name","addresses"],["placeholder","192.168.0.10, 192.168.1.0/8"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](21,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](23,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](24,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](25,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,bg)),s["ɵdid"](27,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mg)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](30,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](31,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,1,"label",[["class","cd-col-form-label"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](36,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,38).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,38).onTouched()&&a),a}),null,null)),s["ɵdid"](38,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](40,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](42,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](43,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](44,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](45,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](46,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](47,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,yg)),s["ɵdid"](49,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vg)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](52,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](53,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](56,0,null,0,1,"label",[["class","cd-col-form-label"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](58,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,60).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,60).onTouched()&&a),a}),null,null)),s["ɵdid"](60,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](62,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](64,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](65,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](66,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](67,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](68,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](69,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,xg)),s["ɵdid"](71,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,2,0,e.context.index),t(e,12,0),t(e,21,0,"addresses"),t(e,24,0,"addresses"),t(e,27,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"required")),t(e,29,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"pattern")),t(e,31,0),t(e,40,0,"access_type"),t(e,43,0,"access_type"),t(e,45,0,""),t(e,46,0,""),t(e,49,0,n.nfsAccessType),t(e,51,0,n.getValue(e.context.index,"access_type")),t(e,53,0),t(e,62,0,"squash"),t(e,65,0,"squash"),t(e,67,0,""),t(e,68,0,""),t(e,71,0,n.nfsSquash)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,6,0,t(e,7,0,s["ɵnov"](e.parent,0),e.context.index+1));t(e,6,0,a),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,24).validClass,s["ɵnov"](e,24).invalidClass),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,37,0,s["ɵnov"](e,42).ngClassUntouched,s["ɵnov"](e,42).ngClassTouched,s["ɵnov"](e,42).ngClassPristine,s["ɵnov"](e,42).ngClassDirty,s["ɵnov"](e,42).ngClassValid,s["ɵnov"](e,42).ngClassInvalid,s["ɵnov"](e,42).ngClassPending,s["ɵnov"](e,43).validClass,s["ɵnov"](e,43).invalidClass),t(e,47,0,n.getNoAccessTypeDescr()),t(e,52,0,s["ɵnov"](e,53).hasErrors,s["ɵnov"](e,53).hasSuccess),t(e,59,0,s["ɵnov"](e,64).ngClassUntouched,s["ɵnov"](e,64).ngClassTouched,s["ɵnov"](e,64).ngClassPristine,s["ɵnov"](e,64).ngClassDirty,s["ɵnov"](e,64).ngClassValid,s["ɵnov"](e,64).ngClassInvalid,s["ɵnov"](e,64).ngClassPending,s["ɵnov"](e,65).validClass,s["ɵnov"](e,65).invalidClass),t(e,69,0,n.getNoSquashDescr())}))}function Tg(t){return s["ɵvid"](0,[s["ɵpid"](0,fg.a,[]),(t()(),s["ɵeld"](1,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](2,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](7,0,null,0,22,"div",[["class","cd-col-form-input"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](10,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](11,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pg)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](14,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](15,212992,null,0,$.g,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.g]),s["ɵdid"](17,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,_g)),s["ɵdid"](19,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵeld"](20,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,8,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,7,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,6,"button",[["class","btn btn-light "]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addClient()&&a),a}),null,null)),(t()(),s["ɵeld"](24,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](26,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](27,1),(t()(),s["ɵeld"](28,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add clients"]))],(function(t,e){var n=e.component;t(e,2,0),t(e,8,0,n.form),t(e,11,0,n.form),t(e,13,0,0===n.form.get("clients").value.length),t(e,15,0,"clients"),t(e,19,0,n.form.get("clients").value,n.trackByFn);var a=t(e,27,0,n.icons.add);t(e,26,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending)}))}var Og=n("P8lu"),wg=n("DNAf"),Sg=n("a96k");class Ig{constructor(t,e,n,a,r,i,s,o,u,d,l,c){this.authStorageService=t,this.nfsService=e,this.route=n,this.router=a,this.rgwUserService=r,this.formBuilder=i,this.summaryservice=s,this.cephReleaseNamePipe=o,this.taskWrapper=u,this.cdRef=d,this.i18n=l,this.actionLabels=c,this.isEdit=!1,this.cluster_id=null,this.export_id=null,this.isNewDirectory=!1,this.isNewBucket=!1,this.isDefaultCluster=!1,this.allClusters=null,this.allDaemons={},this.icons=ht.a,this.allFsals=[],this.allRgwUsers=[],this.allCephxClients=null,this.allFsNames=null,this.defaultAccessType={RGW:"RO"},this.nfsAccessType=this.nfsService.nfsAccessType,this.nfsSquash=this.nfsService.nfsSquash,this.daemonsSelections=[],this.daemonsMessages=new wg.a({noOptions:this.i18n("There are no daemons available.")},this.i18n),this.pathDataSource=wn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(Nn.a)(t=>this.getPathTypeahead(t)),Object(Oe.a)(t=>t.paths)),this.bucketDataSource=wn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(Nn.a)(t=>this.getBucketTypeahead(t))),this.permission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("NFS export"),this.createForm()}ngOnInit(){const t=[this.nfsService.daemon(),this.nfsService.fsals(),this.nfsService.clients(),this.nfsService.filesystems()];this.router.url.startsWith("/nfs/edit")&&(this.isEdit=!0),this.isEdit?(this.action=this.actionLabels.EDIT,this.route.params.subscribe(e=>{this.cluster_id=decodeURIComponent(e.cluster_id),this.export_id=decodeURIComponent(e.export_id),t.push(this.nfsService.get(this.cluster_id,this.export_id)),this.getData(t)})):(this.action=this.actionLabels.CREATE,this.getData(t));const e=this.summaryservice.getCurrentSummary(),n=this.cephReleaseNamePipe.transform(e.version);this.docsUrl=`http://docs.ceph.com/docs/${n}/radosgw/nfs/`}getData(t){Object(Ro.a)(t).subscribe(t=>{this.resolveDaemons(t[0]),this.resolvefsals(t[1]),this.resolveClients(t[2]),this.resolveFilesystems(t[3]),t[4]&&this.resolveModel(t[4])})}createForm(){this.nfsForm=new Rs.a({cluster_id:new $.i("",{validators:[$.B.required]}),daemons:new $.i([]),fsal:new Rs.a({name:new $.i("",{validators:[$.B.required]}),user_id:new $.i("",{validators:[As.a.requiredIf({name:"CEPH"})]}),fs_name:new $.i("",{validators:[As.a.requiredIf({name:"CEPH"})]}),rgw_user_id:new $.i("",{validators:[As.a.requiredIf({name:"RGW"})]})}),path:new $.i(""),protocolNfsv3:new $.i(!0,{validators:[As.a.requiredIf({protocolNfsv4:!1},t=>!t)]}),protocolNfsv4:new $.i(!0,{validators:[As.a.requiredIf({protocolNfsv3:!1},t=>!t)]}),tag:new $.i(""),pseudo:new $.i("",{validators:[As.a.requiredIf({protocolNfsv4:!0}),$.B.pattern("^/[^><|&()]*$")]}),access_type:new $.i("RW",{validators:[$.B.required]}),squash:new $.i("",{validators:[$.B.required]}),transportUDP:new $.i(!0,{validators:[As.a.requiredIf({transportTCP:!1},t=>!t)]}),transportTCP:new $.i(!0,{validators:[As.a.requiredIf({transportUDP:!1},t=>!t)]}),clients:this.formBuilder.array([]),security_label:new $.i(!1),sec_label_xattr:new $.i("security.selinux",As.a.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})}resolveModel(t){"CEPH"===t.fsal.name&&(t.sec_label_xattr=t.fsal.sec_label_xattr),this.daemonsSelections=J.map(this.allDaemons[t.cluster_id],e=>new Sg.a(-1!==t.daemons.indexOf(e),e,"")),this.daemonsSelections=[...this.daemonsSelections],t.protocolNfsv3=-1!==t.protocols.indexOf(3),t.protocolNfsv4=-1!==t.protocols.indexOf(4),delete t.protocols,t.transportTCP=-1!==t.transports.indexOf("TCP"),t.transportUDP=-1!==t.transports.indexOf("UDP"),delete t.transports,t.clients.forEach(t=>{let e="";t.addresses.forEach(t=>{e+=t+", "}),e.length>=2&&(e=e.substring(0,e.length-2)),t.addresses=e}),this.nfsForm.patchValue(t),this.setPathValidation(),this.nfsClients.resolveModel(t.clients)}resolveDaemons(t){t=J.sortBy(t,["daemon_id"]),this.allClusters=J(t).map(t=>t.cluster_id).sortedUniq().value(),J.forEach(this.allClusters,t=>{this.allDaemons[t]=[]}),J.forEach(t,t=>{this.allDaemons[t.cluster_id].push(t.daemon_id)});const e=J.isArray(this.allClusters)&&1===this.allClusters.length;this.isDefaultCluster=e&&"_default_"===this.allClusters[0],e&&(this.nfsForm.patchValue({cluster_id:this.allClusters[0]}),this.onClusterChange())}resolvefsals(t){t.forEach(t=>{const e=this.nfsService.nfsFsal.find(e=>t===e.value);J.isObjectLike(e)&&(this.allFsals.push(e),"RGW"===e.value&&this.rgwUserService.list().subscribe(t=>{t.forEach(t=>{0===t.suspended&&t.keys.length>0&&this.allRgwUsers.push(t.user_id)})}))}),1===this.allFsals.length&&J.isUndefined(this.nfsForm.getValue("fsal"))&&this.nfsForm.patchValue({fsal:this.allFsals[0]})}resolveClients(t){this.allCephxClients=t}resolveFilesystems(t){this.allFsNames=t,1===t.length&&this.nfsForm.patchValue({fsal:{fs_name:t[0].name}})}fsalChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo(),access_type:this._updateAccessType()}),this.setPathValidation(),this.cdRef.detectChanges()}accessTypeChangeHandler(){const t=this.nfsForm.getValue("name"),e=this.nfsForm.getValue("access_type");this.defaultAccessType[t]=e}setPathValidation(){"RGW"===this.nfsForm.getValue("name")?this.nfsForm.get("path").setValidators([$.B.required,$.B.pattern("^(/|[^/><|&()#?]+)$")]):this.nfsForm.get("path").setValidators([$.B.required,$.B.pattern("^/[^><|&()?]*$")])}rgwUserIdChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()})}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>{if(t===e.value)return e});return J.isObjectLike(e)?e.help:""}getId(){return J.isString(this.nfsForm.getValue("cluster_id"))&&J.isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""}getPathTypeahead(t){return J.isString(t)&&"/"!==t?this.nfsService.lsDir(t):Object(On.a)([])}pathChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getPathTypeahead(t).subscribe(e=>{this.isNewDirectory="/"!==t&&-1===e.paths.indexOf(t)})}bucketChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getBucketTypeahead(t).subscribe(e=>{this.isNewBucket=""!==t&&-1===e.indexOf(t)})}getBucketTypeahead(t){const e=this.nfsForm.getValue("rgw_user_id");return J.isString(e)&&J.isString(t)&&"/"!==t&&""!==t?this.nfsService.buckets(e):Object(On.a)([])}_generateTag(){let t=this.nfsForm.getValue("tag");return this.nfsForm.get("tag").dirty||(t=void 0,"RGW"===this.nfsForm.getValue("fsal")&&(t=this.nfsForm.getValue("path"))),t}_generatePseudo(){let t=this.nfsForm.getValue("pseudo");return this.nfsForm.get("pseudo")&&!this.nfsForm.get("pseudo").dirty&&(t=void 0,"CEPH"===this.nfsForm.getValue("fsal")?(t="/cephfs",J.isString(this.nfsForm.getValue("path"))&&(t+=this.nfsForm.getValue("path"))):"RGW"===this.nfsForm.getValue("fsal")&&J.isString(this.nfsForm.getValue("rgw_user_id"))&&(t="/"+this.nfsForm.getValue("rgw_user_id"),J.isString(this.nfsForm.getValue("path"))&&(t+="/"+this.nfsForm.getValue("path")))),t}_updateAccessType(){const t=this.nfsForm.getValue("name");let e=this.defaultAccessType[t];return e||(e="RW"),e}onClusterChange(){const t=this.nfsForm.getValue("cluster_id");this.daemonsSelections=J.map(this.allDaemons[t],t=>new Sg.a(!1,t,"")),this.daemonsSelections=[...this.daemonsSelections],this.nfsForm.patchValue({daemons:[]})}removeDaemon(t,e){this.daemonsSelections.forEach(t=>{t.name===e&&(t.selected=!1)});const n=this.nfsForm.get("daemons");return n.value.splice(t,1),n.setValue(n.value),!1}onDaemonSelection(){this.nfsForm.get("daemons").setValue(this.nfsForm.getValue("daemons"))}submitAction(){let t;const e=this._buildRequest();t=this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new rs.a("nfs/edit",{cluster_id:this.cluster_id,export_id:this.export_id}),call:this.nfsService.update(this.cluster_id,this.export_id,e)}:{task:new rs.a("nfs/create",{path:e.path,fsal:e.fsal,cluster_id:e.cluster_id}),call:this.nfsService.create(e)}),t.subscribe(void 0,()=>this.nfsForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/nfs"]))}_buildRequest(){const t=J.cloneDeep(this.nfsForm.value);return(J.isUndefined(t.tag)||""===t.tag)&&(t.tag=null),this.isEdit&&(t.export_id=this.export_id),"CEPH"===t.fsal.name?delete t.fsal.rgw_user_id:(delete t.fsal.fs_name,delete t.fsal.user_id),t.protocols=[],t.protocolNfsv3?t.protocols.push(3):t.tag=null,delete t.protocolNfsv3,t.protocolNfsv4?t.protocols.push(4):t.pseudo=null,delete t.protocolNfsv4,t.transports=[],t.transportTCP&&t.transports.push("TCP"),delete t.transportTCP,t.transportUDP&&t.transports.push("UDP"),delete t.transportUDP,t.clients.forEach(e=>{e.addresses=J.isString(e.addresses)?J(e.addresses).split(/[ ,]+/).uniq().filter(t=>""!==t).value():[],e.squash||(e.squash=t.squash),e.access_type||(e.access_type=t.access_type)}),t.fsal.sec_label_xattr=!1===t.security_label||"RGW"===t.fsal.name?null:t.sec_label_xattr,delete t.sec_label_xattr,t}}var Ng=s["ɵcrt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function Cg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Rg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No cluster available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Ag(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cluster --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function kg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Eg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function Lg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,2,{FormControlNames:1}),s["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","cluster_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","cluster_id"],["id","cluster_id"],["name","cluster_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.onClusterChange()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[2,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ag)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kg)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Eg)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"cluster_id"),t(e,13,0,"cluster_id"),t(e,15,0,null===n.allClusters),t(e,17,0,null!==n.allClusters&&0===n.allClusters.length),t(e,19,0,null!==n.allClusters&&n.allClusters.length>0),t(e,21,0,n.allClusters),t(e,23,0,n.nfsForm.showError("cluster_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Dg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeDaemon(t.context.index,t.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1)],(function(t,e){var n=t(e,8,0,e.component.icons.destroy);t(e,7,0,n)}),(function(t,e){t(e,2,0,e.context.$implicit)}))}function Pg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Mg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No data pools available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function qg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the storage backend --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function jg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.descr)}))}function Fg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function Gg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Vg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No users available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function zg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the object gateway user --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Bg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Yg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function Hg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,8,{FormControlNames:1}),s["ɵqud"](603979776,9,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","rgw_user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway User"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","rgw_user_id"],["id","rgw_user_id"],["name","rgw_user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[8,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zg)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bg)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yg)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"rgw_user_id"),t(e,13,0,"rgw_user_id"),t(e,15,0,null===n.allRgwUsers),t(e,17,0,null!==n.allRgwUsers&&0===n.allRgwUsers.length),t(e,19,0,null!==n.allRgwUsers&&n.allRgwUsers.length>0),t(e,21,0,n.allRgwUsers),t(e,23,0,n.nfsForm.showError("rgw_user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Ug(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Wg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No clients available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Kg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cephx client --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function $g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Zg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function Jg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,10,{FormControlNames:1}),s["ɵqud"](603979776,11,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS User ID"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","user_id"],["id","user_id"],["name","user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[10,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ug)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kg)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$g)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zg)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"user_id"),t(e,13,0,"user_id"),t(e,15,0,null===n.allCephxClients),t(e,17,0,null!==n.allCephxClients&&0===n.allCephxClients.length),t(e,19,0,null!==n.allCephxClients&&n.allCephxClients.length>0),t(e,21,0,n.allCephxClients),t(e,23,0,n.nfsForm.showError("user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Qg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Xg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No CephFS filesystem available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function tp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the CephFS filesystem --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function ep(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function np(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function ap(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,12,{FormControlNames:1}),s["ɵqud"](603979776,13,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","fs_name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Name"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","fs_name"],["id","fs_name"],["name","fs_name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[12,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tp)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ep)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,np)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"fs_name"),t(e,13,0,"fs_name"),t(e,15,0,null===n.allFsNames),t(e,17,0,null!==n.allFsNames&&0===n.allFsNames.length),t(e,19,0,null!==n.allFsNames&&n.allFsNames.length>0),t(e,21,0,n.allFsNames),t(e,23,0,n.nfsForm.showError("fs_name",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function rp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","sec_label_xattr"],["id","sec_label_xattr"],["name","sec_label_xattr"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](3,671744,[[14,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,"sec_label_xattr"),t(e,6,0,"sec_label_xattr")}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function ip(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function sp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,14,{FormControlNames:1}),s["ɵqud"](603979776,15,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","security_label"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{required:0}),(t()(),s["ɵted"](-1,null,["Security Label"])),(t()(),s["ɵeld"](9,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","security_label"],["id","security_label"],["name","security_label"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,12).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](14,671744,[[14,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](16,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](17,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"label",[["class","custom-control-label"],["for","security_label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enable security label"])),(t()(),s["ɵeld"](20,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,rp)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ip)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,7,0,n.nfsForm.getValue("security_label"));t(e,6,0,"cd-col-form-label",a),t(e,14,0,"security_label"),t(e,17,0,"security_label"),t(e,22,0,n.nfsForm.getValue("security_label")),t(e,24,0,n.nfsForm.showError("sec_label_xattr",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,17).validClass,s["ɵnov"](e,17).invalidClass)}))}function op(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function up(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path need to start with a '/' and can be followed by a word"]))],null,null)}function dp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New directory will be created"]))],null,null)}function lp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,16,{FormControlNames:1}),s["ɵqud"](603979776,17,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Path"])),(t()(),s["ɵeld"](6,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,7,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,13).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,13).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.pathChangeHandler()&&a),"blur"===e&&(a=!1!==r.pathChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[16,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,212992,null,0,ug,[W.a,og,s.ChangeDetectorRef,s.ElementRef,$.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](14,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,op)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,up)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dp)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,13,0,n.pathDataSource),t(e,14,0,"path"),t(e,16,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,18,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,20,0,n.isNewDirectory&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function cp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function fp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path can only be a single '/' or a word"]))],null,null)}function hp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New bucket will be created"]))],null,null)}function gp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,18,{FormControlNames:1}),s["ɵqud"](603979776,19,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path"])),(t()(),s["ɵeld"](6,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,7,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,13).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,13).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.bucketChangeHandler()&&a),"blur"===e&&(a=!1!==r.bucketChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[18,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,212992,null,0,ug,[W.a,og,s.ChangeDetectorRef,s.ElementRef,$.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](14,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cp)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fp)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hp)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,13,0,n.bucketDataSource),t(e,14,0,"path"),t(e,16,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,18,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,20,0,n.isNewBucket&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function pp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function bp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,22,{FormControlNames:1}),s["ɵqud"](603979776,23,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,13,"label",[["class","cd-col-form-label"],["for","tag"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Tag"])),(t()(),s["ɵeld"](7,0,null,null,10,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](8,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,4,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Alternative access for "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v3"])),(t()(),s["ɵted"](-1,null,[" mounts (it must not have a leading /)."])),(t()(),s["ɵeld"](14,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz)."])),(t()(),s["ɵeld"](16,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Tag options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](18,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,6,"input",[["class","form-control"],["formControlName","tag"],["id","tag"],["name","tag"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,20)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,20)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,20)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](22,671744,[[22,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](24,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,22,0,"tag"),t(e,25,0,"tag")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass)}))}function mp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function yp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or )."]))],null,null)}function vp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,24,{FormControlNames:1}),s["ɵqud"](603979776,25,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,14,"label",[["class","cd-col-form-label"],["for","pseudo"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo"])),(t()(),s["ɵeld"](7,0,null,null,11,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](8,49152,null,0,eu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,7,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The position that this "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v4"])),(t()(),s["ɵted"](-1,null,[" export occupies in the "])),(t()(),s["ɵeld"](14,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo FS"])),(t()(),s["ɵted"](-1,null,[" (it must be unique)."])),(t()(),s["ɵeld"](17,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Pseudo options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](19,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,6,"input",[["class","form-control"],["formControlName","pseudo"],["id","pseudo"],["name","pseudo"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](23,671744,[[24,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](25,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](26,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mp)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yp)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,23,0,"pseudo"),t(e,26,0,"pseudo"),t(e,28,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"required")),t(e,30,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,20,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass)}))}function xp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function _p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No access type available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Tp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the access type --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Op(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function wp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.getAccessTypeHelp(n.nfsForm.getValue("access_type")))}))}function Sp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","form-text text-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The Object Gateway NFS backend has a number of limitations which will seriously affect applications writing to the share. Please consult the "])),(t()(),s["ɵeld"](2,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,[" documentation"])),(t()(),s["ɵted"](-1,null,[" for details before enabling write access."]))],null,(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function Ip(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function Np(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Cp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No squash available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Rp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["--Select what kind of user id squashing is performed --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Ap(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function kp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function Ep(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Required field"]))],null,null)}function Lp(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Cs.a,[]),s["ɵqud"](402653184,1,{nfsClients:0}),(t()(),s["ɵeld"](3,0,null,null,200,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,199,"form",[["name","nfsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,$.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](8,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](9,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,193,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](12,null,[""," ",""])),s["ɵppd"](13,1),s["ɵppd"](14,1),(t()(),s["ɵeld"](15,0,null,null,179,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Lg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](19,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,4,{FormControlNames:1}),s["ɵqud"](603979776,5,{messagesBlock:0}),(t()(),s["ɵeld"](22,0,null,0,2,"label",[["class","cd-col-form-label"],["for","daemons"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](25,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Dg)),s["ɵdid"](27,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](28,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](29,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.onDaemonSelection()&&a),a}),lg.b,lg.a)),s["ɵdid"](31,638976,null,0,cg.a,[_a.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(t()(),s["ɵeld"](32,0,null,0,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](34,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](35,1),(t()(),s["ɵeld"](36,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add daemon"])),(t()(),s["ɵeld"](38,0,null,null,33,"div",[["formGroupName","fsal"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](39,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](41,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](42,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](43,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,6,{FormControlNames:1}),s["ɵqud"](603979776,7,{messagesBlock:0}),(t()(),s["ɵeld"](46,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Storage Backend"])),(t()(),s["ɵeld"](48,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,50).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,50).onTouched()&&a),"change"===e&&(a=!1!==r.fsalChangeHandler()&&a),a}),null,null)),s["ɵdid"](50,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](52,671744,[[6,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](54,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](55,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pg)),s["ɵdid"](57,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mg)),s["ɵdid"](59,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qg)),s["ɵdid"](61,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jg)),s["ɵdid"](63,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fg)),s["ɵdid"](65,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hg)),s["ɵdid"](67,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jg)),s["ɵdid"](69,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ap)),s["ɵdid"](71,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sp)),s["ɵdid"](73,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lp)),s["ɵdid"](75,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gp)),s["ɵdid"](77,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](78,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](79,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,20,{FormControlNames:1}),s["ɵqud"](603979776,21,{messagesBlock:0}),(t()(),s["ɵeld"](82,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","protocols"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Protocol"])),(t()(),s["ɵeld"](84,0,null,0,22,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](85,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","protocolNfsv3"],["id","protocolNfsv3"],["name","protocolNfsv3"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,87).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,87).onTouched()&&a),a}),null,null)),s["ɵdid"](87,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](89,671744,[[20,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](91,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](92,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](93,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv3"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv3"])),(t()(),s["ɵeld"](95,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](96,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","protocolNfsv4"],["id","protocolNfsv4"],["name","protocolNfsv4"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,97).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,97).onTouched()&&a),a}),null,null)),s["ɵdid"](97,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](99,671744,[[20,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](101,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](102,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](103,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv4"])),(t()(),s["ɵand"](16777216,null,null,1,null,pp)),s["ɵdid"](106,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bp)),s["ɵdid"](108,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vp)),s["ɵdid"](110,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](111,0,null,null,27,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](112,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,26,{FormControlNames:1}),s["ɵqud"](603979776,27,{messagesBlock:0}),(t()(),s["ɵeld"](115,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](117,0,null,0,21,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](118,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,119).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,119).onTouched()&&a),"change"===e&&(a=!1!==r.accessTypeChangeHandler()&&a),a}),null,null)),s["ɵdid"](119,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](121,671744,[[26,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](123,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](124,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xp)),s["ɵdid"](126,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_p)),s["ɵdid"](128,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tp)),s["ɵdid"](130,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Op)),s["ɵdid"](132,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wp)),s["ɵdid"](134,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sp)),s["ɵdid"](136,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ip)),s["ɵdid"](138,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](139,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](140,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,28,{FormControlNames:1}),s["ɵqud"](603979776,29,{messagesBlock:0}),(t()(),s["ɵeld"](143,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](145,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](146,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,147).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,147).onTouched()&&a),a}),null,null)),s["ɵdid"](147,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](149,671744,[[28,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](151,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](152,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Np)),s["ɵdid"](154,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cp)),s["ɵdid"](156,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rp)),s["ɵdid"](158,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ap)),s["ɵdid"](160,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kp)),s["ɵdid"](162,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](163,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](164,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,30,{FormControlNames:1}),s["ɵqud"](603979776,31,{messagesBlock:0}),(t()(),s["ɵeld"](167,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","transports"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Transport Protocol"])),(t()(),s["ɵeld"](169,0,null,0,23,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](170,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](171,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","transportUDP"],["id","transportUDP"],["name","transportUDP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,172).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,172).onTouched()&&a),a}),null,null)),s["ɵdid"](172,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](174,671744,[[30,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](176,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](177,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](178,0,null,null,1,"label",[["class","custom-control-label"],["for","transportUDP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["UDP"])),(t()(),s["ɵeld"](180,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](181,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","transportTCP"],["id","transportTCP"],["name","transportTCP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,182).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,182).onTouched()&&a),a}),null,null)),s["ɵdid"](182,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](184,671744,[[30,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](186,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](187,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](188,0,null,null,1,"label",[["class","custom-control-label"],["for","transportTCP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["TCP"])),(t()(),s["ɵand"](16777216,null,null,1,null,Ep)),s["ɵdid"](191,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](192,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵeld"](193,0,null,null,1,"cd-nfs-form-client",[],null,null,null,Tg,gg)),s["ɵdid"](194,49152,[[1,4],["nfsClients",4]],0,hg,[jh,_a.a],{form:[0,"form"]},null),(t()(),s["ɵeld"](195,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](196,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](197,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),ws.b,ws.a)),s["ɵdid"](198,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](199,0,[""," ",""])),s["ɵppd"](200,1),s["ɵppd"](201,1),(t()(),s["ɵeld"](202,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](203,49152,null,0,Ns.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.nfsForm),t(e,9,0,n.nfsForm),t(e,17,0,!n.isDefaultCluster),t(e,19,0),t(e,27,0,n.nfsForm.getValue("daemons")),t(e,31,0,"btn btn-light float-right",n.nfsForm.get("daemons").value,n.daemonsSelections,n.daemonsMessages);var a=t(e,35,0,n.icons.add);t(e,34,0,a),t(e,39,0,"fsal"),t(e,43,0),t(e,52,0,"name"),t(e,55,0,"name"),t(e,57,0,null===n.allFsals),t(e,59,0,null!==n.allFsals&&0===n.allFsals.length),t(e,61,0,null!==n.allFsals&&n.allFsals.length>0),t(e,63,0,n.allFsals),t(e,65,0,n.nfsForm.showError("name",s["ɵnov"](e,6),"required")),t(e,67,0,"RGW"===n.nfsForm.getValue("name")),t(e,69,0,"CEPH"===n.nfsForm.getValue("name")),t(e,71,0,"CEPH"===n.nfsForm.getValue("name")),t(e,73,0,"CEPH"===n.nfsForm.getValue("name")),t(e,75,0,"CEPH"===n.nfsForm.getValue("name")),t(e,77,0,"RGW"===n.nfsForm.getValue("name")),t(e,79,0),t(e,89,0,"protocolNfsv3"),t(e,92,0,"protocolNfsv3"),t(e,99,0,"protocolNfsv4"),t(e,102,0,"protocolNfsv4"),t(e,106,0,n.nfsForm.showError("protocolNfsv3",s["ɵnov"](e,6),"required")||n.nfsForm.showError("protocolNfsv4",s["ɵnov"](e,6),"required")),t(e,108,0,n.nfsForm.getValue("protocolNfsv3")),t(e,110,0,n.nfsForm.getValue("protocolNfsv4")),t(e,112,0),t(e,121,0,"access_type"),t(e,124,0,"access_type"),t(e,126,0,null===n.nfsAccessType),t(e,128,0,null!==n.nfsAccessType&&0===n.nfsAccessType.length),t(e,130,0,null!==n.nfsAccessType&&n.nfsAccessType.length>0),t(e,132,0,n.nfsAccessType),t(e,134,0,n.nfsForm.getValue("access_type")),t(e,136,0,"RW"===n.nfsForm.getValue("access_type")&&"RGW"===n.nfsForm.getValue("name")),t(e,138,0,n.nfsForm.showError("access_type",s["ɵnov"](e,6),"required")),t(e,140,0),t(e,149,0,"squash"),t(e,152,0,"squash"),t(e,154,0,null===n.nfsSquash),t(e,156,0,null!==n.nfsSquash&&0===n.nfsSquash.length),t(e,158,0,null!==n.nfsSquash&&n.nfsSquash.length>0),t(e,160,0,n.nfsSquash),t(e,162,0,n.nfsForm.showError("squash",s["ɵnov"](e,6),"required")),t(e,164,0),t(e,174,0,"transportUDP"),t(e,177,0,"transportUDP"),t(e,184,0,"transportTCP"),t(e,187,0,"transportTCP"),t(e,191,0,n.nfsForm.showError("transportUDP",s["ɵnov"](e,6),"required")||n.nfsForm.showError("transportTCP",s["ɵnov"](e,6),"required")),t(e,194,0,n.nfsForm),t(e,198,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,12,0,t(e,13,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,12,1,t(e,14,0,s["ɵnov"](e,1),n.resource));t(e,12,0,a,r),t(e,18,0,s["ɵnov"](e,19).hasErrors,s["ɵnov"](e,19).hasSuccess),t(e,38,0,s["ɵnov"](e,41).ngClassUntouched,s["ɵnov"](e,41).ngClassTouched,s["ɵnov"](e,41).ngClassPristine,s["ɵnov"](e,41).ngClassDirty,s["ɵnov"](e,41).ngClassValid,s["ɵnov"](e,41).ngClassInvalid,s["ɵnov"](e,41).ngClassPending),t(e,42,0,s["ɵnov"](e,43).hasErrors,s["ɵnov"](e,43).hasSuccess),t(e,49,0,s["ɵnov"](e,54).ngClassUntouched,s["ɵnov"](e,54).ngClassTouched,s["ɵnov"](e,54).ngClassPristine,s["ɵnov"](e,54).ngClassDirty,s["ɵnov"](e,54).ngClassValid,s["ɵnov"](e,54).ngClassInvalid,s["ɵnov"](e,54).ngClassPending,s["ɵnov"](e,55).validClass,s["ɵnov"](e,55).invalidClass),t(e,78,0,s["ɵnov"](e,79).hasErrors,s["ɵnov"](e,79).hasSuccess),t(e,86,0,s["ɵnov"](e,91).ngClassUntouched,s["ɵnov"](e,91).ngClassTouched,s["ɵnov"](e,91).ngClassPristine,s["ɵnov"](e,91).ngClassDirty,s["ɵnov"](e,91).ngClassValid,s["ɵnov"](e,91).ngClassInvalid,s["ɵnov"](e,91).ngClassPending,s["ɵnov"](e,92).validClass,s["ɵnov"](e,92).invalidClass),t(e,96,0,s["ɵnov"](e,101).ngClassUntouched,s["ɵnov"](e,101).ngClassTouched,s["ɵnov"](e,101).ngClassPristine,s["ɵnov"](e,101).ngClassDirty,s["ɵnov"](e,101).ngClassValid,s["ɵnov"](e,101).ngClassInvalid,s["ɵnov"](e,101).ngClassPending,s["ɵnov"](e,102).validClass,s["ɵnov"](e,102).invalidClass),t(e,111,0,s["ɵnov"](e,112).hasErrors,s["ɵnov"](e,112).hasSuccess),t(e,118,0,s["ɵnov"](e,123).ngClassUntouched,s["ɵnov"](e,123).ngClassTouched,s["ɵnov"](e,123).ngClassPristine,s["ɵnov"](e,123).ngClassDirty,s["ɵnov"](e,123).ngClassValid,s["ɵnov"](e,123).ngClassInvalid,s["ɵnov"](e,123).ngClassPending,s["ɵnov"](e,124).validClass,s["ɵnov"](e,124).invalidClass),t(e,139,0,s["ɵnov"](e,140).hasErrors,s["ɵnov"](e,140).hasSuccess),t(e,146,0,s["ɵnov"](e,151).ngClassUntouched,s["ɵnov"](e,151).ngClassTouched,s["ɵnov"](e,151).ngClassPristine,s["ɵnov"](e,151).ngClassDirty,s["ɵnov"](e,151).ngClassValid,s["ɵnov"](e,151).ngClassInvalid,s["ɵnov"](e,151).ngClassPending,s["ɵnov"](e,152).validClass,s["ɵnov"](e,152).invalidClass),t(e,163,0,s["ɵnov"](e,164).hasErrors,s["ɵnov"](e,164).hasSuccess),t(e,171,0,s["ɵnov"](e,176).ngClassUntouched,s["ɵnov"](e,176).ngClassTouched,s["ɵnov"](e,176).ngClassPristine,s["ɵnov"](e,176).ngClassDirty,s["ɵnov"](e,176).ngClassValid,s["ɵnov"](e,176).ngClassInvalid,s["ɵnov"](e,176).ngClassPending,s["ɵnov"](e,177).validClass,s["ɵnov"](e,177).invalidClass),t(e,181,0,s["ɵnov"](e,186).ngClassUntouched,s["ɵnov"](e,186).ngClassTouched,s["ɵnov"](e,186).ngClassPristine,s["ɵnov"](e,186).ngClassDirty,s["ɵnov"](e,186).ngClassValid,s["ɵnov"](e,186).ngClassInvalid,s["ɵnov"](e,186).ngClassPending,s["ɵnov"](e,187).validClass,s["ɵnov"](e,187).invalidClass);var i=s["ɵunv"](e,199,0,t(e,200,0,s["ɵnov"](e,0),n.action)),o=s["ɵunv"](e,199,1,t(e,201,0,s["ɵnov"](e,1),n.resource));t(e,199,0,i,o)}))}function Dp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-form",[],null,null,null,Lp,Ng)),s["ɵdid"](1,114688,null,0,Ig,[xt.a,jh,qt.a,qt.m,Og.a,jo.a,pt.a,vt.a,ds.a,s.ChangeDetectorRef,_a.a,At.b],null,null)],(function(t,e){t(e,1,0)}),null)}var Pp=s["ɵccf"]("cd-nfs-form",Ig,Dp,{},{},[]);class Mp{}var qp=s["ɵcrt"]({encapsulation:0,styles:[[".login{color:#fff;background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat}  .login header{position:absolute;width:100vw}  .login header .navbar{padding:1rem 2rem}  .login header .navbar .dropdown-menu{margin-top:.2rem}  .login header .navbar .dropdown-menu li a:hover{background-color:#2b99a8}  .login section{display:inline-flex;width:100vw;min-height:100vh}"]],data:{}});function jp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"main",[["class","login full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"header",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"nav",[["class","navbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,0,"a",[["class","navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"cd-language-selector",[],null,null,null,ct,it)),s["ɵdid"](6,114688,null,0,at,[rt.l,tt],null,null),(t()(),s["ɵeld"](7,0,null,null,6,"section",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,5,"div",[["class","container"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,4,"div",[["class","row full-height vertical-align"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","col-sm-12 col-md-6 d-sm-block"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,0,"img",[["alt","Ceph"],["class","img-fluid mb-5"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](13,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,6,0),t(e,13,0)}),null)}function Fp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-layout",[],null,null,null,jp,qp)),s["ɵdid"](1,49152,null,0,Mp,[],null,null)],null,null)}var Gp=s["ɵccf"]("cd-login-layout",Mp,Fp,{},{},[]);class Vp{}class zp{constructor(t,e,n,a){this.authService=t,this.authStorageService=e,this.bsModalService=n,this.router=a,this.model=new Vp,this.isLoginActive=!1}ngOnInit(){if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{const t=this.bsModalService.getModalsCount();for(let n=1;n<=t;n++)this.bsModalService.hide(n);let e=null;if(-1!==window.location.hash.indexOf("access_token=")){e=window.location.hash.split("access_token=")[1];const t=window.location.toString();window.history.replaceState({},document.title,t.split("?")[0])}this.authService.check(e).subscribe(t=>{t.login_url?"#/login"===t.login_url?this.isLoginActive=!0:window.location.replace(t.login_url):(this.authStorageService.set(t.username,e,t.permissions,t.sso,t.pwdExpirationDate),this.router.navigate([""]))})}}login(){this.authService.login(this.model).subscribe(()=>{this.router.navigate([""])})}}var Bp=s["ɵcrt"]({encapsulation:0,styles:[["cd-login h1{margin:0 0 30px}  cd-login .form-group{border-left:4px solid #fff;background-color:#333e46;height:auto;margin-bottom:2rem}  cd-login .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login .form-group .invalid-feedback{display:inline}  cd-login .btn-password,   cd-login .btn-password:focus,   cd-login .form-control,   cd-login .form-control:focus{border:none;outline:0;box-shadow:none;color:#fff;background-color:#333e46;filter:none}  cd-login .placeholder{color:#90949c}  cd-login .btn-password:focus{outline-color:#2b99a8}@keyframes autofill{to{color:#fff;background-color:#333e46}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-name:autofill;animation-fill-mode:both;box-shadow:0 0 0 1000px #333e46 inset;-webkit-text-fill-color:#fff;transition-property:none;border-radius:0}"]],data:{}});function Yp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username is required"]))],null,null)}function Hp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password is required"]))],null,null)}function Up(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,46,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,45,"form",[["name","loginForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngSubmit"],[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0,r=t.component;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"ngSubmit"===e&&(a=!1!==r.login()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,4210688,[["loginForm",4]],0,$.t,[[8,null],[8,null]],null,{ngSubmit:"ngSubmit"}),s["ɵprd"](2048,null,$.d,null,[$.t]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](6,0,null,null,17,"div",[["class","form-group has-feedback d-flex flex-column py-3"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](7,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](10,0,null,0,1,"label",[["class","placeholder pl-4"],["for","username"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username"])),(t()(),s["ɵeld"](12,0,null,0,9,"input",[["aria-labelledby","username"],["autofocus",""],["class","form-control pl-4"],["id","username"],["name","username"],["required",""],["type","text"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,13)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,13)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,13)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.username=n)&&a),a}),null,null)),s["ɵdid"](13,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](14,16384,null,0,$.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[$.z]),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](17,671744,[["username",4]],0,$.u,[[2,$.d],[6,$.o],[8,null],[6,$.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](19,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](20,4210688,null,0,Os.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,16384,null,0,Z.h,[[3,$.d],Z.a],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,Yp)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](24,0,null,null,21,"div",[["class","form-group has-feedback"],["id","password-div"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](25,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](28,0,null,0,17,"div",[["class","input-group d-flex flex-nowrap"]],null,null,null,null,null)),(t()(),s["ɵeld"](29,0,null,null,13,"div",[["class","d-flex flex-column flex-grow-1 py-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,1,"label",[["class","placeholder pl-4"],["for","password"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password"])),(t()(),s["ɵeld"](32,0,null,null,8,"input",[["aria-labelledby","password"],["class","form-control pl-4"],["id","password"],["name","password"],["required",""],["type","password"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,33)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,33).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,33)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,33)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.password=n)&&a),a}),null,null)),s["ɵdid"](33,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](34,16384,null,0,$.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[$.z]),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](37,671744,[["password",4]],0,$.u,[[2,$.d],[6,$.o],[8,null],[6,$.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](39,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](40,16384,null,0,Z.h,[[3,$.d],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Hp)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](43,0,null,null,2,"span",[["class","form-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-outline-light btn-password h-100 px-4"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,45).onClick()&&a),a}),null,null)),s["ɵdid"](45,81920,null,0,hh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](46,0,null,null,0,"input",[["class","btn btn-secondary px-5 py-2"],["type","submit"],["value","Login"]],[[8,"disabled",0]],null,null,null,null))],(function(t,e){var n=e.component;t(e,7,0),t(e,14,0,""),t(e,17,0,"username",n.model.username),t(e,20,0,""),t(e,23,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,17).dirty)&&s["ɵnov"](e,17).invalid),t(e,25,0),t(e,34,0,""),t(e,37,0,"password",n.model.password),t(e,42,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,37).dirty)&&s["ɵnov"](e,37).invalid),t(e,45,0,"password")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,6,0,s["ɵnov"](e,7).hasErrors,s["ɵnov"](e,7).hasSuccess),t(e,12,1,[s["ɵnov"](e,17).invalid,s["ɵnov"](e,14).required?"":null,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass]),t(e,24,0,s["ɵnov"](e,25).hasErrors,s["ɵnov"](e,25).hasSuccess),t(e,32,1,[s["ɵnov"](e,37).invalid,s["ɵnov"](e,34).required?"":null,s["ɵnov"](e,39).ngClassUntouched,s["ɵnov"](e,39).ngClassTouched,s["ɵnov"](e,39).ngClassPristine,s["ɵnov"](e,39).ngClassDirty,s["ɵnov"](e,39).ngClassValid,s["ɵnov"](e,39).ngClassInvalid,s["ɵnov"](e,39).ngClassPending,s["ɵnov"](e,40).validClass,s["ɵnov"](e,40).invalidClass]),t(e,46,0,s["ɵnov"](e,3).invalid)}))}function Wp(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Up)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isLoginActive)}),null)}function Kp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login",[],null,null,null,Wp,Bp)),s["ɵdid"](1,114688,null,0,zp,[Ht.a,xt.a,Lt.b,qt.m],null,null)],(function(t,e){t(e,1,0)}),null)}var $p=s["ɵccf"]("cd-login",zp,Kp,{},{},[]);class Zp extends ph{constructor(t,e,n,a,r,i,s,o,u){super(t,e,n,a,r,i,s,o),this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=o,this.authService=u}onPasswordChange(){this.authService.logout()}onCancel(){this.authService.logout()}}var Jp=s["ɵcrt"]({encapsulation:0,styles:[["cd-login-password-form h4{margin:0 0 30px}  cd-login-password-form .btn-password,   cd-login-password-form .btn-password:focus,   cd-login-password-form .form-control,   cd-login-password-form .form-control:focus{color:#fff;background-color:#333e46}  cd-login-password-form .form-control::placeholder{color:#90949c}  cd-login-password-form .btn-password:focus{outline-color:#2b99a8}  cd-login-password-form button.btn:not(:first-child){margin-left:5px}"]],data:{}});function Qp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Xp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function tb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function eb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function nb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function ab(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function rb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function ib(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Cs.a,[]),(t()(),s["ɵeld"](2,0,null,null,81,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please set a new password."])),(t()(),s["ɵeld"](5,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You will be redirected to the login page afterwards."])),(t()(),s["ɵeld"](7,0,null,null,67,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,9).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,12).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.G,[],null,null),s["ɵdid"](9,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](11,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](12,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](13,0,null,null,19,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](14,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,7,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](21,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](23,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](24,4210688,null,0,Os.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](26,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,28).onClick()&&a),a}),null,null)),s["ɵdid"](28,81920,null,0,hh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Qp)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Xp)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](33,0,null,null,22,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](34,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](37,0,null,0,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","New password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,39)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,39).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,39)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,39)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](39,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](41,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](43,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](44,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](45,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-outline-light btn-password"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,47).onClick()&&a),a}),null,null)),s["ɵdid"](47,81920,null,0,hh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](48,0,null,0,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,0,1,null,tb)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,eb)),s["ɵdid"](53,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,nb)),s["ɵdid"](55,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](56,0,null,null,18,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](57,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](60,0,null,0,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](61,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,62)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,62).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,62)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,62)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](62,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](64,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](66,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](67,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](68,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,70).onClick()&&a),a}),null,null)),s["ɵdid"](70,81920,null,0,hh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ab)),s["ɵdid"](72,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,rb)),s["ɵdid"](74,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](75,0,null,null,8,"div",[["class","form-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](76,0,null,null,4,"cd-submit-button",[["btnClass","btn-block"],["class","full-width"]],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),ws.b,ws.a)),s["ɵdid"](77,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"],btnClass:[1,"btnClass"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](78,0,[" "," "," "])),s["ɵppd"](79,1),s["ɵppd"](80,1),(t()(),s["ɵeld"](81,0,null,null,2,"button",[["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCancel()&&a),a}),null,null)),(t()(),s["ɵeld"](82,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cancel"]))],(function(t,e){var n=e.component;t(e,9,0,n.userForm),t(e,12,0,n.userForm),t(e,14,0),t(e,21,0,"oldpassword"),t(e,24,0,""),t(e,25,0,"oldpassword"),t(e,28,0,"oldpassword"),t(e,30,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"required")),t(e,32,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"notmatch")),t(e,34,0),t(e,41,0,"newpassword"),t(e,44,0,"newpassword"),t(e,47,0,"newpassword"),t(e,51,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"required")),t(e,53,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"notmatch")),t(e,55,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"passwordPolicy")),t(e,57,0),t(e,64,0,"confirmnewpassword"),t(e,67,0,"confirmnewpassword"),t(e,70,0,"confirmnewpassword"),t(e,72,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"required")),t(e,74,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"match")),t(e,77,0,n.userForm,"btn-block")}),(function(t,e){var n=e.component;t(e,7,0,s["ɵnov"](e,11).ngClassUntouched,s["ɵnov"](e,11).ngClassTouched,s["ɵnov"](e,11).ngClassPristine,s["ɵnov"](e,11).ngClassDirty,s["ɵnov"](e,11).ngClassValid,s["ɵnov"](e,11).ngClassInvalid,s["ɵnov"](e,11).ngClassPending),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,33,0,s["ɵnov"](e,34).hasErrors,s["ɵnov"](e,34).hasSuccess),t(e,38,0,s["ɵnov"](e,43).ngClassUntouched,s["ɵnov"](e,43).ngClassTouched,s["ɵnov"](e,43).ngClassPristine,s["ɵnov"](e,43).ngClassDirty,s["ɵnov"](e,43).ngClassValid,s["ɵnov"](e,43).ngClassInvalid,s["ɵnov"](e,43).ngClassPending,s["ɵnov"](e,44).validClass,s["ɵnov"](e,44).invalidClass),t(e,49,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,56,0,s["ɵnov"](e,57).hasErrors,s["ɵnov"](e,57).hasSuccess),t(e,61,0,s["ɵnov"](e,66).ngClassUntouched,s["ɵnov"](e,66).ngClassTouched,s["ɵnov"](e,66).ngClassPristine,s["ɵnov"](e,66).ngClassDirty,s["ɵnov"](e,66).ngClassValid,s["ɵnov"](e,66).ngClassInvalid,s["ɵnov"](e,66).ngClassPending,s["ɵnov"](e,67).validClass,s["ɵnov"](e,67).invalidClass);var a=s["ɵunv"](e,78,0,t(e,79,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,78,1,t(e,80,0,s["ɵnov"](e,1),n.resource));t(e,78,0,a,r)}))}function sb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-password-form",[],null,null,null,ib,Jp)),s["ɵdid"](1,49152,null,0,Zp,[_a.a,At.b,gt.a,Rt.a,xt.a,jo.a,qt.m,gh.a,Ht.a],null,null)],null,null)}var ob=s["ɵccf"]("cd-login-password-form",Zp,sb,{},{},[]);class ub{constructor(){}}var db=s["ɵcrt"]({encapsulation:0,styles:[["#toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function lb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function cb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-blank-layout",[],null,null,null,lb,db)),s["ɵdid"](1,49152,null,0,ub,[],null,null)],null,null)}var fb=s["ɵccf"]("cd-blank-layout",ub,cb,{},{},[]);class hb{constructor(){this.logoutUrl=`${window.location.origin}/auth/saml2/slo`}}var gb=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function pb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, the user does not exist in Ceph."])),(t()(),s["ɵeld"](4,0,null,null,4,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Return to "])),(t()(),s["ɵeld"](6,0,null,null,1,"a",[["class","sso-logout"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["Login Page"])),(t()(),s["ɵted"](-1,null,[". You'll be logged out from the Identity Provider when you retry logging in."])),(t()(),s["ɵeld"](9,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](13,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Nautilus Octopus"])),(t()(),s["ɵted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),s["ɵeld"](16,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 2.0"]))],null,(function(t,e){t(e,6,0,e.component.logoutUrl)}))}function bb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-sso-not-found",[],null,null,null,pb,gb)),s["ɵdid"](1,49152,null,0,hb,[],null,null)],null,null)}var mb=s["ɵccf"]("cd-sso-not-found",hb,bb,{},{},[]);class yb{constructor(){this.icons=ht.a}}var vb=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}h2[_ngcontent-%COMP%]{font-size:xx-large;font-family:monospace}i[_ngcontent-%COMP%]{font-size:200px}"]],data:{}});function xb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Forbidden"])),(t()(),s["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, you are not allowed to see what you were looking for."])),(t()(),s["ɵeld"](7,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,qt.n,[qt.m,qt.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,8,0,"/login")}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"",e.component.icons.lock," text-danger"))}))}function _b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-forbidden",[],null,null,null,xb,vb)),s["ɵdid"](1,49152,null,0,yb,[],null,null)],null,null)}var Tb=s["ɵccf"]("cd-forbidden",yb,_b,{},{},[]);class Ob{constructor(){}}var wb=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function Sb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, we could not find what you were looking for."])),(t()(),s["ɵeld"](4,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1500px-Southern_Keeled_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["href","https://collections.museumvictoria.com.au/species/8696"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Southern Keeled Octopus, Octopus berrima"])),(t()(),s["ɵted"](-1,null,['" by Museums Victoria (Photographer: Julian Finn) is licensed under '])),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/4.0"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 4.0"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,15).onClick()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,qt.n,[qt.m,qt.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](16,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,15,0,"/login")}),null)}function Ib(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-not-found",[],null,null,null,Sb,wb)),s["ɵdid"](1,49152,null,0,Ob,[],null,null)],null,null)}var Nb=s["ɵccf"]("cd-not-found",Ob,Ib,{},{},[]),Cb=n("ES0t"),Rb=n("Xg1U"),Ab=n("z5nN"),kb=n("iutN"),Eb=n("EEJc"),Lb=n("PEr+"),Db=n("a40w"),Pb=n("hfeG"),Mb=n("atuK"),qb=s["ɵcrt"]({encapsulation:0,styles:[[".about-container[_ngcontent-%COMP%]{background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat;color:#fff;text-shadow:1px 1px #374249}.product-versions[_ngcontent-%COMP%]{margin-top:30px}.product-versions[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{margin-right:10px}.modal-header[_ngcontent-%COMP%]{border-bottom:none}.modal-header[_ngcontent-%COMP%]   .close[_ngcontent-%COMP%]{color:#fff;font-size:2em}.modal-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.ceph-logo[_ngcontent-%COMP%]{width:25%;margin-bottom:30px;object-position:-20px 0}.modal-footer[_ngcontent-%COMP%]{display:block;border-top:none;padding:15px 80px 35px}"]],data:{}});function jb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,45,"div",[["class","about-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.modalRef.hide()&&a),a}),null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](5,0,null,null,37,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"img",[["class","ceph-logo"],["src","assets/Ceph_Logo_Standard_RGB_Reversed_120411_fa.png"]],[[8,"alt",0]],null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,2,"h3",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["",""])),(t()(),s["ɵeld"](10,0,null,null,6,"div",[["class","product-versions"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](14,null,[" "," "," "])),(t()(),s["ɵeld"](15,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,[" "," "])),(t()(),s["ɵeld"](17,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,24,"dl",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ceph Manager"])),(t()(),s["ɵeld"](21,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](22,null,["",""])),(t()(),s["ɵeld"](23,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User"])),(t()(),s["ɵeld"](25,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),(t()(),s["ɵeld"](27,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User Role"])),(t()(),s["ɵeld"](29,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser"])),(t()(),s["ɵeld"](33,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](34,null,["",""])),(t()(),s["ɵeld"](35,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser Version"])),(t()(),s["ɵeld"](37,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](38,null,["",""])),(t()(),s["ɵeld"](39,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser OS"])),(t()(),s["ɵeld"](41,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](42,null,["",""])),(t()(),s["ɵeld"](43,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"div",[["class","text-left"]],null,null,null,null,null)),(t()(),s["ɵted"](45,null,[" "," "," "]))],null,(function(t,e){var n=e.component;t(e,6,0,s["ɵinlineInterpolate"](1,"",n.projectConstants.organization,"")),t(e,9,0,n.projectConstants.projectName),t(e,14,0,n.versionNumber,n.versionHash),t(e,16,0,n.versionName),t(e,22,0,n.hostAddr),t(e,26,0,n.modalVariables.user),t(e,30,0,n.modalVariables.role),t(e,34,0,n.modalVariables.browserName),t(e,38,0,n.modalVariables.browserVersion),t(e,42,0,n.modalVariables.browserOS),t(e,45,0,n.copyright,n.projectConstants.license)}))}function Fb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-about",[],null,null,null,jb,qb)),s["ɵdid"](1,245760,null,0,kt,[Lt.a,pt.a,Rt.a,xt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Gb=s["ɵccf"]("cd-about",kt,Fb,{},{},[]),Vb=s["ɵcrt"]({encapsulation:0,styles:[".dropdown[_nghost-%COMP%] {\n      z-index: 1000;\n    }\n\n    .dropdown-menu[_nghost-%COMP%], .dropdown-menu[_ngcontent-%COMP%] {\n      overflow-y: auto;\n      height: 100px;\n    }"],data:{animation:[{type:7,name:"typeaheadAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function zb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function Bb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.highlight(e.context.match,e.context.query))}))}function Yb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,1,"li",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function Hb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function Ub(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,4,"li",[],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"mouseenter"]],(function(t,e,n){var a=!0;return"mouseenter"===e&&(a=!1!==t.component.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"a",[["href","#"],["tabindex","-1"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectMatch(t.parent.context.$implicit,n)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Hb)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,4,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,3,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function Wb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Yb)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ub)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function Kb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[1,0],["ulElement",1]],null,2,"ul",[["class","dropdown-menu"]],[[4,"overflow-y",null],[4,"height",null]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Wb)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.matches)}),(function(t,e){var n=e.component;t(e,0,0,n.needScrollbar?"scroll":"auto",n.needScrollbar?n.guiHeight:"auto")}))}function $b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"h6",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function Zb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function Jb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,3,"button",[["class","dropdown-item"]],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"click"],[null,"mouseenter"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectMatch(t.parent.context.$implicit,n)&&a),"mouseenter"===e&&(a=!1!==r.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Zb)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,3,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,2,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function Qb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,$b)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jb)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function Xb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Qb)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.matches)}),null)}function tm(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{ulElement:0}),s["ɵqud"](671088640,2,{liElements:1}),(t()(),s["ɵand"](16777216,null,null,2,null,zb)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{matches:0,itemTemplate:1,query:2}),(t()(),s["ɵand"](0,[["bsItemTemplate",2]],null,0,null,Bb)),(t()(),s["ɵand"](0,[["bs3Template",2]],null,0,null,Kb)),(t()(),s["ɵand"](0,[["bs4Template",2]],null,0,null,Xb))],(function(t,e){var n=e.component,a=t(e,4,0,n.matches,n.itemTemplate,n.query);t(e,3,0,a,n.optionsListTemplate||s["ɵnov"](e,n.isBs4?7:6))}),null)}function em(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"typeahead-container",[["class","dropdown open bottom"],["style","position: absolute;display: block;"]],[[2,"dropdown-menu",null],[4,"height",null],[4,"visibility",null],[2,"dropup",null]],[[null,"mouseleave"],[null,"blur"]],(function(t,e,n){var a=!0;return"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),a}),tm,Vb)),s["ɵdid"](1,180224,null,0,sg,[na.a,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).isBs4,s["ɵnov"](e,1).isBs4&&s["ɵnov"](e,1).needScrollbar?s["ɵnov"](e,1).guiHeight:"auto","inherit",s["ɵnov"](e,1).dropup)}))}var nm=s["ɵccf"]("typeahead-container",sg,em,{},{},[]),am=n("ajRT"),rm=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function im(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Deep "]))],null,null)}function sm(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["deep "]))],null,null)}function om(t){return s["ɵvid"](0,[s["ɵpid"](0,ss.a,[]),(t()(),s["ɵeld"](1,0,null,null,33,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](2,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSDs "])),(t()(),s["ɵeld"](5,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](6,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,im)),s["ɵdid"](8,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["Scrub"])),(t()(),s["ɵeld"](10,0,null,1,24,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,23,"form",[["name","scrubForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,13).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,16).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,$.G,[],null,null),s["ɵdid"](13,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](15,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](16,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,10,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You are about to apply a "])),(t()(),s["ɵeld"](20,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](21,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sm)),s["ɵdid"](23,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["scrub to the OSD(s): "])),(t()(),s["ɵeld"](25,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),s["ɵppd"](27,1),(t()(),s["ɵted"](-1,null,["."])),(t()(),s["ɵeld"](29,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.scrub()&&a),a}),ws.b,ws.a)),s["ɵdid"](31,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"])),(t()(),s["ɵeld"](33,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Is.b,Is.a)),s["ɵdid"](34,49152,null,0,Ns.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,6,0,n.deep),t(e,8,0,"1"),t(e,13,0,n.scrubForm),t(e,16,0,n.scrubForm),t(e,21,0,n.deep),t(e,23,0,"1"),t(e,31,0,n.scrubForm),t(e,34,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,11,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending);var a=s["ɵunv"](e,26,0,t(e,27,0,s["ɵnov"](e,0),n.selected));t(e,26,0,a)}))}function um(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-scrub-modal",[],null,null,null,om,rm)),s["ɵdid"](1,114688,null,0,Go,[Lt.a,bi,gt.a,_a.a,ss.a],null,null)],(function(t,e){t(e,1,0)}),null)}var dm=s["ɵccf"]("cd-osd-scrub-modal",Go,um,{},{},[]),lm=s["ɵcrt"]({encapsulation:0,styles:[[".osd-modal[_ngcontent-%COMP%]   .oa-hr-small[_ngcontent-%COMP%]{margin:5px}"]],data:{}});function cm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","oa-hr-small"]],null,null,null,null,null))],null,null)}function fm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"name",0],[8,"id",0],[8,"disabled",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=0!=(t.context.$implicit.value=!t.context.$implicit.value)&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,Z.h,[[3,$.d],Z.a],null,null),(t()(),s["ɵeld"](3,0,null,null,5,"label",[["class","custom-control-label"],["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,cm)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,10,0,!e.context.last)}),(function(t,e){t(e,1,0,e.context.$implicit.value,e.context.$implicit.code,e.context.$implicit.code,e.context.$implicit.disabled,s["ɵnov"](e,2).validClass,s["ɵnov"](e,2).invalidClass),t(e,3,0,e.context.$implicit.code),t(e,5,0,e.context.$implicit.name),t(e,8,0,e.context.$implicit.description)}))}function hm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),ws.b,ws.a)),s["ɵdid"](1,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdFlagsForm)}),null)}function gm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,19,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](1,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster-wide OSD Flags"])),(t()(),s["ɵeld"](4,0,null,1,15,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,14,"form",[["name","osdFlagsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,fm)),s["ɵdid"](13,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](14,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,hm)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Is.b,Is.a)),s["ɵdid"](19,49152,null,0,Ns.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.osdFlagsForm),t(e,10,0,n.osdFlagsForm),t(e,13,0,n.flags),t(e,17,0,n.permissions.osd.update),t(e,19,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending)}))}function pm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-flags-modal",[],null,null,null,gm,lm)),s["ɵdid"](1,114688,null,0,ko,[Lt.a,xt.a,bi,gt.a,_a.a],null,null)],(function(t,e){t(e,1,0)}),null)}var bm=s["ɵccf"]("cd-osd-flags-modal",ko,pm,{},{},[]),mm=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ym(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function vm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function xm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](1,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](2,0,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.value.desc)}))}function _m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Tm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.patternHelpText)}))}function Om(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.maxValue)}))}function wm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.minValue)}))}function Sm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-sm-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{required:0}),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,xm)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,16,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,14)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,14)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,14)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),a}),null,null)),s["ɵdid"](14,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](15,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](17,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](19,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](20,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_m)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tm)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Om)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wm)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,8,0,n.osdRecvSpeedForm.getValue("customizePriority"));t(e,7,0,a),t(e,11,0,e.context.$implicit.value.desc),t(e,17,0,e.context.$implicit.key),t(e,20,0,e.context.$implicit.key),t(e,22,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"required")),t(e,24,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"pattern")),t(e,26,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"max")),t(e,28,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.context.$implicit.key),t(e,9,0,e.context.$implicit.value.text),t(e,13,1,[e.context.$implicit.key,!n.osdRecvSpeedForm.getValue("customizePriority"),s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,20).validClass,s["ɵnov"](e,20).invalidClass])}))}function Im(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),ws.b,ws.a)),s["ɵdid"](1,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdRecvSpeedForm)}),null)}function Nm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,53,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](1,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD Recovery Priority"])),(t()(),s["ɵeld"](4,0,null,1,49,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,48,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,36,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](13,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","col-form-label col-sm-6 required"],["for","priority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority"])),(t()(),s["ɵeld"](18,0,null,0,11,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","priority"],["id","priority"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,20).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),"change"===e&&(a=!1!==r.onPriorityChange(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](22,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](24,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ym)),s["ɵdid"](27,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vm)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](30,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](31,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,10,"div",[["class","offset-sm-6 col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](36,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","customizePriority"],["id","customizePriority"],["name","customizePriority"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,37).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,37).onTouched()&&a),"change"===e&&(a=!1!==r.onCustomizePriorityChange()&&a),a}),null,null)),s["ɵdid"](37,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](39,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](41,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](42,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](43,0,null,null,1,"label",[["class","custom-control-label"],["for","customizePriority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Customize priority values"])),(t()(),s["ɵand"](16777216,null,null,2,null,Sm)),s["ɵdid"](46,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](48,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Im)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](52,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Is.b,Is.a)),s["ɵdid"](53,49152,null,0,Ns.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.osdRecvSpeedForm),t(e,10,0,n.osdRecvSpeedForm),t(e,13,0),t(e,22,0,"priority"),t(e,25,0,"priority"),t(e,27,0,n.priorities),t(e,29,0,n.osdRecvSpeedForm.showError("priority",s["ɵnov"](e,7),"required")),t(e,31,0),t(e,39,0,"customizePriority"),t(e,42,0,"customizePriority"),t(e,46,0,s["ɵunv"](e,46,0,s["ɵnov"](e,47).transform(n.priorityAttrs))),t(e,51,0,n.permissions.configOpt.update),t(e,53,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,36,0,s["ɵnov"](e,41).ngClassUntouched,s["ɵnov"](e,41).ngClassTouched,s["ɵnov"](e,41).ngClassPristine,s["ɵnov"](e,41).ngClassDirty,s["ɵnov"](e,41).ngClassValid,s["ɵnov"](e,41).ngClassInvalid,s["ɵnov"](e,41).ngClassPending,s["ɵnov"](e,42).validClass,s["ɵnov"](e,42).invalidClass)}))}function Cm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-recv-speed-modal",[],null,null,null,Nm,mm)),s["ɵdid"](1,114688,null,0,qo,[Lt.a,xt.a,Eo.a,gt.a,_a.a,bi],null,null)],(function(t,e){t(e,1,0)}),null)}var Rm=s["ɵccf"]("cd-osd-recv-speed-modal",qo,Cm,{},{},[]),Am=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Em(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value needs to be between 0 and 1."]))],null,null)}function Lm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,km)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Em)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,null==n.weight.errors?null:n.weight.errors.required),t(e,4,0,(null==n.weight.errors?null:n.weight.errors.max)||(null==n.weight.errors?null:n.weight.errors.min))}),null)}function Dm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,31,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](1,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Reweight OSD: ",""])),(t()(),s["ɵeld"](4,0,null,1,27,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,26,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,null,0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,14,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"label",[["class","col-sm-2 col-form-label"],["for","weight"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Weight"])),(t()(),s["ɵeld"](15,0,null,null,10,"div",[["class","col-sm-10"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,7,"input",[["class","form-control"],["formControlName","weight"],["id","weight"],["max","1"],["min","0"],["step","0.1"],["type","number"]],[[8,"value",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,17)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,17)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,17)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),a}),null,null)),s["ɵdid"](17,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](18,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](20,671744,null,0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](22,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](23,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lm)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.reweight()&&a),a}),ws.b,ws.a)),s["ɵdid"](28,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Reweight"])),(t()(),s["ɵeld"](30,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Is.b,Is.a)),s["ɵdid"](31,49152,null,0,Ns.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.reweightForm),t(e,10,0,n.reweightForm),t(e,20,0,"weight"),t(e,23,0,"weight"),t(e,25,0,n.weight.errors),t(e,28,0,n.reweightForm,n.reweightForm.invalid),t(e,31,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.osdId),t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,16,0,n.currentWeight,s["ɵnov"](e,22).ngClassUntouched,s["ɵnov"](e,22).ngClassTouched,s["ɵnov"](e,22).ngClassPristine,s["ɵnov"](e,22).ngClassDirty,s["ɵnov"](e,22).ngClassValid,s["ɵnov"](e,22).ngClassInvalid,s["ɵnov"](e,22).ngClassPending,s["ɵnov"](e,23).validClass,s["ɵnov"](e,23).invalidClass)}))}function Pm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-reweight-modal",[],null,null,null,Dm,Am)),s["ɵdid"](1,114688,null,0,Fo,[Lt.a,bi,jo.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Mm=s["ɵccf"]("cd-osd-reweight-modal",Fo,Pm,{},{},[]),qm=s["ɵcrt"]({encapsulation:0,styles:[[".custom-checkbox[_ngcontent-%COMP%]   input[_ngcontent-%COMP%], .custom-checkbox[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{cursor:pointer}.col-form-label[_ngcontent-%COMP%]{text-align:left}"]],data:{}});function jm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](1,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function Fm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,jm)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,9,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](17,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](19,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](20,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](21,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,1,0),t(e,11,0,e.parent.context.$implicit.long_desc),t(e,17,0,e.parent.context.$implicit.name),t(e,20,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.text),t(e,9,0,e.parent.context.$implicit.desc),t(e,14,0,e.parent.context.$implicit.name,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,20).validClass,s["ɵnov"](e,20).invalidClass),t(e,21,0,e.parent.context.$implicit.name)}))}function Gm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,tu.b,tu.a)),s["ɵdid"](1,49152,null,0,eu.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function Vm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["data-toggle","button"],["title","Remove the custom configuration value. The default configuration will be inherited and used instead."],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetValue(t.parent.parent.context.$implicit.name)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1)],(function(t,e){var n=t(e,5,0,e.component.icons.erase);t(e,4,0,n)}),null)}function zm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function Bm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function Ym(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.maxValue)}))}function Hm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.minValue)}))}function Um(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,6,"label",[["class","col-6 col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,Gm)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,0,18,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,6,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,14)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,14)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,14)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](14,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](16,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](18,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](19,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vm)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zm)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bm)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ym)),s["ɵdid"](27,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hm)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,e.parent.context.$implicit.long_desc),t(e,16,0,e.parent.context.$implicit.name),t(e,19,0,e.parent.context.$implicit.name),t(e,21,0,n.optionsFormShowReset),t(e,23,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"pattern")),t(e,25,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"invalidUuid")),t(e,27,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"max")),t(e,29,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,5,0,e.parent.context.$implicit.text),t(e,8,0,e.parent.context.$implicit.desc),t(e,13,1,[e.parent.context.$implicit.additionalTypeInfo.inputType,e.parent.context.$implicit.name,e.parent.context.$implicit.additionalTypeInfo.humanReadable,n.getStep(e.parent.context.$implicit.type,n.optionsForm.getValue(e.parent.context.$implicit.name)),s["ɵnov"](e,18).ngClassUntouched,s["ɵnov"](e,18).ngClassTouched,s["ɵnov"](e,18).ngClassPristine,s["ɵnov"](e,18).ngClassDirty,s["ɵnov"](e,18).ngClassValid,s["ɵnov"](e,18).ngClassInvalid,s["ɵnov"](e,18).ngClassPending,s["ɵnov"](e,19).validClass,s["ɵnov"](e,19).invalidClass])}))}function Wm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","my-2"]],null,null,null,null,null))],null,null)}function Km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Fm)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Um)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wm)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,"bool"===e.context.$implicit.type),t(e,4,0,"bool"!==e.context.$implicit.type),t(e,6,0,!e.context.last)}),null)}function $m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,1).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,4).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,540672,null,0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](3,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](4,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Km)),s["ɵdid"](6,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.optionsFormGroup),t(e,4,0,n.optionsFormGroup),t(e,6,0,n.options)}),(function(t,e){t(e,0,0,s["ɵnov"](e,3).ngClassUntouched,s["ɵnov"](e,3).ngClassTouched,s["ɵnov"](e,3).ngClassPristine,s["ɵnov"](e,3).ngClassDirty,s["ɵnov"](e,3).ngClassValid,s["ɵnov"](e,3).ngClassInvalid,s["ɵnov"](e,3).ngClassPending)}))}var Zm=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Jm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"a",[["class","pull-right margin-right-md"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.component.advancedEnabled=!0)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Advanced..."]))],null,null)}function Qm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced configuration options"])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-config-option",[],null,null,null,$m,qm)),s["ɵdid"](4,114688,[[2,4],["advancedOptionsValues",4]],0,Do,[Eo.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.advancedOptions,n.osdPgScrubForm,s["ɵnov"](e.parent,13),"advancedFormGroup")}),null)}function Xm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),ws.b,ws.a)),s["ɵdid"](1,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](2,0,[""," ",""])),s["ɵppd"](3,1),s["ɵppd"](4,1)],(function(t,e){t(e,1,0,e.component.osdPgScrubForm)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,2,1,t(e,4,0,s["ɵnov"](e.parent,1),n.resource));t(e,2,0,a,r)}))}function ty(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,Cs.a,[]),s["ɵqud"](402653184,1,{basicOptionsValues:0}),s["ɵqud"](671088640,2,{advancedOptionsValues:0}),(t()(),s["ɵeld"](4,0,null,null,27,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](5,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](6,0,null,0,3,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," ",""])),s["ɵppd"](8,1),s["ɵppd"](9,1),(t()(),s["ɵeld"](10,0,null,1,21,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,20,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,13).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,16).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,$.G,[],null,null),s["ɵdid"](13,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](15,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](16,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](17,0,null,null,8,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,1,"cd-config-option",[],null,null,null,$m,qm)),s["ɵdid"](19,114688,[[1,4],["basicOptionsValues",4]],0,Do,[Eo.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null),(t()(),s["ɵeld"](20,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Jm)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qm)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Xm)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](30,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](31,49152,null,0,Ns.a,[i.Location,At.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.bsModalRef),t(e,13,0,n.osdPgScrubForm),t(e,16,0,n.osdPgScrubForm),t(e,19,0,n.basicOptions,n.osdPgScrubForm,s["ɵnov"](e,13),"basicFormGroup"),t(e,23,0,!n.advancedEnabled),t(e,25,0,n.advancedEnabled),t(e,29,0,n.permissions.configOpt.update),t(e,31,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,7,0,t(e,8,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,7,1,t(e,9,0,s["ɵnov"](e,1),n.resource));t(e,7,0,a,r),t(e,11,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending)}))}function ey(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-pg-scrub-modal",[],null,null,null,ty,Zm)),s["ɵdid"](1,49152,null,0,Mo,[Lt.a,xt.a,gt.a,_a.a,At.b],null,null)],null,null)}var ny=s["ɵccf"]("cd-osd-pg-scrub-modal",Mo,ey,{},{},[]),ay=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ry(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function iy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function sy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function oy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function uy(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Update"]))],null,null)}function dy(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Add"]))],null,null)}function ly(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,79,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](1,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matcher"])),(t()(),s["ɵeld"](4,0,null,1,75,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,74,"form",[["class","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,56,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](13,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](18,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,12,"select",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,20).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](22,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](24,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](26,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](27,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](28,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select an attribute to match against --"])),(t()(),s["ɵand"](16777216,null,null,1,null,ry)),s["ɵdid"](31,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,iy)),s["ɵdid"](33,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](34,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](35,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](38,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","value"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value"])),(t()(),s["ɵeld"](40,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](41,16777216,null,null,7,"input",[["class","form-control"],["formControlName","value"],["id","value"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,42)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,42).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,42)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,42)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,47).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,47).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,47).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,47).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,47).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,47).onKeydown(n)&&a),a}),null,null)),s["ɵdid"](42,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](44,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](46,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](47,212992,null,0,ug,[W.a,og,s.ChangeDetectorRef,s.ElementRef,$.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"],typeaheadMinLength:[1,"typeaheadMinLength"]},null),s["ɵdid"](48,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sy)),s["ɵdid"](50,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,oy)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](53,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,Ts.b,Ts.a)),s["ɵdid"](54,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](57,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](58,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","isRegex"],["id","is-regex"],["name","is-regex"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,60).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,60).onTouched()&&a),a}),null,null)),s["ɵdid"](60,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](62,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](64,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](65,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](66,0,null,null,1,"label",[["class","custom-control-label"],["for","is-regex"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Use regular expression"])),(t()(),s["ɵeld"](68,0,null,null,11,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,8,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),ws.b,ws.a)),s["ɵdid"](70,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](71,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](72,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](73,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,uy)),s["ɵdid"](75,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dy)),s["ɵdid"](77,16384,null,0,i.NgSwitchDefault,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],null,null),(t()(),s["ɵeld"](78,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,Is.b,Is.a)),s["ɵdid"](79,49152,null,0,Ns.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.form),t(e,10,0,n.form),t(e,13,0),t(e,22,0,"name"),t(e,25,0,"name"),t(e,27,0,null),t(e,28,0,null),t(e,31,0,n.nameAttributes),t(e,33,0,n.form.showError("name",s["ɵnov"](e,7),"required")),t(e,35,0),t(e,44,0,"value"),t(e,47,0,n.possibleValues,0),t(e,48,0,"value"),t(e,50,0,n.form.showError("value",s["ɵnov"](e,7),"required")),t(e,52,0,n.form.getValue("value")&&!n.form.getValue("isRegex")&&n.matcherMatch),t(e,54,0),t(e,62,0,"isRegex"),t(e,65,0,"isRegex"),t(e,70,0,n.form),t(e,73,0,n.editMode),t(e,75,0,"1"),t(e,79,0,"Close",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,34,0,s["ɵnov"](e,35).hasErrors,s["ɵnov"](e,35).hasSuccess),t(e,41,0,s["ɵnov"](e,46).ngClassUntouched,s["ɵnov"](e,46).ngClassTouched,s["ɵnov"](e,46).ngClassPristine,s["ɵnov"](e,46).ngClassDirty,s["ɵnov"](e,46).ngClassValid,s["ɵnov"](e,46).ngClassInvalid,s["ɵnov"](e,46).ngClassPending,s["ɵnov"](e,48).validClass,s["ɵnov"](e,48).invalidClass),t(e,53,0,s["ɵnov"](e,54).hasErrors,s["ɵnov"](e,54).hasSuccess),t(e,59,0,s["ɵnov"](e,64).ngClassUntouched,s["ɵnov"](e,64).ngClassTouched,s["ɵnov"](e,64).ngClassPristine,s["ɵnov"](e,64).ngClassDirty,s["ɵnov"](e,64).ngClassValid,s["ɵnov"](e,64).ngClassInvalid,s["ɵnov"](e,64).ngClassPending,s["ɵnov"](e,65).validClass,s["ɵnov"](e,65).invalidClass)}))}function cy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-silence-matcher-modal",[],null,null,null,ly,ay)),s["ɵdid"](1,49152,null,0,Oc,[jo.a,_c,Lt.a],null,null)],null,null)}var fy=s["ɵccf"]("cd-silence-matcher-modal",Oc,cy,{},{submitAction:"submitAction"},[]),hy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function gy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-dark ml-2"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function py(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,jr.b,jr.a)),s["ɵdid"](1,114688,null,0,Fr.a,[_a.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["At least one of these filters must be applied in order to proceed:"])),(t()(),s["ɵand"](16777216,null,0,1,null,gy)),s["ɵdid"](5,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"warning","slim",!1),t(e,5,0,n.requiredFilters)}),null)}function by(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"p",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Number of devices: ",". Raw capacity: ","."])),s["ɵppd"](4,1)],null,(function(t,e){var n=e.component,a=n.filteredDevices.length,r=s["ɵunv"](e,3,1,t(e,4,0,s["ɵnov"](e.parent,0),n.capacity));t(e,3,0,a,r)}))}function my(t){return s["ɵvid"](0,[s["ɵpid"](0,ga.a,[Ia.a]),s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵqud"](671088640,1,{inventoryDevices:0}),(t()(),s["ɵeld"](3,0,null,null,25,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](4,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](5,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](6,null,[""," devices"])),(t()(),s["ɵeld"](7,0,null,1,21,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,20,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,10).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit()&&a),a}),null,null)),s["ɵdid"](9,16384,null,0,$.G,[],null,null),s["ɵdid"](10,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](12,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](13,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](14,0,null,null,7,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,py)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](17,0,null,null,2,"cd-inventory-devices",[],null,[[null,"filterChange"]],(function(t,e,n){var a=!0;return"filterChange"===e&&(a=!1!==t.component.onFilterChange(n)&&a),a}),$r,Kr)),s["ɵdid"](18,245760,[[1,4],["inventoryDevices",4]],0,Wr,[xt.a,ga.a,_a.a,Lt.b,gt.a,Br],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},{filterChange:"filterChange"}),s["ɵpad"](19,2),(t()(),s["ɵand"](16777216,null,null,1,null,by)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](22,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),ws.b,ws.a)),s["ɵdid"](24,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](25,0,["",""])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](28,49152,null,0,Ns.a,[i.Location,At.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.bsModalRef),t(e,10,0,n.formGroup),t(e,13,0,n.formGroup),t(e,16,0,!n.canSubmit);var a=n.devices,r=t(e,19,0,"available","osd_ids");t(e,18,0,a,r,n.filterColumns),t(e,21,0,n.canSubmit),t(e,24,0,n.formGroup,!n.canSubmit||0===n.filteredDevices.length),t(e,28,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,n.deviceType),t(e,8,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending);var a=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e,1),n.action));t(e,25,0,a)}))}function yy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-devices-selection-modal",[],null,null,null,my,hy)),s["ɵdid"](1,4243456,null,0,nu,[jo.a,Lt.a,At.b],null,null)],null,null)}var vy=s["ɵccf"]("cd-osd-devices-selection-modal",nu,yy,{},{submitAction:"submitAction"},[]),xy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function _y(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),(t()(),s["ɵeld"](1,0,null,null,23,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](2,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD creation preview"])),(t()(),s["ɵeld"](5,0,null,1,19,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,18,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](7,16384,null,0,$.G,[],null,null),s["ɵdid"](8,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](10,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](11,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"h3",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DriveGroups"])),(t()(),s["ɵeld"](15,0,null,null,2,"pre",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,["",""])),s["ɵpid"](0,i.JsonPipe,[]),(t()(),s["ɵeld"](18,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),ws.b,ws.a)),s["ɵdid"](20,114688,null,0,Ss.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](21,0,["",""])),s["ɵppd"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"cd-back-button",[],null,null,null,Is.b,Is.a)),s["ɵdid"](24,49152,null,0,Ns.a,[i.Location,At.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,8,0,n.formGroup),t(e,11,0,n.formGroup),t(e,20,0,n.formGroup),t(e,24,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending),t(e,16,0,s["ɵunv"](e,16,0,s["ɵnov"](e,17).transform(n.driveGroups)));var a=s["ɵunv"](e,21,0,t(e,22,0,s["ɵnov"](e,0),n.action));t(e,21,0,a)}))}function Ty(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-creation-preview-modal",[],null,null,null,_y,xy)),s["ɵdid"](1,114688,null,0,hu,[Lt.a,At.b,jo.a,bi,ds.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Oy=s["ɵccf"]("cd-osd-creation-preview-modal",hu,Ty,{driveGroups:"driveGroups"},{submitAction:"submitAction"},[]),wy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Sy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"cd-modal",[],null,null,null,Eb.c,Eb.b)),s["ɵdid"](1,49152,null,0,am.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,[""," ",""])),(t()(),s["ɵeld"](4,0,null,1,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,zr,Vr)),s["ɵdid"](7,114688,null,0,Gr,[vt.a,pt.a],null,null),(t()(),s["ɵeld"](8,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,Is.b,Is.a)),s["ɵdid"](10,49152,null,0,Ns.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0),t(e,10,0,"Close",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.actionDescription,n.itemDescription)}))}function Iy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-modal",[],null,null,null,Sy,wy)),s["ɵdid"](1,114688,null,0,os,[Lt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Ny=s["ɵccf"]("cd-orchestrator-doc-modal",os,Iy,{},{},[]),Cy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ry(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function Ay(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-root",[],null,null,null,Ry,Cy)),s["ɵdid"](1,49152,null,0,l,[],null,null)],null,null)}var ky=s["ɵccf"]("cd-root",l,Ay,{},{},[]),Ey=new s.InjectionToken("JWT_OPTIONS"),Ly=function(){function t(t){void 0===t&&(t=null),this.tokenGetter=t&&t.tokenGetter||function(){}}return t.prototype.urlBase64Decode=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}return this.b64DecodeUnicode(e)},t.prototype.b64decode=function(t){var e="";if((t=String(t).replace(/=+$/,"")).length%4==1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(var n=0,a=void 0,r=void 0,i=0;r=t.charAt(i++);~r&&(a=n%4?64*a+r:r,n++%4)?e+=String.fromCharCode(255&a>>(-2*n&6)):0)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);return e},t.prototype.b64DecodeUnicode=function(t){return decodeURIComponent(Array.prototype.map.call(this.b64decode(t),(function(t){return"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)})).join(""))},t.prototype.decodeToken=function(t){if(void 0===t&&(t=this.tokenGetter()),null===t)return null;var e=t.split(".");if(3!==e.length)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");var n=this.urlBase64Decode(e[1]);if(!n)throw new Error("Cannot decode the token.");return JSON.parse(n)},t.prototype.getTokenExpirationDate=function(t){var e;if(void 0===t&&(t=this.tokenGetter()),!(e=this.decodeToken(t)).hasOwnProperty("exp"))return null;var n=new Date(0);return n.setUTCSeconds(e.exp),n},t.prototype.isTokenExpired=function(t,e){if(void 0===t&&(t=this.tokenGetter()),null===t||""===t)return!0;var n=this.getTokenExpirationDate(t);return e=e||0,null===n||!(n.valueOf()>(new Date).valueOf()+1e3*e)},t}(),Dy=n("CxY0"),Py=function(){function t(t,e){this.jwtHelper=e,this.tokenGetter=t.tokenGetter,this.headerName=t.headerName||"Authorization",this.authScheme=t.authScheme||""===t.authScheme?t.authScheme:"Bearer ",this.whitelistedDomains=t.whitelistedDomains||[],this.blacklistedRoutes=t.blacklistedRoutes||[],this.throwNoTokenError=t.throwNoTokenError||!1,this.skipWhenExpired=t.skipWhenExpired}return t.prototype.isWhitelistedDomain=function(t){var e=Object(Dy.parse)(t.url,!1,!0);return null===e.host||this.whitelistedDomains.findIndex((function(t){return"string"==typeof t?t===e.host:t instanceof RegExp&&t.test(e.host)}))>-1},t.prototype.isBlacklistedRoute=function(t){var e=t.url;return this.blacklistedRoutes.findIndex((function(t){return"string"==typeof t?t===e:t instanceof RegExp&&t.test(e)}))>-1},t.prototype.handleInterception=function(t,e,n){var a,r=!1;if(!t&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");return this.skipWhenExpired&&(r=!t||this.jwtHelper.isTokenExpired(t)),t&&r&&this.skipWhenExpired?e=e.clone():t&&(e=e.clone({setHeaders:(a={},a[this.headerName]=""+this.authScheme+t,a)})),n.handle(e)},t.prototype.intercept=function(t,e){var n=this;if(!this.isWhitelistedDomain(t)||this.isBlacklistedRoute(t))return e.handle(t);var a=this.tokenGetter();return a instanceof Promise?Object(Sn.a)(a).pipe(Object(Nn.a)((function(a){return n.handleInterception(a,t,e)}))):this.handleInterception(a,t,e)},t}(),My=n("z6cu"),qy=n("JIr8");let jy=(()=>{class t{constructor(t,e,n){this.router=t,this.authStorageService=e,this.notificationService=n}intercept(t,e){return e.handle(t).pipe(Object(qy.a)(t=>{if(t instanceof X.f){let e;switch(t.status){case 400:const n=new rs.a,a=t.error.task;J.isPlainObject(a)?(a.metadata.component=a.metadata.component||t.error.component,n.name=a.name,n.metadata=a.metadata):n.metadata=t.error,n.success=!1,n.exception=t.error,e=this.notificationService.notifyTask(n);break;case 401:this.authStorageService.remove(),this.router.navigate(["/login"]);break;case 403:this.router.navigate(["/403"]);break;default:e=this.prepareNotification(t)}t.preventDefault=()=>{this.notificationService.cancel(e)},t.ignoreStatusCode=function(t){this.status===t&&this.preventDefault()}}return Object(My.a)(t)}))}prepareNotification(t){return this.notificationService.show(()=>{let e="";return J.isPlainObject(t.error)&&J.isString(t.error.detail)?e=t.error.detail:J.isString(t.error)?e=t.error:J.isString(t.message)&&(e=t.message),new Te.b(Ie.a.error,`${t.status} - ${t.statusText}`,e,void 0,t.application)})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](qt.m),s["ɵɵinject"](xt.a),s["ɵɵinject"](gt.a))},token:t,providedIn:"root"}),t})();function Fy(){return"undefined"!=typeof process}function Gy(t){switch(t.length){case 0:return new K.d;case 1:return t[0];default:return new K.k(t)}}function Vy(t,e,n,a,r={},i={}){const s=[],o=[];let u=-1,d=null;if(a.forEach(t=>{const n=t.offset,a=n==u,l=a&&d||{};Object.keys(t).forEach(n=>{let a=n,o=t[n];if("offset"!==n)switch(a=e.normalizePropertyName(a,s),o){case K.l:o=r[n];break;case K.a:o=i[n];break;default:o=e.normalizeStyleValue(n,a,o,s)}l[a]=o}),a||o.push(l),d=l,u=n}),s.length){const t="\n - ";throw new Error(`Unable to animate due to the following errors:${t}${s.join(t)}`)}return o}function zy(t,e,n,a){switch(e){case"start":t.onStart(()=>a(n&&By(n,"start",t)));break;case"done":t.onDone(()=>a(n&&By(n,"done",t)));break;case"destroy":t.onDestroy(()=>a(n&&By(n,"destroy",t)))}}function By(t,e,n){const a=n.totalTime,r=Yy(t.element,t.triggerName,t.fromState,t.toState,e||t.phaseName,null==a?t.totalTime:a,!!n.disabled),i=t._data;return null!=i&&(r._data=i),r}function Yy(t,e,n,a,r="",i=0,s){return{element:t,triggerName:e,fromState:n,toState:a,phaseName:r,totalTime:i,disabled:!!s}}function Hy(t,e,n){let a;return t instanceof Map?(a=t.get(e),a||t.set(e,a=n)):(a=t[e],a||(a=t[e]=n)),a}function Uy(t){const e=t.indexOf(":");return[t.substring(1,e),t.substr(e+1)]}let Wy=(t,e)=>!1,Ky=(t,e)=>!1,$y=(t,e,n)=>[];const Zy=Fy();(Zy||"undefined"!=typeof Element)&&(Wy=(t,e)=>t.contains(e),Ky=(()=>{if(Zy||Element.prototype.matches)return(t,e)=>t.matches(e);{const t=Element.prototype,e=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector;return e?(t,n)=>e.apply(t,[n]):Ky}})(),$y=(t,e,n)=>{let a=[];if(n)a.push(...t.querySelectorAll(e));else{const n=t.querySelector(e);n&&a.push(n)}return a});let Jy=null,Qy=!1;function Xy(t){Jy||(Jy=("undefined"!=typeof document?document.body:null)||{},Qy=!!Jy.style&&"WebkitAppearance"in Jy.style);let e=!0;return Jy.style&&!function(t){return"ebkit"==t.substring(1,6)}(t)&&(e=t in Jy.style,!e&&Qy)&&(e="Webkit"+t.charAt(0).toUpperCase()+t.substr(1)in Jy.style),e}const tv=Ky,ev=Wy,nv=$y;function av(t){const e={};return Object.keys(t).forEach(n=>{const a=n.replace(/([a-z])([A-Z])/g,"$1-$2");e[a]=t[n]}),e}class rv{validateStyleProperty(t){return Xy(t)}matchesElement(t,e){return tv(t,e)}containsElement(t,e){return ev(t,e)}query(t,e,n){return nv(t,e,n)}computeStyle(t,e,n){return n||""}animate(t,e,n,a,r,i=[],s){return new K.d(n,a)}}let iv=(()=>{class t{}return t.NOOP=new rv,t})();function sv(t){if("number"==typeof t)return t;const e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:ov(parseFloat(e[1]),e[2])}function ov(t,e){switch(e){case"s":return 1e3*t;default:return t}}function uv(t,e,n){return t.hasOwnProperty("duration")?t:function(t,e,n){let a,r=0,i="";if("string"==typeof t){const n=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===n)return e.push(`The provided timing value "${t}" is invalid.`),{duration:0,delay:0,easing:""};a=ov(parseFloat(n[1]),n[2]);const s=n[3];null!=s&&(r=ov(parseFloat(s),n[4]));const o=n[5];o&&(i=o)}else a=t;if(!n){let n=!1,i=e.length;a<0&&(e.push("Duration values below 0 are not allowed for this animation step."),n=!0),r<0&&(e.push("Delay values below 0 are not allowed for this animation step."),n=!0),n&&e.splice(i,0,`The provided timing value "${t}" is invalid.`)}return{duration:a,delay:r,easing:i}}(t,e,n)}function dv(t,e={}){return Object.keys(t).forEach(n=>{e[n]=t[n]}),e}function lv(t,e,n={}){if(e)for(let a in t)n[a]=t[a];else dv(t,n);return n}function cv(t,e,n){return n?e+":"+n+";":""}function fv(t){let e="";for(let n=0;n<t.style.length;n++){const a=t.style.item(n);e+=cv(0,a,t.style.getPropertyValue(a))}for(const n in t.style)t.style.hasOwnProperty(n)&&!n.startsWith("_")&&(e+=cv(0,n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t.style[n]));t.setAttribute("style",e)}function hv(t,e,n){t.style&&(Object.keys(e).forEach(a=>{const r=_v(a);n&&!n.hasOwnProperty(a)&&(n[a]=t.style[r]),t.style[r]=e[a]}),Fy()&&fv(t))}function gv(t,e){t.style&&(Object.keys(e).forEach(e=>{const n=_v(e);t.style[n]=""}),Fy()&&fv(t))}function pv(t){return Array.isArray(t)?1==t.length?t[0]:Object(K.f)(t):t}const bv=new RegExp("{{\\s*(.+?)\\s*}}","g");function mv(t){let e=[];if("string"==typeof t){const n=t.toString();let a;for(;a=bv.exec(n);)e.push(a[1]);bv.lastIndex=0}return e}function yv(t,e,n){const a=t.toString(),r=a.replace(bv,(t,a)=>{let r=e[a];return e.hasOwnProperty(a)||(n.push(`Please provide a value for the animation param ${a}`),r=""),r.toString()});return r==a?t:r}function vv(t){const e=[];let n=t.next();for(;!n.done;)e.push(n.value),n=t.next();return e}const xv=/-+([a-z0-9])/g;function _v(t){return t.replace(xv,(...t)=>t[1].toUpperCase())}function Tv(t,e){return 0===t||0===e}function Ov(t,e,n){const a=Object.keys(n);if(a.length&&e.length){let i=e[0],s=[];if(a.forEach(t=>{i.hasOwnProperty(t)||s.push(t),i[t]=n[t]}),s.length)for(var r=1;r<e.length;r++){let n=e[r];s.forEach((function(e){n[e]=Sv(t,e)}))}}return e}function wv(t,e,n){switch(e.type){case 7:return t.visitTrigger(e,n);case 0:return t.visitState(e,n);case 1:return t.visitTransition(e,n);case 2:return t.visitSequence(e,n);case 3:return t.visitGroup(e,n);case 4:return t.visitAnimate(e,n);case 5:return t.visitKeyframes(e,n);case 6:return t.visitStyle(e,n);case 8:return t.visitReference(e,n);case 9:return t.visitAnimateChild(e,n);case 10:return t.visitAnimateRef(e,n);case 11:return t.visitQuery(e,n);case 12:return t.visitStagger(e,n);default:throw new Error(`Unable to resolve animation metadata node #${e.type}`)}}function Sv(t,e){return window.getComputedStyle(t)[e]}function Iv(t,e){const n=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(t=>function(t,e,n){if(":"==t[0]){const a=function(t,e){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,e)=>parseFloat(e)>parseFloat(t);case":decrement":return(t,e)=>parseFloat(e)<parseFloat(t);default:return e.push(`The transition alias value "${t}" is not supported`),"* => *"}}(t,n);if("function"==typeof a)return void e.push(a);t=a}const a=t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==a||a.length<4)return n.push(`The provided transition expression "${t}" is not supported`),e;const r=a[1],i=a[2],s=a[3];e.push(Rv(r,s)),"<"!=i[0]||"*"==r&&"*"==s||e.push(Rv(s,r))}(t,n,e)):n.push(t),n}const Nv=new Set(["true","1"]),Cv=new Set(["false","0"]);function Rv(t,e){const n=Nv.has(t)||Cv.has(t),a=Nv.has(e)||Cv.has(e);return(r,i)=>{let s="*"==t||t==r,o="*"==e||e==i;return!s&&n&&"boolean"==typeof r&&(s=r?Nv.has(t):Cv.has(t)),!o&&a&&"boolean"==typeof i&&(o=i?Nv.has(e):Cv.has(e)),s&&o}}const Av=new RegExp("s*:selfs*,?","g");function kv(t,e,n){return new Ev(t).build(e,n)}class Ev{constructor(t){this._driver=t}build(t,e){const n=new Lv(e);return this._resetContextStyleTimingState(n),wv(this,pv(t),n)}_resetContextStyleTimingState(t){t.currentQuerySelector="",t.collectedStyles={},t.collectedStyles[""]={},t.currentTime=0}visitTrigger(t,e){let n=e.queryCount=0,a=e.depCount=0;const r=[],i=[];return"@"==t.name.charAt(0)&&e.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),t.definitions.forEach(t=>{if(this._resetContextStyleTimingState(e),0==t.type){const n=t,a=n.name;a.toString().split(/\s*,\s*/).forEach(t=>{n.name=t,r.push(this.visitState(n,e))}),n.name=a}else if(1==t.type){const r=this.visitTransition(t,e);n+=r.queryCount,a+=r.depCount,i.push(r)}else e.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:t.name,states:r,transitions:i,queryCount:n,depCount:a,options:null}}visitState(t,e){const n=this.visitStyle(t.styles,e),a=t.options&&t.options.params||null;if(n.containsDynamicStyles){const r=new Set,i=a||{};if(n.styles.forEach(t=>{if(Dv(t)){const e=t;Object.keys(e).forEach(t=>{mv(e[t]).forEach(t=>{i.hasOwnProperty(t)||r.add(t)})})}}),r.size){const n=vv(r.values());e.errors.push(`state("${t.name}", ...) must define default values for all the following style substitutions: ${n.join(", ")}`)}}return{type:0,name:t.name,style:n,options:a?{params:a}:null}}visitTransition(t,e){e.queryCount=0,e.depCount=0;const n=wv(this,pv(t.animation),e);return{type:1,matchers:Iv(t.expr,e.errors),animation:n,queryCount:e.queryCount,depCount:e.depCount,options:Pv(t.options)}}visitSequence(t,e){return{type:2,steps:t.steps.map(t=>wv(this,t,e)),options:Pv(t.options)}}visitGroup(t,e){const n=e.currentTime;let a=0;const r=t.steps.map(t=>{e.currentTime=n;const r=wv(this,t,e);return a=Math.max(a,e.currentTime),r});return e.currentTime=a,{type:3,steps:r,options:Pv(t.options)}}visitAnimate(t,e){const n=function(t,e){let n=null;if(t.hasOwnProperty("duration"))n=t;else if("number"==typeof t)return Mv(uv(t,e).duration,0,"");const a=t;if(a.split(/\s+/).some(t=>"{"==t.charAt(0)&&"{"==t.charAt(1))){const t=Mv(0,0,"");return t.dynamic=!0,t.strValue=a,t}return n=n||uv(a,e),Mv(n.duration,n.delay,n.easing)}(t.timings,e.errors);let a;e.currentAnimateTimings=n;let r=t.styles?t.styles:Object(K.h)({});if(5==r.type)a=this.visitKeyframes(r,e);else{let r=t.styles,i=!1;if(!r){i=!0;const t={};n.easing&&(t.easing=n.easing),r=Object(K.h)(t)}e.currentTime+=n.duration+n.delay;const s=this.visitStyle(r,e);s.isEmptyStep=i,a=s}return e.currentAnimateTimings=null,{type:4,timings:n,style:a,options:null}}visitStyle(t,e){const n=this._makeStyleAst(t,e);return this._validateStyleAst(n,e),n}_makeStyleAst(t,e){const n=[];Array.isArray(t.styles)?t.styles.forEach(t=>{"string"==typeof t?t==K.a?n.push(t):e.errors.push(`The provided style string value ${t} is not allowed.`):n.push(t)}):n.push(t.styles);let a=!1,r=null;return n.forEach(t=>{if(Dv(t)){const e=t,n=e.easing;if(n&&(r=n,delete e.easing),!a)for(let t in e)if(e[t].toString().indexOf("{{")>=0){a=!0;break}}}),{type:6,styles:n,easing:r,offset:t.offset,containsDynamicStyles:a,options:null}}_validateStyleAst(t,e){const n=e.currentAnimateTimings;let a=e.currentTime,r=e.currentTime;n&&r>0&&(r-=n.duration+n.delay),t.styles.forEach(t=>{"string"!=typeof t&&Object.keys(t).forEach(n=>{if(!this._driver.validateStyleProperty(n))return void e.errors.push(`The provided animation property "${n}" is not a supported CSS property for animations`);const i=e.collectedStyles[e.currentQuerySelector],s=i[n];let o=!0;s&&(r!=a&&r>=s.startTime&&a<=s.endTime&&(e.errors.push(`The CSS property "${n}" that exists between the times of "${s.startTime}ms" and "${s.endTime}ms" is also being animated in a parallel animation between the times of "${r}ms" and "${a}ms"`),o=!1),r=s.startTime),o&&(i[n]={startTime:r,endTime:a}),e.options&&function(t,e,n){const a=e.params||{},r=mv(t);r.length&&r.forEach(t=>{a.hasOwnProperty(t)||n.push(`Unable to resolve the local animation param ${t} in the given list of values`)})}(t[n],e.options,e.errors)})})}visitKeyframes(t,e){const n={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push("keyframes() must be placed inside of a call to animate()"),n;let a=0;const r=[];let i=!1,s=!1,o=0;const u=t.steps.map(t=>{const n=this._makeStyleAst(t,e);let u=null!=n.offset?n.offset:function(t){if("string"==typeof t)return null;let e=null;if(Array.isArray(t))t.forEach(t=>{if(Dv(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}});else if(Dv(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}return e}(n.styles),d=0;return null!=u&&(a++,d=n.offset=u),s=s||d<0||d>1,i=i||d<o,o=d,r.push(d),n});s&&e.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),i&&e.errors.push("Please ensure that all keyframe offsets are in order");const d=t.steps.length;let l=0;a>0&&a<d?e.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==a&&(l=1/(d-1));const c=d-1,f=e.currentTime,h=e.currentAnimateTimings,g=h.duration;return u.forEach((t,a)=>{const i=l>0?a==c?1:l*a:r[a],s=i*g;e.currentTime=f+h.delay+s,h.duration=s,this._validateStyleAst(t,e),t.offset=i,n.styles.push(t)}),n}visitReference(t,e){return{type:8,animation:wv(this,pv(t.animation),e),options:Pv(t.options)}}visitAnimateChild(t,e){return e.depCount++,{type:9,options:Pv(t.options)}}visitAnimateRef(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:Pv(t.options)}}visitQuery(t,e){const n=e.currentQuerySelector,a=t.options||{};e.queryCount++,e.currentQuery=t;const[r,i]=function(t){const e=!!t.split(/\s*,\s*/).find(t=>":self"==t);return e&&(t=t.replace(Av,"")),[t=t.replace(/@\*/g,".ng-trigger").replace(/@\w+/g,t=>".ng-trigger-"+t.substr(1)).replace(/:animating/g,".ng-animating"),e]}(t.selector);e.currentQuerySelector=n.length?n+" "+r:r,Hy(e.collectedStyles,e.currentQuerySelector,{});const s=wv(this,pv(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:11,selector:r,limit:a.limit||0,optional:!!a.optional,includeSelf:i,animation:s,originalSelector:t.selector,options:Pv(t.options)}}visitStagger(t,e){e.currentQuery||e.errors.push("stagger() can only be used inside of query()");const n="full"===t.timings?{duration:0,delay:0,easing:"full"}:uv(t.timings,e.errors,!0);return{type:12,animation:wv(this,pv(t.animation),e),timings:n,options:null}}}class Lv{constructor(t){this.errors=t,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles={},this.options=null}}function Dv(t){return!Array.isArray(t)&&"object"==typeof t}function Pv(t){var e;return t?(t=dv(t)).params&&(t.params=(e=t.params)?dv(e):null):t={},t}function Mv(t,e,n){return{duration:t,delay:e,easing:n}}function qv(t,e,n,a,r,i,s=null,o=!1){return{type:1,element:t,keyframes:e,preStyleProps:n,postStyleProps:a,duration:r,delay:i,totalTime:r+i,easing:s,subTimeline:o}}class jv{constructor(){this._map=new Map}consume(t){let e=this._map.get(t);return e?this._map.delete(t):e=[],e}append(t,e){let n=this._map.get(t);n||this._map.set(t,n=[]),n.push(...e)}has(t){return this._map.has(t)}clear(){this._map.clear()}}const Fv=new RegExp(":enter","g"),Gv=new RegExp(":leave","g");function Vv(t,e,n,a,r,i={},s={},o,u,d=[]){return(new zv).buildKeyframes(t,e,n,a,r,i,s,o,u,d)}class zv{buildKeyframes(t,e,n,a,r,i,s,o,u,d=[]){u=u||new jv;const l=new Yv(t,e,u,a,r,d,[]);l.options=o,l.currentTimeline.setStyles([i],null,l.errors,o),wv(this,n,l);const c=l.timelines.filter(t=>t.containsAnimation());if(c.length&&Object.keys(s).length){const t=c[c.length-1];t.allowOnlyTimelineStyles()||t.setStyles([s],null,l.errors,o)}return c.length?c.map(t=>t.buildKeyframes()):[qv(e,[],[],[],0,0,"",!1)]}visitTrigger(t,e){}visitState(t,e){}visitTransition(t,e){}visitAnimateChild(t,e){const n=e.subInstructions.consume(e.element);if(n){const a=e.createSubContext(t.options),r=e.currentTimeline.currentTime,i=this._visitSubInstructions(n,a,a.options);r!=i&&e.transformIntoNewTimeline(i)}e.previousNode=t}visitAnimateRef(t,e){const n=e.createSubContext(t.options);n.transformIntoNewTimeline(),this.visitReference(t.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=t}_visitSubInstructions(t,e,n){let a=e.currentTimeline.currentTime;const r=null!=n.duration?sv(n.duration):null,i=null!=n.delay?sv(n.delay):null;return 0!==r&&t.forEach(t=>{const n=e.appendInstructionToTimeline(t,r,i);a=Math.max(a,n.duration+n.delay)}),a}visitReference(t,e){e.updateOptions(t.options,!0),wv(this,t.animation,e),e.previousNode=t}visitSequence(t,e){const n=e.subContextCount;let a=e;const r=t.options;if(r&&(r.params||r.delay)&&(a=e.createSubContext(r),a.transformIntoNewTimeline(),null!=r.delay)){6==a.previousNode.type&&(a.currentTimeline.snapshotCurrentStyles(),a.previousNode=Bv);const t=sv(r.delay);a.delayNextStep(t)}t.steps.length&&(t.steps.forEach(t=>wv(this,t,a)),a.currentTimeline.applyStylesToKeyframe(),a.subContextCount>n&&a.transformIntoNewTimeline()),e.previousNode=t}visitGroup(t,e){const n=[];let a=e.currentTimeline.currentTime;const r=t.options&&t.options.delay?sv(t.options.delay):0;t.steps.forEach(i=>{const s=e.createSubContext(t.options);r&&s.delayNextStep(r),wv(this,i,s),a=Math.max(a,s.currentTimeline.currentTime),n.push(s.currentTimeline)}),n.forEach(t=>e.currentTimeline.mergeTimelineCollectedStyles(t)),e.transformIntoNewTimeline(a),e.previousNode=t}_visitTiming(t,e){if(t.dynamic){const n=t.strValue;return uv(e.params?yv(n,e.params,e.errors):n,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}}visitAnimate(t,e){const n=e.currentAnimateTimings=this._visitTiming(t.timings,e),a=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),a.snapshotCurrentStyles());const r=t.style;5==r.type?this.visitKeyframes(r,e):(e.incrementTime(n.duration),this.visitStyle(r,e),a.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=t}visitStyle(t,e){const n=e.currentTimeline,a=e.currentAnimateTimings;!a&&n.getCurrentStyleProperties().length&&n.forwardFrame();const r=a&&a.easing||t.easing;t.isEmptyStep?n.applyEmptyStep(r):n.setStyles(t.styles,r,e.errors,e.options),e.previousNode=t}visitKeyframes(t,e){const n=e.currentAnimateTimings,a=e.currentTimeline.duration,r=n.duration,i=e.createSubContext().currentTimeline;i.easing=n.easing,t.styles.forEach(t=>{i.forwardTime((t.offset||0)*r),i.setStyles(t.styles,t.easing,e.errors,e.options),i.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(i),e.transformIntoNewTimeline(a+r),e.previousNode=t}visitQuery(t,e){const n=e.currentTimeline.currentTime,a=t.options||{},r=a.delay?sv(a.delay):0;r&&(6===e.previousNode.type||0==n&&e.currentTimeline.getCurrentStyleProperties().length)&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Bv);let i=n;const s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!a.optional,e.errors);e.currentQueryTotal=s.length;let o=null;s.forEach((n,a)=>{e.currentQueryIndex=a;const s=e.createSubContext(t.options,n);r&&s.delayNextStep(r),n===e.element&&(o=s.currentTimeline),wv(this,t.animation,s),s.currentTimeline.applyStylesToKeyframe(),i=Math.max(i,s.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(i),o&&(e.currentTimeline.mergeTimelineCollectedStyles(o),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t}visitStagger(t,e){const n=e.parentContext,a=e.currentTimeline,r=t.timings,i=Math.abs(r.duration),s=i*(e.currentQueryTotal-1);let o=i*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":o=s-o;break;case"full":o=n.currentStaggerTime}const u=e.currentTimeline;o&&u.delayNextStep(o);const d=u.currentTime;wv(this,t.animation,e),e.previousNode=t,n.currentStaggerTime=a.currentTime-d+(a.startTime-n.currentTimeline.startTime)}}const Bv={};class Yv{constructor(t,e,n,a,r,i,s,o){this._driver=t,this.element=e,this.subInstructions=n,this._enterClassName=a,this._leaveClassName=r,this.errors=i,this.timelines=s,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Bv,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=o||new Hv(this._driver,e,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(t,e){if(!t)return;const n=t;let a=this.options;null!=n.duration&&(a.duration=sv(n.duration)),null!=n.delay&&(a.delay=sv(n.delay));const r=n.params;if(r){let t=a.params;t||(t=this.options.params={}),Object.keys(r).forEach(n=>{e&&t.hasOwnProperty(n)||(t[n]=yv(r[n],t,this.errors))})}}_copyOptions(){const t={};if(this.options){const e=this.options.params;if(e){const n=t.params={};Object.keys(e).forEach(t=>{n[t]=e[t]})}}return t}createSubContext(t=null,e,n){const a=e||this.element,r=new Yv(this._driver,a,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(a,n||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(t),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(t){return this.previousNode=Bv,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(t,e,n){const a={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=n?n:0)+t.delay,easing:""},r=new Uv(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,a,t.stretchStartingKeyframe);return this.timelines.push(r),a}incrementTime(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)}delayNextStep(t){t>0&&this.currentTimeline.delayNextStep(t)}invokeQuery(t,e,n,a,r,i){let s=[];if(a&&s.push(this.element),t.length>0){t=(t=t.replace(Fv,"."+this._enterClassName)).replace(Gv,"."+this._leaveClassName);let e=this._driver.query(this.element,t,1!=n);0!==n&&(e=n<0?e.slice(e.length+n,e.length):e.slice(0,n)),s.push(...e)}return r||0!=s.length||i.push(`\`query("${e}")\` returned zero elements. (Use \`query("${e}", { optional: true })\` if you wish to allow this.)`),s}}class Hv{constructor(t,e,n,a){this._driver=t,this.element=e,this.startTime=n,this._elementTimelineStylesLookup=a,this.duration=0,this._previousKeyframe={},this._currentKeyframe={},this._keyframes=new Map,this._styleSummary={},this._pendingStyles={},this._backFill={},this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._localTimelineStyles=Object.create(this._backFill,{}),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.getCurrentStyleProperties().length>0;default:return!0}}getCurrentStyleProperties(){return Object.keys(this._currentKeyframe)}get currentTime(){return this.startTime+this.duration}delayNextStep(t){const e=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t}fork(t,e){return this.applyStylesToKeyframe(),new Hv(this._driver,t,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=Object.create(this._backFill,{}),this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()}_updateStyle(t,e){this._localTimelineStyles[t]=e,this._globalTimelineStyles[t]=e,this._styleSummary[t]={time:this.currentTime,value:e}}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(t){t&&(this._previousKeyframe.easing=t),Object.keys(this._globalTimelineStyles).forEach(t=>{this._backFill[t]=this._globalTimelineStyles[t]||K.a,this._currentKeyframe[t]=K.a}),this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(t,e,n,a){e&&(this._previousKeyframe.easing=e);const r=a&&a.params||{},i=function(t,e){const n={};let a;return t.forEach(t=>{"*"===t?(a=a||Object.keys(e),a.forEach(t=>{n[t]=K.a})):lv(t,!1,n)}),n}(t,this._globalTimelineStyles);Object.keys(i).forEach(t=>{const e=yv(i[t],r,n);this._pendingStyles[t]=e,this._localTimelineStyles.hasOwnProperty(t)||(this._backFill[t]=this._globalTimelineStyles.hasOwnProperty(t)?this._globalTimelineStyles[t]:K.a),this._updateStyle(t,e)})}applyStylesToKeyframe(){const t=this._pendingStyles,e=Object.keys(t);0!=e.length&&(this._pendingStyles={},e.forEach(e=>{this._currentKeyframe[e]=t[e]}),Object.keys(this._localTimelineStyles).forEach(t=>{this._currentKeyframe.hasOwnProperty(t)||(this._currentKeyframe[t]=this._localTimelineStyles[t])}))}snapshotCurrentStyles(){Object.keys(this._localTimelineStyles).forEach(t=>{const e=this._localTimelineStyles[t];this._pendingStyles[t]=e,this._updateStyle(t,e)})}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const t=[];for(let e in this._currentKeyframe)t.push(e);return t}mergeTimelineCollectedStyles(t){Object.keys(t._styleSummary).forEach(e=>{const n=this._styleSummary[e],a=t._styleSummary[e];(!n||a.time>n.time)&&this._updateStyle(e,a.value)})}buildKeyframes(){this.applyStylesToKeyframe();const t=new Set,e=new Set,n=1===this._keyframes.size&&0===this.duration;let a=[];this._keyframes.forEach((r,i)=>{const s=lv(r,!0);Object.keys(s).forEach(n=>{const a=s[n];a==K.l?t.add(n):a==K.a&&e.add(n)}),n||(s.offset=i/this.duration),a.push(s)});const r=t.size?vv(t.values()):[],i=e.size?vv(e.values()):[];if(n){const t=a[0],e=dv(t);t.offset=0,e.offset=1,a=[t,e]}return qv(this.element,a,r,i,this.duration,this.startTime,this.easing,!1)}}class Uv extends Hv{constructor(t,e,n,a,r,i,s=!1){super(t,e,i.delay),this.element=e,this.keyframes=n,this.preStyleProps=a,this.postStyleProps=r,this._stretchStartingKeyframe=s,this.timings={duration:i.duration,delay:i.delay,easing:i.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let t=this.keyframes,{delay:e,duration:n,easing:a}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],i=n+e,s=e/i,o=lv(t[0],!1);o.offset=0,r.push(o);const u=lv(t[0],!1);u.offset=Wv(s),r.push(u);const d=t.length-1;for(let a=1;a<=d;a++){let s=lv(t[a],!1);s.offset=Wv((e+s.offset*n)/i),r.push(s)}n=i,e=0,a="",t=r}return qv(this.element,t,this.preStyleProps,this.postStyleProps,n,e,a,!0)}}function Wv(t,e=3){const n=Math.pow(10,e-1);return Math.round(t*n)/n}class Kv{}class $v extends Kv{normalizePropertyName(t,e){return _v(t)}normalizeStyleValue(t,e,n,a){let r="";const i=n.toString().trim();if(Zv[e]&&0!==n&&"0"!==n)if("number"==typeof n)r="px";else{const e=n.match(/^[+-]?[\d\.]+([a-z]*)$/);e&&0==e[1].length&&a.push(`Please provide a CSS unit value for ${t}:${n}`)}return i+r}}const Zv=(()=>function(t){const e={};return t.forEach(t=>e[t]=!0),e}("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".split(",")))();function Jv(t,e,n,a,r,i,s,o,u,d,l,c,f){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:n,fromStyles:i,toState:a,toStyles:s,timelines:o,queriedElements:u,preStyleProps:d,postStyleProps:l,totalTime:c,errors:f}}const Qv={};class Xv{constructor(t,e,n){this._triggerName=t,this.ast=e,this._stateStyles=n}match(t,e,n,a){return function(t,e,n,a,r){return t.some(t=>t(e,n,a,r))}(this.ast.matchers,t,e,n,a)}buildStyles(t,e,n){const a=this._stateStyles["*"],r=this._stateStyles[t],i=a?a.buildStyles(e,n):{};return r?r.buildStyles(e,n):i}build(t,e,n,a,r,i,s,o,u,d){const l=[],c=this.ast.options&&this.ast.options.params||Qv,f=this.buildStyles(n,s&&s.params||Qv,l),h=o&&o.params||Qv,g=this.buildStyles(a,h,l),p=new Set,b=new Map,m=new Map,y="void"===a,v={params:Object.assign({},c,h)},x=d?[]:Vv(t,e,this.ast.animation,r,i,f,g,v,u,l);let _=0;if(x.forEach(t=>{_=Math.max(t.duration+t.delay,_)}),l.length)return Jv(e,this._triggerName,n,a,y,f,g,[],[],b,m,_,l);x.forEach(t=>{const n=t.element,a=Hy(b,n,{});t.preStyleProps.forEach(t=>a[t]=!0);const r=Hy(m,n,{});t.postStyleProps.forEach(t=>r[t]=!0),n!==e&&p.add(n)});const T=vv(p.values());return Jv(e,this._triggerName,n,a,y,f,g,x,T,b,m,_)}}class tx{constructor(t,e){this.styles=t,this.defaultParams=e}buildStyles(t,e){const n={},a=dv(this.defaultParams);return Object.keys(t).forEach(e=>{const n=t[e];null!=n&&(a[e]=n)}),this.styles.styles.forEach(t=>{if("string"!=typeof t){const r=t;Object.keys(r).forEach(t=>{let i=r[t];i.length>1&&(i=yv(i,a,e)),n[t]=i})}}),n}}class ex{constructor(t,e){this.name=t,this.ast=e,this.transitionFactories=[],this.states={},e.states.forEach(t=>{this.states[t.name]=new tx(t.style,t.options&&t.options.params||{})}),nx(this.states,"true","1"),nx(this.states,"false","0"),e.transitions.forEach(e=>{this.transitionFactories.push(new Xv(t,e,this.states))}),this.fallbackTransition=new Xv(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[(t,e)=>!0],options:null,queryCount:0,depCount:0},this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(t,e,n,a){return this.transitionFactories.find(r=>r.match(t,e,n,a))||null}matchStyles(t,e,n){return this.fallbackTransition.buildStyles(t,e,n)}}function nx(t,e,n){t.hasOwnProperty(e)?t.hasOwnProperty(n)||(t[n]=t[e]):t.hasOwnProperty(n)&&(t[e]=t[n])}const ax=new jv;class rx{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._normalizer=n,this._animations={},this._playersById={},this.players=[]}register(t,e){const n=[],a=kv(this._driver,e,n);if(n.length)throw new Error(`Unable to build the animation due to the following errors: ${n.join("\n")}`);this._animations[t]=a}_buildPlayer(t,e,n){const a=t.element,r=Vy(0,this._normalizer,0,t.keyframes,e,n);return this._driver.animate(a,r,t.duration,t.delay,t.easing,[],!0)}create(t,e,n={}){const a=[],r=this._animations[t];let i;const s=new Map;if(r?(i=Vv(this._driver,e,r,"ng-enter","ng-leave",{},{},n,ax,a),i.forEach(t=>{const e=Hy(s,t.element,{});t.postStyleProps.forEach(t=>e[t]=null)})):(a.push("The requested animation doesn't exist or has already been destroyed"),i=[]),a.length)throw new Error(`Unable to create the animation due to the following errors: ${a.join("\n")}`);s.forEach((t,e)=>{Object.keys(t).forEach(n=>{t[n]=this._driver.computeStyle(e,n,K.a)})});const o=Gy(i.map(t=>{const e=s.get(t.element);return this._buildPlayer(t,{},e)}));return this._playersById[t]=o,o.onDestroy(()=>this.destroy(t)),this.players.push(o),o}destroy(t){const e=this._getPlayer(t);e.destroy(),delete this._playersById[t];const n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)}_getPlayer(t){const e=this._playersById[t];if(!e)throw new Error(`Unable to find the timeline player referenced by ${t}`);return e}listen(t,e,n,a){const r=Yy(e,"","","");return zy(this._getPlayer(t),n,r,a),()=>{}}command(t,e,n,a){if("register"==n)return void this.register(t,a[0]);if("create"==n)return void this.create(t,e,a[0]||{});const r=this._getPlayer(t);switch(n){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(a[0]));break;case"destroy":this.destroy(t)}}}const ix=[],sx={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},ox={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0};class ux{constructor(t,e=""){this.namespaceId=e;const n=t&&t.hasOwnProperty("value");if(this.value=null!=(a=n?t.value:t)?a:null,n){const e=dv(t);delete e.value,this.options=e}else this.options={};var a;this.options.params||(this.options.params={})}get params(){return this.options.params}absorbOptions(t){const e=t.params;if(e){const t=this.options.params;Object.keys(e).forEach(n=>{null==t[n]&&(t[n]=e[n])})}}}const dx=new ux("void");class lx{constructor(t,e,n){this.id=t,this.hostElement=e,this._engine=n,this.players=[],this._triggers={},this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+t,mx(e,this._hostClassName)}listen(t,e,n,a){if(!this._triggers.hasOwnProperty(e))throw new Error(`Unable to listen on the animation trigger event "${n}" because the animation trigger "${e}" doesn't exist!`);if(null==n||0==n.length)throw new Error(`Unable to listen on the animation trigger "${e}" because the provided event is undefined!`);if("start"!=(r=n)&&"done"!=r)throw new Error(`The provided animation trigger event "${n}" for the animation trigger "${e}" is not supported!`);var r;const i=Hy(this._elementListeners,t,[]),s={name:e,phase:n,callback:a};i.push(s);const o=Hy(this._engine.statesByElement,t,{});return o.hasOwnProperty(e)||(mx(t,"ng-trigger"),mx(t,"ng-trigger-"+e),o[e]=dx),()=>{this._engine.afterFlush(()=>{const t=i.indexOf(s);t>=0&&i.splice(t,1),this._triggers[e]||delete o[e]})}}register(t,e){return!this._triggers[t]&&(this._triggers[t]=e,!0)}_getTrigger(t){const e=this._triggers[t];if(!e)throw new Error(`The provided animation trigger "${t}" has not been registered!`);return e}trigger(t,e,n,a=!0){const r=this._getTrigger(e),i=new fx(this.id,e,t);let s=this._engine.statesByElement.get(t);s||(mx(t,"ng-trigger"),mx(t,"ng-trigger-"+e),this._engine.statesByElement.set(t,s={}));let o=s[e];const u=new ux(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&o&&u.absorbOptions(o.options),s[e]=u,o||(o=dx),"void"!==u.value&&o.value===u.value){if(!function(t,e){const n=Object.keys(t),a=Object.keys(e);if(n.length!=a.length)return!1;for(let r=0;r<n.length;r++){const a=n[r];if(!e.hasOwnProperty(a)||t[a]!==e[a])return!1}return!0}(o.params,u.params)){const e=[],n=r.matchStyles(o.value,o.params,e),a=r.matchStyles(u.value,u.params,e);e.length?this._engine.reportError(e):this._engine.afterFlush(()=>{gv(t,n),hv(t,a)})}return}const d=Hy(this._engine.playersByElement,t,[]);d.forEach(t=>{t.namespaceId==this.id&&t.triggerName==e&&t.queued&&t.destroy()});let l=r.matchTransition(o.value,u.value,t,u.params),c=!1;if(!l){if(!a)return;l=r.fallbackTransition,c=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:l,fromState:o,toState:u,player:i,isFallbackTransition:c}),c||(mx(t,"ng-animate-queued"),i.onStart(()=>{yx(t,"ng-animate-queued")})),i.onDone(()=>{let e=this.players.indexOf(i);e>=0&&this.players.splice(e,1);const n=this._engine.playersByElement.get(t);if(n){let t=n.indexOf(i);t>=0&&n.splice(t,1)}}),this.players.push(i),d.push(i),i}deregister(t){delete this._triggers[t],this._engine.statesByElement.forEach((e,n)=>{delete e[t]}),this._elementListeners.forEach((e,n)=>{this._elementListeners.set(n,e.filter(e=>e.name!=t))})}clearElementCache(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);const e=this._engine.playersByElement.get(t);e&&(e.forEach(t=>t.destroy()),this._engine.playersByElement.delete(t))}_signalRemovalForInnerTriggers(t,e,n=!1){this._engine.driver.query(t,".ng-trigger",!0).forEach(t=>{if(t.__ng_removed)return;const n=this._engine.fetchNamespacesByElement(t);n.size?n.forEach(n=>n.triggerLeaveAnimation(t,e,!1,!0)):this.clearElementCache(t)})}triggerLeaveAnimation(t,e,n,a){const r=this._engine.statesByElement.get(t);if(r){const i=[];if(Object.keys(r).forEach(e=>{if(this._triggers[e]){const n=this.trigger(t,e,"void",a);n&&i.push(n)}}),i.length)return this._engine.markElementAsRemoved(this.id,t,!0,e),n&&Gy(i).onDone(()=>this._engine.processLeaveNode(t)),!0}return!1}prepareLeaveAnimationListeners(t){const e=this._elementListeners.get(t);if(e){const n=new Set;e.forEach(e=>{const a=e.name;if(n.has(a))return;n.add(a);const r=this._triggers[a].fallbackTransition,i=this._engine.statesByElement.get(t)[a]||dx,s=new ux("void"),o=new fx(this.id,a,t);this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:a,transition:r,fromState:i,toState:s,player:o,isFallbackTransition:!0})})}}removeNode(t,e){const n=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e,!0),this.triggerLeaveAnimation(t,e,!0))return;let a=!1;if(n.totalAnimations){const e=n.players.length?n.playersByQueriedElement.get(t):[];if(e&&e.length)a=!0;else{let e=t;for(;e=e.parentNode;)if(n.statesByElement.get(e)){a=!0;break}}}this.prepareLeaveAnimationListeners(t),a?n.markElementAsRemoved(this.id,t,!1,e):(n.afterFlush(()=>this.clearElementCache(t)),n.destroyInnerAnimations(t),n._onRemovalComplete(t,e))}insertNode(t,e){mx(t,this._hostClassName)}drainQueuedTransitions(t){const e=[];return this._queue.forEach(n=>{const a=n.player;if(a.destroyed)return;const r=n.element,i=this._elementListeners.get(r);i&&i.forEach(e=>{if(e.name==n.triggerName){const a=Yy(r,n.triggerName,n.fromState.value,n.toState.value);a._data=t,zy(n.player,e.phase,a,e.callback)}}),a.markedForDestroy?this._engine.afterFlush(()=>{a.destroy()}):e.push(n)}),this._queue=[],e.sort((t,e)=>{const n=t.transition.ast.depCount,a=e.transition.ast.depCount;return 0==n||0==a?n-a:this._engine.driver.containsElement(t.element,e.element)?1:-1})}destroy(t){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,t)}elementContainsData(t){let e=!1;return this._elementListeners.has(t)&&(e=!0),e=!!this._queue.find(e=>e.element===t)||e,e}}class cx{constructor(t,e,n){this.bodyNode=t,this.driver=e,this._normalizer=n,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=(t,e)=>{}}_onRemovalComplete(t,e){this.onRemovalComplete(t,e)}get queuedPlayers(){const t=[];return this._namespaceList.forEach(e=>{e.players.forEach(e=>{e.queued&&t.push(e)})}),t}createNamespace(t,e){const n=new lx(t,e,this);return e.parentNode?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[t]=n}_balanceNamespaceList(t,e){const n=this._namespaceList.length-1;if(n>=0){let a=!1;for(let r=n;r>=0;r--)if(this.driver.containsElement(this._namespaceList[r].hostElement,e)){this._namespaceList.splice(r+1,0,t),a=!0;break}a||this._namespaceList.splice(0,0,t)}else this._namespaceList.push(t);return this.namespacesByHostElement.set(e,t),t}register(t,e){let n=this._namespaceLookup[t];return n||(n=this.createNamespace(t,e)),n}registerTrigger(t,e,n){let a=this._namespaceLookup[t];a&&a.register(e,n)&&this.totalAnimations++}destroy(t,e){if(!t)return;const n=this._fetchNamespace(t);this.afterFlush(()=>{this.namespacesByHostElement.delete(n.hostElement),delete this._namespaceLookup[t];const e=this._namespaceList.indexOf(n);e>=0&&this._namespaceList.splice(e,1)}),this.afterFlushAnimationsDone(()=>n.destroy(e))}_fetchNamespace(t){return this._namespaceLookup[t]}fetchNamespacesByElement(t){const e=new Set,n=this.statesByElement.get(t);if(n){const t=Object.keys(n);for(let a=0;a<t.length;a++){const r=n[t[a]].namespaceId;if(r){const t=this._fetchNamespace(r);t&&e.add(t)}}}return e}trigger(t,e,n,a){if(hx(e)){const r=this._fetchNamespace(t);if(r)return r.trigger(e,n,a),!0}return!1}insertNode(t,e,n,a){if(!hx(e))return;const r=e.__ng_removed;if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const t=this.collectedLeaveElements.indexOf(e);t>=0&&this.collectedLeaveElements.splice(t,1)}if(t){const a=this._fetchNamespace(t);a&&a.insertNode(e,n)}a&&this.collectEnterElement(e)}collectEnterElement(t){this.collectedEnterElements.push(t)}markElementAsDisabled(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),mx(t,"ng-animate-disabled")):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),yx(t,"ng-animate-disabled"))}removeNode(t,e,n,a){if(hx(e)){const r=t?this._fetchNamespace(t):null;if(r?r.removeNode(e,a):this.markElementAsRemoved(t,e,!1,a),n){const n=this.namespacesByHostElement.get(e);n&&n.id!==t&&n.removeNode(e,a)}}else this._onRemovalComplete(e,a)}markElementAsRemoved(t,e,n,a){this.collectedLeaveElements.push(e),e.__ng_removed={namespaceId:t,setForRemoval:a,hasAnimation:n,removedBeforeQueried:!1}}listen(t,e,n,a,r){return hx(e)?this._fetchNamespace(t).listen(e,n,a,r):()=>{}}_buildInstruction(t,e,n,a,r){return t.transition.build(this.driver,t.element,t.fromState.value,t.toState.value,n,a,t.fromState.options,t.toState.options,e,r)}destroyInnerAnimations(t){let e=this.driver.query(t,".ng-trigger",!0);e.forEach(t=>this.destroyActiveAnimationsForElement(t)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(t,".ng-animating",!0),e.forEach(t=>this.finishActiveQueriedAnimationOnElement(t)))}destroyActiveAnimationsForElement(t){const e=this.playersByElement.get(t);e&&e.forEach(t=>{t.queued?t.markedForDestroy=!0:t.destroy()})}finishActiveQueriedAnimationOnElement(t){const e=this.playersByQueriedElement.get(t);e&&e.forEach(t=>t.finish())}whenRenderingDone(){return new Promise(t=>{if(this.players.length)return Gy(this.players).onDone(()=>t());t()})}processLeaveNode(t){const e=t.__ng_removed;if(e&&e.setForRemoval){if(t.__ng_removed=sx,e.namespaceId){this.destroyInnerAnimations(t);const n=this._fetchNamespace(e.namespaceId);n&&n.clearElementCache(t)}this._onRemovalComplete(t,e.setForRemoval)}this.driver.matchesElement(t,".ng-animate-disabled")&&this.markElementAsDisabled(t,!1),this.driver.query(t,".ng-animate-disabled",!0).forEach(t=>{this.markElementAsDisabled(t,!1)})}flush(t=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((t,e)=>this._balanceNamespaceList(t,e)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let n=0;n<this.collectedEnterElements.length;n++)mx(this.collectedEnterElements[n],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){const n=[];try{e=this._flushAnimations(n,t)}finally{for(let t=0;t<n.length;t++)n[t]()}}else for(let n=0;n<this.collectedLeaveElements.length;n++)this.processLeaveNode(this.collectedLeaveElements[n]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(t=>t()),this._flushFns=[],this._whenQuietFns.length){const t=this._whenQuietFns;this._whenQuietFns=[],e.length?Gy(e).onDone(()=>{t.forEach(t=>t())}):t.forEach(t=>t())}}reportError(t){throw new Error(`Unable to process animations due to the following failed trigger transitions\n ${t.join("\n")}`)}_flushAnimations(t,e){const n=new jv,a=[],r=new Map,i=[],s=new Map,o=new Map,u=new Map,d=new Set;this.disabledNodes.forEach(t=>{d.add(t);const e=this.driver.query(t,".ng-animate-queued",!0);for(let n=0;n<e.length;n++)d.add(e[n])});const l=this.bodyNode,c=Array.from(this.statesByElement.keys()),f=bx(c,this.collectedEnterElements),h=new Map;let g=0;f.forEach((t,e)=>{const n="ng-enter"+g++;h.set(e,n),t.forEach(t=>mx(t,n))});const p=[],b=new Set,m=new Set;for(let A=0;A<this.collectedLeaveElements.length;A++){const t=this.collectedLeaveElements[A],e=t.__ng_removed;e&&e.setForRemoval&&(p.push(t),b.add(t),e.hasAnimation?this.driver.query(t,".ng-star-inserted",!0).forEach(t=>b.add(t)):m.add(t))}const y=new Map,v=bx(c,Array.from(b));v.forEach((t,e)=>{const n="ng-leave"+g++;y.set(e,n),t.forEach(t=>mx(t,n))}),t.push(()=>{f.forEach((t,e)=>{const n=h.get(e);t.forEach(t=>yx(t,n))}),v.forEach((t,e)=>{const n=y.get(e);t.forEach(t=>yx(t,n))}),p.forEach(t=>{this.processLeaveNode(t)})});const x=[],_=[];for(let A=this._namespaceList.length-1;A>=0;A--)this._namespaceList[A].drainQueuedTransitions(e).forEach(t=>{const e=t.player,r=t.element;if(x.push(e),this.collectedEnterElements.length){const t=r.__ng_removed;if(t&&t.setForMove)return void e.destroy()}const d=!l||!this.driver.containsElement(l,r),c=y.get(r),f=h.get(r),g=this._buildInstruction(t,n,f,c,d);if(!g.errors||!g.errors.length)return d?(e.onStart(()=>gv(r,g.fromStyles)),e.onDestroy(()=>hv(r,g.toStyles)),void a.push(e)):t.isFallbackTransition?(e.onStart(()=>gv(r,g.fromStyles)),e.onDestroy(()=>hv(r,g.toStyles)),void a.push(e)):(g.timelines.forEach(t=>t.stretchStartingKeyframe=!0),n.append(r,g.timelines),i.push({instruction:g,player:e,element:r}),g.queriedElements.forEach(t=>Hy(s,t,[]).push(e)),g.preStyleProps.forEach((t,e)=>{const n=Object.keys(t);if(n.length){let t=o.get(e);t||o.set(e,t=new Set),n.forEach(e=>t.add(e))}}),void g.postStyleProps.forEach((t,e)=>{const n=Object.keys(t);let a=u.get(e);a||u.set(e,a=new Set),n.forEach(t=>a.add(t))}));_.push(g)});if(_.length){const t=[];_.forEach(e=>{t.push(`@${e.triggerName} has failed due to:\n`),e.errors.forEach(e=>t.push(`- ${e}\n`))}),x.forEach(t=>t.destroy()),this.reportError(t)}const T=new Map,O=new Map;i.forEach(t=>{const e=t.element;n.has(e)&&(O.set(e,e),this._beforeAnimationBuild(t.player.namespaceId,t.instruction,T))}),a.forEach(t=>{const e=t.element;this._getPreviousPlayers(e,!1,t.namespaceId,t.triggerName,null).forEach(t=>{Hy(T,e,[]).push(t),t.destroy()})});const w=p.filter(t=>xx(t,o,u)),S=new Map;px(S,this.driver,m,u,K.a).forEach(t=>{xx(t,o,u)&&w.push(t)});const I=new Map;f.forEach((t,e)=>{px(I,this.driver,new Set(t),o,K.l)}),w.forEach(t=>{const e=S.get(t),n=I.get(t);S.set(t,Object.assign({},e,n))});const N=[],C=[],R={};i.forEach(t=>{const{element:e,player:i,instruction:s}=t;if(n.has(e)){if(d.has(e))return i.onDestroy(()=>hv(e,s.toStyles)),i.disabled=!0,i.overrideTotalTime(s.totalTime),void a.push(i);let t=R;if(O.size>1){let n=e;const a=[];for(;n=n.parentNode;){const e=O.get(n);if(e){t=e;break}a.push(n)}a.forEach(e=>O.set(e,t))}const n=this._buildAnimation(i.namespaceId,s,T,r,I,S);if(i.setRealPlayer(n),t===R)N.push(i);else{const e=this.playersByElement.get(t);e&&e.length&&(i.parentPlayer=Gy(e)),a.push(i)}}else gv(e,s.fromStyles),i.onDestroy(()=>hv(e,s.toStyles)),C.push(i),d.has(e)&&a.push(i)}),C.forEach(t=>{const e=r.get(t.element);if(e&&e.length){const n=Gy(e);t.setRealPlayer(n)}}),a.forEach(t=>{t.parentPlayer?t.syncPlayerEvents(t.parentPlayer):t.destroy()});for(let A=0;A<p.length;A++){const t=p[A],e=t.__ng_removed;if(yx(t,"ng-leave"),e&&e.hasAnimation)continue;let n=[];if(s.size){let e=s.get(t);e&&e.length&&n.push(...e);let a=this.driver.query(t,".ng-animating",!0);for(let t=0;t<a.length;t++){let e=s.get(a[t]);e&&e.length&&n.push(...e)}}const a=n.filter(t=>!t.destroyed);a.length?vx(this,t,a):this.processLeaveNode(t)}return p.length=0,N.forEach(t=>{this.players.push(t),t.onDone(()=>{t.destroy();const e=this.players.indexOf(t);this.players.splice(e,1)}),t.play()}),N}elementContainsData(t,e){let n=!1;const a=e.__ng_removed;return a&&a.setForRemoval&&(n=!0),this.playersByElement.has(e)&&(n=!0),this.playersByQueriedElement.has(e)&&(n=!0),this.statesByElement.has(e)&&(n=!0),this._fetchNamespace(t).elementContainsData(e)||n}afterFlush(t){this._flushFns.push(t)}afterFlushAnimationsDone(t){this._whenQuietFns.push(t)}_getPreviousPlayers(t,e,n,a,r){let i=[];if(e){const e=this.playersByQueriedElement.get(t);e&&(i=e)}else{const e=this.playersByElement.get(t);if(e){const t=!r||"void"==r;e.forEach(e=>{e.queued||(t||e.triggerName==a)&&i.push(e)})}}return(n||a)&&(i=i.filter(t=>!(n&&n!=t.namespaceId||a&&a!=t.triggerName))),i}_beforeAnimationBuild(t,e,n){const a=e.element,r=e.isRemovalTransition?void 0:t,i=e.isRemovalTransition?void 0:e.triggerName;for(const s of e.timelines){const t=s.element,o=t!==a,u=Hy(n,t,[]);this._getPreviousPlayers(t,o,r,i,e.toState).forEach(t=>{const e=t.getRealPlayer();e.beforeDestroy&&e.beforeDestroy(),t.destroy(),u.push(t)})}gv(a,e.fromStyles)}_buildAnimation(t,e,n,a,r,i){const s=e.triggerName,o=e.element,u=[],d=new Set,l=new Set,c=e.timelines.map(e=>{const c=e.element;d.add(c);const f=c.__ng_removed;if(f&&f.removedBeforeQueried)return new K.d(e.duration,e.delay);const h=c!==o,g=function(t){const e=[];return function t(e,n){for(let a=0;a<e.length;a++){const r=e[a];r instanceof K.k?t(r.players,n):n.push(r)}}(t,e),e}((n.get(c)||ix).map(t=>t.getRealPlayer())).filter(t=>!!t.element&&t.element===c),p=r.get(c),b=i.get(c),m=Vy(0,this._normalizer,0,e.keyframes,p,b),y=this._buildPlayer(e,m,g);if(e.subTimeline&&a&&l.add(c),h){const e=new fx(t,s,c);e.setRealPlayer(y),u.push(e)}return y});u.forEach(t=>{Hy(this.playersByQueriedElement,t.element,[]).push(t),t.onDone(()=>function(t,e,n){let a;if(t instanceof Map){if(a=t.get(e),a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&t.delete(e)}}else if(a=t[e],a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&delete t[e]}return a}(this.playersByQueriedElement,t.element,t))}),d.forEach(t=>mx(t,"ng-animating"));const f=Gy(c);return f.onDestroy(()=>{d.forEach(t=>yx(t,"ng-animating")),hv(o,e.toStyles)}),l.forEach(t=>{Hy(a,t,[]).push(f)}),f}_buildPlayer(t,e,n){return e.length>0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,n):new K.d(t.duration,t.delay)}}class fx{constructor(t,e,n){this.namespaceId=t,this.triggerName=e,this.element=n,this._player=new K.d,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(t){this._containsRealPlayer||(this._player=t,Object.keys(this._queuedCallbacks).forEach(e=>{this._queuedCallbacks[e].forEach(n=>zy(t,e,void 0,n))}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(t){this.totalTime=t}syncPlayerEvents(t){const e=this._player;e.triggerCallback&&t.onStart(()=>e.triggerCallback("start")),t.onDone(()=>this.finish()),t.onDestroy(()=>this.destroy())}_queueEvent(t,e){Hy(this._queuedCallbacks,t,[]).push(e)}onDone(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)}onStart(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)}onDestroy(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)}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(t){this.queued||this._player.setPosition(t)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(t){const e=this._player;e.triggerCallback&&e.triggerCallback(t)}}function hx(t){return t&&1===t.nodeType}function gx(t,e){const n=t.style.display;return t.style.display=null!=e?e:"none",n}function px(t,e,n,a,r){const i=[];n.forEach(t=>i.push(gx(t)));const s=[];a.forEach((n,a)=>{const i={};n.forEach(t=>{const n=i[t]=e.computeStyle(a,t,r);n&&0!=n.length||(a.__ng_removed=ox,s.push(a))}),t.set(a,i)});let o=0;return n.forEach(t=>gx(t,i[o++])),s}function bx(t,e){const n=new Map;if(t.forEach(t=>n.set(t,[])),0==e.length)return n;const a=new Set(e),r=new Map;return e.forEach(t=>{const e=function t(e){if(!e)return 1;let i=r.get(e);if(i)return i;const s=e.parentNode;return i=n.has(s)?s:a.has(s)?1:t(s),r.set(e,i),i}(t);1!==e&&n.get(e).push(t)}),n}function mx(t,e){if(t.classList)t.classList.add(e);else{let n=t.$$classes;n||(n=t.$$classes={}),n[e]=!0}}function yx(t,e){if(t.classList)t.classList.remove(e);else{let n=t.$$classes;n&&delete n[e]}}function vx(t,e,n){Gy(n).onDone(()=>t.processLeaveNode(e))}function xx(t,e,n){const a=n.get(t);if(!a)return!1;let r=e.get(t);return r?a.forEach(t=>r.add(t)):e.set(t,a),n.delete(t),!0}class _x{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._triggerCache={},this.onRemovalComplete=(t,e)=>{},this._transitionEngine=new cx(t,e,n),this._timelineEngine=new rx(t,e,n),this._transitionEngine.onRemovalComplete=(t,e)=>this.onRemovalComplete(t,e)}registerTrigger(t,e,n,a,r){const i=t+"-"+a;let s=this._triggerCache[i];if(!s){const t=[],e=kv(this._driver,r,t);if(t.length)throw new Error(`The animation trigger "${a}" has failed to build due to the following errors:\n - ${t.join("\n - ")}`);s=function(t,e){return new ex(t,e)}(a,e),this._triggerCache[i]=s}this._transitionEngine.registerTrigger(e,a,s)}register(t,e){this._transitionEngine.register(t,e)}destroy(t,e){this._transitionEngine.destroy(t,e)}onInsert(t,e,n,a){this._transitionEngine.insertNode(t,e,n,a)}onRemove(t,e,n,a){this._transitionEngine.removeNode(t,e,a||!1,n)}disableAnimations(t,e){this._transitionEngine.markElementAsDisabled(t,e)}process(t,e,n,a){if("@"==n.charAt(0)){const[t,r]=Uy(n);this._timelineEngine.command(t,e,r,a)}else this._transitionEngine.trigger(t,e,n,a)}listen(t,e,n,a,r){if("@"==n.charAt(0)){const[t,a]=Uy(n);return this._timelineEngine.listen(t,e,a,r)}return this._transitionEngine.listen(t,e,n,a,r)}flush(t=-1){this._transitionEngine.flush(t)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}function Tx(t,e){let n=null,a=null;return Array.isArray(e)&&e.length?(n=wx(e[0]),e.length>1&&(a=wx(e[e.length-1]))):e&&(n=wx(e)),n||a?new Ox(t,n,a):null}let Ox=(()=>{class t{constructor(e,n,a){this._element=e,this._startStyles=n,this._endStyles=a,this._state=0;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r={}),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&hv(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(hv(this._element,this._initialStyles),this._endStyles&&(hv(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(gv(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(gv(this._element,this._endStyles),this._endStyles=null),hv(this._element,this._initialStyles),this._state=3)}}return t.initialStylesByElement=new WeakMap,t})();function wx(t){let e=null;const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];Sx(r)&&(e=e||{},e[r]=t[r])}return e}function Sx(t){return"display"===t||"position"===t}class Ix{constructor(t,e,n,a,r,i,s){this._element=t,this._name=e,this._duration=n,this._delay=a,this._easing=r,this._fillMode=i,this._onDoneFn=s,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=t=>this._handleCallback(t)}apply(){!function(t,e){const n=Ex(t,"").trim();n.length&&(function(t,e){let n=0;for(let a=0;a<t.length;a++)","===t.charAt(a)&&n++}(n),e=`${n}, ${e}`),kx(t,"",e)}(this._element,`${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`),Ax(this._element,this._eventFn,!1),this._startTime=Date.now()}pause(){Nx(this._element,this._name,"paused")}resume(){Nx(this._element,this._name,"running")}setPosition(t){const e=Cx(this._element,this._name);this._position=t*this._duration,kx(this._element,"Delay",`-${this._position}ms`,e)}getPosition(){return this._position}_handleCallback(t){const e=t._ngTestManualTimestamp||Date.now(),n=1e3*parseFloat(t.elapsedTime.toFixed(3));t.animationName==this._name&&Math.max(e-this._startTime,0)>=this._delay&&n>=this._duration&&this.finish()}finish(){this._finished||(this._finished=!0,this._onDoneFn(),Ax(this._element,this._eventFn,!0))}destroy(){this._destroyed||(this._destroyed=!0,this.finish(),function(t,e){const n=Ex(t,"").split(","),a=Rx(n,e);a>=0&&(n.splice(a,1),kx(t,"",n.join(",")))}(this._element,this._name))}}function Nx(t,e,n){kx(t,"PlayState",n,Cx(t,e))}function Cx(t,e){const n=Ex(t,"");return n.indexOf(",")>0?Rx(n.split(","),e):Rx([n],e)}function Rx(t,e){for(let n=0;n<t.length;n++)if(t[n].indexOf(e)>=0)return n;return-1}function Ax(t,e,n){n?t.removeEventListener("animationend",e):t.addEventListener("animationend",e)}function kx(t,e,n,a){const r="animation"+e;if(null!=a){const e=t.style[r];if(e.length){const t=e.split(",");t[a]=n,n=t.join(",")}}t.style[r]=n}function Ex(t,e){return t.style["animation"+e]}class Lx{constructor(t,e,n,a,r,i,s,o){this.element=t,this.keyframes=e,this.animationName=n,this._duration=a,this._delay=r,this._finalStyles=s,this._specialStyles=o,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this.currentSnapshot={},this._state=0,this.easing=i||"linear",this.totalTime=a+r,this._buildStyler()}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}destroy(){this.init(),this._state>=4||(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}_flushDoneFns(){this._onDoneFns.forEach(t=>t()),this._onDoneFns=[]}_flushStartFns(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}finish(){this.init(),this._state>=3||(this._state=3,this._styler.finish(),this._flushStartFns(),this._specialStyles&&this._specialStyles.finish(),this._flushDoneFns())}setPosition(t){this._styler.setPosition(t)}getPosition(){return this._styler.getPosition()}hasStarted(){return this._state>=2}init(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())}play(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2,this._specialStyles&&this._specialStyles.start()),this._styler.resume()}pause(){this.init(),this._styler.pause()}restart(){this.reset(),this.play()}reset(){this._styler.destroy(),this._buildStyler(),this._styler.apply()}_buildStyler(){this._styler=new Ix(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",()=>this.finish())}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}beforeDestroy(){this.init();const t={};if(this.hasStarted()){const e=this._state>=3;Object.keys(this._finalStyles).forEach(n=>{"offset"!=n&&(t[n]=e?this._finalStyles[n]:Sv(this.element,n))})}this.currentSnapshot=t}}class Dx extends K.d{constructor(t,e){super(),this.element=t,this._startingStyles={},this.__initialized=!1,this._styles=av(e)}init(){!this.__initialized&&this._startingStyles&&(this.__initialized=!0,Object.keys(this._styles).forEach(t=>{this._startingStyles[t]=this.element.style[t]}),super.init())}play(){this._startingStyles&&(this.init(),Object.keys(this._styles).forEach(t=>this.element.style.setProperty(t,this._styles[t])),super.play())}destroy(){this._startingStyles&&(Object.keys(this._startingStyles).forEach(t=>{const e=this._startingStyles[t];e?this.element.style.setProperty(t,e):this.element.style.removeProperty(t)}),this._startingStyles=null,super.destroy())}}class Px{constructor(){this._count=0,this._head=document.querySelector("head"),this._warningIssued=!1}validateStyleProperty(t){return Xy(t)}matchesElement(t,e){return tv(t,e)}containsElement(t,e){return ev(t,e)}query(t,e,n){return nv(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}buildKeyframeElement(t,e,n){n=n.map(t=>av(t));let a=`@keyframes ${e} {\n`,r="";n.forEach(t=>{r=" ";const e=parseFloat(t.offset);a+=`${r}${100*e}% {\n`,r+=" ",Object.keys(t).forEach(e=>{const n=t[e];switch(e){case"offset":return;case"easing":return void(n&&(a+=`${r}animation-timing-function: ${n};\n`));default:return void(a+=`${r}${e}: ${n};\n`)}}),a+=`${r}}\n`}),a+="}\n";const i=document.createElement("style");return i.innerHTML=a,i}animate(t,e,n,a,r,i=[],s){s&&this._notifyFaultyScrubber();const o=i.filter(t=>t instanceof Lx),u={};Tv(n,a)&&o.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>u[t]=e[t])});const d=function(t){let e={};return t&&(Array.isArray(t)?t:[t]).forEach(t=>{Object.keys(t).forEach(n=>{"offset"!=n&&"easing"!=n&&(e[n]=t[n])})}),e}(e=Ov(t,e,u));if(0==n)return new Dx(t,d);const l=`gen_css_kf_${this._count++}`,c=this.buildKeyframeElement(t,l,e);document.querySelector("head").appendChild(c);const f=Tx(t,e),h=new Lx(t,e,l,n,a,r,d,f);return h.onDestroy(()=>{var t;(t=c).parentNode.removeChild(t)}),h}_notifyFaultyScrubber(){this._warningIssued||(console.warn("@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\n","  visit http://bit.ly/IWukam to learn more about using the web-animation-js polyfill."),this._warningIssued=!0)}}class Mx{constructor(t,e,n,a){this.element=t,this.keyframes=e,this.options=n,this._specialStyles=a,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.time=0,this.parentPlayer=null,this.currentSnapshot={},this._duration=n.duration,this._delay=n.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const t=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,t,this.options),this._finalKeyframe=t.length?t[t.length-1]:{},this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_triggerWebAnimation(t,e,n){return t.animate(e,n)}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(t=>t()),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}_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(t=>t()),this._onDestroyFns=[])}setPosition(t){this.domPlayer.currentTime=t*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const t={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(e=>{"offset"!=e&&(t[e]=this._finished?this._finalKeyframe[e]:Sv(this.element,e))}),this.currentSnapshot=t}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class qx{constructor(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(jx().toString()),this._cssKeyframesDriver=new Px}validateStyleProperty(t){return Xy(t)}matchesElement(t,e){return tv(t,e)}containsElement(t,e){return ev(t,e)}query(t,e,n){return nv(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}overrideWebAnimationsSupport(t){this._isNativeImpl=t}animate(t,e,n,a,r,i=[],s){if(!s&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(t,e,n,a,r,i);const o={duration:n,delay:a,fill:0==a?"both":"forwards"};r&&(o.easing=r);const u={},d=i.filter(t=>t instanceof Mx);Tv(n,a)&&d.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>u[t]=e[t])});const l=Tx(t,e=Ov(t,e=e.map(t=>lv(t,!1)),u));return new Mx(t,e,o,l)}}function jx(){return"undefined"!=typeof window&&void 0!==window.document&&Element.prototype.animate||{}}class Fx extends K.b{constructor(t,e){super(),this._nextAnimationId=0,this._renderer=t.createRenderer(e.body,{id:"0",encapsulation:s.ViewEncapsulation.None,styles:[],data:{animation:[]}})}build(t){const e=this._nextAnimationId.toString();this._nextAnimationId++;const n=Array.isArray(t)?Object(K.f)(t):t;return zx(this._renderer,null,e,"register",[n]),new Gx(e,this._renderer)}}class Gx extends K.c{constructor(t,e){super(),this._id=t,this._renderer=e}create(t,e){return new Vx(this._id,t,e||{},this._renderer)}}class Vx{constructor(t,e,n,a){this.id=t,this.element=e,this._renderer=a,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",n)}_listen(t,e){return this._renderer.listen(this.element,`@@${this.id}:${t}`,e)}_command(t,...e){return zx(this._renderer,this.element,this.id,t,e)}onDone(t){this._listen("done",t)}onStart(t){this._listen("start",t)}onDestroy(t){this._listen("destroy",t)}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")}setPosition(t){this._command("setPosition",t)}getPosition(){return 0}}function zx(t,e,n,a,r){return t.setProperty(e,`@@${n}:${a}`,r)}class Bx{constructor(t,e,n){this.delegate=t,this.engine=e,this._zone=n,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),e.onRemovalComplete=(t,e)=>{e&&e.parentNode(t)&&e.removeChild(t.parentNode,t)}}createRenderer(t,e){const n=this.delegate.createRenderer(t,e);if(!(t&&e&&e.data&&e.data.animation)){let t=this._rendererCache.get(n);return t||(t=new Yx("",n,this.engine),this._rendererCache.set(n,t)),t}const a=e.id,r=e.id+"-"+this._currentId;return this._currentId++,this.engine.register(r,t),e.data.animation.forEach(e=>this.engine.registerTrigger(a,r,t,e.name,e)),new Hx(this,r,n,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(t,e,n){t>=0&&t<this._microtaskId?this._zone.run(()=>e(n)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(t=>{const[e,n]=t;e(n)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([e,n]))}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()}}class Yx{constructor(t,e,n){this.namespaceId=t,this.delegate=e,this.engine=n,this.destroyNode=this.delegate.destroyNode?t=>e.destroyNode(t):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()}createElement(t,e){return this.delegate.createElement(t,e)}createComment(t){return this.delegate.createComment(t)}createText(t){return this.delegate.createText(t)}appendChild(t,e){this.delegate.appendChild(t,e),this.engine.onInsert(this.namespaceId,e,t,!1)}insertBefore(t,e,n){this.delegate.insertBefore(t,e,n),this.engine.onInsert(this.namespaceId,e,t,!0)}removeChild(t,e,n){this.engine.onRemove(this.namespaceId,e,this.delegate,n)}selectRootElement(t,e){return this.delegate.selectRootElement(t,e)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setAttribute(t,e,n,a){this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){this.delegate.removeAttribute(t,e,n)}addClass(t,e){this.delegate.addClass(t,e)}removeClass(t,e){this.delegate.removeClass(t,e)}setStyle(t,e,n,a){this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){"@"==e.charAt(0)&&"@.disabled"==e?this.disableAnimations(t,!!n):this.delegate.setProperty(t,e,n)}setValue(t,e){this.delegate.setValue(t,e)}listen(t,e,n){return this.delegate.listen(t,e,n)}disableAnimations(t,e){this.engine.disableAnimations(t,e)}}class Hx extends Yx{constructor(t,e,n,a){super(e,n,a),this.factory=t,this.namespaceId=e}setProperty(t,e,n){"@"==e.charAt(0)?"."==e.charAt(1)&&"@.disabled"==e?this.disableAnimations(t,n=void 0===n||!!n):this.engine.process(this.namespaceId,t,e.substr(1),n):this.delegate.setProperty(t,e,n)}listen(t,e,n){if("@"==e.charAt(0)){const a=function(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(t);let r=e.substr(1),i="";return"@"!=r.charAt(0)&&([r,i]=function(t){const e=t.indexOf(".");return[t.substring(0,e),t.substr(e+1)]}(r)),this.engine.listen(this.namespaceId,a,r,i,t=>{this.factory.scheduleListenerCallback(t._data||-1,n,t)})}return this.delegate.listen(t,e,n)}}class Ux extends _x{constructor(t,e,n){super(t.body,e,n)}}function Wx(){return"function"==typeof jx()?new qx:new Px}function Kx(){return new $v}function $x(t,e,n){return new Bx(t,e,n)}const Zx=new s.InjectionToken("AnimationModuleType");class Jx{}var Qx=n("Avrn");let Xx=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(){return!(this.authStorageService.isLoggedIn()&&!this.authStorageService.isSSO()&&this.authStorageService.getPwdUpdateRequired()&&(this.router.navigate(["/login-change-password"]),1))}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](qt.m),s["ɵɵinject"](xt.a))},token:t,providedIn:"root"}),t})();var t_=n("Vhfg");let e_=(()=>{class t{constructor(t,e){this.http=t,this.router=e}canActivate(t){return this.doCheck(t)}canActivateChild(t){return this.doCheck(t)}doCheck(e){if(e.url.length>0&&t.WHITELIST.includes(e.url[0].path))return Object(On.a)(!0);const n=e.data.moduleStatusGuardConfig;return this.http.get(`api/${n.apiPath}/status`).pipe(Object(Oe.a)(t=>(t.available||this.router.navigate([n.redirectTo,t.message||""]),t.available)),Object(qy.a)(()=>(this.router.navigate([n.redirectTo]),Object(On.a)(!1))))}}return t.WHITELIST=["501"],t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](qt.m))},token:t,providedIn:"root"}),t})(),n_=(()=>{class t{constructor(t,e){this.authStorageService=t,this.router=e}canActivate(){return!this.authStorageService.isSSO()||(this.router.navigate(["404"]),!1)}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](xt.a),s["ɵɵinject"](qt.m))},token:t,providedIn:"root"}),t})();class a_ extends qn{resolve(t){const e=[],n=t.queryParams.fromLink||null;let a="";switch(n){case"/monitor":a="Monitors";break;case"/hosts":a="Hosts"}return e.push({text:"Cluster",path:null}),e.push({text:a,path:n}),e.push({text:"Performance Counters",path:""}),e}}class r_ extends qn{resolve(t){const e=t.params.name;return[{text:`${J.startCase(e)}/Edit`,path:e}]}}const i_={breadcrumbs:"Cluster/Hosts"},s_={breadcrumbs:At.a.CREATE},o_={breadcrumbs:"Cluster/Monitors"},u_={breadcrumbs:"Cluster/Services"},d_={breadcrumbs:"Cluster/Inventory"},l_={breadcrumbs:"Cluster/OSDs"},c_={breadcrumbs:At.a.CREATE},f_={breadcrumbs:"Cluster/Configuration"},h_={breadcrumbs:At.a.EDIT},g_={breadcrumbs:"Cluster/CRUSH map"},p_={breadcrumbs:"Cluster/Logs"},b_={breadcrumbs:"Telemetry configuration"},m_={breadcrumbs:"Cluster/Monitoring"},y_={breadcrumbs:`${At.a.CREATE} Silence`},v_={breadcrumbs:At.a.CREATE},x_={breadcrumbs:At.a.EDIT},__={breadcrumbs:At.a.RECREATE},T_={breadcrumbs:a_},O_={breadcrumbs:"Cluster/Manager modules"},w_={breadcrumbs:r_},S_={breadcrumbs:"Pools"},I_=()=>Promise.all([n.e(2),n.e(1),n.e(7)]).then(n.bind(null,"nOaW")).then(t=>t.RoutedPoolModuleNgFactory),N_={breadcrumbs:!0,text:"Block",path:null},C_=()=>Promise.all([n.e(2),n.e(6)]).then(n.bind(null,"J6Oi")).then(t=>t.RoutedBlockModuleNgFactory),R_={breadcrumbs:"Filesystems"},A_={moduleStatusGuardConfig:{apiPath:"rgw",redirectTo:"rgw/501"},breadcrumbs:!0,text:"Object Gateway",path:null},k_=()=>n.e(8).then(n.bind(null,"Znkk")).then(t=>t.RoutedRgwModuleNgFactory),E_={breadcrumbs:"User management",path:null},L_=()=>Promise.all([n.e(1),n.e(9)]).then(n.bind(null,"DY6s")).then(t=>t.RoutedAuthModuleNgFactory),D_={breadcrumbs:"User profile",path:null},P_={breadcrumbs:At.a.EDIT},M_={breadcrumbs:"NFS"},q_={moduleStatusGuardConfig:{apiPath:"nfs-ganesha",redirectTo:"nfs/501"},breadcrumbs:"NFS"},j_={breadcrumbs:At.a.CREATE},F_={breadcrumbs:At.a.EDIT};class G_{}var V_=n("yT6U"),z_=n("4DD9"),B_=n("IzCI"),Y_=n("Dwqy"),H_=n("uYzU"),U_=n("nSDx"),W_=n("SB+Q"),K_=n("BQkM"),$_=n("dEH0"),Z_=n("G1/K"),J_=n("TJUb"),Q_=n("efK2");class X_{constructor(){this.closeOthers=!1,this.isAnimated=!1}}class tT{static forRoot(){return{ngModule:tT,providers:[X_]}}}let eT=(()=>{class t{constructor(t){this.http=t}jsError(t,e,n){return this.http.post("ui-api/logging/js-error",{url:t,message:e,stack:n})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:we.a}),t})();class nT{constructor(t){this.injector=t}handleError(t){const e=this.injector.get(eT),n=window.location.href;throw e.jsError(n,t&&t.message,t&&t.stack).subscribe(),t}}var aT=n("aHM3"),rT=n("9Xeq"),iT=n("yGOH"),sT=n("bxSN"),oT=n("V/fk"),uT=n("ChqD"),dT=n("PCNd"),lT=n("LceX");class cT{}class fT{}var hT=n("G6Q+");class gT{}var pT=n("kJI8");class bT{}class mT{}class yT{}class vT{}class xT{}var _T=function(){function t(t){if(t)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}return t.forRoot=function(e){return{ngModule:t,providers:[{provide:X.a,useClass:Py,multi:!0},e.jwtOptionsProvider||{provide:Ey,useValue:e.config},Ly]}},t}(),TT=s["ɵcmf"](d,[l],(function(t){return s["ɵmod"]([s["ɵmpd"](512,s.ComponentFactoryResolver,s["ɵCodegenComponentFactoryResolver"],[[8,[_,T.a,Qn,Ar,_s,Fs,Us,ao,ni,Xo,Iu,zu,od,Td,Al,Wl,xc,zc,Wc,af,Rf,fh,Nh,Eh,Uh,Pp,Gp,$p,ob,fb,mb,Tb,Nb,q,H,Cb.a,ne.a,Rb.a,Ab.a,Ab.b,kb.a,Eb.a,Lb.a,Db.a,Pb.a,Mb.a,Mb.c,Mb.b,Mb.d,Gb,nm,Co,dm,bm,Rm,Mm,ny,fy,vy,Oy,Ny,ky]],[3,s.ComponentFactoryResolver],s.NgModuleRef]),s["ɵmpd"](4608,X.j,X.p,[i.DOCUMENT,s.PLATFORM_ID,X.n]),s["ɵmpd"](4608,X.q,X.q,[X.j,X.o]),s["ɵmpd"](4608,Ly,Ly,[Ey]),s["ɵmpd"](4608,xt.a,xt.a,[]),s["ɵmpd"](5120,X.a,(function(t,e,n,a,r,i){return[t,new Py(e,n),new jy(a,r,i)]}),[X.q,Ey,Ly,qt.m,xt.a,gt.a]),s["ɵmpd"](4608,X.m,X.m,[]),s["ɵmpd"](6144,X.k,null,[X.m]),s["ɵmpd"](4608,X.i,X.i,[X.k]),s["ɵmpd"](6144,X.b,null,[X.i]),s["ɵmpd"](4608,X.g,X.l,[X.b,s.Injector]),s["ɵmpd"](4608,X.c,X.c,[X.g]),s["ɵmpd"](4352,s.LOCALE_ID,"en-US",[]),s["ɵmpd"](4608,i.NgLocalization,i.NgLocaleLocalization,[s.LOCALE_ID,[2,i["ɵangular_packages_common_common_a"]]]),s["ɵmpd"](5120,s["ɵangular_packages_core_core_ba"],s["ɵangular_packages_core_core_r"],[s.NgZone]),s["ɵmpd"](5120,s.APP_ID,s["ɵangular_packages_core_core_f"],[]),s["ɵmpd"](5120,s.IterableDiffers,s["ɵangular_packages_core_core_n"],[]),s["ɵmpd"](5120,s.KeyValueDiffers,s["ɵangular_packages_core_core_o"],[]),s["ɵmpd"](4608,Lr.b,Lr.k,[i.DOCUMENT]),s["ɵmpd"](6144,s.Sanitizer,null,[Lr.b]),s["ɵmpd"](4608,Lr.e,Lr.g,[]),s["ɵmpd"](5120,Lr.c,(function(t,e,n,a,r,i,s,o){return[new Lr.i(t,e,n),new Lr.n(a),new Lr.m(r,i,s,o)]}),[i.DOCUMENT,s.NgZone,s.PLATFORM_ID,i.DOCUMENT,i.DOCUMENT,Lr.e,s["ɵConsole"],[2,Lr.f]]),s["ɵmpd"](4608,Lr.d,Lr.d,[Lr.c,s.NgZone]),s["ɵmpd"](135680,Lr.l,Lr.l,[i.DOCUMENT]),s["ɵmpd"](4608,Lr.j,Lr.j,[Lr.d,Lr.l,s.APP_ID]),s["ɵmpd"](5120,iv,Wx,[]),s["ɵmpd"](5120,Kv,Kx,[]),s["ɵmpd"](4608,_x,Ux,[i.DOCUMENT,iv,Kv]),s["ɵmpd"](5120,s.RendererFactory2,$x,[Lr.j,_x,s.NgZone]),s["ɵmpd"](6144,Lr.o,null,[Lr.l]),s["ɵmpd"](4608,s.Testability,s.Testability,[s.NgZone]),s["ɵmpd"](4608,K.b,Fx,[s.RendererFactory2,i.DOCUMENT]),s["ɵmpd"](5120,qt.a,qt.B,[qt.m]),s["ɵmpd"](4608,qt.g,qt.g,[]),s["ɵmpd"](6144,qt.h,null,[qt.g]),s["ɵmpd"](135680,qt.s,qt.s,[qt.m,s.NgModuleFactoryLoader,s.Compiler,s.Injector,qt.h]),s["ɵmpd"](4608,qt.f,qt.f,[]),s["ɵmpd"](5120,qt.G,qt.x,[qt.m,i.ViewportScroller,qt.i]),s["ɵmpd"](5120,qt.j,qt.E,[qt.C]),s["ɵmpd"](5120,s.APP_BOOTSTRAP_LISTENER,(function(t){return[t]}),[qt.j]),s["ɵmpd"](4608,r_,r_,[]),s["ɵmpd"](4608,a_,a_,[]),s["ɵmpd"](4608,$.D,$.D,[]),s["ɵmpd"](4608,$.h,$.h,[]),s["ɵmpd"](4608,V_.a,V_.a,[]),s["ɵmpd"](4608,z_.a,z_.a,[]),s["ɵmpd"](5120,s.TRANSLATIONS,u,[s.LOCALE_ID]),s["ɵmpd"](4608,_a.a,_a.a,[s.TRANSLATIONS_FORMAT,s.TRANSLATIONS,s.LOCALE_ID,[2,_a.b]]),s["ɵmpd"](4608,Nu.a,Nu.a,[_a.a]),s["ɵmpd"](4608,i.DatePipe,i.DatePipe,[s.LOCALE_ID]),s["ɵmpd"](4608,is.a,is.a,[]),s["ɵmpd"](4608,vt.a,vt.a,[]),s["ɵmpd"](4608,Ia.a,Ia.a,[]),s["ɵmpd"](4608,ga.a,ga.a,[Ia.a]),s["ɵmpd"](4608,B_.a,B_.a,[Ia.a]),s["ɵmpd"](4608,pa.a,pa.a,[Ia.a]),s["ɵmpd"](4608,Y_.a,Y_.a,[]),s["ɵmpd"](4608,H_.a,H_.a,[]),s["ɵmpd"](4608,ss.a,ss.a,[]),s["ɵmpd"](4608,gl.a,gl.a,[]),s["ɵmpd"](4608,be.a,be.a,[i.DatePipe]),s["ɵmpd"](4608,U_.a,U_.a,[]),s["ɵmpd"](4608,W_.a,W_.a,[]),s["ɵmpd"](4608,fg.a,fg.a,[]),s["ɵmpd"](4608,K_.a,K_.a,[]),s["ɵmpd"](4608,$_.a,$_.a,[]),s["ɵmpd"](4608,Z_.a,Z_.a,[_a.a]),s["ɵmpd"](4608,Cs.a,Cs.a,[]),s["ɵmpd"](4608,J_.a,J_.a,[]),s["ɵmpd"](4608,Q_.a,Q_.a,[]),s["ɵmpd"](4608,ae.b,ae.b,[]),s["ɵmpd"](4608,ea.a,ea.a,[]),s["ɵmpd"](4608,na.a,na.a,[s.NgZone,s.RendererFactory2,s.PLATFORM_ID]),s["ɵmpd"](4608,W.a,W.a,[s.ComponentFactoryResolver,s.NgZone,s.Injector,na.a,s.ApplicationRef]),s["ɵmpd"](4608,he.c,he.c,[]),s["ɵmpd"](4608,Hn.a,Hn.a,[]),s["ɵmpd"](4608,Lt.b,Lt.b,[s.RendererFactory2,W.a]),s["ɵmpd"](4608,rc.y,rc.y,[i.DOCUMENT]),s["ɵmpd"](4608,rc.r,rc.r,[]),s["ɵmpd"](4608,rc.a,rc.a,[]),s["ɵmpd"](4608,U.f,U.f,[]),s["ɵmpd"](4608,Qx.a,Qx.a,[qt.m,xt.a]),s["ɵmpd"](4608,ta.f,ta.f,[]),s["ɵmpd"](4608,rt.t,rt.t,[]),s["ɵmpd"](4608,rt.v,rt.v,[]),s["ɵmpd"](4608,rt.a,rt.a,[]),s["ɵmpd"](4608,rt.h,rt.h,[]),s["ɵmpd"](4608,rt.d,rt.d,[]),s["ɵmpd"](4608,rt.j,rt.j,[]),s["ɵmpd"](4608,rt.l,rt.l,[]),s["ɵmpd"](4608,rt.u,rt.u,[rt.v,rt.l]),s["ɵmpd"](5120,S,k,[A]),s["ɵmpd"](4608,C,C,[S]),s["ɵmpd"](4608,og,og,[]),s["ɵmpd"](4608,zd,zd,[]),s["ɵmpd"](4608,wd,wd,[]),s["ɵmpd"](4608,Hd,Hd,[]),s["ɵmpd"](4608,cd.a,cd.a,[]),s["ɵmpd"](4608,X_,X_,[]),s["ɵmpd"](4608,Z.g,Z.g,[Z.b]),s["ɵmpd"](1073742336,X.e,X.e,[]),s["ɵmpd"](1073742336,X.d,X.d,[]),s["ɵmpd"](1073742336,i.CommonModule,i.CommonModule,[]),s["ɵmpd"](512,s.ErrorHandler,nT,[s.Injector]),s["ɵmpd"](1024,s.NgProbeToken,(function(){return[qt.w()]}),[]),s["ɵmpd"](512,qt.C,qt.C,[s.Injector]),s["ɵmpd"](1024,s.APP_INITIALIZER,(function(t,e){return[Lr.p(t),qt.D(e)]}),[[2,s.NgProbeToken],qt.C]),s["ɵmpd"](512,s.ApplicationInitStatus,s.ApplicationInitStatus,[[2,s.APP_INITIALIZER]]),s["ɵmpd"](131584,s.ApplicationRef,s.ApplicationRef,[s.NgZone,s["ɵConsole"],s.Injector,s.ErrorHandler,s.ComponentFactoryResolver,s.ApplicationInitStatus]),s["ɵmpd"](1073742336,s.ApplicationModule,s.ApplicationModule,[s.ApplicationRef]),s["ɵmpd"](1073742336,Lr.a,Lr.a,[[3,Lr.a]]),s["ɵmpd"](1073742336,Jx,Jx,[]),s["ɵmpd"](1073742336,c.i,c.i,[]),s["ɵmpd"](1024,qt.v,qt.z,[[3,qt.m]]),s["ɵmpd"](512,qt.u,qt.c,[]),s["ɵmpd"](512,qt.b,qt.b,[]),s["ɵmpd"](256,qt.i,{useHash:!0,preloadingStrategy:qt.g},[]),s["ɵmpd"](1024,i.LocationStrategy,qt.y,[i.PlatformLocation,[2,i.APP_BASE_HREF],qt.i]),s["ɵmpd"](512,i.Location,i.Location,[i.LocationStrategy,i.PlatformLocation]),s["ɵmpd"](512,s.Compiler,s.Compiler,[]),s["ɵmpd"](512,s.NgModuleFactoryLoader,s.SystemJsNgModuleLoader,[s.Compiler,[2,s.SystemJsNgModuleLoaderConfig]]),s["ɵmpd"](1024,qt.k,(function(){return[[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"",component:Kn,canActivate:[Qx.a,Xx],canActivateChild:[Qx.a,Xx],children:[{path:"dashboard",component:wr},{path:"hosts",data:i_,children:[{path:"",component:cs},{path:"create",component:ks,data:s_}]},{path:"monitor",component:Vs,data:o_},{path:"services",component:Js,data:u_},{path:"inventory",component:Zr,data:d_},{path:"osd",data:l_,children:[{path:"",component:zo},{path:"create",component:pu,data:c_}]},{path:"configuration",data:f_,children:[{path:"",component:Pu},{path:"edit/:name",component:Yu,data:h_}]},{path:"crush-map",component:gd,data:g_},{path:"logs",component:bl,data:p_},{path:"telemetry",component:El,data:b_},{path:"monitoring",data:m_,children:[{path:"",component:lc},{path:"silence/create",component:wc,data:y_},{path:"silence/create/:id",component:wc,data:v_},{path:"silence/edit/:id",component:wc,data:x_},{path:"silence/recreate/:id",component:wc,data:__}]},{path:"perf_counters/:type/:id",component:Bc,data:T_},{path:"mgr-modules",data:O_,children:[{path:"",component:Xc},{path:"edit/:name",component:rf,data:w_}]},{path:"pool",data:S_,loadChildren:I_},{path:"block",data:N_,loadChildren:C_},{path:"cephfs",component:uh,canActivate:[t_.a],data:R_},{path:"rgw",canActivateChild:[t_.a,e_],data:A_,loadChildren:k_},{path:"user-management",data:E_,loadChildren:L_},{path:"user-profile",data:D_,children:[{path:"edit",component:ph,canActivate:[n_],data:P_}]},{path:"nfs/501/:message",component:Ch,data:M_},{path:"nfs",canActivateChild:[t_.a,e_],data:q_,children:[{path:"",component:Fh},{path:"create",component:Ig,data:j_},{path:"edit/:cluster_id/:export_id",component:Ig,data:F_}]}]},{path:"",component:Mp,children:[{path:"login",component:zp},{path:"login-change-password",component:Zp,canActivate:[n_]}]},{path:"",component:ub,children:[{path:"sso/404",component:hb},{path:"403",component:yb},{path:"404",component:Ob},{path:"**",redirectTo:"/404"}]}]]}),[]),s["ɵmpd"](1024,qt.m,qt.A,[s.ApplicationRef,qt.u,qt.b,i.Location,s.Injector,s.NgModuleFactoryLoader,s.Compiler,qt.k,qt.i,[2,qt.t],[2,qt.l]]),s["ɵmpd"](1073742336,qt.q,qt.q,[[2,qt.v],[2,qt.m]]),s["ɵmpd"](1073742336,G_,G_,[]),s["ɵmpd"](1073742336,E,E,[]),s["ɵmpd"](1073742336,aT.a,aT.a,[]),s["ɵmpd"](1073742336,$.C,$.C,[]),s["ɵmpd"](1073742336,$.n,$.n,[]),s["ɵmpd"](1073742336,ea.d,ea.d,[]),s["ɵmpd"](1073742336,$.y,$.y,[]),s["ɵmpd"](1073742336,rT.a,rT.a,[]),s["ɵmpd"](1073742336,ae.c,ae.c,[]),s["ɵmpd"](1073742336,he.d,he.d,[]),s["ɵmpd"](1073742336,Hn.d,Hn.d,[]),s["ɵmpd"](1073742336,ca.b,ca.b,[]),s["ɵmpd"](1073742336,Lt.e,Lt.e,[]),s["ɵmpd"](1073742336,iT.a,iT.a,[]),s["ɵmpd"](1073742336,U.e,U.e,[]),s["ɵmpd"](1073742336,Z.f,Z.f,[]),s["ɵmpd"](1073742336,sT.ClickOutsideModule,sT.ClickOutsideModule,[]),s["ɵmpd"](1073742336,ye.b,ye.b,[]),s["ɵmpd"](1073742336,oT.a,oT.a,[]),s["ɵmpd"](1073742336,rc.u,rc.u,[]),s["ɵmpd"](1073742336,uT.a,uT.a,[]),s["ɵmpd"](1073742336,we.a,we.a,[]),s["ɵmpd"](1073742336,dT.a,dT.a,[]),s["ɵmpd"](1073742336,ta.d,ta.d,[]),s["ɵmpd"](1073742336,rt.g,rt.g,[]),s["ɵmpd"](1073742336,lT.a,lT.a,[]),s["ɵmpd"](1073742336,te,te,[]),s["ɵmpd"](1073742336,cT,cT,[]),s["ɵmpd"](1073742336,fT,fT,[]),s["ɵmpd"](1073742336,hT.a,hT.a,[]),s["ɵmpd"](1073742336,gT,gT,[]),s["ɵmpd"](1073742336,dg,dg,[]),s["ɵmpd"](1073742336,Wd,Wd,[]),s["ɵmpd"](1073742336,hd.b,hd.b,[]),s["ɵmpd"](1073742336,pT.a,pT.a,[]),s["ɵmpd"](1073742336,bT,bT,[]),s["ɵmpd"](1073742336,mT,mT,[]),s["ɵmpd"](1073742336,yT,yT,[]),s["ɵmpd"](1073742336,vT,vT,[]),s["ɵmpd"](1073742336,xT,xT,[]),s["ɵmpd"](1073742336,tT,tT,[]),s["ɵmpd"](1073742336,_T,_T,[[3,_T]]),s["ɵmpd"](1073742336,d,d,[]),s["ɵmpd"](256,X.n,"XSRF-TOKEN",[]),s["ɵmpd"](256,X.o,"X-XSRF-TOKEN",[]),s["ɵmpd"](256,Ey,{tokenGetter:o},[]),s["ɵmpd"](256,s["ɵAPP_ROOT"],!0,[]),s["ɵmpd"](256,Zx,"BrowserAnimations",[]),s["ɵmpd"](256,s.TRANSLATIONS_FORMAT,"xlf",[]),s["ɵmpd"](256,U.a,{autoClose:!0,insideClick:!1},[]),s["ɵmpd"](256,A,{},[]),s["ɵmpd"](256,c.b,{default:c.a,config:{positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}},[]),s["ɵmpd"](1024,Z.b,(function(){return[[]]}),[]),s["ɵmpd"](256,Z.a,1,[])])}));i.registerLocaleData(r.a),Object(s.enableProdMode)(),Lr.h().bootstrapModuleFactory(TT).catch(t=>console.log(t))},zZ0H:function(t,e){t.exports=function(t){return t}},zavE:function(t,e,n){!function(t){"use strict";t.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},zk60:function(t,e,n){var a=n("2oRo"),r=n("kRJp");t.exports=function(t,e){try{r(a,t,e)}catch(n){a[t]=e}return e}},zoYe:function(t,e,n){var a=n("nmnc"),r=n("eUgh"),i=n("Z0cm"),s=n("/9aa"),o=a?a.prototype:void 0,u=o?o.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return r(e,t)+"";if(s(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}},zx6S:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))}},[[0,0]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.cb10cd7f4a550e7a33c5.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.cb10cd7f4a550e7a33c5.js
new file mode 100644 (file)
index 0000000..841919c
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"+0ag":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(t);return e?"dev"===e[2]?"master":e[1]:t}}},"+6XX":function(t,e,n){var a=n("y1pI");t.exports=function(t){return a(this.__data__,t)>-1}},"+K+b":function(t,e,n){var a=n("JHRd");t.exports=function(t){var e=new t.constructor(t.byteLength);return new a(e).set(new a(t)),e}},"+Qka":function(t,e,n){var a=n("fmRc"),r=n("t2Dn"),i=n("cq/+"),s=n("T1AV"),o=n("GoyQ"),u=n("mTTR"),l=n("itsj");t.exports=function t(e,n,d,c,f){e!==n&&i(n,(function(i,u){if(f||(f=new a),o(i))s(e,n,u,d,t,c,f);else{var h=c?c(l(e,u),i,u+"",e,n,f):void 0;void 0===h&&(h=i),r(e,u,h)}}),u)}},"+Wg/":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pt-BR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegação</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Painel de controle</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Serviços</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuração</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imagens</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Espelhamento</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuários</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimentos</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selecionar Idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Carregando dados do painel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Seletor de Horário do Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Redefinir Configurações</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Voltar</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Falha ao carregar dados.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selecionado(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrado(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrição</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrição extensa</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Padrão</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Padrão do daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salvar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizador de mapa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Carregando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo é obrigatório.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sim, desejo.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fechar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Desempenho Geral</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenhuma entrada encontrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros do Cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de Auditoria</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Carregando configuração...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Não foi possível carregar a configuração.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Editar módulo do gerenciador</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>O valor inserido não é um UUID válido. Ex.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>O valor inserido precisa ser um endereço IP válido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>O valor inserido precisa ser um número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>O valor inserido precisa ser um número ou decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Atualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID do Cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>época de monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon obrigatório</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>No Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Não está no Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Adicionar</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flags OSD de todo o Cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avançado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridade de Recuperação de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridade</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridade</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo é obrigatório!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>O valor precisa ser entre 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reponderar</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSDs</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Excluir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Saúde</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estatísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Qualquer cliente pode acessar</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Endereços</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obrigatório</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve conter um ou mais valores separados por vírgula</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por exemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de Acesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Executar Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Adicionar clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Não há clusters disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selecionar cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Adicionar daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de Armazenamento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Não há pools de dados disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selecionar backend de armazenamento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuário do Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Não há usuários disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selecionar usuário do gateway de objetos --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Não há clientes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selecionar cliente do cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome do CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Rótulo de Segurança</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar rótulo de segurança</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Caminho do CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>O caminho precisa começar com \'/\' e pode ser seguido de uma palavra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Novo diretório será criado</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Caminho</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>O caminho pode ser apenas uma \'/\' ou uma palavra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Novo compartimento será criado</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clientes não podem montar subdiretórios (ou seja, se Tag = foo, o cliente não poderá montar foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Tag, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Ao usar opções diferentes de Pseudo, o mesmo Caminho pode ser exportado várias vezes.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Não há tipos de acesso disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selecionar tipo de acesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Não há squashes disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de Transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bem-vindo ao Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome de usuário é obrigatório</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Senha é obrigatória</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>O usuário não existe no Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Proibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Você não tem permissão para ver o que está procurando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuração de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Remova o valor de configuração local. No lugar dele, o valor de configuração pai será herdado e usado.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>O valor mínimo é 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de Pools</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>O nome pode conter apenas caracteres alfanuméricos, traços e sublinhados.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>O nome do perfil de código de eliminação escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pacotes de dados (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve ser igual ou maior do que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pacotes de codificação (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve ser igual ou maior do que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidade (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localidade (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domínio de falha do Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localidade do Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nenhum</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamanho do pacote</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raiz do Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe do dispositivo do Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualquer</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Diretório</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>O nome do pool do Ceph escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selecionar tipo de pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Pelo menos um grupo de posicionamento é necessário!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Seu cluster não pode processar tantos PGs. Recalcule a quantidade de PG necessária.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ajuda no cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamanho replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sobregravações de EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicativos</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil do código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Não há perfis de código de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selecionar perfil do código de eliminação --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selecionar regra de crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regra de Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Etapas do Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compactação</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Não há algoritmos de compactação de eliminação disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ex. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>O valor deve ser maior do que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamanho máximo do blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ex. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>O valor deve ser maior do que o tamanho mínimo do blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Taxa</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Taxa de compactação</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>O valor deve ser entre 0.0 e 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ex. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalhes</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalhes de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalhes das Camadas do Cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover imagem para o lixo</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Vencimento da proteção em</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de data incorreto. Use "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>A proteção já venceu. Escolha uma data no futuro ou deixe-a vazia.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover Imagem</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Visão geral</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticação de Descoberta</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuário</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n              apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Senha</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuário Mútuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Senha Mútua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informações disponíveis:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool de Dados</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Criado</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamanho</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamanho do objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Pai</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefixo do nome do bloco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordem</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantâneos</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagem</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Esta configuração substitui o valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este é o valor global. Nenhum valor para esta opção foi definido para esta imagem.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' não são permitidos.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Não há pools de RBD disponíveis --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selecionar pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar pool de dados dedicado</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool de dados</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicado que armazena os dados de objetos do RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Você precisa aumentar o tamanho.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avançado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Distribuição</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidade de distribuição</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selecionar unidade de distribuição --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo é obrigatório porque o total de distribuições foi definido!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>A unidade de distribuição é maior do que o tamanho do objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Total de distribuições</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo é obrigatório porque a unidade de distribuição foi definida!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>O total de distribuições deve ser maior do que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Você está prestes a fazer rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Purgar Lixo</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tudo</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome do pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar Imagem</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digite o novo nome da imagem e clique em</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Novo Nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Venceu em</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protegido até</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Não costuma ser necessário mudar o valor padrão destes parâmetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Configurações</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Configurações Avançadas</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de Destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN tem padrão incorreto.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por exemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Mais informações</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tem configurações avançadas modificadas.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portais</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Adicionar portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagem tem configurações modificadas.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Adicionar imagem</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticação ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN do Cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>O IQN do Iniciador precisa ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Os nomes de usuário devem ter entre 8 e 64 caracteres e\n                        apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>O iniciador pertence a um grupo. As imagens serão configuradas no grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nenhum item adicionado.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Adicionar iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Adicionar grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Lixo</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de espelho do pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Clusters de peer devem ser removidos antes de desabilitar o espelho.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Adicionar} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome do Cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>O nome do cluster não é válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID do CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID do CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>O ID do CephX não é válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Endereços do Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Endereços delimitados por vírgula...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>O endereço de monitoria não é válido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chave do CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chave codificada com base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>A chave do CephX deve ser codificada com base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contadores de desempenho não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de Desempenho</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Carregando dados do compartimento...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>O valor não é válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>O nome escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietário</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selecionar usuário --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regra de posicionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versão</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versão master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Horário da modificação</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zonas</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cota do compartimento</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamanho máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Ilimitado</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome de usuário</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selecionar nome de usuário --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Gerar chave automaticamente</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chave de acesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Endereço de e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspenso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Máximo de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuários</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Recursos</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cota do usuário</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chaves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selecionar tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permissão</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selecionar permissão --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuário</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>O ID de subusuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>leitura, gravação</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>completo</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Gerar segredo automaticamente</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Carregando dados do usuário...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Não foi possível carregar os dados do usuário.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>O ID de usuário escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Este não é um endereço de e-mail válido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>O endereço de e-mail escolhido já está em uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Desabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizado</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Não há subusuários.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Não há chaves.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Não há recursos.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamanho ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamanho máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Máx. de objetos</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>O valor inserido deve ser &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrição...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permissões</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funções</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar senha</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>A confirmação de senha não corresponde à senha.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail inválido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Você está prestes a remover as permissões de "leitura/atualização de usuário" do seu próprio usuário.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se você continuar, não poderá mais adicionar ou remover funções de nenhum usuário.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Deseja realmente continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ajuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentação</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Sobre</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Configurações do Painel de Controle</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gerenciamento de usuários</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuário que efetuou login</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Efetuar logout</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadados não disponíveis</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadados</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contador de desempenho</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Gravações</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Leituras</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores atuais</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origem</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nível</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Pode ser atualizado em tempo de execução (editável)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores de enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Consulte também</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status do Cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons do Gerenciador</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gateways de Objetos</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de Metadados</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateways iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS do Cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput do Cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Leitura/Gravação do Cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Remoção</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Desempenho</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidade Bruta</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PGs por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status do PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidade</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Posições</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Atual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticação de descoberta atualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Não há portais disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Não há imagens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Não há imagens disponíveis. Adicione uma imagem ao destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Não há iniciadores disponíveis. Adicione um iniciador ao destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de Leitura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de Gravação</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Op. de Leitura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Op. de Gravação</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instância</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Andamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modo de Edição</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Adicionar Peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar Peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Excluir Peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Nº Local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Nº Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>espelhar peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Nivelamento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Disposição em camadas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueio exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Registro em diário (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NÃO PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback de instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Fazer Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantâneo do RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Excluído à(s)</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versão</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raiz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Posição</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Atividade</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Atualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>É possível atualizar o valor em temo de execução.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/clientes não extraem este valor do\n      banco de dados de configuração do monitor. A configuração desta opção não é permitida por meio de \'ceph config\n      set ...\'. Essa opção deve ser configurada por meio do ceph.conf ou da\n      linha de comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>A opção entra em vigor apenas durante a inicialização do daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>A opção afeta apenas a criação do cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>A opção afeta apenas a criação do daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Serviço</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor atual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editável</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Desabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconectando, aguarde...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Endereço Público</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessões Abertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Não Entrada</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Os OSDs que já foram marcados como saída não serão remarcados como entrada ao serem iniciados</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Não Saída</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Os OSDs não serão automaticamente marcados como saída após o intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Não Ativo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Os OSDs não podem ser iniciados</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Não Inativo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Os relatórios de falha de OSD estão sendo ignorados, portanto, os monitores não marcarão os OSDs como inativos</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausar</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pausa leituras e gravações</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Sem Remoção</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Remoção desabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Sem Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Remoção Profunda desabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Sem Provisionamento</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Provisionamento de PGs suspenso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Sem Recuperação</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recuperação de PGs suspensa</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Classificação Bit a Bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar classificação bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdirs Purgados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs converteram snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Exclusões de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Exclusões realizadas durante a recuperação, e não o emparelhamento</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite Físico do Registro de PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Atribui um limite físico ao tamanho do registro de PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flags OSD Atualizadas</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>saída</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>entrada</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>inativo</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purgar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruído</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PGs</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de leitura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de gravação</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Op. de leitura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Op. de gravação</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Máx. de Provisionamentos</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máx. Recuperação Ativo</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máx. Recuperação Inicialização Única</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Suspensão de Recuperação</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tarefa</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravidade</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Disp.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpar</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Em funcionamento</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Aviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconhecido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sem sistemas de arquivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>ativo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon ativo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>O serviço NFS Ganesha não está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transporte</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuário do CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistema de Arquivos do CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(herdado da configuração global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>herdado da configuração global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selecionar que tipo de squash de ID de usuário será executado --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Não há daemons disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Tempo Mín. Expulsão</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Tempo Mín. Descarregamento</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Máx. de Bytes de Destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Máx. de Objetos de Destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nenhum aplicativo adicionado</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite de aplicativos atingido</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Um pool apenas pode ter até quatro definições de aplicativos.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Tamanho máximo de 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar ou adicionar aplicativos</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Adicionar aplicativo</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de eliminação</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamanho da Réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Última Alteração</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil Codificado para Eliminação</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de Regras do Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimentos</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuário</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuários</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Escopo</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Leitura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Criar</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Função do Sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Atualizar usuário</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Você foi automaticamente desconectado porque suas funções foram alteradas.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto é dividido em partes de pacotes de dados, cada uma armazenada em um OSD diferente.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcule os pacotes de codificação de cada objeto e armazene-os em diferentes OSDs.\n      O número de pacotes de codificação é também o número de OSDs que podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>O plug-in jerasure é o mais genérico e flexível,\n          além de ser o padrão para pools codificados para eliminação do Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>A técnica mais flexível é reed_sol_van: ela é suficiente para definir k\n          e m. A técnica cauchy_good pode ser mais rápida, mas você precisa escolher o tamanho do pacote\n          com cuidado. Todos os reed_sol_r6_op, liberation, blaum_roth e liber8tion são equivalentes ao RAID6\n          no sentido de que só podem ser configurados com m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>A codificação será feita em pacotes de tamanho de bytes um de cada vez.\n          A escolha do tamanho do pacote certo é difícil.\n          A documentação do jerasure contém informações completas sobre este tópico.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Com o plug-in jerasure, quando um objeto codificado para eliminação é armazenado em\n          vários OSDs, a recuperação após a perda de um OSD requer a leitura de todos os outros.\n          Por exemplo, se o jerasure for configurado com k=8 e m=4, a perda de um OSD exigirá a leitura\n          dos outros onze para fazer o reparo.\n\n          O plug-in de código de eliminação lrc cria pacotes locais de paridade para conseguir recuperar usando\n          menos OSDs. Por exemplo, se o lrc for configurado com k=8, m=4 e l=4, ele criará\n          um pacote de paridade adicional para cada quatro OSDs. Quando um único OSD é perdido, ele pode ser\n          recuperado apenas com quatro OSDs, em vez de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupe os pacotes de codificação e dados em conjuntos de localidades com tamanho. Por exemplo,\n          no caso de k=4 e m=2, quando locality=3, dois grupos de três são criados. Cada conjunto pode\n          ser recuperado sem a leitura dos pacotes do outro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>O tipo do compartimento de crush em que cada conjunto de pacotes definido\n          por l será armazenado. Por exemplo, se isso for definido como rack, cada grupo de pacotes l será\n          colocado em um rack diferente. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do\n          rack. Se isso não for definido, esse tipo de agrupamento não será feito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>O plug-in isa encapsula a biblioteca ISA. Ele apenas é executado em processadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>O plug-in ISA vem em dois formatos de Reed Solomon.\n          Se reed_sol_van for definido, ele será Vandermonde, se cauchy for definido, ele será Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>O plug-in shec encapsula a biblioteca múltipla SHEC.\n          Ele permite ao ceph recuperar dados com mais eficiência do que os códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>O número de pacotes de paridade, em que cada um inclui cada pacote de dados em sua\n          faixa de cálculo. O número é usado como estimador de durabilidade. Por exemplo, se c=2,\n          2 OSDs podem ficar inativos sem perda de dados.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>O nome do compartimento de crush usado para a primeira etapa da regra CRUSH.\n      Por exemplo, a etapa assumir o padrão.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Verifique se não há dois pacotes em um compartimento com o mesmo domínio de\n      falha. Por exemplo, se o domínio de falha for um host, não armazene dois pacotes no mesmo\n      host. Isso é usado para criar uma etapa da regra CRUSH, como a etapa de escolha do host folha.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restrinja o posicionamento a dispositivos de uma classe específica\n      (ex. ssd ou hdd), usando nomes de classe de dispositivo crush no mapa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Defina o nome do diretório do qual o plug-in de código de eliminação é carregado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas as operações</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite apenas as operações que não modificam o servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Não permite operações de leitura ou gravação, mas permite qualquer outra operação</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Não permite leitura, gravação ou qualquer operação que modifica os atributos do arquivo ou o conteúdo do diretório</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Não permite nenhum tipo de acesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selecionar prioridade --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baixa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informações</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última 1 hora (Padrão)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ontem</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoje</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Até agora hoje</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Antes de ontem</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Últimos 2 dias</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este dia na semana passada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Semana anterior</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Até agora nesta semana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Últimos 7 dias</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mês anterior</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mês</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Até agora neste mês</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Últimos 30 dias</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Últimos 90 dias</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Último ano</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Ano anterior</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este ano</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Até agora neste ano</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Últimos 2 anos</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Últimos 5 anos</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nenhum item selecionado.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Desmarcar item para selecionar novamente</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de seleção atingido</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags de filtro</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Adicionar selo</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Não há itens disponíveis.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Remoção Profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Nivelar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar como Inativo</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar como Entrada</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como Perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar como Saída</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renomear</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover para Lixo</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Cancelar proteção</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Excluído</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Nivelado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback feito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sim</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Não</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualidade do Serviço</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>O limite de bytes por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>O limite de operações por segundo de E/S desejado.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>O limite de bytes por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>O limite de operações por segundo de leitura desejado.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>O limite de bytes por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>O limite de operações por segundo de gravação desejado.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Intermitência de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>O limite de bytes de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Intermitência de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>O limite de operações de E/S de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Intermitência de BPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>O limite de bytes de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Intermitência de IOPS de Leitura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>O limite de operações de leitura de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Intermitência de BPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>O limite de bytes de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Intermitência de IOPS de Gravação</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>O limite de operações de gravação de intermitência desejado.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Executando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>executar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Executado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarefa desconhecida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Criando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>criar</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Atualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>atualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Excluindo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Nivelando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>nivelar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Fazendo rollback</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Movendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Imagem não encontrada.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Purgando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purgar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos os pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossível desabilitar espelhamento porque ele contém um peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"+c4W":function(t,e,n){var a=n("711d"),r=n("4/ic"),i=n("9ggG"),s=n("9Nap");t.exports=function(t){return i(t)?a(s(t)):r(t)}},"+fVR":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{setExpandedRow(t){this.expandedRow=t}}},"+gVj":function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return i})),n.d(e,"e",(function(){return l})),n.d(e,"f",(function(){return g})),n.d(e,"g",(function(){return c})),n.d(e,"h",(function(){return h}));var a=n("8Y7J"),r=n("s7LF");class i{constructor(){this.validSubmit=new a.EventEmitter}onSubmit(){this.markAsTouchedAndDirty(this.formGroup),this.formGroup.valid&&this.validSubmit.emit(this.formGroup.value)}markAsTouchedAndDirty(t){t instanceof r.k?Object.keys(t.controls).forEach(e=>this.markAsTouchedAndDirty(t.controls[e])):t instanceof r.f?t.controls.forEach(t=>this.markAsTouchedAndDirty(t)):t instanceof r.i&&t.enabled&&(t.markAsDirty(),t.markAsTouched(),t.updateValueAndValidity())}}const s=function(){var t={Three:0,Four:1};return t[t.Three]="Three",t[t.Four]="Four",t}(),o=new a.InjectionToken("ng-bootstrap-form-validation custom error messages"),u=new a.InjectionToken("ng-bootstrap-form-validation module options");class l{constructor(t){this.bootstrapVersion=t,this.messages=()=>[]}get className(){switch(this.bootstrapVersion){case s.Three:return"help-block";case s.Four:return"invalid-feedback"}}}const d=[{error:"required",format:t=>`${t} is required`},{error:"pattern",format:t=>`${t} is invalid`},{error:"minlength",format:(t,e)=>`${t} must be at least ${e.requiredLength} characters`},{error:"maxlength",format:(t,e)=>`${t} must be no longer than ${e.requiredLength} characters`},{error:"requiredTrue",format:(t,e)=>`${t} is required`},{error:"email",format:(t,e)=>"Invalid email address"},{error:"max",format:(t,e)=>`${t} must be no greater than ${e.max}`},{error:"min",format:(t,e)=>`${t} must be no less than ${e.min}`}];let c=(()=>{class t{constructor(t){this.customErrorMessages=t,this.defaultErrors=d,this.errorMessages=t.reduce((t,e)=>t.concat(e),this.defaultErrors)}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(o))},token:t,providedIn:"root"}),t})();class f{constructor(t,e){this.elRef=t,this.errorMessageService=e,this.customErrorMessages=[],this.validationDisabled=!1,this.messages=()=>this.getMessages()}get hasErrors(){return this.FormControlNames.some(t=>!t.valid&&t.dirty&&t.touched)&&!this.validationDisabled}get hasSuccess(){return!this.FormControlNames.some(t=>!t.valid)&&this.FormControlNames.some(t=>t.dirty&&t.touched)&&!this.validationDisabled}ngAfterContentInit(){this.messagesBlock&&(this.messagesBlock.messages=this.messages)}ngOnInit(){this.errorMessages=this.errorMessageService.errorMessages.concat(this.customErrorMessages).reverse()}get label(){const t=this.elRef.nativeElement.querySelector("label");return t&&t.textContent?t.textContent.trim():"This field"}get isDirtyAndTouched(){return this.FormControlNames.some(t=>t.dirty&&t.touched)}getMessages(){const t=[];if(!this.isDirtyAndTouched||this.validationDisabled)return t;const e=this.FormControlNames.map(t=>t.name);return this.FormControlNames.filter((t,n)=>!t.valid&&!!t.errors&&e.indexOf(t.name)===n).forEach(e=>{Object.keys(e.errors).forEach(n=>{const a=this.errorMessages.find(t=>t.error===n);a&&t.push(a.format(this.label,e.errors[n]))})}),t}}class h{constructor(t,e){this.parent=t,this.bootstrapVersion=e}get validClass(){return!!this.control&&this.bootstrapFour&&this.control.valid&&(this.control.touched||this.control.dirty)}get invalidClass(){return!!this.control&&this.bootstrapFour&&this.control.invalid&&this.control.touched&&this.control.dirty}get path(){return[...this.parent.path,this.formControlName]}get control(){return this.formDirective&&this.formDirective.getControl(this)}get formDirective(){return this.parent?this.parent.formDirective:null}get bootstrapFour(){return this.bootstrapVersion===s.Four}}class g{static forRoot(t={bootstrapVersion:s.Four}){return{ngModule:g,providers:[{provide:o,useValue:t.customErrorMessages||[],multi:!0},{provide:u,useValue:t.bootstrapVersion},c]}}}},"+iFO":function(t,e,n){var a=n("dTAl"),r=n("LcsW"),i=n("6sVZ");t.exports=function(t){return"function"!=typeof t.constructor||i(t)?{}:a(r(t))}},"+s0g":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"//9w":function(t,e,n){!function(t){"use strict";t.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"/9aa":function(t,e,n){var a=n("NykK"),r=n("ExA7");t.exports=function(t){return"symbol"==typeof t||r(t)&&"[object Symbol]"==a(t)}},"/GqU":function(t,e,n){var a=n("RK3t"),r=n("HYAF");t.exports=function(t){return a(r(t))}},"/NlG":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("oxzT");class i{constructor(t){this.i18n=t,this.title="",this.bootstrapClass="",this.backAction=new a.EventEmitter,this.size="normal",this.showIcon=!0,this.showTitle=!0,this.icons=r.a}ngOnInit(){switch(this.type){case"warning":this.title=this.title||this.i18n("Warning"),this.typeIcon=this.typeIcon||r.a.warning,this.bootstrapClass=this.bootstrapClass||"warning";break;case"error":this.title=this.title||this.i18n("Error"),this.typeIcon=this.typeIcon||r.a.destroyCircle,this.bootstrapClass=this.bootstrapClass||"danger";break;case"info":this.title=this.title||this.i18n("Information"),this.typeIcon=this.typeIcon||r.a.infoCircle,this.bootstrapClass=this.bootstrapClass||"info";break;case"success":this.title=this.title||this.i18n("Success"),this.typeIcon=this.typeIcon||r.a.check,this.bootstrapClass=this.bootstrapClass||"success"}}}},"/X5v":function(t,e,n){!function(t){"use strict";t.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"/b8u":function(t,e,n){var a=n("STAE");t.exports=a&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},"/byt":function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},0:function(t,e,n){t.exports=n("zUnb")},"0+/T":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("QFaf");n("sb0X");class i{constructor(t){this.modalRef=t,this.actionDescription="delete"}ngOnInit(){const t={confirmation:new a.i(!1,[a.B.requiredTrue])};if(this.childFormGroup&&(t.child=this.childFormGroup),this.deletionForm=new r.a(t),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")}callSubmitAction(){this.submitActionObservable?this.submitActionObservable().subscribe(null,this.stopLoadingSpinner.bind(this),this.hideModal.bind(this)):this.submitAction()}hideModal(){this.modalRef.hide()}stopLoadingSpinner(){this.deletionForm.setErrors({cdSubmitButton:!0})}}},"03A+":function(t,e,n){var a=n("JTzB"),r=n("ExA7"),i=Object.prototype,s=i.hasOwnProperty,o=i.propertyIsEnumerable,u=a(function(){return arguments}())?a:function(t){return r(t)&&s.call(t,"callee")&&!o.call(t,"callee")};t.exports=u},"07d7":function(t,e,n){var a=n("AO7/"),r=n("busE"),i=n("sEFX");a||r(Object.prototype,"toString",i,{unsafe:!0})},"0BK2":function(t,e){t.exports={}},"0Cz8":function(t,e,n){var a=n("Xi7e"),r=n("ebwN"),i=n("e4Nc");t.exports=function(t,e){var n=this.__data__;if(n instanceof a){var s=n.__data__;if(!r||s.length<199)return s.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(s)}return n.set(t,e),this.size=n.size,this}},"0Dky":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"0EUg":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("bHdf");function r(){return Object(a.a)(1)}},"0GbY":function(t,e,n){var a=n("Qo9l"),r=n("2oRo"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(a[t])||i(r[t]):a[t]&&a[t][e]||r[t]&&r[t][e]}},"0eef":function(t,e,n){"use strict";var a={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!a.call({1:2},1);e.f=i?function(t){var e=r(this,t);return!!e&&e.enumerable}:a},"0mo+":function(t,e,n){!function(t){"use strict";var e={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};t.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(t){return t.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(t,e){return 12===t&&(t=0),"མཚན་མོ"===e&&t>=4||"ཉིན་གུང"===e&&t<5||"དགོང་དག"===e?t+12:t},meridiem:function(t,e,n){return t<4?"མཚན་མོ":t<10?"ཞོགས་ཀས":t<17?"ཉིན་གུང":t<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("wd/R"))},"0rvr":function(t,e,n){var a=n("glrk"),r=n("O741");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return a(n),r(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},"0tRk":function(t,e,n){!function(t){"use strict";t.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n("wd/R"))},"0ycA":function(t,e){t.exports=function(){return[]}},"1+5i":function(t,e,n){var a=n("w/wX"),r=n("sEf8"),i=n("mdPL"),s=i&&i.isSet,o=s?r(s):a;t.exports=o},"128B":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("Kqap"),r=n("BFxc"),i=n("xbPD"),s=n("mCNh");function o(t,e){return arguments.length>=2?function(n){return Object(s.a)(Object(a.a)(t,e),Object(r.a)(1),Object(i.a)(e))(n)}:function(e){return Object(s.a)(Object(a.a)((e,n,a)=>t(e,n,a+1)),Object(r.a)(1))(e)}}},"14R3":function(t,e){"undefined"!=typeof Element&&("function"!=typeof Element.prototype.matches&&(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.webkitMatchesSelector||function(t){for(var e=(this.document||this.ownerDocument).querySelectorAll(t),n=0;e[n]&&e[n]!==this;)++n;return Boolean(e[n])}),"function"!=typeof Element.prototype.closest&&(Element.prototype.closest=function(t){for(var e=this;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null}))},"14Sl":function(t,e,n){"use strict";n("rB9j");var a=n("busE"),r=n("0Dky"),i=n("tiKp"),s=n("kmMV"),o=n("kRJp"),u=i("species"),l=!r((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),d="$0"==="a".replace(/./,"$0"),c=i("replace"),f=!!/./[c]&&""===/./[c]("a","$0"),h=!r((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,c){var g=i(t),p=!r((function(){var e={};return e[g]=function(){return 7},7!=""[t](e)})),b=p&&!r((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[g]=/./[g]),n.exec=function(){return e=!0,null},n[g](""),!e}));if(!p||!b||"replace"===t&&(!l||!d||f)||"split"===t&&!h){var m=/./[g],y=n(g,""[t],(function(t,e,n,a,r){return e.exec===s?p&&!r?{done:!0,value:m.call(e,n,a)}:{done:!0,value:t.call(n,e,a)}:{done:!1}}),{REPLACE_KEEPS_$0:d,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),v=y[1];a(String.prototype,t,y[0]),a(RegExp.prototype,g,2==e?function(t,e){return v.call(t,this,e)}:function(t){return v.call(t,this)})}c&&o(RegExp.prototype[g],"sham",!0)}},"1E5z":function(t,e,n){var a=n("m/L8").f,r=n("UTVS"),i=n("tiKp")("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},"1Ni5":function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("LRne"),s=n("PqYM"),o=n("eIep");function u(t,e){return e?Object(o.a)(()=>t,e):Object(o.a)(()=>t)}var l=n("lJxs"),d=n("IzEk"),c=n("Fgil"),f=n("aXbf");function h(t){return null==t||0===t.length}n.d(e,"b",(function(){return h})),n.d(e,"a",(function(){return g}));class g{static email(t){return h(t.value)?null:a.B.email(t)}static ip(t=0){const e=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i,n=/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i;return a.B.pattern(4===t?e:6===t?n:new RegExp(e.source+"|"+n.source))}static number(t=!0){return a.B.pattern(t?/^-?[0-9]+$/i:/^[0-9]+$/i)}static decimalNumber(t=!0){return a.B.pattern(t?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)}static requiredIf(t,e){let n=!1;return a=>(!n&&a.parent&&(Object.keys(t).forEach(t=>{a.parent.get(t).valueChanges.subscribe(()=>{a.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>a.parent&&a.parent.get(e).value===t[e])&&(r.isFunction(e)?e.call(e,a.value):h(a.value))?{required:!0}:null)}static composeIf(t,e){let n=!1;return r=>(!n&&r.parent&&(Object.keys(t).forEach(t=>{r.parent.get(t).valueChanges.subscribe(()=>{r.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(e=>r.parent&&r.parent.get(e).value===t[e])?a.B.compose(e)(r):null)}static custom(t,e){return n=>{const a=e.call(this,n.value);return a?{[t]:a}:null}}static validateIf(t,e,n,r=[],i=[]){n=n.concat(r),t.setValidators(t=>e.call(this)?a.B.compose(n)(t):r.length>0?a.B.compose(r)(t):null),i.forEach(e=>{e.valueChanges.subscribe(()=>{t.updateValueAndValidity({emitEvent:!1})})})}static match(t,e){return n=>{const a=n.get(t),i=n.get(e);if(!a||!i)return null;if(a.value!==i.value)i.setErrors({match:!0});else if(i.hasError("match")){const t=i.errors;r.unset(t,"match"),i.setErrors(r.isEmpty(r.keys(t))?null:t)}return null}}static unique(t,e=null,n=500){return a=>a.pristine||h(a.value)?Object(i.a)(null):Object(s.a)(n).pipe(u(t.call(e,a.value)),Object(l.a)(t=>t?{notUnique:!0}:null),Object(d.a)(1))}static uuid(t=!1){const e=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return n=>n.pristine&&n.untouched?null:t||n.value?e.test(n.value)?null:{invalidUuid:"This is not a valid UUID"}:null}static binaryMin(t){return e=>{const n=new f.a,a=(new f.a).toBytes(e.value);if(t<=a)return null;const r=new c.a(n).transform(t);return{binaryMin:t=>t("Size has to be at least {{value}} or more",{value:r})}}}static binaryMax(t){return e=>{const n=new f.a,a=n.toBytes(e.value);if(t>=a)return null;const r=new c.a(n).transform(t);return{binaryMax:t=>t("Size has to be at most {{value}} or less",{value:r})}}}static passwordPolicy(t,e,n){return a=>{if(a.pristine||""===a.value)return r.isFunction(n)&&n(!0,0),Object(i.a)(null);let o;return r.isFunction(e)&&(o=e()),Object(s.a)(500).pipe(u(r.invoke(t,"validatePassword",a.value,o)),Object(l.a)(t=>(r.isFunction(n)&&n(t.valid,t.credits,t.valuation),t.valid?null:{passwordPolicy:!0})),Object(d.a)(1))}}}},"1Y/n":function(t,e,n){var a=n("HAuM"),r=n("ewvW"),i=n("RK3t"),s=n("UMSQ"),o=function(t){return function(e,n,o,u){a(n);var l=r(e),d=i(l),c=s(l.length),f=t?c-1:0,h=t?-1:1;if(o<2)for(;;){if(f in d){u=d[f],f+=h;break}if(f+=h,t?f<0:c<=f)throw TypeError("Reduce of empty array with no initial value")}for(;t?f>=0:c>f;f+=h)f in d&&(u=n(u,d[f],f,l));return u}};t.exports={left:o(!1),right:o(!0)}},"1hJj":function(t,e,n){var a=n("e4Nc"),r=n("ftKO"),i=n("3A9y");function s(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new a;++e<n;)this.add(t[e])}s.prototype.add=s.prototype.push=r,s.prototype.has=i,t.exports=s},"1nQr":function(t,e,n){"use strict";var a=n("LvDl"),r=n("lJxs"),i=n("20UP");class s{constructor(t){this.pwdPolicyEnabled=t.pwd_policy_enabled,this.pwdPolicyMinLength=t.pwd_policy_min_length,this.pwdPolicyCheckLengthEnabled=t.pwd_policy_check_length_enabled,this.pwdPolicyCheckOldpwdEnabled=t.pwd_policy_check_oldpwd_enabled,this.pwdPolicyCheckUsernameEnabled=t.pwd_policy_check_username_enabled,this.pwdPolicyCheckExclusionListEnabled=t.pwd_policy_check_exclusion_list_enabled,this.pwdPolicyCheckRepetitiveCharsEnabled=t.pwd_policy_check_repetitive_chars_enabled,this.pwdPolicyCheckSequentialCharsEnabled=t.pwd_policy_check_sequential_chars_enabled,this.pwdPolicyCheckComplexityEnabled=t.pwd_policy_check_complexity_enabled}}var o=n("8Y7J"),u=n("GiVz");n.d(e,"a",(function(){return l}));let l=(()=>{class t{constructor(t,e){this.i18n=t,this.settingsService=e}getHelpText(){return this.settingsService.getStandardSettings().pipe(Object(r.a)(t=>{const e=new s(t);let n=[];if(e.pwdPolicyEnabled){n.push(this.i18n("Required rules for passwords:"));const t={pwdPolicyCheckLengthEnabled:this.i18n("Must contain at least {{length}} characters",{length:e.pwdPolicyMinLength}),pwdPolicyCheckOldpwdEnabled:this.i18n("Must not be the same as the previous one"),pwdPolicyCheckUsernameEnabled:this.i18n("Cannot contain the username"),pwdPolicyCheckExclusionListEnabled:this.i18n("Cannot contain any configured keyword"),pwdPolicyCheckRepetitiveCharsEnabled:this.i18n('Cannot contain any repetitive characters e.g. "aaa"'),pwdPolicyCheckSequentialCharsEnabled:this.i18n('Cannot contain any sequential characters e.g. "abc"'),pwdPolicyCheckComplexityEnabled:this.i18n("Must consist of characters from the following groups:\n  * Alphabetic a-z, A-Z\n  * Numbers 0-9\n  * Special chars: !\"#$%& '()*+,-./:;<=>?@[\\]^_`{{|}}~\n  * Any other characters (signs)")};n=n.concat(a.keys(t).filter(t=>a.get(e,t)).map(e=>"- "+a.get(t,e)))}return n.join("\n")}))}mapCreditsToCssClass(t){let e="very-strong";return t<10?e="too-weak":t<15?e="weak":t<20?e="ok":t<25&&(e="strong"),e}}return t.ngInjectableDef=o["ɵɵdefineInjectable"]({factory:function(){return new t(o["ɵɵinject"](u.a),o["ɵɵinject"](i.a))},token:t,providedIn:"root"}),t})()},"1rYy":function(t,e,n){!function(t){"use strict";t.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(t){return/^(ցերեկվա|երեկոյան)$/.test(t)},meridiem:function(t){return t<4?"գիշերվա":t<12?"առավոտվա":t<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},"1xZ4":function(t,e,n){!function(t){"use strict";t.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})}(n("wd/R"))},"20UP":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("LvDl"),r=n("lJxs"),i=n("8Y7J"),s=n("IheW"),o=n("pL04");let u=(()=>{class t{constructor(t){this.http=t,this.settings={}}getValues(t){return a.isArray(t)&&(t=t.join(",")),this.http.get(`api/settings?names=${t}`).pipe(Object(r.a)(t=>{const e={};return a.forEach(t,t=>{a.set(e,t.name,t.value)}),e}))}ifSettingConfigured(t,e,n){const a=this.settings[t];void 0===a?this.http.get(t).subscribe(a=>{this.settings[t]=this.getSettingsValue(a),this.ifSettingConfigured(t,e,n)},e=>{401!==e.status&&(this.settings[t]="")}):""!==a?e(a):n&&n()}disableSetting(t){this.settings[t]=""}getSettingsValue(t){return t.value||t.instance||""}validateGrafanaDashboardUrl(t){return this.http.get(`api/grafana/validation/${t}`)}getStandardSettings(){return this.http.get("ui-api/standard_settings")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.c))},token:t,providedIn:o.a}),t})()},"25BL":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),o=n("SVse"),u=n("FE24"),l=n("z/SZ"),d=n("GS7A"),c=n("s7LF"),f=n("w9WL"),h=a["ɵcrt"]({encapsulation:2,styles:[".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;-webkit-transform:translate3d(0,0,0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable :after,.ngx-datatable :before{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-header-inner,.ngx-datatable .datatable-row-center{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:0}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:0}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:0}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}"],data:{}});function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"datatable-header",[["class","datatable-header"]],[[4,"height",null],[4,"width",null]],[[null,"sort"],[null,"resize"],[null,"reorder"],[null,"select"],[null,"columnContextmenu"]],(function(t,e,n){var a=!0,r=t.component;return"sort"===e&&(a=!1!==r.onColumnSort(n)&&a),"resize"===e&&(a=!1!==r.onColumnResize(n)&&a),"reorder"===e&&(a=!1!==r.onColumnReorder(n)&&a),"select"===e&&(a=!1!==r.onHeaderSelect(n)&&a),"columnContextmenu"===e&&(a=!1!==r.onColumnContextmenu(n)&&a),a}),x,m)),a["ɵdid"](1,180224,[[2,4]],0,f.i,[a.ChangeDetectorRef],{sortAscendingIcon:[0,"sortAscendingIcon"],sortDescendingIcon:[1,"sortDescendingIcon"],scrollbarH:[2,"scrollbarH"],dealsWithGroup:[3,"dealsWithGroup"],targetMarkerTemplate:[4,"targetMarkerTemplate"],innerWidth:[5,"innerWidth"],sorts:[6,"sorts"],sortType:[7,"sortType"],allRowsSelected:[8,"allRowsSelected"],selectionType:[9,"selectionType"],reorderable:[10,"reorderable"],headerHeight:[11,"headerHeight"],columns:[12,"columns"],offsetX:[13,"offsetX"]},{sort:"sort",reorder:"reorder",resize:"resize",select:"select",columnContextmenu:"columnContextmenu"}),a["ɵpid"](131072,o.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,1,[n.cssClasses.sortAscending,n.cssClasses.sortDescending,n.scrollbarH,void 0!==n.groupedRows,n.targetMarkerTemplate,n._innerWidth,n.sorts,n.sortType,n.allRowsSelected,n.selectionType,n.reorderable,n.headerHeight,n._internalColumns,a["ɵunv"](e,1,13,a["ɵnov"](e,2).transform(n._offsetX))])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).headerHeight,a["ɵnov"](e,1).headerWidth)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-footer",[["class","datatable-footer"]],null,[[null,"page"]],(function(t,e,n){var a=!0;return"page"===e&&(a=!1!==t.component.onFooterPage(n)&&a),a}),Nt,_t)),a["ɵdid"](1,49152,null,0,f.f,[],{footerHeight:[0,"footerHeight"],rowCount:[1,"rowCount"],pageSize:[2,"pageSize"],offset:[3,"offset"],pagerLeftArrowIcon:[4,"pagerLeftArrowIcon"],pagerRightArrowIcon:[5,"pagerRightArrowIcon"],pagerPreviousIcon:[6,"pagerPreviousIcon"],pagerNextIcon:[7,"pagerNextIcon"],totalMessage:[8,"totalMessage"],footerTemplate:[9,"footerTemplate"],selectedCount:[10,"selectedCount"],selectedMessage:[11,"selectedMessage"]},{page:"page"})],(function(t,e){var n=e.component;t(e,1,1,[n.footerHeight,n.rowCount,n.pageSize,n.offset,n.cssClasses.pagerLeftArrow,n.cssClasses.pagerRightArrow,n.cssClasses.pagerPrevious,n.cssClasses.pagerNext,n.messages.totalMessage,n.footer,n.selected.length,!!n.selectionType&&n.messages.selectedMessage])}),null)}function b(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{bodyComponent:0}),a["ɵqud"](671088640,2,{headerComponent:0}),(t()(),a["ɵeld"](2,0,null,null,8,"div",[["visibilityObserver",""]],[[2,"visible",null]],[[null,"visible"]],(function(t,e,n){var a=!0;return"visible"===e&&(a=!1!==t.component.recalculate()&&a),a}),null,null)),a["ɵdid"](3,212992,null,0,f.B,[a.ElementRef,a.NgZone],null,{visible:"visible"}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,2,"datatable-body",[["class","datatable-body"]],[[4,"width",null],[4,"height",null]],[[null,"page"],[null,"activate"],[null,"rowContextmenu"],[null,"select"],[null,"scroll"],[null,"treeAction"]],(function(t,e,n){var a=!0,r=t.component;return"page"===e&&(a=!1!==r.onBodyPage(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),"rowContextmenu"===e&&(a=!1!==r.onRowContextmenu(n)&&a),"select"===e&&(a=!1!==r.onBodySelect(n)&&a),"scroll"===e&&(a=!1!==r.onBodyScroll(n)&&a),"treeAction"===e&&(a=!1!==r.onTreeAction(n)&&a),a}),F,R)),a["ɵdid"](7,245760,[[1,4]],0,f.c,[a.ChangeDetectorRef],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],loadingIndicator:[2,"loadingIndicator"],externalPaging:[3,"externalPaging"],rowHeight:[4,"rowHeight"],offsetX:[5,"offsetX"],emptyMessage:[6,"emptyMessage"],selectionType:[7,"selectionType"],selected:[8,"selected"],rowIdentity:[9,"rowIdentity"],rowDetail:[10,"rowDetail"],groupHeader:[11,"groupHeader"],selectCheck:[12,"selectCheck"],displayCheck:[13,"displayCheck"],trackByProp:[14,"trackByProp"],rowClass:[15,"rowClass"],groupedRows:[16,"groupedRows"],groupExpansionDefault:[17,"groupExpansionDefault"],innerWidth:[18,"innerWidth"],groupRowsBy:[19,"groupRowsBy"],virtualization:[20,"virtualization"],summaryRow:[21,"summaryRow"],summaryPosition:[22,"summaryPosition"],summaryHeight:[23,"summaryHeight"],pageSize:[24,"pageSize"],rows:[25,"rows"],columns:[26,"columns"],offset:[27,"offset"],rowCount:[28,"rowCount"],bodyHeight:[29,"bodyHeight"]},{scroll:"scroll",page:"page",activate:"activate",select:"select",rowContextmenu:"rowContextmenu",treeAction:"treeAction"}),a["ɵpid"](131072,o.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](10,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,5,0,n.headerHeight),t(e,7,1,[n.scrollbarV,n.scrollbarH,n.loadingIndicator,n.externalPaging,n.rowHeight,a["ɵunv"](e,7,5,a["ɵnov"](e,8).transform(n._offsetX)),n.messages.emptyMessage,n.selectionType,n.selected,n.rowIdentity,n.rowDetail,n.groupHeader,n.selectCheck,n.displayCheck,n.trackByProp,n.rowClass,n.groupedRows,n.groupExpansionDefault,n._innerWidth,n.groupRowsBy,n.virtualization,n.summaryRow,n.summaryPosition,n.summaryHeight,n.pageSize,n._internalRows,n._internalColumns,n.offset,n.rowCount,n.bodyHeight]),t(e,10,0,n.footerHeight)}),(function(t,e){t(e,2,0,a["ɵnov"](e,3).isVisible),t(e,6,0,a["ɵnov"](e,7).bodyWidth,a["ɵnov"](e,7).bodyHeight)}))}var m=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"datatable-header-cell",[["class","datatable-header-cell"],["draggable",""],["long-press",""],["resizeable",""]],[[2,"resizeable",null],[2,"press",null],[2,"longpress",null],[4,"height","px"],[8,"className",0],[1,"title",0],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"width","px"]],[[null,"resize"],[null,"longPressStart"],[null,"longPressEnd"],[null,"sort"],[null,"select"],[null,"columnContextmenu"],[null,"mousedown"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,2).onMousedown(n)&&r),"mousedown"===e&&(r=!1!==a["ɵnov"](t,3).onMouseDown(n)&&r),"contextmenu"===e&&(r=!1!==a["ɵnov"](t,4).onContextmenu(n)&&r),"resize"===e&&(r=!1!==i.onColumnResized(n,t.context.$implicit)&&r),"longPressStart"===e&&(r=!1!==i.onLongPressStart(n)&&r),"longPressEnd"===e&&(r=!1!==i.onLongPressEnd(n)&&r),"sort"===e&&(r=!1!==i.onSort(n)&&r),"select"===e&&(r=!1!==i.select.emit(n)&&r),"columnContextmenu"===e&&(r=!1!==i.columnContextmenu.emit(n)&&r),r}),C,_)),a["ɵdid"](1,671744,[[1,4]],0,f.s,[a.ElementRef],{dragEventTarget:[0,"dragEventTarget"],dragModel:[1,"dragModel"],dragX:[2,"dragX"],dragY:[3,"dragY"]},null),a["ɵdid"](2,4341760,null,0,f.x,[a.ElementRef,a.Renderer2],{resizeEnabled:[0,"resizeEnabled"]},{resize:"resize"}),a["ɵdid"](3,147456,null,0,f.t,[],{pressEnabled:[0,"pressEnabled"],pressModel:[1,"pressModel"]},{longPressStart:"longPressStart",longPressEnd:"longPressEnd"}),a["ɵdid"](4,49152,null,0,f.h,[a.ChangeDetectorRef],{sortType:[0,"sortType"],sortAscendingIcon:[1,"sortAscendingIcon"],sortDescendingIcon:[2,"sortDescendingIcon"],isTarget:[3,"isTarget"],targetMarkerTemplate:[4,"targetMarkerTemplate"],targetMarkerContext:[5,"targetMarkerContext"],allRowsSelected:[6,"allRowsSelected"],selectionType:[7,"selectionType"],column:[8,"column"],headerHeight:[9,"headerHeight"],sorts:[10,"sorts"]},{sort:"sort",select:"select",columnContextmenu:"columnContextmenu"})],(function(t,e){var n=e.component;t(e,1,0,n.dragEventTarget,e.context.$implicit,n.reorderable&&e.context.$implicit.draggable&&e.context.$implicit.dragging,!1),t(e,2,0,e.context.$implicit.resizeable),t(e,3,0,n.reorderable&&e.context.$implicit.draggable,e.context.$implicit),t(e,4,1,[n.sortType,n.sortAscendingIcon,n.sortDescendingIcon,e.context.$implicit.isTarget,n.targetMarkerTemplate,e.context.$implicit.targetMarkerContext,n.allRowsSelected,n.selectionType,e.context.$implicit,n.headerHeight,n.sorts])}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).resizeEnabled,a["ɵnov"](e,3).press,a["ɵnov"](e,3).isLongPress,a["ɵnov"](e,4).headerHeight,a["ɵnov"](e,4).columnCssClasses,a["ɵnov"](e,4).name,a["ɵnov"](e,4).minWidth,a["ɵnov"](e,4).maxWidth,a["ɵnov"](e,4).width)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._styleByGroup[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,"datatable-row-"+e.context.$implicit.type)}))}function x(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-header-inner"],["orderable",""]],[[4,"width","px"]],[[null,"reorder"],[null,"targetChanged"]],(function(t,e,n){var a=!0,r=t.component;return"reorder"===e&&(a=!1!==r.onColumnReordered(n)&&a),"targetChanged"===e&&(a=!1!==r.onTargetChanged(n)&&a),a}),null,null)),a["ɵdid"](1,1196032,null,1,f.v,[a.KeyValueDiffers,o.DOCUMENT],null,{reorder:"reorder",targetChanged:"targetChanged"}),a["ɵqud"](603979776,1,{draggables:1}),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](4,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,4,0,n._columnsByPin,n.trackByGroups)}),(function(t,e){t(e,0,0,e.component._columnGroupWidths.total)}))}var _=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function T(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.targetMarkerContext,n.targetMarkerTemplate)}),null)}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==r.select.emit(!r.allRowsSelected)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.allRowsSelected)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","datatable-header-cell-wrapper"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","datatable-header-cell-label draggable"]],[[8,"innerHTML",1]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.name)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.headerTemplate)}),null)}function C(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-header-cell-template-wrap"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,S)),a["ɵdid"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](9,0,null,null,0,"span",[],[[8,"className",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSort()&&a),a}),null,null))],(function(t,e){var n=e.component;t(e,2,0,n.isTarget),t(e,4,0,n.isCheckboxable),t(e,6,0,!n.column.headerTemplate),t(e,8,0,n.column.headerTemplate)}),(function(t,e){t(e,9,0,e.component.sortClass)}))}var R=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-progress",[],null,null,null,rt,at)),a["ɵdid"](1,49152,null,0,f.w,[],null,null)],null,null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵdid"](1,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"treeAction"],[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0,i=t.component;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction(t.parent.context.$implicit)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent,2).onActivate(n,i.indexes.first+t.parent.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],isSelected:[5,"isSelected"],rowIndex:[6,"rowIndex"],displayCheck:[7,"displayCheck"],treeStatus:[8,"treeStatus"],offsetX:[9,"offsetX"],rowHeight:[10,"rowHeight"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,1,[n.columns,n.innerWidth,n.getRowExpanded(e.parent.context.$implicit),n.rowClass,e.parent.context.$implicit,a["ɵnov"](e.parent.parent.parent,2).getRowSelected(e.parent.context.$implicit),n.getRowIndex(e.parent.context.$implicit),n.displayCheck,e.parent.context.$implicit.treeStatus,n.offsetX,n.getRowHeight(e.parent.context.$implicit)])}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"activate"],[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),"activate"===e&&(r=!1!==a["ɵnov"](t.parent.parent.parent.parent,2).onActivate(n,t.context.index)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],expanded:[2,"expanded"],rowClass:[3,"rowClass"],row:[4,"row"],group:[5,"group"],isSelected:[6,"isSelected"],rowIndex:[7,"rowIndex"],offsetX:[8,"offsetX"],rowHeight:[9,"rowHeight"]},{activate:"activate"})],(function(t,e){var n=e.component;t(e,1,0,n.columns,n.innerWidth,n.getRowExpanded(e.context.$implicit),n.rowClass,e.context.$implicit,e.parent.parent.context.$implicit.value,a["ɵnov"](e.parent.parent.parent.parent,2).getRowSelected(e.context.$implicit),n.getRowIndex(e.context.$implicit),n.offsetX,n.getRowHeight(e.context.$implicit))}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,L)),a["ɵdid"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.parent.context.$implicit.value,e.component.rowTrackingFn)}),null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"datatable-row-wrapper",[["class","datatable-row-wrapper"]],null,[[null,"rowContextmenu"],[null,"contextmenu"]],(function(t,e,n){var r=!0,i=t.component;return"contextmenu"===e&&(r=!1!==a["ɵnov"](t,3).onContextmenu(n)&&r),"rowContextmenu"===e&&(r=!1!==i.rowContextmenu.emit(n)&&r),r}),pt,ot)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,311296,null,0,f.k,[a.ChangeDetectorRef,a.KeyValueDiffers],{innerWidth:[0,"innerWidth"],rowDetail:[1,"rowDetail"],groupHeader:[2,"groupHeader"],offsetX:[3,"offsetX"],detailRowHeight:[4,"detailRowHeight"],row:[5,"row"],groupedRows:[6,"groupedRows"],rowIndex:[7,"rowIndex"],expanded:[8,"expanded"]},{rowContextmenu:"rowContextmenu"}),(t()(),a["ɵand"](16777216,null,0,1,null,E)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["groupedRowsTemplate",2]],0,0,null,D))],(function(t,e){var n=e.component;t(e,2,0,n.getRowsStyles(e.context.$implicit)),t(e,3,0,n.innerWidth,n.rowDetail,n.groupHeader,n.offsetX,n.getDetailRowHeight(e.context.$implicit[e.context.index],e.context.index),e.context.$implicit,n.groupedRows,n.getRowIndex(e.context.$implicit[e.context.index]),n.getRowExpanded(e.context.$implicit)),t(e,5,0,!n.groupedRows,a["ɵnov"](e,6))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,xt,yt)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),a["ɵdid"](3,573440,null,0,f.m,[],{rows:[0,"rows"],columns:[1,"columns"],rowHeight:[2,"rowHeight"],offsetX:[3,"offsetX"],innerWidth:[4,"innerWidth"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getBottomSummaryRowStyles()),t(e,3,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)}),null)}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"datatable-scroller",[["class","datatable-scroll"]],[[4,"height","px"],[4,"width","px"]],[[null,"scroll"]],(function(t,e,n){var a=!0;return"scroll"===e&&(a=!1!==t.component.onBodyScroll(n)&&a),a}),st,it)),a["ɵdid"](1,245760,[[1,4]],0,f.z,[a.NgZone,a.ElementRef,a.Renderer2],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],scrollHeight:[2,"scrollHeight"],scrollWidth:[3,"scrollWidth"]},{scroll:"scroll"}),(t()(),a["ɵand"](16777216,null,0,1,null,k)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,P)),a["ɵdid"](5,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,M)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.scrollbarV,n.scrollbarH,n.scrollHeight,null==n.columnGroupWidths?null:n.columnGroupWidths.total),t(e,3,0,n.summaryRow&&"top"===n.summaryPosition),t(e,5,0,n.temp,n.rowTrackingFn),t(e,7,0,n.summaryRow&&"bottom"===n.summaryPosition)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).scrollHeight,a["ɵnov"](e,1).scrollWidth)}))}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","empty-row"]],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.emptyMessage)}))}function F(t){return a["ɵvid"](2,[a["ɵqud"](671088640,1,{scroller:0}),(t()(),a["ɵeld"](1,0,null,null,7,"datatable-selection",[],null,[[null,"select"],[null,"activate"]],(function(t,e,n){var a=!0,r=t.component;return"select"===e&&(a=!1!==r.select.emit(n)&&a),"activate"===e&&(a=!1!==r.activate.emit(n)&&a),a}),mt,bt)),a["ɵdid"](2,49152,[["selector",4]],0,f.l,[],{rows:[0,"rows"],selected:[1,"selected"],selectEnabled:[2,"selectEnabled"],selectionType:[3,"selectionType"],rowIdentity:[4,"rowIdentity"],selectCheck:[5,"selectCheck"]},{activate:"activate",select:"select"}),(t()(),a["ɵand"](16777216,null,0,1,null,A)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,q)),a["ɵdid"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,j)),a["ɵdid"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rows,n.selected,n.selectEnabled,n.selectionType,n.rowIdentity,n.selectCheck),t(e,4,0,n.loadingIndicator),t(e,6,0,null==n.rows?null:n.rows.length),t(e,8,0,!(null!=n.rows&&n.rows.length||n.loadingIndicator))}),null)}var G=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCheckboxChange(n)&&a),a}),null,null))],null,(function(t,e){t(e,1,0,e.component.isSelected)}))}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-collapse"]],null,null,null,null,null))],null,null)}function B(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-up"]],null,null,null,null,null))],null,null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"i",[["class","icon datatable-icon-down"]],null,null,null,null,null))],null,null)}function H(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"button",[["class","datatable-tree-button"]],[[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onTreeAction()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,z)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,B)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Y)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"loading"===n.treeStatus),t(e,5,0,"collapsed"===n.treeStatus),t(e,7,0,"expanded"===n.treeStatus||"disabled"===n.treeStatus)}),(function(t,e){t(e,0,0,"disabled"===e.component.treeStatus)}))}function U(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,U)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{cellContext:0}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.cellContext);t(e,1,0,a,n.column.treeToggleTemplate)}),null)}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,H)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.column.treeToggleTemplate),t(e,4,0,n.column.treeToggleTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[],[[8,"title",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.sanitizedValue,n.value)}))}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function J(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,[[1,3],["cellTemplate",2]],null,1,null,Z)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.cellTemplate)}),null)}function Q(t){return a["ɵvid"](2,[a["ɵqud"](402653184,1,{cellTemplate:0}),(t()(),a["ɵeld"](1,0,null,null,8,"div",[["class","datatable-body-cell-label"]],[[4,"margin-left","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,$)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,J)),a["ɵdid"](9,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.column.checkboxable&&(!n.displayCheck||n.displayCheck(n.row,n.column,n.value))),t(e,5,0,n.column.isTreeColumn),t(e,7,0,!n.column.cellTemplate),t(e,9,0,n.column.cellTemplate)}),(function(t,e){var n=e.component;t(e,1,0,n.calcLeftMargin(n.column,n.row))}))}var X=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-cell",[["tabindex","-1"]],[[8,"className",0],[4,"width","px"],[4,"minWidth","px"],[4,"maxWidth","px"],[4,"height",null]],[[null,"activate"],[null,"treeAction"],[null,"focus"],[null,"blur"],[null,"click"],[null,"dblclick"],[null,"keydown"]],(function(t,e,n){var r=!0,i=t.component;return"focus"===e&&(r=!1!==a["ɵnov"](t,1).onFocus()&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onBlur()&&r),"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n)&&r),"dblclick"===e&&(r=!1!==a["ɵnov"](t,1).onDblClick(n)&&r),"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"activate"===e&&(r=!1!==i.onActivate(n,t.context.index)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction()&&r),r}),Q,G)),a["ɵdid"](1,442368,null,0,f.b,[a.ElementRef,a.ChangeDetectorRef],{displayCheck:[0,"displayCheck"],group:[1,"group"],rowHeight:[2,"rowHeight"],isSelected:[3,"isSelected"],expanded:[4,"expanded"],rowIndex:[5,"rowIndex"],column:[6,"column"],row:[7,"row"],treeStatus:[8,"treeStatus"]},{activate:"activate",treeAction:"treeAction"})],(function(t,e){var n=e.component;t(e,1,0,n.displayCheck,n.group,n.rowHeight,n.isSelected,n.expanded,n.rowIndex,e.context.$implicit,n.row,n.treeStatus)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).columnCssClasses,a["ɵnov"](e,1).width,a["ɵnov"](e,1).minWidth,a["ɵnov"](e,1).maxWidth,a["ɵnov"](e,1).height)}))}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[8,"className",0]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](4,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,2,0,n._groupStyles[e.context.$implicit.type]),t(e,4,0,e.context.$implicit.columns,n.columnTrackingFn)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"datatable-row-",e.context.$implicit.type," datatable-row-group"))}))}function nt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,et)),a["ɵdid"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._columnsByPin,n.trackByGroups)}),null)}var at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","progress-linear"],["role","progressbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","container"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"div",[["class","bar"]],null,null,null,null,null))],null,null)}var it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var ot=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ut(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function lt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.groupContext,n.groupHeader.template)}),null)}function dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","datatable-group-header"]],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgStyleImpl"],o["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgStyle,[o["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,lt)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.getGroupHeaderStyle()),t(e,4,0,n.groupHeader&&n.groupHeader.template)}),null)}function ct(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function ft(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.rowContext,n.rowDetail.template)}),null)}function gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","datatable-row-detail"]],[[4,"height","px"]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.rowDetail&&n.rowDetail.template)}),(function(t,e){t(e,0,0,e.component.detailRowHeight)}))}function pt(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,dt)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ct)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,gt)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.groupHeader&&n.groupHeader.template),t(e,3,0,n.groupHeader&&n.groupHeader.template&&n.expanded||!n.groupHeader||!n.groupHeader.template),t(e,5,0,n.rowDetail&&n.rowDetail.template&&n.expanded)}),null)}var bt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function mt(t){return a["ɵvid"](2,[a["ɵncd"](null,0)],null,null)}var yt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-body-row",[["tabindex","-1"]],[[8,"className",0],[4,"height","px"],[4,"width","px"]],[[null,"keydown"],[null,"mouseenter"]],(function(t,e,n){var r=!0;return"keydown"===e&&(r=!1!==a["ɵnov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["ɵnov"](t,1).onMouseenter(n)&&r),r}),nt,X)),a["ɵdid"](1,311296,null,0,f.d,[a.KeyValueDiffers,[1,f.y],a.ChangeDetectorRef,a.ElementRef],{columns:[0,"columns"],innerWidth:[1,"innerWidth"],row:[2,"row"],rowIndex:[3,"rowIndex"],offsetX:[4,"offsetX"],rowHeight:[5,"rowHeight"]},null)],(function(t,e){var n=e.component;t(e,1,0,n._internalColumns,n.innerWidth,n.summaryRow,-1,n.offsetX,n.rowHeight)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).cssClass,a["ɵnov"](e,1).rowHeight,a["ɵnov"](e,1).columnsTotalWidths)}))}function xt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,vt)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.summaryRow&&n._internalColumns)}),null)}var _t=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,null,null,0))],null,null)}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Tt)),a["ɵdid"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](2,{rowCount:0,pageSize:1,selectedCount:2,curPage:3,offset:4}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,2,0,n.rowCount,n.pageSize,n.selectedCount,n.curPage,n.offset);t(e,1,0,a,n.footerTemplate.template)}),null)}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "," / "]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.selectedCount?null:n.selectedCount.toLocaleString(),n.selectedMessage)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](3,null,[" "," "," "]))],(function(t,e){t(e,2,0,e.component.selectedMessage)}),(function(t,e){var n=e.component;t(e,3,0,null==n.rowCount?null:n.rowCount.toLocaleString(),n.totalMessage)}))}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.page.emit(n)&&a),a}),At,Ct)),a["ɵdid"](1,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,1,0,n.pagerLeftArrowIcon,n.pagerRightArrowIcon,n.pagerPreviousIcon,n.pagerNextIcon,n.pageSize,n.rowCount,n.curPage)}),(function(t,e){t(e,0,0,!e.component.isVisible)}))}function Nt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","datatable-footer-inner"]],[[4,"height","px"]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"selected-count":0}),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,It)),a["ɵdid"](9,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,n.selectedMessage);t(e,2,0,"datatable-footer-inner",a),t(e,5,0,n.footerTemplate),t(e,7,0,!n.footerTemplate),t(e,9,0,!n.footerTemplate)}),(function(t,e){t(e,0,0,e.component.footerHeight)}))}var Ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["class","pages"],["role","button"]],[[1,"aria-label",0],[2,"active",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["href","javascript:void(0)"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(t.context.$implicit.number)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,[" "," "]))],null,(function(t,e){t(e,0,0,"page "+e.context.$implicit.number,e.context.$implicit.number===e.component.page),t(e,2,0,e.context.$implicit.text)}))}function At(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,14,"ul",[["class","pager"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"a",[["aria-label","go to first page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectPage(1)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"a",[["aria-label","go to previous page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.prevPage()&&a),a}),null,null)),(t()(),a["ɵeld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](8,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](9,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](10,0,null,null,1,"a",[["aria-label","go to next page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.nextPage()&&a),a}),null,null)),(t()(),a["ɵeld"](11,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](12,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["ɵeld"](13,0,null,null,1,"a",[["aria-label","go to last page"],["href","javascript:void(0)"],["role","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectPage(r.totalPages)&&a),a}),null,null)),(t()(),a["ɵeld"](14,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){t(e,8,0,e.component.pages)}),(function(t,e){var n=e.component;t(e,1,0,!n.canPrevious()),t(e,3,0,a["ɵinlineInterpolate"](1,"",n.pagerPreviousIcon,"")),t(e,4,0,!n.canPrevious()),t(e,6,0,a["ɵinlineInterpolate"](1,"",n.pagerLeftArrowIcon,"")),t(e,9,0,!n.canNext()),t(e,11,0,a["ɵinlineInterpolate"](1,"",n.pagerRightArrowIcon,"")),t(e,12,0,!n.canNext()),t(e,14,0,a["ɵinlineInterpolate"](1,"",n.pagerNextIcon,""))}))}var kt=n("JxMD"),Et=n("dgut"),Lt=n("Fgil"),Dt=n("iInd"),Pt=n("4DD9"),Mt=n("yT6U"),qt=n("TJUb"),jt=n("efK2");n("uIqm"),n.d(e,"a",(function(){return Ft})),n.d(e,"b",(function(){return Oe}));var Ft=a["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.dataTables_wrapper[_ngcontent-%COMP%]{margin-bottom:25px}.dataTables_wrapper[_ngcontent-%COMP%]   .separator[_ngcontent-%COMP%]{height:30px;border-left:1px solid rgba(0,0,0,.09);padding-left:5px;margin-left:5px;display:inline-block;vertical-align:middle}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding:0 8px}.dataTables_wrapper[_ngcontent-%COMP%]   .widget-toolbar[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-left:0}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]{white-space:nowrap}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{cursor:default}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{width:100%;margin-bottom:0;padding-left:0;padding-right:0;cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dataTables_length[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{line-height:25px;text-align:right}.dataTables_header[_ngcontent-%COMP%]{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative}.dataTables_header[_ngcontent-%COMP%]   .cd-datatable-actions[_ngcontent-%COMP%]{float:left}.dataTables_header[_ngcontent-%COMP%]     .table-filters{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px}.dataTables_header[_ngcontent-%COMP%]     .table-filters label{margin-right:4px}.dataTables_header[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]{padding-left:8px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]{float:right;border-left:1px solid rgba(0,0,0,.09);padding-left:8px;padding-right:8px;width:40%;max-width:250px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{width:8%;min-width:85px;padding-right:8px}.dataTables_header[_ngcontent-%COMP%]   .filter-chips[_ngcontent-%COMP%]{float:right;padding:0 8px}  .cd-datatable{border:1px solid #d1d1d1;margin-bottom:0;max-width:none!important}  .cd-datatable .progress-linear{display:block;position:relative;width:100%;height:5px;padding:0;margin:0}  .cd-datatable .progress-linear .container{background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar{left:0;height:100%;width:100%;position:absolute;overflow:hidden;background-color:#afd9ee}  .cd-datatable .progress-linear .container .bar:before{display:block;position:absolute;content:"";left:-200px;width:200px;height:100%;background-color:#2b99a8;animation:3s linear infinite progress-loading}  .cd-datatable .datatable-header{background-clip:padding-box;background-color:#f5f5f5;background-image:linear-gradient(to bottom,#f5f5f5 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffafafa", endColorstr="#ffededed", GradientType=0)}  .cd-datatable .datatable-header .sort-asc,   .cd-datatable .datatable-header .sort-desc{color:#2b99a8}  .cd-datatable .datatable-header .datatable-header-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;text-align:left;font-weight:700}  .cd-datatable .datatable-header .datatable-header-cell .datatable-header-cell-label:after{font-family:ForkAwesome;font-weight:400;height:9px;left:10px;line-height:12px;position:relative;vertical-align:baseline;width:12px}  .cd-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:" "}  .cd-datatable .datatable-header .datatable-header-cell:first-child{border-left:none}  .cd-datatable .datatable-body{margin-bottom:-6px}  .cd-datatable .datatable-body .empty-row{background-color:#fff3cd;text-align:center;font-weight:700;font-style:italic;padding-top:5px;padding-bottom:5px}  .cd-datatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#eee;transition-property:background;transition-duration:.3s;transition-timing-function:linear}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  .cd-datatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f5f5f5}  .cd-datatable .datatable-body .datatable-body-row.active,   .cd-datatable .datatable-body .datatable-body-row.active:hover{background-color:#d1ecf1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:none}  .cd-datatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block;height:100%}  .cd-datatable .datatable-body .datatable-row-detail{padding:20px;border-bottom:2px solid #d1d1d1;overflow-y:visible!important}  .cd-datatable .datatable-body .expand-collapse-icon{display:block;height:100%;text-align:center}  .cd-datatable .datatable-body .expand-collapse-icon:hover{text-decoration:none}  .cd-datatable .datatable-body .expand-collapse-icon-right:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-body .expand-collapse-icon-down:before{font-family:ForkAwesome,sans-serif;font-size:1rem;color:#212529;line-height:1;content:""}  .cd-datatable .datatable-footer{display:unset!important}  .cd-datatable .datatable-footer .page-count,   .cd-datatable .datatable-footer .selected-count{font-style:italic;padding-left:5px}  .cd-datatable .cd-datatable-checkbox{text-align:center}@keyframes progress-loading{from{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}']],data:{}});function Gt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Failed to load data."]))],(function(t,e){t(e,1,0,"error")}),null)}function Vt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onSelectFilter(t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.column.name)}))}function Bt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,zt)),a["ɵdid"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columnFilters)}),null)}function Yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function Ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"a",[["class","dropdown-item"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(r.onChangeFilter(r.selectedFilter,t.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵted"](2,null,[""," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Yt)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,void 0!==n.selectedFilter.value&&n.selectedFilter.value.raw===e.context.$implicit.raw)}),(function(t,e){t(e,2,0,e.context.$implicit.formatted)}))}function Ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right px-1"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ht)),a["ɵdid"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.selectedFilter.options)}),null)}function Wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,20,"div",[["class","btn-group widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,16777216,null,null,11,"div",[["class","btn-group tc_filter_name"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,u.f,u.f,[]),a["ɵdid"](3,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,u.f,u.a,d.b],null,null),(t()(),a["ɵeld"](4,0,null,null,6,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),r}),null,null)),a["ɵdid"](5,147456,null,0,u.g,[a.ChangeDetectorRef,u.c,a.ElementRef,a.Renderer2,u.f],null,null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,2),(t()(),a["ɵted"](10,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Bt)),a["ɵdid"](12,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵeld"](13,16777216,null,null,7,"div",[["class","btn-group tc_filter_option"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,u.f,u.f,[]),a["ɵdid"](15,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,u.f,u.a,d.b],null,null),(t()(),a["ɵeld"](16,0,null,null,2,"a",[["class","btn btn-light dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[2,"disabled",null],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,17).onClick()&&r),r}),null,null)),a["ɵdid"](17,147456,null,0,u.g,[a.ChangeDetectorRef,u.c,a.ElementRef,a.Renderer2,u.f],null,null),(t()(),a["ɵted"](18,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,Ut)),a["ɵdid"](20,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,3,0);var a=t(e,9,0,n.icons.large,n.icons.filter);t(e,8,0,a),t(e,15,0)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵnov"](e,3).dropup,a["ɵnov"](e,3).isOpen,a["ɵnov"](e,3).isOpen&&a["ɵnov"](e,3).isBs4),t(e,4,0,!0,a["ɵnov"](e,5).isDisabled,a["ɵnov"](e,5).isOpen),t(e,10,0,n.selectedFilter.column.name),t(e,13,0,a["ɵnov"](e,15).dropup,a["ɵnov"](e,15).isOpen,a["ɵnov"](e,15).isOpen&&a["ɵnov"](e,15).isBs4),t(e,16,0,0===n.selectedFilter.options.length,!0,a["ɵnov"](e,17).isDisabled,a["ɵnov"](e,17).isOpen),t(e,18,0,n.selectedFilter.value?n.selectedFilter.value.formatted:"Any")}))}function Kt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","input-group search"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"span",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,1),(t()(),a["ɵeld"](7,0,null,null,5,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.search=n)&&r),"keyup"===e&&(r=!1!==i.updateFilter()&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,c.e,[a.Renderer2,a.ElementRef,[2,c.b]],null,null),a["ɵprd"](1024,null,c.p,(function(t){return[t]}),[c.e]),a["ɵdid"](10,671744,null,0,c.u,[[8,null],[8,null],[8,null],[6,c.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,c.q,null,[c.u]),a["ɵdid"](12,16384,null,0,c.r,[[4,c.q]],null,null),(t()(),a["ɵeld"](13,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),a["ɵeld"](14,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onClearSearch()&&a),a}),null,null)),(t()(),a["ɵeld"](15,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null))],(function(t,e){var n=e.component,a=t(e,6,0,n.icons.search);t(e,5,0,a),t(e,10,0,n.search)}),(function(t,e){var n=e.component;t(e,7,0,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending),t(e,15,0,a["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,""))}))}function $t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,0,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"name",0],[8,"id",0],[8,"checked",0]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.toggleColumn(n)&&a),a}),null,null)),(t()(),a["ɵeld"](3,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["ɵted"](4,null,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.prop,e.parent.context.$implicit.prop,!e.parent.context.$implicit.isHidden),t(e,3,0,e.parent.context.$implicit.prop),t(e,4,0,e.parent.context.$implicit.name)}))}function Zt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,$t)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,""!==e.context.$implicit.name)}),null)}function Jt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu px-3"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Zt)),a["ɵdid"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.columns)}),null)}function Qt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","widget-toolbar tc_refreshBtn"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshBtn()&&a),a}),null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,2)],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.large,n.icons.refresh);t(e,4,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.updating||n.loadingIndicator)}))}function Xt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,23,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","cd-datatable-actions"]],null,null,null,null,null)),a["ɵncd"](null,1),a["ɵncd"](null,2),(t()(),a["ɵand"](16777216,null,null,1,null,Wt)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Kt)),a["ɵdid"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](8,0,null,null,1,"div",[["class","input-group dataTables_paginate"]],null,null,null,null,null)),(t()(),a["ɵeld"](9,0,null,null,0,"input",[["class","form-control"],["max","9999"],["min","1"],["type","number"]],[[8,"value",0]],[[null,"click"],[null,"keyup"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.setLimit(n)&&a),"keyup"===e&&(a=!1!==r.setLimit(n)&&a),"blur"===e&&(a=!1!==r.setLimit(n)&&a),a}),null,null)),(t()(),a["ɵeld"](10,0,null,null,11,"div",[["class","widget-toolbar"]],null,null,null,null,null)),(t()(),a["ɵeld"](11,16777216,null,null,10,"div",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,u.f,u.f,[]),a["ɵdid"](13,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,u.f,u.a,d.b],{autoClose:[0,"autoClose"]},null),(t()(),a["ɵeld"](14,0,null,null,5,"a",[["class","btn btn-light dropdown-toggle tc_columnBtn"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,15).onClick()&&r),r}),null,null)),a["ɵdid"](15,147456,null,0,u.g,[a.ChangeDetectorRef,u.c,a.ElementRef,a.Renderer2,u.f],null,null),(t()(),a["ɵeld"](16,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](18,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](19,2),(t()(),a["ɵand"](16777216,null,null,1,null,Jt)),a["ɵdid"](21,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,Qt)),a["ɵdid"](23,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,0!==n.columnFilters.length),t(e,7,0,n.searchField),t(e,13,0,!1);var a=t(e,19,0,n.icons.large,n.icons.table);t(e,18,0,a),t(e,23,0,n.fetchData.observers.length>0)}),(function(t,e){t(e,9,0,e.component.userConfig.limit),t(e,11,0,a["ɵnov"](e,13).dropup,a["ɵnov"](e,13).isOpen,a["ɵnov"](e,13).isOpen&&a["ɵnov"](e,13).isBs4),t(e,14,0,!0,a["ɵnov"](e,15).isDisabled,a["ɵnov"](e,15).isOpen)}))}function te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"span",[["class","badge badge-info mr-2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",": ",""])),(t()(),a["ɵeld"](3,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onChangeFilter(t.parent.context.$implicit),a=!1),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](6,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](7,1)],(function(t,e){var n=t(e,7,0,e.component.icons.destroy);t(e,6,0,n)}),(function(t,e){t(e,2,0,e.parent.context.$implicit.column.name,e.parent.context.$implicit.value.formatted)}))}function ee(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,te)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.value)}),null)}function ne(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"div",[["class","dataTables_header clearfix"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","filter-chips"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ee)),a["ɵdid"](3,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](4,0,null,null,2,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.onClearFilters(),a=!1),a}),null,null)),(t()(),a["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Clear filters"]))],(function(t,e){t(e,3,0,e.component.columnFilters)}),null)}function ae(t){return a["ɵvid"](0,[a["ɵncd"](null,3),(t()(),a["ɵand"](0,null,null,0))],null,null)}function re(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["selected"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.selectedCount)}))}function ie(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "])),(t()(),a["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["found"])),(t()(),a["ɵted"](-1,null,[" / "]))],null,(function(t,e){t(e,1,0,e.parent.context.rowCount)}))}function se(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,re)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ie)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" "," "])),(t()(),a["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["total"])),(t()(),a["ɵeld"](9,0,null,null,1,"datatable-pager",[["class","datatable-pager"]],[[8,"hidden",0]],[[null,"change"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t.parent,26).onFooterPage(n)&&r),r}),At,Ct)),a["ɵdid"](10,49152,null,0,f.j,[],{pagerLeftArrowIcon:[0,"pagerLeftArrowIcon"],pagerRightArrowIcon:[1,"pagerRightArrowIcon"],pagerPreviousIcon:[2,"pagerPreviousIcon"],pagerNextIcon:[3,"pagerNextIcon"],size:[4,"size"],count:[5,"count"],page:[6,"page"]},{change:"change"})],(function(t,e){var n=e.component;t(e,2,0,n.selectionType),t(e,4,0,e.context.rowCount!=(null==n.data?null:n.data.length)),t(e,10,0,n.paginationClasses.pagerLeftArrow,n.paginationClasses.pagerRightArrow,n.paginationClasses.pagerPrevious,n.paginationClasses.pagerNext,e.context.pageSize,e.context.rowCount,e.context.curPage)}),(function(t,e){var n=e.component;t(e,6,0,(null==n.data?null:n.data.length)||0),t(e,9,0,!(e.context.rowCount/e.context.pageSize>1))}))}function oe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function ue(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-sparkline",[],null,null,null,kt.b,kt.a)),a["ɵdid"](1,638976,null,0,Et.a,[Lt.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],(function(t,e){t(e,1,0,e.context.value,e.context.row.cdIsBinary)}),null)}function le(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r}),null,null)),a["ɵdid"](1,671744,null,0,Dt.p,[Dt.m,Dt.a,o.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),a["ɵpad"](2,1),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){var n=e.context.row.cdParams,a=t(e,2,0,e.context.row.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,a["ɵnov"](e,1).target,a["ɵnov"](e,1).href),t(e,3,0,e.context.value)}))}function de(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"i",[],[[8,"hidden",0]],null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1),a["ɵppd"](4,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),(function(t,e){var n=!a["ɵunv"](e,0,0,t(e,4,0,a["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n)}))}function ce(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," /s\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function fe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function he(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","text-muted italic"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["(",")"]))],null,(function(t,e){t(e,1,0,e.parent.context.row.cdExecuting)}))}function ge(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,fe)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,he)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.row.cdExecuting),t(e,4,0,e.context.row.cdExecuting)}),(function(t,e){t(e,2,0,e.context.value)}))}function pe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"",e.component.useCustomClass(e.context.value),"")),t(e,1,0,e.context.value)}))}function be(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),a["ɵprd"](512,null,o["ɵNgClassImpl"],o["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,o.NgClass,[o["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].class:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.class?e.parent.parent.context.column.customTemplateConfig.class:"badge-primary")}),(function(t,e){t(e,3,0,null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.map&&null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&null!=e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit]&&e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value?e.parent.parent.context.column.customTemplateConfig.map[e.parent.context.$implicit].value:null!=e.parent.parent.context.column&&null!=e.parent.parent.context.column.customTemplateConfig&&e.parent.parent.context.column.customTemplateConfig.prefix?e.parent.parent.context.column.customTemplateConfig.prefix+e.parent.context.$implicit:e.parent.context.$implicit)}))}function me(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" "]))],null,null)}function ye(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,be)),a["ɵdid"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,me)),a["ɵdid"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.map&&null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&null!=e.parent.context.column.customTemplateConfig.map[e.context.$implicit]&&e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value?e.parent.context.column.customTemplateConfig.map[e.context.$implicit].value:null!=e.parent.context.column&&null!=e.parent.context.column.customTemplateConfig&&e.parent.context.column.customTemplateConfig.prefix?e.parent.context.column.customTemplateConfig.prefix+e.context.$implicit:e.context.$implicit),t(e,4,0,!e.context.last)}),null)}function ve(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,ye)),a["ɵdid"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵppd"](2,1),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,1),e.context.value));t(e,1,0,n)}),null)}function xe(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,2)],null,(function(t,e){var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,2),e.context.value,null==e.context.column?null:e.context.column.customTemplateConfig));t(e,1,0,n)}))}function _e(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[["data-toggle","tooltip"]],[[8,"title",0]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""])),a["ɵppd"](2,3)],null,(function(t,e){t(e,0,0,e.context.value);var n=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,3),e.context.value,null==e.context.column?null:null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.length,null==e.context.column?null:null==e.context.column.customTemplateConfig?null:e.context.column.customTemplateConfig.omission));t(e,1,0,n)}))}function Te(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"a",[["class","expand-collapse-icon tc_expand-collapse"],["href","javascript:void(0)"],["title","Expand/Collapse Row"]],[[2,"expand-collapse-icon-right",null],[2,"expand-collapse-icon-down",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleExpandRow(t.context.row,t.context.expanded)&&a),a}),null,null))],null,(function(t,e){t(e,0,0,!e.context.expanded,e.context.expanded)}))}function Oe(t){return a["ɵvid"](2,[a["ɵpid"](0,Pt.a,[]),a["ɵpid"](0,Mt.a,[]),a["ɵpid"](0,qt.a,[]),a["ɵpid"](0,jt.a,[]),a["ɵqud"](402653184,1,{table:0}),a["ɵqud"](402653184,2,{tableCellBoldTpl:0}),a["ɵqud"](402653184,3,{sparklineTpl:0}),a["ɵqud"](402653184,4,{routerLinkTpl:0}),a["ɵqud"](402653184,5,{checkIconTpl:0}),a["ɵqud"](402653184,6,{perSecondTpl:0}),a["ɵqud"](402653184,7,{executingTpl:0}),a["ɵqud"](402653184,8,{classAddingTpl:0}),a["ɵqud"](402653184,9,{badgeTpl:0}),a["ɵqud"](402653184,10,{mapTpl:0}),a["ɵqud"](402653184,11,{truncateTpl:0}),a["ɵqud"](402653184,12,{rowDetailsTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,Gt)),a["ɵdid"](17,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](18,0,null,null,22,"div",[["class","dataTables_wrapper"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Vt)),a["ɵdid"](20,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Xt)),a["ɵdid"](22,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ne)),a["ɵdid"](24,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](25,0,null,null,15,"ngx-datatable",[["class","bootstrap cd-datatable ngx-datatable"]],[[2,"fixed-header",null],[2,"fixed-row",null],[2,"scroll-vertical",null],[2,"virtualized",null],[2,"scroll-horz",null],[2,"selectable",null],[2,"checkbox-selection",null],[2,"cell-selection",null],[2,"single-selection",null],[2,"multi-selection",null],[2,"multi-click-selection",null]],[[null,"select"],[null,"sort"],["window","resize"]],(function(t,e,n){var r=!0,i=t.component;return"window:resize"===e&&(r=!1!==a["ɵnov"](t,26).onWindowResize()&&r),"select"===e&&(r=!1!==i.onSelect(n)&&r),"sort"===e&&(r=!1!==i.changeSorting(n)&&r),r}),b,h)),a["ɵdid"](26,5750784,[[1,4],["table",4]],4,f.n,[[1,f.y],[1,f.r],a.ChangeDetectorRef,a.ElementRef,a.KeyValueDiffers,f.a,[2,"configuration"]],{rows:[0,"rows"],columns:[1,"columns"],selected:[2,"selected"],rowHeight:[3,"rowHeight"],columnMode:[4,"columnMode"],headerHeight:[5,"headerHeight"],footerHeight:[6,"footerHeight"],limit:[7,"limit"],loadingIndicator:[8,"loadingIndicator"],selectionType:[9,"selectionType"],sorts:[10,"sorts"],cssClasses:[11,"cssClasses"],rowClass:[12,"rowClass"],rowIdentity:[13,"rowIdentity"]},{select:"select",sort:"sort"}),a["ɵqud"](603979776,13,{columnTemplates:1}),a["ɵqud"](603979776,14,{rowDetail:0}),a["ɵqud"](603979776,15,{groupHeader:0}),a["ɵqud"](603979776,16,{footer:0}),(t()(),a["ɵeld"](31,0,[["detailRow",1]],null,4,"ngx-datatable-row-detail",[["rowHeight","auto"]],null,null,null,null,null)),a["ɵdid"](32,16384,[[14,4]],1,f.p,[],{rowHeight:[0,"rowHeight"]},null),a["ɵqud"](335544320,17,{_templateQuery:0}),(t()(),a["ɵand"](0,[[17,2]],null,1,null,ae)),a["ɵdid"](35,16384,null,0,f.q,[a.TemplateRef],null,null),(t()(),a["ɵeld"](36,0,null,null,4,"ngx-datatable-footer",[],null,null,null,null,null)),a["ɵdid"](37,16384,[[16,4]],1,f.o,[],null,null),a["ɵqud"](603979776,18,{_templateQuery:0}),(t()(),a["ɵand"](0,[[18,2]],null,1,null,se)),a["ɵdid"](40,16384,null,0,f.g,[a.TemplateRef],null,null),(t()(),a["ɵand"](0,[[2,2],["tableCellBoldTpl",2]],null,0,null,oe)),(t()(),a["ɵand"](0,[[3,2],["sparklineTpl",2]],null,0,null,ue)),(t()(),a["ɵand"](0,[[4,2],["routerLinkTpl",2]],null,0,null,le)),(t()(),a["ɵand"](0,[[5,2],["checkIconTpl",2]],null,0,null,de)),(t()(),a["ɵand"](0,[[6,2],["perSecondTpl",2]],null,0,null,ce)),(t()(),a["ɵand"](0,[[7,2],["executingTpl",2]],null,0,null,ge)),(t()(),a["ɵand"](0,[[8,2],["classAddingTpl",2]],null,0,null,pe)),(t()(),a["ɵand"](0,[[9,2],["badgeTpl",2]],null,0,null,ve)),(t()(),a["ɵand"](0,[[10,2],["mapTpl",2]],null,0,null,xe)),(t()(),a["ɵand"](0,[[11,2],["truncateTpl",2]],null,0,null,_e)),(t()(),a["ɵand"](0,[[12,2],["rowDetailsTpl",2]],null,1,null,Te)),a["ɵdid"](52,16384,null,0,f.e,[a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,17,0,n.loadingError),t(e,20,0,n.onlyActionHeader),t(e,22,0,n.toolHeader),t(e,24,0,n.toolHeader&&n.columnFiltered),t(e,26,1,[n.rows,n.tableColumns,n.selection.selected,"auto",n.columnMode,n.header?"auto":0,n.footer?"auto":0,n.userConfig.limit>0?n.userConfig.limit:void 0,n.loadingIndicator,n.selectionType,n.userConfig.sorts,n.paginationClasses,n.getRowClass(),n.rowIdentity()]),t(e,32,0,"auto")}),(function(t,e){t(e,25,1,[a["ɵnov"](e,26).isFixedHeader,a["ɵnov"](e,26).isFixedRow,a["ɵnov"](e,26).isVertScroll,a["ɵnov"](e,26).isVirtualized,a["ɵnov"](e,26).isHorScroll,a["ɵnov"](e,26).isSelectable,a["ɵnov"](e,26).isCheckboxSelection,a["ɵnov"](e,26).isCellSelection,a["ɵnov"](e,26).isSingleSelection,a["ɵnov"](e,26).isMultiSelection,a["ɵnov"](e,26).isMultiClickSelection])}))}},"2EZI":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("s7LF"),r=n("QFaf"),i=n("8Y7J");let s=(()=>{class t extends a.h{group(t,e=null){const n=super.group(t,e);return new r.a(n.controls,n.validator,n.asyncValidator)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},"2QA8":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random())()},"2Vo4":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("XNiG"),r=n("9ppp");class i extends a.a{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const e=super._subscribe(t);return e&&!e.closed&&t.next(this._value),e}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new r.a;return this._value}next(t){super.next(this._value=t)}}},"2ZVE":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return u})),n.d(e,"d",(function(){return l})),n.d(e,"e",(function(){return s})),n.d(e,"f",(function(){return i}));var a=n("8Y7J");class r{constructor(t){this.viewRef=t}set ngTransclude(t){this._ngTransclude=t,t&&this.viewRef.createEmbeddedView(t)}get ngTransclude(){return this._ngTransclude}}class i{constructor(){this.type="tabs",this.ariaLabel="Tabs"}}class s{constructor(t,e,n){this.renderer=e,this.elementRef=n,this.clazz=!0,this.tabs=[],this.classMap={},Object.assign(this,t)}get vertical(){return this._vertical}set vertical(t){this._vertical=t,this.setClassMap()}get justified(){return this._justified}set justified(t){this._justified=t,this.setClassMap()}get type(){return this._type}set type(t){this._type=t,this.setClassMap()}ngOnDestroy(){this.isDestroyed=!0}addTab(t){this.tabs.push(t),t.active=1===this.tabs.length&&void 0===t.active}removeTab(t,e={reselect:!0,emit:!0}){const n=this.tabs.indexOf(t);if(-1!==n&&!this.isDestroyed){if(e.reselect&&t.active&&this.hasAvailableTabs(n)){const t=this.getClosestTabIndex(n);this.tabs[t].active=!0}e.emit&&t.removed.emit(t),this.tabs.splice(n,1),t.elementRef.nativeElement.parentNode&&this.renderer.removeChild(t.elementRef.nativeElement.parentNode,t.elementRef.nativeElement)}}keyNavActions(t,e){const n=Array.from(this.elementRef.nativeElement.querySelectorAll(".nav-link"));if(13===t.keyCode||"Enter"===t.key||32===t.keyCode||"Space"===t.key)return t.preventDefault(),void n[e%n.length].click();if(39!==t.keyCode&&"RightArrow"!==t.key)if(37!==t.keyCode&&"LeftArrow"!==t.key)if(36!==t.keyCode&&"Home"!==t.key)if(35!==t.keyCode&&"End"!==t.key){if((46===t.keyCode||"Delete"===t.key)&&this.tabs[e].removable){if(this.removeTab(this.tabs[e]),n[e+1])return void n[(e+1)%n.length].focus();n[n.length-1]&&n[0].focus()}}else{let a;t.preventDefault();let r=1,i=e;do{i-r<0?(i=n.length-1,a=n[i],r=0):a=n[i-r],r++}while(a.classList.contains("disabled"));a.focus()}else{let e;t.preventDefault();let a=0;do{e=n[a%n.length],a++}while(e.classList.contains("disabled"));e.focus()}else{let t,a=1,r=e;do{r-a<0?(r=n.length-1,t=n[r],a=0):t=n[r-a],a++}while(t.classList.contains("disabled"));t.focus()}else{let t,a=1;do{t=n[(e+a)%n.length],a++}while(t.classList.contains("disabled"));t.focus()}}getClosestTabIndex(t){const e=this.tabs.length;if(!e)return-1;for(let n=1;n<=e;n+=1){const e=t-n,a=t+n;if(this.tabs[e]&&!this.tabs[e].disabled)return e;if(this.tabs[a]&&!this.tabs[a].disabled)return a}return-1}hasAvailableTabs(t){const e=this.tabs.length;if(!e)return!1;for(let n=0;n<e;n+=1)if(!this.tabs[n].disabled&&n!==t)return!0;return!1}setClassMap(){this.classMap={"nav-stacked":this.vertical,"flex-column":this.vertical,"nav-justified":this.justified,[`nav-${this.type}`]:!0}}}class o{constructor(t,e,n){this.elementRef=e,this.renderer=n,this.selectTab=new a.EventEmitter,this.deselect=new a.EventEmitter,this.removed=new a.EventEmitter,this.addClass=!0,this.role="tabpanel",this.tabset=t,this.tabset.addTab(this)}get customClass(){return this._customClass}set customClass(t){this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.removeClass(this.elementRef.nativeElement,t)}),this._customClass=t?t.trim():null,this.customClass&&this.customClass.split(" ").forEach(t=>{this.renderer.addClass(this.elementRef.nativeElement,t)})}get active(){return this._active}set active(t){this._active!==t&&(this.disabled&&t||!t?this._active&&!t&&(this.deselect.emit(this),this._active=t):(this._active=t,this.selectTab.emit(this),this.tabset.tabs.forEach(t=>{t!==this&&(t.active=!1)})))}get ariaLabelledby(){return this.id?`${this.id}-link`:""}ngOnInit(){this.removable=this.removable}ngOnDestroy(){this.tabset.removeTab(this,{reselect:!1,emit:!1})}}class u{constructor(t,e){e.headingRef=t}}class l{static forRoot(){return{ngModule:l,providers:[i]}}}},"2ajD":function(t,e){t.exports=function(t){return t!=t}},"2fFW":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));let a=!1;const r={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){if(t){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else a&&console.log("RxJS: Back to a better error behavior. Thank you. <3");a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},"2fjn":function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}}})}(n("wd/R"))},"2gN3":function(t,e,n){var a=n("Kz5y");t.exports=a["__core-js_shared__"]},"2oRo":function(t,e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof global&&global)||Function("return this")()},"2uy1":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("XNiG"),s=n("VRyK"),o=n("xgIS"),u=n("LRne"),l=n("3N8a");class d extends l.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}requestAsyncId(t,e,n=0){return null!==n&&n>0?super.requestAsyncId(t,e,n):(t.actions.push(this),t.scheduled||(t.scheduled=requestAnimationFrame(()=>t.flush(null))))}recycleAsyncId(t,e,n=0){if(null!==n&&n>0||null===n&&this.delay>0)return super.recycleAsyncId(t,e,n);0===t.actions.length&&(cancelAnimationFrame(e),t.scheduled=void 0)}}var c=n("IjjT");class f extends c.a{flush(t){this.active=!0,this.scheduled=void 0;const{actions:e}=this;let n,a=-1,r=e.length;t=t||e.shift();do{if(n=t.execute(t.state,t.delay))break}while(++a<r&&(t=e.shift()));if(this.active=!1,n){for(;++a<r&&(t=e.shift());)t.unsubscribe();throw n}}}const h=new f(d);function g(t,e){if(1!==t.nodeType)return[];const n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function p(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function b(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}const{overflow:e,overflowX:n,overflowY:a}=g(t);return/(auto|scroll|overlay)/.test(String(e)+String(a)+String(n))?t:b(p(t))}n.d(e,"a",(function(){return U}));const m="undefined"!=typeof window&&"undefined"!=typeof document,y=m&&!(!window.MSInputMethodContext||!document.documentMode),v=m&&!(!window.MSInputMethodContext||!/MSIE 10/.test(navigator.userAgent));function x(t){return 11===t?y:10===t?v:y||v}function _(t){if(!t)return document.documentElement;const e=x(10)?document.body:null;let n,a=t.offsetParent||null;for(;a===e&&t.nextElementSibling&&n!==t.nextElementSibling;)n=t.nextElementSibling,a=n.offsetParent;const r=a&&a.nodeName;return r&&"BODY"!==r&&"HTML"!==r?-1!==["TH","TD","TABLE"].indexOf(a.nodeName)&&"static"===g(a,"position")?_(a):a:n?n.ownerDocument.documentElement:document.documentElement}function T(t){return null!==t.parentNode?T(t.parentNode):t}function O(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;const n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,a=n?t:e,r=n?e:t,i=document.createRange();i.setStart(a,0),i.setEnd(r,0);const{commonAncestorContainer:s}=i;if(t!==s&&e!==s||a.contains(r))return function(t){const{nodeName:e}=t;return"BODY"!==e&&("HTML"===e||_(t.firstElementChild)===t)}(s)?s:_(s);const o=T(t);return o.host?O(o.host,e):O(t,T(e).host)}function w(t,e){const n="x"===e?"Left":"Top",a="Left"===n?"Right":"Bottom";return parseFloat(t[`border${n}Width`])+parseFloat(t[`border${a}Width`])}function S(t,e,n,a){return Math.max(e[`offset${t}`],e[`scroll${t}`],n[`client${t}`],n[`offset${t}`],n[`scroll${t}`],x(10)?parseInt(n[`offset${t}`],10)+parseInt(a[`margin${"Height"===t?"Top":"Left"}`],10)+parseInt(a[`margin${"Height"===t?"Bottom":"Right"}`],10):0)}function I(t){const e=t.body,n=t.documentElement,a=x(10)&&getComputedStyle(n);return{height:S("Height",e,n,a),width:S("Width",e,n,a)}}function N(t,e="top"){const n="top"===e?"scrollTop":"scrollLeft",a=t.nodeName;if("BODY"===a||"HTML"===a){const e=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||e)[n]}return t[n]}function C(t){return Object.assign({},t,{right:t.left+t.width,bottom:t.top+t.height})}function R(t){let e={};try{if(x(10)){e=t.getBoundingClientRect();const n=N(t,"top"),a=N(t,"left");e.top+=n,e.left+=a,e.bottom+=n,e.right+=a}else e=t.getBoundingClientRect()}catch(s){return}const n={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},a="HTML"===t.nodeName?I(t.ownerDocument):{};let r=t.offsetWidth-(a.width||t.clientWidth||n.right-n.left),i=t.offsetHeight-(a.height||t.clientHeight||n.bottom-n.top);if(r||i){const e=g(t);r-=w(e,"x"),i-=w(e,"y"),n.width-=r,n.height-=i}return C(n)}function A(t,e,n=!1){const a=x(10),r="HTML"===e.nodeName,i=R(t),s=R(e),o=b(t),u=g(e),l=parseFloat(u.borderTopWidth),d=parseFloat(u.borderLeftWidth);n&&r&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));let c=C({top:i.top-s.top-l,left:i.left-s.left-d,width:i.width,height:i.height});if(c.marginTop=0,c.marginLeft=0,!a&&r){const t=parseFloat(u.marginTop),e=parseFloat(u.marginLeft);c.top-=l-t,c.bottom-=l-t,c.left-=d-e,c.right-=d-e,c.marginTop=t,c.marginLeft=e}return(a&&!n?e.contains(o):e===o&&"BODY"!==o.nodeName)&&(c=function(t,e,n=!1){const a=N(e,"top"),r=N(e,"left"),i=n?-1:1;return t.top+=a*i,t.bottom+=a*i,t.left+=r*i,t.right+=r*i,t}(c,e)),c}function k(t){if(!t||!t.parentElement||x())return document.documentElement;let e=t.parentElement;for(;e&&"none"===g(e,"transform");)e=e.parentElement;return e||document.documentElement}function E(t,e,n=0,a,r=!1){let i={top:0,left:0};const s=r?k(t):O(t,e);if("viewport"===a)i=function(t,e=!1){const n=t.ownerDocument.documentElement,a=A(t,n),r=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:N(n),o=e?0:N(n,"left");return C({top:s-Number(a.top)+Number(a.marginTop),left:o-Number(a.left)+Number(a.marginLeft),width:r,height:i})}(s,r);else{let n;"scrollParent"===a?(n=b(p(e)),"BODY"===n.nodeName&&(n=t.ownerDocument.documentElement)):n="window"===a?t.ownerDocument.documentElement:a;const o=A(n,s,r);if("HTML"!==n.nodeName||function t(e){const n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===g(e,"position")||t(p(e)))}(s))i=o;else{const{height:e,width:n}=I(t.ownerDocument);i.top+=o.top-o.marginTop,i.bottom=Number(e)+Number(o.top),i.left+=o.left-o.marginLeft,i.right=Number(n)+Number(o.left)}}return i.left+=n,i.top+=n,i.right-=n,i.bottom-=n,i}function L({width:t,height:e}){return t*e}function D(t,e,n,a,r=["top","bottom","right","left"],i="viewport",s=0){if(-1===t.indexOf("auto"))return t;const o=E(n,a,s,i),u={top:{width:o.width,height:e.top-o.top},right:{width:o.right-e.right,height:o.height},bottom:{width:o.width,height:o.bottom-e.bottom},left:{width:e.left-o.left,height:o.height}},l=Object.keys(u).map(t=>Object.assign({key:t},u[t],{area:L(u[t])})).sort((t,e)=>e.area-t.area);let d=l.filter(({width:t,height:e})=>t>=n.clientWidth&&e>=n.clientHeight);d=d.filter(t=>r.some(e=>e===t.key));const c=d.length>0?d[0].key:l[0].key,f=t.split(" ")[1];return n.className=n.className.replace(/bs-tooltip-auto/g,`bs-tooltip-${c}`),c+(f?`-${f}`:"")}function P(t){const e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),a=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:Number(t.offsetWidth)+a,height:Number(t.offsetHeight)+n}}function M(t,e,n=null){return A(e,n?k(t):O(t,e),n)}function q(t,e,n){const a=n.split(" ")[0],r=P(t),i={width:r.width,height:r.height},s=-1!==["right","left"].indexOf(a),o=s?"top":"left",u=s?"left":"top",l=s?"height":"width",d=s?"width":"height";return i[o]=e[o]+e[l]/2-r[l]/2,i[u]=a===u?e[u]-r[d]:e[function(t){const e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,t=>e[t])}(u)],i}function j(t,e){return t&&t.modifiers&&t.modifiers[e]&&t.modifiers[e].enabled}function F(t,e,n){Object.keys(e).forEach(a=>{let r="";var i;-1!==["width","height","top","right","bottom","left"].indexOf(a)&&""!==(i=e[a])&&!isNaN(parseFloat(i))&&isFinite(i)&&(r="px"),n?n.setStyle(t,a,`${String(e[a])}${r}`):t.style[a]=String(e[a])+r})}function G(t){let e=t.offsets.target;const n=t.instance.target.querySelector(".arrow");if(!n)return t;const a=-1!==["left","right"].indexOf(t.placement),r=a?"height":"width",i=a?"Top":"Left",s=i.toLowerCase(),o=a?"left":"top",u=a?"bottom":"right",l=P(n)[r];t.offsets.host[u]-l<e[s]&&(e[s]-=e[s]-(t.offsets.host[u]-l)),Number(t.offsets.host[s])+Number(l)>e[u]&&(e[s]+=Number(t.offsets.host[s])+Number(l)-Number(e[u])),e=C(e);const d=Number(t.offsets.host[s])+Number(t.offsets.host[r]/2-l/2),c=g(t.instance.target),f=parseFloat(c[`margin${i}`]),h=parseFloat(c[`border${i}Width`]);let p=d-e[s]-f-h;return p=Math.max(Math.min(e[r]-l,p),0),t.offsets.arrow={[s]:Math.round(p),[o]:""},t.instance.arrow=n,t}function V(t){if(t.offsets.target=C(t.offsets.target),!j(t.options,"flip"))return t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)),t;const e=E(t.instance.target,t.instance.host,0,"viewport",!1);let n=t.placement.split(" ")[0],a=t.placement.split(" ")[1]||"";const r=D("auto",t.offsets.host,t.instance.target,t.instance.host,t.options.allowedPositions),i=[n,r];return i.forEach((r,s)=>{if(n!==r||i.length===s+1)return t;n=t.placement.split(" ")[0];const o="left"===n&&Math.floor(t.offsets.target.right)>Math.floor(t.offsets.host.left)||"right"===n&&Math.floor(t.offsets.target.left)<Math.floor(t.offsets.host.right)||"top"===n&&Math.floor(t.offsets.target.bottom)>Math.floor(t.offsets.host.top)||"bottom"===n&&Math.floor(t.offsets.target.top)<Math.floor(t.offsets.host.bottom),u=Math.floor(t.offsets.target.left)<Math.floor(e.left),l=Math.floor(t.offsets.target.right)>Math.floor(e.right),d=Math.floor(t.offsets.target.top)<Math.floor(e.top),c=Math.floor(t.offsets.target.bottom)>Math.floor(e.bottom),f="left"===n&&u||"right"===n&&l||"top"===n&&d||"bottom"===n&&c,h=-1!==["top","bottom"].indexOf(n),g=h&&"left"===a&&u||h&&"right"===a&&l||!h&&"left"===a&&d||!h&&"right"===a&&c;(o||f||g)&&((o||f)&&(n=i[s+1]),g&&(a=function(t){return"right"===t?"left":"left"===t?"right":t}(a)),t.placement=n+(a?` ${a}`:""),t.offsets.target=Object.assign({},t.offsets.target,q(t.instance.target,t.offsets.host,t.placement)))}),t}function z(t){if(!j(t.options,"preventOverflow"))return t;const e="transform",n=t.instance.target.style,{top:a,left:r,[e]:i}=n;n.top="",n.left="",n[e]="";const s=E(t.instance.target,t.instance.host,0,"scrollParent",!1);n.top=a,n.left=r,n[e]=i;const o={primary(e){let n=t.offsets.target[e];return t.offsets.target[e]<s[e]&&(n=Math.max(t.offsets.target[e],s[e])),{[e]:n}},secondary(e){const n="right"===e?"left":"top";let a=t.offsets.target[n];return t.offsets.target[e]>s[e]&&(a=Math.min(t.offsets.target[n],s[e]-("right"===e?t.offsets.target.width:t.offsets.target.height))),{[n]:a}}};let u;return["left","right","top","bottom"].forEach(e=>{u=-1!==["left","top"].indexOf(e)?"primary":"secondary",t.offsets.target=Object.assign({},t.offsets.target,o[u](e))}),t}function B(t){const e=t.placement,n=e.split(" ")[0],a=e.split(" ")[1];if(a){const{host:e,target:r}=t.offsets,i=-1!==["bottom","top"].indexOf(n),s=i?"left":"top",o=i?"width":"height";t.offsets.target=Object.assign({},r,{start:{[s]:e[s]},end:{[s]:e[s]+e[o]-r[o]}}[a])}return t}class Y{position(t,e,n=!0){return this.offset(t,e,!1)}offset(t,e,n=!0){return M(e,t)}positionElements(t,e,n,a,r){return[V,B,z,G].reduce((t,e)=>e(t),function(t,e,n,a){const r=M(t,e);n.match(/^(auto)*\s*(left|right|top|bottom)*$/)||n.match(/^(left|right|top|bottom)*\s*(start|end)*$/)||(n="auto");const i=!!n.match(/auto/g);let s=n.match(/auto\s(left|right|top|bottom)/)?n.split(" ")[1]||"auto":n;const o=q(t,r,s);return s=D(s,r,t,e,a?a.allowedPositions:void 0),{options:a,instance:{target:t,host:e,arrow:null},offsets:{target:o,host:r,arrow:null},positionFixed:!1,placement:s,placementAuto:i}}(e,t,n,r))}}const H=new Y;class U{constructor(t,e,n){this.update$$=new i.a,this.positionElements=new Map,this.isDisabled=!1,Object(r.isPlatformBrowser)(n)&&t.runOutsideAngular(()=>{this.triggerEvent$=Object(s.a)(Object(o.a)(window,"scroll",{passive:!0}),Object(o.a)(window,"resize",{passive:!0}),Object(u.a)(0,h),this.update$$),this.triggerEvent$.subscribe(()=>{this.isDisabled||this.positionElements.forEach(t=>{!function(t,e,n,a,r,i){const s=H.positionElements(t,e,n,a,r),o=function(t){return{width:t.offsets.target.width,height:t.offsets.target.height,left:Math.floor(t.offsets.target.left),top:Math.round(t.offsets.target.top),bottom:Math.round(t.offsets.target.bottom),right:Math.floor(t.offsets.target.right)}}(s);F(e,{"will-change":"transform",top:"0px",left:"0px",transform:`translate3d(${o.left}px, ${o.top}px, 0px)`},i),s.instance.arrow&&F(s.instance.arrow,s.offsets.arrow,i),function(t,e){const n=t.instance.target;let a=n.className;t.placementAuto&&(a=a.replace(/bs-popover-auto/g,`bs-popover-${t.placement}`),a=a.replace(/bs-tooltip-auto/g,`bs-tooltip-${t.placement}`),a=a.replace(/\sauto/g,` ${t.placement}`),-1!==a.indexOf("popover")&&-1===a.indexOf("popover-auto")&&(a+=" popover-auto"),-1!==a.indexOf("tooltip")&&-1===a.indexOf("tooltip-auto")&&(a+=" tooltip-auto")),a=a.replace(/left|right|top|bottom/g,`${t.placement.split(" ")[0]}`),e?e.setAttribute(n,"class",a):n.className=a}(s,i)}(W(t.target),W(t.element),t.attachment,t.appendToBody,this.options,e.createRenderer(null,null))})})})}position(t){this.addPositionElement(t)}get event$(){return this.triggerEvent$}disable(){this.isDisabled=!0}enable(){this.isDisabled=!1}addPositionElement(t){this.positionElements.set(W(t.element),t)}calcPosition(){this.update$$.next()}deletePositionElement(t){this.positionElements.delete(W(t))}setOptions(t){this.options=t}}function W(t){return"string"==typeof t?document.querySelector(t):t instanceof a.ElementRef?t.nativeElement:t}},"2vnA":function(t,e,n){"use strict";n.d(e,"a",(function(){return Kt})),n.d(e,"b",(function(){return Zt})),n.d(e,"c",(function(){return at})),n.d(e,"d",(function(){return X})),n.d(e,"e",(function(){return Xt}));var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function r(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function s(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(o){r={error:o}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function o(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t}var u=[];Object.freeze(u);var l={};Object.freeze(l);var d={};function c(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:d}function f(){return++Rt.mobxGuid}function h(t){throw g(!1,t),"X"}function g(t,e){if(!t)throw new Error("[mobx] "+(e||"An invariant failed, however the error is obfuscated because this is an production build."))}function p(t){var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}}var b=function(){};function m(t){return null!==t&&"object"==typeof t}function y(t){if(null===t||"object"!=typeof t)return!1;var e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function v(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!0,configurable:!0,value:n})}function x(t,e,n){Object.defineProperty(t,e,{enumerable:!1,writable:!1,configurable:!0,value:n})}function _(t,e){var n="isMobX"+t;return e.prototype[n]=!0,function(t){return m(t)&&!0===t[n]}}function T(t){return void 0!==c().Map&&t instanceof c().Map}function O(t){return t instanceof Set}function w(t){for(var e=[];;){var n=t.next();if(n.done)break;e.push(n.value)}return e}function S(){return"function"==typeof Symbol&&Symbol.toPrimitive||"@@toPrimitive"}function I(t){return null===t?null:"object"==typeof t?""+t:t}function N(){return"function"==typeof Symbol&&Symbol.iterator||"@@iterator"}function C(t,e){x(t,N(),e)}function R(t){return t[N()]=k,t}function A(){return"function"==typeof Symbol&&Symbol.toStringTag||"@@toStringTag"}function k(){return this}var E=function(){function t(t){void 0===t&&(t="Atom@"+f()),this.name=t,this.isPendingUnobservation=!1,this.isBeingObserved=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.lastAccessedBy=0,this.lowestObserverState=rt.NOT_TRACKING}return t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.reportObserved=function(){return Pt(this)},t.prototype.reportChanged=function(){Lt(),function(t){if(t.lowestObserverState!==rt.STALE){t.lowestObserverState=rt.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===rt.UP_TO_DATE&&(a.isTracing!==it.NONE&&Mt(a,t),a.onBecomeStale()),a.dependenciesState=rt.STALE}}}(this),Dt()},t.prototype.toString=function(){return this.name},t}(),L=_("Atom",E);function D(t,e){return t===e}var P={identity:D,structural:function(t,e){return He(t,e)},default:function(t,e){return function(t,e){return"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(t,e)||D(t,e)},shallow:function(t,e){return He(t,e,1)}},M={},q={};function j(t,e){var n=e?M:q;return n[t]||(n[t]={configurable:!0,enumerable:e,get:function(){return F(this),this[t]},set:function(e){F(this),this[t]=e}})}function F(t){if(!0!==t.__mobxDidRunLazyInitializers){var e=t.__mobxDecorators;if(e)for(var n in v(t,"__mobxDidRunLazyInitializers",!0),e){var a=e[n];a.propertyCreator(t,a.prop,a.descriptor,a.decoratorTarget,a.decoratorArguments)}}}function G(t,e){return function(){var n,a=function(a,r,s,o){return!0===o?(e(a,r,s,a,n),null):(Object.prototype.hasOwnProperty.call(a,"__mobxDecorators")||v(a,"__mobxDecorators",i({},a.__mobxDecorators)),a.__mobxDecorators[r]={prop:r,propertyCreator:e,descriptor:s,decoratorTarget:a,decoratorArguments:n},j(r,t))};return V(arguments)?(n=u,a.apply(null,arguments)):(n=Array.prototype.slice.call(arguments),a)}}function V(t){return(2===t.length||3===t.length)&&"string"==typeof t[1]||4===t.length&&!0===t[3]}function z(t,e,n){return ie(t)?t:Array.isArray(t)?X.array(t,{name:n}):y(t)?X.object(t,void 0,{name:n}):T(t)?X.map(t,{name:n}):O(t)?X.set(t,{name:n}):t}function B(t){return t}function Y(t){g(t);var e=G(!0,(function(e,n,a,r,s){!function(t,e,n,a){var r=qe(t);if(ue(r)){var s=de(r,{object:t,name:e,type:"add",newValue:n});if(!s)return;n=s.newValue}n=(r.values[e]=new wt(n,a,r.name+"."+e,!1)).value,Object.defineProperty(t,e,function(t){return je[t]||(je[t]={configurable:!0,enumerable:!0,get:function(){return this.$mobx.read(this,t)},set:function(e){this.$mobx.write(this,t,e)}})}(e)),r.keys&&r.keys.push(e),function(t,e,n,a){var r=ce(t),s=Gt(),o=r||s?{type:"add",object:e,name:n,newValue:a}:null;s&&zt(i(i({},o),{name:t.name,key:n})),r&&he(t,o),s&&Yt()}(r,t,e,n)}(e,n,a?a.initializer?a.initializer.call(e):a.value:void 0,t)})),n=("undefined"!=typeof process&&process,e);return n.enhancer=t,n}var H={deep:!0,name:void 0,defaultDecorator:void 0};function U(t){return null==t?H:"string"==typeof t?{name:t,deep:!0}:t}function W(t){return t.defaultDecorator?t.defaultDecorator.enhancer:!1===t.deep?B:z}Object.freeze(H),Object.freeze({deep:!1,name:void 0,defaultDecorator:void 0});var K=Y(z),$=Y((function(t,e,n){return null==t?t:ze(t)||Ce(t)||Ee(t)||Pe(t)?t:Array.isArray(t)?X.array(t,{name:n,deep:!1}):y(t)?X.object(t,void 0,{name:n,deep:!1}):T(t)?X.map(t,{name:n,deep:!1}):O(t)?X.set(t,{name:n,deep:!1}):h(!1)})),Z=Y(B),J=Y((function(t,e,n){return He(t,e)?e:t})),Q={box:function(t,e){arguments.length>2&&tt("box");var n=U(e);return new wt(t,W(n),n.name,!0,n.equals)},shallowBox:function(t,e){return arguments.length>2&&tt("shallowBox"),X.box(t,{name:e,deep:!1})},array:function(t,e){arguments.length>2&&tt("array");var n=U(e);return new Te(t,W(n),n.name)},shallowArray:function(t,e){return arguments.length>2&&tt("shallowArray"),X.array(t,{name:e,deep:!1})},map:function(t,e){arguments.length>2&&tt("map");var n=U(e);return new Ae(t,W(n),n.name)},shallowMap:function(t,e){return arguments.length>2&&tt("shallowMap"),X.map(t,{name:e,deep:!1})},set:function(t,e){arguments.length>2&&tt("set");var n=U(e);return new De(t,W(n),n.name)},object:function(t,e,n){"string"==typeof arguments[1]&&tt("object");var a=U(n);return ne({},t,e,a)},shallowObject:function(t,e){return"string"==typeof arguments[1]&&tt("shallowObject"),X.object(t,{},{name:e,deep:!1})},ref:Z,shallow:$,deep:K,struct:J},X=function(t,e,n){if("string"==typeof arguments[1])return K.apply(null,arguments);if(ie(t))return t;var a=y(t)?X.object(t,e,n):Array.isArray(t)?X.array(t,e):T(t)?X.map(t,e):O(t)?X.set(t,e):t;if(a!==t)return a;h(!1)};function tt(t){h("Expected one or two arguments to observable."+t+". Did you accidentally try to use observable."+t+" as decorator?")}Object.keys(Q).forEach((function(t){return X[t]=Q[t]}));var et=G(!1,(function(t,e,n,a,r){var s,o,u,l;s=t,o=e,u=i({get:n.get,set:n.set},r[0]||{}),l=qe(s),u.name=l.name+"."+o,u.context=s,l.values[o]=new St(u),Object.defineProperty(s,o,function(t){return Fe[t]||(Fe[t]={configurable:Rt.computedConfigurable,enumerable:!1,get:function(){return Ge(this).read(this,t)},set:function(e){Ge(this).write(this,t,e)}})}(o))})),nt=et({equals:P.structural}),at=function(t,e,n){if("string"==typeof e)return et.apply(null,arguments);if(null!==t&&"object"==typeof t&&1===arguments.length)return et.apply(null,arguments);var a="object"==typeof e?e:{};return a.get=t,a.set="function"==typeof e?e:a.set,a.name=a.name||t.name||"",new St(a)};at.struct=nt;var rt=function(t){return t[t.NOT_TRACKING=-1]="NOT_TRACKING",t[t.UP_TO_DATE=0]="UP_TO_DATE",t[t.POSSIBLY_STALE=1]="POSSIBLY_STALE",t[t.STALE=2]="STALE",t}({}),it=function(t){return t[t.NONE=0]="NONE",t[t.LOG=1]="LOG",t[t.BREAK=2]="BREAK",t}({}),st=function(){return function(t){this.cause=t}}();function ot(t){return t instanceof st}function ut(t){switch(t.dependenciesState){case rt.UP_TO_DATE:return!1;case rt.NOT_TRACKING:case rt.STALE:return!0;case rt.POSSIBLY_STALE:for(var e=pt(!0),n=ht(),a=t.observing,r=a.length,i=0;i<r;i++){var s=a[i];if(It(s)){if(Rt.disableErrorBoundaries)s.get();else try{s.get()}catch(o){return gt(n),bt(e),!0}if(t.dependenciesState===rt.STALE)return gt(n),bt(e),!0}}return mt(t),gt(n),bt(e),!1}}function lt(t){var e=t.observers.length>0;Rt.computationDepth>0&&e&&h(!1),Rt.allowStateChanges||!e&&"strict"!==Rt.enforceActions||h(!1)}function dt(t,e,n){var a=pt(!0);mt(t),t.newObserving=new Array(t.observing.length+100),t.unboundDepsCount=0,t.runId=++Rt.runId;var r,i=Rt.trackingDerivation;if(Rt.trackingDerivation=t,!0===Rt.disableErrorBoundaries)r=e.call(n);else try{r=e.call(n)}catch(s){r=new st(s)}return Rt.trackingDerivation=i,function(t){for(var e=t.observing,n=t.observing=t.newObserving,a=rt.UP_TO_DATE,r=0,i=t.unboundDepsCount,s=0;s<i;s++)0===(o=n[s]).diffValue&&(o.diffValue=1,r!==s&&(n[r]=o),r++),o.dependenciesState>a&&(a=o.dependenciesState);for(n.length=r,t.newObserving=null,i=e.length;i--;)0===(o=e[i]).diffValue&&kt(o,t),o.diffValue=0;for(;r--;){var o;1===(o=n[r]).diffValue&&(o.diffValue=0,At(o,t))}a!==rt.UP_TO_DATE&&(t.dependenciesState=a,t.onBecomeStale())}(t),bt(a),r}function ct(t){var e=t.observing;t.observing=[];for(var n=e.length;n--;)kt(e[n],t);t.dependenciesState=rt.NOT_TRACKING}function ft(t){var e=ht(),n=t();return gt(e),n}function ht(){var t=Rt.trackingDerivation;return Rt.trackingDerivation=null,t}function gt(t){Rt.trackingDerivation=t}function pt(t){var e=Rt.allowStateReads;return Rt.allowStateReads=t,e}function bt(t){Rt.allowStateReads=t}function mt(t){if(t.dependenciesState!==rt.UP_TO_DATE){t.dependenciesState=rt.UP_TO_DATE;for(var e=t.observing,n=e.length;n--;)e[n].lowestObserverState=rt.UP_TO_DATE}}var yt=0,vt=1;function xt(t,e){var n=function(){return _t(t,e,this,arguments)};return n.isMobxAction=!0,n}function _t(t,e,n,a){var r=function(t,e,n){var a=Gt()&&!!t,r=0;if(a){r=Date.now();var i=n&&n.length||0,s=new Array(i);if(i>0)for(var o=0;o<i;o++)s[o]=n[o];zt({type:"action",name:t,object:e,arguments:s})}var u=ht();Lt();var l={prevDerivation:u,prevAllowStateChanges:Tt(!0),prevAllowStateReads:pt(!0),notifySpy:a,startTime:r,actionId:vt++,parentActionId:yt};return yt=l.actionId,l}(t,n,a);try{return e.apply(n,a)}catch(i){throw r.error=i,i}finally{!function(t){yt!==t.actionId&&h("invalid action stack. did you forget to finish an action?"),yt=t.parentActionId,void 0!==t.error&&(Rt.suppressReactionErrors=!0),Ot(t.prevAllowStateChanges),bt(t.prevAllowStateReads),Dt(),gt(t.prevDerivation),t.notifySpy&&Yt({time:Date.now()-t.startTime}),Rt.suppressReactionErrors=!1}(r)}}function Tt(t){var e=Rt.allowStateChanges;return Rt.allowStateChanges=t,e}function Ot(t){Rt.allowStateChanges=t}Object.getOwnPropertyDescriptor((function(){}),"name");var wt=function(t){function e(e,n,a,r,i){void 0===a&&(a="ObservableValue@"+f()),void 0===r&&(r=!0),void 0===i&&(i=P.default);var s=t.call(this,a)||this;return s.enhancer=n,s.name=a,s.equals=i,s.hasUnreportedChange=!1,s.value=n(e,void 0,a),r&&Gt()&&Vt({type:"create",name:s.name,newValue:""+s.value}),s}return r(e,t),e.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},e.prototype.set=function(t){var e=this.value;if((t=this.prepareNewValue(t))!==Rt.UNCHANGED){var n=Gt();n&&zt({type:"update",name:this.name,newValue:t,oldValue:e}),this.setNewValue(t),n&&Yt()}},e.prototype.prepareNewValue=function(t){if(lt(this),ue(this)){var e=de(this,{object:this,type:"update",newValue:t});if(!e)return Rt.UNCHANGED;t=e.newValue}return t=this.enhancer(t,this.value,this.name),this.equals(this.value,t)?Rt.UNCHANGED:t},e.prototype.setNewValue=function(t){var e=this.value;this.value=t,this.reportChanged(),ce(this)&&he(this,{type:"update",object:this,newValue:t,oldValue:e})},e.prototype.get=function(){return this.reportObserved(),this.dehanceValue(this.value)},e.prototype.intercept=function(t){return le(this,t)},e.prototype.observe=function(t,e){return e&&t({object:this,type:"update",newValue:this.value,oldValue:void 0}),fe(this,t)},e.prototype.toJSON=function(){return this.get()},e.prototype.toString=function(){return this.name+"["+this.value+"]"},e.prototype.valueOf=function(){return I(this.get())},e}(E);wt.prototype[S()]=wt.prototype.valueOf,_("ObservableValue",wt);var St=function(){function t(t){this.dependenciesState=rt.NOT_TRACKING,this.observing=[],this.newObserving=null,this.isBeingObserved=!1,this.isPendingUnobservation=!1,this.observers=[],this.observersIndexes={},this.diffValue=0,this.runId=0,this.lastAccessedBy=0,this.lowestObserverState=rt.UP_TO_DATE,this.unboundDepsCount=0,this.__mapid="#"+f(),this.value=new st(null),this.isComputing=!1,this.isRunningSetter=!1,this.isTracing=it.NONE,g(t.get,"missing option for computed: get"),this.derivation=t.get,this.name=t.name||"ComputedValue@"+f(),t.set&&(this.setter=xt(this.name+"-setter",t.set)),this.equals=t.equals||(t.compareStructural||t.struct?P.structural:P.default),this.scope=t.context,this.requiresReaction=!!t.requiresReaction,this.keepAlive=!!t.keepAlive}return t.prototype.onBecomeStale=function(){!function(t){if(t.lowestObserverState===rt.UP_TO_DATE){t.lowestObserverState=rt.POSSIBLY_STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===rt.UP_TO_DATE&&(a.dependenciesState=rt.POSSIBLY_STALE,a.isTracing!==it.NONE&&Mt(a,t),a.onBecomeStale())}}}(this)},t.prototype.onBecomeUnobserved=function(){},t.prototype.onBecomeObserved=function(){},t.prototype.get=function(){this.isComputing&&h("Cycle detected in computation "+this.name+": "+this.derivation),0!==Rt.inBatch||0!==this.observers.length||this.keepAlive?(Pt(this),ut(this)&&this.trackAndCompute()&&function(t){if(t.lowestObserverState!==rt.STALE){t.lowestObserverState=rt.STALE;for(var e=t.observers,n=e.length;n--;){var a=e[n];a.dependenciesState===rt.POSSIBLY_STALE?a.dependenciesState=rt.STALE:a.dependenciesState===rt.UP_TO_DATE&&(t.lowestObserverState=rt.UP_TO_DATE)}}}(this)):ut(this)&&(this.warnAboutUntrackedRead(),Lt(),this.value=this.computeValue(!1),Dt());var t=this.value;if(ot(t))throw t.cause;return t},t.prototype.peek=function(){var t=this.computeValue(!1);if(ot(t))throw t.cause;return t},t.prototype.set=function(t){if(this.setter){g(!this.isRunningSetter,"The setter of computed value '"+this.name+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"),this.isRunningSetter=!0;try{this.setter.call(this.scope,t)}finally{this.isRunningSetter=!1}}else g(!1,!1)},t.prototype.trackAndCompute=function(){Gt()&&Vt({object:this.scope,type:"compute",name:this.name});var t=this.value,e=this.dependenciesState===rt.NOT_TRACKING,n=this.computeValue(!0),a=e||ot(t)||ot(n)||!this.equals(t,n);return a&&(this.value=n),a},t.prototype.computeValue=function(t){var e;if(this.isComputing=!0,Rt.computationDepth++,t)e=dt(this,this.derivation,this.scope);else if(!0===Rt.disableErrorBoundaries)e=this.derivation.call(this.scope);else try{e=this.derivation.call(this.scope)}catch(n){e=new st(n)}return Rt.computationDepth--,this.isComputing=!1,e},t.prototype.suspend=function(){this.keepAlive||(ct(this),this.value=void 0)},t.prototype.observe=function(t,e){var n=this,a=!0,r=void 0;return Zt((function(){var i=n.get();if(!a||e){var s=ht();t({type:"update",object:n,newValue:i,oldValue:r}),gt(s)}a=!1,r=i}))},t.prototype.warnAboutUntrackedRead=function(){},t.prototype.toJSON=function(){return this.get()},t.prototype.toString=function(){return this.name+"["+this.derivation.toString()+"]"},t.prototype.valueOf=function(){return I(this.get())},t}();St.prototype[S()]=St.prototype.valueOf;var It=_("ComputedValue",St),Nt=function(){return function(){this.version=5,this.UNCHANGED={},this.trackingDerivation=null,this.computationDepth=0,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!0,this.allowStateReads=!0,this.enforceActions=!1,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.computedConfigurable=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1}}(),Ct=!0,Rt=function(){var t=c();return t.__mobxInstanceCount>0&&!t.__mobxGlobals&&(Ct=!1),t.__mobxGlobals&&t.__mobxGlobals.version!==(new Nt).version&&(Ct=!1),Ct?t.__mobxGlobals?(t.__mobxInstanceCount+=1,t.__mobxGlobals.UNCHANGED||(t.__mobxGlobals.UNCHANGED={}),t.__mobxGlobals):(t.__mobxInstanceCount=1,t.__mobxGlobals=new Nt):(setTimeout((function(){h("There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`")}),1),new Nt)}();function At(t,e){var n=t.observers.length;n&&(t.observersIndexes[e.__mapid]=n),t.observers[n]=e,t.lowestObserverState>e.dependenciesState&&(t.lowestObserverState=e.dependenciesState)}function kt(t,e){if(1===t.observers.length)t.observers.length=0,Et(t);else{var n=t.observers,a=t.observersIndexes,r=n.pop();if(r!==e){var i=a[e.__mapid]||0;i?a[r.__mapid]=i:delete a[r.__mapid],n[i]=r}delete a[e.__mapid]}}function Et(t){!1===t.isPendingUnobservation&&(t.isPendingUnobservation=!0,Rt.pendingUnobservations.push(t))}function Lt(){Rt.inBatch++}function Dt(){if(0==--Rt.inBatch){jt();for(var t=Rt.pendingUnobservations,e=0;e<t.length;e++){var n=t[e];n.isPendingUnobservation=!1,0===n.observers.length&&(n.isBeingObserved&&(n.isBeingObserved=!1,n.onBecomeUnobserved()),n instanceof St&&n.suspend())}Rt.pendingUnobservations=[]}}function Pt(t){var e=Rt.trackingDerivation;return null!==e?(e.runId!==t.lastAccessedBy&&(t.lastAccessedBy=e.runId,e.newObserving[e.unboundDepsCount++]=t,t.isBeingObserved||(t.isBeingObserved=!0,t.onBecomeObserved())),!0):(0===t.observers.length&&Rt.inBatch>0&&Et(t),!1)}function Mt(t,e){if(console.log("[mobx.trace] '"+t.name+"' is invalidated due to a change in: '"+e.name+"'"),t.isTracing===it.BREAK){var n=[];!function t(e,n,a){n.length>=1e3?n.push("(and many more)"):(n.push(""+new Array(a).join("\t")+e.name),e.dependencies&&e.dependencies.forEach((function(e){return t(e,n,a+1)})))}((a=t,ae(Be(a,void 0))),n,1),new Function("debugger;\n/*\nTracing '"+t.name+"'\n\nYou are entering this break point because derivation '"+t.name+"' is being traced and '"+e.name+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(t instanceof St?t.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n    ")()}var a}var qt=function(){function t(t,e,n,a){void 0===t&&(t="Reaction@"+f()),void 0===a&&(a=!1),this.name=t,this.onInvalidate=e,this.errorHandler=n,this.requiresObservable=a,this.observing=[],this.newObserving=[],this.dependenciesState=rt.NOT_TRACKING,this.diffValue=0,this.runId=0,this.unboundDepsCount=0,this.__mapid="#"+f(),this.isDisposed=!1,this._isScheduled=!1,this._isTrackPending=!1,this._isRunning=!1,this.isTracing=it.NONE}return t.prototype.onBecomeStale=function(){this.schedule()},t.prototype.schedule=function(){this._isScheduled||(this._isScheduled=!0,Rt.pendingReactions.push(this),jt())},t.prototype.isScheduled=function(){return this._isScheduled},t.prototype.runReaction=function(){if(!this.isDisposed){if(Lt(),this._isScheduled=!1,ut(this)){this._isTrackPending=!0;try{this.onInvalidate(),this._isTrackPending&&Gt()&&Vt({name:this.name,type:"scheduled-reaction"})}catch(t){this.reportExceptionInDerivation(t)}}Dt()}},t.prototype.track=function(t){Lt();var e,n=Gt();n&&(e=Date.now(),zt({name:this.name,type:"reaction"})),this._isRunning=!0;var a=dt(this,t,void 0);this._isRunning=!1,this._isTrackPending=!1,this.isDisposed&&ct(this),ot(a)&&this.reportExceptionInDerivation(a.cause),n&&Yt({time:Date.now()-e}),Dt()},t.prototype.reportExceptionInDerivation=function(t){var e=this;if(this.errorHandler)this.errorHandler(t,this);else{if(Rt.disableErrorBoundaries)throw t;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";Rt.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name+"' suppressed, fix error of causing action below)"):console.error(n,t),Gt()&&Vt({type:"error",name:this.name,message:n,error:""+t}),Rt.globalReactionErrorHandlers.forEach((function(n){return n(t,e)}))}},t.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this._isRunning||(Lt(),ct(this),Dt()))},t.prototype.getDisposer=function(){var t=this.dispose.bind(this);return t.$mobx=this,t},t.prototype.toString=function(){return"Reaction["+this.name+"]"},t.prototype.trace=function(t){void 0===t&&(t=!1),function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=!1;"boolean"==typeof t[t.length-1]&&(n=t.pop());var a=se(t);if(!a)return h(!1);a.isTracing===it.NONE&&console.log("[mobx.trace] '"+a.name+"' tracing enabled"),a.isTracing=n?it.BREAK:it.LOG}(this,t)},t}();function jt(){Rt.inBatch>0||Rt.isRunningReactions||function(){Rt.isRunningReactions=!0;for(var t=Rt.pendingReactions,e=0;t.length>0;){100==++e&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+t[0]),t.splice(0));for(var n=t.splice(0),a=0,r=n.length;a<r;a++)n[a].runReaction()}Rt.isRunningReactions=!1}()}var Ft=_("Reaction",qt);function Gt(){return!!Rt.spyListeners.length}function Vt(t){if(Rt.spyListeners.length)for(var e=Rt.spyListeners,n=0,a=e.length;n<a;n++)e[n](t)}function zt(t){Vt(i(i({},t),{spyReportStart:!0}))}var Bt={spyReportEnd:!0};function Yt(t){Vt(t?i(i({},t),{spyReportEnd:!0}):Bt)}function Ht(){h(!1)}function Ut(t){return function(e,n,a){if(a){if(a.value)return{value:xt(t,a.value),enumerable:!1,configurable:!0,writable:!0};var r=a.initializer;return{enumerable:!1,configurable:!0,writable:!0,initializer:function(){return xt(t,r.call(this))}}}return Wt(t).apply(this,arguments)}}function Wt(t){return function(e,n,a){Object.defineProperty(e,n,{configurable:!0,enumerable:!1,get:function(){},set:function(e){v(this,n,Kt(t,e))}})}}var Kt=function(t,e,n,a){return 1===arguments.length&&"function"==typeof t?xt(t.name||"<unnamed action>",t):2===arguments.length&&"function"==typeof e?xt(t,e):1===arguments.length&&"string"==typeof t?Ut(t):!0!==a?Ut(e).apply(null,arguments):void(t[e]=xt(t.name||e,n.value))};function $t(t,e,n){v(t,e,xt(e,n.bind(t)))}function Zt(t,e){void 0===e&&(e=l);var n,a=e&&e.name||t.name||"Autorun@"+f();if(e.scheduler||e.delay){var r=Qt(e),i=!1;n=new qt(a,(function(){i||(i=!0,r((function(){i=!1,n.isDisposed||n.track(s)})))}),e.onError,e.requiresObservable)}else n=new qt(a,(function(){this.track(s)}),e.onError,e.requiresObservable);function s(){t(n)}return n.schedule(),n.getDisposer()}Kt.bound=function(t,e,n,a){return!0===a?($t(t,e,n.value),null):n?{configurable:!0,enumerable:!1,get:function(){return $t(this,e,n.value||n.initializer.call(this)),this[e]},set:Ht}:{enumerable:!1,configurable:!0,set:function(t){$t(this,e,t)},get:function(){}}};var Jt=function(t){return t()};function Qt(t){return t.scheduler?t.scheduler:t.delay?function(e){return setTimeout(e,t.delay)}:Jt}function Xt(t,e,n){void 0===n&&(n=l),"boolean"==typeof n&&(n={fireImmediately:n});var a,r,i,s=n.name||"Reaction@"+f(),o=Kt(s,n.onError?(a=n.onError,r=e,function(){try{return r.apply(this,arguments)}catch(t){a.call(this,t)}}):e),u=!n.scheduler&&!n.delay,d=Qt(n),c=!0,h=!1,g=n.compareStructural?P.structural:n.equals||P.default,p=new qt(s,(function(){c||u?b():h||(h=!0,d(b))}),n.onError,n.requiresObservable);function b(){if(h=!1,!p.isDisposed){var e=!1;p.track((function(){var n=t(p);e=c||!g(i,n),i=n})),c&&n.fireImmediately&&o(i,p),c||!0!==e||o(i,p),c&&(c=!1)}}return p.schedule(),p.getDisposer()}function te(t,e,n){return ee("onBecomeUnobserved",t,e,n)}function ee(t,e,n,a){var r="function"==typeof a?Be(e,n):Be(e),i="function"==typeof a?a:n,s=r[t];return"function"!=typeof s?h(!1):(r[t]=function(){s.call(this),i.call(this)},function(){r[t]=s})}function ne(t,e,n,a){var r=(a=U(a)).defaultDecorator||(!1===a.deep?Z:K);F(t),qe(t,a.name,r.enhancer),Lt();try{for(var i in e){var s=Object.getOwnPropertyDescriptor(e,i),o=(n&&i in n?n[i]:s.get?et:r)(t,i,s,!0);o&&Object.defineProperty(t,i,o)}}finally{Dt()}return t}function ae(t){var e,n,a={name:t.name};return t.observing&&t.observing.length>0&&(a.dependencies=(e=t.observing,n=[],e.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),n).map(ae)),a}function re(t,e){if(null==t)return!1;if(void 0!==e){if(ze(t)){var n=t.$mobx;return n.values&&!!n.values[e]}return!1}return ze(t)||!!t.$mobx||L(t)||Ft(t)||It(t)}function ie(t){return 1!==arguments.length&&h(!1),re(t)}function se(t){switch(t.length){case 0:return Rt.trackingDerivation;case 1:return Be(t[0]);case 2:return Be(t[0],t[1])}}function oe(t,e){void 0===e&&(e=void 0),Lt();try{return t.apply(e)}finally{Dt()}}function ue(t){return void 0!==t.interceptors&&t.interceptors.length>0}function le(t,e){var n=t.interceptors||(t.interceptors=[]);return n.push(e),p((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function de(t,e){var n=ht();try{var a=t.interceptors;if(a)for(var r=0,i=a.length;r<i&&(g(!(e=a[r](e))||e.type,"Intercept handlers should return nothing or a change object"),e);r++);return e}finally{gt(n)}}function ce(t){return void 0!==t.changeListeners&&t.changeListeners.length>0}function fe(t,e){var n=t.changeListeners||(t.changeListeners=[]);return n.push(e),p((function(){var t=n.indexOf(e);-1!==t&&n.splice(t,1)}))}function he(t,e){var n=ht(),a=t.changeListeners;if(a){for(var r=0,i=(a=a.slice()).length;r<i;r++)a[r](e);gt(n)}}Object.create(Error.prototype);var ge,pe,be,me,ye=(ge=!1,pe={},Object.defineProperty(pe,"0",{set:function(){ge=!0}}),Object.create(pe)[0]=1,!1===ge),ve=0,xe=function(){return function(){}}();be=xe,me=Array.prototype,void 0!==Object.setPrototypeOf?Object.setPrototypeOf(be.prototype,me):void 0!==be.prototype.__proto__?be.prototype.__proto__=me:be.prototype=me,Object.isFrozen(Array)&&["constructor","push","shift","concat","pop","unshift","replace","find","findIndex","splice","reverse","sort"].forEach((function(t){Object.defineProperty(xe.prototype,t,{configurable:!0,writable:!0,value:Array.prototype[t]})}));var _e=function(){function t(t,e,n,a){this.array=n,this.owned=a,this.values=[],this.lastKnownLength=0,this.atom=new E(t||"ObservableArray@"+f()),this.enhancer=function(n,a){return e(n,a,t+"[..]")}}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.dehanceValues=function(t){return void 0!==this.dehancer&&t.length>0?t.map(this.dehancer):t},t.prototype.intercept=function(t){return le(this,t)},t.prototype.observe=function(t,e){return void 0===e&&(e=!1),e&&t({object:this.array,type:"splice",index:0,added:this.values.slice(),addedCount:this.values.length,removed:[],removedCount:0}),fe(this,t)},t.prototype.getArrayLength=function(){return this.atom.reportObserved(),this.values.length},t.prototype.setArrayLength=function(t){if("number"!=typeof t||t<0)throw new Error("[mobx.array] Out of range: "+t);var e=this.values.length;if(t!==e)if(t>e){for(var n=new Array(t-e),a=0;a<t-e;a++)n[a]=void 0;this.spliceWithArray(e,0,n)}else this.spliceWithArray(t,e-t)},t.prototype.updateArrayLength=function(t,e){if(t!==this.lastKnownLength)throw new Error("[mobx] Modification exception: the internal structure of an observable array was changed. Did you use peek() to change it?");this.lastKnownLength+=e,e>0&&t+e+1>ve&&Ie(t+e+1)},t.prototype.spliceWithArray=function(t,e,n){var a=this;lt(this.atom);var r=this.values.length;if(void 0===t?t=0:t>r?t=r:t<0&&(t=Math.max(0,r+t)),e=1===arguments.length?r-t:null==e?0:Math.max(0,Math.min(e,r-t)),void 0===n&&(n=u),ue(this)){var i=de(this,{object:this.array,type:"splice",index:t,removedCount:e,added:n});if(!i)return u;e=i.removedCount,n=i.added}var s=(n=0===n.length?n:n.map((function(t){return a.enhancer(t,void 0)}))).length-e;this.updateArrayLength(r,s);var o=this.spliceItemsIntoValues(t,e,n);return 0===e&&0===n.length||this.notifyArraySplice(t,n,o),this.dehanceValues(o)},t.prototype.spliceItemsIntoValues=function(t,e,n){var a;if(n.length<1e4)return(a=this.values).splice.apply(a,o([t,e],n));var r=this.values.slice(t,t+e);return this.values=this.values.slice(0,t).concat(n,this.values.slice(t+e)),r},t.prototype.notifyArrayChildUpdate=function(t,e,n){var a=!this.owned&&Gt(),r=ce(this),s=r||a?{object:this.array,type:"update",index:t,newValue:e,oldValue:n}:null;a&&zt(i(i({},s),{name:this.atom.name})),this.atom.reportChanged(),r&&he(this,s),a&&Yt()},t.prototype.notifyArraySplice=function(t,e,n){var a=!this.owned&&Gt(),r=ce(this),s=r||a?{object:this.array,type:"splice",index:t,removed:n,added:e,removedCount:n.length,addedCount:e.length}:null;a&&zt(i(i({},s),{name:this.atom.name})),this.atom.reportChanged(),r&&he(this,s),a&&Yt()},t}(),Te=function(t){function e(e,n,a,r){void 0===a&&(a="ObservableArray@"+f()),void 0===r&&(r=!1);var i=t.call(this)||this,s=new _e(a,n,i,r);if(x(i,"$mobx",s),e&&e.length){var o=Tt(!0);i.spliceWithArray(0,0,e),Ot(o)}return ye&&Object.defineProperty(s.array,"0",Oe),i}return r(e,t),e.prototype.intercept=function(t){return this.$mobx.intercept(t)},e.prototype.observe=function(t,e){return void 0===e&&(e=!1),this.$mobx.observe(t,e)},e.prototype.clear=function(){return this.splice(0)},e.prototype.concat=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this.$mobx.atom.reportObserved(),Array.prototype.concat.apply(this.peek(),t.map((function(t){return Ce(t)?t.peek():t})))},e.prototype.replace=function(t){return this.$mobx.spliceWithArray(0,this.$mobx.values.length,t)},e.prototype.toJS=function(){return this.slice()},e.prototype.toJSON=function(){return this.toJS()},e.prototype.peek=function(){return this.$mobx.atom.reportObserved(),this.$mobx.dehanceValues(this.$mobx.values)},e.prototype.find=function(t,e,n){void 0===n&&(n=0);var a=this.findIndex.apply(this,arguments);return-1===a?void 0:this.get(a)},e.prototype.findIndex=function(t,e,n){void 0===n&&(n=0);for(var a=this.peek(),r=a.length,i=n;i<r;i++)if(t.call(e,a[i],i,this))return i;return-1},e.prototype.splice=function(t,e){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];switch(arguments.length){case 0:return[];case 1:return this.$mobx.spliceWithArray(t);case 2:return this.$mobx.spliceWithArray(t,e)}return this.$mobx.spliceWithArray(t,e,n)},e.prototype.spliceWithArray=function(t,e,n){return this.$mobx.spliceWithArray(t,e,n)},e.prototype.push=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(n.values.length,0,t),n.values.length},e.prototype.pop=function(){return this.splice(Math.max(this.$mobx.values.length-1,0),1)[0]},e.prototype.shift=function(){return this.splice(0,1)[0]},e.prototype.unshift=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this.$mobx;return n.spliceWithArray(0,0,t),n.values.length},e.prototype.reverse=function(){var t=this.slice();return t.reverse.apply(t,arguments)},e.prototype.sort=function(t){var e=this.slice();return e.sort.apply(e,arguments)},e.prototype.remove=function(t){var e=this.$mobx.dehanceValues(this.$mobx.values).indexOf(t);return e>-1&&(this.splice(e,1),!0)},e.prototype.move=function(t,e){function n(t){if(t<0)throw new Error("[mobx.array] Index out of bounds: "+t+" is negative");var e=this.$mobx.values.length;if(t>=e)throw new Error("[mobx.array] Index out of bounds: "+t+" is not smaller than "+e)}if(n.call(this,t),n.call(this,e),t!==e){var a,r=this.$mobx.values;a=t<e?o(r.slice(0,t),r.slice(t+1,e+1),[r[t]],r.slice(e+1)):o(r.slice(0,e),[r[t]],r.slice(e,t),r.slice(t+1)),this.replace(a)}},e.prototype.get=function(t){var e=this.$mobx;if(e){if(t<e.values.length)return e.atom.reportObserved(),e.dehanceValue(e.values[t]);console.warn("[mobx.array] Attempt to read an array index ("+t+") that is out of bounds ("+e.values.length+"). Please check length first. Out of bound indices will not be tracked by MobX")}},e.prototype.set=function(t,e){var n=this.$mobx,a=n.values;if(t<a.length){lt(n.atom);var r=a[t];if(ue(n)){var i=de(n,{type:"update",object:this,index:t,newValue:e});if(!i)return;e=i.newValue}(e=n.enhancer(e,r))!==r&&(a[t]=e,n.notifyArrayChildUpdate(t,e,r))}else{if(t!==a.length)throw new Error("[mobx.array] Index out of bounds, "+t+" is larger than "+a.length);n.spliceWithArray(t,0,[e])}},e}(xe);C(Te.prototype,(function(){this.$mobx.atom.reportObserved();var t=this,e=0;return R({next:function(){return e<t.length?{value:t[e++],done:!1}:{done:!0,value:void 0}}})})),Object.defineProperty(Te.prototype,"length",{enumerable:!1,configurable:!0,get:function(){return this.$mobx.getArrayLength()},set:function(t){this.$mobx.setArrayLength(t)}}),v(Te.prototype,A(),"Array"),["every","filter","forEach","indexOf","join","lastIndexOf","map","reduce","reduceRight","slice","some","toString","toLocaleString"].forEach((function(t){var e=Array.prototype[t];g("function"==typeof e,"Base function not defined on Array prototype: '"+t+"'"),v(Te.prototype,t,(function(){return e.apply(this.peek(),arguments)}))})),function(t,e){for(var n=0;n<e.length;n++)v(t,e[n],t[e[n]])}(Te.prototype,["constructor","intercept","observe","clear","concat","get","replace","toJS","toJSON","peek","find","findIndex","splice","spliceWithArray","push","pop","set","shift","unshift","reverse","sort","remove","move","toString","toLocaleString"]);var Oe=we(0);function we(t){return{enumerable:!1,configurable:!1,get:function(){return this.get(t)},set:function(e){this.set(t,e)}}}function Se(t){Object.defineProperty(Te.prototype,""+t,we(t))}function Ie(t){for(var e=ve;e<t;e++)Se(e);ve=t}Ie(1e3);var Ne=_("ObservableArrayAdministration",_e);function Ce(t){return m(t)&&Ne(t.$mobx)}var Re={},Ae=function(){function t(t,e,n){if(void 0===e&&(e=z),void 0===n&&(n="ObservableMap@"+f()),this.enhancer=e,this.name=n,this.$mobx=Re,this._keys=new Te(void 0,B,this.name+".keys()",!0),"function"!=typeof Map)throw new Error("mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js");this._data=new Map,this._hasMap=new Map,this.merge(t)}return t.prototype._has=function(t){return this._data.has(t)},t.prototype.has=function(t){var e=this;if(!Rt.trackingDerivation)return this._has(t);var n=this._hasMap.get(t);if(!n){var a=n=new wt(this._has(t),B,this.name+"."+ke(t)+"?",!1);this._hasMap.set(t,a),te(a,(function(){return e._hasMap.delete(t)}))}return n.get()},t.prototype.set=function(t,e){var n=this._has(t);if(ue(this)){var a=de(this,{type:n?"update":"add",object:this,newValue:e,name:t});if(!a)return this;e=a.newValue}return n?this._updateValue(t,e):this._addValue(t,e),this},t.prototype.delete=function(t){var e=this;if(ue(this)&&!(r=de(this,{type:"delete",object:this,name:t})))return!1;if(this._has(t)){var n=Gt(),a=ce(this),r=a||n?{type:"delete",object:this,oldValue:this._data.get(t).value,name:t}:null;return n&&zt(i(i({},r),{name:this.name,key:t})),oe((function(){e._keys.remove(t),e._updateHasMapEntry(t,!1),e._data.get(t).setNewValue(void 0),e._data.delete(t)})),a&&he(this,r),n&&Yt(),!0}return!1},t.prototype._updateHasMapEntry=function(t,e){var n=this._hasMap.get(t);n&&n.setNewValue(e)},t.prototype._updateValue=function(t,e){var n=this._data.get(t);if((e=n.prepareNewValue(e))!==Rt.UNCHANGED){var a=Gt(),r=ce(this),s=r||a?{type:"update",object:this,oldValue:n.value,name:t,newValue:e}:null;a&&zt(i(i({},s),{name:this.name,key:t})),n.setNewValue(e),r&&he(this,s),a&&Yt()}},t.prototype._addValue=function(t,e){var n=this;oe((function(){var a=new wt(e,n.enhancer,n.name+"."+ke(t),!1);n._data.set(t,a),e=a.value,n._updateHasMapEntry(t,!0),n._keys.push(t)}));var a=Gt(),r=ce(this),s=r||a?{type:"add",object:this,name:t,newValue:e}:null;a&&zt(i(i({},s),{name:this.name,key:t})),r&&he(this,s),a&&Yt()},t.prototype.get=function(t){return this.has(t)?this.dehanceValue(this._data.get(t).get()):this.dehanceValue(void 0)},t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.keys=function(){return this._keys[N()]()},t.prototype.values=function(){var t=this,e=0;return R({next:function(){return e<t._keys.length?{value:t.get(t._keys[e++]),done:!1}:{value:void 0,done:!0}}})},t.prototype.entries=function(){var t=this,e=0;return R({next:function(){if(e<t._keys.length){var n=t._keys[e++];return{value:[n,t.get(n)],done:!1}}return{done:!0}}})},t.prototype.forEach=function(t,e){var n=this;this._keys.forEach((function(a){return t.call(e,n.get(a),a,n)}))},t.prototype.merge=function(t){var e=this;return Ee(t)&&(t=t.toJS()),oe((function(){y(t)?Object.keys(t).forEach((function(n){return e.set(n,t[n])})):Array.isArray(t)?t.forEach((function(t){var n=s(t,2);return e.set(n[0],n[1])})):T(t)?t.constructor!==Map?h("Cannot initialize from classes that inherit from Map: "+t.constructor.name):t.forEach((function(t,n){return e.set(n,t)})):null!=t&&h("Cannot initialize map from "+t)})),this},t.prototype.clear=function(){var t=this;oe((function(){ft((function(){t._keys.slice().forEach((function(e){return t.delete(e)}))}))}))},t.prototype.replace=function(t){var e=this;return oe((function(){for(var n,a=T(n=t)||Ee(n)?n:Array.isArray(n)?new Map(n):y(n)?new Map(Object.entries(n)):h("Cannot convert to map from '"+n+"'"),r=e._keys,i=Array.from(a.keys()),s=!1,o=0;o<r.length;o++){var u=r[o];r.length===i.length&&u!==i[o]&&(s=!0),a.has(u)||(s=!0,e.delete(u))}a.forEach((function(t,n){e._data.has(n)||(s=!0),e.set(n,t)})),s&&e._keys.replace(i)})),this},Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.toPOJO=function(){var t=this,e={};return this._keys.forEach((function(n){return e["symbol"==typeof n?n:ke(n)]=t.get(n)})),e},t.prototype.toJS=function(){var t=this,e=new Map;return this._keys.forEach((function(n){return e.set(n,t.get(n))})),e},t.prototype.toJSON=function(){return this.toPOJO()},t.prototype.toString=function(){var t=this;return this.name+"[{ "+this._keys.map((function(e){return ke(e)+": "+t.get(e)})).join(", ")+" }]"},t.prototype.observe=function(t,e){return fe(this,t)},t.prototype.intercept=function(t){return le(this,t)},t}();function ke(t){return t&&t.toString?t.toString():new String(t).toString()}C(Ae.prototype,(function(){return this.entries()})),x(Ae.prototype,A(),"Map");var Ee=_("ObservableMap",Ae),Le={},De=function(){function t(t,e,n){if(void 0===e&&(e=z),void 0===n&&(n="ObservableSet@"+f()),this.name=n,this.$mobx=Le,this._data=new Set,this._atom=function(t,e,n){void 0===e&&(e=b),void 0===n&&(n=b);var a=new E(t);return ee("onBecomeObserved",a,e,void 0),te(a,n),a}(this.name),"function"!=typeof Set)throw new Error("mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js");this.enhancer=function(t,a){return e(t,a,n)},t&&this.replace(t)}return t.prototype.dehanceValue=function(t){return void 0!==this.dehancer?this.dehancer(t):t},t.prototype.clear=function(){var t=this;oe((function(){ft((function(){t._data.forEach((function(e){t.delete(e)}))}))}))},t.prototype.forEach=function(t,e){var n=this;this._data.forEach((function(a){t.call(e,a,a,n)}))},Object.defineProperty(t.prototype,"size",{get:function(){return this._atom.reportObserved(),this._data.size},enumerable:!0,configurable:!0}),t.prototype.add=function(t){var e=this;if(lt(this._atom),ue(this)&&!(r=de(this,{type:"add",object:this,newValue:t})))return this;if(!this.has(t)){oe((function(){e._data.add(e.enhancer(t,void 0)),e._atom.reportChanged()}));var n=Gt(),a=ce(this),r=a||n?{type:"add",object:this,newValue:t}:null;a&&he(this,r)}return this},t.prototype.delete=function(t){var e=this;if(ue(this)&&!(r=de(this,{type:"delete",object:this,oldValue:t})))return!1;if(this.has(t)){var n=Gt(),a=ce(this),r=a||n?{type:"delete",object:this,oldValue:t}:null;return oe((function(){e._atom.reportChanged(),e._data.delete(t)})),a&&he(this,r),!0}return!1},t.prototype.has=function(t){return this._atom.reportObserved(),this._data.has(this.dehanceValue(t))},t.prototype.entries=function(){var t=0,e=w(this.keys()),n=w(this.values());return R({next:function(){var a=t;return t+=1,a<n.length?{value:[e[a],n[a]],done:!1}:{done:!0}}})},t.prototype.keys=function(){return this.values()},t.prototype.values=function(){this._atom.reportObserved();var t,e=this,n=0;return void 0!==this._data.values?t=w(this._data.values()):(t=[],this._data.forEach((function(e){return t.push(e)}))),R({next:function(){return n<t.length?{value:e.dehanceValue(t[n++]),done:!1}:{done:!0}}})},t.prototype.replace=function(t){var e=this;return Pe(t)&&(t=t.toJS()),oe((function(){Array.isArray(t)?(e.clear(),t.forEach((function(t){return e.add(t)}))):O(t)?(e.clear(),t.forEach((function(t){return e.add(t)}))):null!=t&&h("Cannot initialize set from "+t)})),this},t.prototype.observe=function(t,e){return fe(this,t)},t.prototype.intercept=function(t){return le(this,t)},t.prototype.toJS=function(){return new Set(this)},t.prototype.toString=function(){return this.name+"[ "+w(this.keys()).join(", ")+" ]"},t}();C(De.prototype,(function(){return this.values()})),x(De.prototype,A(),"Set");var Pe=_("ObservableSet",De),Me=function(){function t(t,e,n){this.target=t,this.name=e,this.defaultEnhancer=n,this.values={}}return t.prototype.read=function(t,e){if(this.target===t||(this.illegalAccess(t,e),this.values[e]))return this.values[e].get()},t.prototype.write=function(t,e,n){var a=this.target;a!==t&&this.illegalAccess(t,e);var r=this.values[e];if(r instanceof St)r.set(n);else{if(ue(this)){if(!(u=de(this,{type:"update",object:a,name:e,newValue:n})))return;n=u.newValue}if((n=r.prepareNewValue(n))!==Rt.UNCHANGED){var s=ce(this),o=Gt(),u=s||o?{type:"update",object:a,oldValue:r.value,name:e,newValue:n}:null;o&&zt(i(i({},u),{name:this.name,key:e})),r.setNewValue(n),s&&he(this,u),o&&Yt()}}},t.prototype.remove=function(t){if(this.values[t]){var e=this.target;if(ue(this)&&!(s=de(this,{object:e,name:t,type:"remove"})))return;try{Lt();var n=ce(this),a=Gt(),r=this.values[t].get();this.keys&&this.keys.remove(t),delete this.values[t],delete this.target[t];var s=n||a?{type:"remove",object:e,oldValue:r,name:t}:null;a&&zt(i(i({},s),{name:this.name,key:t})),n&&he(this,s),a&&Yt()}finally{Dt()}}},t.prototype.illegalAccess=function(t,e){console.warn("Property '"+e+"' of '"+t+"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner")},t.prototype.observe=function(t,e){return fe(this,t)},t.prototype.intercept=function(t){return le(this,t)},t.prototype.getKeys=function(){var t=this;return void 0===this.keys&&(this.keys=new Te(Object.keys(this.values).filter((function(e){return t.values[e]instanceof wt})),B,"keys("+this.name+")",!0)),this.keys.slice()},t}();function qe(t,e,n){void 0===e&&(e=""),void 0===n&&(n=z);var a=t.$mobx;return a||(y(t)||(e=(t.constructor.name||"ObservableObject")+"@"+f()),e||(e="ObservableObject@"+f()),x(t,"$mobx",a=new Me(t,e,n)),a)}var je=Object.create(null),Fe=Object.create(null);function Ge(t){return t.$mobx||(F(t),t.$mobx)}var Ve=_("ObservableObjectAdministration",Me);function ze(t){return!!m(t)&&(F(t),Ve(t.$mobx))}function Be(t,e){if("object"==typeof t&&null!==t){if(Ce(t))return void 0!==e&&h(!1),t.$mobx.atom;if(Pe(t))return t.$mobx;if(Ee(t)){var n=t;return void 0===e?Be(n._keys):((a=n._data.get(e)||n._hasMap.get(e))||h(!1),a)}var a;if(F(t),ze(t))return e?((a=t.$mobx.values[e])||h(!1),a):h(!1);if(L(t)||It(t)||Ft(t))return t}else if("function"==typeof t&&Ft(t.$mobx))return t.$mobx;return h(!1)}var Ye=Object.prototype.toString;function He(t,e,n){return void 0===n&&(n=-1),function t(e,n,a,r,i){if(e===n)return 0!==e||1/e==1/n;if(null==e||null==n)return!1;if(e!=e)return n!=n;var s=typeof e;if("function"!==s&&"object"!==s&&"object"!=typeof n)return!1;e=Ue(e),n=Ue(n);var o=Ye.call(e);if(o!==Ye.call(n))return!1;switch(o){case"[object RegExp]":case"[object String]":return""+e==""+n;case"[object Number]":return+e!=+e?+n!=+n:0==+e?1/+e==1/n:+e==+n;case"[object Date]":case"[object Boolean]":return+e==+n;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(n)}var u="[object Array]"===o;if(!u){if("object"!=typeof e||"object"!=typeof n)return!1;var l=e.constructor,d=n.constructor;if(l!==d&&!("function"==typeof l&&l instanceof l&&"function"==typeof d&&d instanceof d)&&"constructor"in e&&"constructor"in n)return!1}if(0===a)return!1;a<0&&(a=-1),i=i||[];for(var c=(r=r||[]).length;c--;)if(r[c]===e)return i[c]===n;if(r.push(e),i.push(n),u){if((c=e.length)!==n.length)return!1;for(;c--;)if(!t(e[c],n[c],a-1,r,i))return!1}else{var f=Object.keys(e),h=void 0;if(c=f.length,Object.keys(n).length!==c)return!1;for(;c--;)if(!We(n,h=f[c])||!t(e[h],n[h],a-1,r,i))return!1}return r.pop(),i.pop(),!0}(t,e,n)}function Ue(t){return Ce(t)?t.peek():T(t)||Ee(t)?w(t.entries()):O(t)||Pe(t)?w(t.entries()):t}function We(t,e){return Object.prototype.hasOwnProperty.call(t,e)}"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(t){return Rt.spyListeners.push(t),p((function(){Rt.spyListeners=Rt.spyListeners.filter((function(e){return e!==t}))}))},extras:{getDebugName:function(t,e){return(void 0!==e?Be(t,e):ze(t)||Ee(t)||Pe(t)?function t(e,n){return e||h("Expecting some object"),void 0!==n?t(Be(e,n)):L(e)||It(e)||Ft(e)?e:Ee(e)||Pe(e)?e:(F(e),e.$mobx?e.$mobx:void h(!1))}(t):Be(t)).name}},$mobx:"$mobx"})},"2ykv":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"3+CB":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ko-KR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>네비게이션 전환</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>현황판</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>클러스터</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>호스트들</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>모니터들</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>서비스들</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD들</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>설정</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>크러쉬맵</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>메니저 모듈들</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>로그들</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>풀들</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>블럭</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>이미지들</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>미러링</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>파일시스템들</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>오브젝트게이트웨이</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>데몬들</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>언어선택</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>패널 데이타 로딩 중...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>그라파나 타임 픽커</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>설정 초기화</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>뒤로</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>데이타 로딩 실폐</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>선택된</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>발견된</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>전체</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>이름</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>설명</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>자세한 설명</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>기본값</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>데모 기본값</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>값들</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>저장하기</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>크러쉬맵 보기</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>로딩중...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>호스트이름</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>이 필드는 필수적입니다.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>예, 확실합니다.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>취소</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>닫기</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>호스트 목록들</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>통합 성능치</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>항목들을 찾을 수 없음</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>클러스터 로그들</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>감사 로그들</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>설정 로딩 중</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>설정을 로드할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>관리모듈 편집하기</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>입력된 값이 유효한 UUID가 아닙니다, 예.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>입력된 값은 유효한 IP주소 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>입력된 값은 적어도 하나의 숫자를 필요로 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>입력 된 값은 숫자 또는 십진수여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>클러스터 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>몬맵 변경시간</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>몬맵 변경번호</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>정족수 일치번호</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>정족수 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>요구되는 일치번호</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>요구되는 모니터상태</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>정족수에 포함</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>정족수 미포함</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>추가</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>특징들</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>클러스터-수준의 OSD 플레그들</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>제출</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>자세한 옵션...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 복구 우선순위</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>우선순위</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>우선 순위 값 맞춤 설정</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>이 필드는 요구됩니다!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>값은 0과 1사이어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>재-조정</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, 선택, 1 {깊이 } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 목록들</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>값</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>편집</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>건강상태</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>통계들</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>클라이언트들</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>모든 클라이언트 접근가능</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>주소들</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>필수 입력란</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>반드시 하나 이상의 쉼표로 구분 된 값을 포함해야 함</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>예를들면:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>접근형태</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>클라이언트들 추가</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 사용가능 클러스터 없음 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 클러스터 선택 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>데몬 추가하기</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>스토리지 백엔드</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 이용가능한 데이타풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 스토리지 백엔드 선택 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>객체 게이트웨이 사용자</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 사용가능한 사용자들 없음 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 객체 게이트웨이 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 사용자 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 사용가능한 클라이언트 없음 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx 클라이언트 선택 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 이름</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>보안 레이블</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>보안 레이블 사용</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 경로</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>경로는 \'/\'로 시작해야하며 그 뒤에 단어가 올 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>새로운 디렉토리가 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>경로</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>경로는 하나의 \'/\' 또는 하나의 단어 일 수 있습니다</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>새로운 버킷이 만들어 질 것입니다</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 프로토콜</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 태크</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>클라이언트는 하위 디렉토리를 마운트 할 수 없습니다 (즉, Tag = foo 인 경우 클라이언트가 foo / baz를 마운트하지 못할 수 있습니다).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>다른 태그 옵션을 사용하면 같은 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>다른 Pseudo 옵션을 사용하면 동일한 경로를 여러 번 내보낼 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 사용가능한 접근형태 없음 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 접근형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 사용가능한 squash 없음 --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택하세요 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>전송프로토콜</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph 사용을 환영합니다.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>사용자이름이 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>암호가 필요합니다</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>로그인</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>미안합니다. 사용자가 Ceph내에 존재하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>금지됨</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>미안합니다. 당신이 요청할 것을 열람하는 것이 허락되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 설정들</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>로컬 구성 값을 제거하십시오. 상위 구성 값은 계승되고 대신 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>최소값은 0입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>풀 목록들</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>이름은 영숫자, 대시 및 밑줄로만 구성 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>선택한 Erasure Code 프로파일 이름이 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>플러그인</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>데이터 덩어리들 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>반드시 2보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>코딩 덩어리들 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>반드시 1보다 크거나 같아야합니다.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>내구성 평가(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>지역 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>크러쉬 실패 도메인</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>크러쉬 지역</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>없음</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>기술</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>패킷크기</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>크러쉬루트</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>크러쉬 장치 클래스</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>디렉토리</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>이름...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>선택한 Ceph 풀이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>풀 형태</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 풀 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>게재위치 그룹</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>적어도 하나의 게재위치 그룹이 필요함!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>클러스터는 이 많은 PG들를 처리 할 수 없습니다. 필요한 PG 양을 다시 계산하십시오.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>계산 도움말</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>복제되는 크기</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>플레그들</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 덮어쓰기</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure Code 프로파일</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 사용가능한 Erasure Code 프로파일 없음 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 한개의 Erasure Code 프로파일 선택 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 크러쉬 룰 선택 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>크러쉬 룰</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>크러쉬 단계들</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>압축</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>양식</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>알고리즘</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 이용가능한 Erasure 압축알고리즘 없음 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>최소 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>예) 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>값은 0보다 커야합니다</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>최대 blob 크기</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>예) 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>값은 최소 blob 크기보다 커야 합니다</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>비율</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>압축율</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>값은 0.0과 1.0 사이 여야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>예., 100 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>세부설명</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>성능 세부정보들</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>케쉬 계층들 상세설명들</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>이미지를 휴지통에 이동</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>보호가 만료되는 </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>보호되지 않음</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>날짜 형식 오류. "YYYY-MM-DD HH:mm:ss" 형식으로 지정하세요.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>보호기간이 이미 만료되었습니다. 더 미래의 날짜를 선택하거나 공란으로 남겨두세요.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>이미지 옮기기</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>개관</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>타겟들</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>인증 탐색</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만을 포함가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>암호</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>공동 사용자</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>공통 암호</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>이용가능한 정보:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI 타겟이 이용 불가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>풀</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>생성된</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>크기</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>객체크기</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>준비된</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>준비된 총계</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>스트라이핑 단위</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>스트라이핑 횟수</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>상위</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>블록 이름 접두사</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>순서</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>스냅삿</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>이미지</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>이 설정은 전역 값을 덮어씁니다.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>글로벌</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>이것은 전역 값입니다. 이 이미지에 대해 이 옵션의 값이 설정되지 않았습니다.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' 와 \'@\' 문자는 사용불가입니다.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 이용가능한 rbd풀 없음 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 풀 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>전용 데이타 풀들을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>데이타 풀</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBD의 객체-데이타를 저장하고 있는 전용 풀</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>사이즈를 증가시켜야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>자세한</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>분산저장</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>분산저장단위</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 분산저장단위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>분산저장 개수가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>분산저장단위는 객체크기보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>분산저장 갯수</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>분산저장 단위가 정의되어 있으므로 이 필드는 필수입니다!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>분산저장 갯수는 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>롤백하려고 합니다.</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>휴지통 비우기</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>모든</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>풀:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>풀 이름:</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>이미지 복구하기</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>복구를 위해</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>이미지들의 새로운 이름을 입력하고 클릭하세요</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>새로운 이름</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>폐기될</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>까지 보호됨</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 토폴로지</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>기본설정 값들로 부터 인자를 변경하는 것은 일반적으로 필요하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>설정들</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>백스토어</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>확인</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>고급설정들</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>타겟 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN이 잘못된 패턴을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Key\n예를들면: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>추가 정보</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>이 타겟은 고급설정들을 수정했습니다.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>포털</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>포털 추가</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>이 이미지는 설정들을 수정했습니다. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>이미지 추가</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 인증</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>개시자들</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>클라이언트 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>개시자 IQN은 유일해야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>사용자이름은 8~64자까지 길이의 문자들을 가져야 하며 그리고, 오직 , \'.\', \'@\', \'-\', \'_\', \':\' 등의 특수 문자들만 포함이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>개시자는 하나의 그룹에 속해야 하고, 이미지는 그룹안에서 설정합니다.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>추가된 아이템들이 없음</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>게시자 추가</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>그룹들</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>그룹</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>그룹추가</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>휴지통</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>이슈들</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>동기화중</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>준비됨</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>풀 미러모드를 편집하기</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>상대방 클러스터들은 미러를 단절하기 전에 반드시 제거되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>클러스터 이름</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>클러스터 이름이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX 아이디</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX 아이디...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX 아이디가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>모니터 주소들</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>콤마로 분리된 주소들...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>모니터 주소가 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 키</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64로 인코딩 된 키 ...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 키는 반드시 base64로 인코드 되어야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>성능 카운터들을 사용 할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>데몬 목록들</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>버킷데이타 적재 중</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>값이 유효하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>선택한 이름이 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>소유자</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 사용자 선택 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>이용가능</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>색인형식</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>위치규칙</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>최대 마커</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>마스터 버젼</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>수정된 시간</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>제로그룹</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>버킷 할당량</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>무제한</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>사용자명</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 사용자명 선택 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>자동생성된 키</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>접근 키</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>비밀 키</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>전체 이름</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>전자우편 주소</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>유예되다.</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>시스템</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>보조사용자들</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>능력치들</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>사용자 할당량</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>보기</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>키들</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 형태 선택 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>권한</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 권한 선택 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>보조사용자</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>선택한 보조사용자 아이디가 이미 사용중입니다.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>읽기, 쓰기</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>가득찬</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>스위프트 키</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>자동생선된 비밀</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>사용자 데이타 적재 중...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>사용자 데이타를 적재할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>선택된 사용자 아이디가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>이것은 유효한 전자우편 주소가 아닙니다.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>선택한 전자우편 주소가 이미 사용 중입니다.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>최대 버킷들</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>설정해제됨</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>커스텀</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 키</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>보조사용자가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>키가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>스위프트</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>능력치가 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>무제한 크기</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>최대 크기</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>무제한 객체들</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>최대 객체들</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>입력된 값은 반드시 0보다 커야 합니다.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>세부설명...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>권한들</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>역할들</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>암호 확인</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>암호 확인이 암호와 일치하지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>전자우편</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>유효하지않는 전자우편.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>당신의 사용자로부터 "사용자 읽기 / 업데이트"권한을 제거하려고합니다.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>계속하면 모든 사용자에게 역할을 추가하거나 제거 할 수 없게됩니다.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>계속 진행하기를 원하십니까?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>도움말</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>문서</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>대하여</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>대쉬보드 설정</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>사용자 관리</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>로그인된 사용자</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>로그아웃</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>속성들 (OSD 맵)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>메타데이타 사용할 수 없음</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>메타데이타</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>성능 카운터</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>쓰기</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>히스토그램</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>현재 값들</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>최소</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>최대</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>소스</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>수준</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>수행시간에 갱신가능함(편집가능)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>테크들</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>열거형 값들</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>추가로 더보기</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>클러스터 상태</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>관리자 데몬들</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>오브젝트 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>메타데이타 서버들</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 게이트웨이들</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>클라이언트 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>클라이언트 처리량</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>클라이언트 읽기/쓰기</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>복구 처리량</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>세정작업</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>성능</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>원시용량</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD당 PG들</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 상태들</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>용량</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>현재</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>업데이트된 검색 인증</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>사용가능한 포탈들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>사용가능한 이미지들이 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>사용할 수있는 이미지가 없습니다. 대상에 이미지를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>사용할 수있는 개시자가 없습니다. 대상에 개시자를 추가했는지 확인하십시오.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>타겟</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>쓰기 바이트들</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>읽기 Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>쓰기 Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O 이래로</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>인스탄스</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>이슈</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>진행중</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>편집모드</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>상대방 추가</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>상대방 편집</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>상대방 삭제</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>리더</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 로컬</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 원격</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>상대방 미러</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>키</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>딥 패턴</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>계층화</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>배타적인 락</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>오프젝트-맵(배타적인-락을 요구한다)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>저널링(배탁적인-락을 요구합니다.)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>보호안됨</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 스냅샷 롤백</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 스냅샷</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>삭제될 </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>아이디</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>형태</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>상태</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>버젼</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>호스트</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>루트</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>대기 데몬들</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>순위</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>데몬</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>활동</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>덴트리들</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>아이노드들</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>사용량</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>갱신된</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>이 값은 런타임에 업데이트 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>데몬들 / 클라이언트들은 모니터 구성 데이터베이스에서이 값을 가져 오지 않습니다. \'ceph config set ...\'을 통해이 옵션을 설정하는 것은 허락되지 않습니다. 이 옵션은 ceph.conf 또는 명령 줄을 통해 구성해야합니다.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>옵션은 데몬 시작 중에 만 적용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>옵션은 클러스터 생성할 때 만 영향을 줍니다.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>옵션은 데몬 생성할 때만 영향을줍니다.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>서비스</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>현재값</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>편집가능</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>사용가능</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>사용불가</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>재-접속 중, 기다려 주세요...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>공개 주소</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>열린 세션들</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>들어올 수 없는</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>이전에 마크 아웃 된 OSD는 시작시 다시 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>나갈 수 없는</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD들은 구성된 간격 후에는 자동으로 표시되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>살아나지 않는</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD는 시작할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>죽일 수 없는</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>모니터가 OSD들의 다운을 표시하지 않도록 OSD 장애 보고서가 무시되고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>멈출</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>읽기와 쓰기를 멈춤</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>스크러빙 않됨</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>스크러빙이 비활성화되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>딥 스크럽 안됨</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>딥 스크러빙이 비활성되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>백필 없음</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG들의 백필이 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>복구 않됨</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG들의 복구가 일시중지 되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>비트단위 정렬</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>비트단위 정렬을 사용하세요</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>완전삭제된 스냅디렉토리들</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD들이 변화된 스냅셋을 가지고 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>삭제된 복구들</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>피어링 대신 복구 중에 수행된 삭제물들</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 로그 하드 한계</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>pg 로그 길이에 하드 한계를 넣으세요</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>갱신된 OSD 플래그들</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>아웃</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>인</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>다운</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>표시</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 손실</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>완전제거</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>완전제거된</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>파괴된</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>삭제</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>읽은 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>쓰여진 바이트들</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>읽기 ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>쓰기 ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>최대 백필들</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>최대 활성화를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>최대 단일 시작을 복구하기</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>잠자기를 복구하기</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>일</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>심각도</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>시작된</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>사용된</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>이용가능:</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>깨끗한</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>정상동작중</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>경고</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>알려지지 않은</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>정상</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>파일시스템들 없음</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>활성화된</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>대기중인</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>이용불가</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>활성화된 데몬들</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>정족수</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 서비스가 설정되지 않음</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>전송</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 사용자</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 파일시스템</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(전역 구성에서 상속)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>전역 구성에서 상속</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>- 어떤 종류의 사용자 ID 스쿼시가 수행되는지 선택 -</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>사용가능한 데몬이 없읍니다.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>캐쉬모드</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>최소 퇴거 연령</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>최소 플러시 연령</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>목표 최대 바이트들</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>목표 최대 오브젝트들</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>추가된 응용프로그램 없음</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>응용프로그램 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>하나의 풀은 오직 네개의 응용프로그램 정의들을 가질 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target> \'_a-zA-Z0-9\' 문자들만 허락됨</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>최대 길이는 128글자이다.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>필터 또는 추가된 응용프로그램들</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>응용프로그램 추가</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure 코드 프로파일</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>복제 크기</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>마지막 변경</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure 코드화된 프로파일</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>크러쉬 룰셋</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>버킷</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>버킷들</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>사용자</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>사용자들</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>범위</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>읽기</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>만들기</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>시스템 롤</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>갱신된 사용자</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>계속</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>당신의 롤들이 변경되어 당신은 자동적으로 로그아웃되었습니다.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>각각의 오브젝트들은 데이타-청크 부분들로 분리되어, 각기 다른 OSD에 보관됩니다.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>각 오브젝트들에 대한 코딩 청크를 계산하고 서로 다른 OSD에 저장합니다. \n코딩된 청크의 수는 데이터 손실없이 작동중지 되어 질 수있는 OSD의 숫자이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 플러그인은 가장 일반적이고 유연한 플러그인으로,\n또한 Ceph erasure 코드 풀의 기본값이기도합니다.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>보다 유연한 기술은 reed_sol_van입니다 : k와 m을 설정하면 충분합니다. \ncauchy_good 기술은 빠를 수 있지만 패킷크기를 주의깊게 선택해야합니다. \nreed_sol_r6_op, liberation, blaum_roth, liber8tion은 모두 m = 2로만 구성 할 수 있다는 점에서 RAID-6에 해당합니다.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>인코딩은 한번에 바이트들 크기의 패킷에 대해 수행됩니다. 올바른 패킷 크기를 선택하는 것은 어렵습니다. jerasure 문서에는이 주제에 대한 광범위한 정보가 들어 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasure 플러그인을 사용하면 삭제 된 코딩 된 객체가 여러 OSD에 저장 될 때 하나의 OSD가 손실되는 것을 복구하려면 다른 모든 OSD를 읽어야합니다. 예를 들어 jerasure가 k = 8 및 m = 4로 구성되어있는 경우 하나의 OSD를 잃어 버리면 11 명의 다른 사람들이 수리해야합니다.\nlrc erasure code plugin은 적은 양의 OSD를 사용하여 복구 할 수 있도록 로컬 패리티 청크를 만듭니다. 예를 들어, lrc가 k = 8, m = 4 및 l = 4로 구성된 경우 4 개의 OSD마다 추가 패리티 덩어리가 생성됩니다. 단일 OSD가 손실되면 11 개 대신 4 개의 OSD만으로 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>코딩 및 데이터 청크를 크기 지역 집합으로 그룹화합니다. 예를 들어, k = 4 및 m = 2에 대해, 지역성 = 3 일 때 두 개의 세 그룹이 생성됩니다. 각 세트는 다른 세트의 청크를 읽지 않고도 복구 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>l로 정의 된 각 청크 집합이 저장되는 크러시 버킷의 유형입니다. 예를 들어 랙으로 설정하면 l 개의 청크 그룹이 각각 다른 랙에 배치됩니다. \n랙 선택 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다. 설정되어 있지 않으면, 그러한 그룹화가 수행되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 플러그인은 ISA 라이브러리를 캡슐화합니다. 인텔 프로세서에서만 실행됩니다.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 플러그인은 두 개의 리드 솔로몬 형식으로 제공됩니다.\nreed_sol_van이 설정되면 Vandermonde, cauchy가 설정되면 Cauchy입니다.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec plugin은 다중 SHEC 라이브러리를 캡슐화합니다.\n           ceph가 리드 솔로몬 코드보다 더 효율적으로 데이터를 복구 할 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>각 데이터 청크가 계산 범위에 포함되는 패리티 청크의 수입니다. 이 수치는 내구성 측정기로 사용됩니다. 예를 들어, c = 2 인 경우 2 개의 OSD가 데이터 손실없이 중단 될 수 있습니다.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 규칙의 첫 번째 단계에 사용 된 크러시 버킷의 이름입니다. 예를 들어 step은 기본값을 취합니다.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>동일한 실패 도메인을 가진 양동이에 두 개의 청크가 없는지 확인하십시오. 예를 들어 실패 도메인이 호스트 인 경우 두 개의 청크가 동일한 호스트에 저장되지 않습니다. 이 단계는 리프 호스트를 선택하는 단계와 같은 CRUSH 규칙 단계를 만드는 데 사용됩니다.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSH지도에서 크래시 장치 클래스 이름을 사용하여 특정 클래스 (예 : ssd 또는 hdd)의 장치로 배치를 제한합니다.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>삭제 코드 플러그인이로드되는 디렉토리 이름을 설정하십시오.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>모든 작업들 허용</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>오직 서버를 수정하지 않는 작업들만 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>읽기와 쓰기 작업은 허용되지 않지만, 그외 모든 작업이 가능합니다.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>파일의 속성과 디렉토리 내용을 변경하는 읽기, 쓰기 또는 어떠한 작업은 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>전혀 어떠한 접근도 허용되지 않습니다.</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 우선순위 선택 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>낮음</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>높음</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>정보</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>마지막 5분</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>지난 15분</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>지난 30분</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>지난 1시간(기본)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>지난 3시간</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>지난 6시간</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>지난 12시간</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>지난 24시간</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>어제</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>오늘</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>오늘 지금까지</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>그저께</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>지난 2일</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>이번 주 마지막날</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>전주</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>이번주</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>이번주 지금까지</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>지난 7일</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>지난 달</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>이번 달</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>이번 달 지금까지</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>지난 30일</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>지난 90일</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>지난 6개월</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>지난 1년</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>전년도</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>금년도</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>금년 지금까지</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>지난 2년</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>지난 5년</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>선택된 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>다시 선택하기 위해 아이템 선택을 취소</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>선택 한계에 도달함</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>필터 테그들</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>베찌 추가</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>사용가능한 아이템 없음</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>딥 스크럽</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>파괴됨</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>단조로움</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>다운 표시</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>인 표시</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>손실 표시</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>아웃 표시</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>보호</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>이름변경</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>휴지통으로 옮기기</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>보호않됨</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>삭제돔</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>복제된</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>복사된</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>평평하게 됨</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>완전삭제됨</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>복구됨</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>롤백됨</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>예</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>아니오</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>서비스 량</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 한계</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>원하는 초당 IO 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>원하는 초당 IO 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>읽기 BPS 제한</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>원하는 초당 읽기 바이스 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>읽기 IOPS 한도</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>원하는 초당 읽기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>쓰기 BPS 한도</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>원하는 초당 쓰기 바이트 수 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>쓰기 IOPS 제한</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>원하는 초당 쓰기 작업 제한입니다.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>원하는 버스트 IO 바이트 한도 입니다.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>원하는 IO 작업의 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>읽기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>원하는 읽기 버스트 한계입니다.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>읽기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>원하는 읽기 작업의 버스트 한도입니다.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>쓰기 BPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>쓰기 IOPS 버스트</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>쓰기 바이트의 원하는 버스트 한도.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>수행중</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>수행</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>수행된</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>알려지지 않는 작업</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>생성하는 중</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>생성</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>갱신 중</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>갱신</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>삭제 중</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>복제중</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>복제</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>복사중</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>복사</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>평평하게 하는 중</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>평평함</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>롤백 중</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>롤백</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>옮기는 중</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>옮기기</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>옮겨짐</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>이미지를 찾을 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>복구중</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>복구</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>완전삭제 중</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>완전삭제</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>모든 풀들</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>피어가 포함되어 있기 때문에 미러링을 비활성화 할 수 없습니다.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"33Wh":function(t,e,n){var a=n("yoRg"),r=n("eDl+");t.exports=Object.keys||function(t){return a(t,r)}},"38Bd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return r})),n.d(e,"d",(function(){return o}));var a=n("hpHm");class r{constructor(){this.animate=!1,this.max=100}}class i{constructor(t){this.isStacked=!1,this.addClass=!0,this.bars=[],this._max=100,Object.assign(this,t)}set animate(t){this._animate=t,this.bars.forEach(e=>{e.animate=t})}set striped(t){this._striped=t,this.bars.forEach(e=>{e.striped=t})}set value(t){this.isStacked=Array.isArray(t),this._value=t}get isBs3(){return Object(a.d)()}get max(){return this._max}set max(t){this._max=t,this.bars.forEach(t=>{t.recalculatePercentage()})}addBar(t){t.animate=this._animate,t.striped=this._striped,this.bars.push(t)}removeBar(t){this.bars.splice(this.bars.indexOf(t),1)}}class s{constructor(t,e,n){this.el=t,this.renderer=n,this.addClass=!0,this.percent=0,this.progress=e}get type(){return this._type}set type(t){this._type=t,this.applyTypeClasses()}get value(){return this._value}set value(t){(t||0===t)&&(this._value=t,this.recalculatePercentage())}get setBarWidth(){return this.recalculatePercentage(),this.percent}get isBs3(){return Object(a.d)()}ngOnInit(){this.progress.addBar(this)}ngOnDestroy(){this.progress.removeBar(this)}recalculatePercentage(){this.percent=+(this.value/this.progress.max*100).toFixed(2);const t=this.progress.bars.reduce((function(t,e){return t+e.percent}),0);t>100&&(this.percent-=t-100)}applyTypeClasses(){if(this._prevType){const t=`bg-${this._prevType}`;this.renderer.removeClass(this.el.nativeElement,`progress-bar-${this._prevType}`),this.renderer.removeClass(this.el.nativeElement,t),this._prevType=null}if(this._type){const t=`bg-${this._type}`;this.renderer.addClass(this.el.nativeElement,`progress-bar-${this._type}`),this.renderer.addClass(this.el.nativeElement,t),this._prevType=this._type}}}class o{static forRoot(){return{ngModule:o,providers:[r]}}}},"3A9y":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"3E1r":function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात"===e?t<4?t:t+12:"सुबह"===e?t:"दोपहर"===e?t>=10?t:t+12:"शाम"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात":t<10?"सुबह":t<17?"दोपहर":t<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("wd/R"))},"3Fdi":function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"3L66":function(t,e,n){var a=n("MMmD"),r=n("ExA7");t.exports=function(t){return r(t)&&a(t)}},"3N8a":function(t,e,n){"use strict";var a=n("quSY");class r extends a.a{constructor(t,e){super()}schedule(t,e=0){return this}}n.d(e,"a",(function(){return i}));class i extends r{constructor(t,e){super(t,e),this.scheduler=t,this.work=e,this.pending=!1}schedule(t,e=0){if(this.closed)return this;this.state=t;const n=this.id,a=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(a,n,e)),this.pending=!0,this.delay=e,this.id=this.id||this.requestAsyncId(a,this.id,e),this}requestAsyncId(t,e,n=0){return setInterval(t.flush.bind(t,this),n)}recycleAsyncId(t,e,n=0){if(null!==n&&this.delay===n&&!1===this.pending)return e;clearInterval(e)}execute(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const n=this._execute(t,e);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,e){let n=!1,a=void 0;try{this.work(t)}catch(r){n=!0,a=!!r&&r||new Error(r)}if(n)return this.unsubscribe(),a}_unsubscribe(){const t=this.id,e=this.scheduler,n=e.actions,a=n.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==a&&n.splice(a,1),null!=t&&(this.id=this.recycleAsyncId(e,t,null)),this.delay=null}}},"3bBZ":function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("4mDm"),s=n("kRJp"),o=n("tiKp"),u=o("iterator"),l=o("toStringTag"),d=i.values;for(var c in r){var f=a[c],h=f&&f.prototype;if(h){if(h[u]!==d)try{s(h,u,d)}catch(p){h[u]=d}if(h[l]||s(h,l,c),r[c])for(var g in i)if(h[g]!==i[g])try{s(h,g,i[g])}catch(p){h[g]=i[g]}}}},"4/ic":function(t,e,n){var a=n("ZWtO");t.exports=function(t){return function(e){return a(e,t)}}},"44Ds":function(t,e,n){var a=n("e4Nc");function r(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(r.Cache||a),n}r.Cache=a,t.exports=r},"4DD9":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){let e=!1;switch(t){case!0:case 1:case"y":case"yes":case"t":case"true":case"on":case"1":e=!0}return e}}},"4DFU":function(t,e,n){var a=n("+Qka"),r=n("GoyQ");t.exports=function t(e,n,i,s,o,u){return r(e)&&r(n)&&(u.set(n,e),a(e,n,void 0,t,u),u.delete(n)),e}},"4Dmd":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},i=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},s=function(){function t(t,e,n){this.renderer=t,this.templateRef=e,this.viewContainerRef=n}return Object.defineProperty(t.prototype,"isOpen",{set:function(t){t?(this._show(),this.isEnabled&&!1===this._isOpen&&this._animateOpen()):this.isEnabled?this._animateClose():this._hide(),this._isOpen=!!t},enumerable:!0,configurable:!0}),t.prototype._show=function(){this.innerElement||(this.innerElement=this.viewContainerRef.createEmbeddedView(this.templateRef).rootNodes[0])},t.prototype._hide=function(){this.viewContainerRef.clear(),this.innerElement=null},t.prototype._animateOpen=function(){var t=this,e=this.animateSpeed,n=this.animateAcceleration,a=0;this.renderer.setStyle(this.innerElement,"max-height","0"),setTimeout((function(){var r=setInterval((function(){if(!t._isOpen||!t.innerElement)return clearInterval(r);var i=Math.round(a+=e);t.renderer.setStyle(t.innerElement,"max-height",i+"px");var s=t.innerElement.getBoundingClientRect?t.innerElement.getBoundingClientRect().height:0;e*=n,n*=1.005,s<i&&(t.renderer.setStyle(t.innerElement,"max-height",null),clearInterval(r))}),17)}))},t.prototype._animateClose=function(){var t=this;if(this.innerElement)var e=this.animateSpeed,n=this.animateAcceleration,a=this.innerElement.getBoundingClientRect().height,r=setInterval((function(){if(t._isOpen||!t.innerElement)return clearInterval(r);t.renderer.setStyle(t.innerElement,"max-height",(a-=e)+"px"),e*=n,n*=1.005,a<=0&&(t.viewContainerRef.clear(),t.innerElement=null,clearInterval(r))}),17)},r([Object(a.Input)("treeAnimateOpenSpeed"),i("design:type",Number)],t.prototype,"animateSpeed",void 0),r([Object(a.Input)("treeAnimateOpenAcceleration"),i("design:type",Number)],t.prototype,"animateAcceleration",void 0),r([Object(a.Input)("treeAnimateOpenEnabled"),i("design:type",Boolean)],t.prototype,"isEnabled",void 0),r([Object(a.Input)("treeAnimateOpen"),i("design:type",Boolean),i("design:paramtypes",[Boolean])],t.prototype,"isOpen",null),r([Object(a.Directive)({selector:"[treeAnimateOpen]"}),i("design:paramtypes",[a.Renderer2,a.TemplateRef,a.ViewContainerRef])],t)}()},"4HWh":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("KOzp"),s=n("z/SZ"),o=n("2uy1");n("p4Cf"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return d}));var u=a["ɵcrt"]({encapsulation:0,styles:[["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,(function(t,e){var n=e.component;t(e,0,0,n.class,n.html)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popoverTpl",2]],null,0,null,l)),(t()(),a["ɵeld"](1,16777216,null,null,4,"i",[["aria-hidden","true"],["container","body"],["placement","bottom"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,1),a["ɵdid"](5,212992,null,0,i.c,[i.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,o.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null)],(function(t,e){var n=t(e,4,0,e.component.icons.questionCircle);t(e,3,0,n),t(e,5,0,a["ɵnov"](e,0),"bottom",!0,"body")}),null)}},"4I5i":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t})()},"4MV3":function(t,e,n){!function(t){"use strict";var e={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};t.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(t){return t.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(t,e){return 12===t&&(t=0),"રાત"===e?t<4?t:t+12:"સવાર"===e?t:"બપોર"===e?t>=10?t:t+12:"સાંજ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"રાત":t<10?"સવાર":t<17?"બપોર":t<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("wd/R"))},"4Oe1":function(t,e,n){var a=n("YO3V");t.exports=function(t){return a(t)?void 0:t}},"4WOD":function(t,e,n){var a=n("UTVS"),r=n("ewvW"),i=n("93I0"),s=n("4Xet"),o=i("IE_PROTO"),u=Object.prototype;t.exports=s?Object.getPrototypeOf:function(t){return t=r(t),a(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},"4Xet":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},"4dOw":function(t,e,n){!function(t){"use strict";t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"4kuk":function(t,e,n){var a=n("SfRM"),r=n("Hvzi"),i=n("u8Dt"),s=n("ekgI"),o=n("JSQU");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}u.prototype.clear=a,u.prototype.delete=r,u.prototype.get=i,u.prototype.has=s,u.prototype.set=o,t.exports=u},"4l63":function(t,e,n){var a=n("I+eb"),r=n("wg0c");a({global:!0,forced:parseInt!=r},{parseInt:r})},"4mDm":function(t,e,n){"use strict";var a=n("/GqU"),r=n("RNIs"),i=n("P4y1"),s=n("afO8"),o=n("fdAy"),u=s.set,l=s.getterFor("Array Iterator");t.exports=o(Array,"Array",(function(t,e){u(this,{type:"Array Iterator",target:a(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,a=t.index++;return!e||a>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:a,done:!1}:"values"==n?{value:e[a],done:!1}:{value:[a,e[a]],done:!1}}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},"4qC0":function(t,e,n){var a=n("NykK"),r=n("Z0cm"),i=n("ExA7");t.exports=function(t){return"string"==typeof t||!r(t)&&i(t)&&"[object String]"==a(t)}},"4sDh":function(t,e,n){var a=n("4uTw"),r=n("03A+"),i=n("Z0cm"),s=n("wJg7"),o=n("shjB"),u=n("9Nap");t.exports=function(t,e,n){for(var l=-1,d=(e=a(e,t)).length,c=!1;++l<d;){var f=u(e[l]);if(!(c=null!=t&&n(t,f)))break;t=t[f]}return c||++l!=d?c:!!(d=null==t?0:t.length)&&o(d)&&s(f,d)&&(i(t)||r(t))}},"4syw":function(t,e,n){var a=n("busE");t.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},"4uTw":function(t,e,n){var a=n("Z0cm"),r=n("9ggG"),i=n("GNiM"),s=n("dt0z");t.exports=function(t,e){return a(t)?t:r(t,e)?[t]:i(s(t))}},"5+tZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("ZUHj"),r=n("l7GE"),i=n("51Dv"),s=n("lJxs"),o=n("Cfvw");function u(t,e,n=Number.POSITIVE_INFINITY){return"function"==typeof e?a=>a.pipe(u((n,a)=>Object(o.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))),n)):("number"==typeof e&&(n=e),e=>e.lift(new l(t,n)))}class l{constructor(t,e=Number.POSITIVE_INFINITY){this.project=t,this.concurrent=e}call(t,e){return e.subscribe(new d(t,this.project,this.concurrent))}}class d extends r.a{constructor(t,e,n=Number.POSITIVE_INFINITY){super(t),this.project=e,this.concurrent=n,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(t){this.active<this.concurrent?this._tryNext(t):this.buffer.push(t)}_tryNext(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.active++,this._innerSub(e,t,n)}_innerSub(t,e,n){const r=new i.a(this,e,n),s=this.destination;s.add(r);const o=Object(a.a)(this,t,void 0,void 0,r);o!==r&&s.add(o)}_complete(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()}notifyNext(t,e,n,a,r){this.destination.next(e)}notifyComplete(t){const e=this.buffer;this.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}},"51Dv":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{constructor(t,e,n){super(),this.parent=t,this.outerValue=e,this.outerIndex=n,this.index=0}_next(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)}_error(t){this.parent.notifyError(t,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}},"5Tg0":function(t,e,n){(function(t){var a=n("Kz5y"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r?a.Buffer:void 0,o=s?s.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,a=o?o(n):new t.constructor(n);return t.copy(a),a}}).call(this,n("YuTi")(t))},"6+QB":function(t,e,n){!function(t){"use strict";t.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},"6B0Y":function(t,e,n){!function(t){"use strict";var e={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};t.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(t){return"ល្ងាច"===t},meridiem:function(t,e,n){return t<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(t){return t.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},"6JNq":function(t,e,n){var a=n("UTVS"),r=n("Vu81"),i=n("Bs8V"),s=n("m/L8");t.exports=function(t,e){for(var n=r(e),o=s.f,u=i.f,l=0;l<n.length;l++){var d=n[l];a(t,d)||o(t,d,u(e,d))}}},"6LWA":function(t,e,n){var a=n("xrYK");t.exports=Array.isArray||function(t){return"Array"==a(t)}},"6MUB":function(t,e,n){"use strict";var a=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,r){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map((function(r){var i=encodeURIComponent(a(r))+n;return Array.isArray(t[r])?t[r].map((function(t){return i+encodeURIComponent(a(t))})).join(e):i+encodeURIComponent(a(t[r]))})).join(e):r?encodeURIComponent(a(r))+n+encodeURIComponent(a(t)):""}},"6VoE":function(t,e,n){var a=n("tiKp"),r=n("P4y1"),i=a("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||s[i]===t)}},"6qls":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("tz6c");class a{constructor(t,e){this.docService=t,this.i18n=e,this.docText=this.i18n("documentation")}ngOnInit(){this.docService.subscribeOnce(this.section,t=>{this.docUrl=t})}}},"6sVZ":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"711d":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"77Zs":function(t,e,n){var a=n("Xi7e");t.exports=function(){this.__data__=new a,this.size=0}},"7BjC":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["ühe minuti","üks minut"],mm:[t+" minuti",t+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[t+" tunni",t+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[t+" kuu",t+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[t+" aasta",t+" aastat"]};return e?r[n][2]?r[n][2]:r[n][1]:a?r[n][0]:r[n][1]}t.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d päeva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"7GkX":function(t,e,n){var a=n("b80T"),r=n("A90E"),i=n("MMmD");t.exports=function(t){return i(t)?a(t):r(t)}},"7Ix3":function(t,e){t.exports=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}},"7aV9":function(t,e,n){!function(t){"use strict";t.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(t){return t+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(t){return"ප.ව."===t||"පස් වරු"===t},meridiem:function(t,e,n){return t>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("wd/R"))},"7fqy":function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}},"7o/Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("n6bG"),r=n("gRHU"),i=n("quSY"),s=n("2QA8"),o=n("2fFW"),u=n("NJ4a");class l extends i.a{constructor(t,e,n){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=r.a;break;case 1:if(!t){this.destination=r.a;break}if("object"==typeof t){t instanceof l?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new d(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new d(this,t,e,n)}}[s.a](){return this}static create(t,e,n){const a=new l(t,e,n);return a.syncErrorThrowable=!1,a}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class d extends l{constructor(t,e,n,i){let s;super(),this._parentSubscriber=t;let o=this;Object(a.a)(e)?s=e:e&&(s=e.next,n=e.error,i=e.complete,e!==r.a&&(o=Object.create(e),Object(a.a)(o.unsubscribe)&&this.add(o.unsubscribe.bind(o)),o.unsubscribe=this.unsubscribe.bind(this))),this._context=o,this._next=s,this._error=n,this._complete=i}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:e}=this;o.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:e}=this,{useDeprecatedSynchronousErrorHandling:n}=o.a;if(this._error)n&&e.syncErrorThrowable?(this.__tryOrSetError(e,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(e.syncErrorThrowable)n?(e.syncErrorValue=t,e.syncErrorThrown=!0):Object(u.a)(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;Object(u.a)(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const e=()=>this._complete.call(this._context);o.a.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,e),this.unsubscribe()):(this.__tryOrUnsub(e),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),o.a.useDeprecatedSynchronousErrorHandling)throw n;Object(u.a)(n)}}__tryOrSetError(t,e,n){if(!o.a.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(a){return o.a.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=a,t.syncErrorThrown=!0,!0):(Object(u.a)(a),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}},"7qid":function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return f}));var a=n("8Y7J"),r=n("38Bd"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](0,[a["ɵncd"](null,0)],null,null)}var u=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%] {\n      width: 100%;\n      display: flex;\n    }"],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,o,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,n.type,n._value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[2,"progress-bar-animated",null],[2,"progress-bar-striped",null],[2,"active",null],[1,"aria-valuenow",0],[1,"aria-valuetext",0],[1,"aria-valuemax",0],[4,"height","%"],[4,"width","%"],[2,"progress-bar",null]],null,null,o,s)),a["ɵdid"](1,245760,null,0,r.a,[a.ElementRef,r.b,a.Renderer2],{type:[0,"type"],value:[1,"value"]},null),(t()(),a["ɵted"](2,0,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.type,e.context.$implicit.value)}),(function(t,e){t(e,0,0,!a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).striped,a["ɵnov"](e,1).isBs3&&a["ɵnov"](e,1).animate,a["ɵnov"](e,1).value,a["ɵnov"](e,1).percent?a["ɵnov"](e,1).percent.toFixed(0)+"%":"",a["ɵnov"](e,1).max,"100",a["ɵnov"](e,1).setBarWidth,a["ɵnov"](e,1).addClass),t(e,2,0,e.context.$implicit.label)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component._value)}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,!n.isStacked),t(e,3,0,n.isStacked)}),null)}},"8/+R":function(t,e,n){!function(t){"use strict";var e={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};t.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(t){return t.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ਰਾਤ"===e?t<4?t:t+12:"ਸਵੇਰ"===e?t:"ਦੁਪਹਿਰ"===e?t>=10?t:t+12:"ਸ਼ਾਮ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ਰਾਤ":t<10?"ਸਵੇਰ":t<17?"ਦੁਪਹਿਰ":t<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("wd/R"))},"85J/":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(t);return e?e[1]:t}}},"88Gu":function(t,e){var n=Date.now;t.exports=function(t){var e=0,a=0;return function(){var r=n(),i=16-(r-a);if(a=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},"8Y7J":function(t,e,n){"use strict";n.r(e);var a=n("XNiG"),r=n("quSY"),i=n("HDdC"),s=n("VRyK"),o=n("7o/Q");function u(){return function(t){return t.lift(new l(t))}}class l{constructor(t){this.connectable=t}call(t,e){const{connectable:n}=this;n._refCount++;const a=new d(t,n),r=e.subscribe(a);return a.closed||(a.connection=n.connect()),r}}class d extends o.a{constructor(t,e){super(t),this.connectable=e}_unsubscribe(){const{connectable:t}=this;if(!t)return void(this.connection=null);this.connectable=null;const e=t._refCount;if(e<=0)return void(this.connection=null);if(t._refCount=e-1,e>1)return void(this.connection=null);const{connection:n}=this,a=t._connection;this.connection=null,!a||n&&a!==n||a.unsubscribe()}}class c extends i.a{constructor(t,e){super(),this.source=t,this.subjectFactory=e,this._refCount=0,this._isComplete=!1}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject}connect(){let t=this._connection;return t||(this._isComplete=!1,t=this._connection=new r.a,t.add(this.source.subscribe(new h(this.getSubject(),this))),t.closed&&(this._connection=null,t=r.a.EMPTY)),t}refCount(){return u()(this)}}const f=(()=>{const t=c.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}})();class h extends a.b{constructor(t,e){super(t),this.connectable=e}_error(t){this._unsubscribe(),super._error(t)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const t=this.connectable;if(t){this.connectable=null;const e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}}}function g(){return new a.a}n.d(e,"ɵangular_packages_core_core_q",(function(){return fv})),n.d(e,"ɵangular_packages_core_core_n",(function(){return lv})),n.d(e,"ɵangular_packages_core_core_o",(function(){return dv})),n.d(e,"ɵangular_packages_core_core_p",(function(){return cv})),n.d(e,"ɵangular_packages_core_core_r",(function(){return hv})),n.d(e,"ɵangular_packages_core_core_f",(function(){return xm})),n.d(e,"ɵangular_packages_core_core_l",(function(){return lf})),n.d(e,"ɵangular_packages_core_core_m",(function(){return bf})),n.d(e,"ɵangular_packages_core_core_k",(function(){return Wy})),n.d(e,"ɵangular_packages_core_core_j",(function(){return Uy})),n.d(e,"ɵangular_packages_core_core_b",(function(){return ut})),n.d(e,"ɵangular_packages_core_core_a",(function(){return at})),n.d(e,"ɵangular_packages_core_core_c",(function(){return yu})),n.d(e,"ɵangular_packages_core_core_d",(function(){return su})),n.d(e,"ɵangular_packages_core_core_e",(function(){return fu})),n.d(e,"ɵangular_packages_core_core_i",(function(){return Py})),n.d(e,"ɵangular_packages_core_core_s",(function(){return ty})),n.d(e,"ɵangular_packages_core_core_u",(function(){return Zm})),n.d(e,"ɵangular_packages_core_core_t",(function(){return $m})),n.d(e,"ɵangular_packages_core_core_x",(function(){return Xm})),n.d(e,"ɵangular_packages_core_core_v",(function(){return Jm})),n.d(e,"ɵangular_packages_core_core_w",(function(){return Qm})),n.d(e,"ɵangular_packages_core_core_ba",(function(){return Sg})),n.d(e,"ɵangular_packages_core_core_bb",(function(){return xa})),n.d(e,"ɵangular_packages_core_core_bc",(function(){return Ae})),n.d(e,"ɵangular_packages_core_core_bd",(function(){return Ve})),n.d(e,"ɵangular_packages_core_core_be",(function(){return rn})),n.d(e,"ɵangular_packages_core_core_bm",(function(){return ca})),n.d(e,"ɵangular_packages_core_core_bl",(function(){return ve})),n.d(e,"ɵangular_packages_core_core_g",(function(){return $s})),n.d(e,"ɵangular_packages_core_core_h",(function(){return Zs})),n.d(e,"ɵangular_packages_core_core_bg",(function(){return Cr})),n.d(e,"ɵangular_packages_core_core_bk",(function(){return wt})),n.d(e,"ɵangular_packages_core_core_bh",(function(){return x})),n.d(e,"ɵangular_packages_core_core_bi",(function(){return _})),n.d(e,"ɵangular_packages_core_core_bn",(function(){return R})),n.d(e,"ɵangular_packages_core_core_y",(function(){return dg})),n.d(e,"ɵangular_packages_core_core_z",(function(){return Gf})),n.d(e,"createPlatform",(function(){return Sy})),n.d(e,"assertPlatform",(function(){return Ny})),n.d(e,"destroyPlatform",(function(){return Cy})),n.d(e,"getPlatform",(function(){return Ry})),n.d(e,"PlatformRef",(function(){return Ay})),n.d(e,"ApplicationRef",(function(){return Ey})),n.d(e,"createPlatformFactory",(function(){return Iy})),n.d(e,"NgProbeToken",(function(){return wy})),n.d(e,"enableProdMode",(function(){return Ka})),n.d(e,"isDevMode",(function(){return Wa})),n.d(e,"APP_ID",(function(){return vm})),n.d(e,"PACKAGE_ROOT_URL",(function(){return Im})),n.d(e,"PLATFORM_INITIALIZER",(function(){return Om})),n.d(e,"PLATFORM_ID",(function(){return wm})),n.d(e,"APP_BOOTSTRAP_LISTENER",(function(){return Sm})),n.d(e,"APP_INITIALIZER",(function(){return mm})),n.d(e,"ApplicationInitStatus",(function(){return ym})),n.d(e,"DebugElement",(function(){return ov})),n.d(e,"DebugEventListener",(function(){return Hy})),n.d(e,"DebugNode",(function(){return sv})),n.d(e,"asNativeElements",(function(){return Ky})),n.d(e,"getDebugNode",(function(){return rv})),n.d(e,"Testability",(function(){return py})),n.d(e,"TestabilityRegistry",(function(){return by})),n.d(e,"setTestabilityGetter",(function(){return yy})),n.d(e,"TRANSLATIONS",(function(){return Rm})),n.d(e,"TRANSLATIONS_FORMAT",(function(){return Am})),n.d(e,"LOCALE_ID",(function(){return Cm})),n.d(e,"MissingTranslationStrategy",(function(){return km})),n.d(e,"ApplicationModule",(function(){return gv})),n.d(e,"wtfCreateScope",(function(){return ny})),n.d(e,"wtfLeave",(function(){return ay})),n.d(e,"wtfStartTimeRange",(function(){return ry})),n.d(e,"wtfEndTimeRange",(function(){return iy})),n.d(e,"Type",(function(){return no})),n.d(e,"EventEmitter",(function(){return tb})),n.d(e,"ErrorHandler",(function(){return Da})),n.d(e,"Sanitizer",(function(){return vr})),n.d(e,"SecurityContext",(function(){return yr})),n.d(e,"Attribute",(function(){return N})),n.d(e,"ANALYZE_FOR_ENTRY_COMPONENTS",(function(){return vu})),n.d(e,"ContentChild",(function(){return Tu})),n.d(e,"ContentChildren",(function(){return _u})),n.d(e,"Query",(function(){return xu})),n.d(e,"ViewChild",(function(){return wu})),n.d(e,"ViewChildren",(function(){return Ou})),n.d(e,"Component",(function(){return nm})),n.d(e,"Directive",(function(){return em})),n.d(e,"HostBinding",(function(){return sm})),n.d(e,"HostListener",(function(){return om})),n.d(e,"Input",(function(){return rm})),n.d(e,"Output",(function(){return im})),n.d(e,"Pipe",(function(){return am})),n.d(e,"NgModule",(function(){return gm})),n.d(e,"CUSTOM_ELEMENTS_SCHEMA",(function(){return Pa})),n.d(e,"NO_ERRORS_SCHEMA",(function(){return Ma})),n.d(e,"ViewEncapsulation",(function(){return Ot})),n.d(e,"Version",(function(){return of})),n.d(e,"VERSION",(function(){return uf})),n.d(e,"InjectFlags",(function(){return C})),n.d(e,"ɵɵdefineInjectable",(function(){return k})),n.d(e,"defineInjectable",(function(){return E})),n.d(e,"ɵɵdefineInjector",(function(){return L})),n.d(e,"forwardRef",(function(){return G})),n.d(e,"resolveForwardRef",(function(){return V})),n.d(e,"Injectable",(function(){return So})),n.d(e,"Injector",(function(){return Bo})),n.d(e,"ɵɵinject",(function(){return rt})),n.d(e,"inject",(function(){return it})),n.d(e,"INJECTOR",(function(){return $})),n.d(e,"ReflectiveInjector",(function(){return mu})),n.d(e,"ResolvedReflectiveFactory",(function(){return lu})),n.d(e,"ReflectiveKey",(function(){return eu})),n.d(e,"InjectionToken",(function(){return K})),n.d(e,"Inject",(function(){return T})),n.d(e,"Optional",(function(){return O})),n.d(e,"Self",(function(){return w})),n.d(e,"SkipSelf",(function(){return S})),n.d(e,"Host",(function(){return I})),n.d(e,"NgZone",(function(){return uy})),n.d(e,"ɵNoopNgZone",(function(){return gy})),n.d(e,"RenderComponentType",(function(){return Jc})),n.d(e,"Renderer",(function(){return Xc})),n.d(e,"Renderer2",(function(){return af})),n.d(e,"RendererFactory2",(function(){return ef})),n.d(e,"RendererStyleFlags2",(function(){return nf})),n.d(e,"RootRenderer",(function(){return tf})),n.d(e,"COMPILER_OPTIONS",(function(){return Hm})),n.d(e,"Compiler",(function(){return Ym})),n.d(e,"CompilerFactory",(function(){return Um})),n.d(e,"ModuleWithComponentFactories",(function(){return Dm})),n.d(e,"ComponentFactory",(function(){return Gc})),n.d(e,"ɵComponentFactory",(function(){return Gc})),n.d(e,"ComponentRef",(function(){return Fc})),n.d(e,"ComponentFactoryResolver",(function(){return Yc})),n.d(e,"ElementRef",(function(){return Kc})),n.d(e,"NgModuleFactory",(function(){return ht})),n.d(e,"NgModuleRef",(function(){return ft})),n.d(e,"NgModuleFactoryLoader",(function(){return Dy})),n.d(e,"getModuleFactory",(function(){return qy})),n.d(e,"QueryList",(function(){return nb})),n.d(e,"SystemJsNgModuleLoader",(function(){return Vy})),n.d(e,"SystemJsNgModuleLoaderConfig",(function(){return Fy})),n.d(e,"TemplateRef",(function(){return wf})),n.d(e,"ViewContainerRef",(function(){return Nf})),n.d(e,"EmbeddedViewRef",(function(){return Yy})),n.d(e,"ViewRef",(function(){return By})),n.d(e,"ChangeDetectionStrategy",(function(){return xt})),n.d(e,"ChangeDetectorRef",(function(){return Xs})),n.d(e,"DefaultIterableDiffer",(function(){return cf})),n.d(e,"IterableDiffers",(function(){return vf})),n.d(e,"KeyValueDiffers",(function(){return xf})),n.d(e,"SimpleChange",(function(){return Tc})),n.d(e,"WrappedValue",(function(){return Mu})),n.d(e,"platformCore",(function(){return uv})),n.d(e,"ɵALLOW_MULTIPLE_PLATFORMS",(function(){return Oy})),n.d(e,"ɵAPP_ID_RANDOM_PROVIDER",(function(){return _m})),n.d(e,"ɵdefaultIterableDiffers",(function(){return Tf})),n.d(e,"ɵdefaultKeyValueDiffers",(function(){return Of})),n.d(e,"ɵdevModeEqual",(function(){return Pu})),n.d(e,"ɵisListLikeIterable",(function(){return qu})),n.d(e,"ɵChangeDetectorStatus",(function(){return _t})),n.d(e,"ɵisDefaultChangeDetectionStrategy",(function(){return Tt})),n.d(e,"ɵConsole",(function(){return Nm})),n.d(e,"ɵsetCurrentInjector",(function(){return et})),n.d(e,"ɵgetInjectableDef",(function(){return D})),n.d(e,"ɵAPP_ROOT",(function(){return Co})),n.d(e,"ɵDEFAULT_LOCALE_ID",(function(){return Dg})),n.d(e,"ɵivyEnabled",(function(){return Lm})),n.d(e,"ɵCodegenComponentFactoryResolver",(function(){return Hc})),n.d(e,"ɵclearResolutionOfComponentResourcesQueue",(function(){return Ru})),n.d(e,"ɵresolveComponentResources",(function(){return Su})),n.d(e,"ɵReflectionCapabilities",(function(){return uo})),n.d(e,"ɵRenderDebugInfo",(function(){return Qc})),n.d(e,"ɵ_sanitizeHtml",(function(){return br})),n.d(e,"ɵ_sanitizeStyle",(function(){return Tr})),n.d(e,"ɵ_sanitizeUrl",(function(){return Qa})),n.d(e,"ɵglobal",(function(){return U})),n.d(e,"ɵlooseIdentical",(function(){return Du})),n.d(e,"ɵstringify",(function(){return j})),n.d(e,"ɵmakeDecorator",(function(){return y})),n.d(e,"ɵisObservable",(function(){return ed})),n.d(e,"ɵisPromise",(function(){return td})),n.d(e,"ɵclearOverrides",(function(){return Bx})),n.d(e,"ɵinitServicesIfNeeded",(function(){return rx})),n.d(e,"ɵoverrideComponentView",(function(){return zx})),n.d(e,"ɵoverrideProvider",(function(){return Vx})),n.d(e,"ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR",(function(){return mg})),n.d(e,"ɵgetLocalePluralCase",(function(){return Eg})),n.d(e,"ɵfindLocaleData",(function(){return Lg})),n.d(e,"ɵLOCALE_DATA",(function(){return Cg})),n.d(e,"ɵLocaleDataIndex",(function(){return Rg})),n.d(e,"ɵɵattribute",(function(){return Wu})),n.d(e,"ɵɵattributeInterpolate1",(function(){return al})),n.d(e,"ɵɵattributeInterpolate2",(function(){return rl})),n.d(e,"ɵɵattributeInterpolate3",(function(){return il})),n.d(e,"ɵɵattributeInterpolate4",(function(){return sl})),n.d(e,"ɵɵattributeInterpolate5",(function(){return ol})),n.d(e,"ɵɵattributeInterpolate6",(function(){return ul})),n.d(e,"ɵɵattributeInterpolate7",(function(){return ll})),n.d(e,"ɵɵattributeInterpolate8",(function(){return dl})),n.d(e,"ɵɵattributeInterpolateV",(function(){return cl})),n.d(e,"ɵɵdefineBase",(function(){return zt})),n.d(e,"ɵɵdefineComponent",(function(){return Pt})),n.d(e,"ɵɵdefineDirective",(function(){return Bt})),n.d(e,"ɵɵdefinePipe",(function(){return Yt})),n.d(e,"ɵɵdefineNgModule",(function(){return Ft})),n.d(e,"ɵdetectChanges",(function(){return fl})),n.d(e,"ɵrenderComponent",(function(){return bc})),n.d(e,"ɵRender3ComponentFactory",(function(){return Ig})),n.d(e,"ɵRender3ComponentRef",(function(){return Ng})),n.d(e,"ɵɵdirectiveInject",(function(){return Tl})),n.d(e,"ɵɵinjectAttribute",(function(){return Ol})),n.d(e,"ɵɵinjectPipeChangeDetectorRef",(function(){return Sb})),n.d(e,"ɵɵgetFactoryOf",(function(){return Ra})),n.d(e,"ɵɵgetInheritedFactory",(function(){return Aa})),n.d(e,"ɵɵsetComponentScope",(function(){return Mt})),n.d(e,"ɵɵsetNgModuleScope",(function(){return Gt})),n.d(e,"ɵɵtemplateRefExtractor",(function(){return wb})),n.d(e,"ɵɵProvidersFeature",(function(){return jc})),n.d(e,"ɵɵInheritDefinitionFeature",(function(){return Nc})),n.d(e,"ɵɵNgOnChangesFeature",(function(){return Oc})),n.d(e,"ɵLifecycleHooksFeature",(function(){return xc})),n.d(e,"ɵRender3NgModuleRef",(function(){return Lp})),n.d(e,"ɵmarkDirty",(function(){return hl})),n.d(e,"ɵNgModuleFactory",(function(){return Dp})),n.d(e,"ɵNO_CHANGE",(function(){return ci})),n.d(e,"ɵɵcontainer",(function(){return gl})),n.d(e,"ɵɵnextContext",(function(){return od})),n.d(e,"ɵɵelementStart",(function(){return Bl})),n.d(e,"ɵɵnamespaceHTML",(function(){return gn})),n.d(e,"ɵɵnamespaceMathML",(function(){return hn})),n.d(e,"ɵɵnamespaceSVG",(function(){return fn})),n.d(e,"ɵɵelement",(function(){return Hl})),n.d(e,"ɵɵlistener",(function(){return nd})),n.d(e,"ɵɵtext",(function(){return Od})),n.d(e,"ɵɵtextInterpolate",(function(){return Sd})),n.d(e,"ɵɵtextInterpolate1",(function(){return Id})),n.d(e,"ɵɵtextInterpolate2",(function(){return Nd})),n.d(e,"ɵɵtextInterpolate3",(function(){return Cd})),n.d(e,"ɵɵtextInterpolate4",(function(){return Rd})),n.d(e,"ɵɵtextInterpolate5",(function(){return Ad})),n.d(e,"ɵɵtextInterpolate6",(function(){return kd})),n.d(e,"ɵɵtextInterpolate7",(function(){return Ed})),n.d(e,"ɵɵtextInterpolate8",(function(){return Ld})),n.d(e,"ɵɵtextInterpolateV",(function(){return Dd})),n.d(e,"ɵɵembeddedViewStart",(function(){return Jl})),n.d(e,"ɵɵprojection",(function(){return fd})),n.d(e,"ɵɵpipeBind1",(function(){return Wp})),n.d(e,"ɵɵpipeBind2",(function(){return Kp})),n.d(e,"ɵɵpipeBind3",(function(){return $p})),n.d(e,"ɵɵpipeBind4",(function(){return Zp})),n.d(e,"ɵɵpipeBindV",(function(){return Jp})),n.d(e,"ɵɵpureFunction0",(function(){return Mp})),n.d(e,"ɵɵpureFunction1",(function(){return qp})),n.d(e,"ɵɵpureFunction2",(function(){return jp})),n.d(e,"ɵɵpureFunction3",(function(){return Fp})),n.d(e,"ɵɵpureFunction4",(function(){return Gp})),n.d(e,"ɵɵpureFunction5",(function(){return Vp})),n.d(e,"ɵɵpureFunction6",(function(){return zp})),n.d(e,"ɵɵpureFunction7",(function(){return Bp})),n.d(e,"ɵɵpureFunction8",(function(){return Yp})),n.d(e,"ɵɵpureFunctionV",(function(){return Hp})),n.d(e,"ɵɵgetCurrentView",(function(){return Xl})),n.d(e,"ɵgetDirectives",(function(){return sc})),n.d(e,"ɵgetHostElement",(function(){return uc})),n.d(e,"ɵɵrestoreView",(function(){return Ge})),n.d(e,"ɵɵcontainerRefreshStart",(function(){return bl})),n.d(e,"ɵɵcontainerRefreshEnd",(function(){return ml})),n.d(e,"ɵɵqueryRefresh",(function(){return cb})),n.d(e,"ɵɵviewQuery",(function(){return hb})),n.d(e,"ɵɵstaticViewQuery",(function(){return fb})),n.d(e,"ɵɵstaticContentQuery",(function(){return mb})),n.d(e,"ɵɵloadViewQuery",(function(){return pb})),n.d(e,"ɵɵcontentQuery",(function(){return bb})),n.d(e,"ɵɵloadContentQuery",(function(){return vb})),n.d(e,"ɵɵelementEnd",(function(){return Yl})),n.d(e,"ɵɵhostProperty",(function(){return Xd})),n.d(e,"ɵɵproperty",(function(){return Hu})),n.d(e,"ɵɵpropertyInterpolate",(function(){return hd})),n.d(e,"ɵɵpropertyInterpolate1",(function(){return gd})),n.d(e,"ɵɵpropertyInterpolate2",(function(){return pd})),n.d(e,"ɵɵpropertyInterpolate3",(function(){return bd})),n.d(e,"ɵɵpropertyInterpolate4",(function(){return md})),n.d(e,"ɵɵpropertyInterpolate5",(function(){return yd})),n.d(e,"ɵɵpropertyInterpolate6",(function(){return vd})),n.d(e,"ɵɵpropertyInterpolate7",(function(){return xd})),n.d(e,"ɵɵpropertyInterpolate8",(function(){return _d})),n.d(e,"ɵɵpropertyInterpolateV",(function(){return Td})),n.d(e,"ɵɵupdateSyntheticHostBinding",(function(){return tc})),n.d(e,"ɵɵcomponentHostSyntheticListener",(function(){return ad})),n.d(e,"ɵɵprojectionDef",(function(){return ld})),n.d(e,"ɵɵreference",(function(){return xl})),n.d(e,"ɵɵenableBindings",(function(){return Ce})),n.d(e,"ɵɵdisableBindings",(function(){return Re})),n.d(e,"ɵɵallocHostVars",(function(){return ku})),n.d(e,"ɵɵelementContainerStart",(function(){return Kl})),n.d(e,"ɵɵelementContainerEnd",(function(){return $l})),n.d(e,"ɵɵelementContainer",(function(){return Zl})),n.d(e,"ɵɵstyling",(function(){return wl})),n.d(e,"ɵɵstyleMap",(function(){return Al})),n.d(e,"ɵɵstyleSanitizer",(function(){return Sl})),n.d(e,"ɵɵclassMap",(function(){return kl})),n.d(e,"ɵɵclassMapInterpolate1",(function(){return Pd})),n.d(e,"ɵɵclassMapInterpolate2",(function(){return Md})),n.d(e,"ɵɵclassMapInterpolate3",(function(){return qd})),n.d(e,"ɵɵclassMapInterpolate4",(function(){return jd})),n.d(e,"ɵɵclassMapInterpolate5",(function(){return Fd})),n.d(e,"ɵɵclassMapInterpolate6",(function(){return Gd})),n.d(e,"ɵɵclassMapInterpolate7",(function(){return Vd})),n.d(e,"ɵɵclassMapInterpolate8",(function(){return zd})),n.d(e,"ɵɵclassMapInterpolateV",(function(){return Bd})),n.d(e,"ɵɵstyleProp",(function(){return Il})),n.d(e,"ɵɵstylePropInterpolate1",(function(){return Yd})),n.d(e,"ɵɵstylePropInterpolate2",(function(){return Hd})),n.d(e,"ɵɵstylePropInterpolate3",(function(){return Ud})),n.d(e,"ɵɵstylePropInterpolate4",(function(){return Wd})),n.d(e,"ɵɵstylePropInterpolate5",(function(){return Kd})),n.d(e,"ɵɵstylePropInterpolate6",(function(){return $d})),n.d(e,"ɵɵstylePropInterpolate7",(function(){return Zd})),n.d(e,"ɵɵstylePropInterpolate8",(function(){return Jd})),n.d(e,"ɵɵstylePropInterpolateV",(function(){return Qd})),n.d(e,"ɵɵstylingApply",(function(){return Pl})),n.d(e,"ɵɵclassProp",(function(){return Cl})),n.d(e,"ɵɵelementHostAttrs",(function(){return Ul})),n.d(e,"ɵɵselect",(function(){return Oi})),n.d(e,"ɵɵtextBinding",(function(){return wd})),n.d(e,"ɵɵtemplate",(function(){return pl})),n.d(e,"ɵɵembeddedViewEnd",(function(){return Ql})),n.d(e,"ɵstore",(function(){return vl})),n.d(e,"ɵɵload",(function(){return _l})),n.d(e,"ɵɵpipe",(function(){return Up})),n.d(e,"ɵwhenRendered",(function(){return _c})),n.d(e,"ɵɵi18n",(function(){return dp})),n.d(e,"ɵɵi18nAttributes",(function(){return cp})),n.d(e,"ɵɵi18nExp",(function(){return gp})),n.d(e,"ɵɵi18nStart",(function(){return np})),n.d(e,"ɵɵi18nEnd",(function(){return sp})),n.d(e,"ɵɵi18nApply",(function(){return pp})),n.d(e,"ɵɵi18nPostprocess",(function(){return ip})),n.d(e,"ɵi18nConfigureLocalize",(function(){return Tp})),n.d(e,"ɵɵi18nLocalize",(function(){return wp})),n.d(e,"ɵsetLocaleId",(function(){return Ip})),n.d(e,"ɵsetClassMetadata",(function(){return Pp})),n.d(e,"ɵɵresolveWindow",(function(){return Tn})),n.d(e,"ɵɵresolveDocument",(function(){return On})),n.d(e,"ɵɵresolveBody",(function(){return wn})),n.d(e,"ɵcompileComponent",(function(){return zb})),n.d(e,"ɵcompileDirective",(function(){return Bb})),n.d(e,"ɵcompileNgModule",(function(){return Eb})),n.d(e,"ɵcompileNgModuleDefs",(function(){return Lb})),n.d(e,"ɵpatchComponentDefWithScope",(function(){return jb})),n.d(e,"ɵresetCompiledComponents",(function(){return Mb})),n.d(e,"ɵflushModuleScopingQueueAsMuchAsPossible",(function(){return Ab})),n.d(e,"ɵtransitiveScopesFor",(function(){return Fb})),n.d(e,"ɵcompilePipe",(function(){return tm})),n.d(e,"ɵɵsanitizeHtml",(function(){return Or})),n.d(e,"ɵɵsanitizeStyle",(function(){return wr})),n.d(e,"ɵɵdefaultStyleSanitizer",(function(){return Ar})),n.d(e,"ɵɵsanitizeScript",(function(){return Nr})),n.d(e,"ɵɵsanitizeUrl",(function(){return Sr})),n.d(e,"ɵɵsanitizeResourceUrl",(function(){return Ir})),n.d(e,"ɵɵsanitizeUrlOrResourceUrl",(function(){return Rr})),n.d(e,"ɵbypassSanitizationTrustHtml",(function(){return Fa})),n.d(e,"ɵbypassSanitizationTrustStyle",(function(){return Ga})),n.d(e,"ɵbypassSanitizationTrustScript",(function(){return Va})),n.d(e,"ɵbypassSanitizationTrustUrl",(function(){return za})),n.d(e,"ɵbypassSanitizationTrustResourceUrl",(function(){return Ba})),n.d(e,"ɵgetLContext",(function(){return Dr})),n.d(e,"ɵNG_ELEMENT_ID",(function(){return Lt})),n.d(e,"ɵNG_COMPONENT_DEF",(function(){return Nt})),n.d(e,"ɵNG_DIRECTIVE_DEF",(function(){return Ct})),n.d(e,"ɵNG_PIPE_DEF",(function(){return Rt})),n.d(e,"ɵNG_MODULE_DEF",(function(){return At})),n.d(e,"ɵNG_BASE_DEF",(function(){return Et})),n.d(e,"ɵNG_INJECTABLE_DEF",(function(){return M})),n.d(e,"ɵNG_INJECTOR_DEF",(function(){return q})),n.d(e,"ɵcompileNgModuleFactory__POST_R3__",(function(){return _y})),n.d(e,"ɵisBoundToModule__POST_R3__",(function(){return Ty})),n.d(e,"ɵSWITCH_COMPILE_COMPONENT__POST_R3__",(function(){return um})),n.d(e,"ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__",(function(){return lm})),n.d(e,"ɵSWITCH_COMPILE_PIPE__POST_R3__",(function(){return dm})),n.d(e,"ɵSWITCH_COMPILE_NGMODULE__POST_R3__",(function(){return pm})),n.d(e,"ɵgetDebugNode__POST_R3__",(function(){return av})),n.d(e,"ɵSWITCH_COMPILE_INJECTABLE__POST_R3__",(function(){return Io})),n.d(e,"ɵSWITCH_IVY_ENABLED__POST_R3__",(function(){return Em})),n.d(e,"ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__",(function(){return to})),n.d(e,"ɵCompiler_compileModuleSync__POST_R3__",(function(){return Mm})),n.d(e,"ɵCompiler_compileModuleAsync__POST_R3__",(function(){return jm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__",(function(){return Gm})),n.d(e,"ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__",(function(){return zm})),n.d(e,"ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__",(function(){return $c})),n.d(e,"ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__",(function(){return Sf})),n.d(e,"ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__",(function(){return Cf})),n.d(e,"ɵSWITCH_RENDERER2_FACTORY__POST_R3__",(function(){return rf})),n.d(e,"ɵgetModuleFactory__POST_R3__",(function(){return My})),n.d(e,"ɵregisterNgModuleType",(function(){return Ap})),n.d(e,"ɵpublishGlobalUtil",(function(){return pc})),n.d(e,"ɵpublishDefaultGlobalUtils",(function(){return gc})),n.d(e,"ɵcreateInjector",(function(){return Do})),n.d(e,"ɵINJECTOR_IMPL__POST_R3__",(function(){return Vo})),n.d(e,"ɵregisterModuleFactory",(function(){return Cp})),n.d(e,"ɵEMPTY_ARRAY",(function(){return Th})),n.d(e,"ɵEMPTY_MAP",(function(){return Oh})),n.d(e,"ɵand",(function(){return pv})),n.d(e,"ɵccf",(function(){return Mh})),n.d(e,"ɵcmf",(function(){return Yx})),n.d(e,"ɵcrt",(function(){return Uf})),n.d(e,"ɵdid",(function(){return og})),n.d(e,"ɵeld",(function(){return bv})),n.d(e,"ɵgetComponentViewDefinitionFactory",(function(){return qh})),n.d(e,"ɵinlineInterpolate",(function(){return xh})),n.d(e,"ɵinterpolate",(function(){return vh})),n.d(e,"ɵmod",(function(){return Rh})),n.d(e,"ɵmpd",(function(){return Ch})),n.d(e,"ɵncd",(function(){return Iv})),n.d(e,"ɵnov",(function(){return Kh})),n.d(e,"ɵpid",(function(){return ug})),n.d(e,"ɵprd",(function(){return lg})),n.d(e,"ɵpad",(function(){return Rv})),n.d(e,"ɵpod",(function(){return Av})),n.d(e,"ɵppd",(function(){return Cv})),n.d(e,"ɵqud",(function(){return _v})),n.d(e,"ɵted",(function(){return Ev})),n.d(e,"ɵunv",(function(){return Hf})),n.d(e,"ɵvid",(function(){return Pv}));const p="__annotations__",b="__parameters__",m="__prop__metadata__";function y(t,e,n,a,r){const i=v(e);function s(...t){if(this instanceof s)return i.call(this,...t),this;const e=new s(...t);return function(n){return r&&r(n,...t),(n.hasOwnProperty(p)?n[p]:Object.defineProperty(n,p,{value:[]})[p]).push(e),a&&a(n),n}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s}function v(t){return function(...e){if(t){const n=t(...e);for(const t in n)this[t]=n[t]}}}function x(t,e,n){const a=v(e);function r(...t){if(this instanceof r)return a.apply(this,t),this;const e=new r(...t);return n.annotation=e,n;function n(t,n,a){const r=t.hasOwnProperty(b)?t[b]:Object.defineProperty(t,b,{value:[]})[b];for(;r.length<=a;)r.push(null);return(r[a]=r[a]||[]).push(e),t}}return n&&(r.prototype=Object.create(n.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r}function _(t,e,n,a){const r=v(e);function i(...t){if(this instanceof i)return r.apply(this,t),this;const e=new i(...t);return function(n,r){const i=n.constructor,s=i.hasOwnProperty(m)?i[m]:Object.defineProperty(i,m,{value:{}})[m];s[r]=s.hasOwnProperty(r)&&s[r]||[],s[r].unshift(e),a&&a(n,r,...t)}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i}const T=x("Inject",t=>({token:t})),O=x("Optional"),w=x("Self"),S=x("SkipSelf"),I=x("Host"),N=x("Attribute",t=>({attributeName:t}));var C=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}({});function R(t){for(let e in t)if(t[e]===R)return e;throw Error("Could not find renamed property on target object.")}function A(t,e){for(const n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}function k(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}const E=k;function L(t){return{factory:t.factory,providers:t.providers||[],imports:t.imports||[]}}function D(t){const e=t[M];return e&&e.token===t?e:null}function P(t){return t&&t.hasOwnProperty(q)?t[q]:null}const M=R({ngInjectableDef:R}),q=R({ngInjectorDef:R});function j(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map(j).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;const e=t.toString();if(null==e)return""+e;const n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}const F=R({__forward_ref__:R});function G(t){return t.__forward_ref__=G,t.toString=function(){return j(this())},t}function V(t){const e=t;return"function"==typeof e&&e.hasOwnProperty(F)&&e.__forward_ref__===G?e():t}const z="undefined"!=typeof globalThis&&globalThis,B="undefined"!=typeof window&&window,Y="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,H="undefined"!=typeof global&&global,U=z||H||B||Y;function W(){const t=U.ng;if(!t||!t.ɵcompilerFacade)throw new Error("Angular JIT compilation failed: '@angular/compiler' not loaded!\n  - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.\n  - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?\n  - Alternatively provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.");return t.ɵcompilerFacade}class K{constructor(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.ngInjectableDef=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.ngInjectableDef=k({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}toString(){return`InjectionToken ${this._desc}`}}const $=new K("INJECTOR",-1),Z=new Object,J=/\n/gm,Q=R({provide:String,useValue:R});let X,tt=void 0;function et(t){const e=tt;return tt=t,e}function nt(t){const e=X;return X=t,e}function at(t,e=C.Default){if(void 0===tt)throw new Error("inject() must be called from an injection context");return null===tt?st(t,void 0,e):tt.get(t,e&C.Optional?null:void 0,e)}function rt(t,e=C.Default){return(X||at)(t,e)}const it=rt;function st(t,e,n){const a=D(t);if(a&&"root"==a.providedIn)return void 0===a.value?a.value=a.factory():a.value;if(n&C.Optional)return null;if(void 0!==e)return e;throw new Error(`Injector: NOT_FOUND [${j(t)}]`)}function ot(t){const e=[];for(let n=0;n<t.length;n++){const a=V(t[n]);if(Array.isArray(a)){if(0===a.length)throw new Error("Arguments array must have arguments.");let t=void 0,n=C.Default;for(let e=0;e<a.length;e++){const r=a[e];r instanceof O||"Optional"===r.ngMetadataName||r===O?n|=C.Optional:r instanceof S||"SkipSelf"===r.ngMetadataName||r===S?n|=C.SkipSelf:r instanceof w||"Self"===r.ngMetadataName||r===w?n|=C.Self:t=r instanceof T||r===T?r.token:r}e.push(rt(t,n))}else e.push(rt(a))}return e}class ut{get(t,e=Z){if(e===Z){const e=new Error(`NullInjectorError: No provider for ${j(t)}!`);throw e.name="NullInjectorError",e}return e}}function lt(t,e,n,a){const r=t.ngTempTokenPath;throw e.__source&&r.unshift(e.__source),t.message=dt("\n"+t.message,r,n,a),t.ngTokenPath=r,t.ngTempTokenPath=null,t}function dt(t,e,n,a=null){t=t&&"\n"===t.charAt(0)&&"ɵ"==t.charAt(1)?t.substr(2):t;let r=j(e);if(e instanceof Array)r=e.map(j).join(" -> ");else if("object"==typeof e){let t=[];for(let n in e)if(e.hasOwnProperty(n)){let a=e[n];t.push(n+":"+("string"==typeof a?JSON.stringify(a):j(a)))}r=`{${t.join(", ")}}`}return`${n}${a?"("+a+")":""}[${r}]: ${t.replace(J,"\n  ")}`}const ct={"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵinject":rt,"ɵɵgetFactoryOf":function(t){const e=t,n=D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}};class ft{}class ht{}function gt(t,e){for(let n=0;n<t.length;n++)e.push(t[n])}function pt(t,e){void 0===e&&(e=t);for(let n=0;n<t.length;n++){let a=t[n];Array.isArray(a)?(e===t&&(e=t.slice(0,n)),pt(a,e)):e!==t&&e.push(a)}return e}function bt(t,e){t.forEach(t=>Array.isArray(t)?bt(t,e):e(t))}function mt(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function yt(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function vt(t){throw new Error(`ASSERTION ERROR: ${t}`)}const xt=function(){var t={OnPush:0,Default:1};return t[t.OnPush]="OnPush",t[t.Default]="Default",t}(),_t=function(){var t={CheckOnce:0,Checked:1,CheckAlways:2,Detached:3,Errored:4,Destroyed:5};return t[t.CheckOnce]="CheckOnce",t[t.Checked]="Checked",t[t.CheckAlways]="CheckAlways",t[t.Detached]="Detached",t[t.Errored]="Errored",t[t.Destroyed]="Destroyed",t}();function Tt(t){return null==t||t===xt.Default}const Ot=function(){var t={Emulated:0,Native:1,None:2,ShadowDom:3};return t[t.Emulated]="Emulated",t[t.Native]="Native",t[t.None]="None",t[t.ShadowDom]="ShadowDom",t}();function wt(t){return""+{toString:t}}const St={},It=[],Nt=R({ngComponentDef:R}),Ct=R({ngDirectiveDef:R}),Rt=R({ngPipeDef:R}),At=R({ngModuleDef:R}),kt=R({ngLocaleIdDef:R}),Et=R({ngBaseDef:R}),Lt=R({__NG_ELEMENT_ID__:R});let Dt=0;function Pt(t){const e=t.type,n=e.prototype,a={},r={type:e,providersResolver:null,consts:t.consts,vars:t.vars,factory:t.factory,template:t.template||null,ngContentSelectors:t.ngContentSelectors,hostBindings:t.hostBindings||null,contentQueries:t.contentQueries||null,declaredInputs:a,inputs:null,outputs:null,exportAs:t.exportAs||null,onChanges:null,onInit:n.ngOnInit||null,doCheck:n.ngDoCheck||null,afterContentInit:n.ngAfterContentInit||null,afterContentChecked:n.ngAfterContentChecked||null,afterViewInit:n.ngAfterViewInit||null,afterViewChecked:n.ngAfterViewChecked||null,onDestroy:n.ngOnDestroy||null,onPush:t.changeDetection===xt.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||Ot.Emulated,id:"c",styles:t.styles||It,_:null,setInput:null,schemas:t.schemas||null,tView:null};return r._=wt(()=>{const n=t.directives,i=t.features,s=t.pipes;r.id+=Dt++,r.inputs=Vt(t.inputs,a),r.outputs=Vt(t.outputs),i&&i.forEach(t=>t(r)),r.directiveDefs=n?()=>("function"==typeof n?n():n).map(qt):null,r.pipeDefs=s?()=>("function"==typeof s?s():s).map(jt):null,e.hasOwnProperty(M)||(e[M]=k({token:e,factory:t.factory}))}),r}function Mt(t,e,n){const a=t.ngComponentDef;a.directiveDefs=()=>e.map(qt),a.pipeDefs=()=>n.map(jt)}function qt(t){return Ht(t)||Ut(t)}function jt(t){return Wt(t)}function Ft(t){return{type:t.type,bootstrap:t.bootstrap||It,declarations:t.declarations||It,imports:t.imports||It,exports:t.exports||It,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}}function Gt(t,e){return wt(()=>{const n=$t(t,!0);n.declarations=e.declarations||It,n.imports=e.imports||It,n.exports=e.exports||It})}function Vt(t,e){if(null==t)return St;const n={};for(const a in t)if(t.hasOwnProperty(a)){let r=t[a],i=r;Array.isArray(r)&&(i=r[1],r=r[0]),n[r]=a,e&&(e[r]=i)}return n}function zt(t){const e={};return{inputs:Vt(t.inputs,e),declaredInputs:e,outputs:Vt(t.outputs),viewQuery:t.viewQuery||null,contentQueries:t.contentQueries||null,hostBindings:t.hostBindings||null}}const Bt=Pt;function Yt(t){return{name:t.name,factory:t.factory,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function Ht(t){return t[Nt]||null}function Ut(t){return t[Ct]||null}function Wt(t){return t[Rt]||null}function Kt(t){return t[Et]||null}function $t(t,e){const n=t[At]||null;if(!n&&!0===e)throw new Error(`Type ${j(t)} does not have 'ngModuleDef' property.`);return n}function Zt(t){return Array.isArray(t)&&"object"==typeof t[1]}function Jt(t){return Array.isArray(t)&&!0===t[1]}function Qt(t){return 0!=(4&t.flags)}function Xt(t){return 1==(1&t.flags)}function te(t){return null!==t.template}function ee(t){return 0!=(512&t[2])}class ne{constructor(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}function ae(t,e,n,a,r,i){const{onChanges:s,onInit:o,doCheck:u}=e;r>=0&&(!n.preOrderHooks||r===n.preOrderHooks.length)&&(s||o||u)&&(n.preOrderHooks||(n.preOrderHooks=[])).push(a),i>=0&&(!n.preOrderCheckHooks||i===n.preOrderCheckHooks.length)&&(s||u)&&(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(a),s&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,s),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,s)),o&&(n.preOrderHooks||(n.preOrderHooks=[])).push(-t,o),u&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,u),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,u))}function re(t,e){if(t.firstTemplatePass)for(let n=e.directiveStart,a=e.directiveEnd;n<a;n++){const e=t.data[n];e.afterContentInit&&(t.contentHooks||(t.contentHooks=[])).push(-n,e.afterContentInit),e.afterContentChecked&&((t.contentHooks||(t.contentHooks=[])).push(n,e.afterContentChecked),(t.contentCheckHooks||(t.contentCheckHooks=[])).push(n,e.afterContentChecked)),e.afterViewInit&&(t.viewHooks||(t.viewHooks=[])).push(-n,e.afterViewInit),e.afterViewChecked&&((t.viewHooks||(t.viewHooks=[])).push(n,e.afterViewChecked),(t.viewCheckHooks||(t.viewCheckHooks=[])).push(n,e.afterViewChecked)),null!=e.onDestroy&&(t.destroyHooks||(t.destroyHooks=[])).push(n,e.onDestroy)}}function ie(t,e,n,a){n||se(t,e.preOrderHooks,e.preOrderCheckHooks,n,0,void 0!==a?a:null)}function se(t,e,n,a,r,i){if(a)return;const s=(3&t[2])===r?e:n;s&&function(t,e,n,a){const r=null!=a?a:-1;let i=0;for(let s=void 0!==a?65535&t[18]:0;s<e.length;s++)if("number"==typeof e[s+1]){if(i=e[s],null!=a&&i>=a)break}else e[s]<0&&(t[18]+=65536),(i<r||-1==r)&&(oe(t,n,e,s),t[18]=(4294901760&t[18])+s+2),s++}(t,s,r,i),null==i&&(3&t[2])===r&&3!==r&&(t[2]&=1023,t[2]+=1)}function oe(t,e,n,a){const r=n[a]<0,i=n[a+1],s=t[r?-n[a]:n[a]];r?t[2]>>10<t[18]>>16&&(3&t[2])===e&&(t[2]+=1024,i.call(s)):i.call(s)}let ue=null;const le=new Map;let de,ce=null;function fe(t,e){return ce&&t===ce||(ce=t,e&&(ue=le.get(t)||null),ue=ue||{classesBitMask:0,classesIndex:1,stylesBitMask:0,stylesIndex:1}),ue}function he(){ue=null,ce=null}function ge(t){for(;Array.isArray(t);)t=t[0];return t}function pe(t,e){return ge(e[t+19])}function be(t,e){return ge(e[t.index])}function me(t,e){const n=t.index;return-1==n?null:ge(e[n])}function ye(t,e){return e[1].data[t+19]}function ve(t,e){return t[e+19]}function xe(t,e){const n=e[t];return Zt(n)?n:n[0]}function _e(t){return t.__ngContext__}function Te(t){const e=_e(t);return e?Array.isArray(e)?e:e.lView:null}function Oe(t){t[18]=0}let we,Se=null;function Ie(t){Se=t}function Ne(){return we}function Ce(){we=!0}function Re(){we=!1}function Ae(){return Le}let ke,Ee,Le,De=1,Pe=0,Me=0;function qe(t=null){on!==t&&(ln(null==t?-1:t),De=null==t?0:1,Pe=0,Me=0)}function je(){De+=1+Me,Pe=0,Me=0}function Fe(t){Pe+=t,Me=Math.max(Me,Pe)}function Ge(t){We=t}function Ve(){return ke}function ze(t,e){ke=t,Ee=e}function Be(t,e){ke=t,Le=e}function Ye(){return Ee}function He(){Ee=!1}function Ue(t=Le){return 4==(4&t[2])}let We=null,Ke=!1;function $e(){return Ke}function Ze(t){Ke=t}let Je=-1;function Qe(){return Je}function Xe(t){Je=t}let tn=0;function en(){return tn}function nn(t){tn=t}function an(t,e){const n=Le;return t&&(Je=t[1].bindingStartIndex),ke=e,Ee=!0,Le=We=t,n}function rn(t=1){return We=function(t,e){for(;t>0;)e=e[16],t--;return e}(t,We),We[9]}function sn(t,e){const n=Le[1];if(Ue(Le))Le[2]&=-5;else try{Oe(Le),e&&se(Le,n.viewHooks,n.viewCheckHooks,Ke,2,void 0)}finally{Le[2]&=-73,Le[7]=n.bindingStartIndex}an(t,null)}let on=-1;function un(){return on}function ln(t){on=t,he()}let dn,cn=null;function fn(){cn="http://www.w3.org/2000/svg"}function hn(){cn="http://www.w3.org/1998/MathML/"}function gn(){pn()}function pn(){cn=null}function bn(t){dn=t}function mn(){return dn}function yn(t,e){return!(t!=t&&e!=e)&&t!==e}function vn(t){return"string"==typeof t?t:null==t?"":""+t}function xn(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():vn(t)}const _n=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(U))();function Tn(t){return{name:"window",target:t.ownerDocument.defaultView}}function On(t){return{name:"document",target:t.ownerDocument}}function wn(t){return{name:"body",target:t.ownerDocument.body}}function Sn(t){return t.indexOf("�")>=0}function In(t){return t instanceof Function?t():t}function Nn(t,e){0===e?t[2]>0&&function(t){Rn(t,2|Cn(t))}(t):t[2]=e}function Cn(t){return t[1]}function Rn(t,e){t[1]=e}function An(t,e){return t[e+2]}function kn(t,e){return 1&t[e+0]}function En(t,e){return(1&kn(t,e))>0}function Ln(t,e){return t[e+0]>>1}function Dn(t,e,n){const a=kn(t,e);t[e+0]=a|n<<1}function Pn(t,e){return t[e+1]}function Mn(t,e,n){return t[e+3+n]}function qn(t,e){return!(!t||e!==t[2])}function jn(t){return(1&Cn(t))>0}function Fn(t){return(2&Cn(t))>0}function Gn(t){return 6+t[4]}function Vn(t,e){let n=Array.isArray(t)?t[0]:t,a=Array.isArray(e)?e[0]:e;return n instanceof String&&(n=n.toString()),a instanceof String&&(a=a.toString()),yn(n,a)}function zn(t){return null!=t&&""!==t}function Bn(t,e,n=" "){return t+(e.length&&t.length?n:"")+e}function Yn(t){return t.replace(/[a-z][A-Z]/g,t=>t.charAt(0)+"-"+t.charAt(1)).toLowerCase()}function Hn(t){return Un(t)?t[0]:t}function Un(t){return Array.isArray(t)&&t.length>=6&&"string"!=typeof t[1]}function Wn(t){const e=Hn(t);return e&&e[0]||""}function Kn(t){return 0!=(8&t.flags)}function $n(t){return 0!=(16&t.flags)}function Zn(t,e){return t[e+0]}function Jn(t,e,n){t[e+1]=n}function Qn(t,e){return t[e+1]}const Xn=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();function ta(t){return!!t.listen}const ea={createRenderer:(t,e)=>document};function na(t,e){const n=Ae()[12],a=ta(n);let r=0;for(;r<e.length;){const i=e[r];if("number"==typeof i){if(0!==i)break;r++;const s=e[r++],o=e[r++],u=e[r++];a?n.setAttribute(t,o,u,s):t.setAttributeNS(s,o,u)}else{const s=i,o=e[++r];ra(s)?a&&n.setProperty(t,s,o):a?n.setAttribute(t,s,o):t.setAttribute(s,o),r++}}return r}function aa(t){return 3===t||4===t||6===t}function ra(t){return"@"===t[0]}function ia(t){return-1!==t}function sa(t){return 32767&t}function oa(t){return t>>16}function ua(t,e){let n=oa(t),a=e;for(;n>0;)a=a[16],n--;return a}function la(t){const e=t[3];return Jt(e)?e[3]:e}function da(t){let e=t[6];for(;null!==e&&2===e.type;)e=(t=t[16])[6];return t}function ca(t){return function(t){let e=Zt(t)?t:Te(t);for(;e&&!(512&e[2]);)e=la(e);return e}(t)[9]}let fa=!0;function ha(t){const e=fa;return fa=t,e}let ga=0;function pa(t,e){const n=ma(t,e);if(-1!==n)return n;const a=e[1];a.firstTemplatePass&&(t.injectorIndex=e.length,ba(a.data,t),ba(e,null),ba(a.blueprint,null));const r=ya(t,e),i=sa(r),s=ua(r,e),o=t.injectorIndex;if(ia(r)){const t=s[1].data;for(let n=0;n<8;n++)e[o+n]=s[i+n]|t[i+n]}return e[o+8]=r,o}function ba(t,e){t.push(0,0,0,0,0,0,0,0,e)}function ma(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+8]?-1:t.injectorIndex}function ya(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let n=e[6],a=1;for(;n&&-1===n.injectorIndex;)n=(e=e[16])?e[6]:null,a++;return n?n.injectorIndex|a<<16:-1}function va(t,e,n){!function(t,e,n){let a="string"!=typeof n?n[Lt]:n.charCodeAt(0)||0;null==a&&(a=n[Lt]=ga++);const r=255&a,i=1<<r,s=64&r,o=32&r,u=e.data;128&r?s?o?u[t+7]|=i:u[t+6]|=i:o?u[t+5]|=i:u[t+4]|=i:s?o?u[t+3]|=i:u[t+2]|=i:o?u[t+1]|=i:u[t]|=i}(t,e,n)}function xa(t,e){if("class"===e)return Wn(t.classes);if("style"===e)return Wn(t.styles);const n=t.attrs;if(n){const t=n.length;let a=0;for(;a<t;){const r=n[a];if(aa(r))break;if(0===r)a+=2;else if("number"==typeof r)for(a++;a<t&&"string"==typeof n[a];)a++;else{if(r===e)return n[a+1];a+=2}}}return null}function _a(t,e,n,a=C.Default,r){if(t){const r=function(t){if("string"==typeof t)return t.charCodeAt(0)||0;const e=t[Lt];return"number"==typeof e&&e>0?255&e:e}(n);if("function"==typeof r){const i=Ve(),s=Ae();Be(t,e);try{const t=r();if(null!=t||a&C.Optional)return t;throw new Error(`No provider for ${xn(n)}!`)}finally{Be(i,s)}}else if("number"==typeof r){if(-1===r)return new Ca(t,e);let i=null,s=ma(t,e),o=-1,u=a&C.Host?da(e)[6]:null;for((-1===s||a&C.SkipSelf)&&(o=-1===s?ya(t,e):e[s+8],Na(a,!1)?(i=e[1],s=sa(o),e=ua(o,e)):s=-1);-1!==s;){o=e[s+8];const t=e[1];if(Ia(r,s,t.data)){const t=Oa(s,e,n,i,a,u);if(t!==Ta)return t}Na(a,e[1].data[s+8]===u)&&Ia(r,s,e)?(i=t,s=sa(o),e=ua(o,e)):s=-1}}}if(a&C.Optional&&void 0===r&&(r=null),0==(a&(C.Self|C.Host))){const t=e[10],i=nt(void 0);try{return t?t.get(n,r,a&C.Optional):st(n,r,a&C.Optional)}finally{nt(i)}}if(a&C.Optional)return r;throw new Error(`NodeInjector: NOT_FOUND [${xn(n)}]`)}const Ta={};function Oa(t,e,n,a,r,i){const s=e[1],o=s.data[t+8],u=wa(o,s,n,null==a?Xt(o)&&fa:a!=s&&3===o.type,r&C.Host&&i===o);return null!==u?Sa(s.data,e,u,o):Ta}function wa(t,e,n,a,r){const i=t.providerIndexes,s=e.data,o=65535&i,u=t.directiveStart,l=i>>16,d=r?o+l:t.directiveEnd;for(let c=a?o:o+l;c<d;c++){const t=s[c];if(c<u&&n===t||c>=u&&t.type===n)return c}if(r){const t=s[u];if(t&&te(t)&&t.type===n)return u}return null}function Sa(t,e,n,a){let r=e[n];if(null!==(i=r)&&"object"==typeof i&&Object.getPrototypeOf(i)==ne.prototype){const i=r;if(i.resolving)throw new Error(`Circular dep for ${xn(t[n])}`);const s=ha(i.canSeeViewProviders);let o;i.resolving=!0,i.injectImpl&&(o=nt(i.injectImpl));const u=Ve(),l=Ae();Be(a,e);try{r=e[n]=i.factory(void 0,t,e,a)}finally{i.injectImpl&&nt(o),ha(s),i.resolving=!1,Be(u,l)}}var i;return r}function Ia(t,e,n){const a=64&t,r=32&t;let i;return i=128&t?a?r?n[e+7]:n[e+6]:r?n[e+5]:n[e+4]:a?r?n[e+3]:n[e+2]:r?n[e+1]:n[e],!!(i&1<<t)}function Na(t,e){return!(t&C.Self||t&C.Host&&e)}class Ca{constructor(t,e){this._tNode=t,this._lView=e}get(t,e){return _a(this._tNode,this._lView,t,void 0,e)}}function Ra(t){const e=t,n=Ht(e)||Ut(e)||Wt(e)||D(e)||P(e);return n&&void 0!==n.factory?n.factory:null}function Aa(t){const e=Ra(Object.getPrototypeOf(t.prototype).constructor);return null!==e?e:t=>new t}function ka(t){return t.ngDebugContext}function Ea(t){return t.ngOriginalError}function La(t,...e){t.error(...e)}class Da{constructor(){this._console=console}handleError(t){const e=this._findOriginalError(t),n=this._findContext(t),a=function(t){return t.ngErrorLogger||La}(t);a(this._console,"ERROR",t),e&&a(this._console,"ORIGINAL ERROR",e),n&&a(this._console,"ERROR CONTEXT",n)}_findContext(t){return t?ka(t)?ka(t):this._findContext(Ea(t)):null}_findOriginalError(t){let e=Ea(t);for(;e&&Ea(e);)e=Ea(e);return e}}const Pa={name:"custom-elements"},Ma={name:"no-errors-schema"},qa="__SANITIZER_TRUSTED_BRAND__";function ja(t,e){return t instanceof String&&t[qa]===e}function Fa(t){return Ya(t,"Html")}function Ga(t){return Ya(t,"Style")}function Va(t){return Ya(t,"Script")}function za(t){return Ya(t,"Url")}function Ba(t){return Ya(t,"ResourceUrl")}function Ya(t,e){const n=new String(t);return n[qa]=e,n}let Ha=!0,Ua=!1;function Wa(){return Ua=!0,Ha}function Ka(){if(Ua)throw new Error("Cannot enable prod mode after platform setup.");Ha=!1}class $a{constructor(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),this.inertBodyElement=this.inertDocument.body,null==this.inertBodyElement){const t=this.inertDocument.createElement("html");this.inertDocument.appendChild(t),this.inertBodyElement=this.inertDocument.createElement("body"),t.appendChild(this.inertBodyElement)}this.inertBodyElement.innerHTML='<svg><g onload="this.parentNode.remove()"></g></svg>',!this.inertBodyElement.querySelector||this.inertBodyElement.querySelector("svg")?(this.inertBodyElement.innerHTML='<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',this.getInertBodyElement=this.inertBodyElement.querySelector&&this.inertBodyElement.querySelector("svg img")&&function(){try{return!!window.DOMParser}catch(t){return!1}}()?this.getInertBodyElement_DOMParser:this.getInertBodyElement_InertDocument):this.getInertBodyElement=this.getInertBodyElement_XHR}getInertBodyElement_XHR(t){t="<body><remove></remove>"+t+"</body>";try{t=encodeURI(t)}catch(a){return null}const e=new XMLHttpRequest;e.responseType="document",e.open("GET","data:text/html;charset=utf-8,"+t,!1),e.send(void 0);const n=e.response.body;return n.removeChild(n.firstChild),n}getInertBodyElement_DOMParser(t){t="<body><remove></remove>"+t+"</body>";try{const e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(e){return null}}getInertBodyElement_InertDocument(t){const e=this.inertDocument.createElement("template");return"content"in e?(e.innerHTML=t,e):(this.inertBodyElement.innerHTML=t,this.defaultDoc.documentMode&&this.stripCustomNsAttrs(this.inertBodyElement),this.inertBodyElement)}stripCustomNsAttrs(t){const e=t.attributes;for(let a=e.length-1;0<a;a--){const n=e.item(a).name;"xmlns:ns1"!==n&&0!==n.indexOf("ns1:")||t.removeAttribute(n)}let n=t.firstChild;for(;n;)n.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(n),n=n.nextSibling}}const Za=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Ja=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;function Qa(t){return(t=String(t)).match(Za)||t.match(Ja)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe URL value ${t} (see http://g.co/ng/security#xss)`),"unsafe:"+t)}function Xa(t){return(t=String(t)).split(",").map(t=>Qa(t.trim())).join(", ")}function tr(t){const e={};for(const n of t.split(","))e[n]=!0;return e}function er(...t){const e={};for(const n of t)for(const t in n)n.hasOwnProperty(t)&&(e[t]=!0);return e}const nr=tr("area,br,col,hr,img,wbr"),ar=tr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),rr=tr("rp,rt"),ir=er(rr,ar),sr=er(nr,er(ar,tr("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")),er(rr,tr("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")),ir),or=tr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),ur=tr("srcset"),lr=er(or,ur,tr("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,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),tr("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")),dr=tr("script,style,template");class cr{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(t){let e=t.firstChild,n=!0;for(;e;)if(e.nodeType===Node.ELEMENT_NODE?n=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,n&&e.firstChild)e=e.firstChild;else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let t=this.checkClobberedElement(e,e.nextSibling);if(t){e=t;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")}startElement(t){const e=t.nodeName.toLowerCase();if(!sr.hasOwnProperty(e))return this.sanitizedSomething=!0,!dr.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a),e=t.name,r=e.toLowerCase();if(!lr.hasOwnProperty(r)){this.sanitizedSomething=!0;continue}let i=t.value;or[r]&&(i=Qa(i)),ur[r]&&(i=Xa(i)),this.buf.push(" ",e,'="',gr(i),'"')}return this.buf.push(">"),!0}endElement(t){const e=t.nodeName.toLowerCase();sr.hasOwnProperty(e)&&!nr.hasOwnProperty(e)&&(this.buf.push("</"),this.buf.push(e),this.buf.push(">"))}chars(t){this.buf.push(gr(t))}checkClobberedElement(t,e){if(e&&(t.compareDocumentPosition(e)&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 e}}const fr=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,hr=/([^\#-~ |!])/g;function gr(t){return t.replace(/&/g,"&amp;").replace(fr,(function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"})).replace(hr,(function(t){return"&#"+t.charCodeAt(0)+";"})).replace(/</g,"&lt;").replace(/>/g,"&gt;")}let pr;function br(t,e){let n=null;try{pr=pr||new $a(t);let a=e?String(e):"";n=pr.getInertBodyElement(a);let r=5,i=a;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,a=i,i=n.innerHTML,n=pr.getInertBodyElement(a)}while(a!==i);const s=new cr,o=s.sanitizeChildren(mr(n)||n);return Wa()&&s.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),o}finally{if(n){const t=mr(n)||n;for(;t.firstChild;)t.removeChild(t.firstChild)}}}function mr(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}const yr=function(){var t={NONE:0,HTML:1,STYLE:2,SCRIPT:3,URL:4,RESOURCE_URL:5};return t[t.NONE]="NONE",t[t.HTML]="HTML",t[t.STYLE]="STYLE",t[t.SCRIPT]="SCRIPT",t[t.URL]="URL",t[t.RESOURCE_URL]="RESOURCE_URL",t}();class vr{}const xr=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|Z|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),_r=/^url\(([^)]+)\)$/;function Tr(t){if(!(t=String(t).trim()))return"";const e=t.match(_r);return e&&Qa(e[1])===e[1]||t.match(xr)&&function(t){let e=!0,n=!0;for(let a=0;a<t.length;a++){const r=t.charAt(a);"'"===r&&n?e=!e:'"'===r&&e&&(n=!n)}return e&&n}(t)?t:(Wa()&&console.warn(`WARNING: sanitizing unsafe style value ${t} (see http://g.co/ng/security#xss).`),"unsafe")}function Or(t){const e=kr();return e?e.sanitize(yr.HTML,t)||"":ja(t,"Html")?t.toString():br(document,vn(t))}function wr(t){const e=kr();return e?e.sanitize(yr.STYLE,t)||"":ja(t,"Style")?t.toString():Tr(vn(t))}function Sr(t){const e=kr();return e?e.sanitize(yr.URL,t)||"":ja(t,"Url")?t.toString():Qa(vn(t))}function Ir(t){const e=kr();if(e)return e.sanitize(yr.RESOURCE_URL,t)||"";if(ja(t,"ResourceUrl"))return t.toString();throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)")}function Nr(t){const e=kr();if(e)return e.sanitize(yr.SCRIPT,t)||"";if(ja(t,"Script"))return t.toString();throw new Error("unsafe value used in a script context")}function Cr(t,e){return"src"===e&&("embed"===t||"frame"===t||"iframe"===t||"media"===t||"script"===t)||"href"===e&&("base"===t||"link"===t)?Ir:Sr}function Rr(t,e,n){return Cr(e,n)(t)}const Ar=function(t,e,n){let a=!0;return 1&(n=n||3)&&(a="background-image"===t||"background"===t||"border-image"===t||"filter"===t||"list-style"===t||"list-style-image"===t||"clip-path"===t),2&n?a?wr(e):e:a};function kr(){const t=Ae();return t&&t[13]}const Er=/([A-Z])/g;function Lr(t){try{return null!=t?t.toString().slice(0,30):t}catch(e){return"[ERROR] Exception while trying to serialize the value"}}function Dr(t){let e=_e(t);if(e){if(Array.isArray(e)){const a=e;let r,i=void 0,s=void 0;if((n=t)&&n.constructor&&n.constructor.ngComponentDef){if(r=Gr(a,t),-1==r)throw new Error("The provided component was not found in the application");i=t}else if(function(t){return t&&t.constructor&&t.constructor.ngDirectiveDef}(t)){if(r=function(t,e){let n=t[1].firstChild;for(;n;){const a=n.directiveEnd;for(let r=n.directiveStart;r<a;r++)if(t[r]===e)return n.index;n=Fr(n)}return-1}(a,t),-1==r)throw new Error("The provided directive was not found in the application");s=Vr(r,a,!1)}else if(r=jr(a,t),-1==r)return null;const o=ge(a[r]),u=_e(o),l=u&&!Array.isArray(u)?u:Pr(a,r,o);if(i&&void 0===l.component&&(l.component=i,qr(l.component,l)),s&&void 0===l.directives){l.directives=s;for(let t=0;t<s.length;t++)qr(s[t],l)}qr(l.native,l),e=l}}else{const n=t;let a=n;for(;a=a.parentNode;){const t=_e(a);if(t){let a;if(a=Array.isArray(t)?t:t.lView,!a)return null;const r=jr(a,n);if(r>=0){const t=ge(a[r]),n=Pr(a,r,t);qr(t,n),e=n;break}}}}var n;return e||null}function Pr(t,e,n){return{lView:t,nodeIndex:e,native:n,component:void 0,directives:void 0,localRefs:void 0}}function Mr(t){let e,n=_e(t);if(Array.isArray(n)){const a=Gr(n,t);e=xe(a,n);const r=Pr(n,a,e[0]);r.component=t,qr(t,r),qr(r.native,r)}else e=xe(n.nodeIndex,n.lView);return e}function qr(t,e){t.__ngContext__=e}function jr(t,e){let n=t[1].firstChild;for(;n;){if(me(n,t)===e)return n.index;n=Fr(n)}return-1}function Fr(t){if(t.child)return t.child;if(t.next)return t.next;for(;t.parent&&!t.parent.next;)t=t.parent;return t.parent&&t.parent.next}function Gr(t,e){const n=t[1].components;if(n)for(let a=0;a<n.length;a++){const r=n[a];if(xe(r,t)[9]===e)return r}else if(xe(19,t)[9]===e)return 19;return-1}function Vr(t,e,n){const a=e[1].data[t];let r=a.directiveStart;return 0==r?It:(!n&&1&a.flags&&r++,e.slice(r,a.directiveEnd))}function zr(t){throw new Error(`Multiple components match node with tagname ${t.tagName}`)}function Br(){throw new Error("Cannot mix multi providers and regular providers")}function Yr(t,e){const n=t.length,a=t.indexOf(e),r=a+e.length;return!(-1===a||a>0&&" "!==t[a-1]||r<n&&" "!==t[r])}function Hr(t,e,n){return e===(0!==t.type||n?t.tagName:"ng-template")}function Ur(t,e,n){let a=4;const r=t.attrs||[],i=function(t){for(let e=0;e<t.length;e++)if(aa(t[e]))return e;return t.length}(r);let s=!1;for(let o=0;o<e.length;o++){const u=e[o];if("number"!=typeof u){if(!s)if(4&a){if(a=2|1&a,""!==u&&!Hr(t,u,n)||""===u&&1===e.length){if(Wr(a))return!1;s=!0}}else{const l=8&a?u:e[++o];if(8&a&&t.classes){if(!Yr(Wn(t.classes),l)){if(Wr(a))return!1;s=!0}continue}const d=Kr(8&a?"class":u,r,0==t.type&&"ng-template"!==t.tagName,n);if(-1===d){if(Wr(a))return!1;s=!0;continue}if(""!==l){let t;t=d>i?"":r[d+1];const e=8&a?t:null;if(e&&!Yr(e,l)||2&a&&l!==t){if(Wr(a))return!1;s=!0}}}}else{if(!s&&!Wr(a)&&!Wr(u))return!1;if(s&&Wr(u))continue;s=!1,a=u|1&a}}return Wr(a)||s}function Wr(t){return 0==(1&t)}function Kr(t,e,n,a){if(null===e)return-1;let r=0;if(a||!n){let n=!1;for(;r<e.length;){const a=e[r];if(a===t)return r;if(3===a||6===a)n=!0;else{if(1===a){let t=e[++r];for(;"string"==typeof t;)t=e[++r];continue}if(4===a)break;if(0===a){r+=4;continue}}r+=n?1:2}return-1}return function(t,e){let n=t.indexOf(4);if(n>-1)for(n++;n<t.length;){if(t[n]===e)return n;n++}return-1}(e,t)}function $r(t,e,n=!1){for(let a=0;a<e.length;a++)if(Ur(t,e[a],n))return!0;return!1}function Zr(t,e){t:for(let n=0;n<e.length;n++){const a=e[n];if(t.length===a.length){for(let e=0;e<t.length;e++)if(t[e]!==a[e])continue t;return!0}}return!1}let Jr=[];function Qr(t,e,n,a,r,i,s,o){const u=!a,l=fe(n,Fn(t)),d=u?0:l.classesIndex++;return!(!ti(t,e,d,a,r,i,s,o,!1)&&!o||(l.classesBitMask|=1<<d,0))}function Xr(t,e,n,a,r,i,s,o,u){const l=!a,d=fe(n,Fn(t)),c=l?0:d.stylesIndex++;return!(!ti(t,e,c,a,r,i,o,u,!!l||!!s&&s(a,null,1))&&!u||(d.stylesBitMask|=1<<c,0))}function ti(t,e,n,a,r,i,s,o,u){jn(t)||(s?function(t,e,n,a,r){Jr.unshift(t,e,n,a,r)}(t,n,a,r,u):(Jr.length&&ei(),ni(t,n,a,r,u)));const l=o||Vn(e[r],i);return l&&(e[r]=i),l}function ei(){let t=0;for(;t<Jr.length;)ni(Jr[t++],Jr[t++],Jr[t++],Jr[t++],Jr[t++]);Jr.length=0}function ni(t,e,n,a,r){let i=!1;if(n){let s=!1,o=Gn(t);for(;o<t.length;){const i=Pn(t,o),u=An(t,o);if(s=n<=u,s){n<u&&ai(t,o,n,r),ri(t,!1,o,a,e);break}o+=3+i}s||(ai(t,t.length,n,r),ri(t,!1,o,a,e),i=!0)}else ri(t,!0,3,a,e),i=!0;return i}function ai(t,e,n,a){t.splice(e,0,a?1:0,1,n,null),Dn(t,e,1)}function ri(t,e,n,a,r){const i=n+3;let s=i+Pn(t,n);if(e||s--,"number"==typeof a){for(let e=i;e<=s;e++)if(t[e]===a)return;t.splice(s,0,a),t[n+1]++,Dn(t,n,Ln(t,n)|1<<r)}else null!==a&&null==t[s]&&(t[s]=a)}function ii(t,e,n,a,r,i,s,o){return r&&a&&(function(t){if(!jn(t)){const e=Hn(t);e&&function(t,e){for(let n=1;n<e.length;n+=2){const a=Qn(e,n);a&&ni(t,-1,Zn(e,n),a,!1)}}(t,e),function(t){Rn(t,1|Cn(t))}(t)}}(a),function(t,e){return t&&e>0}(a,i))?(si(a,t,e,n,i,s,o),!0):r}function si(t,e,n,a,r,i,s){const o=!0===(u=r)?-1:!1===u?0:u;var u;const l=oi,d=(o&Ln(t,3))>0?1:0;let c=Gn(t);for(;c<t.length;){const r=Pn(t,c);if(o&Ln(t,c)){let o=!1;const u=An(t,c),f=r-1,h=Mn(t,c,f);for(let r=0;r<f;r++){const l=Mn(t,c,r),d=a[l];if(zn(d)){i(e,n,u,s&&En(t,c)?s(u,d,2):d,l),o=!0;break}}if(l){const r=l(t,e,n,a,i,s,d|(o?4:2),u,h);o=o||r}o||i(e,n,u,h)}c+=3+r}l&&l(t,e,n,a,i,s,d)}let oi=null;const ui=(t,e,n,a)=>{const r=e.style;a?(a=a.toString(),t&&ta(t)?t.setStyle(e,n,a,Xn.DashCase):r&&r.setProperty(n,a)):t&&ta(t)?t.removeStyle(e,n,Xn.DashCase):r&&r.removeProperty(n)},li=(t,e,n,a)=>{if(""!==n){const r=e.classList;a?t&&ta(t)?t.addClass(e,n):r&&r.add(n):t&&ta(t)?t.removeClass(e,n):r&&r.remove(n)}};function di(t,e,n,a){const r=Hn(n);if(r)for(let i=1;i<r.length;i+=2){const n=Zn(r,i),s=Qn(r,i);a?li(t,e,n,s):ui(t,e,n,s)}}const ci={},fi={marker:"element"},hi={marker:"comment"},gi=(t,e,n,a,r,i,s,o,u)=>{let l=!1;if(Pn(t,3)){let d=!0;const c=!o;c&&-2&s&&(d=!1,l=!0),d&&(l=function t(e,n,a,r,i,s,o,u,l,d){let c=!1;if(l<Pn(e,3)){const f=Mn(e,3,l),h=r[f];let g=function(t){return t>=yi.length&&yi.push(1),yi[t]}(l);for(;g<h.length;){const p=Zn(h,g),b=u&&p>u,m=!b&&p===u,y=Qn(h,g),v=zn(y);let x=t(e,n,a,r,i,s,b?o:bi(o,v,m),b?u:p,l+1,d);if(b){c||(c=x);break}if(!x&&mi(o,m)){const t=m&&!v,e=t?d:y,r=t?f:null;i(n,a,p,s?s(p,e,3):e,r),x=!0}c=x&&m,g+=2}if(yi[l]=g,1===h.length||!u)return t(e,n,a,r,i,s,o,u,l+1,d)}return c}(t,e,n,a,r,i,s,o||null,0,u||null)),c&&function(){for(let t=0;t<yi.length;t++)yi[t]=1}()}return l};function pi(){oi=gi}function bi(t,e,n){let a=t;return e||4&t||!(n||1&t)?(a|=4,a&=-3):(a|=2,a&=-5),a}function mi(t,e){let n=(1&t)>0;return n?4&t&&e&&(n=!1):2&t&&(n=e),n}const yi=[];function vi(t,e,n,a){for(let r=1;r<t.length;r+=2){const i=Zn(t,r);if(e<=i){let s=!1;if(i===e){const e=t[r];!a&&zn(e)||(s=!0,Jn(t,r,n))}else s=!0,t.splice(r,0,e,n);return s}}return t.push(e,n),!0}function xi(t,e){let n="";for(let a=1;a<t.length;a+=2){const r=Zn(t,a),i=Qn(t,a),s=Bn(r,e?"":i,":");n=Bn(n,s,e?" ":"; ")}return n}function _i(t){let e={};if(t)for(let n=1;n<t.length;n+=2){const a=Zn(t,n),r=Qn(t,n);e[a]=r}return e}class Ti{constructor(t,e,n){this.context=t,this._data=e,this._isClassBased=n,this._sanitizer=null}overrideSanitizer(t){this._sanitizer=t}get summary(){const t={};return this._mapValues((e,n,a)=>{t[e]={prop:e,value:n,bindingIndex:a}}),t}get values(){const t={};return this._mapValues((e,n)=>{t[e]=n}),t}_mapValues(t){Pn(this.context,3)>0&&pi();const e=this._isClassBased?null:this._sanitizer||mn();si(this.context,null,{},this._data,!0,(e,n,a,r,i)=>{t(a,r,i||null)},e)}}function Oi(t){wi(Ae(),t)}function wi(t,e){ie(t,t[1],$e(),e),ln(e)}const Si=(()=>Promise.resolve(null))();function Ii(t){const e=t[1],n=Ue(t);if(e.firstTemplatePass=!1,t[7]=e.bindingStartIndex,!n){const n=$e();ie(t,e,n,void 0),function(t){for(let e=t[14];null!==e;e=e[4])if(-1===e[2]&&Jt(e))for(let t=9;t<e.length;t++){const n=e[t];Ei(n,n[1],n[9])}}(t),Ni(e,t),Oe(t),se(t,e.contentHooks,e.contentCheckHooks,n,1,void 0),function(t,e){const n=un();try{if(t.expandoInstructions){let n=e[7]=t.expandoStartIndex;Xe(n);let a=-1,r=-1;for(let i=0;i<t.expandoInstructions.length;i++){const s=t.expandoInstructions[i];"number"==typeof s?(s<=0?(r=-s,qe(r),n+=9+t.expandoInstructions[++i],a=n):n+=s,Xe(n)):(null!==s&&(e[7]=n,s(2,ge(e[a]),r),je()),a++)}}}finally{qe(n)}}(e,t)}n&&e.staticContentQueries&&Ni(e,t),n&&!e.staticViewQueries||ds(2,e,t[9]),function(t,e){if(null!=e)for(let n=0;n<e.length;n++)as(t,e[n])}(t,e.components)}function Ni(t,e){const n=t.contentQueries;if(null!==n)for(let a=0;a<n.length;a+=2){const r=n[a],i=n[a+1];if(-1!==i){const n=t.data[i];nn(r),n.contentQueries(2,e[i],i)}}}function Ci(t,e){let n;const a=e||Ae()[12],r=cn;return n=ta(a)?a.createElement(t,r):null===r?a.createElement(t):a.createElementNS(r,t),n}function Ri(t,e,n,a,r,i,s,o,u,l){const d=e.blueprint.slice();return d[0]=r,d[2]=140|a,Oe(d),d[3]=d[16]=t,d[9]=n,d[11]=s||t&&t[11],d[12]=o||t&&t[12],d[13]=u||t&&t[13]||null,d[10]=l||t&&t[10]||null,d[6]=i,d}function Ai(t,e,n,a,r,i){const s=n+19,o=t.data[s]||function(t,e,n,a,r,i,s){const o=Ve(),u=Ye(),l=u?o:o&&o.parent,d=t.data[n]=Vi(0,l&&l!==e?l:null,a,n,r,i);return 0!==s&&t.firstChild||(t.firstChild=d),o&&(!u||null!=o.child||null===d.parent&&2!==o.type?u||(o.next=d):o.child=d),d}(t,e,s,a,r,i,n);return ze(o,!0),o}function ki(t,e,n,a){let r=t.node;return null==r&&(t.node=r=Vi(0,e,2,n,null,null)),a[6]=r}function Ei(t,e,n){const a=Ye(),r=Ve();let i;if(512&t[2])ss(ca(t));else{let s=!1;try{ze(null,!0),i=an(t,t[6]),Oe(t),Di(t,e.template,Pi(t),n),e.firstTemplatePass=!1,Ii(t),s=!0}finally{sn(i,s),ze(r,a)}}}function Li(t,e,n){const a=t[11],r=an(t,t[6]),i=!$e(),s=Ue(t);let o=!1;try{i&&!s&&a.begin&&a.begin(),s&&(n&&Di(t,n,1,e),Ii(t),t[2]&=-5),Oe(t),n&&Di(t,n,2,e),Ii(t),o=!0}finally{i&&!s&&a.end&&a.end(),sn(r,o)}}function Di(t,e,n,a){pn();const r=un();try{qe(null),2&n&&wi(t,0),e(n,a)}finally{ln(r)}}function Pi(t){return Ue(t)?1:2}function Mi(t,e,n){if(Qt(e)){const a=e.directiveEnd;for(let r=e.directiveStart;r<a;r++){const e=t.data[r];e.contentQueries&&e.contentQueries(1,n[r],r)}}}function qi(t,e,n,a=be){Ne()&&(function(t,e,n){const a=n.directiveStart,r=n.directiveEnd;!t.firstTemplatePass&&a<r&&pa(n,e);for(let i=a;i<r;i++){const a=t.data[i];te(a)&&ts(e,n,a),Ki(e,Sa(t.data,e,i,n),a,i)}}(t,e,n),function(t,e,n){const a=n.directiveStart,r=n.directiveEnd,i=t.expandoInstructions,s=t.firstTemplatePass,o=n.index-19,u=un();try{qe(o);for(let o=a;o<r;o++){const a=t.data[o],r=e[o];a.hostBindings?(Ui(a,i,r,n,s),je()):s&&i.push(null)}}finally{qe(u)}}(t,e,n),function(t,e,n){const a=e.localNames;if(a){let r=e.index+1;for(let i=0;i<a.length;i+=2){const s=a[i+1],o=-1===s?n(e,t):t[s];t[r++]=o}}}(e,n,a),qe(null))}function ji(t){return t.tView||(t.tView=Fi(-1,t.template,t.consts,t.vars,t.directiveDefs,t.pipeDefs,t.viewQuery,t.schemas))}function Fi(t,e,n,a,r,i,s,o){const u=19+n,l=u+a,d=function(t,e){const n=new Array(e).fill(null,0,t).fill(ci,t);return n[7]=t,n}(u,l);return d[1]={id:t,blueprint:d,template:e,queries:null,viewQuery:s,node:null,data:d.slice().fill(null,u),bindingStartIndex:u,expandoStartIndex:l,expandoInstructions:null,firstTemplatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof r?r():r,pipeRegistry:"function"==typeof i?i():i,firstChild:null,schemas:o}}function Gi(t,e){const n=t.createRenderer(null,null);return"string"==typeof e?ta(n)?n.selectRootElement(e):n.querySelector(e):e}function Vi(t,e,n,a,r,i){return{type:n,index:a,injectorIndex:e?e.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,propertyMetadataStartIndex:-1,propertyMetadataEndIndex:-1,flags:0,providerIndexes:0,tagName:r,attrs:i,localNames:null,initialInputs:void 0,inputs:void 0,outputs:void 0,tViews:null,next:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,classes:null}}function zi(t,e){const n=Ae()[1];let a=null;const r=t.directiveStart,i=t.directiveEnd;if(i>r){const t=0===e,s=n.data;for(let e=r;e<i;e++){const n=s[e],r=t?n.inputs:n.outputs;for(let t in r)if(r.hasOwnProperty(t)){a=a||{};const n=r[t];a.hasOwnProperty(t)?a[t].push(e,t,n):a[t]=[e,t,n]}}}return a}const Bi={class:"className",for:"htmlFor",formaction:"formAction",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"};function Yi(t,e,n,a,r,i){const s=Ae(),o=pe(t,s),u=ye(t,s);let l,d;if(!r&&(l=hs(u))&&(d=l[e]))ys(s,d,n),Xt(u)&&function(t,e){const n=xe(e,t);16&n[2]||(n[2]|=64)}(s,t+19);else if(3===u.type){!function(t,e,n,a,r){const i=e[7]-1,s=a[i];"�"==s[0]&&(a[i]=n+s,r||(-1==t.propertyMetadataStartIndex&&(t.propertyMetadataStartIndex=i),t.propertyMetadataEndIndex=i+1))}(u,s,e=Bi[e]||e,s[1].data,r);const t=i?i(u,s):s[12];n=null!=a?a(n,u.tagName||"",e):n,ta(t)?t.setProperty(o,e,n):ra(e)||(o.setProperty?o.setProperty(e,n):o[e]=n)}}function Hi(t,e,n,a){if(!Ne())return;const r=function(t,e,n){const a=t.directiveRegistry;let r=null;if(a)for(let i=0;i<a.length;i++){const s=a[i];$r(n,s.selectors,!1)&&(r||(r=[]),va(pa(n,e),t,s.type),te(s)?(1&n.flags&&zr(n),n.flags=1,r.unshift(s)):r.push(s))}return r}(t,e,n),i=a?{"":-1}:null;if(r){Qi(n,t.data.length,r.length);for(let t=0;t<r.length;t++){const e=r[t];e.providersResolver&&e.providersResolver(e)}Wi(t,n,r.length);const a=t.preOrderHooks&&t.preOrderHooks.length||0,s=t.preOrderCheckHooks&&t.preOrderCheckHooks.length||0,o=n.index-19;for(let n=0;n<r.length;n++){const u=r[n],l=t.data.length;Xi(t,e,u,u.factory),Ji(t.data.length-1,u,i),ae(l,u,t,o,a,s)}}i&&function(t,e,n){if(e){const a=t.localNames=[];for(let t=0;t<e.length;t+=2){const r=n[e[t+1]];if(null==r)throw new Error(`Export of name '${e[t+1]}' not found!`);a.push(e[t],r)}}}(n,a,i)}function Ui(t,e,n,a,r){const i=e.length;Ie(t),t.hostBindings(1,n,a.index-19),Ie(null),i===e.length&&r&&e.push(t.hostBindings)}function Wi(t,e,n){const a=-(e.index-19),r=t.data.length-(65535&e.providerIndexes);(t.expandoInstructions||(t.expandoInstructions=[])).push(a,r,n)}function Ki(t,e,n,a){const r=Ve();$i(t,r,e),r&&r.attrs&&function(t,e,n,a){let r=a.initialInputs;(void 0===r||t>=r.length)&&(r=function(t,e,n){const a=n.initialInputs||(n.initialInputs=[]);for(let s=a.length;s<=t;s++)a.push(null);const r=n.attrs;let i=0;for(;i<r.length;){const n=r[i];if(0===n){i+=4;continue}if(5===n){i+=2;continue}if("number"==typeof n)break;const s=e[n],o=r[i+1];void 0!==s&&(a[t]||(a[t]=[])).push(n,s,o),i+=2}return a}(t,n.inputs,a));const i=r[t];if(i){const t=n.setInput;for(let a=0;a<i.length;){const r=i[a++],s=i[a++],o=i[a++];t?n.setInput(e,o,r,s):e[s]=o}}}(a,e,n,r),t[1].firstTemplatePass&&n.contentQueries&&(r.flags|=4),te(n)&&(xe(r.index,t)[9]=e)}function $i(t,e,n){const a=be(e,t);qr(n,t),a&&qr(a,t)}function Zi(t){const e=Ae()[1];(e.components||(e.components=[])).push(t.index)}function Ji(t,e,n){if(n){if(e.exportAs)for(let a=0;a<e.exportAs.length;a++)n[e.exportAs[a]]=t;e.template&&(n[""]=t)}}function Qi(t,e,n){t.flags=1&t.flags,t.directiveStart=e,t.directiveEnd=e+n,t.providerIndexes=e}function Xi(t,e,n,a){t.data.push(n);const r=new ne(a,te(n),null);t.blueprint.push(r),e.push(r)}function ts(t,e,n){const a=be(e,t),r=ji(n),i=t[11],s=rs(t,Ri(t,r,null,n.onPush?64:16,t[e.index],e,i,i.createRenderer(a,n)));s[6]=e,t[e.index]=s,t[1].firstTemplatePass&&Zi(e)}function es(t,e,n,a,r,i){const s=pe(t,a),o=a[12];if(null==n)ta(o)?o.removeAttribute(s,e,i):s.removeAttribute(e);else{const u=ye(t,a),l=null==r?vn(n):r(n,u.tagName||"",e);ta(o)?o.setAttribute(s,e,l,i):i?s.setAttributeNS(i,e,l):s.setAttribute(e,l)}}function ns(t,e,n,a,r){return new Array(t,!0,r?-1:0,e,null,null,a,n,null)}function as(t,e){const n=xe(e,t);(128==(128&n[2])||Ue(t))&&80&n[2]&&(function(t){const e=t[1];for(let n=t.length;n<e.blueprint.length;n++)t[n]=e.blueprint[n]}(n),ls(n,n[9]))}function rs(t,e){return t[14]?t[15][4]=e:t[14]=e,t[15]=e,e}function is(t){for(;t;){t[2]|=64;const e=la(t);if(ee(t)&&!e)return t;t=e}return null}function ss(t){for(let e=0;e<t.components.length;e++){const n=t.components[e];Li(Te(n),n)}}function os(t,e){const n=t[11];n.begin&&n.begin();try{Ue(t)&&ls(t,e),ls(t,e)}catch(a){throw ms(t,a),a}finally{n.end&&n.end()}}function us(t){ss(t[9])}function ls(t,e){const n=t[1],a=an(t,t[6]),r=n.template,i=Ue(t);let s=!1;try{Oe(t),i&&ds(1,n,e),Di(t,r,Pi(t),e),Ii(t),s=!0}finally{sn(a,s)}}function ds(t,e,n){const a=e.viewQuery;null!==a&&(nn(0),a(t,n))}function cs(t,e="",n=""){const a=t[1].data,r=t[7]-1;return null==a[r]?a[r]="�"+e+"�"+n:null}const fs=Si;function hs(t){return void 0===t.inputs&&(t.inputs=zi(t,0)),t.inputs}function gs(t){return t[8]||(t[8]=[])}function ps(t){return t[1].cleanup||(t[1].cleanup=[])}function bs(t,e){return e[t.index][12]}function ms(t,e){const n=t[10],a=n?n.get(Da,null):null;a&&a.handleError(e)}function ys(t,e,n){const a=t[1];for(let r=0;r<e.length;){const i=e[r++],s=e[r++],o=e[r++],u=t[i],l=a.data[i];l.setInput?l.setInput(u,n,s,o):u[o]=n}}function vs(t,e,n){const a=pe(e,t),r=t[12];ta(r)?r.setValue(a,n):a.textContent=n}function xs(t,e,n){di(t,e,n.classes,!0),di(t,e,n.styles,!1)}function _s(t,e){const n=e[3];return-1===t.index?Jt(n)?n:null:n}function Ts(t,e){const n=_s(t,e);return n?Ps(e[12],n[7]):null}function Os(t,e,n,a,r){if(null!=a){let i,s=!1;Jt(a)?i=a:Zt(a)&&(s=!0,a=a[0]);const o=ge(a);0===t?Ls(e,n,o,r||null):1===t?js(e,o,s):2===t&&e.destroyNode(o),null!=i&&function(t,e,n,a,r){const i=n[7];i!==ge(n)&&Os(e,t,a,i,r);for(let s=9;s<n.length;s++)zs(t,e,n[s],a,i)}(e,t,i,n,r)}}function ws(t,e){return ta(e)?e.createText(vn(t)):e.createTextNode(vn(t))}function Ss(t,e,n){const a=Ts(t[1].node,t);a&&zs(t[12],e?0:1,t,a,n)}function Is(t,e,n){const a=9+n,r=e.length;n>0&&(e[a-1][4]=t),n<r-9?(t[4]=e[a],mt(e,9+n,t)):(e.push(t),t[4]=null),t[3]=e;const i=t[17];null!==i&&e!==i&&function(t,e){const n=t[5];null===n?t[5]=[e]:n.push(e)}(i,t);const s=t[5];null!==s&&s.insertView(t[1]),t[2]|=128}function Ns(t,e){const n=t[5],a=n.indexOf(e);n.splice(a,1)}function Cs(t,e){if(t.length<=9)return;const n=9+e,a=t[n];if(a){const r=a[17];null!==r&&r!==t&&Ns(r,a),e>0&&(t[n-1][4]=a[4]);const i=yt(t,9+e);Ss(a,!1);const s=i[5];null!==s&&s.detachView(i[1]),a[3]=null,a[4]=null,a[2]&=-129}return a}function Rs(t,e){const n=Cs(t,e);n&&As(n)}function As(t){if(!(256&t[2])){const e=t[12];ta(e)&&e.destroyNode&&zs(e,2,t,null,null),function(t){let e=t[14];if(!e)return Es(t);for(;e;){let n=null;if(Zt(e))n=e[14];else{const t=e[9];t&&(n=t)}if(!n){for(;e&&!e[4]&&e!==t;)Es(e),e=ks(e,t);Es(e||t),n=e&&e[4]}e=n}}(t)}}function ks(t,e){let n;return Zt(t)&&(n=t[6])&&2===n.type?_s(n,t):t[3]===e?null:t[3]}function Es(t){if(Zt(t)&&!(256&t[2])){t[2]&=-129,t[2]|=256,function(t){const e=t[1];let n;if(null!=e&&null!=(n=e.destroyHooks))for(let a=0;a<n.length;a+=2){const e=t[n[a]];e instanceof ne||n[a+1].call(e)}}(t),function(t){const e=t[1].cleanup;if(null!==e){const n=t[8];for(let a=0;a<e.length-1;a+=2)if("string"==typeof e[a]){const r=e[a+1],i="function"==typeof r?r(t):ge(t[r]),s=n[e[a+2]],o=e[a+3];"boolean"==typeof o?i.removeEventListener(e[a],s,o):o>=0?n[o]():n[-o].unsubscribe(),a+=2}else e[a].call(n[e[a+1]]);t[8]=null}}(t);const e=t[6];e&&3===e.type&&ta(t[12])&&t[12].destroy();const n=t[17];if(null!==n&&Jt(t[3])){n!==t[3]&&Ns(n,t);const e=t[5];null!==e&&e.detachView(t[1])}}}function Ls(t,e,n,a){ta(t)?t.insertBefore(e,n,a):e.insertBefore(n,a,!0)}function Ds(t,e,n,a){null!==a?Ls(t,e,n,a):function(t,e,n){ta(t)?t.appendChild(e,n):e.appendChild(n)}(t,e,n)}function Ps(t,e){return ta(t)?t.parentNode(e):e.parentNode}function Ms(t,e,n){const a=function(t,e){if(ee(e))return Ps(e[12],be(t,e));const n=function(t){for(;null!=t.parent&&(4===t.parent.type||5===t.parent.type);)t=t.parent;return t}(t),a=n.parent;if(null==a){const t=e[6];return 2===t.type?Ts(t,e):function(t){const e=t[6];return e&&3===e.type?be(e,la(t)):null}(e)}{const t=n&&5===n.type;if(t&&2&n.flags)return be(n,e).parentNode;if(1&a.flags&&!t){const t=e[1].data,n=t[t[a.index].directiveStart].encapsulation;if(n!==Ot.ShadowDom&&n!==Ot.Native)return null}return be(a,e)}}(e,n);if(null!=a){const r=n[12],i=function(t,e){if(2===t.type){const n=_s(t,e);return qs(n.indexOf(e,9)-9,n)}return 4===t.type||5===t.type?be(t,e):null}(e.parent||n[6],n);if(Array.isArray(t))for(let e of t)Ds(r,a,e,i);else Ds(r,a,t,i)}}function qs(t,e){const n=9+t+1;if(n<e.length){const t=e[n],a=t[6].child;return null!==a?me(a,t):e[7]}return e[7]}function js(t,e,n){const a=Ps(t,e);a&&function(t,e,n,a){ta(t)?t.removeChild(e,n,a):e.removeChild(n)}(t,a,e,n)}function Fs(t,e,n,a){const r=a[3];let i=a[6].projection[n];if(Array.isArray(i))Ms(i,e,t);else for(;i;)32&i.flags||(1===i.type?Fs(t,e,i.projection,da(r)):(i.flags|=2,Vs(i,e,t,r))),i=i.projectionNext}function Gs(t,e,n,a){for(;t;)Vs(t,e,n,a),t=t.next}function Vs(t,e,n,a){const r=be(t,a);Ms(r,e,n),qr(r,a);const i=a[t.index];if(0===t.type)for(let s=9;s<i.length;s++)Ss(i[s],!0,i[7]);else if(5===t.type){let e=t.child;Gs(e,e,a,a)}else 4===t.type&&Gs(t.child,e,n,a),Jt(i)&&Ms(i[7],e,n)}function zs(t,e,n,a,r){let i=n[1].node.child;for(;null!==i;)Bs(t,e,n,i,a,r),i=i.next}function Bs(t,e,n,a,r,i){const s=a.type;32&a.flags||(4===s||5===s?function(t,e,n,a,r,i){Os(e,t,r,n[a.index],i);let s=a.child;for(;s;)Bs(t,e,n,s,r,i),s=s.next}(t,e,n,a,r,i):1===s?function(t,e,n,a,r,i){const s=da(n),o=s[6].projection[a.projection];if(void 0!==o)if(Array.isArray(o))for(let u=0;u<o.length;u++)Os(e,t,r,o[u],i);else{let n=o;const a=s[3];for(;null!==n;)Bs(t,e,a,n,r,i),n=n.projectionNext}}(t,e,n,a,r,i):Os(e,t,r,n[a.index],i))}class Ys{constructor(t,e,n){this._context=e,this._componentIndex=n,this._appRef=null,this._viewContainerRef=null,this._tViewNode=null,this._lView=t}get rootNodes(){return null==this._lView[0]?function t(e,n,a){let r=n.child;for(;r;){const n=me(r,e);if(n&&a.push(n),4===r.type)t(e,r,a);else if(1===r.type){const t=da(e),n=t[6],i=la(t);let s=n.projection[r.projection];for(;s&&i;)a.push(be(s,i)),s=s.next}r=r.next}return a}(this._lView,this._lView[6],[]):[]}get context(){return this._context?this._context:this._lookUpContext()}get destroyed(){return 256==(256&this._lView[2])}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._viewContainerRef){const t=this._viewContainerRef.indexOf(this);t>-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}As(this._lView)}onDestroy(t){var e,n;n=t,gs(e=this._lView).push(n),e[1].firstTemplatePass&&ps(e).push(e[8].length-1,null)}markForCheck(){is(this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){os(this._lView,this.context)}checkNoChanges(){!function(t,e){Ze(!0);try{os(t,e)}finally{Ze(!1)}}(this._lView,this.context)}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}detachFromAppRef(){this._appRef=null,function(t){zs(t[12],1,t,null,null)}(this._lView)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}_lookUpContext(){return this._context=la(this._lView)[this._componentIndex]}}class Hs extends Ys{constructor(t){super(t,null,-1),this._view=t}detectChanges(){us(this._view)}checkNoChanges(){!function(t){Ze(!0);try{us(t)}finally{Ze(!1)}}(this._view)}get context(){return null}}let Us,Ws,Ks;function $s(t,e,n){return Us||(Us=class extends t{}),new Us(be(e,n))}function Zs(t,e,n,a){return Ws||(Ws=class extends t{constructor(t,e,n){super(),this._declarationView=t,this._declarationTContainer=e,this.elementRef=n}createEmbeddedView(t){const e=this._declarationTContainer.tViews,n=function(t,e,n,a){const r=Ye(),i=Ve();ze(null,!0);const s=Ri(n,t,e,16,null,null);return s[16]=n,ki(t,null,-1,s),t.firstTemplatePass&&(t.node.injectorIndex=a),ze(i,r),s}(e,t,this._declarationView,this._declarationTContainer.injectorIndex);n[17]=this._declarationView[this._declarationTContainer.index];const a=this._declarationView[5];null!==a&&(n[5]=a.createEmbeddedView(e)),Ei(n,e,t);const r=new Ys(n,t,-1);return r._tViewNode=n[6],r}}),0===n.type?new Ws(a,n,$s(e,n,a)):null}function Js(t,e,n,a){let r;Ks||(Ks=class extends t{constructor(t,e,n){super(),this._lContainer=t,this._hostTNode=e,this._hostView=n}get element(){return $s(e,this._hostTNode,this._hostView)}get injector(){return new Ca(this._hostTNode,this._hostView)}get parentInjector(){const t=ya(this._hostTNode,this._hostView),e=ua(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){const t=n.parent.injectorIndex;let e=n.parent;for(;null!=e.parent&&t==e.injectorIndex;)e=e.parent;return e}let a=oa(t),r=e,i=e[6];for(;a>1;)r=r[16],i=r[6],a--;return i}(t,this._hostView,this._hostTNode);return ia(t)&&null!=n?new Ca(n,e):new Ca(null,this._hostView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){return null!==this._lContainer[8]&&this._lContainer[8][t]||null}get length(){return this._lContainer.length-9}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;!r&&null==t.ngModule&&i&&(r=i.get(ft,null));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");this.allocateContainerIfNeeded();const n=t._lView,a=this._adjustIndex(e);return Jt(n[3])?this.move(t,a):(Is(n,this._lContainer,a),Ss(n,!0,qs(a,this._lContainer)),t.attachToViewContainerRef(this),mt(this._lContainer[8],a,t),t)}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this.indexOf(t);return-1!==n&&this.detach(n),this.insert(t,e),t}indexOf(t){return null!==this._lContainer[8]?this._lContainer[8].indexOf(t):0}remove(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1);Rs(this._lContainer,e),yt(this._lContainer[8],e)}detach(t){this.allocateContainerIfNeeded();const e=this._adjustIndex(t,-1),n=Cs(this._lContainer,e);return n&&null!=yt(this._lContainer[8],e)?new Ys(n,n[9],-1):null}_adjustIndex(t,e=0){return null==t?this.length+e:t}allocateContainerIfNeeded(){null===this._lContainer[8]&&(this._lContainer[8]=[])}});const i=a[n.index];if(Jt(i))r=i,r[2]=-1;else{let t;if(t=4===n.type?ge(i):a[12].createComment(""),ee(a)){const e=a[12],r=be(n,a);Ls(e,Ps(e,r),t,function(t,e){return ta(t)?t.nextSibling(e):e.nextSibling}(e,r))}else Ms(t,n,a);a[n.index]=r=ns(i,a,t,n,!0),rs(a,r)}return new Ks(r,n,a)}function Qs(t=!1){return function(t,e,n){if(Xt(t)&&!n){const n=t.directiveStart,a=xe(t.index,e);return new Ys(a,null,n)}if(3===t.type||0===t.type||4===t.type){const t=da(e);return new Ys(t,t[9],-1)}return null}(Ve(),Ae(),t)}let Xs=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>eo(),t})();const to=Qs,eo=(...t)=>{},no=Function;function ao(t){return"function"==typeof t}const ro=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/,io=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,so=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,oo=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s+super\(\.\.\.arguments\)/;class uo{constructor(t){this._reflect=t||U.Reflect}isReflectionEnabled(){return!0}factory(t){return(...e)=>new t(...e)}_zipTypesAndAnnotations(t,e){let n;n=new Array(void 0===t?e.length:t.length);for(let a=0;a<n.length;a++)n[a]=void 0===t?[]:t[a]&&t[a]!=Object?[t[a]]:[],e&&null!=e[a]&&(n[a]=n[a].concat(e[a]));return n}_ownParameters(t,e){if(n=t.toString(),ro.test(n)||oo.test(n)||io.test(n)&&!so.test(n))return null;var n;if(t.parameters&&t.parameters!==e.parameters)return t.parameters;const a=t.ctorParameters;if(a&&a!==e.ctorParameters){const t="function"==typeof a?a():a,e=t.map(t=>t&&t.type),n=t.map(t=>t&&lo(t.decorators));return this._zipTypesAndAnnotations(e,n)}const r=t.hasOwnProperty(b)&&t[b],i=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",t);return i||r?this._zipTypesAndAnnotations(i,r):new Array(t.length).fill(void 0)}parameters(t){if(!ao(t))return[];const e=co(t);let n=this._ownParameters(t,e);return n||e===Object||(n=this.parameters(e)),n||[]}_ownAnnotations(t,e){if(t.annotations&&t.annotations!==e.annotations){let e=t.annotations;return"function"==typeof e&&e.annotations&&(e=e.annotations),e}return t.decorators&&t.decorators!==e.decorators?lo(t.decorators):t.hasOwnProperty(p)?t[p]:null}annotations(t){if(!ao(t))return[];const e=co(t),n=this._ownAnnotations(t,e)||[];return(e!==Object?this.annotations(e):[]).concat(n)}_ownPropMetadata(t,e){if(t.propMetadata&&t.propMetadata!==e.propMetadata){let e=t.propMetadata;return"function"==typeof e&&e.propMetadata&&(e=e.propMetadata),e}if(t.propDecorators&&t.propDecorators!==e.propDecorators){const e=t.propDecorators,n={};return Object.keys(e).forEach(t=>{n[t]=lo(e[t])}),n}return t.hasOwnProperty(m)?t[m]:null}propMetadata(t){if(!ao(t))return{};const e=co(t),n={};if(e!==Object){const t=this.propMetadata(e);Object.keys(t).forEach(e=>{n[e]=t[e]})}const a=this._ownPropMetadata(t,e);return a&&Object.keys(a).forEach(t=>{const e=[];n.hasOwnProperty(t)&&e.push(...n[t]),e.push(...a[t]),n[t]=e}),n}ownPropMetadata(t){return ao(t)&&this._ownPropMetadata(t,co(t))||{}}hasLifecycleHook(t,e){return t instanceof no&&e in t.prototype}guards(t){return{}}getter(t){return new Function("o","return o."+t+";")}setter(t){return new Function("o","v","return o."+t+" = v;")}method(t){return new Function("o","args",`if (!o.${t}) throw new Error('"${t}" is undefined');\n        return o.${t}.apply(o, args);`)}importUri(t){return"object"==typeof t&&t.filePath?t.filePath:`./${j(t)}`}resourceUri(t){return`./${j(t)}`}resolveIdentifier(t,e,n,a){return a}resolveEnum(t,e){return t[e]}}function lo(t){return t?t.map(t=>new(0,t.type.annotationCls)(...t.args?t.args:[])):[]}function co(t){const e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}let fo=null;function ho(){return fo=fo||new uo}function go(t){return po(ho().parameters(t))}function po(t){const e=W();return t.map(t=>function(t,e){const n={token:null,host:!1,optional:!1,resolved:t.R3ResolvedDependencyType.Token,self:!1,skipSelf:!1};function a(e){n.resolved=t.R3ResolvedDependencyType.Token,n.token=e}if(Array.isArray(e)){if(0===e.length)throw new Error("Dependency array must have arguments.");for(let r=0;r<e.length;r++){const i=e[r];if(void 0!==i)if(i instanceof O||"Optional"===i.__proto__.ngMetadataName)n.optional=!0;else if(i instanceof S||"SkipSelf"===i.__proto__.ngMetadataName)n.skipSelf=!0;else if(i instanceof w||"Self"===i.__proto__.ngMetadataName)n.self=!0;else if(i instanceof I||"Host"===i.__proto__.ngMetadataName)n.host=!0;else if(i instanceof T)n.token=i.token;else if(i instanceof N){if(void 0===i.attributeName)throw new Error("Attribute name must be defined.");n.token=i.attributeName,n.resolved=t.R3ResolvedDependencyType.Attribute}else i===Xs?(n.token=i,n.resolved=t.R3ResolvedDependencyType.ChangeDetectorRef):a(i)}}else a(e);return n}(e,t))}function bo(t,e){let n=null;t.hasOwnProperty(M)||Object.defineProperty(t,M,{get:()=>{if(null===n){const a=e||{providedIn:null},r=yo(a)||xo(a)||vo(a)||_o(a),i={name:t.name,type:t,typeArgumentCount:0,providedIn:a.providedIn,ctorDeps:go(t),userDeps:void 0};if((yo(a)||xo(a))&&void 0!==a.deps&&(i.userDeps=po(a.deps)),r)if(yo(a))i.useClass=a.useClass;else if(vo(a))i.useValue=a.useValue;else if(xo(a))i.useFactory=a.useFactory;else{if(!_o(a))throw new Error("Unreachable state.");i.useExisting=a.useExisting}else i.useClass=t;n=W().compileInjectable(ct,`ng:///${t.name}/ngInjectableDef.js`,i)}return n}})}const mo=R({provide:String,useValue:R});function yo(t){return void 0!==t.useClass}function vo(t){return mo in t}function xo(t){return void 0!==t.useFactory}function _o(t){return void 0!==t.useExisting}const To=R({provide:String,useValue:R}),Oo=[];function wo(t,e){if(!e){const e=(new uo).parameters(t);return()=>new t(...ot(e))}if(To in e){const t=e;return()=>t.useValue}if(e.useExisting){const t=e;return()=>rt(t.useExisting)}if(e.useFactory){const t=e;return()=>t.useFactory(...ot(t.deps||Oo))}if(e.useClass){const n=e;let a=e.deps;if(!a){const e=new uo;a=e.parameters(t)}return()=>new n.useClass(...ot(a))}{let n=e.deps;if(!n){const e=new uo;n=e.parameters(t)}return()=>new t(...ot(n))}}const So=y("Injectable",void 0,void 0,void 0,(t,e)=>No(t,e)),Io=bo,No=function(t,e){e&&void 0!==e.providedIn&&!D(t)&&(t.ngInjectableDef=k({token:t,providedIn:e.providedIn,factory:wo(t,e)}))},Co=new K("The presence of this token marks an injector as being the root injector."),Ro={},Ao={},ko=[];let Eo=void 0;function Lo(){return void 0===Eo&&(Eo=new ut),Eo}function Do(t,e=null,n=null,a){return e=e||Lo(),new Po(t,n,e,a)}class Po{constructor(t,e,n,a=null){this.parent=n,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;const r=[];bt([t],t=>this.processInjectorType(t,[],r)),e&&bt(e,n=>this.processProvider(n,t,e)),this.records.set($,jo(void 0,this)),this.isRootInjector=this.records.has(Co),this.injectorDefTypes.forEach(t=>this.get(t)),this.source=a||("object"==typeof t?null:j(t))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(t=>t.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(t,e=Z,n=C.Default){this.assertNotDestroyed();const a=et(this);try{if(!(n&C.SkipSelf)){let e=this.records.get(t);if(void 0===e){const n=("function"==typeof(r=t)||"object"==typeof r&&r instanceof K)&&D(t);n&&this.injectableDefInScope(n)&&(e=jo(Mo(t),Ro),this.records.set(t,e))}if(void 0!==e)return this.hydrate(t,e)}return(n&C.Self?Lo():this.parent).get(t,n&C.Optional?null:e)}catch(i){if("NullInjectorError"===i.name){if((i.ngTempTokenPath=i.ngTempTokenPath||[]).unshift(j(t)),a)throw i;return lt(i,t,"R3InjectorError",this.source)}throw i}finally{et(a)}var r}toString(){const t=[];return this.records.forEach((e,n)=>t.push(j(n))),`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(t,e,n){if(!(t=V(t)))return!1;let a=P(t);const r=null==a&&t.ngModule||void 0,i=void 0===r?t:r,s=-1!==n.indexOf(i);if(void 0!==r&&(a=P(r)),null==a)return!1;if(this.injectorDefTypes.add(i),this.records.set(i,jo(a.factory,Ro)),null!=a.imports&&!s){let t;n.push(i);try{bt(a.imports,a=>{this.processInjectorType(a,e,n)&&(void 0===t&&(t=[]),t.push(a))})}finally{}if(void 0!==t)for(let e=0;e<t.length;e++){const{ngModule:n,providers:a}=t[e];bt(a,t=>this.processProvider(t,n,a||ko))}}const o=a.providers;if(null!=o&&!s){const e=t;bt(o,t=>this.processProvider(t,e,o))}return void 0!==r&&void 0!==t.providers}processProvider(t,e,n){let a=Go(t=V(t))?t:V(t&&t.provide);const r=function(t,e,n){let a=qo(t,e,n);return Fo(t)?jo(void 0,t.useValue):jo(a,Ro)}(t,e,n);if(Go(t)||!0!==t.multi){const t=this.records.get(a);t&&void 0!==t.multi&&Br()}else{let e=this.records.get(a);e?void 0===e.multi&&Br():(e=jo(void 0,Ro,!0),e.factory=()=>ot(e.multi),this.records.set(a,e)),a=t,e.multi.push(t)}this.records.set(a,r)}hydrate(t,e){var n;return e.value===Ao?function(t){throw new Error(`Cannot instantiate cyclic dependency! ${t}`)}(j(t)):e.value===Ro&&(e.value=Ao,e.value=e.factory()),"object"==typeof e.value&&e.value&&null!==(n=e.value)&&"object"==typeof n&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value}injectableDefInScope(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||"root"===t.providedIn&&this.isRootInjector:this.injectorDefTypes.has(t.providedIn))}}function Mo(t){const e=D(t);if(null!==e)return e.factory;const n=P(t);if(null!==n)return n.factory;if(t instanceof K)throw new Error(`Token ${j(t)} is missing an ngInjectableDef definition.`);if(t instanceof Function)return function(t){const e=t.length;if(e>0){const n=new Array(e).fill("?");throw new Error(`Can't resolve all parameters for ${j(t)}: (${n.join(", ")}).`)}const n=(a=t)&&a[M]?(console.warn(`DEPRECATED: DI is instantiating a token "${a.name}" that inherits its @Injectable decorator but does not provide one itself.\n`+`This will become an error in v10. Please add @Injectable() to the "${a.name}" class.`),a[M]):null;var a;return null!==n?()=>n.factory(t):()=>new t}(t);throw new Error("unreachable")}function qo(t,e,n){let a=void 0;if(Go(t))return Mo(V(t));if(Fo(t))a=()=>V(t.useValue);else if((r=t)&&r.useExisting)a=()=>rt(V(t.useExisting));else if(function(t){return!(!t||!t.useFactory)}(t))a=()=>t.useFactory(...ot(t.deps||[]));else{const r=V(t&&(t.useClass||t.provide));if(r||function(t,e,n){let a="";throw t&&e&&(a=` - only instances of Provider and Type are allowed, got: [${e.map(t=>t==n?"?"+n+"?":"...").join(", ")}]`),new Error(`Invalid provider for the NgModule '${j(t)}'`+a)}(e,n,t),!function(t){return!!t.deps}(t))return Mo(r);a=()=>new r(...ot(t.deps))}var r;return a}function jo(t,e,n=!1){return{factory:t,value:e,multi:n?[]:void 0}}function Fo(t){return null!==t&&"object"==typeof t&&Q in t}function Go(t){return"function"==typeof t}function Vo(t,e,n){return Do({name:n},e,t,n)}const zo=function(t,e,n){return new Ko(t,e,n)};let Bo=(()=>{class t{static create(t,e){return Array.isArray(t)?zo(t,e,""):zo(t.providers,t.parent,t.name||"")}}return t.THROW_IF_NOT_FOUND=Z,t.NULL=new ut,t.ngInjectableDef=k({token:t,providedIn:"any",factory:()=>rt($)}),t.__NG_ELEMENT_ID__=-1,t})();const Yo=function(t){return t},Ho=[],Uo=Yo,Wo=function(){return Array.prototype.slice.call(arguments)};class Ko{constructor(t,e=Bo.NULL,n=null){this.parent=e,this.source=n;const a=this._records=new Map;a.set(Bo,{token:Bo,fn:Yo,deps:Ho,value:this,useNew:!1}),a.set($,{token:$,fn:Yo,deps:Ho,value:this,useNew:!1}),function t(e,n){if(n)if((n=V(n))instanceof Array)for(let a=0;a<n.length;a++)t(e,n[a]);else{if("function"==typeof n)throw Zo("Function/Class not supported",n);if(!n||"object"!=typeof n||!n.provide)throw Zo("Unexpected provider",n);{let t=V(n.provide);const a=function(t){const e=function(t){let e=Ho;const n=t.deps;if(n&&n.length){e=[];for(let t=0;t<n.length;t++){let a=6,r=V(n[t]);if(r instanceof Array)for(let t=0,e=r;t<e.length;t++){const n=e[t];n instanceof O||n==O?a|=1:n instanceof S||n==S?a&=-3:n instanceof w||n==w?a&=-5:r=n instanceof T?n.token:V(n)}e.push({token:r,options:a})}}else if(t.useExisting)e=[{token:V(t.useExisting),options:6}];else if(!(n||Q in t))throw Zo("'deps' required",t);return e}(t);let n=Yo,a=Ho,r=!1,i=V(t.provide);if(Q in t)a=t.useValue;else if(t.useFactory)n=t.useFactory;else if(t.useExisting);else if(t.useClass)r=!0,n=V(t.useClass);else{if("function"!=typeof i)throw Zo("StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable",t);r=!0,n=i}return{deps:e,fn:n,useNew:r,value:a}}(n);if(!0===n.multi){let a=e.get(t);if(a){if(a.fn!==Wo)throw $o(t)}else e.set(t,a={token:n.provide,deps:[],useNew:!1,fn:Wo,value:Ho});t=n,a.deps.push({token:t,options:6})}const r=e.get(t);if(r&&r.fn==Wo)throw $o(t);e.set(t,a)}}}(a,t)}get(t,e,n=C.Default){const a=this._records.get(t);try{return function t(e,n,a,r,i,s){try{return function(e,n,a,r,i,s){let o;if(!n||s&C.SkipSelf)s&C.Self||(o=r.get(e,i,C.Default));else{if(o=n.value,o==Uo)throw Error("ɵCircular dependency");if(o===Ho){n.value=Uo;let e=void 0,i=n.useNew,s=n.fn,u=n.deps,l=Ho;if(u.length){l=[];for(let e=0;e<u.length;e++){const n=u[e],i=n.options,s=2&i?a.get(n.token):void 0;l.push(t(n.token,s,a,s||4&i?r:Bo.NULL,1&i?null:Bo.THROW_IF_NOT_FOUND,C.Default))}}n.value=o=i?new s(...l):s.apply(e,l)}}return o}(e,n,a,r,i,s)}catch(o){throw o instanceof Error||(o=new Error(o)),(o.ngTempTokenPath=o.ngTempTokenPath||[]).unshift(e),n&&n.value==Uo&&(n.value=Ho),o}}(t,a,this._records,this.parent,e,n)}catch(r){return lt(r,t,"StaticInjectorError",this.source)}}toString(){const t=[];return this._records.forEach((e,n)=>t.push(j(n))),`StaticInjector[${t.join(", ")}]`}}function $o(t){return Zo("Cannot mix multi providers and regular providers",t)}function Zo(t,e){return new Error(dt(t,e,"StaticInjectorError"))}function Jo(t){return t.length>1?" ("+function(t){const e=[];for(let n=0;n<t.length;++n){if(e.indexOf(t[n])>-1)return e.push(t[n]),e;e.push(t[n])}return e}(t.slice().reverse()).map(t=>j(t.token)).join(" -> ")+")":""}function Qo(t,e,n,a){const r=[e],i=n(r),s=a?function(t,e){const n=`${t} caused by: ${e instanceof Error?e.message:e}`,a=Error(n);return a.ngOriginalError=e,a}(i,a):Error(i);return s.addKey=Xo,s.keys=r,s.injectors=[t],s.constructResolvingMessage=n,s.ngOriginalError=a,s}function Xo(t,e){this.injectors.push(t),this.keys.push(e),this.message=this.constructResolvingMessage(this.keys)}function tu(t,e){const n=[];for(let a=0,r=e.length;a<r;a++){const t=e[a];n.push(t&&0!=t.length?t.map(j).join(" "):"?")}return Error("Cannot resolve all parameters for '"+j(t)+"'("+n.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+j(t)+"' is decorated with Injectable.")}class eu{constructor(t,e){if(this.token=t,this.id=e,!t)throw new Error("Token must be defined!");this.displayName=j(this.token)}static get(t){return au.get(V(t))}static get numberOfKeys(){return au.numberOfKeys}}class nu{constructor(){this._allKeys=new Map}get(t){if(t instanceof eu)return t;if(this._allKeys.has(t))return this._allKeys.get(t);const e=new eu(t,eu.numberOfKeys);return this._allKeys.set(t,e),e}get numberOfKeys(){return this._allKeys.size}}const au=new nu;class ru{constructor(t){this.reflectionCapabilities=t}updateCapabilities(t){this.reflectionCapabilities=t}factory(t){return this.reflectionCapabilities.factory(t)}parameters(t){return this.reflectionCapabilities.parameters(t)}annotations(t){return this.reflectionCapabilities.annotations(t)}propMetadata(t){return this.reflectionCapabilities.propMetadata(t)}hasLifecycleHook(t,e){return this.reflectionCapabilities.hasLifecycleHook(t,e)}getter(t){return this.reflectionCapabilities.getter(t)}setter(t){return this.reflectionCapabilities.setter(t)}method(t){return this.reflectionCapabilities.method(t)}importUri(t){return this.reflectionCapabilities.importUri(t)}resourceUri(t){return this.reflectionCapabilities.resourceUri(t)}resolveIdentifier(t,e,n,a){return this.reflectionCapabilities.resolveIdentifier(t,e,n,a)}resolveEnum(t,e){return this.reflectionCapabilities.resolveEnum(t,e)}}const iu=new ru(new uo);class su{constructor(t,e,n){this.key=t,this.optional=e,this.visibility=n}static fromKey(t){return new su(t,!1,null)}}const ou=[];class uu{constructor(t,e,n){this.key=t,this.resolvedFactories=e,this.multiProvider=n,this.resolvedFactory=this.resolvedFactories[0]}}class lu{constructor(t,e){this.factory=t,this.dependencies=e}}function du(t){let e,n;if(t.useClass){const a=V(t.useClass);e=iu.factory(a),n=hu(a)}else t.useExisting?(e=t=>t,n=[su.fromKey(eu.get(t.useExisting))]):t.useFactory?(e=t.useFactory,n=function(t,e){if(e){const n=e.map(t=>[t]);return e.map(e=>gu(t,e,n))}return hu(t)}(t.useFactory,t.deps)):(e=()=>t.useValue,n=ou);return new lu(e,n)}function cu(t){return new uu(eu.get(t.provide),[du(t)],t.multi||!1)}function fu(t){const e=function(t,e){for(let n=0;n<t.length;n++){const a=t[n],r=e.get(a.key.id);if(r){if(a.multiProvider!==r.multiProvider)throw Error(`Cannot mix multi providers and regular providers, got: ${r} ${a}`);if(a.multiProvider)for(let t=0;t<a.resolvedFactories.length;t++)r.resolvedFactories.push(a.resolvedFactories[t]);else e.set(a.key.id,a)}else{let t;t=a.multiProvider?new uu(a.key,a.resolvedFactories.slice(),a.multiProvider):a,e.set(a.key.id,t)}}return e}(function t(e,n){return e.forEach(e=>{if(e instanceof no)n.push({provide:e,useClass:e});else if(e&&"object"==typeof e&&void 0!==e.provide)n.push(e);else{if(!(e instanceof Array))throw Error(`Invalid provider - only instances of Provider and Type are allowed, got: ${e}`);t(e,n)}}),n}(t,[]).map(cu),new Map);return Array.from(e.values())}function hu(t){const e=iu.parameters(t);if(!e)return[];if(e.some(t=>null==t))throw tu(t,e);return e.map(n=>gu(t,n,e))}function gu(t,e,n){let a=null,r=!1;if(!Array.isArray(e))return pu(e instanceof T?e.token:e,r,null);let i=null;for(let s=0;s<e.length;++s){const t=e[s];t instanceof no?a=t:t instanceof T?a=t.token:t instanceof O?r=!0:t instanceof w||t instanceof S?i=t:t instanceof K&&(a=t)}if(a=V(a),null!=a)return pu(a,r,i);throw tu(t,n)}function pu(t,e,n){return new su(eu.get(t),e,n)}const bu=new Object;class mu{static resolve(t){return fu(t)}static resolveAndCreate(t,e){const n=mu.resolve(t);return mu.fromResolvedProviders(n,e)}static fromResolvedProviders(t,e){return new yu(t,e)}}let yu=(()=>{class t{constructor(t,e){this._constructionCounter=0,this._providers=t,this.parent=e||null;const n=t.length;this.keyIds=new Array(n),this.objs=new Array(n);for(let a=0;a<n;a++)this.keyIds[a]=t[a].key.id,this.objs[a]=bu}get(t,e=Z){return this._getByKey(eu.get(t),null,e)}resolveAndCreateChild(t){const e=mu.resolve(t);return this.createChildFromResolved(e)}createChildFromResolved(e){const n=new t(e);return n.parent=this,n}resolveAndInstantiate(t){return this.instantiateResolved(mu.resolve([t])[0])}instantiateResolved(t){return this._instantiateProvider(t)}getProviderAtIndex(t){if(t<0||t>=this._providers.length)throw function(t){return Error(`Index ${t} is out-of-bounds.`)}(t);return this._providers[t]}_new(t){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw Qo(this,t.key,(function(t){return`Cannot instantiate cyclic dependency!${Jo(t)}`}));return this._instantiateProvider(t)}_getMaxNumberOfObjects(){return this.objs.length}_instantiateProvider(t){if(t.multiProvider){const e=new Array(t.resolvedFactories.length);for(let n=0;n<t.resolvedFactories.length;++n)e[n]=this._instantiate(t,t.resolvedFactories[n]);return e}return this._instantiate(t,t.resolvedFactories[0])}_instantiate(t,e){const n=e.factory;let a,r;try{a=e.dependencies.map(t=>this._getByReflectiveDependency(t))}catch(s){throw s.addKey&&s.addKey(this,t.key),s}try{r=n(...a)}catch(s){throw Qo(this,t.key,(function(t){const e=j(t[0].token);return`${i.message}: Error during instantiation of ${e}!${Jo(t)}.`}),i=s)}var i;return r}_getByReflectiveDependency(t){return this._getByKey(t.key,t.visibility,t.optional?null:Z)}_getByKey(e,n,a){return e===t.INJECTOR_KEY?this:n instanceof w?this._getByKeySelf(e,a):this._getByKeyDefault(e,a,n)}_getObjByKeyId(t){for(let e=0;e<this.keyIds.length;e++)if(this.keyIds[e]===t)return this.objs[e]===bu&&(this.objs[e]=this._new(this._providers[e])),this.objs[e];return bu}_throwOrNull(t,e){if(e!==Z)return e;throw function(t,e){return Qo(t,e,(function(t){return`No provider for ${j(t[0].token)}!${Jo(t)}`}))}(this,t)}_getByKeySelf(t,e){const n=this._getObjByKeyId(t.id);return n!==bu?n:this._throwOrNull(t,e)}_getByKeyDefault(e,n,a){let r;for(r=a instanceof S?this.parent:this;r instanceof t;){const t=r,n=t._getObjByKeyId(e.id);if(n!==bu)return n;r=t.parent}return null!==r?r.get(e.token,n):this._throwOrNull(e,n)}get displayName(){return`ReflectiveInjector(providers: [${function(t,e){const n=new Array(t._providers.length);for(let a=0;a<t._providers.length;++a)n[a]=e(t.getProviderAtIndex(a));return n}(this,t=>' "'+t.key.displayName+'" ').join(", ")}])`}toString(){return this.displayName}}return t.INJECTOR_KEY=eu.get(Bo),t})();const vu=new K("AnalyzeForEntryComponents");class xu{}const _u=_("ContentChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!1,descendants:!1},e),xu),Tu=_("ContentChild",(t,e={})=>Object.assign({selector:t,first:!0,isViewQuery:!1,descendants:!0},e),xu),Ou=_("ViewChildren",(t,e={})=>Object.assign({selector:t,first:!1,isViewQuery:!0,descendants:!0},e),xu),wu=_("ViewChild",(t,e)=>Object.assign({selector:t,first:!0,isViewQuery:!0,descendants:!0},e),xu);function Su(t){const e=[],n=new Map;function a(e){let a=n.get(e);if(!a){const r=t(e);n.set(e,a=r.then(Au))}return a}return Iu.forEach((t,n)=>{const r=[];t.templateUrl&&r.push(a(t.templateUrl).then(e=>{t.template=e}));const i=t.styleUrls,s=t.styles||(t.styles=[]),o=t.styles.length;i&&i.forEach((e,n)=>{s.push(""),r.push(a(e).then(a=>{s[o+n]=a,i.splice(i.indexOf(e),1),0==i.length&&(t.styleUrls=void 0)}))});const u=Promise.all(r).then(()=>function(t){Nu.delete(t)}(n));e.push(u)}),Ru(),Promise.all(e).then(()=>{})}let Iu=new Map;const Nu=new Set;function Cu(t){return!!(t.templateUrl&&!t.hasOwnProperty("template")||t.styleUrls&&t.styleUrls.length)}function Ru(){const t=Iu;return Iu=new Map,t}function Au(t){return"string"==typeof t?t:t.text()}function ku(t){const e=Ae(),n=e[1];n.firstTemplatePass&&(function(t,e,n){const a=t.expandoInstructions,r=a.length;r>=2&&a[r-2]===e.hostBindings?a[r-1]=a[r-1]+n:a.push(e.hostBindings,n)}(n,Se,t),function(t,e,n){for(let a=0;a<n;a++)e.push(ci),t.blueprint.push(ci),t.data.push(null)}(n,e,t))}let Eu=null;function Lu(){if(!Eu){const t=U.Symbol;if(t&&t.iterator)Eu=t.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let e=0;e<t.length;++e){const n=t[e];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(Eu=n)}}}return Eu}function Du(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}function Pu(t,e){const n=qu(t),a=qu(e);if(n&&a)return function(t,e,n){const a=t[Lu()](),r=e[Lu()]();for(;;){const t=a.next(),e=r.next();if(t.done&&e.done)return!0;if(t.done||e.done)return!1;if(!n(t.value,e.value))return!1}}(t,e,Pu);{const r=t&&("object"==typeof t||"function"==typeof t),i=e&&("object"==typeof e||"function"==typeof e);return!(n||!r||a||!i)||Du(t,e)}}class Mu{constructor(t){this.wrapped=t}static wrap(t){return new Mu(t)}static unwrap(t){return Mu.isWrapped(t)?t.wrapped:t}static isWrapped(t){return t instanceof Mu}}function qu(t){return!!ju(t)&&(Array.isArray(t)||!(t instanceof Map)&&Lu()in t)}function ju(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function Fu(t,e,n){return t[e]=n}function Gu(t,e){return t[e]}function Vu(t,e,n){return!!yn(t[e],n)&&(t[e]=n,!0)}function zu(t,e,n,a){const r=Vu(t,e,n);return Vu(t,e+1,a)||r}function Bu(t,e,n,a,r){const i=zu(t,e,n,a);return Vu(t,e+2,r)||i}function Yu(t,e,n,a,r,i){const s=zu(t,e,n,a);return zu(t,e+2,r,i)||s}function Hu(t,e,n){const a=un(),r=Uu(Ae(),e);return r!==ci&&Yi(a,t,r,n),Hu}function Uu(t,e){const n=t[7]++;return cs(t),Vu(t,n,e)?e:ci}function Wu(t,e,n,a){const r=un(),i=Ae(),s=Uu(i,e);return s!==ci&&es(r,t,s,i,n,a),Wu}function Ku(t,e){let n=!1;const a=t[1].data;let r=t[7];if(null==a[r]){for(let t=2;t<e.length;t+=2)a[r++]=e[t];r=t[7]}for(let s=1;s<e.length;s+=2)n=Vu(t,r++,e[s])||n;if(t[7]=r,cs(t,e[0],e[e.length-1]),!n)return ci;let i=e[0];for(let s=1;s<e.length;s+=2)i+=vn(e[s])+e[s+1];return i}function $u(t,e,n,a){const r=Vu(t,t[7]++,n);return cs(t,e,a),r?e+vn(n)+a:ci}function Zu(t,e,n,a,r,i){const s=t[7],o=zu(t,s,n,r);return t[7]+=2,cs(t,e,i)&&(t[1].data[s]=a),o?e+vn(n)+a+vn(r)+i:ci}function Ju(t,e,n,a,r,i,s,o){const u=t[7],l=Bu(t,u,n,r,s);if(t[7]+=3,cs(t,e,o)){const e=t[1].data;e[u]=a,e[u+1]=i}return l?e+vn(n)+a+vn(r)+i+vn(s)+o:ci}function Qu(t,e,n,a,r,i,s,o,u,l){const d=t[7],c=Yu(t,d,n,r,s,u);if(t[7]+=4,cs(t,e,l)){const e=t[1].data;e[d]=a,e[d+1]=i,e[d+2]=o}return c?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+l:ci}function Xu(t,e,n,a,r,i,s,o,u,l,d,c){const f=t[7];let h=Yu(t,f,n,r,s,u);if(h=Vu(t,f+4,d)||h,t[7]+=5,cs(t,e,c)){const e=t[1].data;e[f]=a,e[f+1]=i,e[f+2]=o,e[f+3]=l}return h?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+l+vn(d)+c:ci}function tl(t,e,n,a,r,i,s,o,u,l,d,c,f,h){const g=t[7];let p=Yu(t,g,n,r,s,u);if(p=zu(t,g+4,d,f)||p,t[7]+=6,cs(t,e,h)){const e=t[1].data;e[g]=a,e[g+1]=i,e[g+2]=o,e[g+3]=l,e[g+4]=c}return p?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+l+vn(d)+c+vn(f)+h:ci}function el(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p){const b=t[7];let m=Yu(t,b,n,r,s,u);if(m=Bu(t,b+4,d,f,g)||m,t[7]+=7,cs(t,e,p)){const e=t[1].data;e[b]=a,e[b+1]=i,e[b+2]=o,e[b+3]=l,e[b+4]=c,e[b+5]=h}return m?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+l+vn(d)+c+vn(f)+h+vn(g)+p:ci}function nl(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m){const y=t[7];let v=Yu(t,y,n,r,s,u);if(v=Yu(t,y+4,d,f,g,b)||v,t[7]+=8,cs(t,e,m)){const e=t[1].data;e[y]=a,e[y+1]=i,e[y+2]=o,e[y+3]=l,e[y+4]=c,e[y+5]=h,e[y+6]=p}return v?e+vn(n)+a+vn(r)+i+vn(s)+o+vn(u)+l+vn(d)+c+vn(f)+h+vn(g)+p+vn(b)+m:ci}function al(t,e,n,a,r,i){const s=un(),o=Ae(),u=$u(o,e,n,a);return u!==ci&&es(s,t,u,o,r,i),al}function rl(t,e,n,a,r,i,s,o){const u=un(),l=Ae(),d=Zu(l,e,n,a,r,i);return d!==ci&&es(u,t,d,l,s,o),rl}function il(t,e,n,a,r,i,s,o,u,l){const d=un(),c=Ae(),f=Ju(c,e,n,a,r,i,s,o);return f!==ci&&es(d,t,f,c,u,l),il}function sl(t,e,n,a,r,i,s,o,u,l,d,c){const f=un(),h=Ae(),g=Qu(h,e,n,a,r,i,s,o,u,l);return g!==ci&&es(f,t,g,h,d,c),sl}function ol(t,e,n,a,r,i,s,o,u,l,d,c,f,h){const g=un(),p=Ae(),b=Xu(p,e,n,a,r,i,s,o,u,l,d,c);return b!==ci&&es(g,t,b,p,f,h),ol}function ul(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p){const b=un(),m=Ae(),y=tl(m,e,n,a,r,i,s,o,u,l,d,c,f,h);return y!==ci&&es(b,t,y,m,g,p),ul}function ll(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m){const y=un(),v=Ae(),x=el(v,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p);return x!==ci&&es(y,t,x,v,b,m),ll}function dl(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m,y,v){const x=un(),_=Ae(),T=nl(_,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m);return T!==ci&&es(x,t,T,_,y,v),dl}function cl(t,e,n,a){const r=un(),i=Ae(),s=Ku(i,e);return s!==ci&&es(r,t,s,i,n,a),cl}function fl(t){os(Mr(t),t)}function hl(t){!function(t,e){const n=0===t.flags;if(t.flags|=1,n&&t.clean==Si){let e;t.clean=new Promise(t=>e=t),t.scheduler(()=>{if(1&t.flags&&(t.flags&=-2,ss(t)),2&t.flags){t.flags&=-3;const e=t.playerHandler;e&&e.flushPlayers()}t.clean=Si,e(null)})}}(is(Mr(t))[9])}function gl(t){const e=Ae(),n=yl(e,t,null,null);e[1].firstTemplatePass&&(n.tViews=[]),He()}function pl(t,e,n,a,r,i,s,o){const u=Ae(),l=u[1],d=yl(u,t,r||null,i||null);if(l.firstTemplatePass){Hi(l,u,d,s||null);const t=d.tViews=Fi(-1,e,n,a,l.directiveRegistry,l.pipeRegistry,null,null);null!==l.queries&&(l.queries.template(l,d),t.queries=l.queries.embeddedTView(d))}qi(l,u,d,o),qr(be(d,u),u),re(l,d),He()}function bl(t){const e=Ae(),n=e[1];ze(ve(n.data,t),!0),e[t+19][2]=0,ie(e,n,$e(),void 0)}function ml(){let t=Ve();Ye()?He():(t=t.parent,ze(t,!1));const e=Ae()[t.index],n=e[2];for(;n<e.length-9;)Rs(e,n)}function yl(t,e,n,a){const r=e+19,i=t[r]=t[12].createComment(""),s=Ai(t[1],t[6],e,0,n,a),o=t[r]=ns(i,t,i,s);return Ms(i,s,t),rs(t,o),s}function vl(t,e){const n=Ae(),a=n[1],r=t+19;r>=a.data.length&&(a.data[r]=null,a.blueprint[r]=null),n[r]=e}function xl(t){return ve(We,t)}function _l(t){return ve(Ae(),t)}function Tl(t,e=C.Default){t=V(t);const n=Ae();return null==n?rt(t,e):_a(Ve(),n,t,e)}function Ol(t){return xa(Ve(),t)}function wl(){var t,e;Ae()[1].firstTemplatePass&&(t=Ve(),e=jl(),Nn(Gl(t),e),Nn(Fl(t),e))}function Sl(t){bn(t)}function Il(t,e,n){Nl(un(),t,e,n)}function Nl(t,e,n,a){Rl(t,Ae()[7]++,e,function(t,e){if(t===ci)return t;let n=null;return null!==t&&(n=e?vn(t)+e:t),n}(n,a),!1,zl())}function Cl(t,e){const n=Ae()[7]++;Rl(un(),n,t,e,!0,zl())}function Rl(t,e,n,a,r,i){const s=Ae(),o=ye(t,s),u=be(o,s);let l=!1;if(a!==ci)if(r)l=Qr(Gl(o),s,u,n,e,a,i,!1);else{const t=mn();l=Xr(Fl(o),s,u,n,e,a,t,i,!1)}return l}function Al(t){const e=un(),n=Ae(),a=ye(e,n),r=Fl(a),i=jl(),s=n[7]++;!i&&$n(a)&&t!==ci&&(Dl(r,n,a,s,t,!1),t=ci),Ll(e,r,s,t,!1,zl())}function kl(t){El(un(),t)}function El(t,e){const n=Ae(),a=ye(t,n),r=Gl(a),i=jl(),s=n[7]++;!i&&Kn(a)&&e!==ci&&(Dl(r,n,a,s,e,!0),e=ci),Ll(t,r,s,e,!0,zl())}function Ll(t,e,n,a,r,i){pi();const s=Ae();let o=!1;if(a!==ci){const u=be(ye(t,s),s),l=s[n];o=Vn(l,a);const d=function(t,e,n){const a=Array.isArray(t)?t:[null];a[0]=e||null;for(let o=1;o<a.length;o+=2)Jn(a,o,null);let r,i=null,s=!1;if("string"==typeof e?e.length&&(i=e.split(/\s+/),s=!0):(i=e?Object.keys(e):null,r=e),i)for(let o=0;o<i.length;o++){const t=i[o];vi(a,n?Yn(t):t,!!s||r[t],!0)}return a}(l,a,!r);r?Qr(e,s,u,null,n,d,i,o):Xr(e,s,u,null,n,d,mn(),i,o)}return o}function Dl(t,e,n,a,r,i){e[a]!==r&&((r||jn(t))&&ys(e,n.inputs[i?"class":"style"],function(t,e,n){let a=e;var r;return t.length>0&&(a=n?Bn(t,((r=e)&&"string"!=typeof r&&(r=Object.keys(r).join(" ")),r||"")):Bn(t,function(t){let e="";if(t){const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];e=Bn(e,`${r}:${t[r]}`,";")}}return e}(e),";")),a}(Wn(t),r,i)),e[a]=r)}function Pl(){const t=un(),e=Ae(),n=ye(t,e),a=function(t,e){return 3===t.type?e[12]:null}(n,e),r=be(n,e),i=jl(),s=mn();(function(t,e,n,a,r,i,s){const o=n?Fn(n):!!a&&Fn(a),u=qn(n,i),l=qn(a,i);Jr.length&&(u||l)&&ei();const d=fe(r,o),c=ii(t,r,e,n,u,d.classesBitMask,li,null),f=ii(t,r,e,a,l,d.stylesBitMask,ui,s);c&&f?(he(),o&&function(t){le.delete(t)}(r)):o&&function(t,e){le.set(t,e)}(r,d)})(a,e,Gl(n),Fl(n),r,i,s),bn(null)}function Ml(t,e,n){let a=!1,r=Hn(t.styles),i=Hn(t.classes),s=-1;for(let o=n;o<e.length;o++){const t=e[o];"number"==typeof t?s=t:1==s?(i=i||[""],vi(i,t,!0),a=!0):2==s&&(r=r||[""],vi(r,t,e[++o]),a=!0)}return i&&i.length>1&&(t.classes||(t.classes=i),ql(t.classes,xi(i,!0))),r&&r.length>1&&(t.styles||(t.styles=r),ql(t.styles,xi(r,!1))),a}function ql(t,e){Hn(t)[0]=e}function jl(){return De+Pe}function Fl(t){return Vl(t,!1)}function Gl(t){return Vl(t,!0)}function Vl(t,e){let n=e?t.classes:t.styles;return Un(n)||(n=[n||[""],0,0,1,0,"--MAP--"],e?t.classes=n:t.styles=n),n}function zl(){return Me>0}function Bl(t,e,n,a){const r=Ae(),i=r[1],s=r[t+19]=Ci(e),o=r[12],u=Ai(i,r[6],t,3,e,n||null);if(null!=n){const t=na(s,n);i.firstTemplatePass&&Ml(u,n,t)}if(xs(o,s,u),Ms(s,u,r),0===de&&qr(s,r),de++,i.firstTemplatePass){Hi(i,r,u,a||null);const t=hs(u);t&&t.hasOwnProperty("class")&&(u.flags|=8),t&&t.hasOwnProperty("style")&&(u.flags|=16),null!==i.queries&&i.queries.elementStart(i,u)}qi(i,r,u),Mi(i,u,r)}function Yl(){let t=Ve();Ye()?He():(t=t.parent,ze(t,!1));const e=t,n=Ae(),a=n[1];re(a,t),de--,a.firstTemplatePass&&null!==a.queries&&Qt(t)&&a.queries.elementEnd(t),Kn(e)&&e.classes&&Wl(e.classes,n,e.inputs.class),$n(e)&&e.styles&&Wl(e.styles,n,e.inputs.style)}function Hl(t,e,n,a){Bl(t,e,n,a),Yl()}function Ul(t){const e=un(),n=Ae(),a=n[1],r=ye(e,n);if(3===r.type){const e=be(r,n),i=na(e,t);a.firstTemplatePass&&Ml(r,t,i)&&xs(n[12],e,r)}}function Wl(t,e,n){ys(e,n,Wn(t)||null)}function Kl(t,e,n){const a=Ae(),r=a[1],i=a[t+19]=a[12].createComment(""),s=Ai(r,a[6],t,4,"ng-container",e||null);e&&r.firstTemplatePass&&Ml(s,e,0),Ms(i,s,a),r.firstTemplatePass&&(Hi(r,a,s,n||null),r.queries&&r.queries.elementStart(r,s)),qi(r,a,s),qr(i,a),Mi(r,s,a)}function $l(){let t=Ve();const e=Ae()[1];Ye()?He():(t=t.parent,ze(t,!1)),re(e,t),e.firstTemplatePass&&null!==e.queries&&Qt(t)&&e.queries.elementEnd(t)}function Zl(t,e,n){Kl(t,e,n),$l()}function Jl(t,e,n){const a=Ae(),r=Ve(),i=2===r.type?r.parent:r,s=a[i.index];let o=function(t,e,n){for(let a=e+9;a<t.length;a++){const e=t[a][1].id;if(e===n)return t[a];if(!(e<n))break;Rs(t,a-9)}return null}(s,s[2],t);if(o)Ee=!0,an(o,o[1].node);else{o=Ri(a,function(t,e,n,a){const r=Ae()[1],i=a.tViews;return(t>=i.length||null==i[t])&&(i[t]=Fi(t,null,e,n,r.directiveRegistry,r.pipeRegistry,null,null)),i[t]}(t,e,n,i),null,16,null,null);const s=Ye()?r:r&&r.parent;ki(o[1],s,t,o),an(o,o[1].node)}return s&&(Ue(o)&&Is(o,s,s[2]),s[2]++),Ue(o)?3:2}function Ql(){const t=Ae(),e=t[6];Ue(t)&&(Ii(t),t[2]&=-5),Oe(t),Ii(t),sn(t[3][3],!0),ze(e,!1)}function Xl(){return Ae()}function td(t){return!!t&&"function"==typeof t.then}function ed(t){return!!t&&"function"==typeof t.subscribe}function nd(t,e,n=!1,a){rd(t,e,n,a)}function ad(t,e,n=!1,a){rd(t,e,n,a,bs)}function rd(t,e,n=!1,a,r){const i=Ae(),s=Ve(),o=i[1],u=o.firstTemplatePass&&(o.cleanup||(o.cleanup=[]));let l=!0;if(3===s.type){const o=be(s,i),d=a?a(o):St,c=d.target||o,f=r?r(s,i):i[12],h=gs(i),g=h.length,p=a?t=>a(ge(t[s.index])).target:s.index;if(ta(f)){let n=null;if(!a&&function(t){return t.directiveEnd>t.directiveStart}(s)&&(n=function(t,e,n){const a=t[1].cleanup;if(null!=a)for(let r=0;r<a.length-1;r+=2){const i=a[r];if(i===e&&a[r+1]===n){const e=t[8],n=a[r+2];return e.length>n?e[n]:null}"string"==typeof i&&(r+=2)}return null}(i,t,s.index)),null!==n)e.__ngNextListenerFn__=n.__ngNextListenerFn__,n.__ngNextListenerFn__=e,l=!1;else{e=sd(s,i,e,!1);const n=f.listen(d.name||c,t,e);h.push(e,n),u&&u.push(t,p,g,g+1)}}else e=sd(s,i,e,!0),c.addEventListener(t,e,n),h.push(e),u&&u.push(t,p,g,n)}void 0===s.outputs&&(s.outputs=zi(s,1));const d=s.outputs;let c;if(l&&d&&(c=d[t])){const n=c.length;if(n){const a=gs(i);for(let r=0;r<n;r+=3){const n=i[c[r]][c[r+2]].subscribe(e),o=a.length;a.push(e,n),u&&u.push(t,s.index,o,-(o+1))}}}}function id(t,e,n){try{return!1!==e(n)}catch(a){return ms(t,a),!1}}function sd(t,e,n,a){return function r(i){const s=1&t.flags?xe(t.index,e):e;0==(32&e[2])&&is(s);let o=id(e,n,i),u=r.__ngNextListenerFn__;for(;u;)o=id(e,u,i)&&o,u=u.__ngNextListenerFn__;return a&&!1===o&&(i.preventDefault(),i.returnValue=!1),o}}function od(t=1){return rn(t)}function ud(t,e){let n=null;const a=function(t){const e=t.attrs;if(null!=e){const t=e.indexOf(5);if(0==(1&t))return e[t+1]}return null}(t);for(let r=0;r<e.length;r++){const i=e[r];if("*"!==i){if(null===a?$r(t,i,!0):Zr(a,i))return r}else n=r}return n}function ld(t){const e=da(Ae())[6];if(!e.projection){const n=e.projection=new Array(t?t.length:1).fill(null),a=n.slice();let r=e.child;for(;null!==r;){const e=t?ud(r,t):0;null!==e&&(a[e]?a[e].projectionNext=r:n[e]=r,a[e]=r),r=r.next}}}let dd=!1;function cd(t){dd=t}function fd(t,e=0,n){const a=Ae(),r=Ai(a[1],a[6],t,1,null,n||null);null===r.projection&&(r.projection=e),He(),dd||Fs(a,r,e,da(a))}function hd(t,e,n){return gd(t,"",e,"",n),hd}function gd(t,e,n,a,r){const i=un(),s=$u(Ae(),e,n,a);return s!==ci&&Yi(i,t,s,r),gd}function pd(t,e,n,a,r,i,s){const o=un(),u=Zu(Ae(),e,n,a,r,i);return u!==ci&&Yi(o,t,u,s),pd}function bd(t,e,n,a,r,i,s,o,u){const l=un(),d=Ju(Ae(),e,n,a,r,i,s,o);return d!==ci&&Yi(l,t,d,u),bd}function md(t,e,n,a,r,i,s,o,u,l,d){const c=un(),f=Qu(Ae(),e,n,a,r,i,s,o,u,l);return f!==ci&&Yi(c,t,f,d),md}function yd(t,e,n,a,r,i,s,o,u,l,d,c,f){const h=un(),g=Xu(Ae(),e,n,a,r,i,s,o,u,l,d,c);return g!==ci&&Yi(h,t,g,f),yd}function vd(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g){const p=un(),b=tl(Ae(),e,n,a,r,i,s,o,u,l,d,c,f,h);return b!==ci&&Yi(p,t,b,g),vd}function xd(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b){const m=un(),y=el(Ae(),e,n,a,r,i,s,o,u,l,d,c,f,h,g,p);return y!==ci&&Yi(m,t,y,b),xd}function _d(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m,y){const v=un(),x=nl(Ae(),e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m);return x!==ci&&Yi(v,t,x,y),_d}function Td(t,e,n){const a=un(),r=Ku(Ae(),e);return r!==ci&&Yi(a,t,r,n),Td}function Od(t,e){const n=Ae(),a=n[t+19]=ws(e,n[12]),r=Ai(n[1],n[6],t,3,null,null);He(),Ms(a,r,n)}function wd(t){const e=Ae(),n=un(),a=Uu(e,t);a!==ci&&vs(e,n,vn(a))}function Sd(t){return Id("",t,""),Sd}function Id(t,e,n){const a=un(),r=Ae(),i=$u(r,t,e,n);return i!==ci&&vs(r,a,i),Id}function Nd(t,e,n,a,r){const i=un(),s=Ae(),o=Zu(s,t,e,n,a,r);return o!==ci&&vs(s,i,o),Nd}function Cd(t,e,n,a,r,i,s){const o=un(),u=Ae(),l=Ju(u,t,e,n,a,r,i,s);return l!==ci&&vs(u,o,l),Cd}function Rd(t,e,n,a,r,i,s,o,u){const l=un(),d=Ae(),c=Qu(d,t,e,n,a,r,i,s,o,u);return c!==ci&&vs(d,l,c),Rd}function Ad(t,e,n,a,r,i,s,o,u,l,d){const c=un(),f=Ae(),h=Xu(f,t,e,n,a,r,i,s,o,u,l,d);return h!==ci&&vs(f,c,h),Ad}function kd(t,e,n,a,r,i,s,o,u,l,d,c,f){const h=un(),g=Ae(),p=tl(g,t,e,n,a,r,i,s,o,u,l,d,c,f);return p!==ci&&vs(g,h,p),kd}function Ed(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g){const p=un(),b=Ae(),m=el(b,t,e,n,a,r,i,s,o,u,l,d,c,f,h,g);return m!==ci&&vs(b,p,m),Ed}function Ld(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b){const m=un(),y=Ae(),v=nl(y,t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b);return v!==ci&&vs(y,m,v),Ld}function Dd(t){const e=un(),n=Ae(),a=Ku(n,t);return a!==ci&&vs(n,e,a),Dd}function Pd(t,e,n){const a=$u(Ae(),t,e,n);El(un(),a)}function Md(t,e,n,a,r){const i=Zu(Ae(),t,e,n,a,r);El(un(),i)}function qd(t,e,n,a,r,i,s){const o=Ju(Ae(),t,e,n,a,r,i,s);El(un(),o)}function jd(t,e,n,a,r,i,s,o,u){const l=Qu(Ae(),t,e,n,a,r,i,s,o,u);El(un(),l)}function Fd(t,e,n,a,r,i,s,o,u,l,d){const c=Xu(Ae(),t,e,n,a,r,i,s,o,u,l,d);El(un(),c)}function Gd(t,e,n,a,r,i,s,o,u,l,d,c,f){const h=tl(Ae(),t,e,n,a,r,i,s,o,u,l,d,c,f);El(un(),h)}function Vd(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g){const p=el(Ae(),t,e,n,a,r,i,s,o,u,l,d,c,f,h,g);El(un(),p)}function zd(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b){const m=nl(Ae(),t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b);El(un(),m)}function Bd(t){const e=Ku(Ae(),t);El(un(),e)}function Yd(t,e,n,a,r){const i=$u(Ae(),e,n,a);return Nl(un(),t,i,r),Yd}function Hd(t,e,n,a,r,i,s){const o=Zu(Ae(),e,n,a,r,i);return Nl(un(),t,o,s),Hd}function Ud(t,e,n,a,r,i,s,o,u){const l=Ju(Ae(),e,n,a,r,i,s,o);return Nl(un(),t,l,u),Ud}function Wd(t,e,n,a,r,i,s,o,u,l,d){const c=Qu(Ae(),e,n,a,r,i,s,o,u,l);return Nl(un(),t,c,d),Wd}function Kd(t,e,n,a,r,i,s,o,u,l,d,c,f){const h=Xu(Ae(),e,n,a,r,i,s,o,u,l,d,c);return Nl(un(),t,h,f),Kd}function $d(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g){const p=tl(Ae(),e,n,a,r,i,s,o,u,l,d,c,f,h);return Nl(un(),t,p,g),$d}function Zd(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b){const m=el(Ae(),e,n,a,r,i,s,o,u,l,d,c,f,h,g,p);return Nl(un(),t,m,b),Zd}function Jd(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m,y){const v=nl(Ae(),e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m);return Nl(un(),t,v,y),Jd}function Qd(t,e,n){const a=Ku(Ae(),e);return Nl(un(),t,a,n),Qd}function Xd(t,e,n){const a=un(),r=Uu(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0),Xd}function tc(t,e,n){const a=un(),r=Uu(Ae(),e);return r!==ci&&Yi(a,t,r,n,!0,bs),tc}function ec(t){const e=lc(t);return void 0===e.component&&(e.component=function(t,e){const n=e[1].data[t];return 1&n.flags?e[n.directiveStart]:null}(e.nodeIndex,e.lView)),e.component}function nc(t){return lc(t).lView[9]}function ac(t){let e,n=oc(t).lView;for(;null===n[0]&&(e=la(n));)n=e;return 512&n[2]?null:n[9]}function rc(t){return[...ca(t).components]}function ic(t){const e=oc(t);return new Ca(e.lView[1].data[e.nodeIndex],e.lView)}function sc(t){const e=oc(t);return void 0===e.directives&&(e.directives=Vr(e.nodeIndex,e.lView,!1)),e.directives||[]}function oc(t,e=!0){const n=Dr(t);if(!n&&e)throw new Error("Invalid ng target");return n}function uc(t){return Dr(t).native}function lc(t){if(!(t instanceof Node))throw new Error("Expecting instance of DOM Node");return oc(t)}function dc(t){return"boolean"==typeof t.useCapture}function cc(t){const e=lc(t).lView,n=e[8],a=e[1].cleanup,r=[];if(a&&n)for(let i=0;i<a.length;){const s=a[i++],o=a[i++];if("string"==typeof s){const u=s,l=ge(e[o]),d=n[a[i++]],c=a[i++],f="boolean"==typeof c?c:!(c>=0)&&null;t==l&&r.push({element:t,name:u,callback:d,useCapture:f})}}return r.sort(fc),r}function fc(t,e){return t.name==e.name?0:t.name<e.name?-1:1}let hc=!1;function gc(){hc||(hc=!0,pc("getComponent",ec),pc("getContext",nc),pc("getListeners",cc),pc("getViewComponent",ac),pc("getHostElement",uc),pc("getInjector",ic),pc("getRootComponents",rc),pc("getDirectives",sc),pc("markDirty",hl))}function pc(t,e){if(U){let n=U.ng;n||(n=U.ng={}),n[t]=e}}function bc(t,e={}){qe(null);const n=e.rendererFactory||ea,a=e.sanitizer||null,r=Ht(t);r.type!=t&&(r.type=t);const i=Gi(n,e.host||r.selectors[0][0]),s=r.onPush?576:528,o=vc(e.scheduler,e.playerHandler),u=n.createRenderer(i,r),l=Ri(null,Fi(-1,null,1,0,null,null,null,null),o,s,null,null,n,u,void 0,e.injector||null),d=an(l,null);let c,f=!1;try{n.begin&&n.begin();const t=mc(i,r,l,n,u,a);c=yc(t,r,l,o,e.hostFeatures||null),rs(l,t),Ii(l),l[2]&=-5,Oe(l),Ii(l),f=!0}finally{sn(d,f),n.end&&n.end()}return c}function mc(t,e,n,a,r,i){Ee=!1,ke=null,de=0,we=!0,bn(null),he(),le.clear();const s=n[1];n[19]=t;const o=Ai(s,null,0,3,null,null),u=Ri(n,ji(e),null,e.onPush?64:16,n[19],o,a,r,i);return s.firstTemplatePass&&(va(pa(o,n),s,e.type),o.flags=1,Qi(o,n.length,1),Zi(o)),n[19]=u}function yc(t,e,n,a,r){const i=n[1],s=function(t,e,n){const a=Ve();t.firstTemplatePass&&(n.providersResolver&&n.providersResolver(n),Wi(t,a,1),Xi(t,e,n,n.factory));const r=Sa(t.data,e,e.length-1,a);return $i(e,a,r),r}(i,n,e);a.components.push(s),t[9]=s,r&&r.forEach(t=>t(s,e)),e.contentQueries&&e.contentQueries(1,s,n.length-1);const o=Ve();return i.firstTemplatePass&&e.hostBindings&&(qe(o.index-19),Ui(e,i.expandoInstructions,s,o,i.firstTemplatePass),qe(null)),s}function vc(t,e){return{components:[],scheduler:t||_n,clean:fs,playerHandler:e||null,flags:0}}function xc(t,e){const n=Te(t)[1],a=n.data.length-1;ae(a,e,n,-1,-1,-1),re(n,{directiveStart:a,directiveEnd:a+1})}function _c(t){return ca(t).clean}class Tc{constructor(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}isFirstChange(){return this.firstChange}}function Oc(){return wc.ngInherit=!0,wc}function wc(t){t.type.prototype.ngOnChanges&&(t.setInput=Sc,t.onChanges=function(){const t=Ic(this),e=t&&t.current;if(e){const n=t.previous;if(n===St)t.previous=e;else for(let t in e)n[t]=e[t];t.current=null,this.ngOnChanges(e)}})}function Sc(t,e,n,a){const r=Ic(t)||function(t,e){return t.__ngSimpleChanges__=e}(t,{previous:St,current:null}),i=r.current||(r.current={}),s=r.previous,o=this.declaredInputs[n],u=s[o];i[o]=new Tc(u&&u.currentValue,e,s===St),t[a]=e}function Ic(t){return t.__ngSimpleChanges__||null}function Nc(t){let e=Object.getPrototypeOf(t.type.prototype).constructor;for(;e;){let n=void 0;if(te(t))n=e.ngComponentDef||e.ngDirectiveDef;else{if(e.ngComponentDef)throw new Error("Directives cannot inherit Components");n=e.ngDirectiveDef}const a=e.ngBaseDef;if(a||n){const e=t;e.inputs=Cc(t.inputs),e.declaredInputs=Cc(t.declaredInputs),e.outputs=Cc(t.outputs)}if(a){const e=a.viewQuery,n=a.contentQueries,r=a.hostBindings;r&&kc(t,r),e&&Rc(t,e),n&&Ac(t,n),A(t.inputs,a.inputs),A(t.declaredInputs,a.declaredInputs),A(t.outputs,a.outputs)}if(n){const e=n.hostBindings;e&&kc(t,e);const a=n.viewQuery,r=n.contentQueries;a&&Rc(t,a),r&&Ac(t,r),A(t.inputs,n.inputs),A(t.declaredInputs,n.declaredInputs),A(t.outputs,n.outputs),t.afterContentChecked=t.afterContentChecked||n.afterContentChecked,t.afterContentInit=t.afterContentInit||n.afterContentInit,t.afterViewChecked=t.afterViewChecked||n.afterViewChecked,t.afterViewInit=t.afterViewInit||n.afterViewInit,t.doCheck=t.doCheck||n.doCheck,t.onDestroy=t.onDestroy||n.onDestroy,t.onInit=t.onInit||n.onInit;const i=n.features;if(i)for(const n of i)n&&n.ngInherit&&n(t)}else{const n=e.prototype;n&&(t.afterContentChecked=t.afterContentChecked||n.ngAfterContentChecked,t.afterContentInit=t.afterContentInit||n.ngAfterContentInit,t.afterViewChecked=t.afterViewChecked||n.ngAfterViewChecked,t.afterViewInit=t.afterViewInit||n.ngAfterViewInit,t.doCheck=t.doCheck||n.ngDoCheck,t.onDestroy=t.onDestroy||n.ngOnDestroy,t.onInit=t.onInit||n.ngOnInit,n.ngOnChanges&&Oc()(t))}e=Object.getPrototypeOf(e)}}function Cc(t){return t===St?{}:t===It?[]:t}function Rc(t,e){const n=t.viewQuery;t.viewQuery=n?(t,a)=>{e(t,a),n(t,a)}:e}function Ac(t,e){const n=t.contentQueries;t.contentQueries=n?(t,a,r)=>{e(t,a,r),n(t,a,r)}:e}function kc(t,e){const n=t.hostBindings;e!==n&&(t.hostBindings=n?(t,a,r)=>{Fe(1);try{e(t,a,r)}finally{Fe(-1)}n(t,a,r)}:e)}function Ec(t,e,n,a,r){if(t=V(t),Array.isArray(t))for(let i=0;i<t.length;i++)Ec(t[i],e,n,a,r);else{const i=Ae(),s=i[1];let o=Go(t)?t:V(t.provide),u=qo(t);const l=Ve(),d=65535&l.providerIndexes,c=l.directiveStart,f=l.providerIndexes>>16;if(t.useClass||Go(t)){const n=(t.useClass||t).prototype.ngOnDestroy;n&&(s.destroyHooks||(s.destroyHooks=[])).push(e.length,n)}if(Go(t)||!t.multi){const t=new ne(u,r,Tl),a=Dc(o,e,r?d:d+f,c);-1==a?(va(pa(l,i),s,o),e.push(o),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(t),i.push(t)):(n[a]=t,i[a]=t)}else{const t=Dc(o,e,d+f,c),h=Dc(o,e,d,d+f),g=t>=0&&n[t],p=h>=0&&n[h];if(r&&!p||!r&&!g){va(pa(l,i),s,o);const t=function(t,e,n,a,r){const i=new ne(t,n,Tl);return i.multi=[],i.index=e,i.componentProviders=0,Lc(i,r,a&&!n),i}(r?Mc:Pc,n.length,r,a,u);!r&&p&&(n[h].providerFactory=t),e.push(o),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(t),i.push(t)}else Lc(n[r?h:t],u,!r&&a);!r&&a&&p&&n[h].componentProviders++}}}function Lc(t,e,n){t.multi.push(e),n&&t.componentProviders++}function Dc(t,e,n,a){for(let r=n;r<a;r++)if(e[r]===t)return r;return-1}function Pc(t,e,n,a){return qc(this.multi,[])}function Mc(t,e,n,a){const r=this.multi;let i;if(this.providerFactory){const t=this.providerFactory.componentProviders,s=Sa(e,n,this.providerFactory.index,a);i=s.slice(0,t),qc(r,i);for(let e=t;e<s.length;e++)i.push(s[e])}else i=[],qc(r,i);return i}function qc(t,e){for(let n=0;n<t.length;n++)e.push((0,t[n])());return e}function jc(t,e=[]){return n=>{n.providersResolver=(n,a)=>function(t,e,n){const a=Ae()[1];if(a.firstTemplatePass){const r=te(t);Ec(n,a.data,a.blueprint,r,!0),Ec(e,a.data,a.blueprint,r,!1)}}(n,a?a(t):t,e)}}class Fc{}class Gc{}function Vc(t){const e=Error(`No component factory found for ${j(t)}. Did you add it to @NgModule.entryComponents?`);return e[zc]=t,e}const zc="ngComponent";class Bc{resolveComponentFactory(t){throw Vc(t)}}let Yc=(()=>{class t{}return t.NULL=new Bc,t})();class Hc{constructor(t,e,n){this._parent=e,this._ngModule=n,this._factories=new Map;for(let a=0;a<t.length;a++){const e=t[a];this._factories.set(e.componentType,e)}}resolveComponentFactory(t){let e=this._factories.get(t);if(!e&&this._parent&&(e=this._parent.resolveComponentFactory(t)),!e)throw Vc(t);return new Uc(e,this._ngModule)}}class Uc extends Gc{constructor(t,e){super(),this.factory=t,this.ngModule=e,this.selector=t.selector,this.componentType=t.componentType,this.ngContentSelectors=t.ngContentSelectors,this.inputs=t.inputs,this.outputs=t.outputs}create(t,e,n,a){return this.factory.create(t,e,n,a||this.ngModule)}}function Wc(...t){}let Kc=(()=>{class t{constructor(t){this.nativeElement=t}}return t.__NG_ELEMENT_ID__=()=>Zc(t),t})();const $c=function(t){return $s(t,Ve(),Ae())},Zc=Wc;class Jc{constructor(t,e,n,a,r,i){this.id=t,this.templateUrl=e,this.slotCount=n,this.encapsulation=a,this.styles=r,this.animations=i}}class Qc{}class Xc{}class tf{}class ef{}const nf=function(){var t={Important:1,DashCase:2};return t[t.Important]="Important",t[t.DashCase]="DashCase",t}();let af=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>sf(),t})();const rf=function(){const t=Ae(),e=xe(Ve().index,t);return function(t){const e=t[12];if(ta(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}(Zt(e)?e:t)},sf=Wc;class of{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const uf=new of("8.2.14");class lf{constructor(){}supports(t){return qu(t)}create(t){return new cf(t)}}const df=(t,e)=>e;class cf{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||df}forEachItem(t){let e;for(e=this._itHead;null!==e;e=e._next)t(e)}forEachOperation(t){let e=this._itHead,n=this._removalsHead,a=0,r=null;for(;e||n;){const i=!n||e&&e.currentIndex<pf(n,a,r)?e:n,s=pf(i,a,r),o=i.currentIndex;if(i===n)a--,n=n._nextRemoved;else if(e=e._next,null==i.previousIndex)a++;else{r||(r=[]);const t=s-a,e=o-a;if(t!=e){for(let n=0;n<t;n++){const a=n<r.length?r[n]:r[n]=0,i=a+n;e<=i&&i<t&&(r[n]=a+1)}r[i.previousIndex]=e-t}}s!==o&&t(i,s,o)}}forEachPreviousItem(t){let e;for(e=this._previousItHead;null!==e;e=e._nextPrevious)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachMovedItem(t){let e;for(e=this._movesHead;null!==e;e=e._nextMoved)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}forEachIdentityChange(t){let e;for(e=this._identityChangesHead;null!==e;e=e._nextIdentityChange)t(e)}diff(t){if(null==t&&(t=[]),!qu(t))throw new Error(`Error trying to diff '${j(t)}'. Only arrays and iterables are allowed`);return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e,n,a,r=this._itHead,i=!1;if(Array.isArray(t)){this.length=t.length;for(let e=0;e<this.length;e++)n=t[e],a=this._trackByFn(e,n),null!==r&&Du(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,n,a,e)),Du(r.item,n)||this._addIdentityChange(r,n)):(r=this._mismatch(r,n,a,e),i=!0),r=r._next}else e=0,function(t,e){if(Array.isArray(t))for(let n=0;n<t.length;n++)e(t[n]);else{const n=t[Lu()]();let a;for(;!(a=n.next()).done;)e(a.value)}}(t,t=>{a=this._trackByFn(e,t),null!==r&&Du(r.trackById,a)?(i&&(r=this._verifyReinsertion(r,t,a,e)),Du(r.item,t)||this._addIdentityChange(r,t)):(r=this._mismatch(r,t,a,e),i=!0),r=r._next,e++}),this.length=e;return this._truncate(r),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,e;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=e)t.previousIndex=t.currentIndex,e=t._nextMoved;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,e,n,a){let r;return null===t?r=this._itTail:(r=t._prev,this._remove(t)),null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,a))?(Du(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,r,a)):null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(Du(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,r,a)):t=this._addAfter(new ff(e,n),r,a),t}_verifyReinsertion(t,e,n,a){let r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null);return null!==r?t=this._reinsertAfter(r,t._prev,a):t.currentIndex!=a&&(t.currentIndex=a,this._addToMoves(t,a)),t}_truncate(t){for(;null!==t;){const e=t._next;this._addToRemovals(this._unlink(t)),t=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(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const a=t._prevRemoved,r=t._nextRemoved;return null===a?this._removalsHead=r:a._nextRemoved=r,null===r?this._removalsTail=a:r._prevRemoved=a,this._insertAfter(t,e,n),this._addToMoves(t,n),t}_moveAfter(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t}_addAfter(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,e,n){const a=null===e?this._itHead:e._next;return t._next=a,t._prev=e,null===a?this._itTail=t:a._prev=t,null===e?this._itHead=t:e._next=t,null===this._linkedRecords&&(this._linkedRecords=new gf),this._linkedRecords.put(t),t.currentIndex=n,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t}_addToMoves(t,e){return t.previousIndex===e?t:(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t,t)}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new gf),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,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class ff{constructor(t,e){this.item=t,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 hf{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,e){let n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&Du(n.trackById,t))return n;return null}remove(t){const e=t._prevDup,n=t._nextDup;return null===e?this._head=n:e._nextDup=n,null===n?this._tail=e:n._prevDup=e,null===this._head}}class gf{constructor(){this.map=new Map}put(t){const e=t.trackById;let n=this.map.get(e);n||(n=new hf,this.map.set(e,n)),n.add(t)}get(t,e){const n=this.map.get(t);return n?n.get(t,e):null}remove(t){const e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function pf(t,e,n){const a=t.previousIndex;if(null===a)return a;let r=0;return n&&a<n.length&&(r=n[a]),a+e+r}class bf{constructor(){}supports(t){return t instanceof Map||ju(t)}create(){return new mf}}class mf{constructor(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}get isDirty(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead}forEachItem(t){let e;for(e=this._mapHead;null!==e;e=e._next)t(e)}forEachPreviousItem(t){let e;for(e=this._previousMapHead;null!==e;e=e._nextPrevious)t(e)}forEachChangedItem(t){let e;for(e=this._changesHead;null!==e;e=e._nextChanged)t(e)}forEachAddedItem(t){let e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)}forEachRemovedItem(t){let e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)}diff(t){if(t){if(!(t instanceof Map||ju(t)))throw new Error(`Error trying to diff '${j(t)}'. Only maps and objects are allowed`)}else t=new Map;return this.check(t)?this:null}onDestroy(){}check(t){this._reset();let e=this._mapHead;if(this._appendAfter=null,this._forEach(t,(t,n)=>{if(e&&e.key===n)this._maybeAddToChanges(e,t),this._appendAfter=e,e=e._next;else{const a=this._getOrCreateRecordForKey(n,t);e=this._insertBeforeOrAppend(e,a)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let t=e;null!==t;t=t._nextRemoved)t===this._mapHead&&(this._mapHead=null),this._records.delete(t.key),t._nextRemoved=t._next,t.previousValue=t.currentValue,t.currentValue=null,t._prev=null,t._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,e){if(t){const n=t._prev;return e._next=t,e._prev=n,t._prev=e,n&&(n._next=e),t===this._mapHead&&(this._mapHead=e),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(t,e){if(this._records.has(t)){const n=this._records.get(t);this._maybeAddToChanges(n,e);const a=n._prev,r=n._next;return a&&(a._next=r),r&&(r._prev=a),n._next=null,n._prev=null,n}const n=new yf(t);return this._records.set(t,n),n.currentValue=e,this._addToAdditions(n),n}_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,e){Du(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,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,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(n=>e(t[n],n))}}class yf{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}}let vf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(null!=n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new O]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(null!=e)return e;throw new Error(`Cannot find a differ supporting object '${t}' of type '${n=t,n.name||typeof n}'`);var n}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new lf])}),t})(),xf=(()=>{class t{constructor(t){this.factories=t}static create(e,n){if(n){const t=n.factories.slice();e=e.concat(t)}return new t(e)}static extend(e){return{provide:t,useFactory:n=>{if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return t.create(e,n)},deps:[[t,new S,new O]]}}find(t){const e=this.factories.find(e=>e.supports(t));if(e)return e;throw new Error(`Cannot find a differ supporting object '${t}'`)}}return t.ngInjectableDef=k({token:t,providedIn:"root",factory:()=>new t([new bf])}),t})();const _f=[new bf],Tf=new vf([new lf]),Of=new xf(_f);let wf=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>If(t,Kc),t})();const Sf=function(t,e){return Zs(t,e,Ve(),Ae())},If=Wc;let Nf=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>Rf(t,Kc),t})();const Cf=function(t,e){return Js(t,e,Ve(),Ae())},Rf=Wc;function Af(t,e,n,a){let r=`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '${e}'. Current value: '${n}'.`;return a&&(r+=" It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook ?"),function(t,e){const n=new Error(t);return kf(n,e),n}(r,t)}function kf(t,e){t.ngDebugContext=e,t.ngErrorLogger=e.logError.bind(e)}function Ef(t){return new Error(`ViewDestroyedError: Attempt to use a destroyed view: ${t}`)}function Lf(t,e,n){const a=t.state,r=1792&a;return r===e?(t.state=-1793&a|n,t.initIndex=-1,!0):r===n}function Df(t,e,n){return(1792&t.state)===e&&t.initIndex<=n&&(t.initIndex=n+1,!0)}function Pf(t,e){return t.nodes[e]}function Mf(t,e){return t.nodes[e]}function qf(t,e){return t.nodes[e]}function jf(t,e){return t.nodes[e]}function Ff(t,e){return t.nodes[e]}class Gf{}const Vf={setCurrentNode:void 0,createRootView:void 0,createEmbeddedView:void 0,createComponentView:void 0,createNgModuleRef:void 0,overrideProvider:void 0,overrideComponentView:void 0,clearOverrides:void 0,checkAndUpdateView:void 0,checkNoChangesView:void 0,destroyView:void 0,resolveDep:void 0,createDebugContext:void 0,handleEvent:void 0,updateDirectives:void 0,updateRenderer:void 0,dirtyParentQueries:void 0},zf=()=>{},Bf=new Map;function Yf(t){let e=Bf.get(t);return e||(e=j(t)+"_"+Bf.size,Bf.set(t,e)),e}function Hf(t,e,n,a){if(Mu.isWrapped(a)){a=Mu.unwrap(a);const r=t.def.nodes[e].bindingIndex+n,i=Mu.unwrap(t.oldValues[r]);t.oldValues[r]=new Mu(i)}return a}function Uf(t){return{id:"$$undefined",styles:t.styles,encapsulation:t.encapsulation,data:t.data}}let Wf=0;function Kf(t,e,n,a){return!(!(2&t.state)&&Du(t.oldValues[e.bindingIndex+n],a))}function $f(t,e,n,a){return!!Kf(t,e,n,a)&&(t.oldValues[e.bindingIndex+n]=a,!0)}function Zf(t,e,n,a){const r=t.oldValues[e.bindingIndex+n];if(1&t.state||!Pu(r,a)){const i=e.bindings[n].name;throw Af(Vf.createDebugContext(t,e.nodeIndex),`${i}: ${r}`,`${i}: ${a}`,0!=(1&t.state))}}function Jf(t){let e=t;for(;e;)2&e.def.flags&&(e.state|=8),e=e.viewContainerParent||e.parent}function Qf(t,e){let n=t;for(;n&&n!==e;)n.state|=64,n=n.viewContainerParent||n.parent}function Xf(t,e,n,a){try{return Jf(33554432&t.def.nodes[e].flags?Mf(t,e).componentView:t),Vf.handleEvent(t,e,n,a)}catch(r){t.root.errorHandler.handleError(r)}}function th(t){return t.parent?Mf(t.parent,t.parentNodeDef.nodeIndex):null}function eh(t){return t.parent?t.parentNodeDef.parent:null}function nh(t,e){switch(201347067&e.flags){case 1:return Mf(t,e.nodeIndex).renderElement;case 2:return Pf(t,e.nodeIndex).renderText}}function ah(t){return!!t.parent&&!!(32768&t.parentNodeDef.flags)}function rh(t){return!(!t.parent||32768&t.parentNodeDef.flags)}function ih(t){return 1<<t%32}function sh(t){const e={};let n=0;const a={};return t&&t.forEach(([t,r])=>{"number"==typeof t?(e[t]=r,n|=ih(t)):a[t]=r}),{matchedQueries:e,references:a,matchedQueryIds:n}}function oh(t,e){return t.map(t=>{let n,a;return Array.isArray(t)?[a,n]=t:(a=0,n=t),n&&("function"==typeof n||"object"==typeof n)&&e&&Object.defineProperty(n,"__source",{value:e,configurable:!0}),{flags:a,token:n,tokenKey:Yf(n)}})}function uh(t,e,n){let a=n.renderParent;return a?0==(1&a.flags)||0==(33554432&a.flags)||a.element.componentRendererType&&a.element.componentRendererType.encapsulation===Ot.Native?Mf(t,n.renderParent.nodeIndex).renderElement:void 0:e}const lh=new WeakMap;function dh(t){let e=lh.get(t);return e||(e=t(()=>zf),e.factory=t,lh.set(t,e)),e}function ch(t,e,n,a,r){3===e&&(n=t.renderer.parentNode(nh(t,t.def.lastRenderRootNode))),fh(t,e,0,t.def.nodes.length-1,n,a,r)}function fh(t,e,n,a,r,i,s){for(let o=n;o<=a;o++){const n=t.def.nodes[o];11&n.flags&&gh(t,n,e,r,i,s),o+=n.childCount}}function hh(t,e,n,a,r,i){let s=t;for(;s&&!ah(s);)s=s.parent;const o=s.parent,u=eh(s),l=u.nodeIndex+u.childCount;for(let d=u.nodeIndex+1;d<=l;d++){const t=o.def.nodes[d];t.ngContentIndex===e&&gh(o,t,n,a,r,i),d+=t.childCount}if(!o.parent){const s=t.root.projectableNodes[e];if(s)for(let e=0;e<s.length;e++)ph(t,s[e],n,a,r,i)}}function gh(t,e,n,a,r,i){if(8&e.flags)hh(t,e.ngContent.index,n,a,r,i);else{const s=nh(t,e);if(3===n&&33554432&e.flags&&48&e.bindingFlags?(16&e.bindingFlags&&ph(t,s,n,a,r,i),32&e.bindingFlags&&ph(Mf(t,e.nodeIndex).componentView,s,n,a,r,i)):ph(t,s,n,a,r,i),16777216&e.flags){const s=Mf(t,e.nodeIndex).viewContainer._embeddedViews;for(let t=0;t<s.length;t++)ch(s[t],n,a,r,i)}1&e.flags&&!e.element.name&&fh(t,n,e.nodeIndex+1,e.nodeIndex+e.childCount,a,r,i)}}function ph(t,e,n,a,r,i){const s=t.renderer;switch(n){case 1:s.appendChild(a,e);break;case 2:s.insertBefore(a,e,r);break;case 3:s.removeChild(a,e);break;case 0:i.push(e)}}const bh=/^:([^:]+):(.+)$/;function mh(t){if(":"===t[0]){const e=t.match(bh);return[e[1],e[2]]}return["",t]}function yh(t){let e=0;for(let n=0;n<t.length;n++)e|=t[n].flags;return e}function vh(t,e){let n="";for(let a=0;a<2*t;a+=2)n=n+e[a]+_h(e[a+1]);return n+e[2*t]}function xh(t,e,n,a,r,i,s,o,u,l,d,c,f,h,g,p,b,m,y,v){switch(t){case 1:return e+_h(n)+a;case 2:return e+_h(n)+a+_h(r)+i;case 3:return e+_h(n)+a+_h(r)+i+_h(s)+o;case 4:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+l;case 5:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+l+_h(d)+c;case 6:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+l+_h(d)+c+_h(f)+h;case 7:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+l+_h(d)+c+_h(f)+h+_h(g)+p;case 8:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+l+_h(d)+c+_h(f)+h+_h(g)+p+_h(b)+m;case 9:return e+_h(n)+a+_h(r)+i+_h(s)+o+_h(u)+l+_h(d)+c+_h(f)+h+_h(g)+p+_h(b)+m+_h(y)+v;default:throw new Error("Does not support more than 9 expressions")}}function _h(t){return null!=t?t.toString():""}const Th=[],Oh={},wh=new Object,Sh=Yf(Bo),Ih=Yf($),Nh=Yf(ft);function Ch(t,e,n,a){return n=V(n),{index:-1,deps:oh(a,j(e)),flags:t,token:e,value:n}}function Rh(t){const e={},n=[];let a=!1;for(let r=0;r<t.length;r++){const i=t[r];i.token===Co&&!0===i.value&&(a=!0),1073741824&i.flags&&n.push(i.token),i.index=r,e[Yf(i.token)]=i}return{factory:null,providersByKey:e,providers:t,modules:n,isRoot:a}}function Ah(t,e,n=Bo.THROW_IF_NOT_FOUND){const a=et(t);try{if(8&e.flags)return e.token;if(2&e.flags&&(n=null),1&e.flags)return t._parent.get(e.token,n);const s=e.tokenKey;switch(s){case Sh:case Ih:case Nh:return t}const o=t._def.providersByKey[s];let u;if(o){let e=t._providers[o.index];return void 0===e&&(e=t._providers[o.index]=kh(t,o)),e===wh?void 0:e}if((u=D(e.token))&&(r=t,null!=(i=u).providedIn&&(function(t,e){return t._def.modules.indexOf(e)>-1}(r,i.providedIn)||"root"===i.providedIn&&r._def.isRoot))){const n=t._providers.length;return t._def.providers[n]=t._def.providersByKey[e.tokenKey]={flags:5120,value:u.factory,deps:[],index:n,token:e.token},t._providers[n]=wh,t._providers[n]=kh(t,t._def.providersByKey[e.tokenKey])}return 4&e.flags?n:t._parent.get(e.token,n)}finally{et(a)}var r,i}function kh(t,e){let n;switch(201347067&e.flags){case 512:n=function(t,e,n){const a=n.length;switch(a){case 0:return new e;case 1:return new e(Ah(t,n[0]));case 2:return new e(Ah(t,n[0]),Ah(t,n[1]));case 3:return new e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=new Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return new e(...r)}}(t,e.value,e.deps);break;case 1024:n=function(t,e,n){const a=n.length;switch(a){case 0:return e();case 1:return e(Ah(t,n[0]));case 2:return e(Ah(t,n[0]),Ah(t,n[1]));case 3:return e(Ah(t,n[0]),Ah(t,n[1]),Ah(t,n[2]));default:const r=Array(a);for(let e=0;e<a;e++)r[e]=Ah(t,n[e]);return e(...r)}}(t,e.value,e.deps);break;case 2048:n=Ah(t,e.deps[0]);break;case 256:n=e.value}return n===wh||null===n||"object"!=typeof n||131072&e.flags||"function"!=typeof n.ngOnDestroy||(e.flags|=131072),void 0===n?wh:n}function Eh(t,e){const n=t.viewContainer._embeddedViews;if((null==e||e>=n.length)&&(e=n.length-1),e<0)return null;const a=n[e];return a.viewContainerParent=null,yt(n,e),Vf.dirtyParentQueries(a),Dh(a),a}function Lh(t,e,n){const a=e?nh(e,e.def.lastRenderRootNode):t.renderElement,r=n.renderer.parentNode(a),i=n.renderer.nextSibling(a);ch(n,2,r,i,void 0)}function Dh(t){ch(t,3,null,null,void 0)}const Ph=new Object;function Mh(t,e,n,a,r,i){return new jh(t,e,n,a,r,i)}function qh(t){return t.viewDefFactory}class jh extends Gc{constructor(t,e,n,a,r,i){super(),this.selector=t,this.componentType=e,this._inputs=a,this._outputs=r,this.ngContentSelectors=i,this.viewDefFactory=n}get inputs(){const t=[],e=this._inputs;for(let n in e)t.push({propName:n,templateName:e[n]});return t}get outputs(){const t=[];for(let e in this._outputs)t.push({propName:e,templateName:this._outputs[e]});return t}create(t,e,n,a){if(!a)throw new Error("ngModule should be provided");const r=dh(this.viewDefFactory),i=r.nodes[0].element.componentProvider.nodeIndex,s=Vf.createRootView(t,e||[],n,r,a,Ph),o=qf(s,i).instance;return n&&s.renderer.setAttribute(Mf(s,0).renderElement,"ng-version",uf.full),new Fh(s,new Bh(s),o)}}class Fh extends Fc{constructor(t,e,n){super(),this._view=t,this._viewRef=e,this._component=n,this._elDef=this._view.def.nodes[0],this.hostView=e,this.changeDetectorRef=e,this.instance=n}get location(){return new Kc(Mf(this._view,this._elDef.nodeIndex).renderElement)}get injector(){return new Wh(this._view,this._elDef)}get componentType(){return this._component.constructor}destroy(){this._viewRef.destroy()}onDestroy(t){this._viewRef.onDestroy(t)}}function Gh(t,e,n){return new Vh(t,e,n)}class Vh{constructor(t,e,n){this._view=t,this._elDef=e,this._data=n,this._embeddedViews=[]}get element(){return new Kc(this._data.renderElement)}get injector(){return new Wh(this._view,this._elDef)}get parentInjector(){let t=this._view,e=this._elDef.parent;for(;!e&&t;)e=eh(t),t=t.parent;return t?new Wh(t,e):new Wh(this._view,null)}clear(){for(let t=this._embeddedViews.length-1;t>=0;t--){const e=Eh(this._data,t);Vf.destroyView(e)}}get(t){const e=this._embeddedViews[t];if(e){const t=new Bh(e);return t.attachToViewContainerRef(this),t}return null}get length(){return this._embeddedViews.length}createEmbeddedView(t,e,n){const a=t.createEmbeddedView(e||{});return this.insert(a,n),a}createComponent(t,e,n,a,r){const i=n||this.parentInjector;r||t instanceof Uc||(r=i.get(ft));const s=t.create(i,a,void 0,r);return this.insert(s.hostView,e),s}insert(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");const n=t;return function(t,e,n,a){let r=e.viewContainer._embeddedViews;null==n&&(n=r.length),a.viewContainerParent=t,mt(r,n,a),function(t,e){const n=th(e);if(!n||n===t||16&e.state)return;e.state|=16;let a=n.template._projectedViews;a||(a=n.template._projectedViews=[]),a.push(e),function(t,e){if(4&e.flags)return;t.nodeFlags|=4,e.flags|=4;let n=e.parent;for(;n;)n.childFlags|=4,n=n.parent}(e.parent.def,e.parentNodeDef)}(e,a),Vf.dirtyParentQueries(a),Lh(e,n>0?r[n-1]:null,a)}(this._view,this._data,e,n._view),n.attachToViewContainerRef(this),t}move(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");const n=this._embeddedViews.indexOf(t._view);return function(t,e,n){const a=t.viewContainer._embeddedViews,r=a[e];yt(a,e),null==n&&(n=a.length),mt(a,n,r),Vf.dirtyParentQueries(r),Dh(r),Lh(t,n>0?a[n-1]:null,r)}(this._data,n,e),t}indexOf(t){return this._embeddedViews.indexOf(t._view)}remove(t){const e=Eh(this._data,t);e&&Vf.destroyView(e)}detach(t){const e=Eh(this._data,t);return e?new Bh(e):null}}function zh(t){return new Bh(t)}class Bh{constructor(t){this._view=t,this._viewContainerRef=null,this._appRef=null}get rootNodes(){return function(t){const e=[];return ch(t,0,void 0,void 0,e),e}(this._view)}get context(){return this._view.context}get destroyed(){return 0!=(128&this._view.state)}markForCheck(){Jf(this._view)}detach(){this._view.state&=-5}detectChanges(){const t=this._view.root.rendererFactory;t.begin&&t.begin();try{Vf.checkAndUpdateView(this._view)}finally{t.end&&t.end()}}checkNoChanges(){Vf.checkNoChangesView(this._view)}reattach(){this._view.state|=4}onDestroy(t){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(t)}destroy(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),Vf.destroyView(this._view)}detachFromAppRef(){this._appRef=null,Dh(this._view),Vf.dirtyParentQueries(this._view)}attachToAppRef(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}attachToViewContainerRef(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}}function Yh(t,e){return new Hh(t,e)}class Hh extends wf{constructor(t,e){super(),this._parentView=t,this._def=e}createEmbeddedView(t){return new Bh(Vf.createEmbeddedView(this._parentView,this._def,this._def.element.template,t))}get elementRef(){return new Kc(Mf(this._parentView,this._def.nodeIndex).renderElement)}}function Uh(t,e){return new Wh(t,e)}class Wh{constructor(t,e){this.view=t,this.elDef=e}get(t,e=Bo.THROW_IF_NOT_FOUND){return Vf.resolveDep(this.view,this.elDef,!!this.elDef&&0!=(33554432&this.elDef.flags),{flags:0,token:t,tokenKey:Yf(t)},e)}}function Kh(t,e){const n=t.def.nodes[e];if(1&n.flags){const e=Mf(t,n.nodeIndex);return n.element.template?e.template:e.renderElement}if(2&n.flags)return Pf(t,n.nodeIndex).renderText;if(20240&n.flags)return qf(t,n.nodeIndex).instance;throw new Error(`Illegal state: read nodeValue for node index ${e}`)}function $h(t){return new Zh(t.renderer)}class Zh{constructor(t){this.delegate=t}selectRootElement(t){return this.delegate.selectRootElement(t)}createElement(t,e){const[n,a]=mh(e),r=this.delegate.createElement(a,n);return t&&this.delegate.appendChild(t,r),r}createViewRoot(t){return t}createTemplateAnchor(t){const e=this.delegate.createComment("");return t&&this.delegate.appendChild(t,e),e}createText(t,e){const n=this.delegate.createText(e);return t&&this.delegate.appendChild(t,n),n}projectNodes(t,e){for(let n=0;n<e.length;n++)this.delegate.appendChild(t,e[n])}attachViewAfter(t,e){const n=this.delegate.parentNode(t),a=this.delegate.nextSibling(t);for(let r=0;r<e.length;r++)this.delegate.insertBefore(n,e[r],a)}detachView(t){for(let e=0;e<t.length;e++){const n=t[e],a=this.delegate.parentNode(n);this.delegate.removeChild(a,n)}}destroyView(t,e){for(let n=0;n<e.length;n++)this.delegate.destroyNode(e[n])}listen(t,e,n){return this.delegate.listen(t,e,n)}listenGlobal(t,e,n){return this.delegate.listen(t,e,n)}setElementProperty(t,e,n){this.delegate.setProperty(t,e,n)}setElementAttribute(t,e,n){const[a,r]=mh(e);null!=n?this.delegate.setAttribute(t,r,n,a):this.delegate.removeAttribute(t,r,a)}setBindingDebugInfo(t,e,n){}setElementClass(t,e,n){n?this.delegate.addClass(t,e):this.delegate.removeClass(t,e)}setElementStyle(t,e,n){null!=n?this.delegate.setStyle(t,e,n):this.delegate.removeStyle(t,e)}invokeElementMethod(t,e,n){t[e].apply(t,n)}setText(t,e){this.delegate.setValue(t,e)}animate(){throw new Error("Renderer.animate is no longer supported!")}}function Jh(t,e,n,a){return new Qh(t,e,n,a)}class Qh{constructor(t,e,n,a){this._moduleType=t,this._parent=e,this._bootstrapComponents=n,this._def=a,this._destroyListeners=[],this._destroyed=!1,this.injector=this,function(t){const e=t._def,n=t._providers=new Array(e.providers.length);for(let a=0;a<e.providers.length;a++){const r=e.providers[a];4096&r.flags||void 0===n[a]&&(n[a]=kh(t,r))}}(this)}get(t,e=Bo.THROW_IF_NOT_FOUND,n=C.Default){let a=0;return n&C.SkipSelf?a|=1:n&C.Self&&(a|=4),Ah(this,{token:t,tokenKey:Yf(t),flags:a},e)}get instance(){return this.get(this._moduleType)}get componentFactoryResolver(){return this.get(Yc)}destroy(){if(this._destroyed)throw new Error(`The ng module ${j(this.instance.constructor)} has already been destroyed.`);this._destroyed=!0,function(t,e){const n=t._def,a=new Set;for(let r=0;r<n.providers.length;r++)if(131072&n.providers[r].flags){const e=t._providers[r];if(e&&e!==wh){const t=e.ngOnDestroy;"function"!=typeof t||a.has(e)||(t.apply(e),a.add(e))}}}(this),this._destroyListeners.forEach(t=>t())}onDestroy(t){this._destroyListeners.push(t)}}const Xh=Yf(Xc),tg=Yf(af),eg=Yf(Kc),ng=Yf(Nf),ag=Yf(wf),rg=Yf(Xs),ig=Yf(Bo),sg=Yf($);function og(t,e,n,a,r,i,s,o){const u=[];if(s)for(let d in s){const[t,e]=s[d];u[t]={flags:8,name:d,nonMinifiedName:e,ns:null,securityContext:null,suffix:null}}const l=[];if(o)for(let d in o)l.push({type:1,propName:d,target:null,eventName:o[d]});return dg(t,e|=16384,n,a,r,r,i,u,l)}function ug(t,e,n){return dg(-1,t|=16,null,0,e,e,n)}function lg(t,e,n,a,r){return dg(-1,t,e,0,n,a,r)}function dg(t,e,n,a,r,i,s,o,u){const{matchedQueries:l,references:d,matchedQueryIds:c}=sh(n);u||(u=[]),o||(o=[]),i=V(i);const f=oh(s,j(r));return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:l,matchedQueryIds:c,references:d,ngContentIndex:-1,childCount:a,bindings:o,bindingFlags:yh(o),outputs:u,element:null,provider:{token:r,value:i,deps:f},text:null,query:null,ngContent:null}}function cg(t,e){return pg(t,e)}function fg(t,e){let n=t;for(;n.parent&&!ah(n);)n=n.parent;return bg(n.parent,eh(n),!0,e.provider.value,e.provider.deps)}function hg(t,e){const n=bg(t,e.parent,(32768&e.flags)>0,e.provider.value,e.provider.deps);if(e.outputs.length)for(let a=0;a<e.outputs.length;a++){const r=e.outputs[a],i=n[r.propName];if(!ed(i))throw new Error(`@Output ${r.propName} not initialized in '${n.constructor.name}'.`);{const n=i.subscribe(gg(t,e.parent.nodeIndex,r.eventName));t.disposables[e.outputIndex+a]=n.unsubscribe.bind(n)}}return n}function gg(t,e,n){return a=>Xf(t,e,n,a)}function pg(t,e){const n=(8192&e.flags)>0,a=e.provider;switch(201347067&e.flags){case 512:return bg(t,e.parent,n,a.value,a.deps);case 1024:return function(t,e,n,a,r){const i=r.length;switch(i){case 0:return a();case 1:return a(yg(t,e,n,r[0]));case 2:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return a(...s)}}(t,e.parent,n,a.value,a.deps);case 2048:return yg(t,e.parent,n,a.deps[0]);case 256:return a.value}}function bg(t,e,n,a,r){const i=r.length;switch(i){case 0:return new a;case 1:return new a(yg(t,e,n,r[0]));case 2:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]));case 3:return new a(yg(t,e,n,r[0]),yg(t,e,n,r[1]),yg(t,e,n,r[2]));default:const s=new Array(i);for(let a=0;a<i;a++)s[a]=yg(t,e,n,r[a]);return new a(...s)}}const mg={};function yg(t,e,n,a,r=Bo.THROW_IF_NOT_FOUND){if(8&a.flags)return a.token;const i=t;2&a.flags&&(r=null);const s=a.tokenKey;s===rg&&(n=!(!e||!e.element.componentView)),e&&1&a.flags&&(n=!1,e=e.parent);let o=t;for(;o;){if(e)switch(s){case Xh:return $h(vg(o,e,n));case tg:return vg(o,e,n).renderer;case eg:return new Kc(Mf(o,e.nodeIndex).renderElement);case ng:return Mf(o,e.nodeIndex).viewContainer;case ag:if(e.element.template)return Mf(o,e.nodeIndex).template;break;case rg:return zh(vg(o,e,n));case ig:case sg:return Uh(o,e);default:const t=(n?e.element.allProviders:e.element.publicProviders)[s];if(t){let e=qf(o,t.nodeIndex);return e||(e={instance:pg(o,t)},o.nodes[t.nodeIndex]=e),e.instance}}n=ah(o),e=eh(o),o=o.parent,4&a.flags&&(o=null)}const u=i.root.injector.get(a.token,mg);return u!==mg||r===mg?u:i.root.ngModule.injector.get(a.token,r)}function vg(t,e,n){let a;if(n)a=Mf(t,e.nodeIndex).componentView;else for(a=t;a.parent&&!ah(a);)a=a.parent;return a}function xg(t,e,n,a,r,i){if(32768&n.flags){const e=Mf(t,n.parent.nodeIndex).componentView;2&e.def.flags&&(e.state|=8)}if(e.instance[n.bindings[a].name]=r,524288&n.flags){i=i||{};const e=Mu.unwrap(t.oldValues[n.bindingIndex+a]);i[n.bindings[a].nonMinifiedName]=new Tc(e,r,0!=(2&t.state))}return t.oldValues[n.bindingIndex+a]=r,i}function _g(t,e){if(!(t.def.nodeFlags&e))return;const n=t.def.nodes;let a=0;for(let r=0;r<n.length;r++){const i=n[r];let s=i.parent;for(!s&&i.flags&e&&Og(t,r,i.flags&e,a++),0==(i.childFlags&e)&&(r+=i.childCount);s&&1&s.flags&&r===s.nodeIndex+s.childCount;)s.directChildFlags&e&&(a=Tg(t,s,e,a)),s=s.parent}}function Tg(t,e,n,a){for(let r=e.nodeIndex+1;r<=e.nodeIndex+e.childCount;r++){const e=t.def.nodes[r];e.flags&n&&Og(t,r,e.flags&n,a++),r+=e.childCount}return a}function Og(t,e,n,a){const r=qf(t,e);if(!r)return;const i=r.instance;i&&(Vf.setCurrentNode(t,e),1048576&n&&Df(t,512,a)&&i.ngAfterContentInit(),2097152&n&&i.ngAfterContentChecked(),4194304&n&&Df(t,768,a)&&i.ngAfterViewInit(),8388608&n&&i.ngAfterViewChecked(),131072&n&&i.ngOnDestroy())}function wg(t){const e=[];for(let n in t)t.hasOwnProperty(n)&&e.push({propName:t[n],templateName:n});return e}const Sg=new K("SCHEDULER_TOKEN",{providedIn:"root",factory:()=>_n});class Ig extends Gc{constructor(t,e){super(),this.componentDef=t,this.ngModule=e,this.componentType=t.type,this.selector=t.selectors[0][0]||"div",this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!e}get inputs(){return wg(this.componentDef.inputs)}get outputs(){return wg(this.componentDef.outputs)}create(t,e,n,a){const r=(a=a||this.ngModule)?function(t,e){return{get:(n,a,r)=>{const i=t.get(n,mg,r);return i!==mg||a===mg?i:e.get(n,a,r)}}}(t,a.injector):t,i=r.get(ef,ea),s=r.get(vr,null);pn();const o=n?Gi(i,n):Ci(this.selector,i.createRenderer(null,this.componentDef)),u=this.componentDef.onPush?576:528,l="string"==typeof n&&/^#root-ng-internal-isolated-\d+/.test(n),d=vc(),c=i.createRenderer(o,this.componentDef);n&&o&&(ta(c)?c.setAttribute(o,"ng-version",uf.full):o.setAttribute("ng-version",uf.full));const f=Ri(null,Fi(-1,null,1,0,null,null,null,null),d,u,null,null,i,c,s,r),h=an(f,null);let g,p,b=!1;try{const t=mc(o,this.componentDef,f,i,c);p=ye(0,f),e&&(p.projection=e.map(t=>Array.from(t))),g=yc(t,this.componentDef,f,d,[xc]),rs(f,t),Ii(f),b=!0}finally{sn(h,b)}const m=new Ng(this.componentType,g,$s(Kc,p,f),f,p);return n&&!l||(m.hostView._tViewNode.child=p),m}}class Ng extends Fc{constructor(t,e,n,a,r){super(),this.location=n,this._rootLView=a,this._tNode=r,this.destroyCbs=[],this.instance=e,this.hostView=this.changeDetectorRef=new Hs(a),this.hostView._tViewNode=ki(a[1],null,-1,a),this.componentType=t}get injector(){return new Ca(this._tNode,this._rootLView)}destroy(){this.destroyCbs&&(this.destroyCbs.forEach(t=>t()),this.destroyCbs=null,!this.hostView.destroyed&&this.hostView.destroy())}onDestroy(t){this.destroyCbs&&this.destroyCbs.push(t)}}const Cg={},Rg=function(){var t={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencySymbol:15,CurrencyName:16,Currencies:17,PluralCase:18,ExtraData:19};return t[t.LocaleId]="LocaleId",t[t.DayPeriodsFormat]="DayPeriodsFormat",t[t.DayPeriodsStandalone]="DayPeriodsStandalone",t[t.DaysFormat]="DaysFormat",t[t.DaysStandalone]="DaysStandalone",t[t.MonthsFormat]="MonthsFormat",t[t.MonthsStandalone]="MonthsStandalone",t[t.Eras]="Eras",t[t.FirstDayOfWeek]="FirstDayOfWeek",t[t.WeekendRange]="WeekendRange",t[t.DateFormat]="DateFormat",t[t.TimeFormat]="TimeFormat",t[t.DateTimeFormat]="DateTimeFormat",t[t.NumberSymbols]="NumberSymbols",t[t.NumberFormats]="NumberFormats",t[t.CurrencySymbol]="CurrencySymbol",t[t.CurrencyName]="CurrencyName",t[t.Currencies]="Currencies",t[t.PluralCase]="PluralCase",t[t.ExtraData]="ExtraData",t}(),Ag=void 0;var kg=["en",[["a","p"],["AM","PM"],Ag],[["AM","PM"],Ag,Ag],[["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"]],Ag,[["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"]],Ag,[["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}",Ag,"{1} 'at' {0}",Ag],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){let e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}];function Eg(t){return Lg(t)[Rg.PluralCase]}function Lg(t){const e=t.toLowerCase().replace(/_/g,"-");let n=Cg[e];if(n)return n;const a=e.split("-")[0];if(n=Cg[a],n)return n;if("en"===a)return kg;throw new Error(`Missing locale data for the locale "${t}".`)}const Dg="en-US",Pg=/^\s*(�\d+:?\d*�)\s*,\s*(select|plural)\s*,/,Mg=/�\/?\*(\d+:\d+)�/gi,qg=/�(\/?[#*!]\d+):?\d*�/gi,jg=/�(\d+):?\d*�/gi,Fg=/({\s*�\d+:?\d*�\s*,\s*\S{6}\s*,[\s\S]*})/gi,Gg=/\[(�.+?�?)\]/,Vg=/\[(�.+?�?)\]|(�\/?\*\d+:\d+�)/g,zg=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,Bg=/{([A-Z0-9_]+)}/g,Yg=/�I18N_EXP_(ICU(_\d+)?)�/g,Hg=/\/\*/,Ug=/\d+\:(\d+)/;function Wg(t){if(!t)return[];let e=0;const n=[],a=[],r=/[{}]/g;let i;for(r.lastIndex=0;i=r.exec(t);){const r=i.index;if("}"==i[0]){if(n.pop(),0==n.length){const n=t.substring(e,r);Pg.test(n)?a.push(Kg(n)):a.push(n),e=r+1}}else{if(0==n.length){const n=t.substring(e,r);a.push(n),e=r+1}n.push("{")}}const s=t.substring(e);return a.push(s),a}function Kg(t){const e=[],n=[];let a=1,r=0;const i=Wg(t=t.replace(Pg,(function(t,e,n){return a="select"===n?0:1,r=parseInt(e.substr(1),10),""})));for(let s=0;s<i.length;){let t=i[s++].trim();1===a&&(t=t.replace(/\s*(?:=)?(\w+)\s*/,"$1")),t.length&&e.push(t);const r=Wg(i[s++]);e.length>n.length&&n.push(r)}return'Missing key "other" in ICU statement.',e.indexOf("other")<=-1&&vt('Missing key "other" in ICU statement.'),{type:a,mainBinding:r,cases:e,values:n}}function $g(t){let e,n,a="",r=0,i=!1;for(;null!==(e=Mg.exec(t));)i?e[0]===`�/*${n}�`&&(r=e.index,i=!1):(a+=t.substring(r,e.index+e[0].length),n=e[1],i=!0);return a+=t.substr(r),a}function Zg(t,e,n,a=null){const r=[null,null],i=t.split(jg);let s=0;for(let o=0;o<i.length;o++){const t=i[o];if(1&o){const e=parseInt(t,10);r.push(-1-e),s|=tp(e)}else""!==t&&r.push(t)}return r.push(e<<2|(n?1:0)),n&&r.push(n,a),r[0]=s,r[1]=r.length-2,r}function Jg(t,e=0){let n;e|=tp(t.mainBinding);for(let a=0;a<t.values.length;a++){const r=t.values[a];for(let t=0;t<r.length;t++){const a=r[t];if("string"==typeof a)for(;n=jg.exec(a);)e|=tp(parseInt(n[1],10));else e=Jg(a,e)}}return e}const Qg=[];let Xg=-1;function tp(t){return 1<<Math.min(t,31)}const ep=[];function np(t,e,n){const a=Ae()[1];Qg[++Xg]=t,cd(!0),a.firstTemplatePass&&null===a.data[t+19]&&function(t,e,n,a){const r=Ae(),i=t.blueprint.length-19;ap=0;const s=Ve(),o=Ye()?Ve():s&&s.parent;let u=o&&o!==r[6]?o.index-19:e,l=0;ep[l]=u;const d=[];e>0&&s!==o&&d.push(s.index<<3|0);const c=[],f=[],h=(g=function(t,e){if("number"!=typeof e)return $g(t);{const n=t.indexOf(`:${e}�`)+2+e.toString().length,a=t.search(new RegExp(`�\\/\\*\\d+:${e}�`));return $g(t.substring(n,a))}}(n,a),g.replace(xp," ")).split(qg);var g;for(let p=0;p<h.length;p++){let t=h[p];if(1&p)if("/"===t.charAt(0)){if("#"===t.charAt(1)){const e=parseInt(t.substr(2),10);u=ep[--l],d.push(e<<3|5)}}else{const e=parseInt(t.substr(1),10);d.push(e<<3|0,u<<17|1),"#"===t.charAt(0)&&(ep[++l]=u=e)}else{const e=Wg(t);for(let t=0;t<e.length;t++)if(1&t){const n=i+ap++;d.push(hi,"",n,u<<17|1);const a=e[t],r=Jg(a);mp(f,a,n,n);const s=f.length-1;c.push(tp(a.mainBinding),3,-1-a.mainBinding,n<<2|2,s,r,2,n<<2|3,s)}else if(""!==e[t]){const n=e[t],a=n.match(jg),r=i+ap++;d.push(a?"":n,r,u<<17|1),a&&gt(Zg(n,r),c)}}}ap>0&&function(t,e){if(e>0){const n=t[1];if(n.firstTemplatePass){for(let a=0;a<e;a++)n.blueprint.push(null),n.data.push(null),t.push(null);n.expandoInstructions?n.expandoInstructions.push(e):n.expandoStartIndex+=e}}}(r,ap),t.data[e+19]={vars:ap,create:d,update:c,icus:f.length?f:null}}(a,t,e,n)}let ap;function rp(t,e,n,a){const r=t.next;n||(n=e),n===e&&t!==e.child?(t.next=e.child,e.child=t):n!==e&&t!==n.next?(t.next=n.next,n.next=t):t.next=null,e!==a[6]&&(t.parent=e);let i=t.next;for(;i;)i.next===t&&(i.next=r),i=i.next;if(1===t.type)return Fs(a,t,t.projection,da(a)),t;Ms(be(t,a),t,a);const s=a[t.index];return 0!==t.type&&Jt(s)&&Ms(s[7],t,a),t}function ip(t,e={}){let n=t;if(Gg.test(t)){const t={},e=[0];n=n.replace(Vg,(n,a,r)=>{const i=a||r,s=t[i]||[];if(s.length||(i.split("|").forEach(t=>{const e=t.match(Ug),n=e?parseInt(e[1],10):0,a=Hg.test(t);s.push([n,a,t])}),t[i]=s),!s.length)throw new Error(`i18n postprocess: unmatched placeholder - ${i}`);const o=e[e.length-1];let u=0;for(let t=0;t<s.length;t++)if(s[t][0]===o){u=t;break}const[l,d,c]=s[u];return d?e.pop():o!==l&&e.push(l),s.splice(u,1),c})}return Object.keys(e).length?(n=n.replace(zg,(t,n,a,r,i,s)=>e.hasOwnProperty(a)?`${n}${e[a]}${s}`:t),n=n.replace(Bg,(t,n)=>e.hasOwnProperty(n)?e[n]:t),n=n.replace(Yg,(t,n)=>{if(e.hasOwnProperty(n)){const a=e[n];if(!a.length)throw new Error(`i18n postprocess: unmatched ICU - ${t} with key: ${n}`);return a.shift()}return t}),n):n}function sp(){!function(t){const e=Ae(),n=Qg[Xg--],a=t.data[n+19];let r=Ve();const i=up(n,a.create,0,e);for(let s=n+1;s<=r.index-19;s++)-1===i.indexOf(s)&&lp(s,e)}(Ae()[1]),cd(!1)}function op(t,e,n,a,r){const i=Ve();t[e+19]=a;const s=Ai(t[1],t[6],e,n,r,null);return i.next===s&&(i.next=null),s}function up(t,e,n,a){const r=Ae()[12];let i=null,s=null;const o=[];for(let u=0;u<e.length;u++){const n=e[u];if("string"==typeof n){const t=ws(n,r),l=e[++u];s=i,i=op(a,l,3,t,null),o.push(l),He()}else if("number"==typeof n)switch(7&n){case 1:const r=n>>>17;let l;l=r===t?a[6]:ye(r,a),s=rp(i,l,s,a);break;case 0:const d=n>>>3;o.push(d),s=i,i=ye(d,a),i&&ze(i,3===i.type);break;case 5:s=i=ye(n>>>3,a),ze(i,!1);break;case 4:es(n>>>3,e[++u],e[++u],a);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}else switch(n){case hi:const t=e[++u],l=e[++u],d=r.createComment(t);s=i,i=op(a,l,5,d,null),o.push(l),qr(d,a),i.activeCaseIndex=null,He();break;case fi:const c=e[++u],f=e[++u];s=i,i=op(a,f,3,r.createElement(c),c),o.push(f);break;default:throw new Error(`Unable to determine the type of mutate operation for "${n}"`)}}return He(),o}function lp(t,e){const n=ye(t,e),a=pe(t,e);a&&js(e[12],a);const r=_l(t);if(Jt(r)){const t=r;0!==n.type&&js(e[12],t[7])}n.flags|=32}function dp(t,e,n){np(t,e,n),sp()}function cp(t,e){!function(t,e,n){const a=Ve().index-19,r=[];for(let i=0;i<n.length;i+=2){const s=n[i],o=n[i+1].split(Fg);for(let n=0;n<o.length;n++){const i=o[n];if(1&n)throw new Error("ICU expressions are not yet supported in attributes");if(""!==i)if(i.match(jg))t.firstTemplatePass&&null===t.data[e+19]&&gt(Zg(i,a,s),r);else{const t=Ae();es(a,s,i,t);const e=ye(a,t),n=e.inputs&&e.inputs[s];n&&ys(t,n,i)}}}t.firstTemplatePass&&null===t.data[e+19]&&(t.data[e+19]=r)}(Ae()[1],t,e)}let fp=0,hp=0;function gp(t){return Uu(Ae(),t)!==ci&&(fp|=1<<hp),hp++,gp}function pp(t){if(hp){const e=Ae(),n=e[1].data[t+19];let a,r=null;Array.isArray(n)?a=n:(a=n.update,r=n.icus),function t(e,n,a,r,i,s=!1){let o=!1;for(let u=0;u<e.length;u++){const l=e[u],d=e[++u];if(s||l&r){let s="";for(let l=u+1;l<=u+d;l++){const u=e[l];if("string"==typeof u)s+=u;else if("number"==typeof u)if(u<0)s+=vn(i[a-u]);else{const d=u>>>2;let c,f,h;switch(3&u){case 1:Yi(d,e[++l],s,e[++l]);break;case 0:vs(i,d,s);break;case 2:if(c=e[++l],f=n[c],h=ye(d,i),null!==h.activeCaseIndex){const t=f.remove[h.activeCaseIndex];for(let e=0;e<t.length;e++){const a=t[e];switch(7&a){case 3:lp(a>>>3,i);break;case 6:const r=ye(t[e+1]>>>3,i).activeCaseIndex;null!==r&&gt(n[a>>>3].remove[r],t)}}}const u=bp(f,s);h.activeCaseIndex=-1!==u?u:null,up(-1,f.create[u],0,i),o=!0;break;case 3:c=e[++l],f=n[c],h=ye(d,i),t(f.update[h.activeCaseIndex],n,a,r,i,o)}}}}u+=d}}(a,r,e[7]-hp-1,fp,e),fp=0,hp=0}}function bp(t,e){let n=t.cases.indexOf(e);if(-1===n)switch(t.type){case 1:{const a=function(t,e){switch(Eg(e)(t)){case 0:return"zero";case 1:return"one";case 2:return"two";case 3:return"few";case 4:return"many";default:return"other"}}(e,Sp);n=t.cases.indexOf(a),-1===n&&"other"!==a&&(n=t.cases.indexOf("other"));break}case 0:n=t.cases.indexOf("other")}return n}function mp(t,e,n,a){const r=[],i=[],s=[],o=[],u=[];for(let l=0;l<e.values.length;l++){const d=e.values[l],c=[];for(let t=0;t<d.length;t++){const e=d[t];if("string"!=typeof e){const n=c.push(e)-1;d[t]=`\x3c!--�${n}�--\x3e`}}const f=yp(d.join(""),n,c,t,a);r.push(f.create),i.push(f.remove),s.push(f.update),o.push(f.vars),u.push(f.childIcus)}t.push({type:e.type,vars:o,childIcus:u,cases:e.cases,create:r,remove:i,update:s}),ap+=Math.max(...o)}function yp(t,e,n,a,r){const i=new $a(document).getInertBodyElement(t);if(!i)throw new Error("Unable to generate inert body element");const s={vars:0,childIcus:[],create:[],remove:[],update:[]};return function t(e,n,a,r,i,s){if(e){const o=[];for(;e;){const u=e.nextSibling,l=s+ ++n.vars;switch(e.nodeType){case Node.ELEMENT_NODE:const u=e,d=u.tagName.toLowerCase();if(sr.hasOwnProperty(d)){n.create.push(fi,d,l,a<<17|1);const o=u.attributes;for(let t=0;t<o.length;t++){const e=o.item(t),a=e.name.toLowerCase();e.value.match(jg)?lr.hasOwnProperty(a)&&gt(or[a]?Zg(e.value,l,e.name,Qa):ur[a]?Zg(e.value,l,e.name,Xa):Zg(e.value,l,e.name),n.update):n.create.push(l<<3|4,e.name,e.value)}t(e.firstChild,n,l,r,i,s),n.remove.push(l<<3|3)}else n.vars--;break;case Node.TEXT_NODE:const c=e.textContent||"",f=c.match(jg);n.create.push(f?"":c,l,a<<17|1),n.remove.push(l<<3|3),f&&gt(Zg(c,l),n.update);break;case Node.COMMENT_NODE:const h=vp.exec(e.textContent||"");if(h){const t=parseInt(h[1],10);n.create.push(hi,"",l,a<<17|1),o.push([r[t],l])}else n.vars--;break;default:n.vars--}e=u}for(let t=0;t<o.length;t++){const e=o[t][0],a=o[t][1];mp(i,e,a,s+n.vars);const r=i.length-1;n.vars+=Math.max(...i[r].vars),n.childIcus.push(r);const u=Jg(e);n.update.push(tp(e.mainBinding),3,-1-e.mainBinding,a<<2|2,r,u,2,a<<2|3,r),n.remove.push(r<<3|6,a<<3|3)}}}((mr(i)||i).firstChild,s,e,n,a,r),s}const vp=/�(\d+)�/,xp=/\uE500/g;let _p={};function Tp(t={translations:{}}){_p=t.translations}const Op=/\{\$(.*?)\}/g;function wp(t,e){return void 0!==_p[t]&&(t=_p[t]),void 0!==e&&Object.keys(e).length?t.replace(Op,(t,n)=>e[n]||""):t}let Sp=Dg;function Ip(t){null==t&&vt("Expected localeId to be defined"),"string"==typeof t&&(Sp=t.toLowerCase().replace(/_/g,"-"))}const Np=new Map;function Cp(t,e){const n=Np.get(t);Rp(t,n&&n.moduleType,e.moduleType),Np.set(t,e)}function Rp(t,e,n){if(e&&e!==n)throw new Error(`Duplicate module registered for ${t} - ${j(e)} vs ${j(e.name)}`)}function Ap(t){if(null!==t.ngModuleDef.id){const e=t.ngModuleDef.id;Rp(e,Np.get(e),t),Np.set(e,t)}let e=t.ngModuleDef.imports;e instanceof Function&&(e=e()),e&&e.forEach(t=>Ap(t))}function kp(t){return Np.get(t)}const Ep={provide:Yc,useClass:class extends Yc{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const e=Ht(t);return new Ig(e,this.ngModule)}},deps:[ft]};class Lp extends ft{constructor(t,e){super(),this._parent=e,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[];const n=$t(t),a=t[kt]||null;a&&Ip(a),this._bootstrapComponents=In(n.bootstrap),this._r3Injector=Do(t,e,[{provide:ft,useValue:this},Ep],j(t)),this.instance=this.get(t)}get(t,e=Bo.THROW_IF_NOT_FOUND,n=C.Default){return t===Bo||t===ft||t===$?this:this._r3Injector.get(t,e,n)}get componentFactoryResolver(){return this.get(Yc)}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class Dp extends ht{constructor(t){super(),this.moduleType=t,null!==$t(t)&&Ap(t)}create(t){return new Lp(this.moduleType,t)}}function Pp(t,e,n,a){return wt(()=>{const r=t,i=r.prototype?Object.getPrototypeOf(r.prototype):null,s=i&&i.constructor;null!==e&&(void 0===r.decorators||s&&s.decorators===r.decorators?r.decorators=e:r.decorators.push(...e)),null!==n&&(r.ctorParameters=n),null!==a&&(r.propDecorators=void 0===r.propDecorators||s&&s.propDecorators===r.propDecorators?a:Object.assign({},r.propDecorators,a))})}function Mp(t,e,n){const a=Qe()+t,r=Ae();return Ue()?Fu(r,a,n?e.call(n):e()):Gu(r,a)}function qp(t,e,n,a){const r=Ae(),i=Qe()+t;return Vu(r,i,n)?Fu(r,i+1,a?e.call(a,n):e(n)):Gu(r,i+1)}function jp(t,e,n,a,r){const i=Qe()+t,s=Ae();return zu(s,i,n,a)?Fu(s,i+2,r?e.call(r,n,a):e(n,a)):Gu(s,i+2)}function Fp(t,e,n,a,r,i){const s=Qe()+t,o=Ae();return Bu(o,s,n,a,r)?Fu(o,s+3,i?e.call(i,n,a,r):e(n,a,r)):Gu(o,s+3)}function Gp(t,e,n,a,r,i,s){const o=Qe()+t,u=Ae();return Yu(u,o,n,a,r,i)?Fu(u,o+4,s?e.call(s,n,a,r,i):e(n,a,r,i)):Gu(u,o+4)}function Vp(t,e,n,a,r,i,s,o){const u=Qe()+t,l=Ae(),d=Yu(l,u,n,a,r,i);return Vu(l,u+4,s)||d?Fu(l,u+5,o?e.call(o,n,a,r,i,s):e(n,a,r,i,s)):Gu(l,u+5)}function zp(t,e,n,a,r,i,s,o,u){const l=Qe()+t,d=Ae(),c=Yu(d,l,n,a,r,i);return zu(d,l+4,s,o)||c?Fu(d,l+6,u?e.call(u,n,a,r,i,s,o):e(n,a,r,i,s,o)):Gu(d,l+6)}function Bp(t,e,n,a,r,i,s,o,u,l){const d=Qe()+t,c=Ae();let f=Yu(c,d,n,a,r,i);return Bu(c,d+4,s,o,u)||f?Fu(c,d+7,l?e.call(l,n,a,r,i,s,o,u):e(n,a,r,i,s,o,u)):Gu(c,d+7)}function Yp(t,e,n,a,r,i,s,o,u,l,d){const c=Qe()+t,f=Ae(),h=Yu(f,c,n,a,r,i);return Yu(f,c+4,s,o,u,l)||h?Fu(f,c+8,d?e.call(d,n,a,r,i,s,o,u,l):e(n,a,r,i,s,o,u,l)):Gu(f,c+8)}function Hp(t,e,n,a){let r=Qe()+t,i=!1;const s=Ae();for(let o=0;o<n.length;o++)Vu(s,r++,n[o])&&(i=!0);return i?Fu(s,r,e.apply(a,n)):Gu(s,r)}function Up(t,e){const n=Ae()[1];let a;const r=t+19;n.firstTemplatePass?(a=function(t,e){if(e)for(let n=e.length-1;n>=0;n--){const a=e[n];if(t===a.name)return a}throw new Error(`The pipe '${t}' could not be found!`)}(e,n.pipeRegistry),n.data[r]=a,a.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(r,a.onDestroy)):a=n.data[r];const i=a.factory();return vl(t,i),i}function Wp(t,e,n){const a=_l(t);return Xp(Qp(t)?qp(e,a.transform,n,a):a.transform(n))}function Kp(t,e,n,a){const r=_l(t);return Xp(Qp(t)?jp(e,r.transform,n,a,r):r.transform(n,a))}function $p(t,e,n,a,r){const i=_l(t);return Xp(Qp(t)?Fp(e,i.transform,n,a,r,i):i.transform(n,a,r))}function Zp(t,e,n,a,r,i){const s=_l(t);return Xp(Qp(t)?Gp(e,s.transform,n,a,r,i,s):s.transform(n,a,r,i))}function Jp(t,e,n){const a=_l(t);return Xp(Qp(t)?Hp(e,a.transform,n,a):a.transform.apply(a,n))}function Qp(t){return Ae()[1].data[t+19].pure}function Xp(t){if(Mu.isWrapped(t)){t=Mu.unwrap(t);const e=Ae();e[e[7]]=ci}return t}class tb extends a.a{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,e,n){let a,i=t=>null,s=()=>null;t&&"object"==typeof t?(a=this.__isAsync?e=>{setTimeout(()=>t.next(e))}:e=>{t.next(e)},t.error&&(i=this.__isAsync?e=>{setTimeout(()=>t.error(e))}:e=>{t.error(e)}),t.complete&&(s=this.__isAsync?()=>{setTimeout(()=>t.complete())}:()=>{t.complete()})):(a=this.__isAsync?e=>{setTimeout(()=>t(e))}:e=>{t(e)},e&&(i=this.__isAsync?t=>{setTimeout(()=>e(t))}:t=>{e(t)}),n&&(s=this.__isAsync?()=>{setTimeout(()=>n())}:()=>{n()}));const o=super.subscribe(a,i,s);return t instanceof r.a&&t.add(o),o}}function eb(){return this._results[Lu()]()}class nb{constructor(){this.dirty=!0,this._results=[],this.changes=new tb,this.length=0;const t=Lu(),e=nb.prototype;e[t]||(e[t]=eb)}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,e){return this._results.reduce(t,e)}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){this._results=pt(t),this.dirty=!1,this.length=this._results.length,this.last=this._results[this.length-1],this.first=this._results[0]}notifyOnChanges(){this.changes.emit(this)}setDirty(){this.dirty=!0}destroy(){this.changes.complete(),this.changes.unsubscribe()}}class ab{constructor(t){this.queryList=t,this.matches=null}clone(){return new ab(this.queryList)}setDirty(){this.queryList.setDirty()}}class rb{constructor(t=[]){this.queries=t}createEmbeddedView(t){const e=t.queries;if(null!==e){const n=null!==t.contentQueries?t.contentQueries[0]:e.length,a=new Array(n);for(let t=0;t<n;t++){const n=e.getByIndex(t);a[t]=this.queries[n.indexInDeclarationView].clone()}return new rb(a)}return null}insertView(t){this.dirtyQueriesWithMatches(t)}detachView(t){this.dirtyQueriesWithMatches(t)}dirtyQueriesWithMatches(t){for(let e=0;e<this.queries.length;e++)null!==Ob(t,e).matches&&this.queries[e].setDirty()}}class ib{constructor(t,e,n,a=null){this.predicate=t,this.descendants=e,this.isStatic=n,this.read=a}}class sb{constructor(t=[]){this.queries=t}elementStart(t,e){for(let n of this.queries)n.elementStart(t,e)}elementEnd(t){for(let e of this.queries)e.elementEnd(t)}embeddedTView(t){let e=null;for(let n=0;n<this.length;n++){const a=null!==e?e.length:0,r=this.getByIndex(n).embeddedTView(t,a);r&&(r.indexInDeclarationView=n,null!==e?e.push(r):e=[r])}return null!==e?new sb(e):null}template(t,e){for(let n of this.queries)n.template(t,e)}getByIndex(t){return this.queries[t]}get length(){return this.queries.length}track(t){this.queries.push(t)}}class ob{constructor(t,e=-1){this.metadata=t,this.matches=null,this.indexInDeclarationView=-1,this.crossesNgTemplate=!1,this._appliesToNextNode=!0,this._declarationNodeIndex=e}elementStart(t,e){this.isApplyingToNode(e)&&this.matchTNode(t,e)}elementEnd(t){this._declarationNodeIndex===t.index&&(this._appliesToNextNode=!1)}template(t,e){this.elementStart(t,e)}embeddedTView(t,e){return this.isApplyingToNode(t)?(this.crossesNgTemplate=!0,this.addMatch(-t.index,e),new ob(this.metadata)):null}isApplyingToNode(t){return this._appliesToNextNode&&!1===this.metadata.descendants?this._declarationNodeIndex===(t.parent?t.parent.index:-1):this._appliesToNextNode}matchTNode(t,e){if(Array.isArray(this.metadata.predicate)){const n=this.metadata.predicate;for(let a=0;a<n.length;a++)this.matchTNodeWithReadOption(t,e,ub(e,n[a]))}else{const n=this.metadata.predicate;n===wf?0===e.type&&this.matchTNodeWithReadOption(t,e,-1):this.matchTNodeWithReadOption(t,e,wa(e,t,n,!1,!1))}}matchTNodeWithReadOption(t,e,n){if(null!==n){const a=this.metadata.read;if(null!==a)if(a===Kc||a===Nf||a===wf&&0===e.type)this.addMatch(e.index,-2);else{const n=wa(e,t,a,!1,!1);null!==n&&this.addMatch(e.index,n)}else this.addMatch(e.index,n)}}addMatch(t,e){null===this.matches?this.matches=[t,e]:this.matches.push(t,e)}}function ub(t,e){const n=t.localNames;if(null!==n)for(let a=0;a<n.length;a+=2)if(n[a]===e)return n[a+1];return null}function lb(t,e,n,a){return-1===n?function(t,e){return 3===t.type||4===t.type?$s(Kc,t,e):0===t.type?Zs(wf,Kc,t,e):null}(e,t):-2===n?function(t,e,n){return n===Kc?$s(Kc,e,t):n===wf?Zs(wf,Kc,e,t):n===Nf?Js(Nf,Kc,e,t):void 0}(t,e,a):Sa(t[1].data,t,n,e)}function db(t,e,n){const a=t[5].queries[n];if(null===a.matches){const n=t[1].data,r=e.matches,i=new Array(r.length/2);for(let a=0;a<r.length;a+=2){const s=r[a];i[a/2]=s<0?null:lb(t,n[s],r[a+1],e.metadata.read)}a.matches=i}return a.matches}function cb(t){const e=Ae(),n=en();nn(n+1);const a=Ob(e[1],n);if(t.dirty&&Ue()===a.metadata.isStatic){if(null===a.matches)t.reset([]);else{const r=a.crossesNgTemplate?function t(e,n,a){const r=e[1].queries.getByIndex(n),i=r.matches;if(null!==i){const s=db(e,r,n);for(let n=0;n<i.length;n+=2){const r=i[n];if(r>0)a.push(s[n/2]);else{const s=i[n+1],o=e[-r];for(let e=9;e<o.length;e++){const n=o[e];n[17]===n[3]&&t(n,s,a)}if(null!==o[5])for(let e of o[5])t(e,s,a)}}}return a}(e,n,[]):db(e,a,n);t.reset(r),t.notifyOnChanges()}return!0}return!1}function fb(t,e,n){gb(Ae(),t,e,n,!0)}function hb(t,e,n){gb(Ae(),t,e,n,!1)}function gb(t,e,n,a,r){const i=t[1];i.firstTemplatePass&&(Tb(i,new ib(e,n,r,a),-1),r&&(i.staticViewQueries=!0)),_b(t)}function pb(){return xb(Ae(),en())}function bb(t,e,n,a){yb(Ae(),e,n,a,!1,Ve(),t)}function mb(t,e,n,a){yb(Ae(),e,n,a,!0,Ve(),t)}function yb(t,e,n,a,r,i,s){const o=t[1];o.firstTemplatePass&&(Tb(o,new ib(e,n,r,a),i.index),function(t,e){const n=t.contentQueries||(t.contentQueries=[]);e!==(t.contentQueries.length?n[n.length-1]:-1)&&n.push(t.queries.length-1,e)}(o,s),r&&(o.staticContentQueries=!0)),_b(t)}function vb(){return xb(Ae(),en())}function xb(t,e){return t[5].queries[e].queryList}function _b(t){const e=new nb;!function(t,e,n){const a=gs(t);a.push(e),t[1].firstTemplatePass&&ps(t).push(n,a.length-1)}(t,e,e.destroy),null===t[5]&&(t[5]=new rb),t[5].queries.push(new ab(e))}function Tb(t,e,n){null===t.queries&&(t.queries=new sb),t.queries.track(new ob(e,n))}function Ob(t,e){return t.queries.getByIndex(e)}function wb(t,e){return Zs(wf,Kc,t,e)}function Sb(t=C.Default){const e=Qs(!0);if(null!=e||t&C.Optional)return e;throw new Error("No provider for ChangeDetectorRef!")}const Ib=(()=>({"ɵɵattribute":Wu,"ɵɵattributeInterpolate1":al,"ɵɵattributeInterpolate2":rl,"ɵɵattributeInterpolate3":il,"ɵɵattributeInterpolate4":sl,"ɵɵattributeInterpolate5":ol,"ɵɵattributeInterpolate6":ul,"ɵɵattributeInterpolate7":ll,"ɵɵattributeInterpolate8":dl,"ɵɵattributeInterpolateV":cl,"ɵɵdefineBase":zt,"ɵɵdefineComponent":Pt,"ɵɵdefineDirective":Bt,"ɵɵdefineInjectable":k,"ɵɵdefineInjector":L,"ɵɵdefineNgModule":Ft,"ɵɵdefinePipe":Yt,"ɵɵdirectiveInject":Tl,"ɵɵgetFactoryOf":Ra,"ɵɵgetInheritedFactory":Aa,"ɵɵinject":rt,"ɵɵinjectAttribute":Ol,"ɵɵinjectPipeChangeDetectorRef":Sb,"ɵɵtemplateRefExtractor":wb,"ɵɵNgOnChangesFeature":Oc,"ɵɵProvidersFeature":jc,"ɵɵInheritDefinitionFeature":Nc,"ɵɵcontainer":gl,"ɵɵnextContext":od,"ɵɵcontainerRefreshStart":bl,"ɵɵcontainerRefreshEnd":ml,"ɵɵnamespaceHTML":gn,"ɵɵnamespaceMathML":hn,"ɵɵnamespaceSVG":fn,"ɵɵenableBindings":Ce,"ɵɵdisableBindings":Re,"ɵɵallocHostVars":ku,"ɵɵelementStart":Bl,"ɵɵelementEnd":Yl,"ɵɵelement":Hl,"ɵɵelementContainerStart":Kl,"ɵɵelementContainerEnd":$l,"ɵɵelementContainer":Zl,"ɵɵpureFunction0":Mp,"ɵɵpureFunction1":qp,"ɵɵpureFunction2":jp,"ɵɵpureFunction3":Fp,"ɵɵpureFunction4":Gp,"ɵɵpureFunction5":Vp,"ɵɵpureFunction6":zp,"ɵɵpureFunction7":Bp,"ɵɵpureFunction8":Yp,"ɵɵpureFunctionV":Hp,"ɵɵgetCurrentView":Xl,"ɵɵrestoreView":Ge,"ɵɵlistener":nd,"ɵɵload":_l,"ɵɵprojection":fd,"ɵɵupdateSyntheticHostBinding":tc,"ɵɵcomponentHostSyntheticListener":ad,"ɵɵpipeBind1":Wp,"ɵɵpipeBind2":Kp,"ɵɵpipeBind3":$p,"ɵɵpipeBind4":Zp,"ɵɵpipeBindV":Jp,"ɵɵprojectionDef":ld,"ɵɵhostProperty":Xd,"ɵɵproperty":Hu,"ɵɵpropertyInterpolate":hd,"ɵɵpropertyInterpolate1":gd,"ɵɵpropertyInterpolate2":pd,"ɵɵpropertyInterpolate3":bd,"ɵɵpropertyInterpolate4":md,"ɵɵpropertyInterpolate5":yd,"ɵɵpropertyInterpolate6":vd,"ɵɵpropertyInterpolate7":xd,"ɵɵpropertyInterpolate8":_d,"ɵɵpropertyInterpolateV":Td,"ɵɵpipe":Up,"ɵɵqueryRefresh":cb,"ɵɵviewQuery":hb,"ɵɵstaticViewQuery":fb,"ɵɵstaticContentQuery":mb,"ɵɵloadViewQuery":pb,"ɵɵcontentQuery":bb,"ɵɵloadContentQuery":vb,"ɵɵreference":xl,"ɵɵelementHostAttrs":Ul,"ɵɵclassMap":kl,"ɵɵclassMapInterpolate1":Pd,"ɵɵclassMapInterpolate2":Md,"ɵɵclassMapInterpolate3":qd,"ɵɵclassMapInterpolate4":jd,"ɵɵclassMapInterpolate5":Fd,"ɵɵclassMapInterpolate6":Gd,"ɵɵclassMapInterpolate7":Vd,"ɵɵclassMapInterpolate8":zd,"ɵɵclassMapInterpolateV":Bd,"ɵɵstyling":wl,"ɵɵstyleMap":Al,"ɵɵstyleProp":Il,"ɵɵstylePropInterpolate1":Yd,"ɵɵstylePropInterpolate2":Hd,"ɵɵstylePropInterpolate3":Ud,"ɵɵstylePropInterpolate4":Wd,"ɵɵstylePropInterpolate5":Kd,"ɵɵstylePropInterpolate6":$d,"ɵɵstylePropInterpolate7":Zd,"ɵɵstylePropInterpolate8":Jd,"ɵɵstylePropInterpolateV":Qd,"ɵɵstyleSanitizer":Sl,"ɵɵstylingApply":Pl,"ɵɵclassProp":Cl,"ɵɵselect":Oi,"ɵɵtemplate":pl,"ɵɵtext":Od,"ɵɵtextBinding":wd,"ɵɵtextInterpolate":Sd,"ɵɵtextInterpolate1":Id,"ɵɵtextInterpolate2":Nd,"ɵɵtextInterpolate3":Cd,"ɵɵtextInterpolate4":Rd,"ɵɵtextInterpolate5":Ad,"ɵɵtextInterpolate6":kd,"ɵɵtextInterpolate7":Ed,"ɵɵtextInterpolate8":Ld,"ɵɵtextInterpolateV":Dd,"ɵɵembeddedViewStart":Jl,"ɵɵembeddedViewEnd":Ql,"ɵɵi18n":dp,"ɵɵi18nAttributes":cp,"ɵɵi18nExp":gp,"ɵɵi18nStart":np,"ɵɵi18nEnd":sp,"ɵɵi18nApply":pp,"ɵɵi18nPostprocess":ip,"ɵɵi18nLocalize":wp,"ɵɵresolveWindow":Tn,"ɵɵresolveDocument":On,"ɵɵresolveBody":wn,"ɵɵsetComponentScope":Mt,"ɵɵsetNgModuleScope":Gt,"ɵɵsanitizeHtml":Or,"ɵɵsanitizeStyle":wr,"ɵɵdefaultStyleSanitizer":Ar,"ɵɵsanitizeResourceUrl":Ir,"ɵɵsanitizeScript":Nr,"ɵɵsanitizeUrl":Sr,"ɵɵsanitizeUrlOrResourceUrl":Rr}))(),Nb=[],Cb=[];let Rb=!1;function Ab(){if(!Rb){Rb=!0;try{for(let t=Cb.length-1;t>=0;t--){const{moduleType:e,ngModule:n}=Cb[t];n.declarations&&n.declarations.every(kb)&&(Cb.splice(t,1),qb(e,n))}}finally{Rb=!1}}}function kb(t){return Array.isArray(t)?t.every(kb):!!V(t)}function Eb(t,e={}){Lb(t,e),function(t,e){Cb.push({moduleType:t,ngModule:e})}(t,e)}function Lb(t,e,n=!1){const a=pt(e.declarations||Nb);let r=null;Object.defineProperty(t,At,{configurable:!0,get:()=>(null===r&&(r=W().compileNgModule(Ib,`ng:///${t.name}/ngModuleDef.js`,{type:t,bootstrap:pt(e.bootstrap||Nb).map(V),declarations:a.map(V),imports:pt(e.imports||Nb).map(V).map(Gb),exports:pt(e.exports||Nb).map(V).map(Gb),emitInline:!0,schemas:e.schemas?pt(e.schemas):null,id:e.id||null})),r)});let i=null;Object.defineProperty(t,q,{get:()=>{if(null===i){const n={name:t.name,type:t,deps:go(t),providers:e.providers||Nb,imports:[(e.imports||Nb).map(V),(e.exports||Nb).map(V)]};i=W().compileInjector(Ib,`ng:///${t.name}/ngInjectorDef.js`,n)}return i},configurable:!1})}let Db=new Map,Pb=new Map;function Mb(){Db=new Map,Pb=new Map,Cb.length=0}function qb(t,e){const n=pt(e.declarations||Nb),a=Fb(t);n.forEach(e=>{e.hasOwnProperty(Nt)?jb(Ht(e),a):e.hasOwnProperty(Ct)||e.hasOwnProperty(Rt)||(e.ngSelectorScope=t)})}function jb(t,e){t.directiveDefs=()=>Array.from(e.compilation.directives).map(t=>t.hasOwnProperty(Nt)?Ht(t):Ut(t)).filter(t=>!!t),t.pipeDefs=()=>Array.from(e.compilation.pipes).map(t=>Wt(t)),t.schemas=e.schemas,t.tView=null}function Fb(t,e){if(!Vb(t))throw new Error(`${t.name} does not have an ngModuleDef`);const n=$t(t);if(null!==n.transitiveCompileScopes)return n.transitiveCompileScopes;const a={schemas:n.schemas||null,compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return In(n.declarations).forEach(t=>{Wt(t)?a.compilation.pipes.add(t):a.compilation.directives.add(t)}),In(n.imports).forEach(t=>{const n=t;if(!Vb(n))throw new Error(`Importing ${n.name} which does not have an ngModuleDef`);e&&e(n);const r=Fb(n,e);r.exported.directives.forEach(t=>a.compilation.directives.add(t)),r.exported.pipes.forEach(t=>a.compilation.pipes.add(t))}),In(n.exports).forEach(t=>{const n=t;if(Vb(n)){const t=Fb(n,e);t.exported.directives.forEach(t=>{a.compilation.directives.add(t),a.exported.directives.add(t)}),t.exported.pipes.forEach(t=>{a.compilation.pipes.add(t),a.exported.pipes.add(t)})}else Wt(n)?a.exported.pipes.add(n):a.exported.directives.add(n)}),n.transitiveCompileScopes=a,a}function Gb(t){return function(t){return void 0!==t.ngModule}(t)?t.ngModule:t}function Vb(t){return!!$t(t)}function zb(t,e){let n=null;!function(t,e){Cu(e)&&(Iu.set(t,e),Nu.add(t))}(t,e),Object.defineProperty(t,Nt,{get:()=>{const a=W();if(null===n){if(Cu(e)){const n=[`Component '${t.name}' is not resolved:`];throw e.templateUrl&&n.push(` - templateUrl: ${e.templateUrl}`),e.styleUrls&&e.styleUrls.length&&n.push(` - styleUrls: ${JSON.stringify(e.styleUrls)}`),n.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(n.join("\n"))}const r=e.templateUrl||`ng:///${t.name}/template.html`,i=Object.assign({},Hb(t,e),{typeSourceSpan:a.createParseSourceSpan("Component",t.name,r),template:e.template||"",preserveWhitespaces:e.preserveWhitespaces||!1,styles:e.styles||It,animations:e.animations,directives:[],changeDetection:e.changeDetection,pipes:new Map,encapsulation:e.encapsulation||Ot.Emulated,interpolation:e.interpolation,viewProviders:e.viewProviders||null});if(i.usesInheritance&&Ub(t),n=a.compileComponent(Ib,r,i),Ab(),void 0!==t.ngSelectorScope){const e=Fb(t.ngSelectorScope);jb(n,e)}}return n},configurable:!1}),bo(t)}function Bb(t,e){let n=null;Object.defineProperty(t,Ct,{get:()=>{if(null===n){const a=t&&t.name,r=`ng:///${a}/ngDirectiveDef.js`,i=W(),s=Hb(t,e);s.typeSourceSpan=i.createParseSourceSpan("Directive",a,r),s.usesInheritance&&Ub(t),n=i.compileDirective(Ib,r,s)}return n},configurable:!1}),bo(t)}function Yb(t){return Object.getPrototypeOf(t.prototype)===Object.prototype}function Hb(t,e){const n=ho().ownPropMetadata(t);return{name:t.name,type:t,typeArgumentCount:0,selector:e.selector,deps:go(t),host:e.host||St,propMetadata:n,inputs:e.inputs||It,outputs:e.outputs||It,queries:Zb(t,n,Jb),lifecycle:{usesOnChanges:t.prototype.hasOwnProperty("ngOnChanges")},typeSourceSpan:null,usesInheritance:!Yb(t),exportAs:(a=e.exportAs,void 0===a?null:a.split(",").map(t=>t.trim())),providers:e.providers||null,viewQueries:Zb(t,n,Qb)};var a}function Ub(t){const e=Object.prototype;let n=Object.getPrototypeOf(t);for(;n&&n!==e;){if(!Ut(n)&&!Ht(n)&&!Kt(n)){const t=Kb(n);t&&Wb(n,t)}n=Object.getPrototypeOf(n)}}function Wb(t,e){let n=null;Object.defineProperty(t,Et,{get:()=>{if(null===n){const a=`ng://${t&&t.name}/ngBaseDef.js`,r=W();n=r.compileBase(Ib,a,e)}return n},configurable:!1})}function Kb(t){const e=ho().ownPropMetadata(t),n=Zb(t,e,Qb),a=Zb(t,e,Jb);let r,i,s=!1;for(const o in e)e[o].forEach(t=>{const e=t.ngMetadataName;"Input"===e?(r=r||{},r[o]=t.bindingPropertyName?[t.bindingPropertyName,o]:o):"Output"===e?(i=i||{},i[o]=t.bindingPropertyName||o):"HostBinding"!==e&&"HostListener"!==e||(s=!0)});return r||i||n.length||a.length||s?{name:t.name,type:t,inputs:r,outputs:i,viewQueries:n,queries:a,propMetadata:e}:null}function $b(t,e){return{propertyName:t,predicate:(n=e.selector,"string"==typeof n?n.split(",").map(t=>t.trim()):V(n)),descendants:e.descendants,first:e.first,read:e.read?e.read:null,static:!!e.static};var n}function Zb(t,e,n){const a=[];for(const r in e)if(e.hasOwnProperty(r)){const i=e[r];i.forEach(e=>{if(n(e)){if(!e.selector)throw new Error(`Can't construct a query for the property "${r}" of `+`"${xn(t)}" since the query selector wasn't defined.`);if(i.some(Xb))throw new Error("Cannot combine @Input decorators with query decorators");a.push($b(r,e))}})}return a}function Jb(t){const e=t.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function Qb(t){const e=t.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function Xb(t){return"Input"===t.ngMetadataName}function tm(t,e){let n=null;Object.defineProperty(t,Rt,{get:()=>{if(null===n){const a=t.name;n=W().compilePipe(Ib,`ng:///${a}/ngPipeDef.js`,{type:t,typeArgumentCount:0,name:a,deps:go(t),pipeName:e.name,pure:void 0===e.pure||e.pure})}return n},configurable:!1})}const em=y("Directive",(t={})=>t,void 0,void 0,(t,e)=>fm(t,e)),nm=y("Component",(t={})=>Object.assign({changeDetection:xt.Default},t),em,void 0,(t,e)=>cm(t,e)),am=y("Pipe",t=>Object.assign({pure:!0},t),void 0,void 0,(t,e)=>hm(t,e)),rm=_("Input",t=>({bindingPropertyName:t})),im=_("Output",t=>({bindingPropertyName:t})),sm=_("HostBinding",t=>({hostPropertyName:t})),om=_("HostListener",(t,e)=>({eventName:t,args:e})),um=zb,lm=Bb,dm=tm,cm=Wc,fm=Wc,hm=Wc,gm=y("NgModule",t=>t,void 0,void 0,(t,e)=>bm(t,e)),pm=Eb,bm=function(t,e){let n=e&&e.imports||[];e&&e.exports&&(n=[...n,e.exports]),t.ngInjectorDef=L({factory:wo(t,{useClass:t}),providers:e&&e.providers,imports:n})},mm=new K("Application Initializer");class ym{constructor(t){this.appInits=t,this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}runInitializers(){if(this.initialized)return;const t=[],e=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let n=0;n<this.appInits.length;n++){const e=this.appInits[n]();td(e)&&t.push(e)}Promise.all(t).then(()=>{e()}).catch(t=>{this.reject(t)}),0===t.length&&e(),this.initialized=!0}}const vm=new K("AppId");function xm(){return`${Tm()}${Tm()}${Tm()}`}const _m={provide:vm,useFactory:xm,deps:[]};function Tm(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const Om=new K("Platform Initializer"),wm=new K("Platform ID"),Sm=new K("appBootstrapListener"),Im=new K("Application Packages Root URL");class Nm{log(t){console.log(t)}warn(t){console.warn(t)}}const Cm=new K("LocaleId"),Rm=new K("Translations"),Am=new K("TranslationsFormat"),km=function(){var t={Error:0,Warning:1,Ignore:2};return t[t.Error]="Error",t[t.Warning]="Warning",t[t.Ignore]="Ignore",t}(),Em=!0,Lm=!1;class Dm{constructor(t,e){this.ngModuleFactory=t,this.componentFactories=e}}function Pm(){throw new Error("Runtime compiler is not loaded")}const Mm=function(t){return new Dp(t)},qm=Pm,jm=function(t){return Promise.resolve(Mm(t))},Fm=Pm,Gm=function(t){const e=Mm(t),n=In($t(t).declarations).reduce((t,e)=>{const n=Ht(e);return n&&t.push(new Ig(n)),t},[]);return new Dm(e,n)},Vm=Pm,zm=function(t){return Promise.resolve(Gm(t))},Bm=Pm;class Ym{constructor(){this.compileModuleSync=qm,this.compileModuleAsync=Fm,this.compileModuleAndAllComponentsSync=Vm,this.compileModuleAndAllComponentsAsync=Bm}clearCache(){}clearCacheFor(t){}getModuleId(t){}}const Hm=new K("compilerOptions");class Um{}let Wm,Km;function $m(){const t=U.wtf;return!(!t||(Wm=t.trace,!Wm)||(Km=Wm.events,0))}function Zm(t,e=null){return Km.createScope(t,e)}function Jm(t,e){return Wm.leaveScope(t,e),e}function Qm(t,e){return Wm.beginTimeRange(t,e)}function Xm(t){Wm.endTimeRange(t)}const ty=$m();function ey(t,e){return null}const ny=ty?Zm:(t,e)=>ey,ay=ty?Jm:(t,e)=>e,ry=ty?Qm:(t,e)=>null,iy=ty?Xm:t=>null,sy=(()=>Promise.resolve(0))();function oy(t){"undefined"==typeof Zone?sy.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}class uy{constructor({enableLongStackTrace:t=!1}){if(this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb(!1),this.onMicrotaskEmpty=new tb(!1),this.onStable=new tb(!1),this.onError=new tb(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");var e;Zone.assertZonePatched(),this._nesting=0,this._outer=this._inner=Zone.current,Zone.wtfZoneSpec&&(this._inner=this._inner.fork(Zone.wtfZoneSpec)),Zone.TaskTrackingZoneSpec&&(this._inner=this._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(this._inner=this._inner.fork(Zone.longStackTraceZoneSpec)),(e=this)._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(t,n,a,r,i,s)=>{try{return fy(e),t.invokeTask(a,r,i,s)}finally{hy(e)}},onInvoke:(t,n,a,r,i,s,o)=>{try{return fy(e),t.invoke(a,r,i,s,o)}finally{hy(e)}},onHasTask:(t,n,a,r)=>{t.hasTask(a,r),n===a&&("microTask"==r.change?(e.hasPendingMicrotasks=r.microTask,cy(e)):"macroTask"==r.change&&(e.hasPendingMacrotasks=r.macroTask))},onHandleError:(t,n,a,r)=>(t.handleError(a,r),e.runOutsideAngular(()=>e.onError.emit(r)),!1)})}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!uy.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(uy.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(t,e,n){return this._inner.run(t,e,n)}runTask(t,e,n,a){const r=this._inner,i=r.scheduleEventTask("NgZoneEvent: "+a,t,dy,ly,ly);try{return r.runTask(i,e,n)}finally{r.cancelTask(i)}}runGuarded(t,e,n){return this._inner.runGuarded(t,e,n)}runOutsideAngular(t){return this._outer.run(t)}}function ly(){}const dy={};function cy(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function fy(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function hy(t){t._nesting--,cy(t)}class gy{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new tb,this.onMicrotaskEmpty=new tb,this.onStable=new tb,this.onError=new tb}run(t){return t()}runGuarded(t){return t()}runOutsideAngular(t){return t()}runTask(t){return t()}}class py{constructor(t){this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?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:()=>{uy.assertNotInAngularZone(),oy(()=>{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())oy(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb(this._didWork)}this._didWork=!1});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(e=>!e.updateCb||!e.updateCb(t)||(clearTimeout(e.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,e,n){let a=-1;e&&e>0&&(a=setTimeout(()=>{this._callbacks=this._callbacks.filter(t=>t.timeoutId!==a),t(this._didWork,this.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:a,updateCb:n})}whenStable(t,e,n){if(n&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(t,e,n),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(t,e,n){return[]}}class by{constructor(){this._applications=new Map,xy.addToWindow(this)}registerApplication(t,e){this._applications.set(t,e)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,e=!0){return xy.findTestabilityInTree(this,t,e)}}class my{addToWindow(t){}findTestabilityInTree(t,e,n){return null}}function yy(t){xy=t}let vy,xy=new my;function _y(t,e,n){const a=new Dp(n);if(0===Iu.size)return Promise.resolve(a);const r=function(t){const e=[];return t.forEach(t=>t&&e.push(...t)),e}(t.get(Hm,[]).concat(e).map(t=>t.providers));if(0===r.length)return Promise.resolve(a);const i=W(),s=Bo.create({providers:r}).get(i.ResourceLoader);return Su(t=>Promise.resolve(s.get(t))).then(()=>a)}function Ty(t){return t.isBoundToModule}const Oy=new K("AllowMultipleToken");class wy{constructor(t,e){this.name=t,this.token=e}}function Sy(t){if(vy&&!vy.destroyed&&!vy.injector.get(Oy,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");vy=t.get(Ay);const e=t.get(Om,null);return e&&e.forEach(t=>t()),vy}function Iy(t,e,n=[]){const a=`Platform: ${e}`,r=new K(a);return(e=[])=>{let i=Ry();if(!i||i.injector.get(Oy,!1))if(t)t(n.concat(e).concat({provide:r,useValue:!0}));else{const t=n.concat(e).concat({provide:r,useValue:!0});Sy(Bo.create({providers:t,name:a}))}return Ny(r)}}function Ny(t){const e=Ry();if(!e)throw new Error("No platform exists!");if(!e.injector.get(t,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return e}function Cy(){vy&&!vy.destroyed&&vy.destroy()}function Ry(){return vy&&!vy.destroyed?vy:null}class Ay{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,e){const n=function(t){let e;return e="noop"===t?new gy:("zone.js"===t?void 0:t)||new uy({enableLongStackTrace:Wa()}),e}(e?e.ngZone:void 0),a=[{provide:uy,useValue:n}];return n.run(()=>{const e=Bo.create({providers:a,parent:this.injector,name:t.moduleType.name}),r=t.create(e),i=r.injector.get(Da,null);if(!i)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return Lm&&Ip(r.injector.get(Cm,Dg)||Dg),r.onDestroy(()=>Ly(this._modules,r)),n.runOutsideAngular(()=>n.onError.subscribe({next:t=>{i.handleError(t)}})),function(t,e,n){try{const a=n();return td(a)?a.catch(n=>{throw e.runOutsideAngular(()=>t.handleError(n)),n}):a}catch(a){throw e.runOutsideAngular(()=>t.handleError(a)),a}}(i,n,()=>{const t=r.injector.get(ym);return t.runInitializers(),t.donePromise.then(()=>(this._moduleDoBootstrap(r),r))})})}bootstrapModule(t,e=[]){const n=ky({},e);return function(t,e,n){return t.get(Um).createCompiler([e]).compileModuleAsync(n)}(this.injector,n,t).then(t=>this.bootstrapModuleFactory(t,n))}_moduleDoBootstrap(t){const e=t.injector.get(Ey);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(t=>e.bootstrap(t));else{if(!t.instance.ngDoBootstrap)throw new Error(`The module ${j(t.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. `+"Please define one of these.");t.instance.ngDoBootstrap(e)}this._modules.push(t)}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(t=>t.destroy()),this._destroyListeners.forEach(t=>t()),this._destroyed=!0}get destroyed(){return this._destroyed}}function ky(t,e){return Array.isArray(e)?e.reduce(ky,t):Object.assign({},t,e)}let Ey=(()=>{class t{constructor(t,e,n,a,r,o){this._zone=t,this._console=e,this._injector=n,this._exceptionHandler=a,this._componentFactoryResolver=r,this._initStatus=o,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=Wa(),this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const l=new i.a(t=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{t.next(this._stable),t.complete()})}),d=new i.a(t=>{let e;this._zone.runOutsideAngular(()=>{e=this._zone.onStable.subscribe(()=>{uy.assertNotInAngularZone(),oy(()=>{this._stable||this._zone.hasPendingMacrotasks||this._zone.hasPendingMicrotasks||(this._stable=!0,t.next(!0))})})});const n=this._zone.onUnstable.subscribe(()=>{uy.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{t.next(!1)}))});return()=>{e.unsubscribe(),n.unsubscribe()}});this.isStable=Object(s.a)(l,d.pipe(t=>{return u()((e=g,function(t){let n;n="function"==typeof e?e:function(){return e};const a=Object.create(t,f);return a.source=t,a.subjectFactory=n,a})(t));var e}))}bootstrap(t,e){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let n;n=t instanceof Gc?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);const a=n instanceof Uc?null:this._injector.get(ft),r=n.create(Bo.NULL,[],e||n.selector,a);r.onDestroy(()=>{this._unloadComponent(r)});const i=r.injector.get(py,null);return i&&r.injector.get(by).registerApplication(r.location.nativeElement,i),this._loadComponent(r),Wa()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),r}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");const e=t._tickScope();try{this._runningTick=!0;for(let t of this._views)t.detectChanges();if(this._enforceNoNewChanges)for(let t of this._views)t.checkNoChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1,ay(e)}}attachView(t){const e=t;this._views.push(e),e.attachToAppRef(this)}detachView(t){const e=t;Ly(this._views,e),e.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(Sm,[]).concat(this._bootstrapListeners).forEach(e=>e(t))}_unloadComponent(t){this.detachView(t.hostView),Ly(this.components,t)}ngOnDestroy(){this._views.slice().forEach(t=>t.destroy())}get viewCount(){return this._views.length}}return t._tickScope=ny("ApplicationRef#tick()"),t})();function Ly(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}class Dy{}function Py(t){const e=kp(t);if(!e)throw jy(t);return e}function My(t){const e=kp(t);if(!e)throw jy(t);return new Dp(e)}const qy=Py;function jy(t){return new Error(`No module with ID ${t} loaded`)}class Fy{}const Gy={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"};class Vy{constructor(t,e){this._compiler=t,this._config=e||Gy}load(t){return!Lm&&this._compiler instanceof Ym?this.loadFactory(t):this.loadAndCompile(t)}loadAndCompile(t){let[e,a]=t.split("#");return void 0===a&&(a="default"),n("crnd")(e).then(t=>t[a]).then(t=>zy(t,e,a)).then(t=>this._compiler.compileModuleAsync(t))}loadFactory(t){let[e,a]=t.split("#"),r="NgFactory";return void 0===a&&(a="default",r=""),n("crnd")(this._config.factoryPathPrefix+e+this._config.factoryPathSuffix).then(t=>t[a+r]).then(t=>zy(t,e,a))}}function zy(t,e,n){if(!t)throw new Error(`Cannot find '${n}' in '${e}'`);return t}class By extends Xs{}class Yy extends By{}class Hy{constructor(t,e){this.name=t,this.callback=e}}class Uy{constructor(t,e,n){this.listeners=[],this.parent=null,this._debugContext=n,this.nativeNode=t,e&&e instanceof Wy&&e.addChild(this)}get injector(){return this._debugContext.injector}get componentInstance(){return this._debugContext.component}get context(){return this._debugContext.context}get references(){return this._debugContext.references}get providerTokens(){return this._debugContext.providerTokens}}class Wy extends Uy{constructor(t,e,n){super(t,e,n),this.properties={},this.attributes={},this.classes={},this.styles={},this.childNodes=[],this.nativeElement=t}addChild(t){t&&(this.childNodes.push(t),t.parent=this)}removeChild(t){const e=this.childNodes.indexOf(t);-1!==e&&(t.parent=null,this.childNodes.splice(e,1))}insertChildrenAfter(t,e){const n=this.childNodes.indexOf(t);-1!==n&&(this.childNodes.splice(n+1,0,...e),e.forEach(e=>{e.parent&&e.parent.removeChild(e),t.parent=this}))}insertBefore(t,e){const n=this.childNodes.indexOf(t);-1===n?this.addChild(e):(e.parent&&e.parent.removeChild(e),e.parent=this,this.childNodes.splice(n,0,e))}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return function t(e,n,a){e.childNodes.forEach(e=>{e instanceof Wy&&(n(e)&&a.push(e),t(e,n,a))})}(this,t,e),e}queryAllNodes(t){const e=[];return function t(e,n,a){e instanceof Wy&&e.childNodes.forEach(e=>{n(e)&&a.push(e),e instanceof Wy&&t(e,n,a)})}(this,t,e),e}get children(){return this.childNodes.filter(t=>t instanceof Wy)}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name==t&&n.callback(e)})}}function Ky(t){return t.map(t=>t.nativeElement)}class $y{constructor(t){this.nativeNode=t}get parent(){const t=this.nativeNode.parentNode;return t?new Zy(t):null}get injector(){return ic(this.nativeNode)}get componentInstance(){const t=this.nativeNode;return t&&(ec(t)||ac(t))}get context(){return ec(this.nativeNode)||nc(this.nativeNode)}get listeners(){return cc(this.nativeNode).filter(dc)}get references(){return function(t){const e=oc(t);return void 0===e.localRefs&&(e.localRefs=function(t,e){const n=t[1].data[e];if(n&&n.localNames){const e={};let a=n.index+1;for(let r=0;r<n.localNames.length;r+=2)e[n.localNames[r]]=t[a],a++;return e}return null}(e.lView,e.nodeIndex)),e.localRefs||{}}(this.nativeNode)}get providerTokens(){return function(t){const e=oc(t,!1);if(!e)return[];const n=e.lView[1],a=n.data[e.nodeIndex],r=[],i=a.directiveEnd;for(let o=65535&a.providerIndexes;o<i;o++){let t=n.data[o];void 0!==(s=t).type&&void 0!==s.template&&void 0!==s.declaredInputs&&(t=t.type),r.push(t)}var s;return r}(this.nativeNode)}}class Zy extends $y{constructor(t){super(t)}get nativeElement(){return this.nativeNode.nodeType==Node.ELEMENT_NODE?this.nativeNode:null}get name(){return this.nativeElement.nodeName}get properties(){const t=oc(this.nativeNode),e=t.lView,n=e[1].data,a=n[t.nodeIndex],r=function(t,e,n){const a={};let r=function(t,e){let n=t-1,a=e[n];for(;"string"==typeof a&&!Sn(a);)a=e[--n];return n+1}(t.propertyMetadataStartIndex,n);for(;r<t.propertyMetadataEndIndex;){let t,i=n[r];for(;!Sn(i);)t=(t||"")+vn(e[r])+n[r],i=n[++r];t=void 0===t?e[r]:t+=e[r];const s=i.split("�"),o=s[0];o&&(a[o]=s[1]&&s[2]?s[1]+t+s[2]:t),r++}return a}(a,e,n),i=function(t,e,n){const a={};let r=t.directiveEnd,i=n[r];for(;"string"==typeof i;)a[i.split("�")[0]]=e[r],i=n[++r];return a}(a,e,n),s=function(t){const e=t.classes;let n="";for(const a of Object.keys(e))e[a]&&(n=n?n+` ${a}`:a);return n}(this),o=Object.assign({},r,i);return s&&(o.className=o.className?o.className+` ${s}`:s),o}get attributes(){const t={},e=this.nativeElement;if(!e)return t;const n=oc(e),a=n.lView[1].data[n.nodeIndex].attrs,r=[];if(a){let e=0;for(;e<a.length;){const n=a[e];if("string"!=typeof n)break;t[n]=a[e+1],r.push(n.toLowerCase()),e+=2}}const i=e.attributes;for(let s=0;s<i.length;s++){const e=i[s];-1===r.indexOf(e.name)&&(t[e.name]=e.value)}return t}get styles(){return Jy(this.nativeElement,!1)}get classes(){return Jy(this.nativeElement,!0)}get childNodes(){const t=this.nativeNode.childNodes,e=[];for(let n=0;n<t.length;n++)e.push(av(t[n]));return e}get children(){const t=this.nativeElement;if(!t)return[];const e=t.children,n=[];for(let a=0;a<e.length;a++)n.push(av(e[a]));return n}query(t){return this.queryAll(t)[0]||null}queryAll(t){const e=[];return Qy(this,t,e,!0),e}queryAllNodes(t){const e=[];return Qy(this,t,e,!1),e}triggerEventHandler(t,e){this.listeners.forEach(n=>{n.name===t&&n.callback(e)})}}function Jy(t,e){if(t){const n=lc(t),a=n.lView,r=a[1].data[n.nodeIndex];return e?Un(r.classes)?new Ti(r.classes,a,!0).values:_i(r.classes):Un(r.styles)?new Ti(r.styles,a,!1).values:_i(r.styles)}return{}}function Qy(t,e,n,a){const r=oc(t.nativeNode);Xy(r.lView[1].data[r.nodeIndex],r.lView,e,n,a,t.nativeNode)}function Xy(t,e,n,a,r,i){const s=me(t,e);if(3===t.type||4===t.type){if(ev(s,n,a,r,i),Xt(t)){const s=xe(t.index,e);s&&s[1].firstChild&&Xy(s[1].firstChild,s,n,a,r,i)}else t.child&&Xy(t.child,e,n,a,r,i),s&&function t(e,n,a,r){const i=e.childNodes,s=i.length;for(let o=0;o<s;o++){const e=i[o],s=rv(e);s&&(r&&s instanceof Zy&&n(s)&&-1===a.indexOf(s)?a.push(s):!r&&n(s)&&-1===a.indexOf(s)&&a.push(s),t(e,n,a,r))}}(s,n,a,r);const o=e[t.index];Jt(o)&&tv(o,n,a,r,i)}else if(0===t.type){const s=e[t.index];ev(s[7],n,a,r,i),tv(s,n,a,r,i)}else if(1===t.type){const s=da(e),o=s[6].projection[t.projection];if(Array.isArray(o))for(let t of o)ev(t,n,a,r,i);else if(o){const t=s[3];Xy(t[1].data[o.index],t,n,a,r,i)}}else t.child&&Xy(t.child,e,n,a,r,i);if(i!==s){const s=2&t.flags?t.projectionNext:t.next;s&&Xy(s,e,n,a,r,i)}}function tv(t,e,n,a,r){for(let i=9;i<t.length;i++){const s=t[i];Xy(s[1].node,s,e,n,a,r)}}function ev(t,e,n,a,r){if(r!==t){const r=rv(t);if(!r)return;a&&r instanceof Zy&&e(r)&&-1===n.indexOf(r)?n.push(r):!a&&e(r)&&-1===n.indexOf(r)&&n.push(r)}}const nv=new Map;function av(t){return t instanceof Node?(t.hasOwnProperty("__ng_debug__")||(t.__ng_debug__=t.nodeType==Node.ELEMENT_NODE?new Zy(t):new $y(t)),t.__ng_debug__):null}const rv=function(t){return nv.get(t)||null};function iv(t){nv.set(t.nativeNode,t)}const sv=Uy,ov=Wy,uv=Iy(null,"core",[{provide:wm,useValue:"unknown"},{provide:Ay,deps:[Bo]},{provide:by,deps:[]},{provide:Nm,deps:[]}]);function lv(){return Tf}function dv(){return Of}function cv(t){return t?(Lm&&Ip(t),t):Dg}const fv=[{provide:Ey,useClass:Ey,deps:[uy,Nm,Bo,Da,Yc,ym]},{provide:Sg,deps:[uy],useFactory:hv},{provide:ym,useClass:ym,deps:[[new O,mm]]},{provide:Ym,useClass:Ym,deps:[]},_m,{provide:vf,useFactory:lv,deps:[]},{provide:xf,useFactory:dv,deps:[]},{provide:Cm,useFactory:cv,deps:[[new T(Cm),new O,new S]]}];function hv(t){let e=[];return t.onStable.subscribe(()=>{for(;e.length;)e.pop()()}),function(t){e.push(t)}}class gv{constructor(t){}}function pv(t,e,n,a,r,i){t|=1;const{matchedQueries:s,references:o,matchedQueryIds:u}=sh(e);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,flags:t,checkIndex:-1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:s,matchedQueryIds:u,references:o,ngContentIndex:n,childCount:a,bindings:[],bindingFlags:0,outputs:[],element:{ns:null,name:null,attrs:null,template:i?dh(i):null,componentProvider:null,componentView:null,componentRendererType:null,publicProviders:null,allProviders:null,handleEvent:r||zf},provider:null,text:null,query:null,ngContent:null}}function bv(t,e,n,a,r,i,s=[],o,u,l,d,c){l||(l=zf);const{matchedQueries:f,references:h,matchedQueryIds:g}=sh(n);let p=null,b=null;i&&([p,b]=mh(i)),o=o||[];const m=new Array(o.length);for(let x=0;x<o.length;x++){const[t,e,n]=o[x],[a,r]=mh(e);let i=void 0,s=void 0;switch(15&t){case 4:s=n;break;case 1:case 8:i=n}m[x]={flags:t,ns:a,name:r,nonMinifiedName:r,securityContext:i,suffix:s}}u=u||[];const y=new Array(u.length);for(let x=0;x<u.length;x++){const[t,e]=u[x];y[x]={type:0,target:t,eventName:e,propName:null}}const v=(s=s||[]).map(([t,e])=>{const[n,a]=mh(t);return[n,a,e]});return c=function(t){if(t&&"$$undefined"===t.id){const e=null!=t.encapsulation&&t.encapsulation!==Ot.None||t.styles.length||Object.keys(t.data).length;t.id=e?`c${Wf++}`:"$$empty"}return t&&"$$empty"===t.id&&(t=null),t||null}(c),d&&(e|=33554432),{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e|=1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:f,matchedQueryIds:g,references:h,ngContentIndex:a,childCount:r,bindings:m,bindingFlags:yh(m),outputs:y,element:{ns:p,name:b,attrs:v,template:null,componentProvider:null,componentView:d||null,componentRendererType:c,publicProviders:null,allProviders:null,handleEvent:l||zf},provider:null,text:null,query:null,ngContent:null}}function mv(t,e,n){const a=n.element,r=t.root.selectorOrNode,i=t.renderer;let s;if(t.parent||!r){s=a.name?i.createElement(a.name,a.ns):i.createComment("");const r=uh(t,e,n);r&&i.appendChild(r,s)}else s=i.selectRootElement(r,!!a.componentRendererType&&a.componentRendererType.encapsulation===Ot.ShadowDom);if(a.attrs)for(let o=0;o<a.attrs.length;o++){const[t,e,n]=a.attrs[o];i.setAttribute(s,e,n,t)}return s}function yv(t,e,n,a){for(let s=0;s<n.outputs.length;s++){const o=n.outputs[s],u=vv(t,n.nodeIndex,(i=o.eventName,(r=o.target)?`${r}:${i}`:i));let l=o.target,d=t;"component"===o.target&&(l=null,d=e);const c=d.renderer.listen(l||a,o.eventName,u);t.disposables[n.outputIndex+s]=c}var r,i}function vv(t,e,n){return a=>Xf(t,e,n,a)}function xv(t,e,n,a){if(!$f(t,e,n,a))return!1;const r=e.bindings[n],i=Mf(t,e.nodeIndex),s=i.renderElement,o=r.name;switch(15&r.flags){case 1:!function(t,e,n,a,r,i){const s=e.securityContext;let o=s?t.root.sanitizer.sanitize(s,i):i;o=null!=o?o.toString():null;const u=t.renderer;null!=i?u.setAttribute(n,r,o,a):u.removeAttribute(n,r,a)}(t,r,s,r.ns,o,a);break;case 2:!function(t,e,n,a){const r=t.renderer;a?r.addClass(e,n):r.removeClass(e,n)}(t,s,o,a);break;case 4:!function(t,e,n,a,r){let i=t.root.sanitizer.sanitize(yr.STYLE,r);if(null!=i){i=i.toString();const t=e.suffix;null!=t&&(i+=t)}else i=null;const s=t.renderer;null!=i?s.setStyle(n,a,i):s.removeStyle(n,a)}(t,r,s,o,a);break;case 8:!function(t,e,n,a,r){const i=e.securityContext;let s=i?t.root.sanitizer.sanitize(i,r):r;t.renderer.setProperty(n,a,s)}(33554432&e.flags&&32&r.flags?i.componentView:t,r,s,o,a)}return!0}function _v(t,e,n){let a=[];for(let r in n)a.push({propName:r,bindingType:n[r]});return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,ngContentIndex:-1,matchedQueries:{},matchedQueryIds:0,references:{},childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:{id:e,filterId:ih(e),bindings:a},ngContent:null}}function Tv(t){const e=t.def.nodeMatchedQueries;for(;t.parent&&rh(t);){let n=t.parentNodeDef;t=t.parent;const a=n.nodeIndex+n.childCount;for(let r=0;r<=a;r++){const a=t.def.nodes[r];67108864&a.flags&&536870912&a.flags&&(a.query.filterId&e)===a.query.filterId&&Ff(t,r).setDirty(),!(1&a.flags&&r+a.childCount<n.nodeIndex)&&67108864&a.childFlags&&536870912&a.childFlags||(r+=a.childCount)}}if(134217728&t.def.nodeFlags)for(let n=0;n<t.def.nodes.length;n++){const e=t.def.nodes[n];134217728&e.flags&&536870912&e.flags&&Ff(t,n).setDirty(),n+=e.childCount}}function Ov(t,e){const n=Ff(t,e.nodeIndex);if(!n.dirty)return;let a,r=void 0;if(67108864&e.flags){const n=e.parent.parent;r=wv(t,n.nodeIndex,n.nodeIndex+n.childCount,e.query,[]),a=qf(t,e.parent.nodeIndex).instance}else 134217728&e.flags&&(r=wv(t,0,t.def.nodes.length-1,e.query,[]),a=t.component);n.reset(r);const i=e.query.bindings;let s=!1;for(let o=0;o<i.length;o++){const t=i[o];let e;switch(t.bindingType){case 0:e=n.first;break;case 1:e=n,s=!0}a[t.propName]=e}s&&n.notifyOnChanges()}function wv(t,e,n,a,r){for(let i=e;i<=n;i++){const e=t.def.nodes[i],n=e.matchedQueries[a.id];if(null!=n&&r.push(Sv(t,e,n)),1&e.flags&&e.element.template&&(e.element.template.nodeMatchedQueries&a.filterId)===a.filterId){const n=Mf(t,i);if((e.childMatchedQueries&a.filterId)===a.filterId&&(wv(t,i+1,i+e.childCount,a,r),i+=e.childCount),16777216&e.flags){const t=n.viewContainer._embeddedViews;for(let e=0;e<t.length;e++){const i=t[e],s=th(i);s&&s===n&&wv(i,0,i.def.nodes.length-1,a,r)}}const s=n.template._projectedViews;if(s)for(let t=0;t<s.length;t++){const e=s[t];wv(e,0,e.def.nodes.length-1,a,r)}}(e.childMatchedQueries&a.filterId)!==a.filterId&&(i+=e.childCount)}return r}function Sv(t,e,n){if(null!=n)switch(n){case 1:return Mf(t,e.nodeIndex).renderElement;case 0:return new Kc(Mf(t,e.nodeIndex).renderElement);case 2:return Mf(t,e.nodeIndex).template;case 3:return Mf(t,e.nodeIndex).viewContainer;case 4:return qf(t,e.nodeIndex).instance}}function Iv(t,e){return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:-1,flags:8,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:t,childCount:0,bindings:[],bindingFlags:0,outputs:[],element:null,provider:null,text:null,query:null,ngContent:{index:e}}}function Nv(t,e,n){const a=uh(t,e,n);a&&hh(t,n.ngContent.index,1,a,null,void 0)}function Cv(t,e){return kv(128,t,new Array(e+1))}function Rv(t,e){return kv(32,t,new Array(e))}function Av(t,e){const n=Object.keys(e),a=n.length,r=new Array(a);for(let i=0;i<a;i++){const t=n[i];r[e[t]]=t}return kv(64,t,r)}function kv(t,e,n){const a=new Array(n.length);for(let r=0;r<n.length;r++){const t=n[r];a[r]={flags:8,name:t,ns:null,nonMinifiedName:t,securityContext:null,suffix:null}}return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:e,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:-1,childCount:0,bindings:a,bindingFlags:yh(a),outputs:[],element:null,provider:null,text:null,query:null,ngContent:null}}function Ev(t,e,n){const a=new Array(n.length-1);for(let r=1;r<n.length;r++)a[r-1]={flags:8,name:null,ns:null,nonMinifiedName:null,securityContext:null,suffix:n[r]};return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:2,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:{},matchedQueryIds:0,references:{},ngContentIndex:e,childCount:0,bindings:a,bindingFlags:8,outputs:[],element:null,provider:null,text:{prefix:n[0]},query:null,ngContent:null}}function Lv(t,e,n){let a;const r=t.renderer;a=r.createText(n.text.prefix);const i=uh(t,e,n);return i&&r.appendChild(i,a),{renderText:a}}function Dv(t,e){return(null!=t?t.toString():"")+e.suffix}function Pv(t,e,n,a){let r=0,i=0,s=0,o=0,u=0,l=null,d=null,c=!1,f=!1,h=null;for(let g=0;g<e.length;g++){const t=e[g];if(t.nodeIndex=g,t.parent=l,t.bindingIndex=r,t.outputIndex=i,t.renderParent=d,s|=t.flags,u|=t.matchedQueryIds,t.element){const e=t.element;e.publicProviders=l?l.element.publicProviders:Object.create(null),e.allProviders=e.publicProviders,c=!1,f=!1,t.element.template&&(u|=t.element.template.nodeMatchedQueries)}if(qv(l,t,e.length),r+=t.bindings.length,i+=t.outputs.length,!d&&3&t.flags&&(h=t),20224&t.flags){c||(c=!0,l.element.publicProviders=Object.create(l.element.publicProviders),l.element.allProviders=l.element.publicProviders);const e=0!=(32768&t.flags);0==(8192&t.flags)||e?l.element.publicProviders[Yf(t.provider.token)]=t:(f||(f=!0,l.element.allProviders=Object.create(l.element.publicProviders)),l.element.allProviders[Yf(t.provider.token)]=t),e&&(l.element.componentProvider=t)}if(l?(l.childFlags|=t.flags,l.directChildFlags|=t.flags,l.childMatchedQueries|=t.matchedQueryIds,t.element&&t.element.template&&(l.childMatchedQueries|=t.element.template.nodeMatchedQueries)):o|=t.flags,t.childCount>0)l=t,Mv(t)||(d=t);else for(;l&&g===l.nodeIndex+l.childCount;){const t=l.parent;t&&(t.childFlags|=l.childFlags,t.childMatchedQueries|=l.childMatchedQueries),l=t,d=l&&Mv(l)?l.renderParent:l}}return{factory:null,nodeFlags:s,rootNodeFlags:o,nodeMatchedQueries:u,flags:t,nodes:e,updateDirectives:n||zf,updateRenderer:a||zf,handleEvent:(t,n,a,r)=>e[n].element.handleEvent(t,a,r),bindingCount:r,outputCount:i,lastRenderRootNode:h}}function Mv(t){return 0!=(1&t.flags)&&null===t.element.name}function qv(t,e,n){const a=e.element&&e.element.template;if(a){if(!a.lastRenderRootNode)throw new Error("Illegal State: Embedded templates without nodes are not allowed!");if(a.lastRenderRootNode&&16777216&a.lastRenderRootNode.flags)throw new Error(`Illegal State: Last root node of a template can't have embedded views, at index ${e.nodeIndex}!`)}if(20224&e.flags&&0==(1&(t?t.flags:0)))throw new Error(`Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index ${e.nodeIndex}!`);if(e.query){if(67108864&e.flags&&(!t||0==(16384&t.flags)))throw new Error(`Illegal State: Content Query nodes need to be children of directives, at index ${e.nodeIndex}!`);if(134217728&e.flags&&t)throw new Error(`Illegal State: View Query nodes have to be top level nodes, at index ${e.nodeIndex}!`)}if(e.childCount){const a=t?t.nodeIndex+t.childCount:n-1;if(e.nodeIndex<=a&&e.nodeIndex+e.childCount>a)throw new Error(`Illegal State: childCount of node leads outside of parent, at index ${e.nodeIndex}!`)}}function jv(t,e,n,a){const r=Vv(t.root,t.renderer,t,e,n);return zv(r,t.component,a),Bv(r),r}function Fv(t,e,n){const a=Vv(t,t.renderer,null,null,e);return zv(a,n,n),Bv(a),a}function Gv(t,e,n,a){const r=e.element.componentRendererType;let i;return i=r?t.root.rendererFactory.createRenderer(a,r):t.root.renderer,Vv(t.root,i,t,e.element.componentProvider,n)}function Vv(t,e,n,a,r){const i=new Array(r.nodes.length),s=r.outputCount?new Array(r.outputCount):null;return{def:r,parent:n,viewContainerParent:null,parentNodeDef:a,context:null,component:null,nodes:i,state:13,root:t,renderer:e,oldValues:new Array(r.bindingCount),disposables:s,initIndex:-1}}function zv(t,e,n){t.component=e,t.context=n}function Bv(t){let e;ah(t)&&(e=Mf(t.parent,t.parentNodeDef.parent.nodeIndex).renderElement);const n=t.def,a=t.nodes;for(let r=0;r<n.nodes.length;r++){const i=n.nodes[r];let s;switch(Vf.setCurrentNode(t,r),201347067&i.flags){case 1:const n=mv(t,e,i);let o=void 0;if(33554432&i.flags){const e=dh(i.element.componentView);o=Vf.createComponentView(t,i,e,n)}yv(t,o,i,n),s={renderElement:n,componentView:o,viewContainer:null,template:i.element.template?Yh(t,i):void 0},16777216&i.flags&&(s.viewContainer=Gh(t,i,s));break;case 2:s=Lv(t,e,i);break;case 512:case 1024:case 2048:case 256:s=a[r],s||4096&i.flags||(s={instance:cg(t,i)});break;case 16:s={instance:fg(t,i)};break;case 16384:s=a[r],s||(s={instance:hg(t,i)}),32768&i.flags&&zv(Mf(t,i.parent.nodeIndex).componentView,s.instance,s.instance);break;case 32:case 64:case 128:s={value:void 0};break;case 67108864:case 134217728:s=new nb;break;case 8:Nv(t,e,i),s=void 0}a[r]=s}Qv(t,Jv.CreateViewNodes),nx(t,201326592,268435456,0)}function Yv(t){Wv(t),Vf.updateDirectives(t,1),Xv(t,Jv.CheckNoChanges),Vf.updateRenderer(t,1),Qv(t,Jv.CheckNoChanges),t.state&=-97}function Hv(t){1&t.state?(t.state&=-2,t.state|=2):t.state&=-3,Lf(t,0,256),Wv(t),Vf.updateDirectives(t,0),Xv(t,Jv.CheckAndUpdate),nx(t,67108864,536870912,0);let e=Lf(t,256,512);_g(t,2097152|(e?1048576:0)),Vf.updateRenderer(t,0),Qv(t,Jv.CheckAndUpdate),nx(t,134217728,536870912,0),e=Lf(t,512,768),_g(t,8388608|(e?4194304:0)),2&t.def.flags&&(t.state&=-9),t.state&=-97,Lf(t,768,1024)}function Uv(t,e,n,a,r,i,s,o,u,l,d,c,f){return 0===n?function(t,e,n,a,r,i,s,o,u,l,d,c){switch(201347067&e.flags){case 1:return function(t,e,n,a,r,i,s,o,u,l,d,c){const f=e.bindings.length;let h=!1;return f>0&&xv(t,e,0,n)&&(h=!0),f>1&&xv(t,e,1,a)&&(h=!0),f>2&&xv(t,e,2,r)&&(h=!0),f>3&&xv(t,e,3,i)&&(h=!0),f>4&&xv(t,e,4,s)&&(h=!0),f>5&&xv(t,e,5,o)&&(h=!0),f>6&&xv(t,e,6,u)&&(h=!0),f>7&&xv(t,e,7,l)&&(h=!0),f>8&&xv(t,e,8,d)&&(h=!0),f>9&&xv(t,e,9,c)&&(h=!0),h}(t,e,n,a,r,i,s,o,u,l,d,c);case 2:return function(t,e,n,a,r,i,s,o,u,l,d,c){let f=!1;const h=e.bindings,g=h.length;if(g>0&&$f(t,e,0,n)&&(f=!0),g>1&&$f(t,e,1,a)&&(f=!0),g>2&&$f(t,e,2,r)&&(f=!0),g>3&&$f(t,e,3,i)&&(f=!0),g>4&&$f(t,e,4,s)&&(f=!0),g>5&&$f(t,e,5,o)&&(f=!0),g>6&&$f(t,e,6,u)&&(f=!0),g>7&&$f(t,e,7,l)&&(f=!0),g>8&&$f(t,e,8,d)&&(f=!0),g>9&&$f(t,e,9,c)&&(f=!0),f){let f=e.text.prefix;g>0&&(f+=Dv(n,h[0])),g>1&&(f+=Dv(a,h[1])),g>2&&(f+=Dv(r,h[2])),g>3&&(f+=Dv(i,h[3])),g>4&&(f+=Dv(s,h[4])),g>5&&(f+=Dv(o,h[5])),g>6&&(f+=Dv(u,h[6])),g>7&&(f+=Dv(l,h[7])),g>8&&(f+=Dv(d,h[8])),g>9&&(f+=Dv(c,h[9]));const p=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(p,f)}return f}(t,e,n,a,r,i,s,o,u,l,d,c);case 16384:return function(t,e,n,a,r,i,s,o,u,l,d,c){const f=qf(t,e.nodeIndex),h=f.instance;let g=!1,p=void 0;const b=e.bindings.length;return b>0&&Kf(t,e,0,n)&&(g=!0,p=xg(t,f,e,0,n,p)),b>1&&Kf(t,e,1,a)&&(g=!0,p=xg(t,f,e,1,a,p)),b>2&&Kf(t,e,2,r)&&(g=!0,p=xg(t,f,e,2,r,p)),b>3&&Kf(t,e,3,i)&&(g=!0,p=xg(t,f,e,3,i,p)),b>4&&Kf(t,e,4,s)&&(g=!0,p=xg(t,f,e,4,s,p)),b>5&&Kf(t,e,5,o)&&(g=!0,p=xg(t,f,e,5,o,p)),b>6&&Kf(t,e,6,u)&&(g=!0,p=xg(t,f,e,6,u,p)),b>7&&Kf(t,e,7,l)&&(g=!0,p=xg(t,f,e,7,l,p)),b>8&&Kf(t,e,8,d)&&(g=!0,p=xg(t,f,e,8,d,p)),b>9&&Kf(t,e,9,c)&&(g=!0,p=xg(t,f,e,9,c,p)),p&&h.ngOnChanges(p),65536&e.flags&&Df(t,256,e.nodeIndex)&&h.ngOnInit(),262144&e.flags&&h.ngDoCheck(),g}(t,e,n,a,r,i,s,o,u,l,d,c);case 32:case 64:case 128:return function(t,e,n,a,r,i,s,o,u,l,d,c){const f=e.bindings;let h=!1;const g=f.length;if(g>0&&$f(t,e,0,n)&&(h=!0),g>1&&$f(t,e,1,a)&&(h=!0),g>2&&$f(t,e,2,r)&&(h=!0),g>3&&$f(t,e,3,i)&&(h=!0),g>4&&$f(t,e,4,s)&&(h=!0),g>5&&$f(t,e,5,o)&&(h=!0),g>6&&$f(t,e,6,u)&&(h=!0),g>7&&$f(t,e,7,l)&&(h=!0),g>8&&$f(t,e,8,d)&&(h=!0),g>9&&$f(t,e,9,c)&&(h=!0),h){const h=jf(t,e.nodeIndex);let p;switch(201347067&e.flags){case 32:p=new Array(f.length),g>0&&(p[0]=n),g>1&&(p[1]=a),g>2&&(p[2]=r),g>3&&(p[3]=i),g>4&&(p[4]=s),g>5&&(p[5]=o),g>6&&(p[6]=u),g>7&&(p[7]=l),g>8&&(p[8]=d),g>9&&(p[9]=c);break;case 64:p={},g>0&&(p[f[0].name]=n),g>1&&(p[f[1].name]=a),g>2&&(p[f[2].name]=r),g>3&&(p[f[3].name]=i),g>4&&(p[f[4].name]=s),g>5&&(p[f[5].name]=o),g>6&&(p[f[6].name]=u),g>7&&(p[f[7].name]=l),g>8&&(p[f[8].name]=d),g>9&&(p[f[9].name]=c);break;case 128:const t=n;switch(g){case 1:p=t.transform(n);break;case 2:p=t.transform(a);break;case 3:p=t.transform(a,r);break;case 4:p=t.transform(a,r,i);break;case 5:p=t.transform(a,r,i,s);break;case 6:p=t.transform(a,r,i,s,o);break;case 7:p=t.transform(a,r,i,s,o,u);break;case 8:p=t.transform(a,r,i,s,o,u,l);break;case 9:p=t.transform(a,r,i,s,o,u,l,d);break;case 10:p=t.transform(a,r,i,s,o,u,l,d,c)}}h.value=p}return h}(t,e,n,a,r,i,s,o,u,l,d,c);default:throw"unreachable"}}(t,e,a,r,i,s,o,u,l,d,c,f):function(t,e,n){switch(201347067&e.flags){case 1:return function(t,e,n){let a=!1;for(let r=0;r<n.length;r++)xv(t,e,r,n[r])&&(a=!0);return a}(t,e,n);case 2:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){let r="";for(let t=0;t<n.length;t++)r+=Dv(n[t],a[t]);r=e.text.prefix+r;const i=Pf(t,e.nodeIndex).renderText;t.renderer.setValue(i,r)}return r}(t,e,n);case 16384:return function(t,e,n){const a=qf(t,e.nodeIndex),r=a.instance;let i=!1,s=void 0;for(let o=0;o<n.length;o++)Kf(t,e,o,n[o])&&(i=!0,s=xg(t,a,e,o,n[o],s));return s&&r.ngOnChanges(s),65536&e.flags&&Df(t,256,e.nodeIndex)&&r.ngOnInit(),262144&e.flags&&r.ngDoCheck(),i}(t,e,n);case 32:case 64:case 128:return function(t,e,n){const a=e.bindings;let r=!1;for(let i=0;i<n.length;i++)$f(t,e,i,n[i])&&(r=!0);if(r){const r=jf(t,e.nodeIndex);let i;switch(201347067&e.flags){case 32:i=n;break;case 64:i={};for(let r=0;r<n.length;r++)i[a[r].name]=n[r];break;case 128:const t=n[0],e=n.slice(1);i=t.transform(...e)}r.value=i}return r}(t,e,n);default:throw"unreachable"}}(t,e,a)}function Wv(t){const e=t.def;if(4&e.nodeFlags)for(let n=0;n<e.nodes.length;n++){const a=e.nodes[n];if(4&a.flags){const e=Mf(t,n).template._projectedViews;if(e)for(let n=0;n<e.length;n++){const a=e[n];a.state|=32,Qf(a,t)}}else 0==(4&a.childFlags)&&(n+=a.childCount)}}function Kv(t,e,n,a,r,i,s,o,u,l,d,c,f){return 0===n?function(t,e,n,a,r,i,s,o,u,l,d,c){const f=e.bindings.length;f>0&&Zf(t,e,0,n),f>1&&Zf(t,e,1,a),f>2&&Zf(t,e,2,r),f>3&&Zf(t,e,3,i),f>4&&Zf(t,e,4,s),f>5&&Zf(t,e,5,o),f>6&&Zf(t,e,6,u),f>7&&Zf(t,e,7,l),f>8&&Zf(t,e,8,d),f>9&&Zf(t,e,9,c)}(t,e,a,r,i,s,o,u,l,d,c,f):function(t,e,n){for(let a=0;a<n.length;a++)Zf(t,e,a,n[a])}(t,e,a),!1}function $v(t,e){if(Ff(t,e.nodeIndex).dirty)throw Af(Vf.createDebugContext(t,e.nodeIndex),`Query ${e.query.id} not dirty`,`Query ${e.query.id} dirty`,0!=(1&t.state))}function Zv(t){if(!(128&t.state)){if(Xv(t,Jv.Destroy),Qv(t,Jv.Destroy),_g(t,131072),t.disposables)for(let e=0;e<t.disposables.length;e++)t.disposables[e]();!function(t){if(!(16&t.state))return;const e=th(t);if(e){const n=e.template._projectedViews;n&&(yt(n,n.indexOf(t)),Vf.dirtyParentQueries(t))}}(t),t.renderer.destroyNode&&function(t){const e=t.def.nodes.length;for(let n=0;n<e;n++){const e=t.def.nodes[n];1&e.flags?t.renderer.destroyNode(Mf(t,n).renderElement):2&e.flags?t.renderer.destroyNode(Pf(t,n).renderText):(67108864&e.flags||134217728&e.flags)&&Ff(t,n).destroy()}}(t),ah(t)&&t.renderer.destroy(),t.state|=128}}const Jv=function(){var t={CreateViewNodes:0,CheckNoChanges:1,CheckNoChangesProjectedViews:2,CheckAndUpdate:3,CheckAndUpdateProjectedViews:4,Destroy:5};return t[t.CreateViewNodes]="CreateViewNodes",t[t.CheckNoChanges]="CheckNoChanges",t[t.CheckNoChangesProjectedViews]="CheckNoChangesProjectedViews",t[t.CheckAndUpdate]="CheckAndUpdate",t[t.CheckAndUpdateProjectedViews]="CheckAndUpdateProjectedViews",t[t.Destroy]="Destroy",t}();function Qv(t,e){const n=t.def;if(33554432&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];33554432&r.flags?tx(Mf(t,a).componentView,e):0==(33554432&r.childFlags)&&(a+=r.childCount)}}function Xv(t,e){const n=t.def;if(16777216&n.nodeFlags)for(let a=0;a<n.nodes.length;a++){const r=n.nodes[a];if(16777216&r.flags){const n=Mf(t,a).viewContainer._embeddedViews;for(let t=0;t<n.length;t++)tx(n[t],e)}else 0==(16777216&r.childFlags)&&(a+=r.childCount)}}function tx(t,e){const n=t.state;switch(e){case Jv.CheckNoChanges:0==(128&n)&&(12==(12&n)?Yv(t):64&n&&ex(t,Jv.CheckNoChangesProjectedViews));break;case Jv.CheckNoChangesProjectedViews:0==(128&n)&&(32&n?Yv(t):64&n&&ex(t,e));break;case Jv.CheckAndUpdate:0==(128&n)&&(12==(12&n)?Hv(t):64&n&&ex(t,Jv.CheckAndUpdateProjectedViews));break;case Jv.CheckAndUpdateProjectedViews:0==(128&n)&&(32&n?Hv(t):64&n&&ex(t,e));break;case Jv.Destroy:Zv(t);break;case Jv.CreateViewNodes:Bv(t)}}function ex(t,e){Xv(t,e),Qv(t,e)}function nx(t,e,n,a){if(!(t.def.nodeFlags&e&&t.def.nodeFlags&n))return;const r=t.def.nodes.length;for(let i=0;i<r;i++){const r=t.def.nodes[i];if(r.flags&e&&r.flags&n)switch(Vf.setCurrentNode(t,r.nodeIndex),a){case 0:Ov(t,r);break;case 1:$v(t,r)}r.childFlags&e&&r.childFlags&n||(i+=r.childCount)}}let ax=!1;function rx(){if(ax)return;ax=!0;const t=Wa()?{setCurrentNode:Nx,createRootView:sx,createEmbeddedView:ux,createComponentView:lx,createNgModuleRef:dx,overrideProvider:gx,overrideComponentView:px,clearOverrides:bx,checkAndUpdateView:xx,checkNoChangesView:_x,destroyView:Tx,createDebugContext:(t,e)=>new Px(t,e),handleEvent:Cx,updateDirectives:Rx,updateRenderer:Ax}:{setCurrentNode:()=>{},createRootView:ix,createEmbeddedView:jv,createComponentView:Gv,createNgModuleRef:Jh,overrideProvider:zf,overrideComponentView:zf,clearOverrides:zf,checkAndUpdateView:Hv,checkNoChangesView:Yv,destroyView:Zv,createDebugContext:(t,e)=>new Px(t,e),handleEvent:(t,e,n,a)=>t.def.handleEvent(t,e,n,a),updateDirectives:(t,e)=>t.def.updateDirectives(0===e?yx:vx,t),updateRenderer:(t,e)=>t.def.updateRenderer(0===e?yx:vx,t)};Vf.setCurrentNode=t.setCurrentNode,Vf.createRootView=t.createRootView,Vf.createEmbeddedView=t.createEmbeddedView,Vf.createComponentView=t.createComponentView,Vf.createNgModuleRef=t.createNgModuleRef,Vf.overrideProvider=t.overrideProvider,Vf.overrideComponentView=t.overrideComponentView,Vf.clearOverrides=t.clearOverrides,Vf.checkAndUpdateView=t.checkAndUpdateView,Vf.checkNoChangesView=t.checkNoChangesView,Vf.destroyView=t.destroyView,Vf.resolveDep=yg,Vf.createDebugContext=t.createDebugContext,Vf.handleEvent=t.handleEvent,Vf.updateDirectives=t.updateDirectives,Vf.updateRenderer=t.updateRenderer,Vf.dirtyParentQueries=Tv}function ix(t,e,n,a,r,i){const s=r.injector.get(ef);return Fv(ox(t,r,s,e,n),a,i)}function sx(t,e,n,a,r,i){const s=r.injector.get(ef),o=ox(t,r,new Fx(s),e,n),u=mx(a);return qx(Ox.create,Fv,null,[o,u,i])}function ox(t,e,n,a,r){const i=e.injector.get(vr),s=e.injector.get(Da),o=n.createRenderer(null,null);return{ngModule:e,injector:t,projectableNodes:a,selectorOrNode:r,sanitizer:i,rendererFactory:n,renderer:o,errorHandler:s}}function ux(t,e,n,a){const r=mx(n);return qx(Ox.create,jv,null,[t,e,r,a])}function lx(t,e,n,a){return n=hx.get(e.element.componentProvider.provider.token)||mx(n),qx(Ox.create,Gv,null,[t,e,n,a])}function dx(t,e,n,a){return Jh(t,e,n,function(t){const{hasOverrides:e,hasDeprecatedOverrides:n}=function(t){let e=!1,n=!1;return 0===cx.size?{hasOverrides:e,hasDeprecatedOverrides:n}:(t.providers.forEach(t=>{const a=cx.get(t.token);3840&t.flags&&a&&(e=!0,n=n||a.deprecatedBehavior)}),t.modules.forEach(t=>{fx.forEach((a,r)=>{D(r).providedIn===t&&(e=!0,n=n||a.deprecatedBehavior)})}),{hasOverrides:e,hasDeprecatedOverrides:n})}(t);return e?(function(t){for(let e=0;e<t.providers.length;e++){const a=t.providers[e];n&&(a.flags|=4096);const r=cx.get(a.token);r&&(a.flags=-3841&a.flags|r.flags,a.deps=oh(r.deps),a.value=r.value)}if(fx.size>0){let e=new Set(t.modules);fx.forEach((a,r)=>{if(e.has(D(r).providedIn)){let e={token:r,flags:a.flags|(n?4096:0),deps:oh(a.deps),value:a.value,index:t.providers.length};t.providers.push(e),t.providersByKey[Yf(r)]=e}})}}(t=t.factory(()=>zf)),t):t}(a))}const cx=new Map,fx=new Map,hx=new Map;function gx(t){let e;cx.set(t.token,t),"function"==typeof t.token&&(e=D(t.token))&&"function"==typeof e.providedIn&&fx.set(t.token,t)}function px(t,e){const n=dh(qh(e)),a=dh(n.nodes[0].element.componentView);hx.set(t,a)}function bx(){cx.clear(),fx.clear(),hx.clear()}function mx(t){if(0===cx.size)return t;const e=function(t){const e=[];let n=null;for(let a=0;a<t.nodes.length;a++){const r=t.nodes[a];1&r.flags&&(n=r),n&&3840&r.flags&&cx.has(r.provider.token)&&(e.push(n.nodeIndex),n=null)}return e}(t);if(0===e.length)return t;t=t.factory(()=>zf);for(let a=0;a<e.length;a++)n(t,e[a]);return t;function n(t,e){for(let n=e+1;n<t.nodes.length;n++){const e=t.nodes[n];if(1&e.flags)return;if(3840&e.flags){const t=e.provider,n=cx.get(t.token);n&&(e.flags=-3841&e.flags|n.flags,t.deps=oh(n.deps),t.value=n.value)}}}}function yx(t,e,n,a,r,i,s,o,u,l,d,c,f){const h=t.def.nodes[e];return Uv(t,h,n,a,r,i,s,o,u,l,d,c,f),224&h.flags?jf(t,e).value:void 0}function vx(t,e,n,a,r,i,s,o,u,l,d,c,f){const h=t.def.nodes[e];return Kv(t,h,n,a,r,i,s,o,u,l,d,c,f),224&h.flags?jf(t,e).value:void 0}function xx(t){return qx(Ox.detectChanges,Hv,null,[t])}function _x(t){return qx(Ox.checkNoChanges,Yv,null,[t])}function Tx(t){return qx(Ox.destroy,Zv,null,[t])}const Ox=function(){var t={create:0,detectChanges:1,checkNoChanges:2,destroy:3,handleEvent:4};return t[t.create]="create",t[t.detectChanges]="detectChanges",t[t.checkNoChanges]="checkNoChanges",t[t.destroy]="destroy",t[t.handleEvent]="handleEvent",t}();let wx,Sx,Ix;function Nx(t,e){Sx=t,Ix=e}function Cx(t,e,n,a){return Nx(t,e),qx(Ox.handleEvent,t.def.handleEvent,null,[t,e,n,a])}function Rx(t,e){if(128&t.state)throw Ef(Ox[wx]);return Nx(t,Lx(t,0)),t.def.updateDirectives((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),16384&i.flags&&Nx(t,Lx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function Ax(t,e){if(128&t.state)throw Ef(Ox[wx]);return Nx(t,Dx(t,0)),t.def.updateRenderer((function(t,n,a,...r){const i=t.def.nodes[n];return 0===e?kx(t,i,a,r):Ex(t,i,a,r),3&i.flags&&Nx(t,Dx(t,n)),224&i.flags?jf(t,i.nodeIndex).value:void 0}),t)}function kx(t,e,n,a){if(Uv(t,e,n,...a)){const s=1===n?a[0]:a;if(16384&e.flags){const n={};for(let t=0;t<e.bindings.length;t++){const a=e.bindings[t],o=s[t];8&a.flags&&(n[(r=a.nonMinifiedName,i=void 0,i=r.replace(/[$@]/g,"_"),`ng-reflect-${r=i.replace(Er,(...t)=>"-"+t[1].toLowerCase())}`)]=Lr(o))}const a=e.parent,o=Mf(t,a.nodeIndex).renderElement;if(a.element.name)for(let e in n){const a=n[e];null!=a?t.renderer.setAttribute(o,e,a):t.renderer.removeAttribute(o,e)}else t.renderer.setValue(o,`bindings=${JSON.stringify(n,null,2)}`)}}var r,i}function Ex(t,e,n,a){Kv(t,e,n,...a)}function Lx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(16384&e.flags&&e.bindings&&e.bindings.length)return n}return null}function Dx(t,e){for(let n=e;n<t.def.nodes.length;n++){const e=t.def.nodes[n];if(3&e.flags&&e.bindings&&e.bindings.length)return n}return null}class Px{constructor(t,e){this.view=t,this.nodeIndex=e,null==e&&(this.nodeIndex=e=0),this.nodeDef=t.def.nodes[e];let n=this.nodeDef,a=t;for(;n&&0==(1&n.flags);)n=n.parent;if(!n)for(;!n&&a;)n=eh(a),a=a.parent;this.elDef=n,this.elView=a}get elOrCompView(){return Mf(this.elView,this.elDef.nodeIndex).componentView||this.view}get injector(){return Uh(this.elView,this.elDef)}get component(){return this.elOrCompView.component}get context(){return this.elOrCompView.context}get providerTokens(){const t=[];if(this.elDef)for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&t.push(n.provider.token),e+=n.childCount}return t}get references(){const t={};if(this.elDef){Mx(this.elView,this.elDef,t);for(let e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){const n=this.elView.def.nodes[e];20224&n.flags&&Mx(this.elView,n,t),e+=n.childCount}}return t}get componentRenderElement(){const t=function(t){for(;t&&!ah(t);)t=t.parent;return t.parent?Mf(t.parent,eh(t).nodeIndex):null}(this.elOrCompView);return t?t.renderElement:void 0}get renderNode(){return 2&this.nodeDef.flags?nh(this.view,this.nodeDef):nh(this.elView,this.elDef)}logError(t,...e){let n,a;2&this.nodeDef.flags?(n=this.view.def,a=this.nodeDef.nodeIndex):(n=this.elView.def,a=this.elDef.nodeIndex);const r=function(t,e){let n=-1;for(let a=0;a<=e;a++)3&t.nodes[a].flags&&n++;return n}(n,a);let i=-1;n.factory(()=>(i++,i===r?t.error.bind(t,...e):zf)),i<r&&(t.error("Illegal state: the ViewDefinitionFactory did not call the logger!"),t.error(...e))}}function Mx(t,e,n){for(let a in e.references)n[a]=Sv(t,e,e.references[a])}function qx(t,e,n,a){const r=wx,i=Sx,s=Ix;try{wx=t;const o=e.apply(n,a);return Sx=i,Ix=s,wx=r,o}catch(o){if(ka(o)||!Sx)throw o;throw function(t,e){return t instanceof Error||(t=new Error(t.toString())),kf(t,e),t}(o,jx())}}function jx(){return Sx?new Px(Sx,Ix):null}class Fx{constructor(t){this.delegate=t}createRenderer(t,e){return new Gx(this.delegate.createRenderer(t,e))}begin(){this.delegate.begin&&this.delegate.begin()}end(){this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.delegate.whenRenderingDone?this.delegate.whenRenderingDone():Promise.resolve(null)}}class Gx{constructor(t){this.delegate=t,this.debugContextFactory=jx,this.data=this.delegate.data}createDebugContext(t){return this.debugContextFactory(t)}destroyNode(t){const e=rv(t);!function(t){nv.delete(t.nativeNode)}(e),e instanceof Uy&&(e.listeners.length=0),this.delegate.destroyNode&&this.delegate.destroyNode(t)}destroy(){this.delegate.destroy()}createElement(t,e){const n=this.delegate.createElement(t,e),a=this.createDebugContext(n);if(a){const e=new Wy(n,null,a);e.name=t,iv(e)}return n}createComment(t){const e=this.delegate.createComment(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}createText(t){const e=this.delegate.createText(t),n=this.createDebugContext(e);return n&&iv(new Uy(e,null,n)),e}appendChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.addChild(a),this.delegate.appendChild(t,e)}insertBefore(t,e,n){const a=rv(t),r=rv(e),i=rv(n);a&&r&&a instanceof Wy&&a.insertBefore(i,r),this.delegate.insertBefore(t,e,n)}removeChild(t,e){const n=rv(t),a=rv(e);n&&a&&n instanceof Wy&&n.removeChild(a),this.delegate.removeChild(t,e)}selectRootElement(t,e){const n=this.delegate.selectRootElement(t,e),a=jx();return a&&iv(new Wy(n,null,a)),n}setAttribute(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.attributes[a?a+":"+e:e]=n),this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.attributes[n?n+":"+e:e]=null),this.delegate.removeAttribute(t,e,n)}addClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!0),this.delegate.addClass(t,e)}removeClass(t,e){const n=rv(t);n&&n instanceof Wy&&(n.classes[e]=!1),this.delegate.removeClass(t,e)}setStyle(t,e,n,a){const r=rv(t);r&&r instanceof Wy&&(r.styles[e]=n),this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.styles[e]=null),this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){const a=rv(t);a&&a instanceof Wy&&(a.properties[e]=n),this.delegate.setProperty(t,e,n)}listen(t,e,n){if("string"!=typeof t){const a=rv(t);a&&a.listeners.push(new Hy(e,n))}return this.delegate.listen(t,e,n)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setValue(t,e){return this.delegate.setValue(t,e)}}function Vx(t){return rx(),Vf.overrideProvider(t)}function zx(t,e){return rx(),Vf.overrideComponentView(t,e)}function Bx(){return rx(),Vf.clearOverrides()}function Yx(t,e,n){return new Hx(t,e,n)}class Hx extends ht{constructor(t,e,n){super(),this.moduleType=t,this._bootstrapComponents=e,this._ngModuleDefFactory=n}create(t){rx();const e=function(t){const e=Array.from(t.providers),n=Array.from(t.modules),a={};for(const r in t.providersByKey)a[r]=t.providersByKey[r];return{factory:t.factory,isRoot:t.isRoot,providers:e,modules:n,providersByKey:a}}(dh(this._ngModuleDefFactory));return Vf.createNgModuleRef(this.moduleType,t||Bo.NULL,this._bootstrapComponents,e)}}},"8YOa":function(t,e,n){var a=n("0BK2"),r=n("hh1v"),i=n("UTVS"),s=n("m/L8").f,o=n("kOOl"),u=n("uy83"),l=o("meta"),d=0,c=Object.isExtensible||function(){return!0},f=function(t){s(t,l,{value:{objectID:"O"+ ++d,weakData:{}}})},h=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,l)){if(!c(t))return"F";if(!e)return"E";f(t)}return t[l].objectID},getWeakData:function(t,e){if(!i(t,l)){if(!c(t))return!0;if(!e)return!1;f(t)}return t[l].weakData},onFreeze:function(t){return u&&h.REQUIRED&&c(t)&&!i(t,l)&&f(t),t}};a[l]=!0},"8j5A":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="it-IT">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Attiva/Disattiva barra di navigazione</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servizi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configurazione</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduli Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blocco</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Immagini</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Esecuzione della copia speculare</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI </target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>File system</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utenti</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartimenti</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Selezionare una lingua</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Caricamento pannello dati in corso...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selezione ora di Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Impostazioni di ripristino</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Indietro</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Non è stato possibile caricare i dati.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>selezionato</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trovato</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>totale</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descrizione</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descrizione lunga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Default</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Default del daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valori</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Salva</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visualizzatore mappa CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Caricamento in corso...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sì.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annulla</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Chiudi</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Elenco degli host</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Prestazioni complessive</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nessuna voce trovata</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log dei cluster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log delle revisioni</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Caricamento della configurazione in corso...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Impossibile caricare la configurazione.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifica modulo Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Il valore immesso non è un UUID valido, ad es.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Il valore immesso deve essere un indirizzo IP valido.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Il valore immesso deve essere un numero.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Il valore immesso deve essere un numero o un decimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aggiorna</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID cluster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mappa mon modificata</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoca mappa mon</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con richiesta</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon richiesto</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Nel quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Non nel quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Aggiungi</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funzioni</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD in tutto il cluster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Invia</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzate...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorità di recupero OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorità</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizza valori di priorità</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Questo campo è obbligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Il valore deve essere compreso tra 0 e 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ripesa</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Elenco degli OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valore</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifica</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Elimina</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiche</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Client</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Può accedere qualsiasi client</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Indirizzi</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obbligatorio</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Deve contenere uno o più valori delimitati da virgole</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Ad esempio:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo di accesso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Esegui squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Aggiungi client</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Nessun cluster disponibile --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Selezionare il cluster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Aggiungi daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend di storage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Nessun pool di dati disponibile --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Selezionare il backend di storage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utente Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Nessun utente disponibile --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selezionare l\'utente Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Nessun client disponibile --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Selezionare il client Cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nome CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Abilita etichetta di sicurezza</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Percorso CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Il percorso deve iniziare con una barra \'/\' e può essere seguito da una parola</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Viene creata la nuova directory</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Percorso</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Il percorso può essere solo una singola barra \'/\' o parola</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Viene creato il nuovo compartimento</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocollo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>I client non possono montare le sottodirectory (ad es. se Tag = foo, il client non può montare foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Tag, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Utilizzando diverse opzioni Pseudo, è possibile esportare più volte lo stesso percorso.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Nessun tipo di accesso disponibile --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Selezionare il tipo di accesso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Nessuno squash disponibile --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>--Selezionare il tipo di squash dell\'ID utente da eseguire --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocollo di trasporto</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Benvenuto in Ceph.</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nome utente necessario</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Password richiesta</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Login</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Spiacenti, l\'utente non esiste in Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Non consentito</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Spiacenti, non è consentito visualizzare ciò che si stava cercando.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configurazione RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Rimuovere il valore della configurazione locale. Al suo posto verrà ereditato e utilizzato il valore della configurazione superiore.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Il valore minimo è 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Elenco dei pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Il nome può contenere solo caratteri alfanumerici, trattini e caratteri di sottolineatura.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Il nome del profilo del codice di cancellazione selezionato è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porzioni di dati (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Deve essere uguale o maggiore di 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porzioni di codice (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Deve essere uguale o maggiore di 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Stima durata (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Località (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio di errore Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Località Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nessuno</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Tecnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Dimensione del pacchetto</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Radice Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe dispositivo Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>qualsiasi</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directory</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nome...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Il nome del pool Ceph scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo di pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Selezionare un tipo di pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>È necessario almeno un gruppo di posizionamento.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Il cluster non può gestire questo numero eccessivo di gruppi di posizionamento. Ricalcolare il numero di gruppi di posizionamento necessari.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Guida per il calcolo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Dimensioni replicate</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sovrascritture EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applicazioni</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Nessun profilo del codice di cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Selezionare un profilo del codice di cancellazione --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selezionare una regola Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regola Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Passaggi Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compressione</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modalità</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Nessun algoritmo di compressione della cancellazione disponibile --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>ad es. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Il valore deve essere maggiore di 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Dimensioni massime del blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>ad es. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Il valore deve essere maggiore delle dimensioni minime del blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapporto</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapporto di compressione</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Il valore deve essere compreso tra 0,0 e 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ad es. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Dettagli</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Dettagli sulle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Dettagli livelli cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Sposta un\'immagine nel cestino</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protezione scade alle</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato data errato. Utilizzare "AAAA-MM-GG HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protezione è già scaduta. Selezionare una data futura o lasciarla vuota.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Sposta immagine</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Panoramica</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinazioni</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticazione rilevazione</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utente</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n              possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Password</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utente reciproco</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Password reciproca</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informazioni disponibili:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinazioni iSCSI non disponibili</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creato</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Dimensioni</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Oggetti</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Dimensioni oggetto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Totale soggetto al provisioning</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Conteggio di striping</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Superiore</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefisso nome blocco</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Ordine</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Immagine</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Questa impostazione sostituisce il valore globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globale</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Questo è il valore globale. Nessun valore di opzione è stato impostato per questa immagine.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' non sono consentiti.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Nessun pool rbd disponibile --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Selezionare un pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utilizza un pool di dati dedicato</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool di dati</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool dedicato che archivia i dati oggetto dell\'RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>È necessario aumentare le dimensioni.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzate</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unità di striping</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selezionare l\'unità di striping --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificato il numero di striping.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unità di striping è maggiore delle dimensioni dell\'oggetto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Numero di striping</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Questo campo è obbligatorio perché è specificata l\'unità di striping.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Il numero di striping deve essere maggiore di 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Si sta per eseguire il rollback</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Elimina definitivamente contenuto del cestino</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tutto</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nome pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Ripristina immagine</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Per ripristinare,</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>digitare il nuovo nome dell\'immagine e fare clic su</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nuovo nome</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Scaduto alle</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protetto fino alle</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Di solito non è necessario modificare questi parametri rispetto ai valori di default.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Impostazioni</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Conferma</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Impostazioni avanzate</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN di destinazione</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN contiene un modello errato.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Ad esempio: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Ulteriori informazioni</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Questa destinazione contiene impostazioni avanzate modificate.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portali</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Aggiungi portale</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Questa immagine contiene impostazioni modificate.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Aggiungi immagine</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticazione ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniziatori</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniziatore</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN dell\'iniziatore deve essere univoco.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>I nomi utente devono avere una lunghezza compresa tra 8 e 64 caratteri e\n                        possono contenere solo lettere, \'.\', \'@\', \'-\', \'_\' o \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'iniziatore appartiene a un gruppo. Le immagini verranno configurate nel gruppo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nessun elemento aggiunto.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Aggiungi iniziatore</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppi</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Aggiungi gruppo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Cestino</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemi</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizzazione in corso</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Pronto</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifica modalità speculare per il pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>È necessario rimuovere i cluster peer prima di disabilitare la copia speculare.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nome cluster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Il nome del cluster non è valido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX non è valido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Indirizzi dei monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Indirizzi con valori delimitati da virgole...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'indirizzo del monitor non è valido.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Chiave CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Chiave con codifica Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La chiave CephX deve essere con codifica Base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contatori delle prestazioni non disponibili</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Elenco dei daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contatori delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Caricamento dati compartimento in corso...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Il valore non è valido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Il nome scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Proprietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selezionare un utente --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Abilitato</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo di indice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regola di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Contrassegno</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Contrassegno massimo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versione</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versione master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Ora di modifica</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Gruppo di zone</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota compartimenti</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Dimensioni massime</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimitato</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Numero massimo di oggetti</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome utente</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selezionare un nome utente --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Generazione automatica chiave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Chiave di accesso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Chiave segreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nome completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Indirizzo e-mail</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Sospeso</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Numero massimo di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Sottoutenti</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utenti</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostra</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chiavi</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Selezionare un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorizzazione</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selezionare un\'autorizzazione --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Sottoutente</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID del sottoutente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lettura, scrittura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pieno</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Chiave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Generazione automatica segreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Caricamento dati utente in corso...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Impossibile caricare i dati utente.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utente scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Non è un indirizzo e-mail valido.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'indirizzo e-mail scelto è già in uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Numero max. di compartimenti</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Disabilitato</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizzato</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chiave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Non esistono sottoutenti.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Non esistono chiavi.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Non esistono capacità.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Dimensioni illimitate</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Dimensione max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Oggetti illimitati</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Numero max. di oggetti</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Il valore immesso deve essere &gt;= a 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descrizione...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorizzazioni</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Ruoli</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Conferma password</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>La password di conferma non corrisponde alla password.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>E-mail non valida.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Si stanno per rimuovere le autorizzazioni di "lettura/aggiornamento utente" dal proprio utente.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Se si continua, non è più possibile aggiungere o rimuovere ruoli da qualsiasi utente.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Continuare?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Guida</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentazione</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Informazioni su</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Impostazioni del dashboard</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestione utenti</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utente connesso</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Disconnetti</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributi (mappa OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadati non disponibili</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadati</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contatore delle prestazioni</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Scritture</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Letture</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Istogramma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valori attuali</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origine</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Livello</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Può essere aggiornato al runtime (modificabile)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valori di enumerazione</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Vedere anche</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stato del cluster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server di metadati</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI Gateway</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Velocità effettiva client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lettura/scrittura client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Velocità effettiva di recupero</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Pulitura</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Prestazioni</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacità di base</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Gruppi di posizionamento per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stato gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacità</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Classificazioni</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Attuale</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticazione rilevazione aggiornata</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Non sono disponibili pool.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Non sono disponibili immagini.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Non sono disponibili immagini. Assicurarsi di aggiungere un\'immagine alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Non sono disponibili iniziatori. Assicurarsi di aggiungere un iniziatore alla destinazione.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destinazione</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stato</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O da</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Istanza</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avanzamento</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modalità di modifica</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Aggiungi peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifica peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Elimina peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Sequenza iniziale</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Locale</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Remoto</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>peer copia speculare</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Chiave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Appiattimento profondo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Su strati</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Blocco esclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mappa oggetti (richiede il blocco escluso)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (richiede il blocco esclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTETTO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Esegui rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Eliminato alle</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stato</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versione</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>root</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon in standby</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Classificazione</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Task</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilizzo</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aggiornato</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>È possibile aggiornare il valore al runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>I daemon/client non estraggono questo valore dal\n      database della configurazione di monitoraggio. Non è consentito impostare questa opzione tramite \'ceph config\n      set ...\'. È necessario configurare questa opzione tramite ceph.conf o dalla\n      riga di comando.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'opzione diventa attiva solo all\'avvio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'opzione interessa solo la creazione del cluster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'opzione interessa solo la creazione del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servizio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valore attuale</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modificabile</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Abilita</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Disabilita</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Riconnessione in corso. Attendere.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Indirizzo pubblico</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessioni aperte</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nessuno in entrata</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Gli OSD che sono stati contrassegnati come disattivi in precedenza non verranno contrassegnati nuovamente come attivi all\'avvio</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nessuno in uscita</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Gli OSD non verranno disattivati automaticamente dopo l\'intervallo configurato</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nessuno attivo</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Non è consentito l\'avvio degli OSD</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nessuno disattivo</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>I rapporti di errore degli OSD vengono ignorati in modo che i monitor non disattivino gli OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Sospendi</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Sospende le operazioni di lettura e scrittura</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nessuna pulitura</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Pulitura disabilitata</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nessun pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Pulitura approfondita disabilitata</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Nessuna operazione di recupero</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nessun recupero</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recupero dei gruppi di posizionamento sospeso</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usa ordinamento bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir eliminate definitivamente</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Gli OSD contengono set di snap convertiti</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Eliminazioni recuperi</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Eliminazioni eseguite durante il recupero invece del peering</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite rigido log gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Inserisce un limite rigido alla lunghezza del log del gruppo di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD aggiornati</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>esterno</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>interno</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>in basso</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Contrassegna</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perso</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>contrassegnato come perso</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>elimina</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Gruppi di posizionamento</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Byte letti</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operazioni di lettura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operazioni di scrittura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Numero max di recuperi informazioni</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Numero max di recuperi attivi</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Avvio singolo numero max di recuperi</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Sospensione recupero</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Lavoro</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravità</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Avviato</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilizzato</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Pulisci</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In funzione</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avviso</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>su</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>nessun file system</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>attivo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon attivo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target> quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Il servizio NFS Ganesha non è configurato.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Trasporto</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utente CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>File system CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(ereditato dalla configurazione globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>importato dalla configurazione globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Selezionare il tipo di squash dell\'ID utente che viene eseguito --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Non vi sono daemon disponibili.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modalità cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Numero minimo di giorni per la rimozione</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Numero minimo di giorni per la cancellazione</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Numero max di byte di destinazione</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Numero max di oggetti di destinazione</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Non sono state aggiunte applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Raggiunto il limite di applicazioni</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un pool può contenere solo fino a quattro definizioni delle applicazioni.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caratteri consentiti \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La lunghezza massima è di 128 caratteri</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtra o aggiungi applicazioni</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Aggiungi applicazione</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profilo del codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Dimensioni della replica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ultima modifica</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profilo con codice di cancellazione</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Set di regole Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartimento</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimenti</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utente</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utenti</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ambito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lettura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crea</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Ruolo di sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aggiorna utente</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continua</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Si è stati automaticamente disconnessi perché i ruoli sono stati modificati.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Ogni oggetto è suddiviso in porzioni di dati, ciascuna delle quali è memorizzata su un diverso OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcola le porzioni di codice relative a ciascun oggetto e le memorizza su diversi OSD.\n      Il numero di porzioni di codice è anche il numero degli OSD che è possibile disattivare senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Il plugin jerasure è il plugin più generico e flessibile,\n          ed è anche il plugin di default dei pool con codice di cancellazione di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La tecnica più flessibile è reed_sol_van: è sufficiente impostare k\n          ed m. La tecnica cauchy_good può essere più rapida ma occorre selezionare attentamente la dimensione del\n          pacchetto. reed_sol_r6_op, liberation, blaum_roth, liber8tion sono tutti equivalenti a RAID6,\n          nel senso che è possibile configurarli solo con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codifica viene eseguita su pacchetti di dimensioni in byte, uno alla volta.\n          È difficile scegliere la dimensione del pacchetto corretta.\n          La documentazione su jerasure fornisce informazioni esaustive su questo argomento.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con il plugin di jerasure, quando un oggetto con codice di cancellazione viene memorizzato su\n          più OSD, il recupero della perdita di un OSD richiede la lettura di tutti gli altri.\n          Ad esempio, se jerasure è configurato con k=8 e m=4, la perdita di un OSD richiede la lettura\n          degli altri undici per il ripristino.\n\n          Il plugin del codice di cancellazione lrc crea porzioni di parità locali che è possibile recuperare utilizzando un\n          minor numero di OSD. Ad esempio, se lrc è configurato con k=8, m=4 e l=4, crea\n          una porzione di parità aggiuntiva ogni quattro OSD. Quando si perde un singolo OSD, è possibile\n          recuperarlo solo con quattro OSD invece che con undici.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Raggruppa le porzioni di codice e dati in set di località dimensione. Ad esempio,\n          per k=4 e m=2, se località=3 vengono creati due gruppi su tre. È possibile recuperare ciascun set\n          senza leggere le porzioni di un altro set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Il tipo di compartimento Crush in cui viene memorizzato ciascun set di porzioni definito\n          dall\'utente. Ad esempio, se è impostato su rack, ciascun gruppo di porzioni viene\n          posizionato in un diverso rack. Viene utilizzato per creare un passaggio della regola CRUSH come il passaggio choose\n          rack. Se non è impostato, il raggruppamento non viene eseguito.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Il plugin ISA incapsula la libreria ISA. Viene eseguito solo su processori Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Il plugin ISA è disponibile in due formati Reed Solomon.\n          Se è impostato reed_sol_van, il formato è Vandermonde, se è impostato cauchy, il formato è Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Il plugin shec incapsula la libreria SHEC multipla.\n          Consente a Ceph di recuperare i dati in modo più efficiente rispetto ai codici Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Il numero di compartimenti di parità, ciascuno dei quali include i singoli compartimenti di dati\n          nell\'intervallo di calcolo. Il numero viene utilizzato come strumento di stima della durabilità. Ad esempio, se c=2,\n          è possibile disattivare 2 OSD senza perdere i dati.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Il nome del compartimento Crush utilizzato per il primo passaggio della regola CRUSH.\n      Ad esempio il passaggio take default.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Assicurarsi che non esistano due porzioni in un compartimento con lo stesso dominio\n      di errore. Ad esempio, se il dominio di errore è l\'host, non verranno memorizzate due porzioni sullo stesso\n      host. Viene utilizzato per creare un passaggio della regola CRUSH come passaggio chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Limitare il posizionamento ai dispositivi di una classe specifica\n      (ad es. ssd o hdd) usando i nomi delle classi di dispositivi Crush nella mappa CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Impostare il nome della directory da cui viene caricato il plugin del codice di cancellazione.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Consente tutte le operazioni</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Consente solo le operazioni che non modificano il server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Non consente operazioni di lettura o scrittura, ma consente qualsiasi altra operazione</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Non consente operazioni di lettura o scrittura o qualsiasi operazione che modifichi gli attributi dei file o il contenuto della directory</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Non consente alcun accesso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Selezionare la priorità --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Bassa</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informazioni</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ultimi 5 minuti</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ultimi 15 minuti</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ultimi 30 minuti</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ultima ora (Default)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ultime 3 ore</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ultime 6 ore</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ultime 12 ore</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ultime 24 ore</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ieri</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Oggi</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Fino a oggi</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Giorno prima di ieri</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ultimi 2 giorni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Questo giorno della scorsa settimana</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Settimana precedente</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Questa settimana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Fino a questa settimana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ultimi 7 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Mese precedente</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Questo mese</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Fino a questo mese</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ultimi 30 giorni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ultimi 90 giorni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ultimi 6 mesi</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ultimo anno</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Anno precedente</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Fino a quest\'anno</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ultimi 2 anni</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ultimi 5 anni</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nessun elemento selezionato.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deselezionare l\'elemento per selezionare di nuovo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target> Raggiunto il limite per la selezione</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtra tag</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Aggiungi badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Non vi sono elementi disponibili.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clona</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Pulitura approfondita</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Eliminazione definitiva</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Appiattisci</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Declassa</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Attiva</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Contrassegna come perso</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Disattiva</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteggi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Rinomina</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Ripristina</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Sposta nel cestino</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Rimuovi protezione</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Eliminato</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonato</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiato</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Appiattito</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Eliminato definitivamente</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Ripristinato</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback eseguito</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sì</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualità di servizio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite di BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Il limite desiderato di byte I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite di IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Il limite desiderato di operazioni I/O al secondo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Il limite desiderato dei byte letti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite di IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Il limite desiderato di operazioni di lettura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite di BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Il limite desiderato di byte scritti al secondo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Il limite desiderato di operazioni di scrittura al secondo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Burst BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Il limite di burst desiderato dei byte di I/O.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Burst IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di I/O.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Burst BPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Il limite di burst desiderato dei byte letti.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Burst IOPS in lettura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di lettura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Burst BPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Il limite di burst desiderato dei byte scritti.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Burst di IOPS in scrittura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Il limite di burst desiderato delle operazioni di scrittura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>In esecuzione</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>esegui</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Eseguito</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>task sconosciuto</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creazione in corso</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crea</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aggiornamento in corso</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aggiorna</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonazione in corso</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clona</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copia in corso</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copia</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Appiattimento</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>appiattisci</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback in corso</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Spostamento in corso</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>sposta</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Spostato</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossibile trovare l\'immagine.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Ripristino in corso</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>ripristina</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Eliminazione in corso</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>elimina definitivamente</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>tutti i pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossibile disabilitare l\'esecuzione della copia speculare perché contiene un peer.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"8mBD":function(t,e,n){!function(t){"use strict";t.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"8xTl":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.upperFirst(t)}}},"9/5/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,o="object"==typeof global&&global&&global.Object===Object&&global,u="object"==typeof self&&self&&self.Object===Object&&self,l=o||u||Function("return this")(),d=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return l.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==d.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var o=r.test(t);return o||i.test(t)?s(t.slice(2),o?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a,r,i,s,o,u,l=0,d=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,l=e,s=t.apply(i,n)}function v(t){return l=t,o=setTimeout(_,e),d?y(t):s}function x(t){var n=t-u;return void 0===u||n>=e||n<0||b&&t-l>=i}function _(){var t=h();if(x(t))return T(t);o=setTimeout(_,function(t){var n=e-(t-u);return b?f(n,i-(t-l)):n}(t))}function T(t){return o=void 0,m&&a?y(t):(a=r=void 0,s)}function O(){var t=h(),n=x(t);if(a=arguments,r=this,u=t,n){if(void 0===o)return v(u);if(b)return o=setTimeout(_,e),y(u)}return void 0===o&&(o=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(d=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==o&&clearTimeout(o),l=0,a=u=r=o=void 0},O.flush=function(){return void 0===o?s:T(h())},O}},"93I0":function(t,e,n){var a=n("VpIT"),r=n("kOOl"),i=a("keys");t.exports=function(t){return i[t]||(i[t]=r(t))}},"978R":function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return f})),n.d(e,"d",(function(){return h}));var a=n("8Y7J"),r=n("hpHm"),i=n("mrSG"),s=n("z/SZ"),o=n("2uy1"),u=n("PqYM");class l{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="hover focus",this.delay=0}}class d{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}ngAfterViewInit(){this.classMap={in:!1,fade:!1},this.classMap[this.placement]=!0,this.classMap[`tooltip-${this.placement}`]=!0,this.classMap.in=!0,this.animation&&(this.classMap.fade=!0),this.containerClass&&(this.classMap[this.containerClass]=!0)}}let c=0,f=(()=>{class t{constructor(t,e,n,r,i,s){this._elementRef=r,this._renderer=i,this._positionService=s,this.tooltipId=c++,this.tooltipChange=new a.EventEmitter,this.containerClass="",this.tooltipAnimation=!0,this.tooltipFadeDuration=150,this.tooltipStateChanged=new a.EventEmitter,this._tooltip=e.createLoader(this._elementRef,t,this._renderer).provide({provide:l,useValue:n}),Object.assign(this,n),this.onShown=this._tooltip.onShown,this.onHidden=this._tooltip.onHidden}get isOpen(){return this._tooltip.isShown}set isOpen(t){t?this.show():this.hide()}set htmlContent(t){Object(r.i)("tooltipHtml was deprecated, please use `tooltip` instead"),this.tooltip=t}set _placement(t){Object(r.i)("tooltipPlacement was deprecated, please use `placement` instead"),this.placement=t}set _isOpen(t){Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen=t}get _isOpen(){return Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen}set _enable(t){Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled=!t}get _enable(){return Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled}set _appendToBody(t){Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),this.container=t?"body":this.container}get _appendToBody(){return Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),"body"===this.container}set _popupClass(t){Object(r.i)("tooltipClass deprecated")}set _tooltipContext(t){Object(r.i)("tooltipContext deprecated")}set _tooltipPopupDelay(t){Object(r.i)("tooltipPopupDelay is deprecated, use `delay` instead"),this.delay=t}get _tooltipTrigger(){return Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers}set _tooltipTrigger(t){Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers=(t||"").toString()}ngOnInit(){this._tooltip.listen({triggers:this.triggers,show:()=>this.show()}),this.tooltipChange.subscribe(t=>{t||this._tooltip.hide()}),this.onShown.subscribe(()=>{this.setAriaDescribedBy()}),this.onHidden.subscribe(()=>{this.setAriaDescribedBy()})}setAriaDescribedBy(){this._ariaDescribedby=this.isOpen?`tooltip-${this.tooltipId}`:null,this._ariaDescribedby?this._renderer.setAttribute(this._elementRef.nativeElement,"aria-describedby",this._ariaDescribedby):this._renderer.removeAttribute(this._elementRef.nativeElement,"aria-describedby")}toggle(){if(this.isOpen)return this.hide();this.show()}show(){if(this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}}),this.isOpen||this.isDisabled||this._delayTimeoutId||!this.tooltip)return;const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._tooltip.attach(d).to(this.container).position({attachment:this.placement}).show({content:this.tooltip,placement:this.placement,containerClass:this.containerClass,id:`tooltip-${this.tooltipId}`})},e=()=>{this._tooltipCancelShowFn&&this._tooltipCancelShowFn()};if(this.delay){const n=Object(u.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._tooltipCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this._tooltip.isShown&&(this._tooltip.instance.classMap.in=!1,setTimeout(()=>{this._tooltip.hide()},this.tooltipFadeDuration))}ngOnDestroy(){this._tooltip.dispose(),this.tooltipChange.unsubscribe(),this.onShown.unsubscribe(),this.onHidden.unsubscribe()}}return Object(i.__decorate)([Object(r.a)(),Object(i.__metadata)("design:type",Object)],t.prototype,"tooltip",void 0),t})();class h{static forRoot(){return{ngModule:h,providers:[l,s.a,o.a]}}}},"9Nap":function(t,e,n){var a=n("/9aa");t.exports=function(t){if("string"==typeof t||a(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},"9Xeq":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"9d/t":function(t,e,n){var a=n("AO7/"),r=n("xrYK"),i=n("tiKp")("toStringTag"),s="Arguments"==r(function(){return arguments}());t.exports=a?r:function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=Object(t),i))?n:s?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},"9ggG":function(t,e,n){var a=n("Z0cm"),r=n("/9aa"),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;t.exports=function(t,e){if(a(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!r(t))||s.test(t)||!i.test(t)||null!=e&&t in Object(e)}},"9nlD":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("LvDl"),r=n("2Vo4"),i=n("XNiG"),s=n("mtw6"),o=n("G1I9"),u=n("a0VL"),l=n("ufoC"),d=n("8Y7J"),c=n("EApP");let f=(()=>{class t{constructor(t,e,n){this.toastr=t,this.taskMessageService=e,this.cdDatePipe=n,this.hideToasties=!1,this.dataSource=new r.a([]),this.data$=this.dataSource.asObservable(),this.sidebarSubject=new i.a,this.queued=[],this.KEY="cdNotifications";const s=localStorage.getItem(this.KEY);let u=[];a.isString(s)&&(u=JSON.parse(s,(t,e)=>a.isPlainObject(e)?a.assign(new o.a,e):e)),this.dataSource.next(u)}removeAll(){localStorage.removeItem(this.KEY),this.dataSource.next([])}remove(t){const e=this.dataSource.getValue();e.splice(t,1),this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}save(t){const e=this.dataSource.getValue();for(e.push(t),e.sort((t,e)=>t.timestamp>e.timestamp?-1:1);e.length>10;)e.pop();this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))}show(t,e,n,r,i){return window.setTimeout(()=>{let s;s=a.isFunction(t)?t():a.isObject(t)?t:new o.b(t,e,n,r,i),this.queueToShow(s)},10)}queueToShow(t){this.cancel(this.queuedTimeoutId),this.queued.find(e=>a.isEqual(e,t))||this.queued.push(t),this.queuedTimeoutId=window.setTimeout(()=>{this.showQueued()},500)}showQueued(){this.getUnifiedTitleQueue().forEach(t=>{const e=new o.a(t);e.isFinishedTask||this.save(e),this.showToasty(e)})}getUnifiedTitleQueue(){return Object.values(this.queueShiftByTitle()).map(t=>{const e=t[0];return t.length>1&&(e.message="<ul>"+t.map(t=>`<li>${t.message}</li>`).join("")+"</ul>"),e})}queueShiftByTitle(){const t={};let e;for(;e=this.queued.shift();)t[e.title]||(t[e.title]=[]),t[e.title].push(e);return t}showToasty(t){this.hideToasties||this.toastr[["error","info","success"][t.type]]((t.message?t.message+"<br>":"")+this.renderTimeAndApplicationHtml(t),t.title,t.options)}renderTimeAndApplicationHtml(t){return`<small class="date">${this.cdDatePipe.transform(t.timestamp)}</small><i class="float-right custom-icon ${t.applicationClass}" title="${t.application}"></i>`}notifyTask(t,e=!0){const n=this.finishedTaskToNotification(t,e);return n.isFinishedTask=!0,this.show(n)}finishedTaskToNotification(t,e=!0){let n;return n=t.success&&e?new o.b(s.a.success,this.taskMessageService.getSuccessTitle(t)):new o.b(s.a.error,this.taskMessageService.getErrorTitle(t),this.taskMessageService.getErrorMessage(t)),n.isFinishedTask=!0,n}cancel(t){window.clearTimeout(t)}suspendToasties(t){this.hideToasties=t}toggleSidebar(t=!1){this.sidebarSubject.next(t)}}return t.ngInjectableDef=d["ɵɵdefineInjectable"]({factory:function(){return new t(d["ɵɵinject"](c.j),d["ɵɵinject"](l.a),d["ɵɵinject"](u.a))},token:t,providedIn:"root"}),t})()},"9ppp":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t})()},"9rRi":function(t,e,n){!function(t){"use strict";t.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},"A+xa":function(t,e,n){!function(t){"use strict";t.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){return t+(/сехет$/i.exec(t)?"рен":/ҫул$/i.exec(t)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("wd/R"))},A2ZE:function(t,e,n){var a=n("HAuM");t.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},A90E:function(t,e,n){var a=n("6sVZ"),r=n("V6Ve"),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return r(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},"AO7/":function(t,e,n){var a={};a[n("tiKp")("toStringTag")]="z",t.exports="[object z]"===String(a)},AP2z:function(t,e,n){var a=n("nmnc"),r=Object.prototype,i=r.hasOwnProperty,s=r.toString,o=a?a.toStringTag:void 0;t.exports=function(t){var e=i.call(t,o),n=t[o];try{t[o]=void 0;var a=!0}catch(u){}var r=s.call(t);return a&&(e?t[o]=n:delete t[o]),r}},AQ68:function(t,e,n){!function(t){"use strict";t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("wd/R"))},AWcq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("yJti");class r{constructor(){this.vcs=a.a}ngOnInit(){}}},AfCQ:function(t,e,n){"use strict";var a=n("2Vo4"),r=n("qgXg"),i=n("HDdC"),s=n("pxpQ"),o=n("Kqap"),u=n("lJxs"),l=n("7o/Q");class d{constructor(t,e){this.compare=t,this.keySelector=e}call(t,e){return e.subscribe(new c(t,this.compare,this.keySelector))}}class c extends l.a{constructor(t,e,n){super(t),this.keySelector=n,this.hasKey=!1,"function"==typeof e&&(this.compare=e)}compare(t,e){return t===e}_next(t){let e;try{const{keySelector:n}=this;e=n?n(t):t}catch(a){return this.destination.error(a)}let n=!1;if(this.hasKey)try{const{compare:t}=this;n=t(this.key,e)}catch(a){return this.destination.error(a)}else this.hasKey=!0;n||(this.key=e,this.destination.next(t))}}n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return h}));class f extends a.a{constructor(t,e,n){super(t),e.pipe(Object(s.b)(r.a)).pipe(Object(o.a)((t,e)=>e?n(t,e):t,t)).subscribe(t=>this.next(t))}}class h extends i.a{constructor(t,e,n){super(),this._dispatcher=t,this._reducer=e,this.source=n}select(t){return this.source.pipe(Object(u.a)(t)).pipe(t=>t.lift(new d(void 0,void 0)))}lift(t){const e=new h(this._dispatcher,this._reducer,this);return e.operator=t,e}dispatch(t){this._dispatcher.next(t)}next(t){this._dispatcher.next(t)}error(t){this._dispatcher.error(t)}complete(){}}},AiMb:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-CN">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切换导航</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>仪表盘</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>集群</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>对应的服务</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>配置项</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 索引</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>日志</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>块设备</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>镜像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>文件系统</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>请选择语言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在加载面板的相关数据…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 时间选择工具</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重新设置</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>无法加载数据。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>选中个数</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>命中个数</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>总数</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名称</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>解释</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>更详尽的解释</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>缺省值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>守护进程的缺省值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>可选值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>检查 CRUSH 索引图</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在加载…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主机名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>请填写此栏目!</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我确定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>关闭</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主机列表</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>总体性能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>无法找到相关条目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>集群日志</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>审计日志</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在加载相关配置信息...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>配置信息无法加载。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>编辑 Manager 扩展模块</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>输入值不是有效的 UUID,如:67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>输入的应该是个有效的 IP 地址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>输入须为数字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>输入的应该是一个浮点数或者十进制整数。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>集群 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改时间</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con </target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成员</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>添加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>特性</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>集群范围的 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>高级设置…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 恢复优先级</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>优先级</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自定义优先级</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>这个字段是必填的!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>权重值必须在 0 和 1 之间</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重设权重</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度}}</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深度} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 列表</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>编辑</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>健康状况</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>统计数据</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>客户端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何客户端均可访问</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>地址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填项</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必须包含一个或多个逗号分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>访问类型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>添加客户端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 无可用集群 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 请选择一个集群 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>添加守护进程</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>存储后端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 没有可用的数据存储池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 请选择存储后端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>对象网关用户</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 无可选用户 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 请选择对象网关用户 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 用户 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 无可用客户端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 请选择 cephx 客户端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名称</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全标签</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>启用安全标签</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路径</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路径需以“/”开头,后面可跟单词</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>将创建新文件夹</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路径</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路径只能是单个“/”或单词</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>将创建新的桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 协议</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 标签</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>客户端不能装入子目录(即如果标记为 foo,则客户端无法装入 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同标记选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>伪</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>通过使用不同伪选项,可将同一路径导出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 没有可用的访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 选择访问类型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 没有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>传输协议</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>欢迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>请输入用户名</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>请输入密码</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登录</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,此用户不存在。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止访问</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您无权访问这个页面。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 配置</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>删除本地的配置项,改用更高作用域的配置值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值为 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>存储池列表</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名称只能由字母、数字、短划线和下划线组成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>此纠删码配置名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>纠删码算法</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>数据块 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必须大于等于 2</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>校验块 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必须大于等于 1</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久因子 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>局部性因子 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 局部性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>无</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>packetsize</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 设备类型</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目录</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名称…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>此 Ceph 存储池名称已被使用。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>存储池类型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 请选择存储池的类型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>归置组 (PG)</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一个归置组!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的集群没法支持这么多的 PG。请重新计算需要的 PG 个数。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>在线 PG 计算器</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>标志</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 重写 (overwrite)</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>应用类型</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 无纠删码配置可选 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 请选择一个纠删码配置 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 算法规则组</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 选择 CRUSH 规则 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 规则</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步骤</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>压缩</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 无可用的纠删码压缩算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>比如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>取值必须大于 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>blob 大小上限</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>如 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>取值必须大于 blob 大小下限</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比例</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>压缩率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>取值必须在 0.0 和 1.0 之间</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>详情</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>性能详情</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>缓存层详细信息</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>将映像移至回收站</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保护期一直到</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>无保护</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式有问题。请使用“YYYY-MM-DD HH:mm:ss”。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保护期限已经过了。请设置一个将来的日期,或者清空不填。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移动映像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概览</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密码</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>互认证用户</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>互认证密码</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用信息:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>无可用 iSCSI 目标</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>存储池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>数据存储池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>对象数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>对象大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>供给容量</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>总供给容量</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>条带单元</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父节点</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>块存储名字前缀</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>order</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>映像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此设置会覆盖全局值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全局</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>该值为全局值。没有为此映像设置此选项的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允许使用“/”和“@”。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 没有可用的 RBD 存储池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 请选择存储池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用一个专用的数据池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>数据池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>为保存 RBD 的对象数据单独分配的存储池。</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您需要设置大一些的容量。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>条带</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>条带单元大小</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 选择条带单元大小 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>因为设置了条带个数,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>条带单元大小超过了对象大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>条带个数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>因为设置了条带单元大小,所以这个字段是必选的!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>条带的个数必须大于 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您即将进行回滚操作</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清空回收站</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全选</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>存储池:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>存储池名称…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>恢复映像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>要恢复</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>输入映像的新名称,并点击</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名称</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>过期时间</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保护期限</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 结构图</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常无须改变这些默认参数值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>设置</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>后备存储</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>确认</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>高级设置</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目标限定名</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 格式错误。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多信息</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目标的高级设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>端口</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>添加端口</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此映像的设置项存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>添加映像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 身份验证</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>授权人</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>客户端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>授权人 IQN 必须唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>用户名长度必须在 8 到 64 个字符之间,且只能包含\n以下字符:英文字母、“.”、“@”、“-”、“_”或“:”。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>授权人属于群组。映像须在群组中进行设置。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>无项目添加。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>添加授权人</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群组</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>添加群组</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>回收站</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>已就绪</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>编辑存储池镜像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在禁用镜像功能前必须先移除同伴集群。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {编辑} other {添加} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>集群名称</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>集群名称无效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 无效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Monitor 地址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗号分割的地址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Monitor 地址无效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 密钥</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 编码的密钥...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 密钥必须是 base64 编码的。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>无法读取性能计数器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>守护进程列表</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在加载存储桶数据…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>输入值无效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所选名称已经被使用。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 请选择一个用户 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>开启</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引类型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>归置规则</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>标识</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>max marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改时间</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>zonegroup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>存储桶配额</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大数目</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>无限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大对象数目</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>用户名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 请选择用户名 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>访问密钥</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密密钥</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>冻结</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系统</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大存储桶数目</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>用户权限</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>用户配额</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>显示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 请选择一个类型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 请选择权限类型 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子用户</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所选的子用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>读、写</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 密钥</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自动生成密钥</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在加载用户数据…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>用户数据无法加载。 </target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所选的用户 ID 已被使用。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>无效的邮箱地址。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>此邮箱地址已被使用。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>存储桶个数的上限</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自定义</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 密钥</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>没有子用户。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>没有任何密钥。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>权限为空。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>空间无限制</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>空间上限</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>对象个数无限制</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>对象个数上限</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>设置的值必须 &gt;= 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>权限</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>确认密码</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>密码和之前的输入不匹配。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>邮箱</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>邮箱地址无效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您即将取消您自己用户的 "user read / update" 权限。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>如果您继续的话,您以后就没办法为其他用户添加或者删除角色了。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>您确实要继续吗?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>帮助</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文档</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>关于</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>仪表盘设置</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>用户管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登录的用户</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>OSD map</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>元数据不可用</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>相关元数据</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>性能计数器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>写入请求</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>读取请求</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>直方图</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>下限</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>上限</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>来源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>级别</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在运行时更新(可编辑)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>可选项</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>参见</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>集群状态</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>manager 守护进程</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>对象网关</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>metadata 服务器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 网关</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>客户端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>客户端吞吐量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>客户端读/写</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>恢复吞吐量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>洗刷</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>性能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>基本容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每个 OSD 的 PG 数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 状态</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>当前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新发现身份验证</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>无可用端口。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>无可用映像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>无可用映像。请确保为目标添加一个映像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>无可用授权人。请确保为目标添加一个授权人。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目标</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>活动/优化自</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>实例</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>问题</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>进度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>编辑模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>添加 peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>编辑 peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>删除 peer</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># 本地</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># 远程</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>镜像 peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>密钥</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>完全展开</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分层</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>互斥锁</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>object map(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>日志(要求互斥锁支持)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>无保护的</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照回滚</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>定点删除</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>类型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状态</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主机</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>备用服务</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>排位</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>守护进程</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活跃度</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新完成</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>该值可在运行时更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>服务器或客户端不会主动从 monitor 的配置数据库读取这个配置。\n 所以不能用“ceph config set ...”设置它。但是可以通过\n ceph.conf 或者用命令行进行配置。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>该配置只有在服务启动的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>该配置只在创建集群的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>该配置只在服务创建的时候才会生效。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服务</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>当前值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可编辑</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>启用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>禁用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新连接,请稍候…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>外部地址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>活动会话</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止加入</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前被除名的 OSD 在启动之后,不会被加入集群</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止除名</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>在发现 OSD 没有响应之后一段时间,该 OSD 会被踢出集群。该标志会禁止这个功能。</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止启用</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允许 OSD 启动</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止停用</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>当前不受理对 OSD 的失效报告,因而 monitor 不会停用 OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暂停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暂停读写</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止洗刷</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深层洗刷已禁止</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已推迟</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止恢复</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 恢复已推迟</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用逐位排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>老版本的快照已全部升级</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 上的快照已全部转换完毕</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>在恢复时进行删除操作</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在恢复时,而非对齐阶段进行删除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 日志硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>为 pg 日志长度添加硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 标志</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>除名</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>加入</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>标记</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 丢失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已标记丢失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已销毁</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>删除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>读字节数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>写字节数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>读请求数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>写请求数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填量</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>最大活跃恢复请求数</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>最大单次恢复操作数</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>恢复/回填操作间隔睡眠时间</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>任务</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>严重程度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已启动</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>空闲</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>正常</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>运行中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警报</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>启用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>无文件系统</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待机</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>工作的守护进程</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganesha 服务的配置还没有完成。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>传输</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 用户</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 文件系统</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(继承自全局配置)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>继承自全局配置</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 选择执行哪种类型的用户 ID 匿名访问 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>没有可用的守护进程。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>缓存模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>最少延迟赶出时间</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>最少延迟刷回时间</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目标器最大字节数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目标器最大对象数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>还没有任何应用标记</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>应用标记到了上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一个存储池最多能有四个应用标记。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>可用的字符为“_a-zA-Z0-9”</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>长度限制为 128 个字符</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>添加应用标记或根据其进行筛选</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>添加应用标记</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>副本个数</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最后修改时间</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>纠删码配置</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 规则集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>存储桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>用户</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>作用范围</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>读权限</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>新建</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系统角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新用户</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>继续</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您被自动登出,因为您的角色有了变动。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target> 各对象都被分割为数据块,分别存储于不同 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>计算各对象的编码块、并存储于不同 OSD 。\n编码块的数量等同于在不丢数据的前提下允许同时失效的 OSD 数量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasure 插件是最通用、最灵活的插件,\n也是 Ceph 纠删码存储池的默认插件。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>reed_sol_van 技术更灵活:它足以设置 k 和 m 值。 \ncauchy_good 技术更快,但你得谨慎地选择 packetsize 值。\nreed_sol_r6_op 、 liberation 、 blaum_roth 、 liber8tion 都是与 RAID6 等价的技术,\n它们只能配置为 m=2 。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target> 以 bytes 大小的包为单位进行编码。\n确定合适的包尺寸很难, \njerasure 文档对此有很详细的描述。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>用 jerasure 插件时,纠删码编码的对象存储在多个 OSD 上,\n丢失一个 OSD 的恢复过程需读取所有其他的 OSD 。\n比如 jerasure 的配置为 k=8 且 m=4 ,丢失一个 OSD 后需读取其他 11 个 OSD 才能恢复。\n\nlrc 纠删码插件创建的是局部校验块,这样只需较少的 OSD 即可恢复。\n比如 lrc 的配置为 k=8 、 m=4 且 l=4 ,它将为每四个 OSD 创建额外的校验块,\n当一个 OSD 丢失时,它只需四个 OSD 即可恢复,而不需要十一个。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>把编码块和数据块分组为大小为 locality 的集合。\n比如, k=4 且 m=2 时,若设置 locality=3 ,将会分组为大小为三的两组,\n这样各组都能自行恢复,无需从另一组读数据块。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定义的块集合将按哪种 crush 桶类型存储。\n比如,若设置为 rack ,大小为 l 块的各组将被存入不同的机架,\n此值会被用于创建类似 step choose rack 的规则集。\n如果没设置,就不会这样分组。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 插件封装了 ISA 库。它只能运行在 Intel 处理器上。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 插件包含两种 Reed Solomon 编码形式。\n设置为 reed_sol_van 表示用 Vandermonde 算法,设置为 cauchy 表示用 Cauchy 算法。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 插件封装了 multiple SHEC 库。\n与 Reed Solomon 编码相比,它能使 Ceph 更高效地恢复数据。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target> 奇偶校验块数量,它们在各自的计算范围内包含了各数据块。\n此数值被用作持久性估值。\n例如,假设 c=2 ,就是说不丟数据的情况下可损失 2 个 OSD 。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>规则集第一步所指向的 CRUSH 桶之名,\n如 step take default 。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>确保两个编码块不会存在于同一故障域的桶里面。\n比如,假设故障域是 host ,就不会有两个编码块存储到同一主机;\n此值用于在规则集中创建类似 step chooseleaf host 的步骤。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 索引中的 crush 设备类名,\n将归置限制于特定类的设备(例如,ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>设置纠删码插件所在目录。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允许所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>只允许不修改服务器端数据的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>禁止读写,但是允许其他的操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>禁止读、写以及任何可能修改文件内容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止访问</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 选择优先级 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>信息</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>过去 5 分钟</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>过去 15 分钟</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>过去 30 分钟</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>过去 1 小时(默认)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>过去 3 小时</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>过去 6 小时</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>过去 12 小时</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>过去 24 小时</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到现在为止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>过去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上周的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上个星期</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本周</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本周以来</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>过去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上个月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>当月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月以来</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>过去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>过去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>过去 6 个月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>过去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年以来</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>过去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>过去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>无选中项目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消选择</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>达到选择项数上限。</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>过滤标签</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>添加 badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>无可选项目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深层洗刷</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>销毁</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>标记为停用</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>标记为加入</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>标记为丢失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>标记为已除名</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保护</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>恢复</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至回收站</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>解除保护</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>删除完成</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>克隆完成</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>复制完成</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>展开完成</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>回滚完成</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服务质量 (QoS)</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>读 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒内读取的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>读 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒读操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>写 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒内写入的字节数上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>写 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒写操作次数上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>读 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的读取的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>读 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的读操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>写 BPS 突发</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的写入的字节数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>写 IOPS 突发</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的写操作次数突发上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在执行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>执行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>执行完毕</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任务</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在创建</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>创建</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在删除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在复制</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>复制</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在展开</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>展开</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在回滚</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>回滚</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已经把</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>无法找到映像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在把</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>把</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有存储池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>因为包含同伴集群,无法禁用镜像功能</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Avrn:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("aexS"),r=n("8Y7J"),i=n("iInd");let s=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(t,e){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"],{queryParams:{returnUrl:e.url}}),!1)}canActivateChild(t,e){return this.canActivate(t,e)}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.m),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},AvvY:function(t,e,n){!function(t){"use strict";t.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(t,e){return 12===t&&(t=0),"രാത്രി"===e&&t>=4||"ഉച്ച കഴിഞ്ഞ്"===e||"വൈകുന്നേരം"===e?t+12:t},meridiem:function(t,e,n){return t<4?"രാത്രി":t<12?"രാവിലെ":t<17?"ഉച്ച കഴിഞ്ഞ്":t<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("wd/R"))},AxL3:function(t,e){var n=!("undefined"==typeof window||!window.document||!window.document.createElement);t.exports=n},B55N:function(t,e,n){!function(t){"use strict";t.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,n){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()<t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("wd/R"))},B8du:function(t,e){t.exports=function(){return!1}},BFxc:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return function(e){return 0===t?Object(i.b)():e.lift(new o(t))}}class o{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new u(t,this.total))}}class u extends a.a{constructor(t,e){super(t),this.total=e,this.ring=new Array,this.count=0}_next(t){const e=this.ring,n=this.total,a=this.count++;e.length<n?e.push(t):e[a%n]=t}_complete(){const t=this.destination;let e=this.count;if(e>0){const n=this.count>=this.total?this.total:this.count,a=this.ring;for(let r=0;r<n;r++){const r=e++%n;t.next(a[r])}}t.complete()}}},BQkM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return`${t} IOPS`}}},BVg3:function(t,e,n){!function(t){"use strict";function e(t){return t%100==11||t%10!=1}function n(t,n,a,r){var i=t+" ";switch(a){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return e(t)?i+(n||r?"sekúndur":"sekúndum"):i+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return e(t)?i+(n||r?"mínútur":"mínútum"):n?i+"mínúta":i+"mínútu";case"hh":return e(t)?i+(n||r?"klukkustundir":"klukkustundum"):i+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return e(t)?n?i+"dagar":i+(r?"daga":"dögum"):n?i+"dagur":i+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return e(t)?n?i+"mánuðir":i+(r?"mánuði":"mánuðum"):n?i+"mánuður":i+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return e(t)?i+(n||r?"ár":"árum"):i+(n||r?"ár":"ári")}}t.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},BiGR:function(t,e,n){var a=n("nmnc"),r=n("03A+"),i=n("Z0cm"),s=a?a.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||r(t)||!!(s&&t&&t[s])}},Bs8V:function(t,e,n){var a=n("g6v/"),r=n("0eef"),i=n("XGwC"),s=n("/GqU"),o=n("wE6v"),u=n("UTVS"),l=n("DPsx"),d=Object.getOwnPropertyDescriptor;e.f=a?d:function(t,e){if(t=s(t),e=o(e,!0),l)try{return d(t,e)}catch(n){}if(u(t,e))return i(!r.f.call(t,e),t[e])}},ByF4:function(t,e,n){!function(t){"use strict";t.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},C523:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(t,e,n,a){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=a,this.dragEventHandler=this.onDrag.bind(this)}return t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("drag",t.dragEventHandler)}))},t.prototype.ngDoCheck=function(){this.renderer.setAttribute(this.el.nativeElement,"draggable",this.treeDragEnabled?"true":"false")},t.prototype.ngOnDestroy=function(){this.el.nativeElement.removeEventListener("drag",this.dragEventHandler)},t.prototype.onDragStart=function(t){t.dataTransfer.setData("text",t.target.id),this.treeDraggedElement.set(this.draggedElement),this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragStart",t)},t.prototype.onDrag=function(t){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("drag",t)},t.prototype.onDragEnd=function(){this.draggedElement.mouseAction&&this.draggedElement.mouseAction("dragEnd"),this.treeDraggedElement.set(null)},i([Object(a.Input)("treeDrag"),s("design:type",Object)],t.prototype,"draggedElement",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeDragEnabled",void 0),i([Object(a.HostListener)("dragstart",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDragStart",null),i([Object(a.HostListener)("dragend"),s("design:type",Function),s("design:paramtypes",[]),s("design:returntype",void 0)],t.prototype,"onDragEnd",null),i([Object(a.Directive)({selector:"[treeDrag]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},C6Ij:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("DqMs"),i=n("/NlG"),s=n("GiVz"),o=n("SVse");n("AWcq"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return p}));var u=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","info"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Retrieving data"])),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please wait..."]))],(function(t,e){var n=e.component;t(e,1,0,"info"),t(e,5,0,n.statusFor)}),null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","warning"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Displaying previously cached data"])),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["."]))],(function(t,e){var n=e.component;t(e,1,0,"warning"),t(e,5,0,n.statusFor)}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,[" for "])),(t()(),a["ɵeld"](2,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,2,0,e.component.statusFor)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"cd-alert-panel",[["type","error"]],null,null,null,r.b,r.a)),a["ɵdid"](1,114688,null,0,i.a,[s.a],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Could not load data"])),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[". Please check the cluster health."]))],(function(t,e){var n=e.component;t(e,1,0,"error"),t(e,5,0,n.statusFor)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.status===n.vcs.ValueNone),t(e,3,0,n.status===n.vcs.ValueStale),t(e,5,0,n.status===n.vcs.ValueException)}),null)}},CFvb:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={LEFT:37,UP:38,RIGHT:39,DOWN:40,ENTER:13,SPACE:32,CONTEXT_MENU:32}},CH3K:function(t,e){t.exports=function(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}},CMye:function(t,e,n){var a=n("GoyQ");t.exports=function(t){return t==t&&!a(t)}},CNMR:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return u}));var a=n("mrSG"),r=n("8Y7J"),i=n("hpHm");class s{constructor(){this.type="warning",this.dismissible=!1,this.dismissOnTimeout=void 0}}let o=(()=>{class t{constructor(t,e){this.changeDetection=e,this.type="warning",this.dismissible=!1,this.isOpen=!0,this.onClose=new r.EventEmitter,this.onClosed=new r.EventEmitter,this.classes="",this.dismissibleChange=new r.EventEmitter,Object.assign(this,t),this.dismissibleChange.subscribe(t=>{this.classes=this.dismissible?"alert-dismissible":"",this.changeDetection.markForCheck()})}ngOnInit(){this.dismissOnTimeout&&setTimeout(()=>this.close(),parseInt(this.dismissOnTimeout,10))}close(){this.isOpen&&(this.onClose.emit(this),this.isOpen=!1,this.changeDetection.markForCheck(),this.onClosed.emit(this))}}return Object(a.__decorate)([Object(i.a)(),Object(a.__metadata)("design:type",Object)],t.prototype,"dismissible",void 0),t})();class u{static forRoot(){return{ngModule:u,providers:[s]}}}},CZoQ:function(t,e){t.exports=function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}},Cfvw:function(t,e,n){"use strict";var a=n("HDdC"),r=n("SeVD"),i=n("quSY"),s=n("kJWO"),o=n("jZKg"),u=n("Lhse"),l=n("c2HN"),d=n("I55L");function c(t,e){return e?function(t,e){if(null!=t){if(function(t){return t&&"function"==typeof t[s.a]}(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>{const r=t[s.a]();a.add(r.subscribe({next(t){a.add(e.schedule(()=>n.next(t)))},error(t){a.add(e.schedule(()=>n.error(t)))},complete(){a.add(e.schedule(()=>n.complete()))}}))})),a})}(t,e);if(Object(l.a)(t))return function(t,e){return new a.a(n=>{const a=new i.a;return a.add(e.schedule(()=>t.then(t=>{a.add(e.schedule(()=>{n.next(t),a.add(e.schedule(()=>n.complete()))}))},t=>{a.add(e.schedule(()=>n.error(t)))}))),a})}(t,e);if(Object(d.a)(t))return Object(o.a)(t,e);if(function(t){return t&&"function"==typeof t[u.a]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.a(n=>{const a=new i.a;let r;return a.add(()=>{r&&"function"==typeof r.return&&r.return()}),a.add(e.schedule(()=>{r=t[u.a](),a.add(e.schedule((function(){if(n.closed)return;let t,e;try{const n=r.next();t=n.value,e=n.done}catch(a){return void n.error(a)}e?n.complete():(n.next(t),this.schedule())})))})),a})}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}(t,e):t instanceof a.a?t:new a.a(Object(r.a)(t))}n.d(e,"a",(function(){return c}))},ChqD:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},CjzT:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},CoRJ:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n("wd/R"))},CoVI:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("2vnA"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(t,e){this.templateRef=t,this.viewContainer=e,this.templateBindings={}}return t.prototype.ngOnInit=function(){this.view=this.viewContainer.createEmbeddedView(this.templateRef),this.dispose&&this.dispose(),this.shouldDetach()&&this.view.detach(),this.autoDetect(this.view)},t.prototype.shouldDetach=function(){return this.treeMobxAutorun&&this.treeMobxAutorun.detach},t.prototype.autoDetect=function(t){this.dispose=Object(r.b)((function(){return t.detectChanges()}))},t.prototype.ngOnDestroy=function(){this.dispose&&this.dispose()},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"treeMobxAutorun",void 0),i([Object(a.Directive)({selector:"[treeMobxAutorun]"}),s("design:paramtypes",[a.TemplateRef,a.ViewContainerRef])],t)}()},Cwc5:function(t,e,n){var a=n("NKxu"),r=n("Npjl");t.exports=function(t,e){var n=r(t,e);return a(n)?n:void 0}},CxY0:function(t,e,n){"use strict";var a=n("nYho"),r=n("Nehr");function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=v,e.resolve=function(t,e){return v(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?v(t,!1,!0).resolveObject(e):e},e.format=function(t){return r.isString(t)&&(t=v(t)),t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var s=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(l),c=["%","/","?",";","#"].concat(d),f=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n("r8II");function v(t,e,n){if(t&&r.isObject(t)&&t instanceof i)return t;var a=new i;return a.parse(t,e,n),a}i.prototype.parse=function(t,e,n){if(!r.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),o=-1!==i&&i<t.indexOf("#")?"?":"#",l=t.split(o);l[0]=l[0].replace(/\\/g,"/");var v=t=l.join(o);if(v=v.trim(),!n&&1===t.split("#").length){var x=u.exec(v);if(x)return this.path=v,this.href=v,this.pathname=x[1],x[2]?(this.search=x[2],this.query=e?y.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var _=s.exec(v);if(_){var T=(_=_[0]).toLowerCase();this.protocol=T,v=v.substr(_.length)}if(n||_||v.match(/^\/\/[^@\/]+@[^@\/]+/)){var O="//"===v.substr(0,2);!O||_&&b[_]||(v=v.substr(2),this.slashes=!0)}if(!b[_]&&(O||_&&!m[_])){for(var w,S,I=-1,N=0;N<f.length;N++)-1!==(C=v.indexOf(f[N]))&&(-1===I||C<I)&&(I=C);for(-1!==(S=-1===I?v.lastIndexOf("@"):v.lastIndexOf("@",I))&&(w=v.slice(0,S),v=v.slice(S+1),this.auth=decodeURIComponent(w)),I=-1,N=0;N<c.length;N++){var C;-1!==(C=v.indexOf(c[N]))&&(-1===I||C<I)&&(I=C)}-1===I&&(I=v.length),this.host=v.slice(0,I),v=v.slice(I),this.parseHost(),this.hostname=this.hostname||"";var R="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!R)for(var A=this.hostname.split(/\./),k=(N=0,A.length);N<k;N++){var E=A[N];if(E&&!E.match(h)){for(var L="",D=0,P=E.length;D<P;D++)E.charCodeAt(D)>127?L+="x":L+=E[D];if(!L.match(h)){var M=A.slice(0,N),q=A.slice(N+1),j=E.match(g);j&&(M.push(j[1]),q.unshift(j[2])),q.length&&(v="/"+q.join(".")+v),this.hostname=M.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),R||(this.hostname=a.toASCII(this.hostname)),this.host=(this.hostname||"")+(this.port?":"+this.port:""),this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==v[0]&&(v="/"+v))}if(!p[T])for(N=0,k=d.length;N<k;N++){var F=d[N];if(-1!==v.indexOf(F)){var G=encodeURIComponent(F);G===F&&(G=escape(F)),v=v.split(F).join(G)}}var V=v.indexOf("#");-1!==V&&(this.hash=v.substr(V),v=v.slice(0,V));var z=v.indexOf("?");return-1!==z?(this.search=v.substr(z),this.query=v.substr(z+1),e&&(this.query=y.parse(this.query)),v=v.slice(0,z)):e&&(this.search="",this.query={}),v&&(this.pathname=v),m[T]&&this.hostname&&!this.pathname&&(this.pathname="/"),(this.pathname||this.search)&&(this.path=(this.pathname||"")+(this.search||"")),this.href=this.format(),this},i.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",a=this.hash||"",i=!1,s="";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&r.isObject(this.query)&&Object.keys(this.query).length&&(s=y.stringify(this.query));var o=this.search||s&&"?"+s||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||m[e])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),a&&"#"!==a.charAt(0)&&(a="#"+a),o&&"?"!==o.charAt(0)&&(o="?"+o),e+i+(n=n.replace(/[?#]/g,(function(t){return encodeURIComponent(t)})))+(o=o.replace("#","%23"))+a},i.prototype.resolve=function(t){return this.resolveObject(v(t,!1,!0)).format()},i.prototype.resolveObject=function(t){if(r.isString(t)){var e=new i;e.parse(t,!1,!0),t=e}for(var n=new i,a=Object.keys(this),s=0;s<a.length;s++){var o=a[s];n[o]=this[o]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var u=Object.keys(t),l=0;l<u.length;l++){var d=u[l];"protocol"!==d&&(n[d]=t[d])}return m[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!m[t.protocol]){for(var c=Object.keys(t),f=0;f<c.length;f++){var h=c[f];n[h]=t[h]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||b[t.protocol])n.pathname=t.pathname;else{for(var g=(t.pathname||"").split("/");g.length&&!(t.host=g.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==g[0]&&g.unshift(""),g.length<2&&g.unshift(""),n.pathname=g.join("/")}return n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,(n.pathname||n.search)&&(n.path=(n.pathname||"")+(n.search||"")),n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var p=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),v=y||p||n.host&&t.pathname,x=v,_=n.pathname&&n.pathname.split("/")||[],T=(g=t.pathname&&t.pathname.split("/")||[],n.protocol&&!m[n.protocol]);if(T&&(n.hostname="",n.port=null,n.host&&(""===_[0]?_[0]=n.host:_.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===g[0]?g[0]=t.host:g.unshift(t.host)),t.host=null),v=v&&(""===g[0]||""===_[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,_=g;else if(g.length)_||(_=[]),_.pop(),_=_.concat(g),n.search=t.search,n.query=t.query;else if(!r.isNullOrUndefined(t.search))return T&&(n.hostname=n.host=_.shift(),(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.host=n.hostname=N.shift())),n.search=t.search,n.query=t.query,r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!_.length)return n.pathname=null,n.path=n.search?"/"+n.search:null,n.href=n.format(),n;for(var O=_.slice(-1)[0],w=(n.host||t.host||_.length>1)&&("."===O||".."===O)||""===O,S=0,I=_.length;I>=0;I--)"."===(O=_[I])?_.splice(I,1):".."===O?(_.splice(I,1),S++):S&&(_.splice(I,1),S--);if(!v&&!x)for(;S--;S)_.unshift("..");!v||""===_[0]||_[0]&&"/"===_[0].charAt(0)||_.unshift(""),w&&"/"!==_.join("/").substr(-1)&&_.push("");var N,C=""===_[0]||_[0]&&"/"===_[0].charAt(0);return T&&(n.hostname=n.host=C?"":_.length?_.shift():"",(N=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=N.shift(),n.host=n.hostname=N.shift())),(v=v||n.host&&_.length)&&!C&&_.unshift(""),_.length?n.pathname=_.join("/"):(n.pathname=null,n.path=null),r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var t=this.host,e=o.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},"D/JM":function(t,e,n){!function(t){"use strict";t.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},D0XW:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("3N8a");const r=new(n("IjjT").a)(a.a)},D4zM:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.elementRef=t,this.renderer=e}ngOnInit(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()}getInputElement(){return document.getElementById(this.cdPasswordButton)}update(){const t=this.getInputElement();t&&"text"===t.type?(this.renderer.removeClass(this.iElement,"fa-eye"),this.renderer.addClass(this.iElement,"fa-eye-slash")):(this.renderer.removeClass(this.iElement,"fa-eye-slash"),this.renderer.addClass(this.iElement,"fa-eye"))}onClick(){const t=this.getInputElement();t.type="password"===t.type?"text":"password",this.update()}}},DH7j:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>Array.isArray||(t=>t&&"number"==typeof t.length))()},"DKr+":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["thodde secondanim","thodde second"],ss:[t+" secondanim",t+" second"],m:["eka mintan","ek minute"],mm:[t+" mintanim",t+" mintam"],h:["eka voran","ek vor"],hh:[t+" voranim",t+" voram"],d:["eka disan","ek dis"],dd:[t+" disanim",t+" dis"],M:["eka mhoinean","ek mhoino"],MM:[t+" mhoineanim",t+" mhoine"],y:["eka vorsan","ek voros"],yy:[t+" vorsanim",t+" vorsam"]};return e?r[n][0]:r[n][1]}t.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(t,e){switch(e){case"D":return t+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return t}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(t,e){return 12===t&&(t=0),"rati"===e?t<4?t:t+12:"sokalli"===e?t:"donparam"===e?t>12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokalli":t<16?"donparam":t<20?"sanje":"rati"}})}(n("wd/R"))},DNAf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t,e){this.customValidations={},this.i18n=e,this.empty=this.i18n("No items selected."),this.selectionLimit={tooltip:this.i18n("Deselect item to select again"),text:this.i18n("Selection limit reached")},this.filter=this.i18n("Filter tags"),this.add=this.i18n("Add badge"),this.noOptions=this.i18n("There are no items available."),a.merge(this,t)}}},DPsx:function(t,e,n){var a=n("g6v/"),r=n("0Dky"),i=n("zBJ4");t.exports=!a&&!r((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},DSRE:function(t,e,n){(function(t){var a=n("Kz5y"),r=n("B8du"),i=e&&!e.nodeType&&e,s=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=s&&s.exports===i?a.Buffer:void 0;t.exports=(o?o.isBuffer:void 0)||r}).call(this,n("YuTi")(t))},DSvg:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("vkgz"),r=n("aexS"),i=n("8Y7J"),s=n("IheW"),o=n("iInd"),u=n("pL04");let l=(()=>{class t{constructor(t,e,n){this.authStorageService=t,this.http=e,this.router=n}check(t){return this.http.post("api/auth/check",{token:t})}login(t){return this.http.post("api/auth",t).pipe(Object(a.a)(t=>{this.authStorageService.set(t.username,t.token,t.permissions,t.sso,t.pwdExpirationDate,t.pwdUpdateRequired)}))}logout(t=null){return this.http.post("api/auth/logout",null).subscribe(e=>{this.router.navigate(["/login"],{skipLocationChange:!0}),this.authStorageService.remove(),t&&t(),window.location.replace(e.redirect_url)})}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](r.a),i["ɵɵinject"](s.c),i["ɵɵinject"](o.m))},token:t,providedIn:u.a}),t})()},Dkky:function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},Dmvi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},DoHr:function(t,e,n){!function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};t.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'ıncı";var a=t%10;return t+(e[a]||e[t%100-a]||e[t>=100?100:null])}},week:{dow:1,doy:7}})}(n("wd/R"))},DqMs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("IZUe"),s=n("MdoF"),o=n("CNMR");n("/NlG"),n("GiVz"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return v}));var u=a["ɵcrt"]({encapsulation:0,styles:[[".alert-panel-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:.5em}.alert-panel-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"td",[["class","alert-panel-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpad"](4,1)],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""),i=t(e,4,0,n.icons.large3x);t(e,3,0,r,i)}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](9,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.showIcon),t(e,5,0,n.showTitle),t(e,9,0,a["ɵnov"](e.parent,6))}),null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"i",[["aria-hidden","true"]],[[8,"className",0]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](2,"alert-",n.bootstrapClass," ",n.typeIcon,""))}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"td",[["class","alert-panel-title"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](5,0,null,null,2,"td",[["class","alert-panel-text"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.showIcon),t(e,4,0,n.showTitle),t(e,7,0,a["ɵnov"](e.parent,6))}),null)}function m(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"button",[["autofocus",""],["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.backAction.emit()&&a),a}),null,null)),a["ɵdid"](2,4210688,null,0,i.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),(t()(),a["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,2,0,"")}),null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"alert",[],null,null,null,s.c,s.b)),a["ɵdid"](1,114688,null,0,o.a,[o.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,3,"table",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["slim",2]],null,0,null,b)),(t()(),a["ɵand"](0,[["content",2]],null,0,null,m)),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](8,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.bootstrapClass,"")),t(e,4,0,"normal"===n.size,a["ɵnov"](e,5)),t(e,8,0,n.backAction.observers.length>0)}),null)}},"Dw+G":function(t,e,n){var a=n("juv8"),r=n("mTTR");t.exports=function(t,e){return t&&a(e,r(e),t)}},Dwqy:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("wd/R");class r{constructor(){}transform(t){return t?a(1e3*t).fromNow():"unknown"}}},DxQv:function(t,e,n){!function(t){"use strict";t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},DzJC:function(t,e,n){var a=n("sEfC"),r=n("GoyQ");t.exports=function(t,e,n){var i=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return r(n)&&(i="leading"in n?!!n.leading:i,s="trailing"in n?!!n.trailing:s),a(t,e,{leading:i,maxWait:e,trailing:s})}},Dzi0:function(t,e,n){!function(t){"use strict";t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},"E+lV":function(t,e,n){!function(t){"use strict";var e={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},E2fk:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return"[INF]"===t?"info":"[WRN]"===t?"warn":"[ERR]"===t?"err":""}}},E2jh:function(t,e,n){var a,r=n("2gN3"),i=(a=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";t.exports=function(t){return!!i&&i in t}},E9XD:function(t,e,n){"use strict";var a=n("I+eb"),r=n("1Y/n").left,i=n("pkCn"),s=n("rkAj"),o=i("reduce"),u=s("reduce",{1:0});a({target:"Array",proto:!0,forced:!o||!u},{reduce:function(t){return r(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},EA7m:function(t,e,n){var a=n("zZ0H"),r=n("Ioao"),i=n("wclG");t.exports=function(t,e){return i(r(t,e,a),t+"")}},EApP:function(t,e,n){"use strict";n.d(e,"a",(function(){return _})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return v})),n.d(e,"d",(function(){return o})),n.d(e,"e",(function(){return S})),n.d(e,"f",(function(){return N})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return O})),n.d(e,"i",(function(){return T})),n.d(e,"j",(function(){return y}));var a=n("8Y7J"),r=n("XNiG"),i=n("cUpR"),s=n("SVse");let o=class{};class u{constructor(t,e,n,a,i,s){this.toastId=t,this.config=e,this.message=n,this.title=a,this.toastType=i,this.toastRef=s,this._onTap=new r.a,this._onAction=new r.a,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(t){this._onAction.next(t)}onAction(){return this._onAction.asObservable()}}const l={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing"},d=new a.InjectionToken("ToastConfig");class c{constructor(t,e){this.component=t,this.injector=e}attach(t,e){return this._attachedHost=t,t.attach(this,e)}detach(){const t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()}get isAttached(){return null!=this._attachedHost}setAttachedHost(t){this._attachedHost=t}}class f extends class{attach(t,e){return this._attachedPortal=t,this.attachComponentPortal(t,e)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(t){this._disposeFn=t}}{constructor(t,e,n){super(),this._hostDomElement=t,this._componentFactoryResolver=e,this._appRef=n}attachComponentPortal(t,e){const n=this._componentFactoryResolver.resolveComponentFactory(t.component);let a;return a=n.create(t.injector),this._appRef.attachView(a.hostView),this.setDisposeFn(()=>{this._appRef.detachView(a.hostView),a.destroy()}),e?this._hostDomElement.insertBefore(this._getComponentRootNode(a),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(a)),a}_getComponentRootNode(t){return t.hostView.rootNodes[0]}}let h=(()=>{let t=class{constructor(t){this._document=t}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const t=this._document.createElement("div");t.classList.add("overlay-container"),this._document.body.appendChild(t),this._containerElement=t}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class g{constructor(t){this._portalHost=t}attach(t,e=!0){return this._portalHost.attach(t,e)}detach(){return this._portalHost.detach()}}let p=(()=>{let t=class{constructor(t,e,n,a){this._overlayContainer=t,this._componentFactoryResolver=e,this._appRef=n,this._document=a,this._paneElements=new Map}create(t,e){return this._createOverlayRef(this.getPaneElement(t,e))}getPaneElement(t="",e){return this._paneElements.get(e)||this._paneElements.set(e,{}),this._paneElements.get(e)[t]||(this._paneElements.get(e)[t]=this._createPaneElement(t,e)),this._paneElements.get(e)[t]}_createPaneElement(t,e){const n=this._document.createElement("div");return n.id="toast-container",n.classList.add(t),n.classList.add("toast-container"),e?e.getContainerElement().appendChild(n):this._overlayContainer.getContainerElement().appendChild(n),n}_createPortalHost(t){return new f(t,this._componentFactoryResolver,this._appRef)}_createOverlayRef(t){return new g(this._createPortalHost(t))}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(h),Object(a["ɵɵinject"])(a.ComponentFactoryResolver),Object(a["ɵɵinject"])(a.ApplicationRef),Object(a["ɵɵinject"])(s.DOCUMENT))},token:t,providedIn:"root"}),t})();class b{constructor(t){this._overlayRef=t,this.duplicatesCount=0,this._afterClosed=new r.a,this._activate=new r.a,this._manualClose=new r.a,this._resetTimeout=new r.a,this._countDuplicate=new r.a}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(t,e){t&&this._resetTimeout.next(),e&&this._countDuplicate.next(++this.duplicatesCount)}}class m{constructor(t,e){this._toastPackage=t,this._parentInjector=e}get(t,e,n){return t===u?this._toastPackage:this._parentInjector.get(t,e,n)}}let y=(()=>{let t=class{constructor(t,e,n,a,r){this.overlay=e,this._injector=n,this.sanitizer=a,this.ngZone=r,this.currentlyActive=0,this.toasts=[],this.index=0,this.toastrConfig=Object.assign({},t.default,t.config),t.config.iconClasses&&(this.toastrConfig.iconClasses=Object.assign({},t.default.iconClasses,t.config.iconClasses))}show(t,e,n={},a=""){return this._preBuildNotification(a,t,e,this.applyConfig(n))}success(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.success||"",t,e,this.applyConfig(n))}error(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.error||"",t,e,this.applyConfig(n))}info(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.info||"",t,e,this.applyConfig(n))}warning(t,e,n={}){return this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",t,e,this.applyConfig(n))}clear(t){for(const e of this.toasts)if(void 0!==t){if(e.toastId===t)return void e.toastRef.manualClose()}else e.toastRef.manualClose()}remove(t){const e=this._findToast(t);if(!e)return!1;if(e.activeToast.toastRef.close(),this.toasts.splice(e.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length)return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){const t=this.toasts[this.currentlyActive].toastRef;t.isInactive()||(this.currentlyActive=this.currentlyActive+1,t.activate())}return!0}findDuplicate(t,e,n){for(const a of this.toasts)if(a.message===t)return a.toastRef.onDuplicate(e,n),a;return null}applyConfig(t={}){return Object.assign({},this.toastrConfig,t)}_findToast(t){for(let e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===t)return{index:e,activeToast:this.toasts[e]};return null}_preBuildNotification(t,e,n,a){return a.onActivateTick?this.ngZone.run(()=>this._buildNotification(t,e,n,a)):this._buildNotification(t,e,n,a)}_buildNotification(t,e,n,r){if(!r.toastComponent)throw new Error("toastComponent required");const i=this.findDuplicate(e,this.toastrConfig.resetTimeoutOnDuplicate&&r.timeOut>0,this.toastrConfig.countDuplicates);if(e&&this.toastrConfig.preventDuplicates&&null!==i)return i;this.previousToastMessage=e;let s=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(s=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));const o=this.overlay.create(r.positionClass,this.overlayContainer);this.index=this.index+1;let l=e;e&&r.enableHtml&&(l=this.sanitizer.sanitize(a.SecurityContext.HTML,e));const d=new b(o),f=new u(this.index,r,l,n,t,d),h=new m(f,this._injector),g=new c(r.toastComponent,h),p=o.attach(g,this.toastrConfig.newestOnTop);d.componentInstance=p._component;const y={toastId:this.index,message:e||"",toastRef:d,onShown:d.afterActivate(),onHidden:d.afterClosed(),onTap:f.onTap(),onAction:f.onAction(),portal:p};return s||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{y.toastRef.activate()})),this.toasts.push(y),y}};return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t(Object(a["ɵɵinject"])(d),Object(a["ɵɵinject"])(p),Object(a["ɵɵinject"])(a.INJECTOR),Object(a["ɵɵinject"])(i.b),Object(a["ɵɵinject"])(a.NgZone))},token:t,providedIn:"root"}),t})(),v=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.ngZone=n,this.width=-1,this.toastClasses="",this.state={value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}},this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state.value)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state=Object.assign({},this.state,{value:"active"}),!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object.assign({},this.state,{value:"active"}),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object.assign({},this.state,{value:"removed"}),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state.value&&(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(t),e)):this.timeout=setTimeout(()=>t(),e)}outsideInterval(t,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(t),e)):this.intervalId=setInterval(()=>t(),e)}runInsideAngular(t){this.ngZone?this.ngZone.run(()=>t()):t()}};var x;const _=Object.assign({},l,{toastComponent:v});let T=x=class{static forRoot(t={}){return{ngModule:x,providers:[{provide:d,useValue:{default:_,config:t}}]}}},O=class{static forRoot(t={}){return{ngModule:T,providers:[{provide:d,useValue:{default:l,config:t}}]}}};var w;let S=class{constructor(t,e,n){this.toastrService=t,this.toastPackage=e,this.appRef=n,this.width=-1,this.toastClasses="",this.state="inactive",this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(t=>{this.duplicatesCount=t})}get displayStyle(){if("inactive"===this.state)return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state="active",!0!==this.options.disableTimeOut&&"timeOut"!==this.options.disableTimeOut&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(0===this.width||100===this.width||!this.options.timeOut)return;const t=(new Date).getTime();this.width=(this.hideTime-t)/this.options.timeOut*100,"increasing"===this.options.progressAnimation&&(this.width=100-this.width),this.width<=0&&(this.width=0),this.width>=100&&(this.width=100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)}delayedHideToast(){!0!==this.options.disableTimeOut&&"extendedTimeOut"!==this.options.disableTimeOut&&0!==this.options.extendedTimeOut&&"removed"!==this.state&&(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=(new Date).getTime()+(this.options.timeOut||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}};const I=Object.assign({},l,{toastComponent:S});let N=w=class{static forRoot(t={}){return{ngModule:w,providers:[{provide:d,useValue:{default:I,config:t}}]}}}},EEGq:function(t,e,n){var a=n("juv8"),r=n("oCl/");t.exports=function(t,e){return a(t,r(t),e)}},EEJc:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("ajRT");n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return s})),n.d(e,"a",(function(){return u}));var i=a["ɵcrt"]({encapsulation:0,styles:[[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:5px 5px 0 0}  .modal-footer{border-bottom:1px solid #d1d1d1;background-color:#f5f5f5;border-radius:0 0 5px 5px}  .modal-body{max-height:70vh;overflow-y:auto;overflow-x:hidden}"]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"h4",[["class","modal-title float-left"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),a["ɵncd"](null,1)],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-modal",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.a,[],null,null)],null,null)}var u=a["ɵccf"]("cd-modal",r.a,o,{modalRef:"modalRef"},{hide:"hide"},[".modal-title",".modal-content"])},ENF9:function(t,e,n){"use strict";var a,r=n("2oRo"),i=n("4syw"),s=n("8YOa"),o=n("bWFh"),u=n("rKzb"),l=n("hh1v"),d=n("afO8").enforce,c=n("f5p1"),f=!r.ActiveXObject&&"ActiveXObject"in r,h=Object.isExtensible,g=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},p=t.exports=o("WeakMap",g,u);if(c&&f){a=u.getConstructor(g,"WeakMap",!0),s.REQUIRED=!0;var b=p.prototype,m=b.delete,y=b.has,v=b.get,x=b.set;i(b,{delete:function(t){if(l(t)&&!h(t)){var e=d(this);return e.frozen||(e.frozen=new a),m.call(this,t)||e.frozen.delete(t)}return m.call(this,t)},has:function(t){if(l(t)&&!h(t)){var e=d(this);return e.frozen||(e.frozen=new a),y.call(this,t)||e.frozen.has(t)}return y.call(this,t)},get:function(t){if(l(t)&&!h(t)){var e=d(this);return e.frozen||(e.frozen=new a),y.call(this,t)?v.call(this,t):e.frozen.get(t)}return v.call(this,t)},set:function(t,e){if(l(t)&&!h(t)){var n=d(this);n.frozen||(n.frozen=new a),y.call(this,t)?x.call(this,t,e):n.frozen.set(t,e)}else x.call(this,t,e);return this}})}},EOgW:function(t,e,n){!function(t){"use strict";t.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(t){return"หลังเที่ยง"===t},meridiem:function(t,e,n){return t<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("wd/R"))},ES0t:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("KOzp"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".bs3.popover-top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.popover.top[_nghost-%COMP%] {\n      margin-bottom: 10px;\n    }\n    .popover.bottom[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -4px;\n    }\n    .bs3.bs-popover-left[_nghost-%COMP%] {\n      margin-right: .5rem;\n    }\n    .bs3.bs-popover-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-popover-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%]{\n      margin: .3rem 0;\n    }"],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"h3",[["class","popover-title popover-header"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.title)}))}function u(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","popover-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"div",[["class","popover-content popover-body"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){t(e,2,0,e.component.title)}),null)}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"popover-container",[["role","tooltip"],["style","display:block;"]],[[8,"className",0],[2,"show",null],[2,"bs3",null]],null,null,u,s)),a["ɵdid"](1,49152,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"popover in popover-"+a["ɵnov"](e,1).placement+" bs-popover-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3)}))}var d=a["ɵccf"]("popover-container",r.b,l,{placement:"placement",title:"title"},{},["*"])},EY2u:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("HDdC");const r=new a.a(t=>t.complete());function i(t){return t?function(t){return new a.a(e=>t.schedule(()=>e.complete()))}(t):r}},EgGo:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("SVse"),r=n("sne2");class i{constructor(t){this.base=t}static concatURLSegments(t){return t.reduce(a.Location.joinWithSlash)}static buildURL(t,...e){return i.concatURLSegments([...t?["/"]:[],...e])}getURL(t,e=!0,...n){return i.buildURL(e,this.base,t,...n)}getCreate(t=!0){return this.getURL(r.e.CREATE,t)}getCreateFrom(t,e=!0){return this.getURL(r.e.CREATE,e,t)}getDelete(t=!0){return this.getURL(r.e.DELETE,t)}getEdit(t,e=!0){return this.getURL(r.e.EDIT,e,t)}getUpdate(t,e=!0){return this.getURL(r.e.UPDATE,e,t)}getAdd(t=!0){return this.getURL(r.e.ADD,t)}getRemove(t=!0){return this.getURL(r.e.REMOVE,t)}getRecreate(t,e=!0){return this.getURL(r.e.RECREATE,e,t)}}},EiPl:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="de-DE">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Navigation umschalten</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dashboard</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Cluster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitore</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH-Zuordnung</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager-Module</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Protokolle</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Überwachung</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pools</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Block</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Spiegelung</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektgateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Daten \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>werden abgerufen. Bitte warten...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zuvor zwischengespeicherte Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  für \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> werden angezeigt.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Daten\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> für\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> konnten nicht geladen werden.\n  Prüfen Sie die Clusterintegrität.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Benachrichtigungen löschen</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Benachrichtigungen entfernen</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Dauer:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Es sind keine Benachrichtigungen verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Aufträge und Benachrichtigungen</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sprache auswählen</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Bereichsdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Überwachungsfunktion.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Das Grafana-Dashboard ist nicht vorhanden. In der\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> wird beschrieben,\n  wie Grafana Dashboards hinzugefügt werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana-Zeitauswahl</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Einstellungen für Zurücksetzungen</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Entfernen Sie den aktuellen Konfigurationswert. Stattdessen wird der Standard-Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zurück</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>weniger als 1 \n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Das Passwort läuft in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>Tag(en) ab. Klicken Sie \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> hier \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, um es jetzt zu ändern.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Das Modul "Orchestrator" ist nicht verfügbar. Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>zum Konfigurieren und Aktivieren dieses Moduls.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Daten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Filter löschen</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>ausgewählt</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>gefunden</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>insgesamt</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Name</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Detaillierte Beschreibung</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Standard</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon-Standard</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Werte</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Standard --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>wahr</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>falsch</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Speichern</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH-Betrachter</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Laden...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Hostname</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Dies ist ein Pflichtfeld.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Der ausgewählte Hostname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten Einträge \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Sind Sie sicher dass Sie die ausgewählten \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> möchten?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ja, ich bin sicher.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Abbrechen</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Schließen</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste mit Hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Gesamtleistung</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Keine Einträge gefunden</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Clusterprotokolle</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Revisionsprotokoll</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorität:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Schlüsselwort:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datumsauswahl</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Zeitraum:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Konfiguration wird geladen...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Die Konfiguration konnte nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Manager-Modul bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Der eingegebene Wert ist kein gültiger UUID, z. B.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Der eingegebene Wert muss eine gültige IP-Adresse sein.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er muss kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er muss größer als \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/> sein oder diesem Wert entsprechen.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Der eingegebene Wert muss eine Zahl sein.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Der eingegebene Wert muss eine Zahl oder Dezimalzahl sein.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualisiere</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Cluster-ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Monmap geändert</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Monmap-Epoche</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>erforderliche Verbindung</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>erforderliche Überwachung</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>In Quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nicht in Quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>Vorschau der OSD-Erstellung</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> Laufwerke\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Geteilte Laufwerke</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL Slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>Wie viele OSDs pro WAL-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Geben Sie 0 an, um das Orchestrator-Backend entscheiden zu lassen.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB Slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>Wie viele OSDs pro DB-Laufwerk.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funktionen</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Vorschau</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Clusterweite OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Absenden</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Erweitert...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Erweiterte Konfigurationsoptionen</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD-Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorität</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Prioritätswerte anpassen</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Dies ist ein Pflichtfeld!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu hoch! Er darf nicht größer als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Der eingegebene Wert ist zu niedrig! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Der Wert muss zwischen 0 und 1 liegen.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Neu gewichten</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Tief } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {tief } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD-Liste</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Aktive Warnungen</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>Alle Warnungen</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Wählen Sie das zu vergleichende Attribut --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wert</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Regulären Ausdruck verwenden</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Löschen</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Das Bearbeiten einer Stummschaltung löscht die Vorherige und legt eine neue Stummschaltung an.</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Ersteller</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Kommentar</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Startzeit</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Wenn die Startzeit in der Vergangenheit liegt, wird die Erstellungszeit verwendet</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Dauer</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Ende</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Integrität</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiken</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für NFS Ganesha.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Jeder Client hat Zugriff</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adressen</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Pflichtfeld</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Muss mindestens einen kommagetrennten Wert enthalten</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Beispielsweise:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Zugriffstyp</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Clients hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Kein Cluster verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Cluster auswählen --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Daemon hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Speicher-Back-End</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Keine Datenpools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Speicher-Back-End auswählen --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Objektgatewaybenutzer</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Keine Benutzer verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Objektgatewaybenutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS-Benutzer-ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- keine Clients verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx-Client auswählen --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS-Name</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Kein CephFS Dateisystem verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- CephFS Dateisystem auswählen --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Sicherheitsbezeichnung</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Sicherheitsbezeichnung aktivieren</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS-Pfad</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Pfad muss mit einem \'/\' beginnen und kann von einem Wort gefolgt werden</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Neues Verzeichnis wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Pfad</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Pfad darf nur ein einzelner \'/\' oder ein Wort sein</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Neuer Bucket wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS-Tag</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativer Zugriff für \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Mountpunkte (dürfen keinen führenden / enthalten)\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Clients können Unterverzeichnisse möglicherweise nicht mounten (d. h. wenn der Pfad = foo ist, kann der Client foo/baz möglicherweise nicht mounten).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Tag-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Die Position dieses \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>-Exports\n                auf dem \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo-Dateisystem\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (muss eindeutig sein).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Wenn unterschiedliche Pseudo-Optionen verwendet werden, wird derselbe Pfad möglicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Kein Zugriffstyp verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Zugriffstyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>Das NFS-Backend für das Objektgateway besitzt eine Reihe von\n Einschränkungen, die Schreibvorgänge von Anwendungen auf diese\n Freigaben ernsthaft beeinträchtigen. Bitte konsultieren Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> Dokumentation \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> für weitere Informationen, bevor Sie den Schreibzugriff aktivieren.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Kein Squash verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportprotokoll</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Altes Passwort</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Das alte und neue Passwort müssen unterschiedlich sein.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Neues Passwort</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Neues Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem neuen Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Bitte legen Sie ein neues Passwort fest.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>Sie werden anschließend auf die Login-Seite weitergeleitet.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Willkommen bei Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Benutzername ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Passwort ist erforderlich</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Anmeldung</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Der Benutzer ist in Ceph leider nicht enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Kehren Sie zur \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Anmeldeseite\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zurück. Sie werden vom Identitätsanbieter abgemeldet, wenn Sie versuchen, sich erneut anzumelden.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Verboten</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Leider sind Sie nicht berechtigt, den gewünschten Inhalt anzuzeigen.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Leider konnte der gewünschte Inhalt nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Weder Hostname noch OSD ID angegeben</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>bestanden</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>fehlgeschlagen</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Laufwerksinformationen</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>Keine SMART-Daten für dieses Laufwerk verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART-Daten werden geladen.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD-Konfiguration</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Entfernen Sie den lokalen Konfigurationswert. Stattdessen wird der übergeordnete Konfigurationswert übernommen und verwendet.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Der Mindestwert lautet 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Pool-Liste</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Der Name darf nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Der ausgewählte Erasure-Coding-Profilname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Laufwerksklasse</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Datenblöcke (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Muss größer oder gleich 2 sein.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Datenblöcke für die Codierung (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Muss größer oder gleich 1 sein.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Dauerhaftigkeitsschätzung (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Standort (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush-Ausfalldomäne</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush-Standort</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Keine</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Paketgröße</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush-Stamm</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crush-Geräteklasse</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>beliebig</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Verzeichnis</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Name...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Der ausgewählte Poolname wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Pooltyp</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pooltyp auswählen --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoskalierung</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Es wird mindestens eine Platzierungsgruppe benötigt.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Ihr Cluster kann nicht so viele Platzierungsgruppen verarbeiten. Berechnen Sie die benötigte Anzahl an Platzierungsgruppen.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Hilfe zur Berechnung</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>Die aktuellen Einstellungen für die Platzierungsgruppen wurden für Sie berechnet.\n                    Stellen Sie vor dem Senden sicher, dass die Werte Ihren Anforderungen entsprechen.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Reproduzierte Größe</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Die angegebene Größe liegt außerhalb des Bereichs. Gültige Werte liegen zwischen\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> und \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flags</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC-Überschreibungen</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Anwendungen</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Kein Erasure-Coding-Profil verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Erasure-Coding-Profil auswählen --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>Ein neuer CRUSH Regelsatz wird implizit erstellt.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>Keine Regeln vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush-Regel auswählen --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush-Regel</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush-Schritte</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprimierung</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modus</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Kein Komprimierungsalgorithmus für Erasure-Coding verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>z. B. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wert sollte größer als 0 sein</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Wert sollte niedriger als die maximale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maximale Blobgröße</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>z. B. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wert sollte größer als die minimale Blobgröße sein</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Verhältnis</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Komprimierungsverhältnis</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wert sollte zwischen 0,0 und 1,0 liegen</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kontingente</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max. Bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Lassen Sie das Feld leer oder geben Sie 0 an, um dieses Quota zu deaktivieren.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Ein gültiges Kontingent sollte größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>z. B. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Der Wert sollte größer als oder gleich 0 sein</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Details</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Leistungsdetails</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Details zu den Cache-Ebenen</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Bootstrap-Token erstellen</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site-Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>Mindestens ein Pool ist erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Erzeugen</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Erzeugtes Token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Bootstrap-Token importieren</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Richtung</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>Der Token ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Site-Namen bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site-Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Image in Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Schutz läuft ab am</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Falsches Datumsformat. Verwenden Sie "TT.MM.JJJJ HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Schutz ist bereits abgelaufen. Wählen Sie ein künftiges Datum aus oder lassen Sie es leer.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Image verschieben</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Muss grösser oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Muss kleiner oder gleich \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Übersicht</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Ziele</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n              dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Gemeinsamer Benutzer</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Gemeinsames Passwort</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Lesen Sie die\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für iSCSI-Ziele.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Verfügbare Informationen:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI-Ziele nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ermittlungsauthentifizierung</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Nur für RBD-Images verfügbar, bei denen \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> aktiviert ist\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Erstellt</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Größe</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekte</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Objektgröße</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Bereitgestellt</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Bereitgestellt gesamt</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Striping-Einheit</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Striping-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Übergeordnet</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Präfix für Blockname</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Reihenfolge</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshots</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Diese Einstellung überschreibt den globalen Wert</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Dies ist der globale Wert. Kein Wert für diese Option wurde für dieses Image festgelegt.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' und \'@\' sind nicht zulässig.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Keine rbd-Pools verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pool auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- Keine Namensräume verfügbar --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Namensraum auswählen --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Dedizierten Datenpool verwenden</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datenpool</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedizierter Pool zur Speicherung von RBD-Objektdaten.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Sie müssen die Größe erhöhen.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Erweitert</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Striping</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Stripe-Einheit</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Stripe-Einheit auswählen --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Anzahl definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Die Stripe-Einheit ist größer als die Objektgröße.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Stripe-Anzahl</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Dies ist ein Pflichtfeld, da eine Stripe-Einheit definiert wurde!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Die Stripe-Anzahl muss größer als 0 sein.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Namensraum anlegen</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namensraum existiert bereits.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Sie sind dabei, ein Rollback durchzuführen</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Papierkorb bereinigen</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Alle</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Poolname...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Image wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Zum Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Neuen Namen des Images eingeben und klicken</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Neuer Name</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Abgelaufen am</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Geschützt bis</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Dieses Image ist geschützt bis \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI-Topologie</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Konfigurieren</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Eine Änderung dieser Parameter von ihren Standardwerten ist in der Regel nicht erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Bezeichner</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Bestätigen</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Erweiterte Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Ziel-IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN hat ein fehlerhaftes Muster.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Eine IQN hat die folgende Notation \n\'iqn.$jahr-$monat.$umkehradresse:$definierterName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Zum Beispiel: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Weitere Informationen</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Erweiterte Einstellungen bei diesem Ziel wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Portal hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Es sind mindestens \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> Gateways erforderlich.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Einstellungen bei diesem Image wurden geändert.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Image hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL-Authentifizierung</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiatoren</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Client-IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Initiator-IQN muss eindeutig sein.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Benutzernamen müssen zwischen 8 und 64 Zeichen lang sein und\n                        dürfen nur Buchstaben, \'.\', \'@\', \'-\', \'_\' oder \':\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwörter müssen zwischen 12 und 16 Zeichen lang sein\n              und dürfen nur Buchstaben, \'@\', \'-\', \'_\' oder \'/\' enthalten.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Der Initiator gehört zu einer Gruppe. Images werden in der Gruppe konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Keine Elemente hinzugefügt.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Initiator hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Gruppen</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Gruppe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Gruppe hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namensräume</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papierkorb</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Probleme</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Wird synchronisiert</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Fertig</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Spiegelungsmodus für Pool bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Wählen Sie zum Bearbeiten des Spiegelungsmodus für den Pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> einen neuen Modus aus der Liste aus und klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualisieren\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Vor dem Deaktivieren der Spiegelung müssen Peer-Cluster entfernt werden.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  Peer für Poolspiegelung\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Bearbeiten} other {Hinzufügen} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Clustername</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Der Clustername ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX-ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX-ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>Die CephX ID ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adressen der Monitore</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Kommagetrennte Adressen...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Die Anrede ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-codierter Schlüssel...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX-Schlüssel muss base64-codiert sein.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Leistungsindikatoren nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Lesen Sie die \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Dokumentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> zum\n  Konfigurieren und Aktivieren der Verwaltungsfunktion für das Objektgateway.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste der Daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Bucket-Daten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Der Wert ist ungültig.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Der ausgewählte Name wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Inhaber</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Benutzer auswählen --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Aktiviert</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Indextyp</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Platzierungsregel</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marker</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maximum für Marker</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Masterversion</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Änderungszeit</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zonengruppe</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Bucket-Quote</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maximale Größe</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Unbegrenzt</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maximale Objekte</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Benutzername</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Benutzername auswählen --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Schlüssel automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Zugriffsschlüssel</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Geheimer Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Vollständiger Name</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Angehalten</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maximale Buckets</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Befähigungen</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Benutzerquote</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Anzeigen</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Typ auswählen --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Berechtigung</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Berechtigung auswählen --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Die ausgewählte Unterbenutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lesen, schreiben</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>voll</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Geheimnis automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Benutzerdaten werden geladen...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Die Benutzerdaten konnten nicht geladen werden.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Die ausgewählte Benutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Dies ist keine gültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Die ausgewählte E-Mail-Adresse wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. Buckets</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Benutzerdefiniert</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Keine Unterbenutzer vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Keine Schlüssel vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Keine Befähigungen vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Unbegrenzte Größe</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. Größe</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Unbegrenzte Objekte</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. Objekte</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Der eingegebene Wert muss &gt;=0 sein.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Beschreibung...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Berechtigungen</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rollen</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Passwort bestätigen</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Passwortbestätigung stimmt nicht mit dem Passwort überein.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Ablaufdatum des Passworts</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Ablaufdatum des Passworts...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-Mail-Adresse</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Ungültige E-Mail-Adresse.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>Benutzer muss das Passwort bei der nächsten Anmeldung ändern</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Sie sind dabei, die Lese-/Aktualisierungsberechtigungen für Benutzer von Ihrem eigenen Benutzer zu entfernen.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Wenn Sie den Vorgang fortsetzen, können Sie Benutzerrollen nicht mehr hinzufügen oder entfernen.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Möchten Sie den Vorgang wirklich fortsetzen?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Hilfe</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Über</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Dashboard-Einstellungen</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Benutzerverwaltung</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Angemeldeter Benutzer</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Angemeldet als\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Passwort ändern</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Abmelden</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attribute (OSD-Zuordnung)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadaten nicht verfügbar</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadaten</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Laufwerkszustand</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Leistungsindikator</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogramm nicht verfügbar: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Schreiben</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramm</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>Hostname nicht gefunden.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Aktuelle Werte</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Quelle</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Ebene</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Kann zur Laufzeit aktualisiert werden (bearbeitbar)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tags</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Auflistungswerte</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Siehe auch</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Clusterstatus</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manager-Daemons</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektgateways</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadatenserver</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI-Gateways</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Client-IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Clientdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Client-Lese-/Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Wiederherstellungsdurchsatz</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Leistung</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Rohkapazität</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Platzierungsgruppen pro OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Platzierungsgruppenstatus</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapazität</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> Weitere Details finden Sie in den \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Protokollen\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Ränge</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS Leistungsindikatoren</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Verzeichnisse</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Aktuell</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target> Ermittlungsauthentifizierung aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Keine Portale verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Keine Images verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Keine Images verfügbar. Fügen Sie dem Ziel ein Image hinzu.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Keine Initiatoren verfügen. Fügen Sie dem Ziel einen Initiator hinzu.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Ziel</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O seit</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instanz</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problem</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Fortschritt</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Bearbeitungsmodus</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Peer hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Peer bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Peer löschen</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># remote</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>Peer spiegeln</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Umfassende Vereinfachung</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Schichtung</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Exklusive Sperre</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Objektzuordnung (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journaling (erfordert exklusive Sperre)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namensraum</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Images insgesamt</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namensraum enthält Images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NICHT GESCHÜTZT</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback für RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD-Snapshot</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Gelöscht am</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>Zustand</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>Stamm</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Standby-Daemons</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivität</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Nutzung</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Der Wert kann zur Laufzeit aktualisiert werden.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemons/Clients rufen diesen Wert nicht aus der\n      Datenbank \'monitor config\' ab. Es ist nicht zulässig, diese Option über \'ceph config\n      set ...\' festzulegen. Diese Option sollte über \'ceph.conf\' oder an der\n      Befehlszeile konfiguriert werden.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Die Option wird nur während des Daemon-Starts wirksam.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Die Option wirkt sich nur auf die Cluster-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Die Option wirkt sich nur auf die Daemon-Erstellung aus.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualisierte Konfigurationsoption \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Aktueller Wert</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Bearbeitbar</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Laufwerkspfad</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identifiziere Laufwerk \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifikation von \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' auf Host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\' gestartet\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktivieren</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Deaktivieren</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Verbindung wird erneut hergestellt, bitte warten...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Öffentliche Adresse</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Offene Sitzungen</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Kein In-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSDs, die zuvor als \'out\' markiert wurden, werden beim Start nicht wieder markiert</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Kein Out-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDs werden nach dem konfigurierten Intervall nicht automatisch als \'out\' markiert</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Kein Up-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDs dürfen nicht gestartet werden</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Kein Down-Vorgang</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSD-Fehlerberichte werden ignoriert, sodass die Monitore die OSDs nicht als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Hält Lese- und Schreibvorgänge an</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Kein Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Kein umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Umfassendes Scrubbing ist deaktiviert</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Kein Abgleich</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Abgleich der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Keine Wiederherstellung</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Wiederherstellung der Platzierungsgruppen ist ausgesetzt</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitweise Sortierung</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Bitweise Sortierung verwenden</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Bereinigte Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDs besitzen konvertierte Snapsets</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Löschvorgänge bei Wiederherstellungen</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Bei der Wiederherstellung anstelle des Peerings durchgeführte Löschvorgänge</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Hardlimit für Platzierungsgruppen-Protokoll</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Legt ein Hardlimit für die Platzierungsgruppen-Protokolllänge fest</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualisierte OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>aus</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>ein</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ausgefallen</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Markieren</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD verloren</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>markierter Verlust</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>bereinigt</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>vernichten</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>vernichtet</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>löschen</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Wiederherstellungspriorität</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG Scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Platzierungsgruppen</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes für Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes für Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/> markieren\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Aktualisierte PG Scrub-Optionen</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max. Abgleiche</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Wiederherstellung, max. aktiv</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Wiederherstellung, max. - einzelner Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Wiederherstellung - Inaktivität</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Auftrag</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Schweregrad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Gestartet</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attributname</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulärer Ausdruck</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Bitte fügen Sie Ihren Prometheus-Host zur Dashboard-Konfiguration hinzu und aktualisieren die Seite</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Erstellt von</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Endet</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Verwendet</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Verf.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bereinigen</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>In Bearbeitung</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Warnung</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Unbekannt</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>keine Dateisysteme</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktiv</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Standby</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n. v.</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktiver Daemon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>Quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Der NFS Ganesha-Dienst ist nicht konfiguriert.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS-Benutzer</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS-Dateisystem</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(aus globaler Konfiguration übernommen)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>aus globaler Konfiguration übernommen</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Durchzuführende Benutzer-ID-Squashing-Art auswählen --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Keine Daemons verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS-Export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC-Profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Cache-Modus</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min. Alter für Vertreibung</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min. Alter für Leerung</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max. Bytes für Ziel</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max. Objekte für Ziel</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Keine Anwendungen hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Anwendungslimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Ein Pool kann nur bis zu vier Anwendungsdefinitionen aufweisen.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Zulässige Zeichen \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maximale Länge beträgt 128 Zeichen</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Anwendungen filtern oder hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Anwendung hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Größe des Replikats</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Letzte Änderung</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure-Coding-Profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crush-Regelsatz</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Das Löschen des Pools ist durch die Konfigurationsoption mon_allow_pool_delete deaktiviert.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>Bucket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Buckets</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>Unterbenutzer</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>Benutzer</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift-Schlüssel</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Laufwerks-ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Laufwerksname</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Bereich</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lesen</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Erstelle</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>Rolle</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' erstellt\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' aktualisiert\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systemrolle</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' gelöscht\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Benutzer aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Fortfahren</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Sie wurden automatisch abgemeldet, da Ihre Rollen geändert wurden.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>Passwort</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Benutzerpasswort aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Jedes Objekt wird in Datenblöcke aufgeteilt und jeweils auf einem anderen OSD gespeichert.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Berechnen Sie Codierungsdatenblöcke für jedes Objekt und speichern Sie sie auf unterschiedlichen OSDs.\n      Die Anzahl der Codierungsdatenblöcke entspricht auch der Anzahl der OSDs, die ausfallen können, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Das jerasure-Modul ist das allgemeinste und flexibelste Modul\n          und fungiert auch als der Standard für Ceph-Pools mit Löschcodierung.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Die flexiblere Technik ist \'reed_sol_van :\', wobei es ausreicht, k\n          und m festzulegen. Die Technik \'cauchy_good\' kann schneller sein. Sie müssen jedoch die Paketgröße sorgfältig\n          auswählen. Sämtliche \'reed_sol_r6_op\'-, \'liberation\'-, \'blaum_roth\'- und \'liber8tion\'-Vorgänge sind dahingehend RAID6-Entsprechungen,\n          dass sie nur mit \'m=2\' konfiguriert werden können.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Die Codierung wird jeweils für Pakete auf Bytes-Größe vorgenommen.\n          Die Auswahl der richtigen Paketgröße ist schwierig.\n          In der Jerasure-Dokumentation sind ausführliche Informationen zu diesem Thema enthalten.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Bei Verwendung des Jerasure-Moduls, wenn ein Objekt mit Löschcodierung auf mehreren OSDs gespeichert ist,\n          müssen alle anderen OSDs gelesen werden, um die verloren gegangenen Daten eines OSDs wiederherzustellen.\n          Wenn jerasure beispielsweise mit \'k=8\' und \'m=4\' konfiguriert ist,\n          müssen bei Verlust eines OSDs zum Reparieren die elf anderen gelesen werden.\n\n          Das lrc-Löschcode-Modul erstellt lokale Paritätsdatenblöcke, um die Wiederherstellung mit weniger OSDs auszuführen.\n          Wenn lrc beispielsweise mit \'k=8\', \'m=4\' und \'l=4\' konfiguriert ist, wird ein zusätzlicher Paritätsdatenblock für jeweils vier OSDs erstellt.\n          Geht ein einzelnes OSD verloren, kann es mit nur vier OSDs anstelle\n          von elf wiederhergestellt werden.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Gruppieren Sie die Codierungs- und Datenblöcke in Sätze entsprechend dem Speicherort.\n          Beispielsweise werden für \'k=4\' und \'m=2\', wenn der Speicherort \'3\' entspricht, zwei Dreiergruppen erstellt.\n          Jeder Satz kann wiederhergestellt werden, ohne dass Datenblöcke aus einem anderen Satz gelesen werden.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Der Typ des Crush-Buckets, in dem jeder durch l definierte Satz von Datenblöcken gespeichert wird.\n          Wenn er beispielsweise auf \'rack\' festgelegt ist, wird jede Gruppe an l-Datenblöcken in einem anderen Rack platziert.\n          Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise für einen Schritt zum Auswählen des Racks.\n          Wenn er nicht festgelegt ist, wird keine solche Gruppierung vorgenommen.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Das isa-Modul kapselt die ISA-Bibliothek und wird nur auf Intel-Prozessoren ausgeführt.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Das ISA-Modul wird in zwei Reed Solomon-Formularen bereitgestellt.\n          Wenn \'reed_sol_van\' festgelegt ist, entspricht dies Vandermonde. Ist \'cauchy\' festgelegt, entspricht dies \'Cauchy\'.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Das shec-Modul kapselt die SHEC-Mehrfachbibliothek.\n          Dadurch kann ceph Daten effizienter wiederherstellen als Reed Solomon-Codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Die Anzahl der Paritätsdatenblöcke, von denen jeder jeden Datenblock in seinem Berechnungsbereich enthält.\n          Die Anzahl wird als eine Dauerhaftigkeitsschätzung verwendet. Wenn beispielsweise \'c=2\' vorliegt,\n          können 2 OSDs ausfallen, ohne dass Daten verloren gehen.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Der Name des für den ersten Schritt der CRUSH-Regel verwendeten Crush-Buckets.\n      Beispielsweise \'step take default\'.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Stellen Sie sicher, dass sich keine zwei Datenblöcke in einem Bucket mit derselben Ausfalldomäne befinden.\n      Wenn die Ausfalldomäne beispielsweise als Host fungiert, werden keine zwei Datenblöcke auf demselben Host gespeichert.\n      Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise \'step chooseleaf host\'.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Schränken Sie mithilfe der Klassennamen für Crush-Geräte in der CRUSH-Zuordnung die Platzierung\n      auf Geräte einer bestimmten Klasse (z. B. SSD oder HDD) ein.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Legen Sie den Verzeichnisnamen fest, über den das Löschcode-Modul geladen wird.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Lässt alle Vorgänge zu</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Lässt nur Vorgänge zu, die den Server nicht ändern</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Lässt weder Lese- noch Schreibvorgänge zu, jedoch alle anderen Vorgänge</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Lässt Lese-/Schreibvorgänge und andere Vorgänge nicht zu, die Dateiattribute oder Verzeichnisinhalte ändern</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Lässt überhaupt keinen Zugriff zu</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Priorität auswählen --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niedrig</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Hoch</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informationen</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Letzte 5 Minuten</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Letzte 15 Minuten</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Letzte 30 Minuten</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Letzte Stunde (Standard)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Letzte 3 Stunden</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Letzte 6 Stunden</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Letzte 12 Stunden</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Letzte 24 Stunden</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Gestern</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Heute</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Heute bisher</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Vorgestern</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Letzte 2 Tage</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Dieser Tag letzte Woche</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Vorwoche</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Diese Woche</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Diese Woche bisher</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Letzte 7 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Vormonat</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Dieser Monat</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Dieser Monat bisher</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Letzte 30 Tage</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Letzte 90 Tage</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Letzte 6 Monate</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Letztes Jahr</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Vorjahr</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Dieses Jahr</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Dieses Jahr bisher</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Letzte 2 Jahre</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Letzte 5 Jahre</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Keine Elemente ausgewählt.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Elementauswahl zum erneuten Auswählen aufheben</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Auswahllimit erreicht</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tags filtern</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Badge hinzufügen</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Keine Elemente verfügbar.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Entfernen</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonen</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopieren</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Umfassender Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Vernichten</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Als ausgefallen markieren</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Mit Befehl \'In\' markieren</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Als verloren markieren</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Mit Befehl \'Out\' markieren</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Schützen</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Umbenennen</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>In Papierkorb verschieben</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Schutz aufheben</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Ändern</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Gelöscht</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Hinzugefügt</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Entfernt</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Bearbeitet</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Abgebrochen</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Geklont</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Kopiert</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Geschützt</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Bereinigt</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Umbenannt</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback wurde ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>In den Papierkorb verschoben</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Schutz aufgehoben</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Abgelaufen</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ja</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nein</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Erforderliche Regeln für Passwörter:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>keine aktiven Warnungen</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 aktive Warnung</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktive Warnungen\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> mit \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Quality of Service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Das gewünschte Limit der E/A-Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS-Limit</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Das gewünschte Limit der E/A-Vorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>BPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Das gewünschte Limit der gelesenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>IOPS-Limit für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Das gewünschte Limit für Lesevorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>BPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Das gewünschte Limit der geschriebenen Bytes pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>IOPS-Limit für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Das gewünschte Limit für Schreibvorgänge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS-Block</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Das gewünschte Blocklimit der E/A-Bytes.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS-Block</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Das gewünschte Blocklimit der E/A-Vorgänge.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>BPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Das gewünschte Blocklimit der gelesenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>IOPS-Block für Lesevorgänge</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Das gewünschte Blocklimit der Lesevorgänge.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>BPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Das gewünschte Blocklimit der geschriebenen Bytes.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>IOPS-Block für Schreibvorgänge</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Das gewünschte Blocklimit der Schreibvorgänge.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ausführen</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Unbekannte Aufgabe</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Wird erstellt</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>erstellen</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Wird aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualisieren</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Wird gelöscht</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD-Snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Spiegelungsmodus für Pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>Alle Dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> enthält Snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Wird geklont</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonen</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot von \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> muss geschützt sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Wird kopiert</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>kopieren</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Wird vereinfacht</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>vereinfachen</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name wird bereits von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Der Schutz von \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann aufgrund untergeordneter Images nicht aufgehoben werden.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> kann nicht gelöscht werden, da es geschützt ist.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback wird ausgeführt</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Rollback</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Wird verschoben</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>verschieben</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Verschoben</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in Papierkorb verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Image konnte nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Wird wiederhergestellt</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\' verschieben\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image-Name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' wird bereits verwendet.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Wird bereinigt</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>bereinigen</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>alle Pools</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>Images von \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Spiegelung kann nicht deaktiviert werden, da sie einen Peer enthält.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>Pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>Erasure-Coding-Profil \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>Ziel \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},EmSq:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("8Y7J"),r=n("LvDl");n("Fgil"),n("aXbf");class i{constructor(t,e,n,r){this.elementRef=t,this.control=e,this.dimlessBinaryPipe=n,this.formatter=r,this.ngModelChange=new a.EventEmitter,this.el=this.elementRef.nativeElement}ngOnInit(){this.setValue(this.el.value)}setValue(t){/^[\d.]+$/.test(t)&&(t+=this.defaultUnit||"m");const e=this.formatter.toBytes(t),n=this.round(e);this.el.value=this.dimlessBinaryPipe.transform(n),null!==e?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))}round(t){if(null!==t&&0!==t){if(!r.isUndefined(this.minBytes)&&t<this.minBytes)return this.minBytes;if(!r.isUndefined(this.maxBytes)&&t>this.maxBytes)return this.maxBytes;if(!r.isUndefined(this.roundPower)){const e=Math.round(Math.log(t)/Math.log(this.roundPower));return Math.pow(this.roundPower,e)}}return t}onBlur(t){this.setValue(t)}}},EpBk:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},ExA7:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},"F+uO":function(t,e,n){var a={"./messages.cs.xlf":"ViD7","./messages.de-DE.xlf":"EiPl","./messages.es-ES.xlf":"yt+r","./messages.fr-FR.xlf":"V5SL","./messages.id-ID.xlf":"jqst","./messages.it-IT.xlf":"8j5A","./messages.ja-JP.xlf":"bN42","./messages.ko-KR.xlf":"3+CB","./messages.pl-PL.xlf":"SPu7","./messages.pt-BR.xlf":"+Wg/","./messages.zh-CN.xlf":"AiMb","./messages.zh-TW.xlf":"HjS5"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="F+uO"},F8JR:function(t,e,n){"use strict";var a=n("tycR").forEach,r=n("pkCn"),i=n("rkAj"),s=r("forEach"),o=i("forEach");t.exports=s&&o?[].forEach:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}},FE24:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return h})),n.d(e,"d",(function(){return g})),n.d(e,"e",(function(){return b})),n.d(e,"f",(function(){return d})),n.d(e,"g",(function(){return p}));var a=n("8Y7J"),r=n("pLZG"),i=n("z/SZ"),s=n("hpHm"),o=n("GS7A"),u=n("2uy1");class l{constructor(){this.autoClose=!0,this.insideClick=!1,this.isAnimated=!1}}class d{constructor(){this.direction="down",this.isOpenChange=new a.EventEmitter,this.isDisabledChange=new a.EventEmitter,this.toggleClick=new a.EventEmitter,this.dropdownMenu=new Promise(t=>{this.resolveDropdownMenu=t})}}const c=[Object(o.h)({height:0,overflow:"hidden"}),Object(o.e)("220ms cubic-bezier(0, 0, 0.2, 1)",Object(o.h)({height:"*",overflow:"hidden"}))];class f{constructor(t,e,n,a,r){this._state=t,this.cd=e,this._renderer=n,this._element=a,this.isOpen=!1,this._factoryDropDownAnimation=r.build(c),this._subscription=t.isOpenChange.subscribe(t=>{this.isOpen=t;const e=this._element.nativeElement.querySelector(".dropdown-menu");this._renderer.addClass(this._element.nativeElement.querySelector("div"),"open"),e&&!Object(s.d)()&&(this._renderer.addClass(e,"show"),e.classList.contains("dropdown-menu-right")&&(this._renderer.setStyle(e,"left","auto"),this._renderer.setStyle(e,"right","0")),"up"===this.direction&&(this._renderer.setStyle(e,"top","auto"),this._renderer.setStyle(e,"transform","translateY(-101%)"))),e&&this._state.isAnimated&&this._factoryDropDownAnimation.create(e).play(),this.cd.markForCheck(),this.cd.detectChanges()})}get direction(){return this._state.direction}_contains(t){return this._element.nativeElement.contains(t)}ngOnDestroy(){this._subscription.unsubscribe()}}class h{constructor(t,e,n,a,r,i,s){this._elementRef=t,this._renderer=e,this._viewContainerRef=n,this._cis=a,this._state=r,this._config=i,this._isInlineOpen=!1,this._subscriptions=[],this._isInited=!1,this._state.autoClose=this._config.autoClose,this._state.insideClick=this._config.insideClick,this._state.isAnimated=this._config.isAnimated,this._factoryDropDownAnimation=s.build(c),this._dropdown=this._cis.createLoader(this._elementRef,this._viewContainerRef,this._renderer).provide({provide:d,useValue:this._state}),this.onShown=this._dropdown.onShown,this.onHidden=this._dropdown.onHidden,this.isOpenChange=this._state.isOpenChange}set autoClose(t){this._state.autoClose=t}get autoClose(){return this._state.autoClose}set isAnimated(t){this._state.isAnimated=t}get isAnimated(){return this._state.isAnimated}set insideClick(t){this._state.insideClick=t}get insideClick(){return this._state.insideClick}set isDisabled(t){this._isDisabled=t,this._state.isDisabledChange.emit(t),t&&this.hide()}get isDisabled(){return this._isDisabled}get isOpen(){return this._showInline?this._isInlineOpen:this._dropdown.isShown}set isOpen(t){t?this.show():this.hide()}get isBs4(){return!Object(s.d)()}get _showInline(){return!this.container}ngOnInit(){this._isInited||(this._isInited=!0,this._dropdown.listen({outsideClick:!1,triggers:this.triggers,show:()=>this.show()}),this._subscriptions.push(this._state.toggleClick.subscribe(t=>this.toggle(t))),this._subscriptions.push(this._state.isDisabledChange.pipe(Object(r.a)(t=>t)).subscribe(t=>this.hide())))}show(){if(!this.isOpen&&!this.isDisabled)return this._showInline?(this._inlinedMenu||this._state.dropdownMenu.then(t=>{this._dropdown.attachInline(t.viewContainer,t.templateRef),this._inlinedMenu=this._dropdown._inlineViewRef,this.addBs4Polyfills(),this._renderer.addClass(this._inlinedMenu.rootNodes[0].parentNode,"open"),this.playAnimation()}).catch(),this.addBs4Polyfills(),this._isInlineOpen=!0,this.onShown.emit(!0),this._state.isOpenChange.emit(!0),void this.playAnimation()):void this._state.dropdownMenu.then(t=>{const e=this.dropup||void 0!==this.dropup&&this.dropup;this._state.direction=e?"up":"down";const n=this.placement||(e?"top start":"bottom start");this._dropdown.attach(f).to(this.container).position({attachment:n}).show({content:t.templateRef,placement:n}),this._state.isOpenChange.emit(!0)}).catch()}hide(){this.isOpen&&(this._showInline?(this.removeShowClass(),this.removeDropupStyles(),this._isInlineOpen=!1,this.onHidden.emit(!0)):this._dropdown.hide(),this._state.isOpenChange.emit(!1))}toggle(t){return this.isOpen||!t?this.hide():this.show()}_contains(t){return this._elementRef.nativeElement.contains(t.target)||this._dropdown.instance&&this._dropdown.instance._contains(t.target)}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._dropdown.dispose()}addBs4Polyfills(){Object(s.d)()||(this.addShowClass(),this.checkRightAlignment(),this.addDropupStyles())}playAnimation(){this._state.isAnimated&&this._inlinedMenu&&this._factoryDropDownAnimation.create(this._inlinedMenu.rootNodes[0]).play()}addShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.addClass(this._inlinedMenu.rootNodes[0],"show")}removeShowClass(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.removeClass(this._inlinedMenu.rootNodes[0],"show")}checkRightAlignment(){if(this._inlinedMenu&&this._inlinedMenu.rootNodes[0]){const t=this._inlinedMenu.rootNodes[0].classList.contains("dropdown-menu-right");this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"left",t?"auto":"0"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"right",t?"0":"auto")}}addDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"top",this.dropup?"auto":"100%"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"transform",this.dropup?"translateY(-101%)":"translateY(0)"),this._renderer.setStyle(this._inlinedMenu.rootNodes[0],"bottom","auto"))}removeDropupStyles(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&(this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"top"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"transform"),this._renderer.removeStyle(this._inlinedMenu.rootNodes[0],"bottom"))}}class g{constructor(t,e,n){t.resolveDropdownMenu({templateRef:n,viewContainer:e})}}class p{constructor(t,e,n,a,r){this._changeDetectorRef=t,this._dropdown=e,this._element=n,this._renderer=a,this._state=r,this.isDisabled=null,this._subscriptions=[],this._subscriptions.push(this._state.isOpenChange.subscribe(t=>{this.isOpen=t,t?(this._documentClickListener=this._renderer.listen("document","click",t=>{!this._state.autoClose||2===t.button||this._element.nativeElement.contains(t.target)||this._state.insideClick&&this._dropdown._contains(t)||(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())}),this._escKeyUpListener=this._renderer.listen(this._element.nativeElement,"keyup.esc",()=>{this._state.autoClose&&(this._state.toggleClick.emit(!1),this._changeDetectorRef.detectChanges())})):(this._documentClickListener(),this._escKeyUpListener())})),this._subscriptions.push(this._state.isDisabledChange.subscribe(t=>this.isDisabled=t||null))}onClick(){this.isDisabled||this._state.toggleClick.emit(!0)}ngOnDestroy(){this._documentClickListener&&this._documentClickListener(),this._escKeyUpListener&&this._escKeyUpListener();for(const t of this._subscriptions)t.unsubscribe()}}class b{static forRoot(t){return{ngModule:b,providers:[i.a,u.a,d,{provide:l,useValue:t||{autoClose:!0,insideClick:!1}}]}}}},FFMq:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return t.join(", ")}}},FMNM:function(t,e,n){var a=n("xrYK"),r=n("kmMV");t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==a(t))throw TypeError("RegExp#exec called on incompatible receiver");return r.call(t,e)}},FSuO:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("LvDl"),i=n("x38r");n("a0VL"),n("uIqm");class s{constructor(t){this.datePipe=t,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.hideKeys=[],this.columns=[],this.fetchData=new a.EventEmitter}ngOnInit(){this.columns=[{prop:"key",flexGrow:1,cellTransformation:i.a.bold},{prop:"value",flexGrow:3}],this.customCss&&(this.columns[1].cellTransformation=i.a.classAdding),this.fetchData.observers.length>0&&this.table.fetchData.subscribe(()=>{this.fetchData.emit()}),this.useData()}ngOnChanges(){this.useData()}useData(){if(!this.data)return;let t=this.makePairs(this.data);this.hideKeys&&(t=t.filter(t=>!this.hideKeys.includes(t.key))),this.tableData=t}makePairs(t){let e=[];if(t){if(r.isArray(t))e=this.makePairsFromArray(t);else{if(!r.isObject(t))throw new Error("Wrong data format");e=this.makePairsFromObject(t)}return e=e.map(t=>(t.value=this.convertValue(t.value),t)).filter(t=>null!==t.value),r.sortBy(this.renderObjects?this.insertFlattenObjects(e):e,"key")}}makePairsFromArray(t){let e=[];const n=t[0];if(r.isArray(n)){if(2!==n.length)throw new Error(`Array contains too many elements (${n.length}). `+"Needs to be of type [string, any][]");e=t.map(t=>({key:t[0],value:t[1]}))}else r.isObject(n)&&(e=r.has(n,"key")&&r.has(n,"value")?[...t]:t.reduce((t,e)=>t.concat(this.makePairsFromObject(e)),e));return e}makePairsFromObject(t){return Object.keys(t).map(e=>({key:e,value:t[e]}))}insertFlattenObjects(t){return r.flattenDeep(t.map(t=>{const e=t.value,n=r.isObject(e);return!n||r.isEmpty(e)?(n&&(t.value=""),t):this.splitItemIntoItems(t)}))}splitItemIntoItems(t){return this.makePairs(t.value).map(e=>(this.appendParentKey&&(e.key=t.key+" "+e.key),e))}convertValue(t){if(r.isArray(t)){if(r.isEmpty(t)&&this.hideEmpty)return null;t=t.map(t=>r.isObject(t)?JSON.stringify(t):t).join(", ")}else if(r.isObject(t)){if(this.hideEmpty&&r.isEmpty(t)||!this.renderObjects)return null}else if(r.isString(t)){if(""===t&&this.hideEmpty)return null;this.isDate(t)&&(t=this.datePipe.transform(t)||t)}return t}isDate(t){const e="\\d{2}[ -:.TZ]";return t.match(new RegExp("^\\d{4}[ -:.TZ]"+e+e+e+e+e+"\\d*Z?$"))}}},FZoo:function(t,e,n){var a=n("MrPd"),r=n("4uTw"),i=n("wJg7"),s=n("GoyQ"),o=n("9Nap");t.exports=function(t,e,n,u){if(!s(t))return t;for(var l=-1,d=(e=r(e,t)).length,c=d-1,f=t;null!=f&&++l<d;){var h=o(e[l]),g=n;if(l!=c){var p=f[h];void 0===(g=u?u(p,h,f):void 0)&&(g=s(p)?p:i(e[l+1])?[]:{})}a(f,h,g),f=f[h]}return t}},FZtP:function(t,e,n){var a=n("2oRo"),r=n("/byt"),i=n("F8JR"),s=n("kRJp");for(var o in r){var u=a[o],l=u&&u.prototype;if(l&&l.forEach!==i)try{s(l,"forEach",i)}catch(d){l.forEach=i}}},FfPP:function(t,e,n){var a=n("idmN"),r=n("hgQt");t.exports=function(t,e){return a(t,e,(function(e,n){return r(t,n)}))}},Fgil:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])}}},Fwy9:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("gk6K"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(t,e,n,r){this.el=t,this.renderer=e,this.treeDraggedElement=n,this.ngZone=r,this.allowDragoverStyling=!0,this.onDropCallback=new a.EventEmitter,this.onDragOverCallback=new a.EventEmitter,this.onDragLeaveCallback=new a.EventEmitter,this.onDragEnterCallback=new a.EventEmitter,this._allowDrop=function(t,e){return!0},this.dragOverEventHandler=this.onDragOver.bind(this),this.dragEnterEventHandler=this.onDragEnter.bind(this),this.dragLeaveEventHandler=this.onDragLeave.bind(this)}return Object.defineProperty(t.prototype,"treeAllowDrop",{set:function(t){this._allowDrop=t instanceof Function?t:function(e,n){return t}},enumerable:!0,configurable:!0}),t.prototype.allowDrop=function(t){return this._allowDrop(this.treeDraggedElement.get(),t)},t.prototype.ngAfterViewInit=function(){var t=this,e=this.el.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("dragover",t.dragOverEventHandler),e.addEventListener("dragenter",t.dragEnterEventHandler),e.addEventListener("dragleave",t.dragLeaveEventHandler)}))},t.prototype.ngOnDestroy=function(){var t=this.el.nativeElement;t.removeEventListener("dragover",this.dragOverEventHandler),t.removeEventListener("dragenter",this.dragEnterEventHandler),t.removeEventListener("dragleave",this.dragLeaveEventHandler)},t.prototype.onDragOver=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.addDisabledClass():void 0;this.onDragOverCallback.emit({event:t,element:this.treeDraggedElement.get()}),t.preventDefault(),this.allowDragoverStyling&&this.addClass()},t.prototype.onDragEnter=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDragEnterCallback.emit({event:t,element:this.treeDraggedElement.get()}))},t.prototype.onDragLeave=function(t){if(!this.allowDrop(t))return this.allowDragoverStyling?this.removeDisabledClass():void 0;this.onDragLeaveCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass()},t.prototype.onDrop=function(t){this.allowDrop(t)&&(t.preventDefault(),this.onDropCallback.emit({event:t,element:this.treeDraggedElement.get()}),this.allowDragoverStyling&&this.removeClass(),this.treeDraggedElement.set(null))},t.prototype.addClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over")},t.prototype.removeClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over")},t.prototype.addDisabledClass=function(){this.renderer.addClass(this.el.nativeElement,"is-dragging-over-disabled")},t.prototype.removeDisabledClass=function(){this.renderer.removeClass(this.el.nativeElement,"is-dragging-over-disabled")},i([Object(a.Input)(),s("design:type",Object)],t.prototype,"allowDragoverStyling",void 0),i([Object(a.Output)("treeDrop"),s("design:type",Object)],t.prototype,"onDropCallback",void 0),i([Object(a.Output)("treeDropDragOver"),s("design:type",Object)],t.prototype,"onDragOverCallback",void 0),i([Object(a.Output)("treeDropDragLeave"),s("design:type",Object)],t.prototype,"onDragLeaveCallback",void 0),i([Object(a.Output)("treeDropDragEnter"),s("design:type",Object)],t.prototype,"onDragEnterCallback",void 0),i([Object(a.Input)(),s("design:type",Object),s("design:paramtypes",[Object])],t.prototype,"treeAllowDrop",null),i([Object(a.HostListener)("drop",["$event"]),s("design:type",Function),s("design:paramtypes",[Object]),s("design:returntype",void 0)],t.prototype,"onDrop",null),i([Object(a.Directive)({selector:"[treeDrop]"}),s("design:paramtypes",[a.ElementRef,a.Renderer2,r.a,a.NgZone])],t)}()},"G+Rx":function(t,e,n){var a=n("0GbY");t.exports=a("document","documentElement")},G0Uy:function(t,e,n){!function(t){"use strict";t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},"G1/K":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t){return""===t?this.i18n("n/a"):t}}},G1I9:function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return s}));var a=n("oxzT"),r=n("mtw6");class i{constructor(t=r.a.info,e,n,a,i="Ceph"){this.type=t,this.title=e,this.message=n,this.options=a,this.application=i,this.isFinishedTask=!1,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}class s extends i{constructor(t=new i){super(t.type,t.title,t.message,t.options,t.application),this.config=t,this.textClasses=["text-danger","text-info","text-success"],this.iconClasses=[a.a.warning,a.a.info,a.a.check],delete this.config,this.timestamp=(new Date).toJSON(),this.iconClass=this.iconClasses[this.type],this.textClass=this.textClasses[this.type],this.isFinishedTask=t.isFinishedTask}}},"G6Q+":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},G6z8:function(t,e,n){var a=n("fR/l"),r=n("oCl/"),i=n("mTTR");t.exports=function(t){return a(t,i,r)}},GDhZ:function(t,e,n){var a=n("wF/u"),r=n("mwIZ"),i=n("hgQt"),s=n("9ggG"),o=n("CMye"),u=n("IOzZ"),l=n("9Nap");t.exports=function(t,e){return s(t)&&o(e)?u(l(t),e):function(n){var s=r(n,t);return void 0===s&&s===e?i(n,t):a(e,s,3)}}},GNiM:function(t,e,n){var a=n("I01J"),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,s=a((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(r,(function(t,n,a,r){e.push(a?r.replace(i,"$1"):n||t)})),e}));t.exports=s},GS7A:function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"c",(function(){return r})),n.d(e,"a",(function(){return i})),n.d(e,"e",(function(){return o})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return d})),n.d(e,"h",(function(){return l})),n.d(e,"i",(function(){return c})),n.d(e,"j",(function(){return s})),n.d(e,"d",(function(){return h})),n.d(e,"k",(function(){return g})),n.d(e,"l",(function(){return p}));class a{}class r{}const i="*";function s(t,e){return{type:7,name:t,definitions:e,options:{}}}function o(t,e=null){return{type:4,styles:e,timings:t}}function u(t,e=null){return{type:2,steps:t,options:e}}function l(t){return{type:6,styles:t,offset:null}}function d(t,e,n){return{type:0,name:t,styles:e,options:n}}function c(t,e,n=null){return{type:1,expr:t,animation:e,options:n}}function f(t){Promise.resolve(null).then(t)}class h{constructor(t=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this.parentPlayer=null,this.totalTime=t+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){f(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){}setPosition(t){}getPosition(){return 0}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class g{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let e=0,n=0,a=0;const r=this.players.length;0==r?f(()=>this._onFinish()):this.players.forEach(t=>{t.onDone(()=>{++e==r&&this._onFinish()}),t.onDestroy(()=>{++n==r&&this._onDestroy()}),t.onStart(()=>{++a==r&&this._onStart()})}),this.totalTime=this.players.reduce((t,e)=>Math.max(t,e.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){const e=t*this.totalTime;this.players.forEach(t=>{const n=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(n)})}getPosition(){let t=0;return this.players.forEach(e=>{const n=e.getPosition();t=Math.min(n,t)}),t}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}const p="!"},GarU:function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},GgAd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){this.isBinary=!0,this.decimals=0}ngOnChanges(){this.usedPercentage=this.total>0?this.used/this.total*100:0,this.freePercentage=100-this.usedPercentage}}},Gi0A:function(t,e,n){var a=n("QqLw"),r=n("ExA7");t.exports=function(t){return r(t)&&"[object Map]"==a(t)}},GiVz:function(t,e,n){"use strict";n.d(e,"a",(function(){return We})),n.d(e,"b",(function(){return Ue}));var a=n("SVse"),r=n("8Y7J");class i{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class s{constructor(t,e,n,a,r){this.switchValue=t,this.type=e,this.cases=n,this.sourceSpan=a,this.switchValueSourceSpan=r}visit(t,e){return t.visitExpansion(this,e)}}class o{constructor(t,e,n,a,r){this.value=t,this.expression=e,this.sourceSpan=n,this.valueSourceSpan=a,this.expSourceSpan=r}visit(t,e){return t.visitExpansionCase(this,e)}}class u{constructor(t,e,n,a){this.name=t,this.value=e,this.sourceSpan=n,this.valueSpan=a}visit(t,e){return t.visitAttribute(this,e)}}class l{constructor(t,e,n,a,r=null,i=null){this.name=t,this.attrs=e,this.children=n,this.sourceSpan=a,this.startSourceSpan=r,this.endSourceSpan=i}visit(t,e){return t.visitElement(this,e)}}class d{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitComment(this,e)}}function c(t,e,n=null){const a=[],r=t.visit?e=>t.visit(e,n)||e.visit(t,n):e=>e.visit(t,n);return e.forEach(t=>{const e=r(t);e&&a.push(e)}),a}class f{constructor(t,e,n,a,r,i){this.nodes=t,this.placeholders=e,this.placeholderToMessage=n,this.meaning=a,this.description=r,this.id=i,this.sources=t.length?[{filePath:t[0].sourceSpan.start.file.url,startLine:t[0].sourceSpan.start.line+1,startCol:t[0].sourceSpan.start.col+1,endLine:t[t.length-1].sourceSpan.end.line+1,endCol:t[0].sourceSpan.start.col+1}]:[]}}class h{constructor(t,e){this.value=t,this.sourceSpan=e}visit(t,e){return t.visitText(this,e)}}class g{constructor(t,e){this.children=t,this.sourceSpan=e}visit(t,e){return t.visitContainer(this,e)}}class p{constructor(t,e,n,a){this.expression=t,this.type=e,this.cases=n,this.sourceSpan=a}visit(t,e){return t.visitIcu(this,e)}}class b{constructor(t,e,n,a,r,i,s){this.tag=t,this.attrs=e,this.startName=n,this.closeName=a,this.children=r,this.isVoid=i,this.sourceSpan=s}visit(t,e){return t.visitTagPlaceholder(this,e)}}class m{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitPlaceholder(this,e)}}class y{constructor(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}visit(t,e){return t.visitIcuPlaceholder(this,e)}}class v{constructor(t,e,n,a){this.file=t,this.offset=e,this.line=n,this.col=a}toString(){return null!=this.offset?`${this.line}:${this.col}`:""}getContext(t,e){const n=this.file.content;let a=this.offset;if(null!=a){a>n.length-1&&(a=n.length-1);let r=a,i=0,s=0;for(;i<t&&a>0&&(a--,i++,"\n"!==n[a]||++s!==e););for(i=0,s=0;i<t&&r<n.length-1&&(r++,i++,"\n"!==n[r]||++s!==e););return{before:n.substring(a,this.offset),after:n.substring(this.offset,r+1)}}return null}}class x{constructor(t,e=""){this.content=t,this.url=e}}class _{constructor(t,e,n=null){this.start=t,this.end=e,this.details=n}toString(){return this.start.file.content.substring(this.start.offset,this.end.offset)}}const T=function(){var t={WARNING:0,ERROR:1};return t[t.WARNING]="WARNING",t[t.ERROR]="ERROR",t}();class O{constructor(t,e,n=T.ERROR){this.span=t,this.msg=e,this.level=n}contextualMessage(){const t=this.span.start.getContext(100,3);return t?` ("${t.before}[${T[this.level]} ->]${t.after}")`:""}toString(){const t=this.span.details?`, ${this.span.details}`:"";return`${this.msg}${this.contextualMessage()}: ${this.span.start}${t}`}}class w extends O{constructor(t,e){super(t,e)}}function S(t){return t.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}class I{constructor(t,e){this.start=t,this.end=e}}const N=new I("{{","}}");function C(t){return t>=9&&t<=32||160===t}function R(t){return 48<=t&&t<=57}function A(t){return t>=97&&t<=122||t>=65&&t<=90}const k=function(){var t={RAW_TEXT:0,ESCAPABLE_RAW_TEXT:1,PARSABLE_DATA:2};return t[t.RAW_TEXT]="RAW_TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.PARSABLE_DATA]="PARSABLE_DATA",t}();function E(t){if(":"!==t[0])return[null,t];const e=t.indexOf(":",1);if(-1===e)throw new Error(`Unsupported format "${t}" expecting ":namespace:name"`);return[t.slice(1,e),t.slice(e+1)]}function L(t){return null===t?null:E(t)[0]}function D(t,e){return t?`:${t}:${e}`:e}const P={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",alefsym:"ℵ",Alpha:"Α",alpha:"α",amp:"&",and:"∧",ang:"∠",apos:"'",Aring:"Å",aring:"å",asymp:"≈",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",bdquo:"„",Beta:"Β",beta:"β",brvbar:"¦",bull:"•",cap:"∩",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",Chi:"Χ",chi:"χ",circ:"ˆ",clubs:"♣",cong:"≅",copy:"©",crarr:"↵",cup:"∪",curren:"¤",dagger:"†",Dagger:"‡",darr:"↓",dArr:"⇓",deg:"°",Delta:"Δ",delta:"δ",diams:"♦",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",empty:"∅",emsp:" ",ensp:" ",Epsilon:"Ε",epsilon:"ε",equiv:"≡",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",exist:"∃",fnof:"ƒ",forall:"∀",frac12:"½",frac14:"¼",frac34:"¾",frasl:"⁄",Gamma:"Γ",gamma:"γ",ge:"≥",gt:">",harr:"↔",hArr:"⇔",hearts:"♥",hellip:"…",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",image:"ℑ",infin:"∞",int:"∫",Iota:"Ι",iota:"ι",iquest:"¿",isin:"∈",Iuml:"Ï",iuml:"ï",Kappa:"Κ",kappa:"κ",Lambda:"Λ",lambda:"λ",lang:"⟨",laquo:"«",larr:"←",lArr:"⇐",lceil:"⌈",ldquo:"“",le:"≤",lfloor:"⌊",lowast:"∗",loz:"◊",lrm:"‎",lsaquo:"‹",lsquo:"‘",lt:"<",macr:"¯",mdash:"—",micro:"µ",middot:"·",minus:"−",Mu:"Μ",mu:"μ",nabla:"∇",nbsp:" ",ndash:"–",ne:"≠",ni:"∋",not:"¬",notin:"∉",nsub:"⊄",Ntilde:"Ñ",ntilde:"ñ",Nu:"Ν",nu:"ν",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",OElig:"Œ",oelig:"œ",Ograve:"Ò",ograve:"ò",oline:"‾",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",oplus:"⊕",or:"∨",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",otimes:"⊗",Ouml:"Ö",ouml:"ö",para:"¶",permil:"‰",perp:"⊥",Phi:"Φ",phi:"φ",Pi:"Π",pi:"π",piv:"ϖ",plusmn:"±",pound:"£",prime:"′",Prime:"″",prod:"∏",prop:"∝",Psi:"Ψ",psi:"ψ",quot:'"',radic:"√",rang:"⟩",raquo:"»",rarr:"→",rArr:"⇒",rceil:"⌉",rdquo:"”",real:"ℜ",reg:"®",rfloor:"⌋",Rho:"Ρ",rho:"ρ",rlm:"‏",rsaquo:"›",rsquo:"’",sbquo:"‚",Scaron:"Š",scaron:"š",sdot:"⋅",sect:"§",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sim:"∼",spades:"♠",sub:"⊂",sube:"⊆",sum:"∑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supe:"⊇",szlig:"ß",Tau:"Τ",tau:"τ",there4:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thinsp:" ",THORN:"Þ",thorn:"þ",tilde:"˜",times:"×",trade:"™",Uacute:"Ú",uacute:"ú",uarr:"↑",uArr:"⇑",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",Uuml:"Ü",uuml:"ü",weierp:"℘",Xi:"Ξ",xi:"ξ",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ",Yuml:"Ÿ",Zeta:"Ζ",zeta:"ζ",zwj:"‍",zwnj:"‌",ngsp:""},M=function(){var t={TAG_OPEN_START:0,TAG_OPEN_END:1,TAG_OPEN_END_VOID:2,TAG_CLOSE:3,TEXT:4,ESCAPABLE_RAW_TEXT:5,RAW_TEXT:6,COMMENT_START:7,COMMENT_END:8,CDATA_START:9,CDATA_END:10,ATTR_NAME:11,ATTR_VALUE:12,DOC_TYPE:13,EXPANSION_FORM_START:14,EXPANSION_CASE_VALUE:15,EXPANSION_CASE_EXP_START:16,EXPANSION_CASE_EXP_END:17,EXPANSION_FORM_END:18,EOF:19};return t[t.TAG_OPEN_START]="TAG_OPEN_START",t[t.TAG_OPEN_END]="TAG_OPEN_END",t[t.TAG_OPEN_END_VOID]="TAG_OPEN_END_VOID",t[t.TAG_CLOSE]="TAG_CLOSE",t[t.TEXT]="TEXT",t[t.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",t[t.RAW_TEXT]="RAW_TEXT",t[t.COMMENT_START]="COMMENT_START",t[t.COMMENT_END]="COMMENT_END",t[t.CDATA_START]="CDATA_START",t[t.CDATA_END]="CDATA_END",t[t.ATTR_NAME]="ATTR_NAME",t[t.ATTR_VALUE]="ATTR_VALUE",t[t.DOC_TYPE]="DOC_TYPE",t[t.EXPANSION_FORM_START]="EXPANSION_FORM_START",t[t.EXPANSION_CASE_VALUE]="EXPANSION_CASE_VALUE",t[t.EXPANSION_CASE_EXP_START]="EXPANSION_CASE_EXP_START",t[t.EXPANSION_CASE_EXP_END]="EXPANSION_CASE_EXP_END",t[t.EXPANSION_FORM_END]="EXPANSION_FORM_END",t[t.EOF]="EOF",t}();class q{constructor(t,e,n){this.type=t,this.parts=e,this.sourceSpan=n}}class j extends O{constructor(t,e,n){super(n,t),this.tokenType=e}}class F{constructor(t,e){this.tokens=t,this.errors=e}}const G=/\r\n?/g;function V(t){return`Unexpected character "${0===t?"EOF":String.fromCharCode(t)}"`}function z(t){return`Unknown entity "${t}" - use the "&#<decimal>;" or  "&#x<hex>;" syntax`}class B{constructor(t){this.error=t}}class Y{constructor(t,e,n,a=N){this._file=t,this._getTagDefinition=e,this._tokenizeIcu=n,this._interpolationConfig=a,this._peek=-1,this._nextPeek=-1,this._index=-1,this._line=0,this._column=-1,this._expansionCaseStack=[],this._inInterpolation=!1,this.tokens=[],this.errors=[],this._input=t.content,this._length=t.content.length,this._advance()}_processCarriageReturns(t){return t.replace(G,"\n")}tokenize(){for(;0!==this._peek;){const e=this._getLocation();try{this._attemptCharCode(60)?this._attemptCharCode(33)?this._attemptCharCode(91)?this._consumeCdata(e):this._attemptCharCode(45)?this._consumeComment(e):this._consumeDocType(e):this._attemptCharCode(47)?this._consumeTagClose(e):this._consumeTagOpen(e):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(t){if(!(t instanceof B))throw t;this.errors.push(t.error)}}return this._beginToken(M.EOF),this._endToken([]),new F(function(t){const e=[];let n=void 0;for(let a=0;a<t.length;a++){const r=t[a];n&&n.type===M.TEXT&&r.type===M.TEXT?(n.parts[0]+=r.parts[0],n.sourceSpan.end=r.sourceSpan.end):(n=r,e.push(n))}return e}(this.tokens),this.errors)}_tokenizeExpansionForm(){if($(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if((61===(t=this._peek)||A(t)||R(t))&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;var t;if(125===this._peek){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1}_getLocation(){return new v(this._file,this._index,this._line,this._column)}_getSpan(t=this._getLocation(),e=this._getLocation()){return new _(t,e)}_beginToken(t,e=this._getLocation()){this._currentTokenStart=e,this._currentTokenType=t}_endToken(t,e=this._getLocation()){const n=new q(this._currentTokenType,t,new _(this._currentTokenStart,e));return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n}_createError(t,e){this._isInExpansionForm()&&(t+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');const n=new j(t,this._currentTokenType,e);return this._currentTokenStart=null,this._currentTokenType=null,new B(n)}_advance(){if(this._index>=this._length)throw this._createError(V(0),this._getSpan());10===this._peek?(this._line++,this._column=0):10!==this._peek&&13!==this._peek&&this._column++,this._index++,this._peek=this._index>=this._length?0:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?0:this._input.charCodeAt(this._index+1)}_attemptCharCode(t){return this._peek===t&&(this._advance(),!0)}_attemptCharCodeCaseInsensitive(t){return e=t,Z(this._peek)===Z(e)&&(this._advance(),!0);var e}_requireCharCode(t){const e=this._getLocation();if(!this._attemptCharCode(t))throw this._createError(V(this._peek),this._getSpan(e,e))}_attemptStr(t){const e=t.length;if(this._index+e>this._length)return!1;const n=this._savePosition();for(let a=0;a<e;a++)if(!this._attemptCharCode(t.charCodeAt(a)))return this._restorePosition(n),!1;return!0}_attemptStrCaseInsensitive(t){for(let e=0;e<t.length;e++)if(!this._attemptCharCodeCaseInsensitive(t.charCodeAt(e)))return!1;return!0}_requireStr(t){const e=this._getLocation();if(!this._attemptStr(t))throw this._createError(V(this._peek),this._getSpan(e))}_attemptCharCodeUntilFn(t){for(;!t(this._peek);)this._advance()}_requireCharCodeUntilFn(t,e){const n=this._getLocation();if(this._attemptCharCodeUntilFn(t),this._index-n.offset<e)throw this._createError(V(this._peek),this._getSpan(n,n))}_attemptUntilChar(t){for(;this._peek!==t;)this._advance()}_readChar(t){if(t&&38===this._peek)return this._decodeEntity();{const t=this._index;return this._advance(),this._input[t]}}_decodeEntity(){const t=this._getLocation();if(this._advance(),!this._attemptCharCode(35)){const e=this._savePosition();if(this._attemptCharCodeUntilFn(K),59!==this._peek)return this._restorePosition(e),"&";this._advance();const n=this._input.substring(t.offset+1,this._index-1),a=P[n];if(!a)throw this._createError(z(n),this._getSpan(t));return a}{const n=this._attemptCharCode(120)||this._attemptCharCode(88),a=this._getLocation().offset;if(this._attemptCharCodeUntilFn(W),59!==this._peek)throw this._createError(V(this._peek),this._getSpan());this._advance();const r=this._input.substring(a,this._index-1);try{const t=parseInt(r,n?16:10);return String.fromCharCode(t)}catch(e){const n=this._input.substring(t.offset+1,this._index-1);throw this._createError(z(n),this._getSpan(t))}}}_consumeRawText(t,e,n){let a;const r=this._getLocation();this._beginToken(t?M.ESCAPABLE_RAW_TEXT:M.RAW_TEXT,r);const i=[];for(;a=this._getLocation(),!this._attemptCharCode(e)||!n();)for(this._index>a.offset&&i.push(this._input.substring(a.offset,this._index));this._peek!==e;)i.push(this._readChar(t));return this._endToken([this._processCarriageReturns(i.join(""))],a)}_consumeComment(t){this._beginToken(M.COMMENT_START,t),this._requireCharCode(45),this._endToken([]);const e=this._consumeRawText(!1,45,()=>this._attemptStr("->"));this._beginToken(M.COMMENT_END,e.sourceSpan.end),this._endToken([])}_consumeCdata(t){this._beginToken(M.CDATA_START,t),this._requireStr("CDATA["),this._endToken([]);const e=this._consumeRawText(!1,93,()=>this._attemptStr("]>"));this._beginToken(M.CDATA_END,e.sourceSpan.end),this._endToken([])}_consumeDocType(t){this._beginToken(M.DOC_TYPE,t),this._attemptUntilChar(62),this._advance(),this._endToken([this._input.substring(t.offset+2,this._index-1)])}_consumePrefixAndName(){const t=this._index;let e=null;for(;58!==this._peek&&!(((n=this._peek)<97||122<n)&&(n<65||90<n)&&(n<48||n>57));)this._advance();var n;let a;return 58===this._peek?(this._advance(),e=this._input.substring(t,this._index-1),a=this._index):a=t,this._requireCharCodeUntilFn(U,this._index===a?1:0),[e,this._input.substring(a,this._index)]}_consumeTagOpen(t){const e=this._savePosition();let n,a;try{if(!A(this._peek))throw this._createError(V(this._peek),this._getSpan());const e=this._index;for(this._consumeTagOpenStart(t),n=this._input.substring(e,this._index),a=n.toLowerCase(),this._attemptCharCodeUntilFn(H);47!==this._peek&&62!==this._peek;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(H),this._attemptCharCode(61)&&(this._attemptCharCodeUntilFn(H),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(H);this._consumeTagOpenEnd()}catch(i){if(i instanceof B)return this._restorePosition(e),this._beginToken(M.TEXT,t),void this._endToken(["<"]);throw i}const r=this._getTagDefinition(n).contentType;r===k.RAW_TEXT?this._consumeRawTextWithTagClose(a,!1):r===k.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(a,!0)}_consumeRawTextWithTagClose(t,e){const n=this._consumeRawText(e,60,()=>!!this._attemptCharCode(47)&&(this._attemptCharCodeUntilFn(H),!!this._attemptStrCaseInsensitive(t)&&(this._attemptCharCodeUntilFn(H),this._attemptCharCode(62))));this._beginToken(M.TAG_CLOSE,n.sourceSpan.end),this._endToken([null,t])}_consumeTagOpenStart(t){this._beginToken(M.TAG_OPEN_START,t);const e=this._consumePrefixAndName();this._endToken(e)}_consumeAttributeName(){this._beginToken(M.ATTR_NAME);const t=this._consumePrefixAndName();this._endToken(t)}_consumeAttributeValue(){let t;if(this._beginToken(M.ATTR_VALUE),39===this._peek||34===this._peek){const e=this._peek;this._advance();const n=[];for(;this._peek!==e;)n.push(this._readChar(!0));t=n.join(""),this._advance()}else{const e=this._index;this._requireCharCodeUntilFn(U,1),t=this._input.substring(e,this._index)}this._endToken([this._processCarriageReturns(t)])}_consumeTagOpenEnd(){const t=this._attemptCharCode(47)?M.TAG_OPEN_END_VOID:M.TAG_OPEN_END;this._beginToken(t),this._requireCharCode(62),this._endToken([])}_consumeTagClose(t){this._beginToken(M.TAG_CLOSE,t),this._attemptCharCodeUntilFn(H);const e=this._consumePrefixAndName();this._attemptCharCodeUntilFn(H),this._requireCharCode(62),this._endToken(e)}_consumeExpansionFormStart(){this._beginToken(M.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(123),this._endToken([]),this._expansionCaseStack.push(M.EXPANSION_FORM_START),this._beginToken(M.RAW_TEXT,this._getLocation());const t=this._readUntil(44);this._endToken([t],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H),this._beginToken(M.RAW_TEXT,this._getLocation());const e=this._readUntil(44);this._endToken([e],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(H)}_consumeExpansionCaseStart(){this._beginToken(M.EXPANSION_CASE_VALUE,this._getLocation());const t=this._readUntil(123).trim();this._endToken([t],this._getLocation()),this._attemptCharCodeUntilFn(H),this._beginToken(M.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(123),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.push(M.EXPANSION_CASE_EXP_START)}_consumeExpansionCaseEnd(){this._beginToken(M.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(125),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(H),this._expansionCaseStack.pop()}_consumeExpansionFormEnd(){this._beginToken(M.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(125),this._endToken([]),this._expansionCaseStack.pop()}_consumeText(){const t=this._getLocation();this._beginToken(M.TEXT,t);const e=[];do{this._interpolationConfig&&this._attemptStr(this._interpolationConfig.start)?(e.push(this._interpolationConfig.start),this._inInterpolation=!0):this._interpolationConfig&&this._inInterpolation&&this._attemptStr(this._interpolationConfig.end)?(e.push(this._interpolationConfig.end),this._inInterpolation=!1):e.push(this._readChar(!0))}while(!this._isTextEnd());this._endToken([this._processCarriageReturns(e.join(""))])}_isTextEnd(){if(60===this._peek||0===this._peek)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if($(this._input,this._index,this._interpolationConfig))return!0;if(125===this._peek&&this._isInExpansionCase())return!0}return!1}_savePosition(){return[this._peek,this._index,this._column,this._line,this.tokens.length]}_readUntil(t){const e=this._index;return this._attemptUntilChar(t),this._input.substring(e,this._index)}_restorePosition(t){this._peek=t[0],this._index=t[1],this._column=t[2],this._line=t[3];const e=t[4];e<this.tokens.length&&(this.tokens=this.tokens.slice(0,e))}_isInExpansionCase(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_CASE_EXP_START}_isInExpansionForm(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===M.EXPANSION_FORM_START}}function H(t){return!C(t)||0===t}function U(t){return C(t)||62===t||47===t||39===t||34===t||61===t}function W(t){return 59===t||0===t||!function(t){return t>=97&&t<=102||t>=65&&t<=70||R(t)}(t)}function K(t){return 59===t||0===t||!A(t)}function $(t,e,n){const a=!!n&&t.indexOf(n.start,e)===e;return 123===t.charCodeAt(e)&&!a}function Z(t){return t>=97&&t<=122?t-97+65:t}class J extends O{constructor(t,e,n){super(e,n),this.elementName=t}static create(t,e,n){return new J(t,e,n)}}class Q{constructor(t,e){this.rootNodes=t,this.errors=e}}class X{constructor(t){this.getTagDefinition=t}parse(t,e,n=!1,a=N){const r=function(t,e,n,a=!1,r=N){return new Y(new x(t,e),n,a,r).tokenize()}(t,e,this.getTagDefinition,n,a),i=new tt(r.tokens,this.getTagDefinition).build();return new Q(i.rootNodes,r.errors.concat(i.errors))}}class tt{constructor(t,e){this.tokens=t,this.getTagDefinition=e,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}build(){for(;this._peek.type!==M.EOF;)this._peek.type===M.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===M.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===M.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===M.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===M.TEXT||this._peek.type===M.RAW_TEXT||this._peek.type===M.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===M.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._advance();return new Q(this._rootNodes,this._errors)}_advance(){const t=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],t}_advanceIf(t){return this._peek.type===t?this._advance():null}_consumeCdata(t){this._consumeText(this._advance()),this._advanceIf(M.CDATA_END)}_consumeComment(t){const e=this._advanceIf(M.RAW_TEXT);this._advanceIf(M.COMMENT_END);const n=null!==e?e.parts[0].trim():null;this._addToParent(new d(n,t.sourceSpan))}_consumeExpansion(t){const e=this._advance(),n=this._advance(),a=[];for(;this._peek.type===M.EXPANSION_CASE_VALUE;){const t=this._parseExpansionCase();if(!t)return;a.push(t)}if(this._peek.type!==M.EXPANSION_FORM_END)return void this._errors.push(J.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."));const r=new _(t.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new s(e.parts[0],n.parts[0],a,r,e.sourceSpan)),this._advance()}_parseExpansionCase(){const t=this._advance();if(this._peek.type!==M.EXPANSION_CASE_EXP_START)return this._errors.push(J.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;const e=this._advance(),n=this._collectExpansionExpTokens(e);if(!n)return null;const a=this._advance();n.push(new q(M.EOF,[],a.sourceSpan));const r=new tt(n,this.getTagDefinition).build();if(r.errors.length>0)return this._errors=this._errors.concat(r.errors),null;const i=new _(t.sourceSpan.start,a.sourceSpan.end),s=new _(e.sourceSpan.start,a.sourceSpan.end);return new o(t.parts[0],r.rootNodes,i,t.sourceSpan,s)}_collectExpansionExpTokens(t){const e=[],n=[M.EXPANSION_CASE_EXP_START];for(;;){if(this._peek.type!==M.EXPANSION_FORM_START&&this._peek.type!==M.EXPANSION_CASE_EXP_START||n.push(this._peek.type),this._peek.type===M.EXPANSION_CASE_EXP_END){if(!et(n,M.EXPANSION_CASE_EXP_START))return this._errors.push(J.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(n.pop(),0===n.length)return e}if(this._peek.type===M.EXPANSION_FORM_END){if(!et(n,M.EXPANSION_FORM_START))return this._errors.push(J.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;n.pop()}if(this._peek.type===M.EOF)return this._errors.push(J.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;e.push(this._advance())}}_consumeText(t){let e=t.parts[0];if(e.length>0&&"\n"===e[0]){const t=this._getParentElement();null!==t&&0===t.children.length&&this.getTagDefinition(t.name).ignoreFirstLf&&(e=e.substring(1))}e.length>0&&this._addToParent(new i(e,t.sourceSpan))}_closeVoidElement(){const t=this._getParentElement();t&&this.getTagDefinition(t.name).isVoid&&this._elementStack.pop()}_consumeStartTag(t){const e=t.parts[0],n=t.parts[1],a=[];for(;this._peek.type===M.ATTR_NAME;)a.push(this._consumeAttr(this._advance()));const r=this._getElementFullName(e,n,this._getParentElement());let i=!1;if(this._peek.type===M.TAG_OPEN_END_VOID){this._advance(),i=!0;const e=this.getTagDefinition(r);e.canSelfClose||null!==L(r)||e.isVoid||this._errors.push(J.create(r,t.sourceSpan,`Only void and foreign elements can be self closed "${t.parts[1]}"`))}else this._peek.type===M.TAG_OPEN_END&&(this._advance(),i=!1);const s=new _(t.sourceSpan.start,this._peek.sourceSpan.start),o=new l(r,a,[],s,s,void 0);this._pushElement(o),i&&(this._popElement(r),o.endSourceSpan=s)}_pushElement(t){const e=this._getParentElement();e&&this.getTagDefinition(e.name).isClosedByChild(t.name)&&this._elementStack.pop();const n=this.getTagDefinition(t.name),{parent:a,container:r}=this._getParentElementSkippingContainers();if(a&&n.requireExtraParent(a.name)){const e=new l(n.parentToAdd,[],[],t.sourceSpan,t.startSourceSpan,t.endSourceSpan);this._insertBeforeContainer(a,r,e)}this._addToParent(t),this._elementStack.push(t)}_consumeEndTag(t){const e=this._getElementFullName(t.parts[0],t.parts[1],this._getParentElement());this._getParentElement()&&(this._getParentElement().endSourceSpan=t.sourceSpan),this.getTagDefinition(e).isVoid?this._errors.push(J.create(e,t.sourceSpan,`Void elements do not have end tags "${t.parts[1]}"`)):this._popElement(e)||this._errors.push(J.create(e,t.sourceSpan,`Unexpected closing tag "${e}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`))}_popElement(t){for(let e=this._elementStack.length-1;e>=0;e--){const n=this._elementStack[e];if(n.name===t)return this._elementStack.splice(e,this._elementStack.length-e),!0;if(!this.getTagDefinition(n.name).closedByParent)return!1}return!1}_consumeAttr(t){const e=D(t.parts[0],t.parts[1]);let n=t.sourceSpan.end,a="",r=void 0;if(this._peek.type===M.ATTR_VALUE){const t=this._advance();a=t.parts[0],n=t.sourceSpan.end,r=t.sourceSpan}return new u(e,a,new _(t.sourceSpan.start,n),r)}_getParentElement(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null}_getParentElementSkippingContainers(){let t=null;for(let e=this._elementStack.length-1;e>=0;e--){if("ng-container"!==E(this._elementStack[e].name)[1])return{parent:this._elementStack[e],container:t};t=this._elementStack[e]}return{parent:null,container:t}}_addToParent(t){const e=this._getParentElement();null!==e?e.children.push(t):this._rootNodes.push(t)}_insertBeforeContainer(t,e,n){if(e){if(t){const a=t.children.indexOf(e);t.children[a]=n}else this._rootNodes.push(n);n.children.push(e),this._elementStack.splice(this._elementStack.indexOf(e),0,n)}else this._addToParent(n),this._elementStack.push(n)}_getElementFullName(t,e,n){return null===t&&null===(t=this.getTagDefinition(e).implicitNamespacePrefix)&&null!==n&&(t=L(n.name)),D(t,e)}}function et(t,e){return t.length>0&&t[t.length-1]===e}class nt{constructor(){this.closedByParent=!1,this.contentType=k.PARSABLE_DATA,this.isVoid=!1,this.ignoreFirstLf=!1,this.canSelfClose=!0}requireExtraParent(t){return!1}isClosedByChild(t){return!1}}const at=new nt;function rt(t){return at}class it{constructor({closedByChildren:t,requiredParents:e,implicitNamespacePrefix:n,contentType:a=k.PARSABLE_DATA,closedByParent:r=!1,isVoid:i=!1,ignoreFirstLf:s=!1}={}){this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,t&&t.length>0&&t.forEach(t=>this.closedByChildren[t]=!0),this.isVoid=i,this.closedByParent=r||i,e&&e.length>0&&(this.requiredParents={},this.parentToAdd=e[0],e.forEach(t=>this.requiredParents[t]=!0)),this.implicitNamespacePrefix=n||null,this.contentType=a,this.ignoreFirstLf=s}requireExtraParent(t){if(!this.requiredParents)return!1;if(!t)return!0;const e=t.toLowerCase();return!("template"===e||"ng-template"===t)&&!0!==this.requiredParents[e]}isClosedByChild(t){return this.isVoid||t.toLowerCase()in this.closedByChildren}}const st={base:new it({isVoid:!0}),meta:new it({isVoid:!0}),area:new it({isVoid:!0}),embed:new it({isVoid:!0}),link:new it({isVoid:!0}),img:new it({isVoid:!0}),input:new it({isVoid:!0}),param:new it({isVoid:!0}),hr:new it({isVoid:!0}),br:new it({isVoid:!0}),source:new it({isVoid:!0}),track:new it({isVoid:!0}),wbr:new it({isVoid:!0}),p:new it({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new it({closedByChildren:["tbody","tfoot"]}),tbody:new it({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new it({closedByChildren:["tbody"],closedByParent:!0}),tr:new it({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new it({closedByChildren:["td","th"],closedByParent:!0}),th:new it({closedByChildren:["td","th"],closedByParent:!0}),col:new it({requiredParents:["colgroup"],isVoid:!0}),svg:new it({implicitNamespacePrefix:"svg"}),math:new it({implicitNamespacePrefix:"math"}),li:new it({closedByChildren:["li"],closedByParent:!0}),dt:new it({closedByChildren:["dt","dd"]}),dd:new it({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new it({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new it({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new it({closedByChildren:["optgroup"],closedByParent:!0}),option:new it({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new it({ignoreFirstLf:!0}),listing:new it({ignoreFirstLf:!0}),style:new it({contentType:k.RAW_TEXT}),script:new it({contentType:k.RAW_TEXT}),title:new it({contentType:k.ESCAPABLE_RAW_TEXT}),textarea:new it({contentType:k.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},ot=new it;function ut(t){return st[t.toLowerCase()]||ot}class lt extends class{visitText(t,e){}visitContainer(t,e){t.children.forEach(t=>t.visit(this))}visitIcu(t,e){Object.keys(t.cases).forEach(e=>{t.cases[e].visit(this)})}visitTagPlaceholder(t,e){t.children.forEach(t=>t.visit(this))}visitPlaceholder(t,e){}visitIcuPlaceholder(t,e){}}{constructor(t,e){super(),this.mapName=e,this.internalToPublic={},this.publicToNextId={},this.publicToInternal={},t.nodes.forEach(t=>t.visit(this))}toPublicName(t){return this.internalToPublic.hasOwnProperty(t)?this.internalToPublic[t]:null}toInternalName(t){return this.publicToInternal.hasOwnProperty(t)?this.publicToInternal[t]:null}visitText(t,e){return null}visitTagPlaceholder(t,e){this.visitPlaceholderName(t.startName),super.visitTagPlaceholder(t,e),this.visitPlaceholderName(t.closeName)}visitPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitIcuPlaceholder(t,e){this.visitPlaceholderName(t.name)}visitPlaceholderName(t){if(!t||this.internalToPublic.hasOwnProperty(t))return;let e=this.mapName(t);if(this.publicToInternal.hasOwnProperty(e)){const t=this.publicToNextId[e];this.publicToNextId[e]=t+1,e=`${e}_${t}`}else this.publicToNextId[e]=1;this.internalToPublic[t]=e,this.publicToInternal[e]=t}}const dt=new a.I18nSelectPipe;class ct{constructor(t,e){this.params=e,this.i18nPluralPipe=new a.I18nPluralPipe(new a.NgLocaleLocalization(t))}visitElement(t,e){return ut(t.name).isVoid?`<${t.name}${this.serializeNodes(t.attrs," ")}/>`:`<${t.name}${this.serializeNodes(t.attrs," ")}>${this.serializeNodes(t.children)}</${t.name}>`}visitAttribute(t,e){return`${t.name}="${t.value}"`}visitText(t,e){return t.value}visitComment(t,e){return`\x3c!--${t.value}--\x3e`}visitExpansion(t,e){const n={};switch(t.cases.forEach(t=>n[t.value]=this.serializeNodes(t.expression)),t.type){case"select":return dt.transform(this.params[t.switchValue]||"",n);case"plural":return this.i18nPluralPipe.transform(this.params[t.switchValue],n)}throw new Error(`Unknown expansion type "${t.type}"`)}visitExpansionCase(t,e){return` ${t.value} {${this.serializeNodes(t.expression)}}`}serializeNodes(t,e=""){return 0===t.length?"":e+t.map(t=>t.visit(this,null)).join(e)}}function ft(t){return t.id||function(t){const e=At(t),n=function(t,e){const n=Array(t.length+3>>>2);for(let a=0;a<n.length;a++)n[a]=It(t,4*a,e);return n}(e,xt.Big),a=8*e.length,r=new Array(80);let[i,s,o,u,l]=[1732584193,4023233417,2562383102,271733878,3285377520];n[a>>5]|=128<<24-a%32,n[15+(a+64>>9<<4)]=a;for(let d=0;d<n.length;d+=16){const[t,e,a,c,f]=[i,s,o,u,l];for(let h=0;h<80;h++){r[h]=h<16?n[d+h]:wt(r[h-3]^r[h-8]^r[h-14]^r[h-16],1);const[t,e]=bt(h,s,o,u),a=[wt(i,5),t,l,e,r[h]].reduce(_t);[l,u,o,s,i]=[u,o,wt(s,30),i,a]}[i,s,o,u,l]=[_t(i,t),_t(s,e),_t(o,a),_t(u,c),_t(l,f)]}return function(t){let e="";for(let n=0;n<t.length;n++){const a=St(t,n);e+=(a>>>4).toString(16)+(15&a).toString(16)}return e.toLowerCase()}(Nt([i,s,o,u,l]))}((e=t.nodes,e.map(t=>t.visit(gt,null))).join("")+`[${t.meaning}]`);var e}class ht{visitText(t,e){return t.value}visitContainer(t,e){return`[${t.children.map(t=>t.visit(this)).join(", ")}]`}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.expression}, ${t.type}, ${n.join(", ")}}`}visitTagPlaceholder(t,e){return t.isVoid?`<ph tag name="${t.startName}"/>`:`<ph tag name="${t.startName}">${t.children.map(t=>t.visit(this)).join(", ")}</ph name="${t.closeName}">`}visitPlaceholder(t,e){return t.value?`<ph name="${t.name}">${t.value}</ph>`:`<ph name="${t.name}"/>`}visitIcuPlaceholder(t,e){return`<ph icu name="${t.name}">${t.value.visit(this)}</ph>`}}const gt=new ht;class pt extends ht{visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${t.type}, ${n.join(", ")}}`}}function bt(t,e,n,a){return t<20?[e&n|~e&a,1518500249]:t<40?[e^n^a,1859775393]:t<60?[e&n|e&a|n&a,2400959708]:[e^n^a,3395469782]}function mt(t){const e=At(t);let[n,a]=[yt(e,0),yt(e,102072)];return 0!==n||0!==a&&1!==a||(n^=319790063,a^=-1801410264),[n,a]}function yt(t,e){let n,[a,r]=[2654435769,2654435769];const i=t.length;for(n=0;n+12<=i;n+=12)a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,It(t,n+8,xt.Little)),[a,r,e]=vt([a,r,e]);return a=_t(a,It(t,n,xt.Little)),r=_t(r,It(t,n+4,xt.Little)),e=_t(e,i),vt([a,r,e=_t(e,It(t,n+8,xt.Little)<<8)])[2]}function vt([t,e,n]){return t=Ot(t,e),t=Ot(t,n),t^=n>>>13,e=Ot(e,n),e=Ot(e,t),e^=t<<8,n=Ot(n,t),n=Ot(n,e),n^=e>>>13,t=Ot(t,e),t=Ot(t,n),t^=n>>>12,e=Ot(e,n),e=Ot(e,t),e^=t<<16,n=Ot(n,t),n=Ot(n,e),n^=e>>>5,t=Ot(t,e),t=Ot(t,n),t^=n>>>3,e=Ot(e,n),e=Ot(e,t),e^=t<<10,n=Ot(n,t),n=Ot(n,e),[t,e,n^=e>>>15]}const xt=function(){var t={Little:0,Big:1};return t[t.Little]="Little",t[t.Big]="Big",t}();function _t(t,e){return Tt(t,e)[1]}function Tt(t,e){const n=(65535&t)+(65535&e),a=(t>>>16)+(e>>>16)+(n>>>16);return[a>>>16,a<<16|65535&n]}function Ot(t,e){const n=(65535&t)-(65535&e);return(t>>16)-(e>>16)+(n>>16)<<16|65535&n}function wt(t,e){return t<<e|t>>>32-e}function St(t,e){return e>=t.length?0:255&t.charCodeAt(e)}function It(t,e,n){let a=0;if(n===xt.Big)for(let r=0;r<4;r++)a+=St(t,e+r)<<24-8*r;else for(let r=0;r<4;r++)a+=St(t,e+r)<<8*r;return a}function Nt(t){return t.reduce((t,e)=>t+function(t){let e="";for(let n=0;n<4;n++)e+=String.fromCharCode(t>>>8*(3-n)&255);return e}(e),"")}function Ct(t,e){let n="";const a=Math.max(t.length,e.length);for(let r=0,i=0;r<a||i;r++){const a=i+ +(t[r]||0)+ +(e[r]||0);a>=10?(i=1,n+=a-10):(i=0,n+=a)}return n}function Rt(t,e){let n="",a=e;for(;0!==t;t>>>=1)1&t&&(n=Ct(n,a)),a=Ct(a,a);return n}function At(t){let e="";for(let n=0;n<t.length;n++){let a=t.charCodeAt(n);if(a>=55296&&a<=56319&&t.length>n+1){const e=t.charCodeAt(n+1);e>=56320&&e<=57343&&(n++,a=(a-55296<<10)+e-56320+65536)}a<=127?e+=String.fromCharCode(a):a<=2047?e+=String.fromCharCode(a>>6&31|192,63&a|128):a<=65535?e+=String.fromCharCode(a>>12|224,a>>6&63|128,63&a|128):a<=2097151&&(e+=String.fromCharCode(a>>18&7|240,a>>12&63|128,a>>6&63|128,63&a|128))}return e}function kt(t){const e=new Lt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new Dt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error(`xliff parse errors:\n${a.join("\n")}`);return r}const Et=ft;class Lt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"trans-unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,`Duplicated translations for msg ${n}`):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<trans-unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"file":c(this,t.children,null);break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class Dt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){if("x"===t.name){const e=t.attrs.find(t=>"id"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<x> misses the "id" attribute')}else this._addError(t,"Unexpected tag");return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}function Pt(t){const e=new qt,{msgIdToHtml:n,errors:a}=e.parse(t),r={},i=new jt;if(Object.keys(n).forEach(t=>{const{i18nNodes:e,errors:s}=i.convert(n[t]);a.push(...s),r[t]=e}),a.length)throw new Error(`xliff2 parse errors:\n${a.join("\n")}`);return r}const Mt=function(t){if(t.id)return t.id;const e=new pt;return function(t,e){let[n,a]=mt(t);if(e){const[t,r]=mt(e);[n,a]=function([t,e],[n,a]){const[r,i]=Tt(e,a);return[_t(_t(t,n),r),i]}(function([t,e],n){return[t<<n|e>>>32-n,e<<n|t>>>32-n]}([n,a],1),[t,r])}return function(t){let e="",n="1";for(let a=t.length-1;a>=0;a--)e=Ct(e,Rt(St(t,a),n)),n=Rt(256,n);return e.split("").reverse().join("")}(Nt([2147483647&n,a]))}(t.nodes.map(t=>t.visit(e,null)).join(""),t.meaning)};class qt{parse(t){this._unitMlString=null,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"unit":this._unitMlString=null;const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;this._msgIdToHtml.hasOwnProperty(n)?this._addError(t,`Duplicated translations for msg ${n}`):(c(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[n]=this._unitMlString:this._addError(t,`Message ${n} misses a translation`))}else this._addError(t,'<unit> misses the "id" attribute');break;case"source":break;case"target":const n=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=n;break;case"xliff":const a=t.attrs.find(t=>"version"===t.name);if(a){const e=a.value;"2.0"!==e?this._addError(t,`The XLIFF file version ${e} is not compatible with XLIFF 2.0 serializer`):c(this,t.children,null)}break;default:c(this,t.children,null)}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class jt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:[].concat(...c(this,e.rootNodes)),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitElement(t,e){switch(t.name){case"ph":const e=t.attrs.find(t=>"equiv"===t.name);if(e)return[new m("",e.value,t.sourceSpan)];this._addError(t,'<ph> misses the "equiv" attribute');break;case"pc":const n=t.attrs.find(t=>"equivStart"===t.name),a=t.attrs.find(t=>"equivEnd"===t.name);if(n){if(a){const e=a.value;return[].concat(new m("",n.value,t.sourceSpan),...t.children.map(t=>t.visit(this,null)),new m("",e,t.sourceSpan))}this._addError(t,'<ph> misses the "equivEnd" attribute')}else this._addError(t,'<ph> misses the "equivStart" attribute');break;default:this._addError(t,"Unexpected tag")}return null}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:[].concat(...c(this,t.expression))}}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}function Ft(t){return t.toUpperCase().replace(/[^A-Z0-9_]/g,"_")}function Gt(t){const e=new Bt,{msgIdToHtml:n,errors:a}=e.parse(t);if(a.length)throw new Error(`xtb parse errors:\n${a.join("\n")}`);const r={},i=new Yt;return Object.keys(n).forEach(t=>{var e,a;e=r,a=t,Object.defineProperty(e,a,{configurable:!0,enumerable:!0,get:()=>{const r=(()=>{const{i18nNodes:e,errors:a}=i.convert(n[t]);if(a.length)throw new Error(`xtb parse errors:\n${a.join("\n")}`);return e})();return Object.defineProperty(e,a,{enumerable:!0,value:r}),r},set:t=>{throw new Error("Could not overwrite an XTB translation")}})}),r}const Vt=ft,zt=function(t){return new lt(t,Ft)};class Bt{parse(t){this._bundleDepth=0,this._msgIdToHtml={};const e=new X(rt).parse(t,"",!1);return this._errors=e.errors,c(this,e.rootNodes),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}}visitElement(t,e){switch(t.name){case"translationbundle":this._bundleDepth++,this._bundleDepth>1&&this._addError(t,"<translationbundle> elements can not be nested"),c(this,t.children,null),this._bundleDepth--;break;case"translation":const e=t.attrs.find(t=>"id"===t.name);if(e){const n=e.value;if(this._msgIdToHtml.hasOwnProperty(n))this._addError(t,`Duplicated translations for msg ${n}`);else{const e=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._msgIdToHtml[n]=e}}else this._addError(t,'<translation> misses the "id" attribute');break;default:this._addError(t,"Unexpected tag")}}visitAttribute(t,e){}visitText(t,e){}visitComment(t,e){}visitExpansion(t,e){}visitExpansionCase(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class Yt{convert(t){const e=new X(rt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:c(this,e.rootNodes),errors:this._errors}}visitText(t,e){return new h(t.value,t.sourceSpan)}visitExpansion(t,e){const n={};return c(this,t.cases).forEach(e=>{n[e.value]=new g(e.nodes,t.sourceSpan)}),new p(t.switchValue,t.type,n,t.sourceSpan)}visitExpansionCase(t,e){return{value:t.value,nodes:c(this,t.expression)}}visitElement(t,e){if("ph"===t.name){const e=t.attrs.find(t=>"name"===t.name);if(e)return new m("",e.value,t.sourceSpan);this._addError(t,'<ph> misses the "name" attribute')}else this._addError(t,"Unexpected tag");return null}visitComment(t,e){}visitAttribute(t,e){}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}class Ht{constructor(t,e,n,a){this.input=e,this.errLocation=n,this.ctxLocation=a,this.message=`Parser Error: ${t} ${n} [${e}] in ${a}`}}class Ut{constructor(t,e){this.start=t,this.end=e}}class Wt{constructor(t){this.span=t}visit(t,e=null){return null}toString(){return"AST"}}class Kt extends Wt{constructor(t,e,n,a){super(t),this.prefix=e,this.uninterpretedExpression=n,this.location=a}visit(t,e=null){return t.visitQuote(this,e)}toString(){return"Quote"}}class $t extends Wt{visit(t,e=null){}}class Zt extends Wt{visit(t,e=null){return t.visitImplicitReceiver(this,e)}}class Jt extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitChain(this,e)}}class Qt extends Wt{constructor(t,e,n,a){super(t),this.condition=e,this.trueExp=n,this.falseExp=a}visit(t,e=null){return t.visitConditional(this,e)}}class Xt extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitPropertyRead(this,e)}}class te extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.value=a}visit(t,e=null){return t.visitPropertyWrite(this,e)}}class ee extends Wt{constructor(t,e,n){super(t),this.receiver=e,this.name=n}visit(t,e=null){return t.visitSafePropertyRead(this,e)}}class ne extends Wt{constructor(t,e,n){super(t),this.obj=e,this.key=n}visit(t,e=null){return t.visitKeyedRead(this,e)}}class ae extends Wt{constructor(t,e,n,a){super(t),this.obj=e,this.key=n,this.value=a}visit(t,e=null){return t.visitKeyedWrite(this,e)}}class re extends Wt{constructor(t,e,n,a){super(t),this.exp=e,this.name=n,this.args=a}visit(t,e=null){return t.visitPipe(this,e)}}class ie extends Wt{constructor(t,e){super(t),this.value=e}visit(t,e=null){return t.visitLiteralPrimitive(this,e)}}class se extends Wt{constructor(t,e){super(t),this.expressions=e}visit(t,e=null){return t.visitLiteralArray(this,e)}}class oe extends Wt{constructor(t,e,n){super(t),this.keys=e,this.values=n}visit(t,e=null){return t.visitLiteralMap(this,e)}}class ue extends Wt{constructor(t,e,n){super(t),this.strings=e,this.expressions=n}visit(t,e=null){return t.visitInterpolation(this,e)}}class le extends Wt{constructor(t,e,n,a){super(t),this.operation=e,this.left=n,this.right=a}visit(t,e=null){return t.visitBinary(this,e)}}class de extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitPrefixNot(this,e)}}class ce extends Wt{constructor(t,e){super(t),this.expression=e}visit(t,e=null){return t.visitNonNullAssert(this,e)}}class fe extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitMethodCall(this,e)}}class he extends Wt{constructor(t,e,n,a){super(t),this.receiver=e,this.name=n,this.args=a}visit(t,e=null){return t.visitSafeMethodCall(this,e)}}class ge extends Wt{constructor(t,e,n){super(t),this.target=e,this.args=n}visit(t,e=null){return t.visitFunctionCall(this,e)}}class pe extends Wt{constructor(t,e,n,a){super(new Ut(0,null==e?0:e.length)),this.ast=t,this.source=e,this.location=n,this.errors=a}visit(t,e=null){return this.ast.visit(t,e)}toString(){return`${this.source} in ${this.location}`}}class be{constructor(t,e,n,a,r){this.span=t,this.key=e,this.keyIsVar=n,this.name=a,this.expression=r}}const me=function(){var t={Character:0,Identifier:1,Keyword:2,String:3,Operator:4,Number:5,Error:6};return t[t.Character]="Character",t[t.Identifier]="Identifier",t[t.Keyword]="Keyword",t[t.String]="String",t[t.Operator]="Operator",t[t.Number]="Number",t[t.Error]="Error",t}(),ye=["var","let","as","null","undefined","true","false","if","else","this"];class ve{tokenize(t){const e=new we(t),n=[];let a=e.scanToken();for(;null!=a;)n.push(a),a=e.scanToken();return n}}class xe{constructor(t,e,n,a){this.index=t,this.type=e,this.numValue=n,this.strValue=a}isCharacter(t){return this.type===me.Character&&this.numValue===t}isNumber(){return this.type===me.Number}isString(){return this.type===me.String}isOperator(t){return this.type===me.Operator&&this.strValue===t}isIdentifier(){return this.type===me.Identifier}isKeyword(){return this.type===me.Keyword}isKeywordLet(){return this.type===me.Keyword&&"let"===this.strValue}isKeywordAs(){return this.type===me.Keyword&&"as"===this.strValue}isKeywordNull(){return this.type===me.Keyword&&"null"===this.strValue}isKeywordUndefined(){return this.type===me.Keyword&&"undefined"===this.strValue}isKeywordTrue(){return this.type===me.Keyword&&"true"===this.strValue}isKeywordFalse(){return this.type===me.Keyword&&"false"===this.strValue}isKeywordThis(){return this.type===me.Keyword&&"this"===this.strValue}isError(){return this.type===me.Error}toNumber(){return this.type===me.Number?this.numValue:-1}toString(){switch(this.type){case me.Character:case me.Identifier:case me.Keyword:case me.Operator:case me.String:case me.Error:return this.strValue;case me.Number:return this.numValue.toString();default:return null}}}function _e(t,e){return new xe(t,me.Character,e,String.fromCharCode(e))}function Te(t,e){return new xe(t,me.Operator,0,e)}const Oe=new xe(-1,me.Character,0,"");class we{constructor(t){this.input=t,this.peek=0,this.index=-1,this.length=t.length,this.advance()}advance(){this.peek=++this.index>=this.length?0:this.input.charCodeAt(this.index)}scanToken(){const t=this.input,e=this.length;let n=this.peek,a=this.index;for(;n<=32;){if(++a>=e){n=0;break}n=t.charCodeAt(a)}if(this.peek=n,this.index=a,a>=e)return null;if(Se(n))return this.scanIdentifier();if(R(n))return this.scanNumber(a);const r=a;switch(n){case 46:return this.advance(),R(this.peek)?this.scanNumber(r):_e(r,46);case 40:case 41:case 123:case 125:case 91:case 93:case 44:case 58:case 59:return this.scanCharacter(r,n);case 39:case 34:return this.scanString();case 35:case 43:case 45:case 42:case 47:case 37:case 94:return this.scanOperator(r,String.fromCharCode(n));case 63:return this.scanComplexOperator(r,"?",46,".");case 60:case 62:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=");case 33:case 61:return this.scanComplexOperator(r,String.fromCharCode(n),61,"=",61,"=");case 38:return this.scanComplexOperator(r,"&",38,"&");case 124:return this.scanComplexOperator(r,"|",124,"|");case 160:for(;C(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error(`Unexpected character [${String.fromCharCode(n)}]`,0)}scanCharacter(t,e){return this.advance(),_e(t,e)}scanOperator(t,e){return this.advance(),Te(t,e)}scanComplexOperator(t,e,n,a,r,i){this.advance();let s=e;return this.peek===n&&(this.advance(),s+=a),null!=r&&this.peek===r&&(this.advance(),s+=i),Te(t,s)}scanIdentifier(){const t=this.index;for(this.advance();Ie(this.peek);)this.advance();const e=this.input.substring(t,this.index);return ye.indexOf(e)>-1?new xe(t,me.Keyword,0,e):function(t,e){return new xe(t,me.Identifier,0,e)}(t,e)}scanNumber(t){let e=this.index===t;for(this.advance();;){if(R(this.peek));else if(46===this.peek)e=!1;else{if(101!==(n=this.peek)&&69!==n)break;if(this.advance(),Ne(this.peek)&&this.advance(),!R(this.peek))return this.error("Invalid exponent",-1);e=!1}this.advance()}var n;const a=this.input.substring(t,this.index),r=e?function(t){const e=parseInt(t,10);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}(a):parseFloat(a);return new xe(t,me.Number,r,"")}scanString(){const t=this.index,e=this.peek;this.advance();let n="",a=this.index;const r=this.input;for(;this.peek!==e;)if(92===this.peek){let t;if(n+=r.substring(a,this.index),this.advance(),this.peek=this.peek,117===this.peek){const e=r.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(e))return this.error(`Invalid unicode escape [\\u${e}]`,0);t=parseInt(e,16);for(let t=0;t<5;t++)this.advance()}else t=Ce(this.peek),this.advance();n+=String.fromCharCode(t),a=this.index}else{if(0===this.peek)return this.error("Unterminated quote",0);this.advance()}const i=r.substring(a,this.index);return this.advance(),new xe(t,me.String,0,n+i)}error(t,e){const n=this.index+e;return function(t,e){return new xe(t,me.Error,0,e)}(n,`Lexer Error: ${t} at column ${n} in expression [${this.input}]`)}}function Se(t){return 97<=t&&t<=122||65<=t&&t<=90||95===t||36===t}function Ie(t){return A(t)||R(t)||95===t||36===t}function Ne(t){return 45===t||43===t}function Ce(t){switch(t){case 110:return 10;case 102:return 12;case 114:return 13;case 116:return 9;case 118:return 11;default:return t}}class Re{constructor(t,e,n){this.strings=t,this.expressions=e,this.offsets=n}}class Ae{constructor(t,e,n){this.templateBindings=t,this.warnings=e,this.errors=n}}function ke(t){const e=S(t.start)+"([\\s\\S]*?)"+S(t.end);return new RegExp(e,"g")}class Ee{constructor(t){this._lexer=t,this.errors=[]}parseAction(t,e,n=N){this._checkNoInterpolation(t,e,n);const a=this._stripComments(t),r=this._lexer.tokenize(this._stripComments(t)),i=new Le(t,e,r,a.length,!0,this.errors,t.length-a.length).parseChain();return new pe(i,t,e,this.errors)}parseBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n);return new pe(a,t,e,this.errors)}parseSimpleBinding(t,e,n=N){const a=this._parseBindingAst(t,e,n),r=De.check(a);return r.length>0&&this._reportError(`Host binding expression cannot contain ${r.join(" ")}`,t,e),new pe(a,t,e,this.errors)}_reportError(t,e,n,a){this.errors.push(new Ht(t,e,n,a))}_parseBindingAst(t,e,n){const a=this._parseQuote(t,e);if(null!=a)return a;this._checkNoInterpolation(t,e,n);const r=this._stripComments(t),i=this._lexer.tokenize(r);return new Le(t,e,i,r.length,!1,this.errors,t.length-r.length).parseChain()}_parseQuote(t,e){if(null===t)return null;const n=t.indexOf(":");if(-1===n)return null;const a=t.substring(0,n).trim();if(!function(t){if(0===t.length)return!1;const e=new we(t);if(!Se(e.peek))return!1;for(e.advance();0!==e.peek;){if(!Ie(e.peek))return!1;e.advance()}return!0}(a))return null;const r=t.substring(n+1);return new Kt(new Ut(0,t.length),a,r,e)}parseTemplateBindings(t,e,n){const a=this._lexer.tokenize(e);if(t){const e=this._lexer.tokenize(t).map(t=>(t.index=0,t));a.unshift(...e)}return new Le(e,n,a,e.length,!1,this.errors,0).parseTemplateBindings()}parseInterpolation(t,e,n=N){const a=this.splitInterpolation(t,e,n);if(null===a)return null;const r=[];for(let i=0;i<a.expressions.length;++i){const n=a.expressions[i],s=this._stripComments(n),o=this._lexer.tokenize(s),u=new Le(t,e,o,s.length,!1,this.errors,a.offsets[i]+(n.length-s.length)).parseChain();r.push(u)}return new pe(new ue(new Ut(0,null===t?0:t.length),a.strings,r),t,e,this.errors)}splitInterpolation(t,e,n=N){const a=ke(n),r=t.split(a);if(r.length<=1)return null;const i=[],s=[],o=[];let u=0;for(let l=0;l<r.length;l++){const a=r[l];l%2==0?(i.push(a),u+=a.length):a.trim().length>0?(u+=n.start.length,s.push(a),o.push(u),u+=a.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",t,`at column ${this._findInterpolationErrorColumn(r,l,n)} in`,e),s.push("$implict"),o.push(u))}return new Re(i,s,o)}wrapLiteralPrimitive(t,e){return new pe(new ie(new Ut(0,null===t?0:t.length),t),t,e,this.errors)}_stripComments(t){const e=this._commentStart(t);return null!=e?t.substring(0,e).trim():t}_commentStart(t){let e=null;for(let a=0;a<t.length-1;a++){const r=t.charCodeAt(a),i=t.charCodeAt(a+1);if(47===r&&47===i&&null===e)return a;e===r?e=null:null===e&&(39===(n=r)||34===n||96===n)&&(e=r)}var n;return null}_checkNoInterpolation(t,e,n){const a=ke(n),r=t.split(a);r.length>1&&this._reportError(`Got interpolation (${n.start}${n.end}) where expression was expected`,t,`at column ${this._findInterpolationErrorColumn(r,1,n)} in`,e)}_findInterpolationErrorColumn(t,e,n){let a="";for(let r=0;r<e;r++)a+=r%2==0?t[r]:`${n.start}${t[r]}${n.end}`;return a.length}}class Le{constructor(t,e,n,a,r,i,s){this.input=t,this.location=e,this.tokens=n,this.inputLength=a,this.parseAction=r,this.errors=i,this.offset=s,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}peek(t){const e=this.index+t;return e<this.tokens.length?this.tokens[e]:Oe}get next(){return this.peek(0)}get inputIndex(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset}span(t){return new Ut(t,this.inputIndex)}advance(){this.index++}optionalCharacter(t){return!!this.next.isCharacter(t)&&(this.advance(),!0)}peekKeywordLet(){return this.next.isKeywordLet()}peekKeywordAs(){return this.next.isKeywordAs()}expectCharacter(t){this.optionalCharacter(t)||this.error(`Missing expected ${String.fromCharCode(t)}`)}optionalOperator(t){return!!this.next.isOperator(t)&&(this.advance(),!0)}expectOperator(t){this.optionalOperator(t)||this.error(`Missing expected operator ${t}`)}expectIdentifierOrKeyword(){const t=this.next;return t.isIdentifier()||t.isKeyword()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier or keyword`),"")}expectIdentifierOrKeywordOrString(){const t=this.next;return t.isIdentifier()||t.isKeyword()||t.isString()?(this.advance(),t.toString()):(this.error(`Unexpected token ${t}, expected identifier, keyword, or string`),"")}parseChain(){const t=[],e=this.inputIndex;for(;this.index<this.tokens.length;){const e=this.parsePipe();if(t.push(e),this.optionalCharacter(59))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(59););else this.index<this.tokens.length&&this.error(`Unexpected token '${this.next}'`)}return 0===t.length?new $t(this.span(e)):1===t.length?t[0]:new Jt(this.span(e),t)}parsePipe(){let t=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{const e=this.expectIdentifierOrKeyword(),n=[];for(;this.optionalCharacter(58);)n.push(this.parseExpression());t=new re(this.span(t.span.start),t,e,n)}while(this.optionalOperator("|"))}return t}parseExpression(){return this.parseConditional()}parseConditional(){const t=this.inputIndex,e=this.parseLogicalOr();if(this.optionalOperator("?")){const n=this.parsePipe();let a;if(this.optionalCharacter(58))a=this.parsePipe();else{const e=this.input.substring(t,this.inputIndex);this.error(`Conditional expression ${e} requires all 3 expressions`),a=new $t(this.span(t))}return new Qt(this.span(t),e,n,a)}return e}parseLogicalOr(){let t=this.parseLogicalAnd();for(;this.optionalOperator("||");){const e=this.parseLogicalAnd();t=new le(this.span(t.span.start),"||",t,e)}return t}parseLogicalAnd(){let t=this.parseEquality();for(;this.optionalOperator("&&");){const e=this.parseEquality();t=new le(this.span(t.span.start),"&&",t,e)}return t}parseEquality(){let t=this.parseRelational();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"==":case"===":case"!=":case"!==":this.advance();const n=this.parseRelational();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseRelational(){let t=this.parseAdditive();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"<":case">":case"<=":case">=":this.advance();const n=this.parseAdditive();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseAdditive(){let t=this.parseMultiplicative();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"+":case"-":this.advance();const n=this.parseMultiplicative();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parseMultiplicative(){let t=this.parsePrefix();for(;this.next.type===me.Operator;){const e=this.next.strValue;switch(e){case"*":case"%":case"/":this.advance();const n=this.parsePrefix();t=new le(this.span(t.span.start),e,t,n);continue}break}return t}parsePrefix(){if(this.next.type===me.Operator){const t=this.inputIndex,e=this.next.strValue;let n;switch(e){case"+":return this.advance(),this.parsePrefix();case"-":return this.advance(),n=this.parsePrefix(),new le(this.span(t),e,new ie(new Ut(t,t),0),n);case"!":return this.advance(),n=this.parsePrefix(),new de(this.span(t),n)}}return this.parseCallChain()}parseCallChain(){let t=this.parsePrimary();for(;;)if(this.optionalCharacter(46))t=this.parseAccessMemberOrMethodCall(t,!1);else if(this.optionalOperator("?."))t=this.parseAccessMemberOrMethodCall(t,!0);else if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(93),this.optionalOperator("=")){const n=this.parseConditional();t=new ae(this.span(t.span.start),t,e,n)}else t=new ne(this.span(t.span.start),t,e)}else if(this.optionalCharacter(40)){this.rparensExpected++;const e=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(41),t=new ge(this.span(t.span.start),t,e)}else{if(!this.optionalOperator("!"))return t;t=new ce(this.span(t.span.start),t)}}parsePrimary(){const t=this.inputIndex;if(this.optionalCharacter(40)){this.rparensExpected++;const t=this.parsePipe();return this.rparensExpected--,this.expectCharacter(41),t}if(this.next.isKeywordNull())return this.advance(),new ie(this.span(t),null);if(this.next.isKeywordUndefined())return this.advance(),new ie(this.span(t),void 0);if(this.next.isKeywordTrue())return this.advance(),new ie(this.span(t),!0);if(this.next.isKeywordFalse())return this.advance(),new ie(this.span(t),!1);if(this.next.isKeywordThis())return this.advance(),new Zt(this.span(t));if(this.optionalCharacter(91)){this.rbracketsExpected++;const e=this.parseExpressionList(93);return this.rbracketsExpected--,this.expectCharacter(93),new se(this.span(t),e)}if(this.next.isCharacter(123))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new Zt(this.span(t)),!1);if(this.next.isNumber()){const e=this.next.toNumber();return this.advance(),new ie(this.span(t),e)}if(this.next.isString()){const e=this.next.toString();return this.advance(),new ie(this.span(t),e)}return this.index>=this.tokens.length?(this.error(`Unexpected end of expression: ${this.input}`),new $t(this.span(t))):(this.error(`Unexpected token ${this.next}`),new $t(this.span(t)))}parseExpressionList(t){const e=[];if(!this.next.isCharacter(t))do{e.push(this.parsePipe())}while(this.optionalCharacter(44));return e}parseLiteralMap(){const t=[],e=[],n=this.inputIndex;if(this.expectCharacter(123),!this.optionalCharacter(125)){this.rbracesExpected++;do{const n=this.next.isString(),a=this.expectIdentifierOrKeywordOrString();t.push({key:a,quoted:n}),this.expectCharacter(58),e.push(this.parsePipe())}while(this.optionalCharacter(44));this.rbracesExpected--,this.expectCharacter(125)}return new oe(this.span(n),t,e)}parseAccessMemberOrMethodCall(t,e=!1){const n=t.span.start,a=this.expectIdentifierOrKeyword();if(this.optionalCharacter(40)){this.rparensExpected++;const r=this.parseCallArguments();this.expectCharacter(41),this.rparensExpected--;const i=this.span(n);return e?new he(i,t,a,r):new fe(i,t,a,r)}if(e)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new $t(this.span(n))):new ee(this.span(n),t,a);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new $t(this.span(n));const e=this.parseConditional();return new te(this.span(n),t,a,e)}return new Xt(this.span(n),t,a)}parseCallArguments(){if(this.next.isCharacter(41))return[];const t=[];do{t.push(this.parsePipe())}while(this.optionalCharacter(44));return t}expectTemplateBindingKey(){let t="",e=!1;do{t+=this.expectIdentifierOrKeywordOrString(),e=this.optionalOperator("-"),e&&(t+="-")}while(e);return t.toString()}parseTemplateBindings(){const t=[];let e=null;for(;this.index<this.tokens.length;){const n=this.inputIndex;let a=this.peekKeywordLet();a&&this.advance();const r=this.expectTemplateBindingKey();let i=r;a||(null===e?e=i:i=e+i[0].toUpperCase()+i.substring(1)),this.optionalCharacter(58);let s=null,o=null;if(a)s=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.peekKeywordAs())this.advance(),s=r,i=this.expectTemplateBindingKey(),a=!0;else if(this.next!==Oe&&!this.peekKeywordLet()){const t=this.inputIndex,e=this.parsePipe(),n=this.input.substring(t-this.offset,this.inputIndex-this.offset);o=new pe(e,n,this.location,this.errors)}if(t.push(new be(this.span(n),i,a,s,o)),this.peekKeywordAs()&&!a){const e=this.inputIndex;this.advance();const n=this.expectTemplateBindingKey();t.push(new be(this.span(e),n,!0,i,null))}this.optionalCharacter(59)||this.optionalCharacter(44)}return new Ae(t,[],this.errors)}error(t,e=null){this.errors.push(new Ht(t,this.input,this.locationText(e),this.location)),this.skip()}locationText(t=null){return null===t&&(t=this.index),t<this.tokens.length?`at column ${this.tokens[t].index+1} in`:"at the end of the expression"}skip(){let t=this.next;for(;this.index<this.tokens.length&&!t.isCharacter(59)&&(this.rparensExpected<=0||!t.isCharacter(41))&&(this.rbracesExpected<=0||!t.isCharacter(125))&&(this.rbracketsExpected<=0||!t.isCharacter(93));)this.next.isError()&&this.errors.push(new Ht(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),t=this.next}}class De{constructor(){this.errors=[]}static check(t){const e=new De;return t.visit(e),e.errors}visitImplicitReceiver(t,e){}visitInterpolation(t,e){}visitLiteralPrimitive(t,e){}visitPropertyRead(t,e){}visitPropertyWrite(t,e){}visitSafePropertyRead(t,e){}visitMethodCall(t,e){}visitSafeMethodCall(t,e){}visitFunctionCall(t,e){}visitLiteralArray(t,e){this.visitAll(t.expressions)}visitLiteralMap(t,e){this.visitAll(t.values)}visitBinary(t,e){}visitPrefixNot(t,e){}visitNonNullAssert(t,e){}visitConditional(t,e){}visitPipe(t,e){this.errors.push("pipes")}visitKeyedRead(t,e){}visitKeyedWrite(t,e){}visitAll(t){return t.map(t=>t.visit(this))}visitChain(t,e){}visitQuote(t,e){}}const Pe={A:"LINK",B:"BOLD_TEXT",BR:"LINE_BREAK",EM:"EMPHASISED_TEXT",H1:"HEADING_LEVEL1",H2:"HEADING_LEVEL2",H3:"HEADING_LEVEL3",H4:"HEADING_LEVEL4",H5:"HEADING_LEVEL5",H6:"HEADING_LEVEL6",HR:"HORIZONTAL_RULE",I:"ITALIC_TEXT",LI:"LIST_ITEM",LINK:"MEDIA_LINK",OL:"ORDERED_LIST",P:"PARAGRAPH",Q:"QUOTATION",S:"STRIKETHROUGH_TEXT",SMALL:"SMALL_TEXT",SUB:"SUBSTRIPT",SUP:"SUPERSCRIPT",TBODY:"TABLE_BODY",TD:"TABLE_CELL",TFOOT:"TABLE_FOOTER",TH:"TABLE_HEADER_CELL",THEAD:"TABLE_HEADER",TR:"TABLE_ROW",TT:"MONOSPACED_TEXT",U:"UNDERLINED_TEXT",UL:"UNORDERED_LIST"};class Me{constructor(){this._placeHolderNameCounts={},this._signatureToName={}}getStartTagPlaceholderName(t,e,n){const a=this._hashTag(t,e,n);if(this._signatureToName[a])return this._signatureToName[a];const r=t.toUpperCase(),i=Pe[r]||`TAG_${r}`,s=this._generateUniqueName(n?i:`START_${i}`);return this._signatureToName[a]=s,s}getCloseTagPlaceholderName(t){const e=this._hashClosingTag(t);if(this._signatureToName[e])return this._signatureToName[e];const n=t.toUpperCase(),a=this._generateUniqueName(`CLOSE_${Pe[n]||`TAG_${n}`}`);return this._signatureToName[e]=a,a}getPlaceholderName(t,e){const n=t.toUpperCase(),a=`PH: ${n}=${e}`;if(this._signatureToName[a])return this._signatureToName[a];const r=this._generateUniqueName(n);return this._signatureToName[a]=r,r}getUniquePlaceholder(t){return this._generateUniqueName(t.toUpperCase())}_hashTag(t,e,n){return`<${t}`+Object.keys(e).sort().map(t=>` ${t}=${e[t]}`).join("")+(n?"/>":`></${t}>`)}_hashClosingTag(t){return this._hashTag(`/${t}`,{},!1)}_generateUniqueName(t){if(!this._placeHolderNameCounts.hasOwnProperty(t))return this._placeHolderNameCounts[t]=1,t;const e=this._placeHolderNameCounts[t];return this._placeHolderNameCounts[t]=e+1,`${t}_${e}`}}const qe=new Ee(new ve);class je{constructor(t,e){this._expressionParser=t,this._interpolationConfig=e}toI18nMessage(t,e,n,a){this._isIcu=1===t.length&&t[0]instanceof s,this._icuDepth=0,this._placeholderRegistry=new Me,this._placeholderToContent={},this._placeholderToMessage={};const r=c(this,t,{});return new f(r,this._placeholderToContent,this._placeholderToMessage,e,n,a)}visitElement(t,e){const n=c(this,t.children),a={};t.attrs.forEach(t=>{a[t.name]=t.value});const r=ut(t.name).isVoid,i=this._placeholderRegistry.getStartTagPlaceholderName(t.name,a,r);this._placeholderToContent[i]=t.sourceSpan?t.sourceSpan.toString():"";let s="";return r||(s=this._placeholderRegistry.getCloseTagPlaceholderName(t.name),this._placeholderToContent[s]=`</${t.name}>`),new b(t.name,a,i,s,n,r,t.sourceSpan)}visitAttribute(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitText(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)}visitComment(t,e){return null}visitExpansion(t,e){this._icuDepth++;const n={},a=new p(t.switchValue,t.type,n,t.sourceSpan);if(t.cases.forEach(t=>{n[t.value]=new g(t.expression.map(t=>t.visit(this,{})),t.expSourceSpan)}),this._icuDepth--,this._isIcu||this._icuDepth>0){const e=this._placeholderRegistry.getUniquePlaceholder(`VAR_${t.type}`);return a.expressionPlaceholder=e,this._placeholderToContent[e]=t.switchValue,a}const r=this._placeholderRegistry.getPlaceholderName("ICU",t.sourceSpan.toString()),i=new je(this._expressionParser,this._interpolationConfig);return this._placeholderToMessage[r]=i.toI18nMessage([t],"","",""),new y(a,r,t.sourceSpan)}visitExpansionCase(t,e){throw new Error("Unreachable code")}_visitTextWithInterpolation(t,e){const n=this._expressionParser.splitInterpolation(t,e.start.toString(),this._interpolationConfig);if(!n)return new h(t,e);const a=[],r=new g(a,e),{start:i,end:s}=this._interpolationConfig;for(let u=0;u<n.strings.length-1;u++){const t=n.expressions[u],r=t.split(Fe)[2]||"INTERPOLATION",o=this._placeholderRegistry.getPlaceholderName(r,t);n.strings[u].length&&a.push(new h(n.strings[u],e)),a.push(new m(t,o,e)),this._placeholderToContent[o]=i+t+s}const o=n.strings.length-1;return n.strings[o].length&&a.push(new h(n.strings[o],e)),r}}const Fe=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*("|')([\s\S]*?)\1[\s\S]*\)/g;class Ge extends X{constructor(t=N){super(ut),this.interpolationConfig=t}parse(t,e,n=!1){return super.parse(t,e,n,this.interpolationConfig)}extractMessages(t){const e=new He(["wrapper"]),n=new l("wrapper",[],t,void 0,void 0,void 0);return e.extract(n,this.interpolationConfig)}mergeTranslations(t,e,n,a,r=[]){const i=new He(r),s=new l("wrapper",[],t,void 0,void 0,void 0);return i.merge(s,e,this.interpolationConfig,n,a)}}class Ve{constructor(t,e){this.messages=t,this.errors=e}}class ze{constructor(t={},e,n,a,r,i){this.i18nNodesByMsgId=t,this.digest=e,this.mapperFactory=r,this.i18nToHtml=new Be(t,e,r,a,n,i)}static load(t,e,n,a,r,i,s=N){const o=r(t,e);return new ze(o,t=>n(t),s,i,t=>a(t),console)}get(t,e){const n=this.i18nToHtml.convert(t,e);if(n.errors.length)throw new Error(n.errors.join("\n"));return n.nodes}has(t){return this.digest(t)in this.i18nNodesByMsgId}}class Be{constructor(t={},e,n,a,r,i){this._i18nNodesByMsgId=t,this._digest=e,this._mapperFactory=n,this._missingTranslationStrategy=a,this._interpolationConfig=r,this._console=i,this._contextStack=[],this._errors=[]}convert(t,e){this._contextStack.length=0,this._errors.length=0,this._params=e,this._paramKeys=Object.keys(e);const n=this.convertToText(t),a=t.nodes[0].sourceSpan.start.file.url,r=(new Ge).parse(n,a,!0);return{nodes:r.rootNodes,errors:[...this._errors,...r.errors]}}visitText(t,e){return t.value}visitContainer(t,e){return t.children.map(t=>t.visit(this)).join("")}visitIcu(t,e){const n=Object.keys(t.cases).map(e=>`${e} {${t.cases[e].visit(this)}}`);return`{${this._srcMsg.placeholders.hasOwnProperty(t.expression)?this._srcMsg.placeholders[t.expression]:t.expression}, ${t.type}, ${n.join(" ")}}`}visitPlaceholder(t,e){const n=this._mapper(t.name);return this._srcMsg.placeholders.hasOwnProperty(n)?this.convertToValue(this._srcMsg.placeholders[n]):this._srcMsg.placeholderToMessage.hasOwnProperty(n)?this.convertToText(this._srcMsg.placeholderToMessage[n]):(this._addError(t,`Unknown placeholder "${t.name}"`),"")}visitTagPlaceholder(t,e){const n=`${t.tag}`,a=Object.keys(t.attrs).map(e=>`${e}="${t.attrs[e]}"`).join(" ");return t.isVoid?`<${n} ${a}/>`:`<${n} ${a}>${t.children.map(t=>t.visit(this)).join("")}</${n}>`}visitIcuPlaceholder(t,e){return this.convertToText(this._srcMsg.placeholderToMessage[t.name])}convertToText(t){const e=this._digest(t),n=this._mapperFactory?this._mapperFactory(t):null;let a;this._contextStack.push({msg:this._srcMsg,mapper:this._mapper}),this._srcMsg=t,this._i18nNodesByMsgId.hasOwnProperty(e)?(a=this._i18nNodesByMsgId[e],this._mapper=t=>n?n.toInternalName(t):t):(this._missingTranslationStrategy===r.MissingTranslationStrategy.Error?this._addError(t.nodes[0],`Missing translation for message "${e}"`):this._console&&this._missingTranslationStrategy===r.MissingTranslationStrategy.Warning&&this._console.warn(`Missing translation for message "${e}"`),a=t.nodes,this._mapper=t=>t);const i=a.map(t=>t.visit(this)).join(""),s=this._contextStack.pop();return this._srcMsg=s.msg,this._mapper=s.mapper,i}convertToValue(t){const e=t.replace(this._interpolationConfig.start,"").replace(this._interpolationConfig.end,"");return-1!==this._paramKeys.indexOf(e)?this._params[e]:t}_addError(t,e){this._errors.push(new w(t.sourceSpan,e))}}const Ye=function(){var t={Extract:0,Merge:1};return t[t.Extract]="Extract",t[t.Merge]="Merge",t}();class He{constructor(t=[]){this._implicitTags=t,this.blockChildren=[]}extract(t,e){return this.init(Ye.Extract,e),t.visit(this,null),this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Ve(this.messages,this.errors)}merge(t,e,n,a,r={}){this.init(Ye.Merge,n,a),this.translations=e,this.metadata=r;const i=t.visit(this,null);return this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Q(i.children,this.errors)}visitExpansionCase(t,e){const n=c(this,t.expression,e);if(this.mode===Ye.Merge)return new o(t.value,n,t.sourceSpan,t.valueSourceSpan,t.expSourceSpan)}visitExpansion(t,e){this.mayBeAddBlockChildren(t);const n=this.inIcu;this.inIcu||(this.isInTranslatableSection&&this.addMessage([t]),this.inIcu=!0);const a=c(this,t.cases,e);return this.mode===Ye.Merge&&(t=new s(t.switchValue,t.type,a,t.sourceSpan,t.switchValueSourceSpan)),this.inIcu=n,t}visitComment(t,e){}visitText(t,e){return this.isInTranslatableSection&&this.mayBeAddBlockChildren(t),t}visitElement(t,e){this.mayBeAddBlockChildren(t),this.depth++;const n=this.inI18nNode,a=this.inImplicitNode;let r=[],i=void 0;const s=t.attrs.find(t=>"i18n"===t.name)||null,o=this._implicitTags.some(e=>t.name===e)&&!this.inIcu&&!this.isInTranslatableSection,u=!a&&o;if(this.inImplicitNode=a||o,this.isInTranslatableSection||this.inIcu)(s||u)&&this._reportError(t,"Could not mark an element as translatable inside a translatable section"),this.mode===Ye.Extract&&c(this,t.children);else{if(s||u){this.inI18nNode=!0;const e=this.addMessage(t.children,this.metadata);i=this.translateMessage(t,e)}if(this.mode===Ye.Extract){const e=s||u;e&&this.openTranslatableSection(t),c(this,t.children),e&&this._closeTranslatableSection(t,t.children)}}return this.mode===Ye.Merge&&(i||t.children).forEach(t=>{const n=t.visit(this,e);n&&!this.isInTranslatableSection&&(r=r.concat(n))}),this.depth--,this.inI18nNode=n,this.inImplicitNode=a,this.mode===Ye.Merge?new l(t.name,[],r,t.sourceSpan,t.startSourceSpan,t.endSourceSpan):null}visitAttribute(t,e){throw new Error("unreachable code")}init(t,e,n={}){this.mode=t,this.inI18nBlock=!1,this.inI18nNode=!1,this.depth=0,this.inIcu=!1,this.msgCountAtSectionStart=void 0,this.errors=[],this.messages=[],this.inImplicitNode=!1,this.createI18nMessage=function(t){const e=new je(qe,t);return(t,n,a,r)=>e.toI18nMessage(t,n,a,r)}(e),this.params=n}addMessage(t,{meaning:e="",description:n="",id:a=""}={}){if(0===t.length||1===t.length&&t[0]instanceof u&&!t[0].value)return null;const r=this.createI18nMessage(t,e,n,a);return this.messages.push(r),r}translateMessage(t,e){if(e&&this.mode===Ye.Merge){const n=this.translations.get(e,this.params);if(n)return n;this._reportError(t,`Translation unavailable for message id="${this.translations.digest(e)}"`)}return[]}mayBeAddBlockChildren(t){this.inI18nBlock&&!this.inIcu&&this.depth===this.blockStartDepth&&this.blockChildren.push(t)}openTranslatableSection(t){this.isInTranslatableSection?this._reportError(t,"Unexpected section start"):this.msgCountAtSectionStart=this.messages.length}get isInTranslatableSection(){return void 0!==this.msgCountAtSectionStart}_closeTranslatableSection(t,e){if(!this.isInTranslatableSection)return void this._reportError(t,"Unexpected section end");const n=this.msgCountAtSectionStart;if(1===e.reduce((t,e)=>t+(e instanceof d?0:1),0))for(let a=this.messages.length-1;a>=n;a--){const t=this.messages[a].nodes;if(!(1===t.length&&t[0]instanceof h)){this.messages.splice(a,1);break}}this.msgCountAtSectionStart=void 0}_reportError(t,e){this.errors.push(new w(t.sourceSpan,e))}}const Ue=new r.InjectionToken("MissingTranslationStrategy");class We{constructor(t,e,n,a=r.MissingTranslationStrategy.Warning){let i,s,o=t=>null;switch(t=(t||"xlf").toLowerCase()){case"xtb":i=Gt,s=Vt,o=zt;break;case"xliff2":case"xlf2":i=Pt,s=Mt;break;case"xliff":case"xlf":i=kt,s=Et;break;default:throw new Error(`Unknown translations format ${t}`)}const u=new Ge,l=ze.load(e,"i18n",s,o,i,a);return(t,e={})=>{const a="string"==typeof t?t:t.value,r={};"object"==typeof t&&(r.id=t.id,r.meaning=t.meaning,r.description=t.description);const i=u.parse(a,"",!0);if(i.errors.length)throw i.errors;return function(t,e,n){return t.map(t=>t.visit(new ct(e,n),null))}(u.mergeTranslations(i.rootNodes,l,e,r,["wrapper"]).rootNodes,n,e).join("")}}}},GoyQ:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},GyhO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LRne"),r=n("0EUg");function i(...t){return Object(r.a)()(Object(a.a)(...t))}},H0h1:function(t,e,n){var a=n("SKAX");t.exports=function(t,e){var n=!0;return a(t,(function(t,a,r){return n=!!e(t,a,r)})),n}},H8ED:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвіліна":"хвіліну":"h"===n?e?"гадзіна":"гадзіну":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:e?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}t.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:e,mm:e,h:e,hh:e,d:"дзень",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(t){return/^(дня|вечара)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночы":t<12?"раніцы":t<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!=2&&t%10!=3||t%100==12||t%100==13?t+"-ы":t+"-і";case"D":return t+"-га";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},H8j4:function(t,e,n){var a=n("QkVE");t.exports=function(t,e){var n=a(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}},HAuM:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},HDdC:function(t,e,n){"use strict";var a=n("7o/Q"),r=n("2QA8"),i=n("gRHU"),s=n("kJWO"),o=n("mCNh"),u=n("2fFW");n.d(e,"a",(function(){return l}));let l=(()=>{class t{constructor(t){this._isScalar=!1,t&&(this._subscribe=t)}lift(e){const n=new t;return n.source=this,n.operator=e,n}subscribe(t,e,n){const{operator:s}=this,o=function(t,e,n){if(t){if(t instanceof a.a)return t;if(t[r.a])return t[r.a]()}return t||e||n?new a.a(t,e,n):new a.a(i.a)}(t,e,n);if(o.add(s?s.call(o,this.source):this.source||u.a.useDeprecatedSynchronousErrorHandling&&!o.syncErrorThrowable?this._subscribe(o):this._trySubscribe(o)),u.a.useDeprecatedSynchronousErrorHandling&&o.syncErrorThrowable&&(o.syncErrorThrowable=!1,o.syncErrorThrown))throw o.syncErrorValue;return o}_trySubscribe(t){try{return this._subscribe(t)}catch(e){u.a.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),function(t){for(;t;){const{closed:e,destination:n,isStopped:r}=t;if(e||r)return!1;t=n&&n instanceof a.a?n:null}return!0}(t)?t.error(e):console.warn(e)}}forEach(t,e){return new(e=d(e))((e,n)=>{let a;a=this.subscribe(e=>{try{t(e)}catch(r){n(r),a&&a.unsubscribe()}},n,e)})}_subscribe(t){const{source:e}=this;return e&&e.subscribe(t)}[s.a](){return this}pipe(...t){return 0===t.length?this:Object(o.b)(t)(this)}toPromise(t){return new(t=d(t))((t,e)=>{let n;this.subscribe(t=>n=t,t=>e(t),()=>t(n))})}}return t.create=e=>new t(e),t})();function d(t){if(t||(t=u.a.Promise||Promise),!t)throw new Error("no Promise impl found");return t}},HDyB:function(t,e,n){var a=n("nmnc"),r=n("JHRd"),i=n("ljhN"),s=n("or5M"),o=n("7fqy"),u=n("rEGp"),l=a?a.prototype:void 0,d=l?l.valueOf:void 0;t.exports=function(t,e,n,a,l,c,f){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!c(new r(t),new r(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=o;case"[object Set]":if(h||(h=u),t.size!=e.size&&!(1&a))return!1;var g=f.get(t);if(g)return g==e;a|=2,f.set(t,e);var p=s(h(t),h(e),a,l,c,f);return f.delete(t),p;case"[object Symbol]":if(d)return d.call(t)==d.call(e)}return!1}},HH4o:function(t,e,n){var a=n("tiKp")("iterator"),r=!1;try{var i=0,s={next:function(){return{done:!!i++}},return:function(){r=!0}};s[a]=function(){return this},Array.from(s,(function(){throw 2}))}catch(o){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i={};i[a]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(o){}return n}},HIU9:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("dApe"),i=n("X+05"),s=n("DzJC"),o=n.n(s),u=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t,e,n){var a=this;this.elementRef=t,this.ngZone=e,this.virtualScroll=n,this.setViewport=o()((function(){a.virtualScroll.setViewport(a.elementRef.nativeElement)}),17),this.scrollEventHandler=this.setViewport.bind(this)}return t.prototype.ngOnInit=function(){this.virtualScroll.init()},t.prototype.ngAfterViewInit=function(){var t=this;setTimeout((function(){t.setViewport(),t.virtualScroll.fireEvent({eventName:i.a.initialized})}));var e=this.elementRef.nativeElement;this.ngZone.runOutsideAngular((function(){e.addEventListener("scroll",t.scrollEventHandler)}))},t.prototype.ngOnDestroy=function(){this.virtualScroll.clear(),this.elementRef.nativeElement.removeEventListener("scroll",this.scrollEventHandler)},t.prototype.getTotalHeight=function(){return this.virtualScroll.isEnabled()&&this.virtualScroll.totalHeight+"px"||"auto"},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Component)({selector:"tree-viewport",styles:[],providers:[r.a],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.height]="getTotalHeight()">\n        <ng-content></ng-content>\n      </div>\n    </ng-container>\n  '}),u("design:paramtypes",[a.ElementRef,a.NgZone,r.a])],t)}()},HOxn:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"Promise");t.exports=a},HP3h:function(t,e,n){!function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(t){return function(e,r,i,s){var o=n(e),u=a[t][n(e)];return 2===o&&(u=u[r?0:1]),u.replace(/%d/i,e)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},HYAF:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},Hd5f:function(t,e,n){var a=n("0Dky"),r=n("tiKp"),i=n("LQDL"),s=r("species");t.exports=function(t){return i>=51||!a((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},HjS5:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="zh-TW">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>切換導覽</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>儀表板</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>叢集</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>監控程式</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>組態</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH 地圖</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>管理員模組</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>記錄</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>區塊</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>鏡像</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>檔案系統</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>刪除通知</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>沒有通知。</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>任務與通知</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>選取語言</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>正在載入面板資料...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana 時間選擇器</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>重設設定</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>刷新</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>返回</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>無法載入資料。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選取的數目</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>找到的數目</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>總計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名稱</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>描述</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>詳細描述</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>預設值</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>精靈預設值</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>儲存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH 地圖檢視器</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>正在載入...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>主機名稱</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>此欄位為必填欄位。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>是的,我確定。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>取消</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>關閉</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>主機清單</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>整體效能</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>找不到項目</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>叢集記錄</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>稽核記錄</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>正在載入組態...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>無法載入組態。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>編輯管理員模組</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>輸入的值不是有效的 UUID,例如 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>輸入的值必須是有效的  IP 位址。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>輸入的值必須為數字。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>輸入的值必須為數字或小數。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>叢集 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap 修改時間</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap 版本編號</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非仲裁成員</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>新增</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>叢集範圍的 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>提交</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>進階...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD 復原優先程度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先程度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>自訂優先程度值</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>此欄位為必填欄位!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>該值必須介於 0 至 1 之間。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>重新設定權數</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {深層} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD 清單</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>值</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編輯</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計資料</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>用戶端</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任何用戶端均可存取</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>位址</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必填欄位</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>必須包含一或多個逗號分隔值</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例如︰</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>存取類型</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>新增用戶端</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 沒有可用的叢集 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- 選取叢集 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>新增精靈</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>儲存後端</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 沒有可用的資料池 --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- 選取儲存後端 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>物件閘道使用者</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 沒有可用的使用者 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- 選取物件閘道使用者 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS 使用者 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 沒有可用的用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- 選取 cephx 用戶端 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS 名稱</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>安全標籤</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>啟用安全標籤</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS 路徑</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>路徑必須以「/」開頭,後面可接單詞</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>將建立新目錄</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>路徑</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>路徑只能以單一「/」或單詞開頭</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>將建立新桶</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS 通訊協定</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS 標記</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>用戶端不能掛接子目錄 (即如果標記為 foo,則用戶端無法掛接 foo/baz)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同標記選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>虛擬</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>透過使用不同虛擬選項,可將同一路徑輸出多次。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 沒有可用的存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- 選取存取類型 --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 沒有可用的 squash --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>傳輸通訊協定</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>歡迎使用 Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>需要指定使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>需要指定密碼</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>登入</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>抱歉,該使用者不存在於 Ceph 中。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>已禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>抱歉,您無權查看您要尋找的內容。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD 組態</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>移除本地組態值。將繼承並使用父組態值。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小值為 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>池清單</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名稱只能由英數字元、破折號和底線組成。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>所選的糾刪碼設定檔名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>外掛程式</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>資料區塊 (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>必須大於或等於 2。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>編碼區塊 (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>必須大於或等於 1。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>持久性估值 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>本地性 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH 故障網域</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH 本地性</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技術</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>封包大小</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH 根</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH 裝置類別</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任何</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>目錄</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名稱...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>所選的 Ceph 池名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>池類型</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- 選取池類型 --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>放置群組</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>至少需要一個放置群組!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>您的叢集無法處理這麼多的 PG。請重新計算所需的 PG 數量。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算說明</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製大小</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>旗標</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC 覆寫</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>應用程式</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 沒有可用的糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- 選取糾刪碼設定檔 --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- 選取 CRUSH 規則 --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH 規則</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH 步驟</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>壓縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>模式</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>演算法</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 沒有可用的糾刪壓縮演算法 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例如 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>值應大於 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Blob 最大大小</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例如 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>值應大於 blob 最小大小</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>比率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>壓縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>值應介於 0.0 至 1.0 之間</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例如 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細資料</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>效能詳細資料</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>快取層詳細資料</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>將影像移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護的過期日為</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>無保護</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日期格式錯誤。請使用「YYYY-MM-DD HH:mm:ss」。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護已過期。請選取一個未來的日期或保留空白。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>移動影像</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>綜覽</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>探查驗證</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>密碼</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>雙向驗證使用者</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>雙向驗證密碼</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>可用資訊︰</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>無法使用 iSCSI 目標</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>池</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>已建立</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>大小</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>物件</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>物件大小</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>已佈建</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>總佈建數</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>父</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>區塊名稱字首</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順序</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>快照</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>影像</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>此設定會覆寫全域值</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>全域</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>此值為全域值。未為此影像設定此選項的值。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>不允許使用「/」和「@」。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 沒有可用的 RBD 池 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- 選取池 --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>使用專屬的資料池</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>資料池</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>專用於儲存 RBD 的物件資料的池</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>您必須增加大小。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>進階</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>分割</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>分割單位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- 選取分割單位 --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>由於已定義分割計數,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>分割單位大於物件大小。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>分割計數</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>由於已定義分割單位,因此必須填寫此欄位!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>分割計數必須大於 0。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>您正要復原</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>清除垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>全部</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>池︰</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>池名稱...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>回存影像</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>若要回存</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>鍵入影像的新名稱并按一下</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新名稱</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>過期日為</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護過期日為</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI 拓撲</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常不需要變更這些參數的預設值。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>支援儲存</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>進階設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>目標 IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN 模式錯誤。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例如:iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>更多資訊</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>此目標的進階設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>入口網站</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>新增入口網站</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>此影像的設定存在修改。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>新增影像</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL 驗證</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>啟動器</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>用戶端 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>啟動器 IQN 必須唯一。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>使用者名稱的長度必須介於 8 至 64 個字元之間,並且只能包含以下\n                        字元︰字母、「.」、「@」、「-」、「_」或「:」。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>啟動器屬於群組。影像須在群組中進行設定。 </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>未新增項目。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>新增啟動器</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>群組</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>新增群組</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>正在同步</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備就緒</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>編輯池鏡像模式</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>在停用鏡像之前,必須先移除對等叢集。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {編輯} other {新增} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>叢集名稱</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>叢集名稱無效。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID 無效。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>監控程式位址</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>逗號分隔的位址...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>監控程式位址無效。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX 金鑰</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 編碼的金鑰...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX 金鑰必須為 Base64 編碼的金鑰。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>沒有可用的效能計數器</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>精靈清單</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>正在載入桶資料...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>該值無效。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>所選的名稱已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>擁有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- 選取使用者 --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>已啟用</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>索引類型</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>放置規則</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大標記數</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>主版本</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>修改時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>區域群組</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>桶定額</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無限制</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>使用者名稱</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- 選取使用者名稱 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>自動產生金鑰</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>存取金鑰</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>全名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子郵件地址</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>已暫停</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>系統</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>功能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>使用者定額</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>顯示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- 選取類型 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 選取許可權 --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>子使用者</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>所選的子使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>讀取、寫入</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>完整</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift 金鑰</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>自動產生機密金鑰</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>正在載入使用者資料...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>無法載入使用者資料。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>所選的使用者 ID 已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>電子郵件地址無效。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>所選的電子郵件地址已在使用中。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大桶數</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>已停用</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>自訂</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 金鑰</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>沒有子使用者。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>沒有金鑰。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>沒有功能。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>大小不限</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大大小</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>物件數不限</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大物件數</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>輸入的值必須大於或等於 0。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>描述...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可權</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>角色</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>確認密碼</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認的密碼與之前輸入的密碼不符。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子郵件</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>電子郵件無效。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>您正要為您自己的使用者移除「使用者讀取/寫入」許可權。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>若繼續,您將再也無法為任何使用者新增或移除角色。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>確定要繼續嗎?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>說明</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>文件</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>關於</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>儀表板設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>使用者管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>登入的使用者</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>登出</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>屬性 (OSD 地圖)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>無法使用中繼資料</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>中繼資料</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>效能計數器</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>寫入</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>長條圖</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小值</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大值</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>來源</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>層級</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>可在執行時期更新 (可編輯)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>標記</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列舉值</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>另請參閱</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>叢集狀態</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>管理員精靈</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>物件閘道</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>中繼資料伺服器</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI 閘道</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>用戶端 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>用戶端輸送量</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>用戶端讀取/寫入</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>復原輸送量</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>整理</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>效能</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>原始容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>每個 OSD 的 PG 數</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG 狀態</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>目前</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>已更新探查驗證</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>沒有可用的入口網站。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>沒有可用的影像。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>沒有可用的影像。請確定為目標新增一個影像。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>沒有可用的啟動器。請確定為目標新增一個啟動器。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>目標</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>使用中/最佳化開始時間</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>例項</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進度</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>編輯模式</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>新增對等</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>編輯對等</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>刪除對等</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>本地數量</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>遠端數量</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>鏡像對等</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>金鑰</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>深層壓平</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>分層</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>獨佔鎖定</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>物件對應 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>記錄 (需要獨佔鎖定)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未受保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD 快照復原</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD 快照</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>刪除位置</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>類型</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>狀態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>版本</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>主機</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>根</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>待命精靈</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>階層</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>精靈</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>活動</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentry</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用率</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>已更新</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>該值可在執行時期更新。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>精靈/用戶端不會從監控程式組態資料庫\n      提取此值。我們不允許透過「ceph config set ...」\n      設定此選項。應透過 ceph.conf 或使用指令行\n      進行設定。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>該選項僅在精靈啟動期間生效。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>該選項僅影響叢集建立。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>該選項僅影響精靈建立。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>服務</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>目前的值</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>可編輯</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>啟用</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>停用</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>正在重新連接,請稍候...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>公用位址</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>開啟的工作階段</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>禁止標示為 In</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>之前標示為 out 的 OSD 在啟動時將不會重新標示為 in</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>禁止標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD 在設定的間隔過後將不會自動標示為 out</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>禁止標示為 Up</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>不允許 OSD 啟動</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>禁止標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>將會忽略 OSD 故障報告,如此監控程式便不會將 OSD 標示為 down</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>暫停</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>暫停讀取和寫入</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>禁止整理</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>整理已停用</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>禁止深層整理</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>深層整理已停用</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>禁止回填</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG 回填已暫停</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>禁止復原</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG 復原已暫停</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>使用按位元排序</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>已清除 Snapdir</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD 已轉換 snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>復原刪除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>在復原期間,而非在建立互聯時執行刪除</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG 記錄硬限制</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>為 pg 記錄長度設定硬限制</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>已更新 OSD 旗標</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>out</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>in</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>down</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>標示</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD 遺失</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>已標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>已損毀</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>刪除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>讀取位元組數</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>寫入位元組數</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>讀取操作數</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>寫入操作數</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大回填數</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>處於使用中狀態的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>單次啟動的最大復原操作數</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>復原操作間隔睡眠時間</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>工作</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>嚴重性</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>已啟動</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>已使用</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>可用</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>乾淨</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>工作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>未知</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>啟用中</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>無檔案系統</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>使用中</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>待命</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>無</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>使用中的精靈</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>未設定 NFS Ganesha 服務。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>傳輸</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS 使用者</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS 檔案系統</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(繼承自全域組態)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>繼承自全域組態</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 選取執行哪種類型的使用者 ID 匿名存取 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>沒有可用的精靈。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>快取模式</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>逐出前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>衝洗前至少可留存的時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>目標最大位元組數</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>目標最大物件數</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>未新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>已達到應用程式上限</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>一個池最多只能四個應用程式定義。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>允許的字元為「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長度為 128 個字元</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>過濾或新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>新增應用程式</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>複本大小</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>上次變更時間</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>糾刪碼設定檔</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH 規則集</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>桶</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>使用者</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範圍</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>讀取</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>系統角色</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>更新使用者</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>繼續</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>您已被自動登出,因為您的角色發生了變更。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各物件都被分割成資料區塊部分,分別儲存於不同的 OSD。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>運算各物件的編碼區塊并將它們儲存到不同的 OSD。\n      編碼區塊的數量等同於在不遺失資料的前提下,可停機的 OSD 數量。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Jerasure 外掛程式是最一般、最靈活的外掛程式,\n          也是 Ceph 糾刪碼池的預設外掛程式。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Reed_sol_van 方法更靈活︰它足以設定 k\n          和 m。Cauchy_good 方法更快,但您需要小心選取封包大小。\n          所有 reed_sol_r6_op、liberation、blaum_roth、liber8tion 都\n          等同於 RAID6,它們只能設定為 m=2。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>將以位元組大小的封包為單位進行編碼。\n          選取合適的封包大小很難。\n          Jerasure 文件包含有關此主題的詳細資訊。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>使用 jerasure 外掛程式時,若糾刪碼物件儲存於\n          多個 OSD 上,則復原一個遺失的 OSD 時需要讀取所有其他 OSD。\n          例如,若 jerasure 設定為 k=8 且 m=4,則遺失一個 OSD 後需讀取\n          其他十一個 OSD 才能修復。\n\n          lrc 糾刪碼外掛程式會建立本地同位區塊,因此只需較少的 OSD 即\n          可復原。例如,若 lrc 設定為 k=8、m=4 且 l=4,它將為每四個 OSD\n          建立額外的同位區塊。這樣,當一個 OSD 遺失時,它只需四個 OSD\n          即可復原,而不需要十一個。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>將編碼區塊和資料區塊分組為大小為 locality 的集合。例如,\n          k=4 且 m=2 時,若 locality=3,則會建立 2 個大小為 3 的組。這樣,各組都能\n          自行復原,而無需從另一組讀取區塊。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>由 l 定義的區塊集將按哪種 CRUSH 桶類型儲存。\n          例如,若設定為機架,則各組 l 區塊將會被放置到不同的\n          機架中。該值用於建立類似 step choose rack 的 CRUSH\n          規則步驟。若未設定,則不會進行此類分組。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isa 外掛程式封包了 ISA 程式庫。它只能在 Intel 處理器上執行。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISA 外掛程式包含兩種 Reed Solomon 格式。\n          若設定為 reed_sol_van,則為 Vandermonde。若設定為 cauchy,則為 Cauchy。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shec 外掛程式封包了多個 SHEC 程式庫。\n          與 Reed Solomon 代碼相比,它能更有效地復原資料。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>同位區塊的數量,它們在各自的計算範圍內包含了\n          各資料區塊。該數值被用做持久性估值。例如,若 c=2,\n          則在不遺失資料的前提下,可有 2 個 OSD 停機。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSH 規則的第一步所指向的 CRUSH 桶名稱。\n      例如 step take default。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>確定兩個區塊不會存在於同一故障網域的桶中。\n      例如,若故障網域為主機,則不會有兩個區塊儲存於同一主機中。\n      該值用於建立類似 step chooseleaf host 的 CRUSH 規則步驟。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>使用 CRUSH 地圖中的 crush 裝置類別名稱,\n      將放置限制於特定類別的裝置 (例如 ssd 或 hdd)。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>設定糾刪碼外掛程式所在目錄。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>允許所有操作</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>僅允許不修改伺服器的操作</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>不允許讀取或寫入操作,但是允許任何其他操作</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>不允許讀取、寫入或任何可能修改檔案屬性或目錄內容的操作</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>完全禁止存取</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 選取優先程度 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>資訊</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>過去 5 分鐘</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>過去 15 分鐘</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>過去 30 分鐘</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>過去 1 小時 (預設值)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>過去 3 小時</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>過去 6 小時</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>過去 12 小時</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>過去 24 小時</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨天</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>今天</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>今天到目前為止</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>前天</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去 2 天</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>上週的今天</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>上週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>本週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>本週目前為止</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去 7 天</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>上個月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>本月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>本月目前為止</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去 30 天</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去 90 天</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去 6 個月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去 1 年</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>去年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年目前為止</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去 2 年</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去 5 年</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>未選取項目。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>取消選取項目以再次選取</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>已達到選取上限</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>過濾標記</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>新增徽章</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>沒有可用的項目。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>深層整理</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>損毀</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>標示為 Down</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>標示為 In</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>標示為遺失</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>標示為 Out</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>重新命名</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>移至垃圾桶</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>取消保護</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>已刪除</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>已克隆</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>已複製</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>已壓平</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>已清除</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>已還原</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>已復原</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>是</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>否</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>服務品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>指定的每秒 IO 位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>指定的每秒 IO 操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>讀取 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>指定的每秒內讀取的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>讀取 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>指定的每秒讀取操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>寫入 BPS 上限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>指定的每秒內寫入的位元組數上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>寫入 IOPS 上限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>指定的每秒寫入操作次數上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>指定的 IO 位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>指定的 IO 操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>讀取 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>指定的讀取的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>讀取 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>指定的讀取操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>寫入 BPS 高載</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>指定的寫入的位元組數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>寫入 IOPS 高載</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>指定的寫入操作次數高載上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>正在執行</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>執行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>已執行</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>未知任務</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>正在建立</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>建立</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>正在更新</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>正在刪除</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>正在克隆</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>克隆</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>正在複製</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>正在壓平</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>壓平</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>正在復原</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>復原</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>正在移動</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>已移動</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>找不到影像。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>正在還原</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>還原</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>正在清除</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>清除</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>所有池</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>無法停用鏡像,因為其包含對等。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},Hvzi:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},"I+eb":function(t,e,n){var a=n("2oRo"),r=n("Bs8V").f,i=n("kRJp"),s=n("busE"),o=n("zk60"),u=n("6JNq"),l=n("lMq5");t.exports=function(t,e){var n,d,c,f,h,g=t.target,p=t.global,b=t.stat;if(n=p?a:b?a[g]||o(g,{}):(a[g]||{}).prototype)for(d in e){if(f=e[d],c=t.noTargetGet?(h=r(n,d))&&h.value:n[d],!l(p?d:g+(b?".":"#")+d,t.forced)&&void 0!==c){if(typeof f==typeof c)continue;u(f,c)}(t.sham||c&&c.sham)&&i(f,"sham",!0),s(n,d,f,t)}}},I01J:function(t,e,n){var a=n("44Ds");t.exports=function(t){var e=a(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},I55L:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>t&&"number"==typeof t.length&&"function"!=typeof t},I8vh:function(t,e,n){var a=n("ppGB"),r=Math.max,i=Math.min;t.exports=function(t,e){var n=a(t);return n<0?r(n+e,0):i(n,e)}},IBtZ:function(t,e,n){!function(t){"use strict";t.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return/(წამი|წუთი|საათი|წელი)/.test(t)?t.replace(/ი$/,"ში"):t+"ში"},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(t){return 0===t?t:1===t?t+"-ლი":t<20||t<=100&&t%20==0||t%100==0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}})}(n("wd/R"))},IOzZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},IZUe:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{constructor(t){this.elementRef=t,this.focus=!0}ngAfterViewInit(){const t=this.elementRef.nativeElement;this.focus&&a.isFunction(t.focus)&&t.focus()}set autofocus(t){a.isBoolean(t)?this.focus=t:a.isFunction(t)&&(this.focus=t())}}},Iab2:function(t,e,n){var a,r;void 0===(r="function"==typeof(a=function(){"use strict";function e(t,e,n){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){i(a.response,e,n)},a.onerror=function(){console.error("could not download file")},a.send()}function n(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return 200<=e.status&&299>=e.status}function a(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(e){var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(n)}}var r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,i=r.saveAs||("object"!=typeof window||window!==r?function(){}:"download"in HTMLAnchorElement.prototype?function(t,i,s){var o=r.URL||r.webkitURL,u=document.createElement("a");u.download=i=i||t.name||"download",u.rel="noopener","string"==typeof t?(u.href=t,u.origin===location.origin?a(u):n(u.href)?e(t,i,s):a(u,u.target="_blank")):(u.href=o.createObjectURL(t),setTimeout((function(){o.revokeObjectURL(u.href)}),4e4),setTimeout((function(){a(u)}),0))}:"msSaveOrOpenBlob"in navigator?function(t,r,i){if(r=r||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,i),r);else if(n(t))e(t,r,i);else{var s=document.createElement("a");s.href=t,s.target="_blank",setTimeout((function(){a(s)}))}}:function(t,n,a,i){if((i=i||open("","_blank"))&&(i.document.title=i.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,a);var s="application/octet-stream"===t.type,o=/constructor/i.test(r.HTMLElement)||r.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||s&&o)&&"object"==typeof FileReader){var l=new FileReader;l.onloadend=function(){var t=l.result;t=u?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=t:location=t,i=null},l.readAsDataURL(t)}else{var d=r.URL||r.webkitURL,c=d.createObjectURL(t);i?i.location=c:location.href=c,i=null,setTimeout((function(){d.revokeObjectURL(c)}),4e4)}});r.saveAs=i.saveAs=i,t.exports=i})?a.apply(e,[]):a)||(t.exports=r)},IheW:function(t,e,n){"use strict";n.d(e,"m",(function(){return E})),n.d(e,"p",(function(){return q})),n.d(e,"q",(function(){return j})),n.d(e,"n",(function(){return D})),n.d(e,"o",(function(){return P})),n.d(e,"b",(function(){return c})),n.d(e,"g",(function(){return d})),n.d(e,"c",(function(){return I})),n.d(e,"a",(function(){return C})),n.d(e,"d",(function(){return V})),n.d(e,"e",(function(){return G})),n.d(e,"l",(function(){return F})),n.d(e,"h",(function(){return p})),n.d(e,"f",(function(){return w})),n.d(e,"i",(function(){return L})),n.d(e,"k",(function(){return k})),n.d(e,"j",(function(){return M}));var a=n("8Y7J"),r=n("LRne"),i=n("HDdC"),s=n("bOdf"),o=n("pLZG"),u=n("lJxs"),l=n("SVse");class d{}class c{}class f{constructor(t){this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?()=>{this.headers=new Map,t.split("\n").forEach(t=>{const e=t.indexOf(":");if(e>0){const n=t.slice(0,e),a=n.toLowerCase(),r=t.slice(e+1).trim();this.maybeSetNormalizedName(n,a),this.headers.has(a)?this.headers.get(a).push(r):this.headers.set(a,[r])}})}:()=>{this.headers=new Map,Object.keys(t).forEach(e=>{let n=t[e];const a=e.toLowerCase();"string"==typeof n&&(n=[n]),n.length>0&&(this.headers.set(a,n),this.maybeSetNormalizedName(e,a))})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();const e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,e){return this.clone({name:t,value:e,op:"a"})}set(t,e){return this.clone({name:t,value:e,op:"s"})}delete(t,e){return this.clone({name:t,value:e,op:"d"})}maybeSetNormalizedName(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)}init(){this.lazyInit&&(this.lazyInit instanceof f?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(e=>{this.headers.set(e,t.headers.get(e)),this.normalizedNames.set(e,t.normalizedNames.get(e))})}clone(t){const e=new f;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof f?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([t]),e}applyUpdate(t){const e=t.name.toLowerCase();switch(t.op){case"a":case"s":let n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);const a=("a"===t.op?this.headers.get(e):void 0)||[];a.push(...n),this.headers.set(e,a);break;case"d":const r=t.value;if(r){let t=this.headers.get(e);if(!t)return;t=t.filter(t=>-1===r.indexOf(t)),0===t.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,t)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>t(this.normalizedNames.get(e),this.headers.get(e)))}}class h{encodeKey(t){return g(t)}encodeValue(t){return g(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}}function g(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/gi,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%2B/gi,"+").replace(/%3D/gi,"=").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}class p{constructor(t={}){if(this.updates=null,this.cloneFrom=null,this.encoder=t.encoder||new h,t.fromString){if(t.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function(t,e){const n=new Map;return t.length>0&&t.split("&").forEach(t=>{const a=t.indexOf("="),[r,i]=-1==a?[e.decodeKey(t),""]:[e.decodeKey(t.slice(0,a)),e.decodeValue(t.slice(a+1))],s=n.get(r)||[];s.push(i),n.set(r,s)}),n}(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(e=>{const n=t.fromObject[e];this.map.set(e,Array.isArray(n)?n:[n])})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();const e=this.map.get(t);return e?e[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,e){return this.clone({param:t,value:e,op:"a"})}set(t,e){return this.clone({param:t,value:e,op:"s"})}delete(t,e){return this.clone({param:t,value:e,op:"d"})}toString(){return this.init(),this.keys().map(t=>{const e=this.encoder.encodeKey(t);return this.map.get(t).map(t=>e+"="+this.encoder.encodeValue(t)).join("&")}).join("&")}clone(t){const e=new p({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat([t]),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case"a":case"s":const e=("a"===t.op?this.map.get(t.param):void 0)||[];e.push(t.value),this.map.set(t.param,e);break;case"d":if(void 0===t.value){this.map.delete(t.param);break}{let e=this.map.get(t.param)||[];const n=e.indexOf(t.value);-1!==n&&e.splice(n,1),e.length>0?this.map.set(t.param,e):this.map.delete(t.param)}}}),this.cloneFrom=this.updates=null)}}function b(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function m(t){return"undefined"!=typeof Blob&&t instanceof Blob}function y(t){return"undefined"!=typeof FormData&&t instanceof FormData}class v{constructor(t,e,n,a){let r;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=t.toUpperCase(),function(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||a?(this.body=void 0!==n?n:null,r=a):r=n,r&&(this.reportProgress=!!r.reportProgress,this.withCredentials=!!r.withCredentials,r.responseType&&(this.responseType=r.responseType),r.headers&&(this.headers=r.headers),r.params&&(this.params=r.params)),this.headers||(this.headers=new f),this.params){const t=this.params.toString();if(0===t.length)this.urlWithParams=e;else{const n=e.indexOf("?");this.urlWithParams=e+(-1===n?"?":n<e.length-1?"&":"")+t}}else this.params=new p,this.urlWithParams=e}serializeBody(){return null===this.body?null:b(this.body)||m(this.body)||y(this.body)||"string"==typeof this.body?this.body:this.body instanceof p?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()}detectContentTypeHeader(){return null===this.body?null:y(this.body)?null:m(this.body)?this.body.type||null:b(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof p?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||Array.isArray(this.body)?"application/json":null}clone(t={}){const e=t.method||this.method,n=t.url||this.url,a=t.responseType||this.responseType,r=void 0!==t.body?t.body:this.body,i=void 0!==t.withCredentials?t.withCredentials:this.withCredentials,s=void 0!==t.reportProgress?t.reportProgress:this.reportProgress;let o=t.headers||this.headers,u=t.params||this.params;return void 0!==t.setHeaders&&(o=Object.keys(t.setHeaders).reduce((e,n)=>e.set(n,t.setHeaders[n]),o)),t.setParams&&(u=Object.keys(t.setParams).reduce((e,n)=>e.set(n,t.setParams[n]),u)),new v(e,n,r,{params:u,headers:o,reportProgress:s,responseType:a,withCredentials:i})}}const x=function(){var t={Sent:0,UploadProgress:1,ResponseHeader:2,DownloadProgress:3,Response:4,User:5};return t[t.Sent]="Sent",t[t.UploadProgress]="UploadProgress",t[t.ResponseHeader]="ResponseHeader",t[t.DownloadProgress]="DownloadProgress",t[t.Response]="Response",t[t.User]="User",t}();class _{constructor(t,e=200,n="OK"){this.headers=t.headers||new f,this.status=void 0!==t.status?t.status:e,this.statusText=t.statusText||n,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}}class T extends _{constructor(t={}){super(t),this.type=x.ResponseHeader}clone(t={}){return new T({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class O extends _{constructor(t={}){super(t),this.type=x.Response,this.body=void 0!==t.body?t.body:null}clone(t={}){return new O({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class w extends _{constructor(t){super(t,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${t.url||"(unknown url)"}`:`Http failure response for ${t.url||"(unknown url)"}: ${t.status} ${t.statusText}`,this.error=t.error||null}}function S(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}class I{constructor(t){this.handler=t}request(t,e,n={}){let a;if(t instanceof v)a=t;else{let r=void 0;r=n.headers instanceof f?n.headers:new f(n.headers);let i=void 0;n.params&&(i=n.params instanceof p?n.params:new p({fromObject:n.params})),a=new v(t,e,void 0!==n.body?n.body:null,{headers:r,params:i,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials})}const i=Object(r.a)(a).pipe(Object(s.a)(t=>this.handler.handle(t)));if(t instanceof v||"events"===n.observe)return i;const l=i.pipe(Object(o.a)(t=>t instanceof O));switch(n.observe||"body"){case"body":switch(a.responseType){case"arraybuffer":return l.pipe(Object(u.a)(t=>{if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body}));case"blob":return l.pipe(Object(u.a)(t=>{if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body}));case"text":return l.pipe(Object(u.a)(t=>{if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body}));case"json":default:return l.pipe(Object(u.a)(t=>t.body))}case"response":return l;default:throw new Error(`Unreachable: unhandled observe type ${n.observe}}`)}}delete(t,e={}){return this.request("DELETE",t,e)}get(t,e={}){return this.request("GET",t,e)}head(t,e={}){return this.request("HEAD",t,e)}jsonp(t,e){return this.request("JSONP",t,{params:(new p).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,e={}){return this.request("OPTIONS",t,e)}patch(t,e,n={}){return this.request("PATCH",t,S(n,e))}post(t,e,n={}){return this.request("POST",t,S(n,e))}put(t,e,n={}){return this.request("PUT",t,S(n,e))}}class N{constructor(t,e){this.next=t,this.interceptor=e}handle(t){return this.interceptor.intercept(t,this.next)}}const C=new a.InjectionToken("HTTP_INTERCEPTORS");class R{intercept(t,e){return e.handle(t)}}const A=/^\)\]\}',?\n/;class k{}class E{constructor(){}build(){return new XMLHttpRequest}}class L{constructor(t){this.xhrFactory=t}handle(t){if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new i.a(e=>{const n=this.xhrFactory.build();if(n.open(t.method,t.urlWithParams),t.withCredentials&&(n.withCredentials=!0),t.headers.forEach((t,e)=>n.setRequestHeader(t,e.join(","))),t.headers.has("Accept")||n.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){const e=t.detectContentTypeHeader();null!==e&&n.setRequestHeader("Content-Type",e)}if(t.responseType){const e=t.responseType.toLowerCase();n.responseType="json"!==e?e:"text"}const a=t.serializeBody();let r=null;const i=()=>{if(null!==r)return r;const e=1223===n.status?204:n.status,a=n.statusText||"OK",i=new f(n.getAllResponseHeaders()),s=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(n)||t.url;return r=new T({headers:i,status:e,statusText:a,url:s}),r},s=()=>{let{headers:a,status:r,statusText:s,url:o}=i(),u=null;204!==r&&(u=void 0===n.response?n.responseText:n.response),0===r&&(r=u?200:0);let l=r>=200&&r<300;if("json"===t.responseType&&"string"==typeof u){const t=u;u=u.replace(A,"");try{u=""!==u?JSON.parse(u):null}catch(d){u=t,l&&(l=!1,u={error:d,text:u})}}l?(e.next(new O({body:u,headers:a,status:r,statusText:s,url:o||void 0})),e.complete()):e.error(new w({error:u,headers:a,status:r,statusText:s,url:o||void 0}))},o=t=>{const{url:a}=i(),r=new w({error:t,status:n.status||0,statusText:n.statusText||"Unknown Error",url:a||void 0});e.error(r)};let u=!1;const l=a=>{u||(e.next(i()),u=!0);let r={type:x.DownloadProgress,loaded:a.loaded};a.lengthComputable&&(r.total=a.total),"text"===t.responseType&&n.responseText&&(r.partialText=n.responseText),e.next(r)},d=t=>{let n={type:x.UploadProgress,loaded:t.loaded};t.lengthComputable&&(n.total=t.total),e.next(n)};return n.addEventListener("load",s),n.addEventListener("error",o),t.reportProgress&&(n.addEventListener("progress",l),null!==a&&n.upload&&n.upload.addEventListener("progress",d)),n.send(a),e.next({type:x.Sent}),()=>{n.removeEventListener("error",o),n.removeEventListener("load",s),t.reportProgress&&(n.removeEventListener("progress",l),null!==a&&n.upload&&n.upload.removeEventListener("progress",d)),n.abort()}})}}const D=new a.InjectionToken("XSRF_COOKIE_NAME"),P=new a.InjectionToken("XSRF_HEADER_NAME");class M{}class q{constructor(t,e,n){this.doc=t,this.platform=e,this.cookieName=n,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=Object(l["ɵparseCookieValue"])(t,this.cookieName),this.lastCookieString=t),this.lastToken}}class j{constructor(t,e){this.tokenService=t,this.headerName=e}intercept(t,e){const n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);const a=this.tokenService.getToken();return null===a||t.headers.has(this.headerName)||(t=t.clone({headers:t.headers.set(this.headerName,a)})),e.handle(t)}}class F{constructor(t,e){this.backend=t,this.injector=e,this.chain=null}handle(t){if(null===this.chain){const t=this.injector.get(C,[]);this.chain=t.reduceRight((t,e)=>new N(t,e),this.backend)}return this.chain.handle(t)}}class G{static disable(){return{ngModule:G,providers:[{provide:j,useClass:R}]}}static withOptions(t={}){return{ngModule:G,providers:[t.cookieName?{provide:D,useValue:t.cookieName}:[],t.headerName?{provide:P,useValue:t.headerName}:[]]}}}class V{}},IjjT:function(t,e,n){"use strict";let a=(()=>{class t{constructor(e,n=t.now){this.SchedulerAction=e,this.now=n}schedule(t,e=0,n){return new this.SchedulerAction(this,t).schedule(n,e)}}return t.now=()=>Date.now(),t})();n.d(e,"a",(function(){return r}));class r extends a{constructor(t,e=a.now){super(t,()=>r.delegate&&r.delegate!==this?r.delegate.now():e()),this.actions=[],this.active=!1,this.scheduled=void 0}schedule(t,e=0,n){return r.delegate&&r.delegate!==this?r.delegate.schedule(t,e,n):super.schedule(t,e,n)}flush(t){const{actions:e}=this;if(this.active)return void e.push(t);let n;this.active=!0;do{if(n=t.execute(t.state,t.delay))break}while(t=e.shift());if(this.active=!1,n){for(;t=e.shift();)t.unsubscribe();throw n}}}},ImZN:function(t,e,n){var a=n("glrk"),r=n("6VoE"),i=n("UMSQ"),s=n("A2ZE"),o=n("NaFW"),u=n("m92n"),l=function(t,e){this.stopped=t,this.result=e};(t.exports=function(t,e,n,d,c){var f,h,g,p,b,m,y,v=s(e,n,d?2:1);if(c)f=t;else{if("function"!=typeof(h=o(t)))throw TypeError("Target is not iterable");if(r(h)){for(g=0,p=i(t.length);p>g;g++)if((b=d?v(a(y=t[g])[0],y[1]):v(t[g]))&&b instanceof l)return b;return new l(!1)}f=h.call(t)}for(m=f.next;!(y=m.call(f)).done;)if("object"==typeof(b=u(f,v,y.value,d))&&b&&b instanceof l)return b;return new l(!1)}).stop=function(t){return new l(!0,t)}},Ioao:function(t,e,n){var a=n("heNW"),r=Math.max;t.exports=function(t,e,n){return e=r(void 0===e?t.length-1:e,0),function(){for(var i=arguments,s=-1,o=r(i.length-e,0),u=Array(o);++s<o;)u[s]=i[e+s];s=-1;for(var l=Array(e+1);++s<e;)l[s]=i[s];return l[e]=n(u),a(t,this,l)}}},"Ivi+":function(t,e,n){!function(t){"use strict";t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}})}(n("wd/R"))},IzCI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1024,["B/s","kB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"])}}},IzEk:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("4I5i"),i=n("EY2u");function s(t){return e=>0===t?Object(i.b)():e.lift(new o(t))}class o{constructor(t){if(this.total=t,this.total<0)throw new r.a}call(t,e){return e.subscribe(new u(t,this.total))}}class u extends a.a{constructor(t,e){super(t),this.total=e,this.count=0}_next(t){const e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))}}},J2m7:function(t,e,n){var a=n("XKAG")(n("UfWW"));t.exports=a},JBE3:function(t,e,n){var a=n("+Qka"),r=n("LsHQ")((function(t,e,n,r){a(t,e,n,r)}));t.exports=r},JBy8:function(t,e,n){var a=n("yoRg"),r=n("eDl+").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},JC6p:function(t,e,n){var a=n("cq/+"),r=n("7GkX");t.exports=function(t,e){return t&&a(t,e,r)}},"JCF/":function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(t){return/ئێواره‌/.test(t)},meridiem:function(t,e,n){return t<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},JHRd:function(t,e,n){var a=n("Kz5y");t.exports=a.Uint8Array},JHgL:function(t,e,n){var a=n("QkVE");t.exports=function(t){return a(this,t).get(t)}},JIr8:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj");function s(t){return function(e){const n=new o(t),a=e.lift(n);return n.caught=a}}class o{constructor(t){this.selector=t}call(t,e){return e.subscribe(new u(t,this.selector,this.caught))}}class u extends a.a{constructor(t,e,n){super(t),this.selector=e,this.caught=n}error(t){if(!this.isStopped){let n;try{n=this.selector(t,this.caught)}catch(e){return void super.error(e)}this._unsubscribeAndRecycle();const a=new r.a(this,void 0,void 0);this.add(a);const s=Object(i.a)(this,n,void 0,void 0,a);s!==a&&this.add(s)}}}},JSQU:function(t,e,n){var a=n("YESw");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=a&&void 0===e?"__lodash_hash_undefined__":e,this}},JTzB:function(t,e,n){var a=n("NykK"),r=n("ExA7");t.exports=function(t){return r(t)&&"[object Arguments]"==a(t)}},JVSJ:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},JZM8:function(t,e,n){var a=n("FfPP"),r=n("xs/l")((function(t,e){return null==t?{}:a(t,e)}));t.exports=r},Jlc5:function(t,e,n){var a=n("ZirO"),r=n("H0h1"),i=n("ut/Y"),s=n("Z0cm"),o=n("mv/X");t.exports=function(t,e,n){var u=s(t)?a:r;return n&&o(t,e,n)&&(e=void 0),u(t,i(e,3))}},JmpY:function(t,e,n){var a=n("eUgh");t.exports=function(t,e){return a(e,(function(e){return t[e]}))}},Juji:function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},JvlW:function(t,e,n){!function(t){"use strict";var e={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(t,e,n,a){return e?r(n)[0]:a?r(n)[1]:r(n)[2]}function a(t){return t%10==0||t>10&&t<20}function r(t){return e[t].split("_")}function i(t,e,i,s){var o=t+" ";return 1===t?o+n(0,e,i[0],s):e?o+(a(t)?r(i)[1]:r(i)[0]):s?o+r(i)[1]:o+(a(t)?r(i)[1]:r(i)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(t,e,n,a){return e?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"},ss:i,m:n,mm:i,h:n,hh:i,d:n,dd:i,M:n,MM:i,y:n,yy:i},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})}(n("wd/R"))},JxMD:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("hrfs");n("dgut"),n("Fgil"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return o}));var s=a["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;position:static!important}']],data:{}});function o(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{chartCanvasRef:0}),a["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),a["ɵeld"](2,0,null,null,6,"div",[["class","chart-container"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgStyleImpl"],r["ɵNgStyleR2Impl"],[a.ElementRef,a.KeyValueDiffers,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgStyle,[r["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),a["ɵeld"](5,0,[[1,0],["sparkCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),a["ɵdid"](6,999424,null,0,i.a,[a.ElementRef,i.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),a["ɵeld"](7,0,[[2,0],["sparkTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.style),t(e,6,0,n.datasets,n.labels,n.options,"line",n.colors)}),null)}},"K/tc":function(t,e,n){!function(t){"use strict";t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},KMkd:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},KOzp:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return d}));var a=n("z/SZ"),r=n("hpHm"),i=n("2uy1"),s=n("PqYM");class o{constructor(){this.adaptivePosition=!0,this.placement="top",this.triggers="click",this.outsideClick=!1,this.delay=0}}class u{constructor(t){Object.assign(this,t)}get isBs3(){return Object(r.d)()}}class l{constructor(t,e,n,a,r,i){this._elementRef=e,this._renderer=n,this._positionService=i,this.outsideClick=!1,this.containerClass="",this._isInited=!1,this._popover=r.createLoader(e,a,n).provide({provide:o,useValue:t}),Object.assign(this,t),this.onShown=this._popover.onShown,this.onHidden=this._popover.onHidden,"undefined"!=typeof window&&e.nativeElement.addEventListener("click",(function(){try{e.nativeElement.focus()}catch(t){return}}))}get isOpen(){return this._popover.isShown}set isOpen(t){t?this.show():this.hide()}show(){if(this._popover.isShown||!this.popover||this._delayTimeoutId)return;this._positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition},preventOverflow:{enabled:this.adaptivePosition}}});const t=()=>{this._delayTimeoutId&&(this._delayTimeoutId=void 0),this._popover.attach(u).to(this.container).position({attachment:this.placement}).show({content:this.popover,context:this.popoverContext,placement:this.placement,title:this.popoverTitle,containerClass:this.containerClass}),this.adaptivePosition||(this._positionService.calcPosition(),this._positionService.deletePositionElement(this._popover._componentRef.location)),this.isOpen=!0},e=()=>{this._popoverCancelShowFn&&this._popoverCancelShowFn()};if(this.delay){const n=Object(s.a)(this.delay).subscribe(()=>{t(),e()});this.triggers&&Object(r.f)(this.triggers).forEach(t=>{this._popoverCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,t.close,()=>{n.unsubscribe(),e()})})}else t()}hide(){this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this.isOpen&&(this._popover.hide(),this.isOpen=!1)}toggle(){if(this.isOpen)return this.hide();this.show()}ngOnInit(){this._isInited||(this._isInited=!0,this._popover.listen({triggers:this.triggers,outsideClick:this.outsideClick,show:()=>this.show()}))}ngOnDestroy(){this._popover.dispose()}}class d{static forRoot(){return{ngModule:d,providers:[o,a.a,i.a]}}}},KSF8:function(t,e,n){!function(t){"use strict";t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},KTz0:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},KVJa:function(t,e,n){"use strict";var a=n("8Y7J");n("Z21x"),n("SVse"),n("sne2"),n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var r=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["ɵvid"](0,[(t()(),a["ɵted"](-1,null,[" \n"])),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-light tc_backButton"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),a["ɵted"](2,null,[" ","\n"]))],null,(function(t,e){t(e,2,0,e.component.name)}))}},KfNM:function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},Kqap:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){let n=!1;return arguments.length>=2&&(n=!0),function(a){return a.lift(new i(t,e,n))}}class i{constructor(t,e,n=!1){this.accumulator=t,this.seed=e,this.hasSeed=n}call(t,e){return e.subscribe(new s(t,this.accumulator,this.seed,this.hasSeed))}}class s extends a.a{constructor(t,e,n,a){super(t),this.accumulator=e,this._seed=n,this.hasSeed=a,this.index=0}get seed(){return this._seed}set seed(t){this.hasSeed=!0,this._seed=t}_next(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)}_tryNext(t){const e=this.index++;let n;try{n=this.accumulator(this.seed,t,e)}catch(a){this.destination.error(a)}this.seed=n,this.destination.next(n)}}},KqfI:function(t,e,n){"use strict";function a(){}n.d(e,"a",(function(){return a}))},KwMD:function(t,e){t.exports=function(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}},KxBF:function(t,e){t.exports=function(t,e,n){var a=-1,r=t.length;e<0&&(e=-e>r?0:r+e),(n=n>r?r:n)<0&&(n+=r),r=e>n?0:n-e>>>0,e>>>=0;for(var i=Array(r);++a<r;)i[a]=t[a+e];return i}},Kz5y:function(t,e,n){var a=n("WFqU"),r="object"==typeof self&&self&&self.Object===Object&&self,i=a||r||Function("return this")();t.exports=i},L8xA:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},LOMR:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fwy9"),i=n("gk6K"),s=n("woSy"),o=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[["class","node-drop-slot"]],null,[[null,"treeDrop"],[null,"drop"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,1).onDrop(n)&&r),"treeDrop"===e&&(r=!1!==i.onDrop(n)&&r),r}),null,null)),a["ɵdid"](1,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop"})],(function(t,e){var n=e.component;t(e,1,0,!0,n.allowDrop.bind(n))}),null)}var l=n("SVse"),d=n("CoVI"),c=n("uNpg"),f=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"input",[["class","tree-node-checkbox"],["type","checkbox"]],[[8,"checked",0],[8,"indeterminate",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("checkboxClick",n)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,1,0,n.node.isSelected,n.node.isPartiallySelected)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,h)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var p=n("jV1L"),b=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","toggle-children-wrapper"]],[[2,"toggle-children-wrapper-expanded",null],[2,"toggle-children-wrapper-collapsed",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.node.mouseAction("expanderClick",n)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"span",[["class","toggle-children"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.node.isExpanded,n.node.isCollapsed)}))}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","toggle-children-placeholder"]],null,null,null,null,null))],null,null)}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](4,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.hasChildren),t(e,4,0,!n.node.hasChildren)}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,v)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var _=n("C523"),T=n("rZud"),O=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.node.displayField)}))}function S(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node,n.node,n.index);t(e,3,0,a,n.template)}),null)}var I=n("OIDT"),N=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-checkbox",[],null,null,null,g,f)),a["ɵdid"](1,49152,null,0,c.a,[],{node:[0,"node"]},null)],(function(t,e){t(e,1,0,e.component.node)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"div",[["class","node-wrapper"]],[[4,"padding-left",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-expander",[],null,null,null,x,b)),a["ɵdid"](4,49152,null,0,p.a,[],{node:[0,"node"]},null),(t()(),a["ɵeld"](5,0,null,null,4,"div",[["class","node-content-wrapper"]],[[2,"node-content-wrapper-active",null],[2,"node-content-wrapper-focused",null]],[[null,"click"],[null,"dblclick"],[null,"mouseover"],[null,"mouseout"],[null,"contextmenu"],[null,"treeDrop"],[null,"treeDropDragOver"],[null,"treeDropDragLeave"],[null,"treeDropDragEnter"],[null,"drop"],[null,"dragstart"],[null,"dragend"]],(function(t,e,n){var r=!0,i=t.component;return"drop"===e&&(r=!1!==a["ɵnov"](t,6).onDrop(n)&&r),"dragstart"===e&&(r=!1!==a["ɵnov"](t,7).onDragStart(n)&&r),"dragend"===e&&(r=!1!==a["ɵnov"](t,7).onDragEnd()&&r),"click"===e&&(r=!1!==i.node.mouseAction("click",n)&&r),"dblclick"===e&&(r=!1!==i.node.mouseAction("dblClick",n)&&r),"mouseover"===e&&(r=!1!==i.node.mouseAction("mouseOver",n)&&r),"mouseout"===e&&(r=!1!==i.node.mouseAction("mouseOut",n)&&r),"contextmenu"===e&&(r=!1!==i.node.mouseAction("contextMenu",n)&&r),"treeDrop"===e&&(r=!1!==i.node.onDrop(n)&&r),"treeDropDragOver"===e&&(r=!1!==i.node.mouseAction("dragOver",n)&&r),"treeDropDragLeave"===e&&(r=!1!==i.node.mouseAction("dragLeave",n)&&r),"treeDropDragEnter"===e&&(r=!1!==i.node.mouseAction("dragEnter",n)&&r),r}),null,null)),a["ɵdid"](6,4341760,null,0,r.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{allowDragoverStyling:[0,"allowDragoverStyling"],treeAllowDrop:[1,"treeAllowDrop"]},{onDropCallback:"treeDrop",onDragOverCallback:"treeDropDragOver",onDragLeaveCallback:"treeDropDragLeave",onDragEnterCallback:"treeDropDragEnter"}),a["ɵdid"](7,4603904,null,0,_.a,[a.ElementRef,a.Renderer2,i.a,a.NgZone],{draggedElement:[0,"draggedElement"],treeDragEnabled:[1,"treeDragEnabled"]},null),(t()(),a["ɵeld"](8,0,null,null,1,"tree-node-content",[],null,null,null,S,O)),a["ɵdid"](9,49152,null,0,T.a,[],{node:[0,"node"],index:[1,"index"],template:[2,"template"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.options.useCheckbox),t(e,4,0,n.node),t(e,6,0,n.node.allowDragoverStyling(),n.node.allowDrop),t(e,7,0,n.node,n.node.allowDrag()),t(e,9,0,n.node,n.index,n.templates.treeNodeTemplate)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getNodePadding()),t(e,5,0,n.node.isActive,n.node.isFocused)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0,node:1,index:2,templates:3})],(function(t,e){var n=e.component;t(e,1,0,!n.templates.treeNodeWrapperTemplate);var a=t(e,4,0,n.node,n.node,n.index,n.templates);t(e,3,0,a,n.templates.treeNodeWrapperTemplate)}),null)}var k=n("WaXT"),E=n("ZhuC"),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["loading..."]))],null,null)}function P(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,D)),a["ɵdid"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](3,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](4,{$implicit:0})],(function(t,e){var n=e.component;t(e,1,0,!n.template);var a=t(e,4,0,n.node);t(e,3,0,a,n.template)}),null)}var M=n("4Dmd"),q=n("pcHL"),j=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-collection",[],null,null,null,X,Z)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.children,n.node.treeModel,n.templates)}),null)}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-loading-component",[["class","tree-node-loading"]],[[4,"padding-left",null]],null,null,P,L)),a["ɵdid"](1,49152,null,0,E.a,[],{template:[0,"template"],node:[1,"node"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.templates.loadingTemplate,n.node)}),(function(t,e){t(e,0,0,e.component.node.getNodePadding())}))}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[],[[2,"tree-children",null],[2,"tree-children-no-padding",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](4,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.node.children),t(e,4,0,!n.node.children)}),(function(t,e){t(e,0,0,!0,e.component.node.options.levelPadding)}))}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](2,16384,null,0,M.a,[a.Renderer2,a.TemplateRef,a.ViewContainerRef],{animateSpeed:[0,"animateSpeed"],animateAcceleration:[1,"animateAcceleration"],isEnabled:[2,"isEnabled"],isOpen:[3,"isOpen"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.node.options.animateSpeed,n.node.options.animateAcceleration,n.node.options.animateExpand,n.node.isExpanded)}),null)}function B(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,z)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var Y=n("TNUL"),H=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function U(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[],null,null,null,u,o)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.node.parent,n.node.index)}),null)}function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[],[[8,"className",0],[2,"tree-node",null],[2,"tree-node-expanded",null],[2,"tree-node-collapsed",null],[2,"tree-node-leaf",null],[2,"tree-node-active",null],[2,"tree-node-focused",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,U)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,0,null,null,1,"tree-node-wrapper",[],null,null,null,A,N)),a["ɵdid"](4,49152,null,0,I.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"tree-node-children",[],null,null,null,B,j)),a["ɵdid"](6,49152,null,0,q.a,[],{node:[0,"node"],templates:[1,"templates"]},null),(t()(),a["ɵeld"](7,0,null,null,1,"tree-node-drop-slot",[],null,null,null,u,o)),a["ɵdid"](8,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===n.index),t(e,4,0,n.node,n.index,n.templates),t(e,6,0,n.node,n.templates),t(e,8,0,n.node.parent,n.node.index+1)}),(function(t,e){var n=e.component;t(e,0,0,n.node.getClass(),!0,n.node.isExpanded&&n.node.hasChildren,n.node.isCollapsed&&n.node.hasChildren,n.node.isLeaf,n.node.isActive,n.node.isFocused)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,W)),a["ɵdid"](2,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](3,16777216,null,null,2,null,null,null,null,null,null,null)),a["ɵdid"](4,540672,null,0,l.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](5,{$implicit:0,node:1,index:2,templates:3}),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!n.templates.treeNodeFullTemplate);var a=t(e,5,0,n.node,n.node,n.index,n.templates);t(e,4,0,a,n.templates.treeNodeFullTemplate)}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,K)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var Z=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function J(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node",[],null,null,null,$,H)),a["ɵdid"](1,49152,null,0,Y.a,[],{node:[0,"node"],index:[1,"index"],templates:[2,"templates"]},null)],(function(t,e){t(e,1,0,e.context.$implicit,e.context.index,e.component.templates)}),null)}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"div",[],[[4,"margin-top",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,J)),a["ɵdid"](3,278528,null,0,l.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.viewportNodes,n.trackNode)}),(function(t,e){t(e,1,0,e.component.marginTop)}))}function X(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,Q)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}var tt=n("dApe"),et=n("MP8s"),nt=n("HIU9"),at=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[],[[4,"height",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){t(e,1,0,e.component.getTotalHeight())}))}function it(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,rt)),a["ɵdid"](1,212992,null,0,d.a,[a.TemplateRef,a.ViewContainerRef],{treeMobxAutorun:[0,"treeMobxAutorun"]},null),a["ɵpod"](2,{dontDetach:0})],(function(t,e){var n=t(e,2,0,!0);t(e,1,0,n)}),null)}n("fxL3"),n.d(e,"a",(function(){return st})),n.d(e,"b",(function(){return lt}));var st=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tree-node-collection",[],null,null,null,X,Z)),a["ɵdid"](1,245760,null,0,k.a,[],{nodes:[0,"nodes"],treeModel:[1,"treeModel"],templates:[2,"templates"]},null),a["ɵpod"](2,{loadingTemplate:0,treeNodeTemplate:1,treeNodeWrapperTemplate:2,treeNodeFullTemplate:3})],(function(t,e){var n=e.component,a=n.treeModel.roots,r=n.treeModel,i=t(e,2,0,n.loadingTemplate,n.treeNodeTemplate,n.treeNodeWrapperTemplate,n.treeNodeFullTemplate);t(e,1,0,a,r,i)}),null)}function ut(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"tree-node-drop-slot",[["class","empty-tree-drop-slot"]],null,null,null,u,o)),a["ɵdid"](1,49152,null,0,s.a,[],{node:[0,"node"],dropIndex:[1,"dropIndex"]},null)],(function(t,e){t(e,1,0,e.component.treeModel.virtualRoot,0)}),null)}function lt(t){return a["ɵvid"](0,[a["ɵqud"](671088640,1,{viewportComponent:0}),(t()(),a["ɵeld"](1,0,null,null,7,"tree-viewport",[],null,null,null,it,at)),a["ɵprd"](512,null,tt.a,tt.a,[et.a]),a["ɵdid"](3,4440064,[[1,4],["viewport",4]],0,nt.a,[a.ElementRef,a.NgZone,tt.a],null,null),(t()(),a["ɵeld"](4,0,null,0,4,"div",[["class","angular-tree-component"]],[[2,"node-dragging",null],[2,"angular-tree-component-rtl",null]],null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](6,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ut)),a["ɵdid"](8,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0),t(e,6,0,n.treeModel.roots),t(e,8,0,n.treeModel.isEmptyTree())}),(function(t,e){var n=e.component;t(e,4,0,n.treeDraggedElement.isDragging(),n.treeModel.options.rtl)}))}},LQDL:function(t,e,n){var a,r,i=n("2oRo"),s=n("NC/Y"),o=i.process,u=o&&o.versions,l=u&&u.v8;l?r=(a=l.split("."))[0]+a[1]:s&&(!(a=s.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=s.match(/Chrome\/(\d+)/))&&(r=a[1]),t.exports=r&&+r},LRne:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("z+Ro"),r=n("yCtX"),i=n("jZKg");function s(...t){let e=t[t.length-1];return Object(a.a)(e)?(t.pop(),Object(i.a)(t,e)):Object(r.a)(t)}},LXxW:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}},LceX:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return i})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return o})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return d}));var a=n("sne2");n("eTJe"),n("n/D3"),n("V3my"),n("ZEkX");class r{}const i={breadcrumbs:"Users"},s={breadcrumbs:a.a.CREATE},o={breadcrumbs:a.a.EDIT},u={breadcrumbs:"Roles"},l={breadcrumbs:a.a.CREATE},d={breadcrumbs:a.a.EDIT};class c{}},LcsW:function(t,e,n){var a=n("kekF")(Object.getPrototypeOf,Object);t.exports=a},Lhse:function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}n.d(e,"a",(function(){return r}));const r=a()},Loxo:function(t,e,n){!function(t){"use strict";t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("wd/R"))},LqlI:function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return d})),n.d(e,"e",(function(){return h})),n.d(e,"f",(function(){return u}));var a=n("8Y7J"),r=n("hpHm"),i=n("z/SZ"),s=n("2uy1");class o{constructor(){this.hide=Function,this.setClass=Function}}class u{}const l={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,class:"",animated:!0,initialState:{}};class d{constructor(t,e,n){this._element=e,this._renderer=n,this.isShown=!1,this.isModalHiding=!1,this.clickStartedInContent=!1,this.config=Object.assign({},t)}ngOnInit(){this.isAnimated&&this._renderer.addClass(this._element.nativeElement,"fade"),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(()=>{this.isShown=!0,this._renderer.addClass(this._element.nativeElement,Object(r.d)()?"in":"show")},this.isAnimated?150:0),document&&document.body&&(1===this.bsModalService.getModalsCount()&&(this.bsModalService.checkScrollbar(),this.bsModalService.setScrollbar()),this._renderer.addClass(document.body,"modal-open")),this._element.nativeElement&&this._element.nativeElement.focus()}onClickStarted(t){this.clickStartedInContent=t.target!==this._element.nativeElement}onClickStop(t){this.config.ignoreBackdropClick||"static"===this.config.backdrop||t.target!==this._element.nativeElement||this.clickStartedInContent?this.clickStartedInContent=!1:(this.bsModalService.setDismissReason("backdrop-click"),this.hide())}onEsc(t){this.isShown&&(27!==t.keyCode&&"Escape"!==t.key||t.preventDefault(),this.config.keyboard&&this.level===this.bsModalService.getModalsCount()&&(this.bsModalService.setDismissReason("esc"),this.hide()))}ngOnDestroy(){this.isShown&&this.hide()}hide(){!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,Object(r.d)()?"in":"show"),setTimeout(()=>{this.isShown=!1,document&&document.body&&1===this.bsModalService.getModalsCount()&&this._renderer.removeClass(document.body,"modal-open"),this.bsModalService.hide(this.level),this.isModalHiding=!1},this.isAnimated?300:0))}}class c{constructor(t,e){this._isShown=!1,this.element=t,this.renderer=e}get isAnimated(){return this._isAnimated}set isAnimated(t){this._isAnimated=t}get isShown(){return this._isShown}set isShown(t){this._isShown=t,t?this.renderer.addClass(this.element.nativeElement,"in"):this.renderer.removeClass(this.element.nativeElement,"in"),Object(r.d)()||(t?this.renderer.addClass(this.element.nativeElement,"show"):this.renderer.removeClass(this.element.nativeElement,"show"))}ngOnInit(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,"fade"),r.b.reflow(this.element.nativeElement)),this.isShown=!0}}class f{constructor(t,e){this.clf=e,this.config=l,this.onShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.modalsCount=0,this.lastDismissReason="",this.loaders=[],this._backdropLoader=this.clf.createLoader(null,null,null),this._renderer=t.createRenderer(null,null)}show(t,e){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},l,e),this._showBackdrop(),this.lastDismissReason=null,this._showModal(t)}hide(t){1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=this.modalsCount>=1?this.modalsCount-1:0,setTimeout(()=>{this._hideModal(t),this.removeLoaders(t)},this.config.animated?150:0)}_showBackdrop(){const t=this.config.backdrop||"static"===this.config.backdrop,e=!this.backdropRef||!this.backdropRef.instance.isShown;1===this.modalsCount&&(this.removeBackdrop(),t&&e&&(this._backdropLoader.attach(c).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))}_hideBackdrop(){this.backdropRef&&(this.backdropRef.instance.isShown=!1,setTimeout(()=>this.removeBackdrop(),this.config.animated?150:0))}_showModal(t){const e=this.loaders[this.loaders.length-1],n=new o,a=e.provide({provide:u,useValue:this.config}).provide({provide:o,useValue:n}).attach(d).to("body").show({content:t,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return a.instance.level=this.getModalsCount(),n.hide=()=>{setTimeout(()=>a.instance.hide(),this.config.animated?300:0)},n.content=e.getInnerComponent()||null,n.setClass=t=>{a.instance.config.class=t},n}_hideModal(t){const e=this.loaders[t-1];e&&e.hide()}getModalsCount(){return this.modalsCount}setDismissReason(t){this.lastDismissReason=t}removeBackdrop(){this._backdropLoader.hide(),this.backdropRef=null}checkScrollbar(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()}setScrollbar(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=`${this.originalBodyPadding+this.scrollbarWidth}px`))}resetScrollbar(){document.body.style.paddingRight=`${this.originalBodyPadding}px`}getScrollbarWidth(){const t=this._renderer.createElement("div");this._renderer.addClass(t,"modal-scrollbar-measure"),this._renderer.appendChild(document.body,t);const e=t.offsetWidth-t.clientWidth;return this._renderer.removeChild(document.body,t),e}_createLoaders(){const t=this.clf.createLoader(null,null,null);this.copyEvent(t.onBeforeShow,this.onShow),this.copyEvent(t.onShown,this.onShown),this.copyEvent(t.onBeforeHide,this.onHide),this.copyEvent(t.onHidden,this.onHidden),this.loaders.push(t)}removeLoaders(t){this.loaders.splice(t-1,1),this.loaders.forEach((t,e)=>{t.instance.level=e+1})}copyEvent(t,e){t.subscribe(()=>{e.emit(this.lastDismissReason)})}}class h{static forRoot(){return{ngModule:h,providers:[f,i.a,s.a]}}static forChild(){return{ngModule:h,providers:[f,i.a,s.a]}}}},LsHQ:function(t,e,n){var a=n("EA7m"),r=n("mv/X");t.exports=function(t){return a((function(e,n){var a=-1,i=n.length,s=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(s=t.length>3&&"function"==typeof s?(i--,s):void 0,o&&r(n[0],n[1],o)&&(s=i<3?void 0:s,i=1),e=Object(e);++a<i;){var u=n[a];u&&t(e,u,a,s)}return e}))}},LvDl:function(t,e,n){(function(t){var a;(function(){var r="Expected a function",i="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],o="[object Arguments]",u="[object Array]",l="[object Boolean]",d="[object Date]",c="[object Error]",f="[object Function]",h="[object GeneratorFunction]",g="[object Map]",p="[object Number]",b="[object Object]",m="[object RegExp]",y="[object Set]",v="[object String]",x="[object Symbol]",_="[object WeakMap]",T="[object ArrayBuffer]",O="[object DataView]",w="[object Float32Array]",S="[object Float64Array]",I="[object Int8Array]",N="[object Int16Array]",C="[object Int32Array]",R="[object Uint8Array]",A="[object Uint16Array]",k="[object Uint32Array]",E=/\b__p \+= '';/g,L=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,M=/[&<>"']/g,q=RegExp(P.source),j=RegExp(M.source),F=/<%-([\s\S]+?)%>/g,G=/<%([\s\S]+?)%>/g,V=/<%=([\s\S]+?)%>/g,z=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,B=/^\w*$/,Y=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,H=/[\\^$.*+?()[\]{}|]/g,U=RegExp(H.source),W=/^\s+|\s+$/g,K=/^\s+/,$=/\s+$/,Z=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,J=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,X=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,at=/^[-+]0x[0-9a-f]+$/i,rt=/^0b[01]+$/i,it=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,ot=/^(?:0|[1-9]\d*)$/,ut=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,dt=/['\n\r\u2028\u2029\\]/g,ct="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ft="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ht="["+ft+"]",gt="["+ct+"]",pt="\\d+",bt="[a-z\\xdf-\\xf6\\xf8-\\xff]",mt="[^\\ud800-\\udfff"+ft+pt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",yt="\\ud83c[\\udffb-\\udfff]",vt="[^\\ud800-\\udfff]",xt="(?:\\ud83c[\\udde6-\\uddff]){2}",_t="[\\ud800-\\udbff][\\udc00-\\udfff]",Tt="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ot="(?:"+bt+"|"+mt+")",wt="(?:"+Tt+"|"+mt+")",St="(?:"+gt+"|"+yt+")?",It="[\\ufe0e\\ufe0f]?"+St+"(?:\\u200d(?:"+[vt,xt,_t].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*",Nt="(?:"+["[\\u2700-\\u27bf]",xt,_t].join("|")+")"+It,Ct="(?:"+[vt+gt+"?",gt,xt,_t,"[\\ud800-\\udfff]"].join("|")+")",Rt=RegExp("['’]","g"),At=RegExp(gt,"g"),kt=RegExp(yt+"(?="+yt+")|"+Ct+It,"g"),Et=RegExp([Tt+"?"+bt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ht,Tt,"$"].join("|")+")",wt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ht,Tt+Ot,"$"].join("|")+")",Tt+"?"+Ot+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Tt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",pt,Nt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff"+ct+"\\ufe0e\\ufe0f]"),Dt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Pt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Mt=-1,qt={};qt[w]=qt[S]=qt[I]=qt[N]=qt[C]=qt[R]=qt["[object Uint8ClampedArray]"]=qt[A]=qt[k]=!0,qt[o]=qt[u]=qt[T]=qt[l]=qt[O]=qt[d]=qt[c]=qt[f]=qt[g]=qt[p]=qt[b]=qt[m]=qt[y]=qt[v]=qt[_]=!1;var jt={};jt[o]=jt[u]=jt[T]=jt[O]=jt[l]=jt[d]=jt[w]=jt[S]=jt[I]=jt[N]=jt[C]=jt[g]=jt[p]=jt[b]=jt[m]=jt[y]=jt[v]=jt[x]=jt[R]=jt["[object Uint8ClampedArray]"]=jt[A]=jt[k]=!0,jt[c]=jt[f]=jt[_]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Gt=parseFloat,Vt=parseInt,zt="object"==typeof global&&global&&global.Object===Object&&global,Bt="object"==typeof self&&self&&self.Object===Object&&self,Yt=zt||Bt||Function("return this")(),Ht=e&&!e.nodeType&&e,Ut=Ht&&"object"==typeof t&&t&&!t.nodeType&&t,Wt=Ut&&Ut.exports===Ht,Kt=Wt&&zt.process,$t=function(){try{return Ut&&Ut.require&&Ut.require("util").types||Kt&&Kt.binding&&Kt.binding("util")}catch(t){}}(),Zt=$t&&$t.isArrayBuffer,Jt=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,te=$t&&$t.isSet,ee=$t&&$t.isTypedArray;function ne(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ae(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var s=t[r];e(a,s,n(s),t)}return a}function re(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function ie(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function se(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}function oe(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var s=t[n];e(s,n,t)&&(i[r++]=s)}return i}function ue(t,e){return!(null==t||!t.length)&&ye(t,e,0)>-1}function le(t,e,n){for(var a=-1,r=null==t?0:t.length;++a<r;)if(n(e,t[a]))return!0;return!1}function de(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}function ce(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function fe(t,e,n,a){var r=-1,i=null==t?0:t.length;for(a&&i&&(n=t[++r]);++r<i;)n=e(n,t[r],r,t);return n}function he(t,e,n,a){var r=null==t?0:t.length;for(a&&r&&(n=t[--r]);r--;)n=e(n,t[r],r,t);return n}function ge(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}var pe=Te("length");function be(t,e,n){var a;return n(t,(function(t,n,r){if(e(t,n,r))return a=n,!1})),a}function me(t,e,n,a){for(var r=t.length,i=n+(a?1:-1);a?i--:++i<r;)if(e(t[i],i,t))return i;return-1}function ye(t,e,n){return e==e?function(t,e,n){for(var a=n-1,r=t.length;++a<r;)if(t[a]===e)return a;return-1}(t,e,n):me(t,xe,n)}function ve(t,e,n,a){for(var r=n-1,i=t.length;++r<i;)if(a(t[r],e))return r;return-1}function xe(t){return t!=t}function _e(t,e){var n=null==t?0:t.length;return n?Se(t,e)/n:NaN}function Te(t){return function(e){return null==e?void 0:e[t]}}function Oe(t){return function(e){return null==t?void 0:t[e]}}function we(t,e,n,a,r){return r(t,(function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)})),n}function Se(t,e){for(var n,a=-1,r=t.length;++a<r;){var i=e(t[a]);void 0!==i&&(n=void 0===n?i:n+i)}return n}function Ie(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function Ne(t){return function(e){return t(e)}}function Ce(t,e){return de(e,(function(e){return t[e]}))}function Re(t,e){return t.has(e)}function Ae(t,e){for(var n=-1,a=t.length;++n<a&&ye(e,t[n],0)>-1;);return n}function ke(t,e){for(var n=t.length;n--&&ye(e,t[n],0)>-1;);return n}function Ee(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}var Le=Oe({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),De=Oe({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function Pe(t){return"\\"+Ft[t]}function Me(t){return Lt.test(t)}function qe(t){var e=-1,n=Array(t.size);return t.forEach((function(t,a){n[++e]=[a,t]})),n}function je(t,e){return function(n){return t(e(n))}}function Fe(t,e){for(var n=-1,a=t.length,r=0,s=[];++n<a;){var o=t[n];o!==e&&o!==i||(t[n]=i,s[r++]=n)}return s}function Ge(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Ve(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function ze(t){return Me(t)?function(t){for(var e=kt.lastIndex=0;kt.test(t);)++e;return e}(t):pe(t)}function Be(t){return Me(t)?function(t){return t.match(kt)||[]}(t):function(t){return t.split("")}(t)}var Ye=Oe({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),He=function t(e){var n,a=(e=null==e?Yt:He.defaults(Yt.Object(),e,He.pick(Yt,Pt))).Array,ct=e.Date,ft=e.Error,ht=e.Function,gt=e.Math,pt=e.Object,bt=e.RegExp,mt=e.String,yt=e.TypeError,vt=a.prototype,xt=pt.prototype,_t=e["__core-js_shared__"],Tt=ht.prototype.toString,Ot=xt.hasOwnProperty,wt=0,St=(n=/[^.]+$/.exec(_t&&_t.keys&&_t.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",It=xt.toString,Nt=Tt.call(pt),Ct=Yt._,kt=bt("^"+Tt.call(Ot).replace(H,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Lt=Wt?e.Buffer:void 0,Ft=e.Symbol,zt=e.Uint8Array,Bt=Lt?Lt.allocUnsafe:void 0,Ht=je(pt.getPrototypeOf,pt),Ut=pt.create,Kt=xt.propertyIsEnumerable,$t=vt.splice,pe=Ft?Ft.isConcatSpreadable:void 0,Oe=Ft?Ft.iterator:void 0,Ue=Ft?Ft.toStringTag:void 0,We=function(){try{var t=Jr(pt,"defineProperty");return t({},"",{}),t}catch(e){}}(),Ke=e.clearTimeout!==Yt.clearTimeout&&e.clearTimeout,$e=ct&&ct.now!==Yt.Date.now&&ct.now,Ze=e.setTimeout!==Yt.setTimeout&&e.setTimeout,Je=gt.ceil,Qe=gt.floor,Xe=pt.getOwnPropertySymbols,tn=Lt?Lt.isBuffer:void 0,en=e.isFinite,nn=vt.join,an=je(pt.keys,pt),rn=gt.max,sn=gt.min,on=ct.now,un=e.parseInt,ln=gt.random,dn=vt.reverse,cn=Jr(e,"DataView"),fn=Jr(e,"Map"),hn=Jr(e,"Promise"),gn=Jr(e,"Set"),pn=Jr(e,"WeakMap"),bn=Jr(pt,"create"),mn=pn&&new pn,yn={},vn=Ii(cn),xn=Ii(fn),_n=Ii(hn),Tn=Ii(gn),On=Ii(pn),wn=Ft?Ft.prototype:void 0,Sn=wn?wn.valueOf:void 0,In=wn?wn.toString:void 0;function Nn(t){if(Bs(t)&&!Es(t)&&!(t instanceof kn)){if(t instanceof An)return t;if(Ot.call(t,"__wrapped__"))return Ni(t)}return new An(t)}var Cn=function(){function t(){}return function(e){if(!zs(e))return{};if(Ut)return Ut(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Rn(){}function An(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function kn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function En(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Dn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function Pn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Dn;++e<n;)this.add(t[e])}function Mn(t){var e=this.__data__=new Ln(t);this.size=e.size}function qn(t,e){var n=Es(t),a=!n&&ks(t),r=!n&&!a&&Ms(t),i=!n&&!a&&!r&&Js(t),s=n||a||r||i,o=s?Ie(t.length,mt):[],u=o.length;for(var l in t)!e&&!Ot.call(t,l)||s&&("length"==l||r&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||ri(l,u))||o.push(l);return o}function jn(t){var e=t.length;return e?t[Da(0,e-1)]:void 0}function Fn(t,e){return _i(pr(t),Kn(e,0,t.length))}function Gn(t){return _i(pr(t))}function Vn(t,e,n){(void 0===n||Cs(t[e],n))&&(void 0!==n||e in t)||Un(t,e,n)}function zn(t,e,n){var a=t[e];Ot.call(t,e)&&Cs(a,n)&&(void 0!==n||e in t)||Un(t,e,n)}function Bn(t,e){for(var n=t.length;n--;)if(Cs(t[n][0],e))return n;return-1}function Yn(t,e,n,a){return Xn(t,(function(t,r,i){e(a,t,n(t),i)})),a}function Hn(t,e){return t&&br(e,xo(e),t)}function Un(t,e,n){"__proto__"==e&&We?We(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Wn(t,e){for(var n=-1,r=e.length,i=a(r),s=null==t;++n<r;)i[n]=s?void 0:po(t,e[n]);return i}function Kn(t,e,n){return t==t&&(void 0!==n&&(t=t<=n?t:n),void 0!==e&&(t=t>=e?t:e)),t}function $n(t,e,n,a,r,i){var s,u=1&e,c=2&e,_=4&e;if(n&&(s=r?n(t,a,r,i):n(t)),void 0!==s)return s;if(!zs(t))return t;var E=Es(t);if(E){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&Ot.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!u)return pr(t,s)}else{var L=ti(t),D=L==f||L==h;if(Ms(t))return lr(t,u);if(L==b||L==o||D&&!r){if(s=c||D?{}:ni(t),!u)return c?function(t,e){return br(t,Xr(t),e)}(t,function(t,e){return t&&br(e,_o(e),t)}(s,t)):function(t,e){return br(t,Qr(t),e)}(t,Hn(s,t))}else{if(!jt[L])return r?t:{};s=function(t,e,n){var a=t.constructor;switch(e){case T:return dr(t);case l:case d:return new a(+t);case O:return function(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case w:case S:case I:case N:case C:case R:case"[object Uint8ClampedArray]":case A:case k:return cr(t,n);case g:return new a;case p:case v:return new a(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new a;case x:return Sn?pt(Sn.call(t)):{}}}(t,L,u)}}i||(i=new Mn);var P=i.get(t);if(P)return P;i.set(t,s),Ks(t)?t.forEach((function(a){s.add($n(a,e,n,a,t,i))})):Ys(t)&&t.forEach((function(a,r){s.set(r,$n(a,e,n,r,t,i))}));var M=E?void 0:(_?c?Yr:Br:c?_o:xo)(t);return re(M||t,(function(a,r){M&&(a=t[r=a]),zn(s,r,$n(a,e,n,r,t,i))})),s}function Zn(t,e,n){var a=n.length;if(null==t)return!a;for(t=pt(t);a--;){var r=n[a],i=t[r];if(void 0===i&&!(r in t)||!(0,e[r])(i))return!1}return!0}function Jn(t,e,n){if("function"!=typeof t)throw new yt(r);return mi((function(){t.apply(void 0,n)}),e)}function Qn(t,e,n,a){var r=-1,i=ue,s=!0,o=t.length,u=[],l=e.length;if(!o)return u;n&&(e=de(e,Ne(n))),a?(i=le,s=!1):e.length>=200&&(i=Re,s=!1,e=new Pn(e));t:for(;++r<o;){var d=t[r],c=null==n?d:n(d);if(d=a||0!==d?d:0,s&&c==c){for(var f=l;f--;)if(e[f]===c)continue t;u.push(d)}else i(e,c,a)||u.push(d)}return u}Nn.templateSettings={escape:F,evaluate:G,interpolate:V,variable:"",imports:{_:Nn}},(Nn.prototype=Rn.prototype).constructor=Nn,(An.prototype=Cn(Rn.prototype)).constructor=An,(kn.prototype=Cn(Rn.prototype)).constructor=kn,En.prototype.clear=function(){this.__data__=bn?bn(null):{},this.size=0},En.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},En.prototype.get=function(t){var e=this.__data__;if(bn){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return Ot.call(e,t)?e[t]:void 0},En.prototype.has=function(t){var e=this.__data__;return bn?void 0!==e[t]:Ot.call(e,t)},En.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=bn&&void 0===e?"__lodash_hash_undefined__":e,this},Ln.prototype.clear=function(){this.__data__=[],this.size=0},Ln.prototype.delete=function(t){var e=this.__data__,n=Bn(e,t);return!(n<0||(n==e.length-1?e.pop():$t.call(e,n,1),--this.size,0))},Ln.prototype.get=function(t){var e=this.__data__,n=Bn(e,t);return n<0?void 0:e[n][1]},Ln.prototype.has=function(t){return Bn(this.__data__,t)>-1},Ln.prototype.set=function(t,e){var n=this.__data__,a=Bn(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new En,map:new(fn||Ln),string:new En}},Dn.prototype.delete=function(t){var e=$r(this,t).delete(t);return this.size-=e?1:0,e},Dn.prototype.get=function(t){return $r(this,t).get(t)},Dn.prototype.has=function(t){return $r(this,t).has(t)},Dn.prototype.set=function(t,e){var n=$r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},Pn.prototype.add=Pn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.clear=function(){this.__data__=new Ln,this.size=0},Mn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mn.prototype.get=function(t){return this.__data__.get(t)},Mn.prototype.has=function(t){return this.__data__.has(t)},Mn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Ln){var a=n.__data__;if(!fn||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new Dn(a)}return n.set(t,e),this.size=n.size,this};var Xn=vr(oa),ta=vr(ua,!0);function ea(t,e){var n=!0;return Xn(t,(function(t,a,r){return n=!!e(t,a,r)})),n}function na(t,e,n){for(var a=-1,r=t.length;++a<r;){var i=t[a],s=e(i);if(null!=s&&(void 0===o?s==s&&!Zs(s):n(s,o)))var o=s,u=i}return u}function aa(t,e){var n=[];return Xn(t,(function(t,a,r){e(t,a,r)&&n.push(t)})),n}function ra(t,e,n,a,r){var i=-1,s=t.length;for(n||(n=ai),r||(r=[]);++i<s;){var o=t[i];e>0&&n(o)?e>1?ra(o,e-1,n,a,r):ce(r,o):a||(r[r.length]=o)}return r}var ia=xr(),sa=xr(!0);function oa(t,e){return t&&ia(t,e,xo)}function ua(t,e){return t&&sa(t,e,xo)}function la(t,e){return oe(e,(function(e){return Fs(t[e])}))}function da(t,e){for(var n=0,a=(e=ir(e,t)).length;null!=t&&n<a;)t=t[Si(e[n++])];return n&&n==a?t:void 0}function ca(t,e,n){var a=e(t);return Es(t)?a:ce(a,n(t))}function fa(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Ue&&Ue in pt(t)?function(t){var e=Ot.call(t,Ue),n=t[Ue];try{t[Ue]=void 0;var a=!0}catch(i){}var r=It.call(t);return a&&(e?t[Ue]=n:delete t[Ue]),r}(t):function(t){return It.call(t)}(t)}function ha(t,e){return t>e}function ga(t,e){return null!=t&&Ot.call(t,e)}function pa(t,e){return null!=t&&e in pt(t)}function ba(t,e,n){for(var r=n?le:ue,i=t[0].length,s=t.length,o=s,u=a(s),l=1/0,d=[];o--;){var c=t[o];o&&e&&(c=de(c,Ne(e))),l=sn(c.length,l),u[o]=!n&&(e||i>=120&&c.length>=120)?new Pn(o&&c):void 0}c=t[0];var f=-1,h=u[0];t:for(;++f<i&&d.length<l;){var g=c[f],p=e?e(g):g;if(g=n||0!==g?g:0,!(h?Re(h,p):r(d,p,n))){for(o=s;--o;){var b=u[o];if(!(b?Re(b,p):r(t[o],p,n)))continue t}h&&h.push(p),d.push(g)}}return d}function ma(t,e,n){var a=null==(t=hi(t,e=ir(e,t)))?t:t[Si(ji(e))];return null==a?void 0:ne(a,t,n)}function ya(t){return Bs(t)&&fa(t)==o}function va(t,e,n,a,r){return t===e||(null==t||null==e||!Bs(t)&&!Bs(e)?t!=t&&e!=e:function(t,e,n,a,r,i){var s=Es(t),f=Es(e),h=s?u:ti(t),_=f?u:ti(e),w=(h=h==o?b:h)==b,S=(_=_==o?b:_)==b,I=h==_;if(I&&Ms(t)){if(!Ms(e))return!1;s=!0,w=!1}if(I&&!w)return i||(i=new Mn),s||Js(t)?Vr(t,e,n,a,r,i):function(t,e,n,a,r,i,s){switch(n){case O:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case T:return!(t.byteLength!=e.byteLength||!i(new zt(t),new zt(e)));case l:case d:case p:return Cs(+t,+e);case c:return t.name==e.name&&t.message==e.message;case m:case v:return t==e+"";case g:var o=qe;case y:if(o||(o=Ge),t.size!=e.size&&!(1&a))return!1;var u=s.get(t);if(u)return u==e;a|=2,s.set(t,e);var f=Vr(o(t),o(e),a,r,i,s);return s.delete(t),f;case x:if(Sn)return Sn.call(t)==Sn.call(e)}return!1}(t,e,h,n,a,r,i);if(!(1&n)){var N=w&&Ot.call(t,"__wrapped__"),C=S&&Ot.call(e,"__wrapped__");if(N||C){var R=N?t.value():t,A=C?e.value():e;return i||(i=new Mn),r(R,A,n,a,i)}}return!!I&&(i||(i=new Mn),function(t,e,n,a,r,i){var s=1&n,o=Br(t),u=o.length;if(u!=Br(e).length&&!s)return!1;for(var l=u;l--;){var d=o[l];if(!(s?d in e:Ot.call(e,d)))return!1}var c=i.get(t);if(c&&i.get(e))return c==e;var f=!0;i.set(t,e),i.set(e,t);for(var h=s;++l<u;){var g=t[d=o[l]],p=e[d];if(a)var b=s?a(p,g,d,e,t,i):a(g,p,d,t,e,i);if(!(void 0===b?g===p||r(g,p,n,a,i):b)){f=!1;break}h||(h="constructor"==d)}if(f&&!h){var m=t.constructor,y=e.constructor;m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y)&&(f=!1)}return i.delete(t),i.delete(e),f}(t,e,n,a,r,i))}(t,e,n,a,va,r))}function xa(t,e,n,a){var r=n.length,i=r,s=!a;if(null==t)return!i;for(t=pt(t);r--;){var o=n[r];if(s&&o[2]?o[1]!==t[o[0]]:!(o[0]in t))return!1}for(;++r<i;){var u=(o=n[r])[0],l=t[u],d=o[1];if(s&&o[2]){if(void 0===l&&!(u in t))return!1}else{var c=new Mn;if(a)var f=a(l,d,u,t,e,c);if(!(void 0===f?va(d,l,3,a,c):f))return!1}}return!0}function _a(t){return!(!zs(t)||(e=t,St&&St in e))&&(Fs(t)?kt:it).test(Ii(t));var e}function Ta(t){return"function"==typeof t?t:null==t?Uo:"object"==typeof t?Es(t)?Na(t[0],t[1]):Ia(t):eu(t)}function Oa(t){if(!li(t))return an(t);var e=[];for(var n in pt(t))Ot.call(t,n)&&"constructor"!=n&&e.push(n);return e}function wa(t,e){return t<e}function Sa(t,e){var n=-1,r=Ds(t)?a(t.length):[];return Xn(t,(function(t,a,i){r[++n]=e(t,a,i)})),r}function Ia(t){var e=Zr(t);return 1==e.length&&e[0][2]?ci(e[0][0],e[0][1]):function(n){return n===t||xa(n,t,e)}}function Na(t,e){return si(t)&&di(e)?ci(Si(t),e):function(n){var a=po(n,t);return void 0===a&&a===e?bo(n,t):va(e,a,3)}}function Ca(t,e,n,a,r){t!==e&&ia(e,(function(i,s){if(r||(r=new Mn),zs(i))!function(t,e,n,a,r,i,s){var o=pi(t,n),u=pi(e,n),l=s.get(u);if(l)Vn(t,n,l);else{var d=i?i(o,u,n+"",t,e,s):void 0,c=void 0===d;if(c){var f=Es(u),h=!f&&Ms(u),g=!f&&!h&&Js(u);d=u,f||h||g?Es(o)?d=o:Ps(o)?d=pr(o):h?(c=!1,d=lr(u,!0)):g?(c=!1,d=cr(u,!0)):d=[]:Us(u)||ks(u)?(d=o,ks(o)?d=io(o):zs(o)&&!Fs(o)||(d=ni(u))):c=!1}c&&(s.set(u,d),r(d,u,a,i,s),s.delete(u)),Vn(t,n,d)}}(t,e,s,n,Ca,a,r);else{var o=a?a(pi(t,s),i,s+"",t,e,r):void 0;void 0===o&&(o=i),Vn(t,s,o)}}),_o)}function Ra(t,e){var n=t.length;if(n)return ri(e+=e<0?n:0,n)?t[e]:void 0}function Aa(t,e,n){var a=-1;return e=de(e.length?e:[Uo],Ne(Kr())),function(t,e){var a=t.length;for(t.sort((function(t,e){return function(t,e,n){for(var a=-1,r=t.criteria,i=e.criteria,s=r.length,o=n.length;++a<s;){var u=fr(r[a],i[a]);if(u)return a>=o?u:u*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)}));a--;)t[a]=t[a].value;return t}(Sa(t,(function(t,n,r){return{criteria:de(e,(function(e){return e(t)})),index:++a,value:t}})))}function ka(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var s=e[a],o=da(t,s);n(o,s)&&Fa(i,ir(s,t),o)}return i}function Ea(t,e,n,a){var r=a?ve:ye,i=-1,s=e.length,o=t;for(t===e&&(e=pr(e)),n&&(o=de(t,Ne(n)));++i<s;)for(var u=0,l=e[i],d=n?n(l):l;(u=r(o,d,u,a))>-1;)o!==t&&$t.call(o,u,1),$t.call(t,u,1);return t}function La(t,e){for(var n=t?e.length:0,a=n-1;n--;){var r=e[n];if(n==a||r!==i){var i=r;ri(r)?$t.call(t,r,1):Ja(t,r)}}return t}function Da(t,e){return t+Qe(ln()*(e-t+1))}function Pa(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=Qe(e/2))&&(t+=t)}while(e);return n}function Ma(t,e){return yi(fi(t,e,Uo),t+"")}function qa(t){return jn(Ro(t))}function ja(t,e){var n=Ro(t);return _i(n,Kn(e,0,n.length))}function Fa(t,e,n,a){if(!zs(t))return t;for(var r=-1,i=(e=ir(e,t)).length,s=i-1,o=t;null!=o&&++r<i;){var u=Si(e[r]),l=n;if(r!=s){var d=o[u];void 0===(l=a?a(d,u,o):void 0)&&(l=zs(d)?d:ri(e[r+1])?[]:{})}zn(o,u,l),o=o[u]}return t}var Ga=mn?function(t,e){return mn.set(t,e),t}:Uo,Va=We?function(t,e){return We(t,"toString",{configurable:!0,enumerable:!1,value:Bo(e),writable:!0})}:Uo;function za(t){return _i(Ro(t))}function Ba(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=a(i);++r<i;)s[r]=t[r+e];return s}function Ya(t,e){var n;return Xn(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}function Ha(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;a<r;){var i=a+r>>>1,s=t[i];null!==s&&!Zs(s)&&(n?s<=e:s<e)?a=i+1:r=i}return r}return Ua(t,e,Uo,n)}function Ua(t,e,n,a){e=n(e);for(var r=0,i=null==t?0:t.length,s=e!=e,o=null===e,u=Zs(e),l=void 0===e;r<i;){var d=Qe((r+i)/2),c=n(t[d]),f=void 0!==c,h=null===c,g=c==c,p=Zs(c);if(s)var b=a||g;else b=l?g&&(a||f):o?g&&f&&(a||!h):u?g&&f&&!h&&(a||!p):!h&&!p&&(a?c<=e:c<e);b?r=d+1:i=d}return sn(i,4294967294)}function Wa(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var s=t[n],o=e?e(s):s;if(!n||!Cs(o,u)){var u=o;i[r++]=0===s?0:s}}return i}function Ka(t){return"number"==typeof t?t:Zs(t)?NaN:+t}function $a(t){if("string"==typeof t)return t;if(Es(t))return de(t,$a)+"";if(Zs(t))return In?In.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Za(t,e,n){var a=-1,r=ue,i=t.length,s=!0,o=[],u=o;if(n)s=!1,r=le;else if(i>=200){var l=e?null:Pr(t);if(l)return Ge(l);s=!1,r=Re,u=new Pn}else u=e?[]:o;t:for(;++a<i;){var d=t[a],c=e?e(d):d;if(d=n||0!==d?d:0,s&&c==c){for(var f=u.length;f--;)if(u[f]===c)continue t;e&&u.push(c),o.push(d)}else r(u,c,n)||(u!==o&&u.push(c),o.push(d))}return o}function Ja(t,e){return null==(t=hi(t,e=ir(e,t)))||delete t[Si(ji(e))]}function Qa(t,e,n,a){return Fa(t,e,n(da(t,e)),a)}function Xa(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?Ba(t,a?0:i,a?i+1:r):Ba(t,a?i+1:0,a?r:i)}function tr(t,e){var n=t;return n instanceof kn&&(n=n.value()),fe(e,(function(t,e){return e.func.apply(e.thisArg,ce([t],e.args))}),n)}function er(t,e,n){var r=t.length;if(r<2)return r?Za(t[0]):[];for(var i=-1,s=a(r);++i<r;)for(var o=t[i],u=-1;++u<r;)u!=i&&(s[i]=Qn(s[i]||o,t[u],e,n));return Za(ra(s,1),e,n)}function nr(t,e,n){for(var a=-1,r=t.length,i=e.length,s={};++a<r;)n(s,t[a],a<i?e[a]:void 0);return s}function ar(t){return Ps(t)?t:[]}function rr(t){return"function"==typeof t?t:Uo}function ir(t,e){return Es(t)?t:si(t,e)?[t]:wi(so(t))}var sr=Ma;function or(t,e,n){var a=t.length;return n=void 0===n?a:n,!e&&n>=a?t:Ba(t,e,n)}var ur=Ke||function(t){return Yt.clearTimeout(t)};function lr(t,e){if(e)return t.slice();var n=t.length,a=Bt?Bt(n):new t.constructor(n);return t.copy(a),a}function dr(t){var e=new t.constructor(t.byteLength);return new zt(e).set(new zt(t)),e}function cr(t,e){var n=e?dr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function fr(t,e){if(t!==e){var n=void 0!==t,a=null===t,r=t==t,i=Zs(t),s=void 0!==e,o=null===e,u=e==e,l=Zs(e);if(!o&&!l&&!i&&t>e||i&&s&&u&&!o&&!l||a&&s&&u||!n&&u||!r)return 1;if(!a&&!i&&!l&&t<e||l&&n&&r&&!a&&!i||o&&n&&r||!s&&r||!u)return-1}return 0}function hr(t,e,n,r){for(var i=-1,s=t.length,o=n.length,u=-1,l=e.length,d=rn(s-o,0),c=a(l+d),f=!r;++u<l;)c[u]=e[u];for(;++i<o;)(f||i<s)&&(c[n[i]]=t[i]);for(;d--;)c[u++]=t[i++];return c}function gr(t,e,n,r){for(var i=-1,s=t.length,o=-1,u=n.length,l=-1,d=e.length,c=rn(s-u,0),f=a(c+d),h=!r;++i<c;)f[i]=t[i];for(var g=i;++l<d;)f[g+l]=e[l];for(;++o<u;)(h||i<s)&&(f[g+n[o]]=t[i++]);return f}function pr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function br(t,e,n,a){var r=!n;n||(n={});for(var i=-1,s=e.length;++i<s;){var o=e[i],u=a?a(n[o],t[o],o,n,t):void 0;void 0===u&&(u=t[o]),r?Un(n,o,u):zn(n,o,u)}return n}function mr(t,e){return function(n,a){var r=Es(n)?ae:Yn,i=e?e():{};return r(n,t,Kr(a,2),i)}}function yr(t){return Ma((function(e,n){var a=-1,r=n.length,i=r>1?n[r-1]:void 0,s=r>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(r--,i):void 0,s&&ii(n[0],n[1],s)&&(i=r<3?void 0:i,r=1),e=pt(e);++a<r;){var o=n[a];o&&t(e,o,a,i)}return e}))}function vr(t,e){return function(n,a){if(null==n)return n;if(!Ds(n))return t(n,a);for(var r=n.length,i=e?r:-1,s=pt(n);(e?i--:++i<r)&&!1!==a(s[i],i,s););return n}}function xr(t){return function(e,n,a){for(var r=-1,i=pt(e),s=a(e),o=s.length;o--;){var u=s[t?o:++r];if(!1===n(i[u],u,i))break}return e}}function _r(t){return function(e){var n=Me(e=so(e))?Be(e):void 0,a=n?n[0]:e.charAt(0),r=n?or(n,1).join(""):e.slice(1);return a[t]()+r}}function Tr(t){return function(e){return fe(Go(Eo(e).replace(Rt,"")),t,"")}}function Or(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=Cn(t.prototype),a=t.apply(n,e);return zs(a)?a:n}}function wr(t){return function(e,n,a){var r=pt(e);if(!Ds(e)){var i=Kr(n,3);e=xo(e),n=function(t){return i(r[t],t,r)}}var s=t(e,n,a);return s>-1?r[i?e[s]:s]:void 0}}function Sr(t){return zr((function(e){var n=e.length,a=n,i=An.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new yt(r);if(i&&!o&&"wrapper"==Ur(s))var o=new An([],!0)}for(a=o?a:n;++a<n;){var u=Ur(s=e[a]),l="wrapper"==u?Hr(s):void 0;o=l&&oi(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?o[Ur(l[0])].apply(o,l[3]):1==s.length&&oi(s)?o[u]():o.thru(s)}return function(){var t=arguments,a=t[0];if(o&&1==t.length&&Es(a))return o.plant(a).value();for(var r=0,i=n?e[r].apply(this,t):a;++r<n;)i=e[r].call(this,i);return i}}))}function Ir(t,e,n,r,i,s,o,u,l,d){var c=128&e,f=1&e,h=2&e,g=24&e,p=512&e,b=h?void 0:Or(t);return function m(){for(var y=arguments.length,v=a(y),x=y;x--;)v[x]=arguments[x];if(g)var _=Wr(m),T=Ee(v,_);if(r&&(v=hr(v,r,i,g)),s&&(v=gr(v,s,o,g)),y-=T,g&&y<d){var O=Fe(v,_);return Lr(t,e,Ir,m.placeholder,n,v,O,u,l,d-y)}var w=f?n:this,S=h?w[t]:t;return y=v.length,u?v=gi(v,u):p&&y>1&&v.reverse(),c&&l<y&&(v.length=l),this&&this!==Yt&&this instanceof m&&(S=b||Or(S)),S.apply(w,v)}}function Nr(t,e){return function(n,a){return function(t,e,n,a){return oa(t,(function(t,r,i){e(a,n(t),r,i)})),a}(n,t,e(a),{})}}function Cr(t,e){return function(n,a){var r;if(void 0===n&&void 0===a)return e;if(void 0!==n&&(r=n),void 0!==a){if(void 0===r)return a;"string"==typeof n||"string"==typeof a?(n=$a(n),a=$a(a)):(n=Ka(n),a=Ka(a)),r=t(n,a)}return r}}function Rr(t){return zr((function(e){return e=de(e,Ne(Kr())),Ma((function(n){var a=this;return t(e,(function(t){return ne(t,a,n)}))}))}))}function Ar(t,e){var n=(e=void 0===e?" ":$a(e)).length;if(n<2)return n?Pa(e,t):e;var a=Pa(e,Je(t/ze(e)));return Me(e)?or(Be(a),0,t).join(""):a.slice(0,t)}function kr(t){return function(e,n,r){return r&&"number"!=typeof r&&ii(e,n,r)&&(n=r=void 0),e=eo(e),void 0===n?(n=e,e=0):n=eo(n),function(t,e,n,r){for(var i=-1,s=rn(Je((e-t)/(n||1)),0),o=a(s);s--;)o[r?s:++i]=t,t+=n;return o}(e,n,r=void 0===r?e<n?1:-1:eo(r),t)}}function Er(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=ro(e),n=ro(n)),t(e,n)}}function Lr(t,e,n,a,r,i,s,o,u,l){var d=8&e;e|=d?32:64,4&(e&=~(d?64:32))||(e&=-4);var c=[t,e,r,d?i:void 0,d?s:void 0,d?void 0:i,d?void 0:s,o,u,l],f=n.apply(void 0,c);return oi(t)&&bi(f,c),f.placeholder=a,vi(f,t,e)}function Dr(t){var e=gt[t];return function(t,n){if(t=ro(t),(n=null==n?0:sn(no(n),292))&&en(t)){var a=(so(t)+"e").split("e");return+((a=(so(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var Pr=gn&&1/Ge(new gn([,-0]))[1]==1/0?function(t){return new gn(t)}:Jo;function Mr(t){return function(e){var n=ti(e);return n==g?qe(e):n==y?Ve(e):function(t,e){return de(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function qr(t,e,n,s,o,u,l,d){var c=2&e;if(!c&&"function"!=typeof t)throw new yt(r);var f=s?s.length:0;if(f||(e&=-97,s=o=void 0),l=void 0===l?l:rn(no(l),0),d=void 0===d?d:no(d),f-=o?o.length:0,64&e){var h=s,g=o;s=o=void 0}var p=c?void 0:Hr(t),b=[t,e,n,s,o,h,g,u,l,d];if(p&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<131||128==a&&8==n||128==a&&256==n&&t[7].length<=e[8]||384==a&&e[7].length<=e[8]&&8==n))return t;1&a&&(t[2]=e[2],r|=1&n?0:4);var s=e[3];if(s){var o=t[3];t[3]=o?hr(o,s,e[4]):s,t[4]=o?Fe(t[3],i):e[4]}(s=e[5])&&(t[5]=(o=t[5])?gr(o,s,e[6]):s,t[6]=o?Fe(t[5],i):e[6]),(s=e[7])&&(t[7]=s),128&a&&(t[8]=null==t[8]?e[8]:sn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(b,p),t=b[0],e=b[1],n=b[2],s=b[3],o=b[4],!(d=b[9]=void 0===b[9]?c?0:t.length:rn(b[9]-f,0))&&24&e&&(e&=-25),e&&1!=e)m=8==e||16==e?function(t,e,n){var r=Or(t);return function i(){for(var s=arguments.length,o=a(s),u=s,l=Wr(i);u--;)o[u]=arguments[u];var d=s<3&&o[0]!==l&&o[s-1]!==l?[]:Fe(o,l);if((s-=d.length)<n)return Lr(t,e,Ir,i.placeholder,void 0,o,d,void 0,void 0,n-s);var c=this&&this!==Yt&&this instanceof i?r:t;return ne(c,this,o)}}(t,e,d):32!=e&&33!=e||o.length?Ir.apply(void 0,b):function(t,e,n,r){var i=1&e,s=Or(t);return function e(){for(var o=-1,u=arguments.length,l=-1,d=r.length,c=a(d+u),f=this&&this!==Yt&&this instanceof e?s:t;++l<d;)c[l]=r[l];for(;u--;)c[l++]=arguments[++o];return ne(f,i?n:this,c)}}(t,e,n,s);else var m=function(t,e,n){var a=1&e,r=Or(t);return function e(){var i=this&&this!==Yt&&this instanceof e?r:t;return i.apply(a?n:this,arguments)}}(t,e,n);return vi((p?Ga:bi)(m,b),t,e)}function jr(t,e,n,a){return void 0===t||Cs(t,xt[n])&&!Ot.call(a,n)?e:t}function Fr(t,e,n,a,r,i){return zs(t)&&zs(e)&&(i.set(e,t),Ca(t,e,void 0,Fr,i),i.delete(e)),t}function Gr(t){return Us(t)?void 0:t}function Vr(t,e,n,a,r,i){var s=1&n,o=t.length,u=e.length;if(o!=u&&!(s&&u>o))return!1;var l=i.get(t);if(l&&i.get(e))return l==e;var d=-1,c=!0,f=2&n?new Pn:void 0;for(i.set(t,e),i.set(e,t);++d<o;){var h=t[d],g=e[d];if(a)var p=s?a(g,h,d,e,t,i):a(h,g,d,t,e,i);if(void 0!==p){if(p)continue;c=!1;break}if(f){if(!ge(e,(function(t,e){if(!Re(f,e)&&(h===t||r(h,t,n,a,i)))return f.push(e)}))){c=!1;break}}else if(h!==g&&!r(h,g,n,a,i)){c=!1;break}}return i.delete(t),i.delete(e),c}function zr(t){return yi(fi(t,void 0,Li),t+"")}function Br(t){return ca(t,xo,Qr)}function Yr(t){return ca(t,_o,Xr)}var Hr=mn?function(t){return mn.get(t)}:Jo;function Ur(t){for(var e=t.name+"",n=yn[e],a=Ot.call(yn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function Wr(t){return(Ot.call(Nn,"placeholder")?Nn:t).placeholder}function Kr(){var t=Nn.iteratee||Wo;return t=t===Wo?Ta:t,arguments.length?t(arguments[0],arguments[1]):t}function $r(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function Zr(t){for(var e=xo(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,di(r)]}return e}function Jr(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return _a(n)?n:void 0}var Qr=Xe?function(t){return null==t?[]:(t=pt(t),oe(Xe(t),(function(e){return Kt.call(t,e)})))}:ru,Xr=Xe?function(t){for(var e=[];t;)ce(e,Qr(t)),t=Ht(t);return e}:ru,ti=fa;function ei(t,e,n){for(var a=-1,r=(e=ir(e,t)).length,i=!1;++a<r;){var s=Si(e[a]);if(!(i=null!=t&&n(t,s)))break;t=t[s]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&Vs(r)&&ri(s,r)&&(Es(t)||ks(t))}function ni(t){return"function"!=typeof t.constructor||li(t)?{}:Cn(Ht(t))}function ai(t){return Es(t)||ks(t)||!!(pe&&t&&t[pe])}function ri(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&ot.test(t))&&t>-1&&t%1==0&&t<e}function ii(t,e,n){if(!zs(n))return!1;var a=typeof e;return!!("number"==a?Ds(n)&&ri(e,n.length):"string"==a&&e in n)&&Cs(n[e],t)}function si(t,e){if(Es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Zs(t))||B.test(t)||!z.test(t)||null!=e&&t in pt(e)}function oi(t){var e=Ur(t),n=Nn[e];if("function"!=typeof n||!(e in kn.prototype))return!1;if(t===n)return!0;var a=Hr(n);return!!a&&t===a[0]}(cn&&ti(new cn(new ArrayBuffer(1)))!=O||fn&&ti(new fn)!=g||hn&&"[object Promise]"!=ti(hn.resolve())||gn&&ti(new gn)!=y||pn&&ti(new pn)!=_)&&(ti=function(t){var e=fa(t),n=e==b?t.constructor:void 0,a=n?Ii(n):"";if(a)switch(a){case vn:return O;case xn:return g;case _n:return"[object Promise]";case Tn:return y;case On:return _}return e});var ui=_t?Fs:iu;function li(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||xt)}function di(t){return t==t&&!zs(t)}function ci(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in pt(n))}}function fi(t,e,n){return e=rn(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=rn(r.length-e,0),o=a(s);++i<s;)o[i]=r[e+i];i=-1;for(var u=a(e+1);++i<e;)u[i]=r[i];return u[e]=n(o),ne(t,this,u)}}function hi(t,e){return e.length<2?t:da(t,Ba(e,0,-1))}function gi(t,e){for(var n=t.length,a=sn(e.length,n),r=pr(t);a--;){var i=e[a];t[a]=ri(i,n)?r[i]:void 0}return t}function pi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var bi=xi(Ga),mi=Ze||function(t,e){return Yt.setTimeout(t,e)},yi=xi(Va);function vi(t,e,n){var a=e+"";return yi(t,function(t,e){var n=e.length;if(!n)return t;var a=n-1;return e[a]=(n>1?"& ":"")+e[a],e=e.join(n>2?", ":" "),t.replace(Z,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return re(s,(function(n){var a="_."+n[0];e&n[1]&&!ue(t,a)&&t.push(a)})),t.sort()}(function(t){var e=t.match(J);return e?e[1].split(Q):[]}(a),n)))}function xi(t){var e=0,n=0;return function(){var a=on(),r=16-(a-n);if(n=a,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function _i(t,e){var n=-1,a=t.length,r=a-1;for(e=void 0===e?a:e;++n<e;){var i=Da(n,r),s=t[i];t[i]=t[n],t[n]=s}return t.length=e,t}var Ti,Oi,wi=(Ti=Ts((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Y,(function(t,n,a,r){e.push(a?r.replace(tt,"$1"):n||t)})),e}),(function(t){return 500===Oi.size&&Oi.clear(),t})),Oi=Ti.cache,Ti);function Si(t){if("string"==typeof t||Zs(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ii(t){if(null!=t){try{return Tt.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function Ni(t){if(t instanceof kn)return t.clone();var e=new An(t.__wrapped__,t.__chain__);return e.__actions__=pr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Ci=Ma((function(t,e){return Ps(t)?Qn(t,ra(e,1,Ps,!0)):[]})),Ri=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),Kr(n,2)):[]})),Ai=Ma((function(t,e){var n=ji(e);return Ps(n)&&(n=void 0),Ps(t)?Qn(t,ra(e,1,Ps,!0),void 0,n):[]}));function ki(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:no(n);return r<0&&(r=rn(a+r,0)),me(t,Kr(e,3),r)}function Ei(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a-1;return void 0!==n&&(r=no(n),r=n<0?rn(a+r,0):sn(r,a-1)),me(t,Kr(e,3),r,!0)}function Li(t){return null!=t&&t.length?ra(t,1):[]}function Di(t){return t&&t.length?t[0]:void 0}var Pi=Ma((function(t){var e=de(t,ar);return e.length&&e[0]===t[0]?ba(e):[]})),Mi=Ma((function(t){var e=ji(t),n=de(t,ar);return e===ji(n)?e=void 0:n.pop(),n.length&&n[0]===t[0]?ba(n,Kr(e,2)):[]})),qi=Ma((function(t){var e=ji(t),n=de(t,ar);return(e="function"==typeof e?e:void 0)&&n.pop(),n.length&&n[0]===t[0]?ba(n,void 0,e):[]}));function ji(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}var Fi=Ma(Gi);function Gi(t,e){return t&&t.length&&e&&e.length?Ea(t,e):t}var Vi=zr((function(t,e){var n=null==t?0:t.length,a=Wn(t,e);return La(t,de(e,(function(t){return ri(t,n)?+t:t})).sort(fr)),a}));function zi(t){return null==t?t:dn.call(t)}var Bi=Ma((function(t){return Za(ra(t,1,Ps,!0))})),Yi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),Za(ra(t,1,Ps,!0),Kr(e,2))})),Hi=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,Za(ra(t,1,Ps,!0),void 0,e)}));function Ui(t){if(!t||!t.length)return[];var e=0;return t=oe(t,(function(t){if(Ps(t))return e=rn(t.length,e),!0})),Ie(e,(function(e){return de(t,Te(e))}))}function Wi(t,e){if(!t||!t.length)return[];var n=Ui(t);return null==e?n:de(n,(function(t){return ne(e,void 0,t)}))}var Ki=Ma((function(t,e){return Ps(t)?Qn(t,e):[]})),$i=Ma((function(t){return er(oe(t,Ps))})),Zi=Ma((function(t){var e=ji(t);return Ps(e)&&(e=void 0),er(oe(t,Ps),Kr(e,2))})),Ji=Ma((function(t){var e=ji(t);return e="function"==typeof e?e:void 0,er(oe(t,Ps),void 0,e)})),Qi=Ma(Ui),Xi=Ma((function(t){var e=t.length,n=e>1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Wi(t,n)}));function ts(t){var e=Nn(t);return e.__chain__=!0,e}function es(t,e){return e(t)}var ns=zr((function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,r=function(e){return Wn(e,t)};return!(e>1||this.__actions__.length)&&a instanceof kn&&ri(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:es,args:[r],thisArg:void 0}),new An(a,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(r)})),as=mr((function(t,e,n){Ot.call(t,n)?++t[n]:Un(t,n,1)})),rs=wr(ki),is=wr(Ei);function ss(t,e){return(Es(t)?re:Xn)(t,Kr(e,3))}function os(t,e){return(Es(t)?ie:ta)(t,Kr(e,3))}var us=mr((function(t,e,n){Ot.call(t,n)?t[n].push(e):Un(t,n,[e])})),ls=Ma((function(t,e,n){var r=-1,i="function"==typeof e,s=Ds(t)?a(t.length):[];return Xn(t,(function(t){s[++r]=i?ne(e,t,n):ma(t,e,n)})),s})),ds=mr((function(t,e,n){Un(t,n,e)}));function cs(t,e){return(Es(t)?de:Sa)(t,Kr(e,3))}var fs=mr((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]})),hs=Ma((function(t,e){if(null==t)return[];var n=e.length;return n>1&&ii(t,e[0],e[1])?e=[]:n>2&&ii(e[0],e[1],e[2])&&(e=[e[0]]),Aa(t,ra(e,1),[])})),gs=$e||function(){return Yt.Date.now()};function ps(t,e,n){return e=n?void 0:e,qr(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function bs(t,e){var n;if("function"!=typeof e)throw new yt(r);return t=no(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var ms=Ma((function(t,e,n){var a=1;if(n.length){var r=Fe(n,Wr(ms));a|=32}return qr(t,a,e,n,r)})),ys=Ma((function(t,e,n){var a=3;if(n.length){var r=Fe(n,Wr(ys));a|=32}return qr(e,a,t,n,r)}));function vs(t,e,n){var a,i,s,o,u,l,d=0,c=!1,f=!1,h=!0;if("function"!=typeof t)throw new yt(r);function g(e){var n=a,r=i;return a=i=void 0,d=e,o=t.apply(r,n)}function p(t){return d=t,u=mi(m,e),c?g(t):o}function b(t){var n=t-l;return void 0===l||n>=e||n<0||f&&t-d>=s}function m(){var t=gs();if(b(t))return y(t);u=mi(m,function(t){var n=e-(t-l);return f?sn(n,s-(t-d)):n}(t))}function y(t){return u=void 0,h&&a?g(t):(a=i=void 0,o)}function v(){var t=gs(),n=b(t);if(a=arguments,i=this,l=t,n){if(void 0===u)return p(l);if(f)return ur(u),u=mi(m,e),g(l)}return void 0===u&&(u=mi(m,e)),o}return e=ro(e)||0,zs(n)&&(c=!!n.leading,s=(f="maxWait"in n)?rn(ro(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==u&&ur(u),d=0,a=l=i=u=void 0},v.flush=function(){return void 0===u?o:y(gs())},v}var xs=Ma((function(t,e){return Jn(t,1,e)})),_s=Ma((function(t,e,n){return Jn(t,ro(e)||0,n)}));function Ts(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new yt(r);var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s)||i,s};return n.cache=new(Ts.Cache||Dn),n}function Os(t){if("function"!=typeof t)throw new yt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Dn;var ws=sr((function(t,e){var n=(e=1==e.length&&Es(e[0])?de(e[0],Ne(Kr())):de(ra(e,1),Ne(Kr()))).length;return Ma((function(a){for(var r=-1,i=sn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return ne(t,this,a)}))})),Ss=Ma((function(t,e){return qr(t,32,void 0,e,Fe(e,Wr(Ss)))})),Is=Ma((function(t,e){return qr(t,64,void 0,e,Fe(e,Wr(Is)))})),Ns=zr((function(t,e){return qr(t,256,void 0,void 0,void 0,e)}));function Cs(t,e){return t===e||t!=t&&e!=e}var Rs=Er(ha),As=Er((function(t,e){return t>=e})),ks=ya(function(){return arguments}())?ya:function(t){return Bs(t)&&Ot.call(t,"callee")&&!Kt.call(t,"callee")},Es=a.isArray,Ls=Zt?Ne(Zt):function(t){return Bs(t)&&fa(t)==T};function Ds(t){return null!=t&&Vs(t.length)&&!Fs(t)}function Ps(t){return Bs(t)&&Ds(t)}var Ms=tn||iu,qs=Jt?Ne(Jt):function(t){return Bs(t)&&fa(t)==d};function js(t){if(!Bs(t))return!1;var e=fa(t);return e==c||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Us(t)}function Fs(t){if(!zs(t))return!1;var e=fa(t);return e==f||e==h||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Gs(t){return"number"==typeof t&&t==no(t)}function Vs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function zs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Bs(t){return null!=t&&"object"==typeof t}var Ys=Qt?Ne(Qt):function(t){return Bs(t)&&ti(t)==g};function Hs(t){return"number"==typeof t||Bs(t)&&fa(t)==p}function Us(t){if(!Bs(t)||fa(t)!=b)return!1;var e=Ht(t);if(null===e)return!0;var n=Ot.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Tt.call(n)==Nt}var Ws=Xt?Ne(Xt):function(t){return Bs(t)&&fa(t)==m},Ks=te?Ne(te):function(t){return Bs(t)&&ti(t)==y};function $s(t){return"string"==typeof t||!Es(t)&&Bs(t)&&fa(t)==v}function Zs(t){return"symbol"==typeof t||Bs(t)&&fa(t)==x}var Js=ee?Ne(ee):function(t){return Bs(t)&&Vs(t.length)&&!!qt[fa(t)]},Qs=Er(wa),Xs=Er((function(t,e){return t<=e}));function to(t){if(!t)return[];if(Ds(t))return $s(t)?Be(t):pr(t);if(Oe&&t[Oe])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Oe]());var e=ti(t);return(e==g?qe:e==y?Ge:Ro)(t)}function eo(t){return t?(t=ro(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function no(t){var e=eo(t),n=e%1;return e==e?n?e-n:e:0}function ao(t){return t?Kn(no(t),0,4294967295):0}function ro(t){if("number"==typeof t)return t;if(Zs(t))return NaN;if(zs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=zs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(W,"");var n=rt.test(t);return n||st.test(t)?Vt(t.slice(2),n?2:8):at.test(t)?NaN:+t}function io(t){return br(t,_o(t))}function so(t){return null==t?"":$a(t)}var oo=yr((function(t,e){if(li(e)||Ds(e))br(e,xo(e),t);else for(var n in e)Ot.call(e,n)&&zn(t,n,e[n])})),uo=yr((function(t,e){br(e,_o(e),t)})),lo=yr((function(t,e,n,a){br(e,_o(e),t,a)})),co=yr((function(t,e,n,a){br(e,xo(e),t,a)})),fo=zr(Wn),ho=Ma((function(t,e){t=pt(t);var n=-1,a=e.length,r=a>2?e[2]:void 0;for(r&&ii(e[0],e[1],r)&&(a=1);++n<a;)for(var i=e[n],s=_o(i),o=-1,u=s.length;++o<u;){var l=s[o],d=t[l];(void 0===d||Cs(d,xt[l])&&!Ot.call(t,l))&&(t[l]=i[l])}return t})),go=Ma((function(t){return t.push(void 0,Fr),ne(Oo,void 0,t)}));function po(t,e,n){var a=null==t?void 0:da(t,e);return void 0===a?n:a}function bo(t,e){return null!=t&&ei(t,e,pa)}var mo=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),t[e]=n}),Bo(Uo)),yo=Nr((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=It.call(e)),Ot.call(t,e)?t[e].push(n):t[e]=[n]}),Kr),vo=Ma(ma);function xo(t){return Ds(t)?qn(t):Oa(t)}function _o(t){return Ds(t)?qn(t,!0):function(t){if(!zs(t))return function(t){var e=[];if(null!=t)for(var n in pt(t))e.push(n);return e}(t);var e=li(t),n=[];for(var a in t)("constructor"!=a||!e&&Ot.call(t,a))&&n.push(a);return n}(t)}var To=yr((function(t,e,n){Ca(t,e,n)})),Oo=yr((function(t,e,n,a){Ca(t,e,n,a)})),wo=zr((function(t,e){var n={};if(null==t)return n;var a=!1;e=de(e,(function(e){return e=ir(e,t),a||(a=e.length>1),e})),br(t,Yr(t),n),a&&(n=$n(n,7,Gr));for(var r=e.length;r--;)Ja(n,e[r]);return n})),So=zr((function(t,e){return null==t?{}:function(t,e){return ka(t,e,(function(e,n){return bo(t,n)}))}(t,e)}));function Io(t,e){if(null==t)return{};var n=de(Yr(t),(function(t){return[t]}));return e=Kr(e),ka(t,n,(function(t,n){return e(t,n[0])}))}var No=Mr(xo),Co=Mr(_o);function Ro(t){return null==t?[]:Ce(t,xo(t))}var Ao=Tr((function(t,e,n){return e=e.toLowerCase(),t+(n?ko(e):e)}));function ko(t){return Fo(so(t).toLowerCase())}function Eo(t){return(t=so(t))&&t.replace(ut,Le).replace(At,"")}var Lo=Tr((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Do=Tr((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Po=_r("toLowerCase"),Mo=Tr((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()})),qo=Tr((function(t,e,n){return t+(n?" ":"")+Fo(e)})),jo=Tr((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Fo=_r("toUpperCase");function Go(t,e,n){return t=so(t),void 0===(e=n?void 0:e)?function(t){return Dt.test(t)}(t)?function(t){return t.match(Et)||[]}(t):function(t){return t.match(X)||[]}(t):t.match(e)||[]}var Vo=Ma((function(t,e){try{return ne(t,void 0,e)}catch(n){return js(n)?n:new ft(n)}})),zo=zr((function(t,e){return re(e,(function(e){e=Si(e),Un(t,e,ms(t[e],t))})),t}));function Bo(t){return function(){return t}}var Yo=Sr(),Ho=Sr(!0);function Uo(t){return t}function Wo(t){return Ta("function"==typeof t?t:$n(t,1))}var Ko=Ma((function(t,e){return function(n){return ma(n,t,e)}})),$o=Ma((function(t,e){return function(n){return ma(t,n,e)}}));function Zo(t,e,n){var a=xo(e),r=la(e,a);null!=n||zs(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=la(e,xo(e)));var i=!(zs(n)&&"chain"in n&&!n.chain),s=Fs(t);return re(r,(function(n){var a=e[n];t[n]=a,s&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__),r=n.__actions__=pr(this.__actions__);return r.push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,ce([this.value()],arguments))})})),t}function Jo(){}var Qo=Rr(de),Xo=Rr(se),tu=Rr(ge);function eu(t){return si(t)?Te(Si(t)):function(t){return function(e){return da(e,t)}}(t)}var nu=kr(),au=kr(!0);function ru(){return[]}function iu(){return!1}var su,ou=Cr((function(t,e){return t+e}),0),uu=Dr("ceil"),lu=Cr((function(t,e){return t/e}),1),du=Dr("floor"),cu=Cr((function(t,e){return t*e}),1),fu=Dr("round"),hu=Cr((function(t,e){return t-e}),0);return Nn.after=function(t,e){if("function"!=typeof e)throw new yt(r);return t=no(t),function(){if(--t<1)return e.apply(this,arguments)}},Nn.ary=ps,Nn.assign=oo,Nn.assignIn=uo,Nn.assignInWith=lo,Nn.assignWith=co,Nn.at=fo,Nn.before=bs,Nn.bind=ms,Nn.bindAll=zo,Nn.bindKey=ys,Nn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Es(t)?t:[t]},Nn.chain=ts,Nn.chunk=function(t,e,n){e=(n?ii(t,e,n):void 0===e)?1:rn(no(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,s=0,o=a(Je(r/e));i<r;)o[s++]=Ba(t,i,i+=e);return o},Nn.compact=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r},Nn.concat=function(){var t=arguments.length;if(!t)return[];for(var e=a(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return ce(Es(n)?pr(n):[n],ra(e,1))},Nn.cond=function(t){var e=null==t?0:t.length,n=Kr();return t=e?de(t,(function(t){if("function"!=typeof t[1])throw new yt(r);return[n(t[0]),t[1]]})):[],Ma((function(n){for(var a=-1;++a<e;){var r=t[a];if(ne(r[0],this,n))return ne(r[1],this,n)}}))},Nn.conforms=function(t){return function(t){var e=xo(t);return function(n){return Zn(n,t,e)}}($n(t,1))},Nn.constant=Bo,Nn.countBy=as,Nn.create=function(t,e){var n=Cn(t);return null==e?n:Hn(n,e)},Nn.curry=function t(e,n,a){var r=qr(e,8,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.curryRight=function t(e,n,a){var r=qr(e,16,void 0,void 0,void 0,void 0,void 0,n=a?void 0:n);return r.placeholder=t.placeholder,r},Nn.debounce=vs,Nn.defaults=ho,Nn.defaultsDeep=go,Nn.defer=xs,Nn.delay=_s,Nn.difference=Ci,Nn.differenceBy=Ri,Nn.differenceWith=Ai,Nn.drop=function(t,e,n){var a=null==t?0:t.length;return a?Ba(t,(e=n||void 0===e?1:no(e))<0?0:e,a):[]},Nn.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?Ba(t,0,(e=a-(e=n||void 0===e?1:no(e)))<0?0:e):[]},Nn.dropRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0,!0):[]},Nn.dropWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!0):[]},Nn.fill=function(t,e,n,a){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&ii(t,e,n)&&(n=0,a=r),function(t,e,n,a){var r=t.length;for((n=no(n))<0&&(n=-n>r?0:r+n),(a=void 0===a||a>r?r:no(a))<0&&(a+=r),a=n>a?0:ao(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},Nn.filter=function(t,e){return(Es(t)?oe:aa)(t,Kr(e,3))},Nn.flatMap=function(t,e){return ra(cs(t,e),1)},Nn.flatMapDeep=function(t,e){return ra(cs(t,e),1/0)},Nn.flatMapDepth=function(t,e,n){return n=void 0===n?1:no(n),ra(cs(t,e),n)},Nn.flatten=Li,Nn.flattenDeep=function(t){return null!=t&&t.length?ra(t,1/0):[]},Nn.flattenDepth=function(t,e){return null!=t&&t.length?ra(t,e=void 0===e?1:no(e)):[]},Nn.flip=function(t){return qr(t,512)},Nn.flow=Yo,Nn.flowRight=Ho,Nn.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,a={};++e<n;){var r=t[e];a[r[0]]=r[1]}return a},Nn.functions=function(t){return null==t?[]:la(t,xo(t))},Nn.functionsIn=function(t){return null==t?[]:la(t,_o(t))},Nn.groupBy=us,Nn.initial=function(t){return null!=t&&t.length?Ba(t,0,-1):[]},Nn.intersection=Pi,Nn.intersectionBy=Mi,Nn.intersectionWith=qi,Nn.invert=mo,Nn.invertBy=yo,Nn.invokeMap=ls,Nn.iteratee=Wo,Nn.keyBy=ds,Nn.keys=xo,Nn.keysIn=_o,Nn.map=cs,Nn.mapKeys=function(t,e){var n={};return e=Kr(e,3),oa(t,(function(t,a,r){Un(n,e(t,a,r),t)})),n},Nn.mapValues=function(t,e){var n={};return e=Kr(e,3),oa(t,(function(t,a,r){Un(n,a,e(t,a,r))})),n},Nn.matches=function(t){return Ia($n(t,1))},Nn.matchesProperty=function(t,e){return Na(t,$n(e,1))},Nn.memoize=Ts,Nn.merge=To,Nn.mergeWith=Oo,Nn.method=Ko,Nn.methodOf=$o,Nn.mixin=Zo,Nn.negate=Os,Nn.nthArg=function(t){return t=no(t),Ma((function(e){return Ra(e,t)}))},Nn.omit=wo,Nn.omitBy=function(t,e){return Io(t,Os(Kr(e)))},Nn.once=function(t){return bs(2,t)},Nn.orderBy=function(t,e,n,a){return null==t?[]:(Es(e)||(e=null==e?[]:[e]),Es(n=a?void 0:n)||(n=null==n?[]:[n]),Aa(t,e,n))},Nn.over=Qo,Nn.overArgs=ws,Nn.overEvery=Xo,Nn.overSome=tu,Nn.partial=Ss,Nn.partialRight=Is,Nn.partition=fs,Nn.pick=So,Nn.pickBy=Io,Nn.property=eu,Nn.propertyOf=function(t){return function(e){return null==t?void 0:da(t,e)}},Nn.pull=Fi,Nn.pullAll=Gi,Nn.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,Kr(n,2)):t},Nn.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?Ea(t,e,void 0,n):t},Nn.pullAt=Vi,Nn.range=nu,Nn.rangeRight=au,Nn.rearg=Ns,Nn.reject=function(t,e){return(Es(t)?oe:aa)(t,Os(Kr(e,3)))},Nn.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=Kr(e,3);++a<i;){var s=t[a];e(s,a,t)&&(n.push(s),r.push(a))}return La(t,r),n},Nn.rest=function(t,e){if("function"!=typeof t)throw new yt(r);return Ma(t,e=void 0===e?e:no(e))},Nn.reverse=zi,Nn.sampleSize=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:no(e),(Es(t)?Fn:ja)(t,e)},Nn.set=function(t,e,n){return null==t?t:Fa(t,e,n)},Nn.setWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Fa(t,e,n,a)},Nn.shuffle=function(t){return(Es(t)?Gn:za)(t)},Nn.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&ii(t,e,n)?(e=0,n=a):(e=null==e?0:no(e),n=void 0===n?a:no(n)),Ba(t,e,n)):[]},Nn.sortBy=hs,Nn.sortedUniq=function(t){return t&&t.length?Wa(t):[]},Nn.sortedUniqBy=function(t,e){return t&&t.length?Wa(t,Kr(e,2)):[]},Nn.split=function(t,e,n){return n&&"number"!=typeof n&&ii(t,e,n)&&(e=n=void 0),(n=void 0===n?4294967295:n>>>0)?(t=so(t))&&("string"==typeof e||null!=e&&!Ws(e))&&!(e=$a(e))&&Me(t)?or(Be(t),0,n):t.split(e,n):[]},Nn.spread=function(t,e){if("function"!=typeof t)throw new yt(r);return e=null==e?0:rn(no(e),0),Ma((function(n){var a=n[e],r=or(n,0,e);return a&&ce(r,a),ne(t,this,r)}))},Nn.tail=function(t){var e=null==t?0:t.length;return e?Ba(t,1,e):[]},Nn.take=function(t,e,n){return t&&t.length?Ba(t,0,(e=n||void 0===e?1:no(e))<0?0:e):[]},Nn.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?Ba(t,(e=a-(e=n||void 0===e?1:no(e)))<0?0:e,a):[]},Nn.takeRightWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3),!1,!0):[]},Nn.takeWhile=function(t,e){return t&&t.length?Xa(t,Kr(e,3)):[]},Nn.tap=function(t,e){return e(t),t},Nn.throttle=function(t,e,n){var a=!0,i=!0;if("function"!=typeof t)throw new yt(r);return zs(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),vs(t,e,{leading:a,maxWait:e,trailing:i})},Nn.thru=es,Nn.toArray=to,Nn.toPairs=No,Nn.toPairsIn=Co,Nn.toPath=function(t){return Es(t)?de(t,Si):Zs(t)?[t]:pr(wi(so(t)))},Nn.toPlainObject=io,Nn.transform=function(t,e,n){var a=Es(t),r=a||Ms(t)||Js(t);if(e=Kr(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:zs(t)&&Fs(i)?Cn(Ht(t)):{}}return(r?re:oa)(t,(function(t,a,r){return e(n,t,a,r)})),n},Nn.unary=function(t){return ps(t,1)},Nn.union=Bi,Nn.unionBy=Yi,Nn.unionWith=Hi,Nn.uniq=function(t){return t&&t.length?Za(t):[]},Nn.uniqBy=function(t,e){return t&&t.length?Za(t,Kr(e,2)):[]},Nn.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Za(t,void 0,e):[]},Nn.unset=function(t,e){return null==t||Ja(t,e)},Nn.unzip=Ui,Nn.unzipWith=Wi,Nn.update=function(t,e,n){return null==t?t:Qa(t,e,rr(n))},Nn.updateWith=function(t,e,n,a){return a="function"==typeof a?a:void 0,null==t?t:Qa(t,e,rr(n),a)},Nn.values=Ro,Nn.valuesIn=function(t){return null==t?[]:Ce(t,_o(t))},Nn.without=Ki,Nn.words=Go,Nn.wrap=function(t,e){return Ss(rr(e),t)},Nn.xor=$i,Nn.xorBy=Zi,Nn.xorWith=Ji,Nn.zip=Qi,Nn.zipObject=function(t,e){return nr(t||[],e||[],zn)},Nn.zipObjectDeep=function(t,e){return nr(t||[],e||[],Fa)},Nn.zipWith=Xi,Nn.entries=No,Nn.entriesIn=Co,Nn.extend=uo,Nn.extendWith=lo,Zo(Nn,Nn),Nn.add=ou,Nn.attempt=Vo,Nn.camelCase=Ao,Nn.capitalize=ko,Nn.ceil=uu,Nn.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=ro(n))==n?n:0),void 0!==e&&(e=(e=ro(e))==e?e:0),Kn(ro(t),e,n)},Nn.clone=function(t){return $n(t,4)},Nn.cloneDeep=function(t){return $n(t,5)},Nn.cloneDeepWith=function(t,e){return $n(t,5,e="function"==typeof e?e:void 0)},Nn.cloneWith=function(t,e){return $n(t,4,e="function"==typeof e?e:void 0)},Nn.conformsTo=function(t,e){return null==e||Zn(t,e,xo(e))},Nn.deburr=Eo,Nn.defaultTo=function(t,e){return null==t||t!=t?e:t},Nn.divide=lu,Nn.endsWith=function(t,e,n){t=so(t),e=$a(e);var a=t.length,r=n=void 0===n?a:Kn(no(n),0,a);return(n-=e.length)>=0&&t.slice(n,r)==e},Nn.eq=Cs,Nn.escape=function(t){return(t=so(t))&&j.test(t)?t.replace(M,De):t},Nn.escapeRegExp=function(t){return(t=so(t))&&U.test(t)?t.replace(H,"\\$&"):t},Nn.every=function(t,e,n){var a=Es(t)?se:ea;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.find=rs,Nn.findIndex=ki,Nn.findKey=function(t,e){return be(t,Kr(e,3),oa)},Nn.findLast=is,Nn.findLastIndex=Ei,Nn.findLastKey=function(t,e){return be(t,Kr(e,3),ua)},Nn.floor=du,Nn.forEach=ss,Nn.forEachRight=os,Nn.forIn=function(t,e){return null==t?t:ia(t,Kr(e,3),_o)},Nn.forInRight=function(t,e){return null==t?t:sa(t,Kr(e,3),_o)},Nn.forOwn=function(t,e){return t&&oa(t,Kr(e,3))},Nn.forOwnRight=function(t,e){return t&&ua(t,Kr(e,3))},Nn.get=po,Nn.gt=Rs,Nn.gte=As,Nn.has=function(t,e){return null!=t&&ei(t,e,ga)},Nn.hasIn=bo,Nn.head=Di,Nn.identity=Uo,Nn.includes=function(t,e,n,a){t=Ds(t)?t:Ro(t),n=n&&!a?no(n):0;var r=t.length;return n<0&&(n=rn(r+n,0)),$s(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&ye(t,e,n)>-1},Nn.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:no(n);return r<0&&(r=rn(a+r,0)),ye(t,e,r)},Nn.inRange=function(t,e,n){return e=eo(e),void 0===n?(n=e,e=0):n=eo(n),function(t,e,n){return t>=sn(e,n)&&t<rn(e,n)}(t=ro(t),e,n)},Nn.invoke=vo,Nn.isArguments=ks,Nn.isArray=Es,Nn.isArrayBuffer=Ls,Nn.isArrayLike=Ds,Nn.isArrayLikeObject=Ps,Nn.isBoolean=function(t){return!0===t||!1===t||Bs(t)&&fa(t)==l},Nn.isBuffer=Ms,Nn.isDate=qs,Nn.isElement=function(t){return Bs(t)&&1===t.nodeType&&!Us(t)},Nn.isEmpty=function(t){if(null==t)return!0;if(Ds(t)&&(Es(t)||"string"==typeof t||"function"==typeof t.splice||Ms(t)||Js(t)||ks(t)))return!t.length;var e=ti(t);if(e==g||e==y)return!t.size;if(li(t))return!Oa(t).length;for(var n in t)if(Ot.call(t,n))return!1;return!0},Nn.isEqual=function(t,e){return va(t,e)},Nn.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:void 0)?n(t,e):void 0;return void 0===a?va(t,e,void 0,n):!!a},Nn.isError=js,Nn.isFinite=function(t){return"number"==typeof t&&en(t)},Nn.isFunction=Fs,Nn.isInteger=Gs,Nn.isLength=Vs,Nn.isMap=Ys,Nn.isMatch=function(t,e){return t===e||xa(t,e,Zr(e))},Nn.isMatchWith=function(t,e,n){return n="function"==typeof n?n:void 0,xa(t,e,Zr(e),n)},Nn.isNaN=function(t){return Hs(t)&&t!=+t},Nn.isNative=function(t){if(ui(t))throw new ft("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return _a(t)},Nn.isNil=function(t){return null==t},Nn.isNull=function(t){return null===t},Nn.isNumber=Hs,Nn.isObject=zs,Nn.isObjectLike=Bs,Nn.isPlainObject=Us,Nn.isRegExp=Ws,Nn.isSafeInteger=function(t){return Gs(t)&&t>=-9007199254740991&&t<=9007199254740991},Nn.isSet=Ks,Nn.isString=$s,Nn.isSymbol=Zs,Nn.isTypedArray=Js,Nn.isUndefined=function(t){return void 0===t},Nn.isWeakMap=function(t){return Bs(t)&&ti(t)==_},Nn.isWeakSet=function(t){return Bs(t)&&"[object WeakSet]"==fa(t)},Nn.join=function(t,e){return null==t?"":nn.call(t,e)},Nn.kebabCase=Lo,Nn.last=ji,Nn.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=a;return void 0!==n&&(r=(r=no(n))<0?rn(a+r,0):sn(r,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,r):me(t,xe,r,!0)},Nn.lowerCase=Do,Nn.lowerFirst=Po,Nn.lt=Qs,Nn.lte=Xs,Nn.max=function(t){return t&&t.length?na(t,Uo,ha):void 0},Nn.maxBy=function(t,e){return t&&t.length?na(t,Kr(e,2),ha):void 0},Nn.mean=function(t){return _e(t,Uo)},Nn.meanBy=function(t,e){return _e(t,Kr(e,2))},Nn.min=function(t){return t&&t.length?na(t,Uo,wa):void 0},Nn.minBy=function(t,e){return t&&t.length?na(t,Kr(e,2),wa):void 0},Nn.stubArray=ru,Nn.stubFalse=iu,Nn.stubObject=function(){return{}},Nn.stubString=function(){return""},Nn.stubTrue=function(){return!0},Nn.multiply=cu,Nn.nth=function(t,e){return t&&t.length?Ra(t,no(e)):void 0},Nn.noConflict=function(){return Yt._===this&&(Yt._=Ct),this},Nn.noop=Jo,Nn.now=gs,Nn.pad=function(t,e,n){t=so(t);var a=(e=no(e))?ze(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return Ar(Qe(r),n)+t+Ar(Je(r),n)},Nn.padEnd=function(t,e,n){t=so(t);var a=(e=no(e))?ze(t):0;return e&&a<e?t+Ar(e-a,n):t},Nn.padStart=function(t,e,n){t=so(t);var a=(e=no(e))?ze(t):0;return e&&a<e?Ar(e-a,n)+t:t},Nn.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),un(so(t).replace(K,""),e||0)},Nn.random=function(t,e,n){if(n&&"boolean"!=typeof n&&ii(t,e,n)&&(e=n=void 0),void 0===n&&("boolean"==typeof e?(n=e,e=void 0):"boolean"==typeof t&&(n=t,t=void 0)),void 0===t&&void 0===e?(t=0,e=1):(t=eo(t),void 0===e?(e=t,t=0):e=eo(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var r=ln();return sn(t+r*(e-t+Gt("1e-"+((r+"").length-1))),e)}return Da(t,e)},Nn.reduce=function(t,e,n){var a=Es(t)?fe:we,r=arguments.length<3;return a(t,Kr(e,4),n,r,Xn)},Nn.reduceRight=function(t,e,n){var a=Es(t)?he:we,r=arguments.length<3;return a(t,Kr(e,4),n,r,ta)},Nn.repeat=function(t,e,n){return e=(n?ii(t,e,n):void 0===e)?1:no(e),Pa(so(t),e)},Nn.replace=function(){var t=arguments,e=so(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Nn.result=function(t,e,n){var a=-1,r=(e=ir(e,t)).length;for(r||(r=1,t=void 0);++a<r;){var i=null==t?void 0:t[Si(e[a])];void 0===i&&(a=r,i=n),t=Fs(i)?i.call(t):i}return t},Nn.round=fu,Nn.runInContext=t,Nn.sample=function(t){return(Es(t)?jn:qa)(t)},Nn.size=function(t){if(null==t)return 0;if(Ds(t))return $s(t)?ze(t):t.length;var e=ti(t);return e==g||e==y?t.size:Oa(t).length},Nn.snakeCase=Mo,Nn.some=function(t,e,n){var a=Es(t)?ge:Ya;return n&&ii(t,e,n)&&(e=void 0),a(t,Kr(e,3))},Nn.sortedIndex=function(t,e){return Ha(t,e)},Nn.sortedIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2))},Nn.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=Ha(t,e);if(a<n&&Cs(t[a],e))return a}return-1},Nn.sortedLastIndex=function(t,e){return Ha(t,e,!0)},Nn.sortedLastIndexBy=function(t,e,n){return Ua(t,e,Kr(n,2),!0)},Nn.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=Ha(t,e,!0)-1;if(Cs(t[n],e))return n}return-1},Nn.startCase=qo,Nn.startsWith=function(t,e,n){return t=so(t),n=null==n?0:Kn(no(n),0,t.length),e=$a(e),t.slice(n,n+e.length)==e},Nn.subtract=hu,Nn.sum=function(t){return t&&t.length?Se(t,Uo):0},Nn.sumBy=function(t,e){return t&&t.length?Se(t,Kr(e,2)):0},Nn.template=function(t,e,n){var a=Nn.templateSettings;n&&ii(t,e,n)&&(e=void 0),t=so(t),e=lo({},e,a,jr);var r,i,s=lo({},e.imports,a.imports,jr),o=xo(s),u=Ce(s,o),l=0,d=e.interpolate||lt,c="__p += '",f=bt((e.escape||lt).source+"|"+d.source+"|"+(d===V?et:lt).source+"|"+(e.evaluate||lt).source+"|$","g"),h="//# sourceURL="+(Ot.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++Mt+"]")+"\n";t.replace(f,(function(e,n,a,s,o,u){return a||(a=s),c+=t.slice(l,u).replace(dt,Pe),n&&(r=!0,c+="' +\n__e("+n+") +\n'"),o&&(i=!0,c+="';\n"+o+";\n__p += '"),a&&(c+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),l=u+e.length,e})),c+="';\n";var g=Ot.call(e,"variable")&&e.variable;g||(c="with (obj) {\n"+c+"\n}\n"),c=(i?c.replace(E,""):c).replace(L,"$1").replace(D,"$1;"),c="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(r?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+c+"return __p\n}";var p=Vo((function(){return ht(o,h+"return "+c).apply(void 0,u)}));if(p.source=c,js(p))throw p;return p},Nn.times=function(t,e){if((t=no(t))<1||t>9007199254740991)return[];var n=4294967295,a=sn(t,4294967295);t-=4294967295;for(var r=Ie(a,e=Kr(e));++n<t;)e(n);return r},Nn.toFinite=eo,Nn.toInteger=no,Nn.toLength=ao,Nn.toLower=function(t){return so(t).toLowerCase()},Nn.toNumber=ro,Nn.toSafeInteger=function(t){return t?Kn(no(t),-9007199254740991,9007199254740991):0===t?t:0},Nn.toString=so,Nn.toUpper=function(t){return so(t).toUpperCase()},Nn.trim=function(t,e,n){if((t=so(t))&&(n||void 0===e))return t.replace(W,"");if(!t||!(e=$a(e)))return t;var a=Be(t),r=Be(e);return or(a,Ae(a,r),ke(a,r)+1).join("")},Nn.trimEnd=function(t,e,n){if((t=so(t))&&(n||void 0===e))return t.replace($,"");if(!t||!(e=$a(e)))return t;var a=Be(t);return or(a,0,ke(a,Be(e))+1).join("")},Nn.trimStart=function(t,e,n){if((t=so(t))&&(n||void 0===e))return t.replace(K,"");if(!t||!(e=$a(e)))return t;var a=Be(t);return or(a,Ae(a,Be(e))).join("")},Nn.truncate=function(t,e){var n=30,a="...";if(zs(e)){var r="separator"in e?e.separator:r;n="length"in e?no(e.length):n,a="omission"in e?$a(e.omission):a}var i=(t=so(t)).length;if(Me(t)){var s=Be(t);i=s.length}if(n>=i)return t;var o=n-ze(a);if(o<1)return a;var u=s?or(s,0,o).join(""):t.slice(0,o);if(void 0===r)return u+a;if(s&&(o+=u.length-o),Ws(r)){if(t.slice(o).search(r)){var l,d=u;for(r.global||(r=bt(r.source,so(nt.exec(r))+"g")),r.lastIndex=0;l=r.exec(d);)var c=l.index;u=u.slice(0,void 0===c?o:c)}}else if(t.indexOf($a(r),o)!=o){var f=u.lastIndexOf(r);f>-1&&(u=u.slice(0,f))}return u+a},Nn.unescape=function(t){return(t=so(t))&&q.test(t)?t.replace(P,Ye):t},Nn.uniqueId=function(t){var e=++wt;return so(t)+e},Nn.upperCase=jo,Nn.upperFirst=Fo,Nn.each=ss,Nn.eachRight=os,Nn.first=Di,Zo(Nn,(su={},oa(Nn,(function(t,e){Ot.call(Nn.prototype,e)||(su[e]=t)})),su),{chain:!1}),Nn.VERSION="4.17.15",re(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Nn[t].placeholder=Nn})),re(["drop","take"],(function(t,e){kn.prototype[t]=function(n){n=void 0===n?1:rn(no(n),0);var a=this.__filtered__&&!e?new kn(this):this.clone();return a.__filtered__?a.__takeCount__=sn(n,a.__takeCount__):a.__views__.push({size:sn(n,4294967295),type:t+(a.__dir__<0?"Right":"")}),a},kn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),re(["filter","map","takeWhile"],(function(t,e){var n=e+1,a=1==n||3==n;kn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Kr(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}})),re(["head","last"],(function(t,e){var n="take"+(e?"Right":"");kn.prototype[t]=function(){return this[n](1).value()[0]}})),re(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");kn.prototype[t]=function(){return this.__filtered__?new kn(this):this[n](1)}})),kn.prototype.compact=function(){return this.filter(Uo)},kn.prototype.find=function(t){return this.filter(t).head()},kn.prototype.findLast=function(t){return this.reverse().find(t)},kn.prototype.invokeMap=Ma((function(t,e){return"function"==typeof t?new kn(this):this.map((function(n){return ma(n,t,e)}))})),kn.prototype.reject=function(t){return this.filter(Os(Kr(t)))},kn.prototype.slice=function(t,e){t=no(t);var n=this;return n.__filtered__&&(t>0||e<0)?new kn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=no(e))<0?n.dropRight(-e):n.take(e-t)),n)},kn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},kn.prototype.toArray=function(){return this.take(4294967295)},oa(kn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),r=Nn[a?"take"+("last"==e?"Right":""):e],i=a||/^find/.test(e);r&&(Nn.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,o=e instanceof kn,u=s[0],l=o||Es(e),d=function(t){var e=r.apply(Nn,ce([t],s));return a&&c?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(o=l=!1);var c=this.__chain__,f=!!this.__actions__.length,h=i&&!c,g=o&&!f;if(!i&&l){e=g?e:new kn(this);var p=t.apply(e,s);return p.__actions__.push({func:es,args:[d],thisArg:void 0}),new An(p,c)}return h&&g?t.apply(this,s):(p=this.thru(d),h?a?p.value()[0]:p.value():p)})})),re(["pop","push","shift","sort","splice","unshift"],(function(t){var e=vt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);Nn.prototype[t]=function(){var t=arguments;if(a&&!this.__chain__){var r=this.value();return e.apply(Es(r)?r:[],t)}return this[n]((function(n){return e.apply(Es(n)?n:[],t)}))}})),oa(kn.prototype,(function(t,e){var n=Nn[e];if(n){var a=n.name+"";Ot.call(yn,a)||(yn[a]=[]),yn[a].push({name:e,func:n})}})),yn[Ir(void 0,2).name]=[{name:"wrapper",func:void 0}],kn.prototype.clone=function(){var t=new kn(this.__wrapped__);return t.__actions__=pr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=pr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=pr(this.__views__),t},kn.prototype.reverse=function(){if(this.__filtered__){var t=new kn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},kn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Es(t),a=e<0,r=n?t.length:0,i=function(t,e,n){for(var a=-1,r=n.length;++a<r;){var i=n[a],s=i.size;switch(i.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=sn(e,t+s);break;case"takeRight":t=rn(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=i.start,o=i.end,u=o-s,l=a?o:s-1,d=this.__iteratees__,c=d.length,f=0,h=sn(u,this.__takeCount__);if(!n||!a&&r==u&&h==u)return tr(t,this.__actions__);var g=[];t:for(;u--&&f<h;){for(var p=-1,b=t[l+=e];++p<c;){var m=d[p],y=m.type,v=(0,m.iteratee)(b);if(2==y)b=v;else if(!v){if(1==y)continue t;break t}}g[f++]=b}return g},Nn.prototype.at=ns,Nn.prototype.chain=function(){return ts(this)},Nn.prototype.commit=function(){return new An(this.value(),this.__chain__)},Nn.prototype.next=function(){void 0===this.__values__&&(this.__values__=to(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},Nn.prototype.plant=function(t){for(var e,n=this;n instanceof Rn;){var a=Ni(n);a.__index__=0,a.__values__=void 0,e?r.__wrapped__=a:e=a;var r=a;n=n.__wrapped__}return r.__wrapped__=t,e},Nn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof kn){var e=t;return this.__actions__.length&&(e=new kn(this)),(e=e.reverse()).__actions__.push({func:es,args:[zi],thisArg:void 0}),new An(e,this.__chain__)}return this.thru(zi)},Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return tr(this.__wrapped__,this.__actions__)},Nn.prototype.first=Nn.prototype.head,Oe&&(Nn.prototype[Oe]=function(){return this}),Nn}();Yt._=He,void 0===(a=(function(){return He}).call(e,n,e,t))||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},MJIl:function(t,e,n){var a=n("QoRX"),r=n("ut/Y"),i=n("Nh2a"),s=n("Z0cm"),o=n("mv/X");t.exports=function(t,e,n){var u=s(t)?a:i;return n&&o(t,e,n)&&(e=void 0),u(t,r(e,3))}},MMmD:function(t,e,n){var a=n("lSCD"),r=n("shjB");t.exports=function(t){return null!=t&&r(t.length)&&!a(t)}},"MO+k":function(t,e,n){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:n,rgb2hsv:a,rgb2hwb:i,rgb2cmyk:s,rgb2keyword:o,rgb2xyz:u,rgb2lab:l,rgb2lch:function(t){return v(l(t))},hsl2rgb:d,hsl2hsv:function(t){var e=t[1]/100,n=t[2]/100;return 0===n?[0,0,0]:[t[0],2*(e*=(n*=2)<=1?n:2-n)/(n+e)*100,(n+e)/2*100]},hsl2hwb:function(t){return i(d(t))},hsl2cmyk:function(t){return s(d(t))},hsl2keyword:function(t){return o(d(t))},hsv2rgb:c,hsv2hsl:function(t){var e,n,a=t[1]/100,r=t[2]/100;return e=a*r,[t[0],100*(e=(e/=(n=(2-a)*r)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return i(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return o(c(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return o(f(t))},cmyk2rgb:h,cmyk2hsl:function(t){return n(h(t))},cmyk2hsv:function(t){return a(h(t))},cmyk2hwb:function(t){return i(h(t))},cmyk2keyword:function(t){return o(h(t))},keyword2rgb:T,keyword2hsl:function(t){return n(T(t))},keyword2hsv:function(t){return a(T(t))},keyword2hwb:function(t){return i(T(t))},keyword2cmyk:function(t){return s(T(t))},keyword2lab:function(t){return l(T(t))},keyword2xyz:function(t){return u(T(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return v(m(t))},lab2xyz:y,lab2rgb:x,lab2lch:v,lch2lab:_,lch2xyz:function(t){return y(_(t))},lch2rgb:function(t){return x(_(t))}};function n(t){var e,n,a=t[0]/255,r=t[1]/255,i=t[2]/255,s=Math.min(a,r,i),o=Math.max(a,r,i),u=o-s;return o==s?e=0:a==o?e=(r-i)/u:r==o?e=2+(i-a)/u:i==o&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),n=(s+o)/2,[e,100*(o==s?0:n<=.5?u/(o+s):u/(2-o-s)),100*n]}function a(t){var e,n,a=t[0],r=t[1],i=t[2],s=Math.min(a,r,i),o=Math.max(a,r,i),u=o-s;return n=0==o?0:u/o*1e3/10,o==s?e=0:a==o?e=(r-i)/u:r==o?e=2+(i-a)/u:i==o&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,o/255*1e3/10]}function i(t){var e=t[0],a=t[1],r=t[2];return[n(t)[0],1/255*Math.min(e,Math.min(a,r))*100,100*(r=1-1/255*Math.max(e,Math.max(a,r)))]}function s(t){var e,n=t[0]/255,a=t[1]/255,r=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-a,1-r)))/(1-e)||0),100*((1-a-e)/(1-e)||0),100*((1-r-e)/(1-e)||0),100*e]}function o(t){return w[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92)),100*(.2126*e+.7152*n+.0722*a),100*(.0193*e+.1192*n+.9505*a)]}function l(t){var e=u(t),n=e[0],a=e[1],r=e[2];return a/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116)-16,500*(n-a),200*(a-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]}function d(t){var e,n,a,r,i,s=t[0]/360,o=t[1]/100,u=t[2]/100;if(0==o)return[i=255*u,i,i];e=2*u-(n=u<.5?u*(1+o):u+o-u*o),r=[0,0,0];for(var l=0;l<3;l++)(a=s+1/3*-(l-1))<0&&a++,a>1&&a--,r[l]=255*(i=6*a<1?e+6*(n-e)*a:2*a<1?n:3*a<2?e+(n-e)*(2/3-a)*6:e);return r}function c(t){var e=t[0]/60,n=t[1]/100,a=t[2]/100,r=Math.floor(e)%6,i=e-Math.floor(e),s=255*a*(1-n),o=255*a*(1-n*i),u=255*a*(1-n*(1-i));switch(a*=255,r){case 0:return[a,u,s];case 1:return[o,a,s];case 2:return[s,a,u];case 3:return[s,o,a];case 4:return[u,s,a];case 5:return[a,s,o]}}function f(t){var e,n,a,i,s=t[0]/360,o=t[1]/100,u=t[2]/100,l=o+u;switch(l>1&&(o/=l,u/=l),a=6*s-(e=Math.floor(6*s)),0!=(1&e)&&(a=1-a),i=o+a*((n=1-u)-o),e){default:case 6:case 0:r=n,g=i,b=o;break;case 1:r=i,g=n,b=o;break;case 2:r=o,g=n,b=i;break;case 3:r=o,g=i,b=n;break;case 4:r=i,g=o,b=n;break;case 5:r=n,g=o,b=i}return[255*r,255*g,255*b]}function h(t){var e=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,t[0]/100*(1-a)+a)),255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,n,a,r=t[0]/100,i=t[1]/100,s=t[2]/100;return n=-.9689*r+1.8758*i+.0415*s,a=.0557*r+-.204*i+1.057*s,e=(e=3.2406*r+-1.5372*i+-.4986*s)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(a=Math.min(Math.max(0,a),1))]}function m(t){var e=t[0],n=t[1],a=t[2];return n/=100,a/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function y(t){var e,n,a,r,i=t[0],s=t[1],o=t[2];return i<=8?r=(n=100*i/903.3)/100*7.787+16/116:(n=100*Math.pow((i+16)/116,3),r=Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(s/500+r-16/116)/7.787:95.047*Math.pow(s/500+r,3),n,a=a/108.883<=.008859?a=108.883*(r-o/200-16/116)/7.787:108.883*Math.pow(r-o/200,3)]}function v(t){var e,n=t[0],a=t[1],r=t[2];return(e=360*Math.atan2(r,a)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(a*a+r*r),e]}function x(t){return p(y(t))}function _(t){var e,n=t[1];return e=t[2]/360*2*Math.PI,[t[0],n*Math.cos(e),n*Math.sin(e)]}function T(t){return O[t]}var O={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},w={};for(var S in O)w[JSON.stringify(O[S])]=S;var I=function(){return new k};for(var N in e){I[N+"Raw"]=function(t){return function(n){return"number"==typeof n&&(n=Array.prototype.slice.call(arguments)),e[t](n)}}(N);var C=/(\w+)2(\w+)/.exec(N),R=C[1],A=C[2];(I[R]=I[R]||{})[A]=I[N]=function(t){return function(n){"number"==typeof n&&(n=Array.prototype.slice.call(arguments));var a=e[t](n);if("string"==typeof a||void 0===a)return a;for(var r=0;r<a.length;r++)a[r]=Math.round(a[r]);return a}}(N)}var k=function(){this.convs={}};k.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},k.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},k.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=I[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach((function(t){k.prototype[t]=function(e){return this.routeSpace(t,arguments)}}));var E=I,L={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},D={getRgba:P,getHsla:M,getRgb:function(t){var e=P(t);return e&&e.slice(0,3)},getHsl:function(t){var e=M(t);return e&&e.slice(0,3)},getHwb:q,getAlpha:function(t){var e=P(t);return e?e[3]:(e=M(t))?e[3]:(e=q(t))?e[3]:void 0},hexString:function(t,e){return e=void 0!==e&&3===t.length?e:t[3],"#"+z(t[0])+z(t[1])+z(t[2])+(e>=0&&e<1?z(Math.round(255*e)):"")},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?j(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:j,percentString:function(t,e){return e<1||t[3]&&t[3]<1?F(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:F,hslString:function(t,e){return e<1||t[3]&&t[3]<1?G(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:G,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return B[t.slice(0,3)]}};function P(t){if(t){var e=[0,0,0],n=1,a=t.match(/^#([a-fA-F0-9]{3,4})$/i),r="";if(a){r=(a=a[1])[3];for(var i=0;i<e.length;i++)e[i]=parseInt(a[i]+a[i],16);r&&(n=Math.round(parseInt(r+r,16)/255*100)/100)}else if(a=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(r=a[2],a=a[1],i=0;i<e.length;i++)e[i]=parseInt(a.slice(2*i,2*i+2),16);r&&(n=Math.round(parseInt(r,16)/255*100)/100)}else if(a=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=parseInt(a[i+1]);n=parseFloat(a[4])}else if(a=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(i=0;i<e.length;i++)e[i]=Math.round(2.55*parseFloat(a[i+1]));n=parseFloat(a[4])}else if(a=t.match(/(\w+)/)){if("transparent"==a[1])return[0,0,0,0];if(!(e=L[a[1]]))return}for(i=0;i<e.length;i++)e[i]=V(e[i],0,255);return n=n||0==n?V(n,0,1):1,e[3]=n,e}}function M(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[V(parseInt(e[1]),0,360),V(parseFloat(e[2]),0,100),V(parseFloat(e[3]),0,100),V(isNaN(n)?1:n,0,1)]}}}function q(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[V(parseInt(e[1]),0,360),V(parseFloat(e[2]),0,100),V(parseFloat(e[3]),0,100),V(isNaN(n)?1:n,0,1)]}}}function j(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function F(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function G(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function V(t,e,n){return Math.min(Math.max(e,t),n)}function z(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var B={};for(var Y in L)B[L[Y]]=Y;var H=function(t){return t instanceof H?t:this instanceof H?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=D.getRgba(t))?this.setValues("rgb",e):(e=D.getHsla(t))?this.setValues("hsl",e):(e=D.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new H(t);var e};H.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return D.hexString(this.values.rgb)},rgbString:function(){return D.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return D.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return D.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return D.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return D.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return D.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return D.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var a=t[n]/255;e[n]=a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,a=void 0===e?.5:e,r=2*a-1,i=this.alpha()-n.alpha(),s=((r*i==-1?r:(r+i)/(1+r*i))+1)/2,o=1-s;return this.rgb(s*this.red()+o*n.red(),s*this.green()+o*n.green(),s*this.blue()+o*n.blue()).alpha(this.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new H,a=this.values,r=n.values;for(var i in a)a.hasOwnProperty(i)&&("[object Array]"===(e={}.toString.call(t=a[i]))?r[i]=t.slice(0):"[object Number]"===e?r[i]=t:console.error("unexpected color value:",t));return n}},H.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},H.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},H.prototype.getValues=function(t){for(var e=this.values,n={},a=0;a<t.length;a++)n[t.charAt(a)]=e[t][a];return 1!==e.alpha&&(n.a=e.alpha),n},H.prototype.setValues=function(t,e){var n,a,r=this.values,i=this.spaces,s=this.maxes,o=1;if(this.valid=!0,"alpha"===t)o=e;else if(e.length)r[t]=e.slice(0,t.length),o=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)r[t][n]=e[t.charAt(n)];o=e.a}else if(void 0!==e[i[t][0]]){var u=i[t];for(n=0;n<t.length;n++)r[t][n]=e[u[n]];o=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===o?r.alpha:o)),"alpha"===t)return!1;for(n=0;n<t.length;n++)a=Math.max(0,Math.min(s[t][n],r[t][n])),r[t][n]=Math.round(a);for(var l in i)l!==t&&(r[l]=E[t][l](r[t]));return!0},H.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},H.prototype.setChannel=function(t,e,n){var a=this.values[t];return void 0===n?a[e]:n===a[e]?this:(a[e]=n,this.setValues(t,a),this)},"undefined"!=typeof window&&(window.Color=H);var U,W=H,K={noop:function(){},uid:(U=0,function(){return U++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return K.valueOrDefault(K.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var r,i,s;if(K.isArray(t))if(i=t.length,a)for(r=i-1;r>=0;r--)e.call(n,t[r],r);else for(r=0;r<i;r++)e.call(n,t[r],r);else if(K.isObject(t))for(i=(s=Object.keys(t)).length,r=0;r<i;r++)e.call(n,t[s[r]],s[r])},arrayEquals:function(t,e){var n,a,r,i;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(i=e[n],(r=t[n])instanceof Array&&i instanceof Array){if(!K.arrayEquals(r,i))return!1}else if(r!==i)return!1;return!0},clone:function(t){if(K.isArray(t))return t.map(K.clone);if(K.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,r=0;r<a;++r)e[n[r]]=K.clone(t[n[r]]);return e}return t},_merger:function(t,e,n,a){var r=e[t],i=n[t];K.isObject(r)&&K.isObject(i)?K.merge(r,i,a):e[t]=K.clone(i)},_mergerIf:function(t,e,n){var a=e[t],r=n[t];K.isObject(a)&&K.isObject(r)?K.mergeIf(a,r):e.hasOwnProperty(t)||(e[t]=K.clone(r))},merge:function(t,e,n){var a,r,i,s,o,u=K.isArray(e)?e:[e],l=u.length;if(!K.isObject(t))return t;for(a=(n=n||{}).merger||K._merger,r=0;r<l;++r)if(K.isObject(e=u[r]))for(o=0,s=(i=Object.keys(e)).length;o<s;++o)a(i[o],t,e,n);return t},mergeIf:function(t,e){return K.merge(t,e,{merger:K._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,a=arguments.length;n<a;++n)K.each(arguments[n],e);return t},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=n};return a.prototype=e.prototype,n.prototype=new a,n.extend=K.inherits,t&&K.extend(n.prototype,t),n.__super__=e.prototype,n}},$=K;K.callCallback=K.callback,K.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},K.getValueOrDefault=K.valueOrDefault,K.getValueAtIndexOrDefault=K.valueAtIndexOrDefault;var Z={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),-a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:1===t?1:(n||(n=.3),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),a*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,a=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),a<1?(a=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/a),t<1?a*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:a*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-Z.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*Z.easeInBounce(2*t):.5*Z.easeOutBounce(2*t-1)+.5}},J={effects:Z};$.easingEffects=Z;var Q=Math.PI,X=Q/180,tt=2*Q,et=Q/2,nt=Q/4,at=2*Q/3,rt={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,a,r,i){if(i){var s=Math.min(i,r/2,a/2),o=e+s,u=n+s,l=e+a-s,d=n+r-s;t.moveTo(e,u),o<l&&u<d?(t.arc(o,u,s,-Q,-et),t.arc(l,u,s,-et,0),t.arc(l,d,s,0,et),t.arc(o,d,s,et,Q)):o<l?(t.moveTo(o,n),t.arc(l,u,s,-et,et),t.arc(o,u,s,et,Q+et)):u<d?(t.arc(o,u,s,-Q,0),t.arc(o,d,s,0,Q)):t.arc(o,u,s,-Q,Q),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,a,r)},drawPoint:function(t,e,n,a,r,i){var s,o,u,l,d,c=(i||0)*X;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(s=e.toString())&&"[object HTMLCanvasElement]"!==s){if(!(isNaN(n)||n<=0)){switch(t.beginPath(),e){default:t.arc(a,r,n,0,tt),t.closePath();break;case"triangle":t.moveTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),c+=at,t.lineTo(a+Math.sin(c)*n,r-Math.cos(c)*n),t.closePath();break;case"rectRounded":l=n-(d=.516*n),o=Math.cos(c+nt)*l,u=Math.sin(c+nt)*l,t.arc(a-o,r-u,d,c-Q,c-et),t.arc(a+u,r-o,d,c-et,c),t.arc(a+o,r+u,d,c,c+et),t.arc(a-u,r+o,d,c+et,c+Q),t.closePath();break;case"rect":if(!i){l=Math.SQRT1_2*n,t.rect(a-l,r-l,2*l,2*l);break}c+=nt;case"rectRot":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+u,r-o),t.lineTo(a+o,r+u),t.lineTo(a-u,r+o),t.closePath();break;case"crossRot":c+=nt;case"cross":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u),t.moveTo(a+u,r-o),t.lineTo(a-u,r+o);break;case"star":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u),t.moveTo(a+u,r-o),t.lineTo(a-u,r+o),c+=nt,o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u),t.moveTo(a+u,r-o),t.lineTo(a-u,r+o);break;case"line":o=Math.cos(c)*n,u=Math.sin(c)*n,t.moveTo(a-o,r-u),t.lineTo(a+o,r+u);break;case"dash":t.moveTo(a,r),t.lineTo(a+Math.cos(c)*n,r+Math.sin(c)*n)}t.fill(),t.stroke()}}else t.drawImage(e,a-e.width/2,r-e.height/2,e.width,e.height)},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,a){var r=n.steppedLine;if(r){if("middle"===r){var i=(e.x+n.x)/2;t.lineTo(i,a?n.y:e.y),t.lineTo(i,a?e.y:n.y)}else"after"===r&&!a||"after"!==r&&a?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}else n.tension?t.bezierCurveTo(a?e.controlPointPreviousX:e.controlPointNextX,a?e.controlPointPreviousY:e.controlPointNextY,a?n.controlPointNextX:n.controlPointPreviousX,a?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},it=rt;$.clear=rt.clear,$.drawRoundedRectangle=function(t){t.beginPath(),rt.roundedRect.apply(rt,arguments)};var st={_set:function(t,e){return $.merge(this[t]||(this[t]={}),e)}};st._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var ot=st,ut=$.valueOrDefault,lt={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,r;return $.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,r=+t.left||0):e=n=a=r=+t||0,{top:e,right:n,bottom:a,left:r,height:e+a,width:r+n}},_parseFont:function(t){var e=ot.global,n=ut(t.fontSize,e.defaultFontSize),a={family:ut(t.fontFamily,e.defaultFontFamily),lineHeight:$.options.toLineHeight(ut(t.lineHeight,e.defaultLineHeight),n),size:n,style:ut(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return a.string=function(t){return!t||$.isNullOrUndef(t.size)||$.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(a),a},resolve:function(t,e,n){var a,r,i;for(a=0,r=t.length;a<r;++a)if(void 0!==(i=t[a])&&(void 0!==e&&"function"==typeof i&&(i=i(e)),void 0!==n&&$.isArray(i)&&(i=i[n]),void 0!==i))return i}},dt=$,ct=it,ft=lt;dt.easing=J,dt.canvas=ct,dt.options=ft;var ht=function(t){dt.extend(this,t),this.initialize.apply(this,arguments)};dt.extend(ht.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=dt.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,a=e._start,r=e._view;return n&&1!==t?(r||(r=e._view={}),a||(a=e._start={}),function(t,e,n,a){var r,i,s,o,u,l,d,c,f,h=Object.keys(n);for(r=0,i=h.length;r<i;++r)if(l=n[s=h[r]],e.hasOwnProperty(s)||(e[s]=l),(o=e[s])!==l&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=o),(d=typeof l)==typeof(u=t[s]))if("string"===d){if((c=W(u)).valid&&(f=W(l)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if(dt.isFinite(u)&&dt.isFinite(l)){e[s]=u+(l-u)*a;continue}e[s]=l}}(a,r,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return dt.isNumber(this._model.x)&&dt.isNumber(this._model.y)}}),ht.extend=dt.inherits;var gt=ht,pt=gt.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),bt=pt;Object.defineProperty(pt.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(pt.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),ot._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:dt.noop,onComplete:dt.noop}});var mt={animations:[],request:null,addAnimation:function(t,e,n,a){var r,i,s=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=n,a||(t.animating=!0),r=0,i=s.length;r<i;++r)if(s[r].chart===t)return void(s[r]=e);s.push(e),1===s.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=dt.findIndex(this.animations,(function(e){return e.chart===t}));-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=dt.requestAnimFrame.call(window,(function(){t.request=null,t.startDigest()})))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,a,r=this.animations,i=0;i<r.length;)e=(t=r[i]).chart,n=t.numSteps,a=Math.floor((Date.now()-t.startTime)/t.duration*n)+1,t.currentStep=Math.min(a,n),dt.callback(t.render,[e,t],e),dt.callback(t.onAnimationProgress,[t],e),t.currentStep>=n?(dt.callback(t.onAnimationComplete,[t],e),e.animating=!1,r.splice(i,1)):++i}},yt=dt.options.resolve,vt=["push","pop","shift","splice","unshift"];function xt(t,e){var n=t._chartjs;if(n){var a=n.listeners,r=a.indexOf(e);-1!==r&&a.splice(r,1),a.length>0||(vt.forEach((function(e){delete t[e]})),delete t._chartjs)}}var _t=function(t,e){this.initialize(t,e)};dt.extend(_t.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&xt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),a=this.getDataset().data||[],r=n.data;for(t=0,e=a.length;t<e;++t)r[t]=r[t]||this.createMetaData(t);n.dataset=n.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,n=this,a=n.getDataset(),r=a.data||(a.data=[]);n._data!==r&&(n._data&&xt(n._data,n),r&&Object.isExtensible(r)&&(e=n,(t=r)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),vt.forEach((function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),r=a.apply(this,e);return dt.each(t._chartjs.listeners,(function(t){"function"==typeof t[n]&&t[n].apply(t,e)})),r}})})))),n._data=r),n.resyncElements()},update:dt.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],a=n.length,r=0;r<a;++r)n[r].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,a=0;for(t.dataset&&t.dataset.draw();a<n;++a)e[a].draw()},removeHoverStyle:function(t){dt.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},r=t._model,i=dt.getHoverColor;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth},r.backgroundColor=yt([a.hoverBackgroundColor,e.hoverBackgroundColor,i(r.backgroundColor)],void 0,n),r.borderColor=yt([a.hoverBorderColor,e.hoverBorderColor,i(r.borderColor)],void 0,n),r.borderWidth=yt([a.hoverBorderWidth,e.hoverBorderWidth,r.borderWidth],void 0,n)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,a=e.length;a<n?t.data.splice(a,n-a):a>n&&this.insertElements(n,a-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),_t.extend=dt.inherits;var Tt=_t;ot._set("global",{elements:{arc:{backgroundColor:ot.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var Ot=gt.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var a=dt.getAngleFromPoint(n,{x:t,y:e}),r=a.angle,i=a.distance,s=n.startAngle,o=n.endAngle;o<s;)o+=2*Math.PI;for(;r>o;)r-=2*Math.PI;for(;r<s;)r+=2*Math.PI;return r>=s&&r<=o&&i>=n.innerRadius&&i<=n.outerRadius}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,a=n.startAngle,r=n.endAngle,i="inner"===n.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(n.x,n.y,Math.max(n.outerRadius-i,0),a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.fillStyle=n.backgroundColor,e.fill(),n.borderWidth&&("inner"===n.borderAlign?(e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a-(t=i/n.outerRadius),r+t),n.innerRadius>i?e.arc(n.x,n.y,n.innerRadius-i,r+(t=i/n.innerRadius),a-t,!0):e.arc(n.x,n.y,i,r+Math.PI/2,a-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(n.x,n.y,n.outerRadius,a,r),e.arc(n.x,n.y,n.innerRadius,r,a,!0),e.closePath(),e.lineWidth=2*n.borderWidth,e.lineJoin="round"):(e.lineWidth=n.borderWidth,e.lineJoin="bevel"),e.strokeStyle=n.borderColor,e.stroke()),e.restore()}}),wt=dt.valueOrDefault,St=ot.global.defaultColor;ot._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var It=gt.extend({draw:function(){var t,e,n,a,r=this._view,i=this._chart.ctx,s=r.spanGaps,o=this._children.slice(),u=ot.global,l=u.elements.line,d=-1;for(this._loop&&o.length&&o.push(o[0]),i.save(),i.lineCap=r.borderCapStyle||l.borderCapStyle,i.setLineDash&&i.setLineDash(r.borderDash||l.borderDash),i.lineDashOffset=wt(r.borderDashOffset,l.borderDashOffset),i.lineJoin=r.borderJoinStyle||l.borderJoinStyle,i.lineWidth=wt(r.borderWidth,l.borderWidth),i.strokeStyle=r.borderColor||u.defaultColor,i.beginPath(),d=-1,t=0;t<o.length;++t)e=o[t],n=dt.previousItem(o,t),a=e._view,0===t?a.skip||(i.moveTo(a.x,a.y),d=t):(n=-1===d?n:o[d],a.skip||(d!==t-1&&!s||-1===d?i.moveTo(a.x,a.y):dt.canvas.lineTo(i,n._view,e._view),d=t));i.stroke(),i.restore()}}),Nt=dt.valueOrDefault,Ct=ot.global.defaultColor;function Rt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}ot._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:Ct,borderColor:Ct,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var At=gt.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:Rt,inXRange:Rt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._chart.ctx,a=e.pointStyle,r=e.rotation,i=e.radius,s=e.x,o=e.y,u=ot.global,l=u.defaultColor;e.skip||(void 0===t||dt.canvas._isPointInArea(e,t))&&(n.strokeStyle=e.borderColor||l,n.lineWidth=Nt(e.borderWidth,u.elements.point.borderWidth),n.fillStyle=e.backgroundColor||l,dt.canvas.drawPoint(n,a,i,s,o,r))}}),kt=ot.global.defaultColor;function Et(t){return t&&void 0!==t.width}function Lt(t){var e,n,a,r,i;return Et(t)?(e=t.x-(i=t.width/2),n=t.x+i,a=Math.min(t.y,t.base),r=Math.max(t.y,t.base)):(i=t.height/2,e=Math.min(t.x,t.base),n=Math.max(t.x,t.base),a=t.y-i,r=t.y+i),{left:e,top:a,right:n,bottom:r}}function Dt(t,e,n){return t===e?n:t===n?e:t}function Pt(t,e,n){var a=null===e,r=null===n,i=!(!t||a&&r)&&Lt(t);return i&&(a||e>=i.left&&e<=i.right)&&(r||n>=i.top&&n<=i.bottom)}ot._set("global",{elements:{rectangle:{backgroundColor:kt,borderColor:kt,borderSkipped:"bottom",borderWidth:0}}});var Mt=gt.extend({draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=Lt(t),n=e.right-e.left,a=e.bottom-e.top,r=function(t,e,n){var a,r,i,s,o=t.borderWidth,u=function(t){var e=t.borderSkipped,n={};return e?(t.horizontal?t.base>t.x&&(e=Dt(e,"left","right")):t.base<t.y&&(e=Dt(e,"bottom","top")),n[e]=!0,n):n}(t);return dt.isObject(o)?(a=+o.top||0,r=+o.right||0,i=+o.bottom||0,s=+o.left||0):a=r=i=s=+o||0,{t:u.top||a<0?0:a>n?n:a,r:u.right||r<0?0:r>e?e:r,b:u.bottom||i<0?0:i>n?n:i,l:u.left||s<0?0:s>e?e:s}}(t,n/2,a/2);return{outer:{x:e.left,y:e.top,w:n,h:a},inner:{x:e.left+r.l,y:e.top+r.t,w:n-r.l-r.r,h:a-r.t-r.b}}}(e),a=n.outer,r=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(a.x,a.y,a.w,a.h),a.w===r.w&&a.h===r.h||(t.save(),t.beginPath(),t.rect(a.x,a.y,a.w,a.h),t.clip(),t.fillStyle=e.borderColor,t.rect(r.x,r.y,r.w,r.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Pt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return Et(n)?Pt(n,t,null):Pt(n,null,e)},inXRange:function(t){return Pt(this._view,t,null)},inYRange:function(t){return Pt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return Et(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return Et(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),qt={},jt=It,Ft=At,Gt=Mt;qt.Arc=Ot,qt.Line=jt,qt.Point=Ft,qt.Rectangle=Gt;var Vt=dt.options.resolve;ot._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var zt=Tt.extend({dataElementType:qt.Rectangle,initialize:function(){var t,e=this;Tt.prototype.initialize.apply(e,arguments),(t=e.getMeta()).stack=e.getDataset().stack,t.bar=!0},update:function(t){var e,n,a=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=a.length;e<n;++e)this.updateElement(a[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=a.getDataset(),s=a._resolveElementOptions(t,e);t._xScale=a.getScaleForId(r.xAxisID),t._yScale=a.getScaleForId(r.yAxisID),t._datasetIndex=a.index,t._index=e,t._model={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderSkipped:s.borderSkipped,borderWidth:s.borderWidth,datasetLabel:i.label,label:a.chart.data.labels[e]},a._updateElementGeometry(t,e,n),t.pivot()},_updateElementGeometry:function(t,e,n){var a=this,r=t._model,i=a._getValueScale(),s=i.getBasePixel(),o=i.isHorizontal(),u=a._ruler||a.getRuler(),l=a.calculateBarValuePixels(a.index,e),d=a.calculateBarIndexPixels(a.index,e,u);r.horizontal=o,r.base=n?s:l.base,r.x=o?n?s:l.head:d.center,r.y=o?d.center:n?s:l.head,r.height=o?d.size:void 0,r.width=o?void 0:d.size},_getStacks:function(t){var e,n,a=this.chart,r=this._getIndexScale().options.stacked,i=void 0===t?a.data.datasets.length:t+1,s=[];for(e=0;e<i;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===r||!0===r&&-1===s.indexOf(n.stack)||void 0===r&&(void 0===n.stack||-1===s.indexOf(n.stack)))&&s.push(n.stack);return s},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),a=void 0!==e?n.indexOf(e):-1;return-1===a?n.length-1:a},getRuler:function(){var t,e,n=this._getIndexScale(),a=this.getStackCount(),r=this.index,i=n.isHorizontal(),s=i?n.left:n.top,o=s+(i?n.width:n.height),u=[];for(t=0,e=this.getMeta().data.length;t<e;++t)u.push(n.getPixelForValue(null,t,r));return{min:dt.isNullOrUndef(n.options.barThickness)?function(t,e){var n,a,r,i,s=t.isHorizontal()?t.width:t.height,o=t.getTicks();for(r=1,i=e.length;r<i;++r)s=Math.min(s,Math.abs(e[r]-e[r-1]));for(r=0,i=o.length;r<i;++r)a=t.getPixelForTick(r),s=r>0?Math.min(s,a-n):s,n=a;return s}(n,u):-1,pixels:u,start:s,end:o,stackCount:a,scale:n}},calculateBarValuePixels:function(t,e){var n,a,r,i,s,o,u=this.chart,l=this.getMeta(),d=this._getValueScale(),c=d.isHorizontal(),f=u.data.datasets,h=+d.getRightValue(f[t].data[e]),g=d.options.minBarLength,p=d.options.stacked,b=l.stack,m=0;if(p||void 0===p&&void 0!==b)for(n=0;n<t;++n)(a=u.getDatasetMeta(n)).bar&&a.stack===b&&a.controller._getValueScaleId()===d.id&&u.isDatasetVisible(n)&&(r=+d.getRightValue(f[n].data[e]),(h<0&&r<0||h>=0&&r>0)&&(m+=r));return i=d.getPixelForValue(m),o=(s=d.getPixelForValue(m+h))-i,void 0!==g&&Math.abs(o)<g&&(o=g,s=h>=0&&!c||h<0&&c?i-g:i+g),{size:o,base:i,head:s,center:s+o/2}},calculateBarIndexPixels:function(t,e,n){var a=n.scale.options,r="flex"===a.barThickness?function(t,e,n){var a,r=e.pixels,i=r[t],s=t>0?r[t-1]:null,o=t<r.length-1?r[t+1]:null,u=n.categoryPercentage;return null===s&&(s=i-(null===o?e.end-e.start:o-i)),null===o&&(o=i+i-s),a=i-(i-Math.min(s,o))/2*u,{chunk:Math.abs(o-s)/2*u/e.stackCount,ratio:n.barPercentage,start:a}}(e,n,a):function(t,e,n){var a,r,i=n.barThickness,s=e.stackCount,o=e.pixels[t];return dt.isNullOrUndef(i)?(a=e.min*n.categoryPercentage,r=n.barPercentage):(a=i*s,r=1),{chunk:a/s,ratio:r,start:o-a/2}}(e,n,a),i=this.getStackIndex(t,this.getMeta().stack),s=r.start+r.chunk*i+r.chunk/2,o=Math.min(dt.valueOrDefault(a.maxBarThickness,1/0),r.chunk*r.ratio);return{base:s-o/2,head:s+o/2,center:s,size:o}},draw:function(){var t=this.chart,e=this._getValueScale(),n=this.getMeta().data,a=this.getDataset(),r=n.length,i=0;for(dt.canvas.clipArea(t.ctx,t.chartArea);i<r;++i)isNaN(e.getRightValue(a.data[i]))||n[i].draw();dt.canvas.unclipArea(t.ctx)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.rectangle,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderSkipped","borderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=Vt([o[r],s[r],u[r]],d,e);return l}}),Bt=dt.valueOrDefault,Yt=dt.options.resolve;ot._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": ("+t.xLabel+", "+t.yLabel+", "+e.datasets[t.datasetIndex].data[t.index].r+")"}}}});var Ht=Tt.extend({dataElementType:qt.Point,update:function(t){var e=this,n=e.getMeta();dt.each(n.data,(function(n,a){e.updateElement(n,a,t)}))},updateElement:function(t,e,n){var a=this,r=a.getMeta(),i=t.custom||{},s=a.getScaleForId(r.xAxisID),o=a.getScaleForId(r.yAxisID),u=a._resolveElementOptions(t,e),l=a.getDataset().data[e],d=a.index,c=n?s.getPixelForDecimal(.5):s.getPixelForValue("object"==typeof l?l:NaN,e,d),f=n?o.getBasePixel():o.getPixelForValue(l,e,d);t._xScale=s,t._yScale=o,t._options=u,t._datasetIndex=d,t._index=e,t._model={backgroundColor:u.backgroundColor,borderColor:u.borderColor,borderWidth:u.borderWidth,hitRadius:u.hitRadius,pointStyle:u.pointStyle,rotation:u.rotation,radius:n?0:u.radius,skip:i.skip||isNaN(c)||isNaN(f),x:c,y:f},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Bt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Bt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Bt(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.point,l=s.data[e],d={},c={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},f=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,a=f.length;n<a;++n)d[r=f[n]]=Yt([o[r],s[r],u[r]],c,e);return d.radius=Yt([o.radius,l?l.r:void 0,s.radius,u.radius],c,e),d}}),Ut=dt.options.resolve,Wt=dt.valueOrDefault;ot._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a],o=s&&s.custom||{},u=t.options.elements.arc;return{text:n,fillStyle:Ut([o.backgroundColor,i.backgroundColor,u.backgroundColor],void 0,a),strokeStyle:Ut([o.borderColor,i.borderColor,u.borderColor],void 0,a),lineWidth:Ut([o.borderWidth,i.borderWidth,u.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i]&&(r.data[i].hidden=!r.data[i].hidden);s.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],a=": "+e.datasets[t.datasetIndex].data[t.index];return dt.isArray(n)?(n=n.slice())[0]+=a:n+=a,n}}}});var Kt=Tt.extend({dataElementType:qt.Arc,linkScales:dt.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e,n,a=this,r=a.chart,i=r.chartArea,s=r.options,o=i.right-i.left,u=i.bottom-i.top,l=Math.min(o,u),d={x:0,y:0},c=a.getMeta(),f=c.data,h=s.cutoutPercentage,g=s.circumference,p=a._getRingWeight(a.index);if(g<2*Math.PI){var b=s.rotation%(2*Math.PI),m=(b+=2*Math.PI*(b>=Math.PI?-1:b<-Math.PI?1:0))+g,y={x:Math.cos(b),y:Math.sin(b)},v={x:Math.cos(m),y:Math.sin(m)},x=b<=0&&m>=0||b<=2*Math.PI&&2*Math.PI<=m,_=b<=.5*Math.PI&&.5*Math.PI<=m||b<=2.5*Math.PI&&2.5*Math.PI<=m,T=b<=-Math.PI&&-Math.PI<=m||b<=Math.PI&&Math.PI<=m,O=b<=.5*-Math.PI&&.5*-Math.PI<=m||b<=1.5*Math.PI&&1.5*Math.PI<=m,w=h/100,S={x:T?-1:Math.min(y.x*(y.x<0?1:w),v.x*(v.x<0?1:w)),y:O?-1:Math.min(y.y*(y.y<0?1:w),v.y*(v.y<0?1:w))},I={x:x?1:Math.max(y.x*(y.x>0?1:w),v.x*(v.x>0?1:w)),y:_?1:Math.max(y.y*(y.y>0?1:w),v.y*(v.y>0?1:w))},N={width:.5*(I.x-S.x),height:.5*(I.y-S.y)};l=Math.min(o/N.width,u/N.height),d={x:-.5*(I.x+S.x),y:-.5*(I.y+S.y)}}for(e=0,n=f.length;e<n;++e)f[e]._options=a._resolveElementOptions(f[e],e);for(r.borderWidth=a.getMaxBorderWidth(),r.outerRadius=Math.max((l-r.borderWidth)/2,0),r.innerRadius=Math.max(h?r.outerRadius/100*h:0,0),r.radiusLength=(r.outerRadius-r.innerRadius)/(a._getVisibleDatasetWeightTotal()||1),r.offsetX=d.x*r.outerRadius,r.offsetY=d.y*r.outerRadius,c.total=a.calculateTotal(),a.outerRadius=r.outerRadius-r.radiusLength*a._getRingWeightOffset(a.index),a.innerRadius=Math.max(a.outerRadius-r.radiusLength*p,0),e=0,n=f.length;e<n;++e)a.updateElement(f[e],e,t)},updateElement:function(t,e,n){var a=this,r=a.chart,i=r.chartArea,s=r.options,o=s.animation,u=(i.left+i.right)/2,l=(i.top+i.bottom)/2,d=s.rotation,c=s.rotation,f=a.getDataset(),h=n&&o.animateRotate?0:t.hidden?0:a.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),g=t._options||{};dt.extend(t,{_datasetIndex:a.index,_index:e,_model:{backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,borderAlign:g.borderAlign,x:u+r.offsetX,y:l+r.offsetY,startAngle:d,endAngle:c,circumference:h,outerRadius:n&&o.animateScale?0:a.outerRadius,innerRadius:n&&o.animateScale?0:a.innerRadius,label:dt.valueAtIndexOrDefault(f.label,e,r.data.labels[e])}});var p=t._model;n&&o.animateRotate||(p.startAngle=0===e?s.rotation:a.getMeta().data[e-1]._model.endAngle,p.endAngle=p.startAngle+p.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),a=0;return dt.each(n.data,(function(n,r){t=e.data[r],isNaN(t)||n.hidden||(a+=Math.abs(t))})),a},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,a,r,i,s,o,u,l=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e<n;++e)if(d.isDatasetVisible(e)){t=(a=d.getDatasetMeta(e)).data,e!==this.index&&(i=a.controller);break}if(!t)return 0;for(e=0,n=t.length;e<n;++e)r=t[e],"inner"!==(s=i?i._resolveElementOptions(r,e):r._options).borderAlign&&(l=(u=s.hoverBorderWidth)>(l=(o=s.borderWidth)>l?o:l)?u:l);return l},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Wt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Wt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Wt(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),o=t.custom||{},u=i.options.elements.arc,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=Ut([o[r],s[r],u[r]],d,e);return l},_getRingWeightOffset:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&(e+=this._getRingWeight(n));return e},_getRingWeight:function(t){return Math.max(Wt(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});ot._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}});var $t=zt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Zt=dt.valueOrDefault,Jt=dt.options.resolve,Qt=dt.canvas._isPointInArea;function Xt(t,e){return Zt(t.showLine,e.showLines)}ot._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var te=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],o=a.getScaleForId(r.yAxisID),u=a.getDataset(),l=Xt(u,a.chart.options);for(l&&(void 0!==u.tension&&void 0===u.lineTension&&(u.lineTension=u.tension),i._scale=o,i._datasetIndex=a.index,i._children=s,i._model=a._resolveLineOptions(i),i.pivot()),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(l&&0!==i._model.tension&&a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a,r,i=this,s=i.getMeta(),o=t.custom||{},u=i.getDataset(),l=i.index,d=u.data[e],c=i.getScaleForId(s.yAxisID),f=i.getScaleForId(s.xAxisID),h=s.dataset._model,g=i._resolvePointOptions(t,e);a=f.getPixelForValue("object"==typeof d?d:NaN,e,l),r=n?c.getBasePixel():i.calculatePointY(d,e,l),t._xScale=f,t._yScale=c,t._options=g,t._datasetIndex=l,t._index=e,t._model={x:a,y:r,skip:o.skip||isNaN(a)||isNaN(r),radius:g.radius,pointStyle:g.pointStyle,rotation:g.rotation,backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,tension:Zt(o.tension,h?h.tension:0),steppedLine:!!h&&h.steppedLine,hitRadius:g.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.point,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)l[r=f[n]]=Jt([o[r],s[c[r]],s[r],u[r]],d,e);return l},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},o=r.options,u=o.elements.line,l={},d=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill","cubicInterpolationMode"];for(e=0,n=d.length;e<n;++e)l[a=d[e]]=Jt([s[a],i[a],u[a]]);return l.spanGaps=Zt(i.spanGaps,o.spanGaps),l.tension=Zt(i.lineTension,u.tension),l.steppedLine=Jt([s.steppedLine,i.steppedLine,u.stepped]),l},calculatePointY:function(t,e,n){var a,r,i,s=this.chart,o=this.getMeta(),u=this.getScaleForId(o.yAxisID),l=0,d=0;if(u.options.stacked){for(a=0;a<n;a++)if(r=s.data.datasets[a],"line"===(i=s.getDatasetMeta(a)).type&&i.yAxisID===u.id&&s.isDatasetVisible(a)){var c=Number(u.getRightValue(r.data[e]));c<0?d+=c||0:l+=c||0}var f=Number(u.getRightValue(t));return u.getPixelForValue(f<0?d+f:l+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,a,r=this.chart,i=this.getMeta(),s=i.dataset._model,o=r.chartArea,u=i.data||[];function l(t,e,n){return Math.max(Math.min(t,n),e)}if(s.spanGaps&&(u=u.filter((function(t){return!t._model.skip}))),"monotone"===s.cubicInterpolationMode)dt.splineCurveMonotone(u);else for(t=0,e=u.length;t<e;++t)n=u[t]._model,a=dt.splineCurve(dt.previousItem(u,t)._model,n,dt.nextItem(u,t)._model,s.tension),n.controlPointPreviousX=a.previous.x,n.controlPointPreviousY=a.previous.y,n.controlPointNextX=a.next.x,n.controlPointNextY=a.next.y;if(r.options.elements.line.capBezierPoints)for(t=0,e=u.length;t<e;++t)Qt(n=u[t]._model,o)&&(t>0&&Qt(u[t-1]._model,o)&&(n.controlPointPreviousX=l(n.controlPointPreviousX,o.left,o.right),n.controlPointPreviousY=l(n.controlPointPreviousY,o.top,o.bottom)),t<u.length-1&&Qt(u[t+1]._model,o)&&(n.controlPointNextX=l(n.controlPointNextX,o.left,o.right),n.controlPointNextY=l(n.controlPointNextY,o.top,o.bottom)))},draw:function(){var t,e=this.chart,n=this.getMeta(),a=n.data||[],r=e.chartArea,i=a.length,s=0;for(Xt(this.getDataset(),e.options)&&(dt.canvas.clipArea(e.ctx,{left:r.left,right:r.right,top:r.top-(t=(n.dataset._model.borderWidth||0)/2),bottom:r.bottom+t}),n.dataset.draw(),dt.canvas.unclipArea(e.ctx));s<i;++s)a[s].draw(r)},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Zt(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=Zt(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=Zt(n.hoverBorderWidth,n.borderWidth),e.radius=Zt(n.hoverRadius,n.radius)}}),ee=dt.options.resolve;ot._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,a=n.datasets,r=n.labels;if(a.length)for(var i=0;i<a[0].data.length;++i)e.push('<li><span style="background-color:'+a[0].backgroundColor[i]+'"></span>'),r[i]&&e.push(r[i]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,a){var r=t.getDatasetMeta(0),i=e.datasets[0],s=r.data[a].custom||{},o=t.options.elements.arc;return{text:n,fillStyle:ee([s.backgroundColor,i.backgroundColor,o.backgroundColor],void 0,a),strokeStyle:ee([s.borderColor,i.borderColor,o.borderColor],void 0,a),lineWidth:ee([s.borderWidth,i.borderWidth,o.borderWidth],void 0,a),hidden:isNaN(i.data[a])||r.data[a].hidden,index:a}})):[]}},onClick:function(t,e){var n,a,r,i=e.index,s=this.chart;for(n=0,a=(s.data.datasets||[]).length;n<a;++n)(r=s.getDatasetMeta(n)).data[i].hidden=!r.data[i].hidden;s.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var ne=Tt.extend({dataElementType:qt.Arc,linkScales:dt.noop,update:function(t){var e,n,a,r=this,i=r.getDataset(),s=r.getMeta(),o=r.chart.options.startAngle||0,u=r._starts=[],l=r._angles=[],d=s.data;for(r._updateRadius(),s.count=r.countVisibleElements(),e=0,n=i.data.length;e<n;e++)u[e]=o,a=r._computeAngle(e),l[e]=a,o+=a;for(e=0,n=d.length;e<n;++e)d[e]._options=r._resolveElementOptions(d[e],e),r.updateElement(d[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,a=e.options,r=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max(r/2,0),e.innerRadius=Math.max(a.cutoutPercentage?e.outerRadius/100*a.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,n){var a=this,r=a.chart,i=a.getDataset(),s=r.options,o=s.animation,u=r.scale,l=r.data.labels,d=u.xCenter,c=u.yCenter,f=s.startAngle,h=t.hidden?0:u.getDistanceFromCenterForValue(i.data[e]),g=a._starts[e],p=g+(t.hidden?0:a._angles[e]),b=o.animateScale?0:u.getDistanceFromCenterForValue(i.data[e]),m=t._options||{};dt.extend(t,{_datasetIndex:a.index,_index:e,_scale:u,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:d,y:c,innerRadius:0,outerRadius:n?b:h,startAngle:n&&o.animateRotate?f:g,endAngle:n&&o.animateRotate?f:p,label:dt.valueAtIndexOrDefault(l,e,l[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return dt.each(e.data,(function(e,a){isNaN(t.data[a])||e.hidden||n++})),n},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor,r=dt.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=r(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=r(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=r(n.hoverBorderWidth,n.borderWidth)},_resolveElementOptions:function(t,e){var n,a,r,i=this.chart,s=this.getDataset(),o=t.custom||{},u=i.options.elements.arc,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(n=0,a=c.length;n<a;++n)l[r=c[n]]=ee([o[r],s[r],u[r]],d,e);return l},_computeAngle:function(t){var e=this,n=this.getMeta().count,a=e.getDataset(),r=e.getMeta();return isNaN(a.data[t])||r.data[t].hidden?0:ee([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:a,datasetIndex:e.index},t)}});ot._set("pie",dt.clone(ot.doughnut)),ot._set("pie",{cutoutPercentage:0});var ae=Kt,re=dt.valueOrDefault,ie=dt.options.resolve;ot._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}});var se=Tt.extend({datasetElementType:qt.Line,dataElementType:qt.Point,linkScales:dt.noop,update:function(t){var e,n,a=this,r=a.getMeta(),i=r.dataset,s=r.data||[],o=a.chart.scale,u=a.getDataset();for(void 0!==u.tension&&void 0===u.lineTension&&(u.lineTension=u.tension),i._scale=o,i._datasetIndex=a.index,i._children=s,i._loop=!0,i._model=a._resolveLineOptions(i),i.pivot(),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},updateElement:function(t,e,n){var a=this,r=t.custom||{},i=a.getDataset(),s=a.chart.scale,o=s.getPointPositionForValue(e,i.data[e]),u=a._resolvePointOptions(t,e),l=a.getMeta().dataset._model,d=n?s.xCenter:o.x,c=n?s.yCenter:o.y;t._scale=s,t._options=u,t._datasetIndex=a.index,t._index=e,t._model={x:d,y:c,skip:r.skip||isNaN(d)||isNaN(c),radius:u.radius,pointStyle:u.pointStyle,rotation:u.rotation,backgroundColor:u.backgroundColor,borderColor:u.borderColor,borderWidth:u.borderWidth,tension:re(r.tension,l?l.tension:0),hitRadius:u.hitRadius}},_resolvePointOptions:function(t,e){var n,a,r,i=this.chart,s=i.data.datasets[this.index],o=t.custom||{},u=i.options.elements.point,l={},d={chart:i,dataIndex:e,dataset:s,datasetIndex:this.index},c={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},f=Object.keys(c);for(n=0,a=f.length;n<a;++n)l[r=f[n]]=ie([o[r],s[c[r]],s[r],u[r]],d,e);return l},_resolveLineOptions:function(t){var e,n,a,r=this.chart,i=r.data.datasets[this.index],s=t.custom||{},o=r.options.elements.line,u={},l=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"];for(e=0,n=l.length;e<n;++e)u[a=l[e]]=ie([s[a],i[a],o[a]]);return u.tension=re(i.lineTension,o.tension),u},updateBezierControlPoints:function(){var t,e,n,a,r=this.getMeta(),i=this.chart.chartArea,s=r.data||[];function o(t,e,n){return Math.max(Math.min(t,n),e)}for(t=0,e=s.length;t<e;++t)n=s[t]._model,a=dt.splineCurve(dt.previousItem(s,t,!0)._model,n,dt.nextItem(s,t,!0)._model,n.tension),n.controlPointPreviousX=o(a.previous.x,i.left,i.right),n.controlPointPreviousY=o(a.previous.y,i.top,i.bottom),n.controlPointNextX=o(a.next.x,i.left,i.right),n.controlPointNextY=o(a.next.y,i.top,i.bottom)},setHoverStyle:function(t){var e=t._model,n=t._options,a=dt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=re(n.hoverBackgroundColor,a(n.backgroundColor)),e.borderColor=re(n.hoverBorderColor,a(n.borderColor)),e.borderWidth=re(n.hoverBorderWidth,n.borderWidth),e.radius=re(n.hoverRadius,n.radius)}});ot._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}});var oe={bar:zt,bubble:Ht,doughnut:Kt,horizontalBar:$t,line:te,polarArea:ne,pie:ae,radar:se,scatter:te};function ue(t,e){return t.native?{x:t.x,y:t.y}:dt.getRelativePosition(t,e)}function le(t,e){var n,a,r,i,s;for(a=0,i=t.data.datasets.length;a<i;++a)if(t.isDatasetVisible(a))for(r=0,s=(n=t.getDatasetMeta(a)).data.length;r<s;++r){var o=n.data[r];o._view.skip||e(o)}}function de(t,e){var n=[];return le(t,(function(t){t.inRange(e.x,e.y)&&n.push(t)})),n}function ce(t,e,n,a){var r=Number.POSITIVE_INFINITY,i=[];return le(t,(function(t){if(!n||t.inRange(e.x,e.y)){var s=t.getCenterPoint(),o=a(e,s);o<r?(i=[t],r=o):o===r&&i.push(t)}})),i}function fe(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,a){var r=e?Math.abs(t.x-a.x):0,i=n?Math.abs(t.y-a.y):0;return Math.sqrt(Math.pow(r,2)+Math.pow(i,2))}}function he(t,e,n){var a=ue(e,t);n.axis=n.axis||"x";var r=fe(n.axis),i=n.intersect?de(t,a):ce(t,a,!1,r),s=[];return i.length?(t.data.datasets.forEach((function(e,n){if(t.isDatasetVisible(n)){var a=t.getDatasetMeta(n).data[i[0]._index];a&&!a._view.skip&&s.push(a)}})),s):[]}var ge={modes:{single:function(t,e){var n=ue(e,t),a=[];return le(t,(function(t){if(t.inRange(n.x,n.y))return a.push(t),a})),a.slice(0,1)},label:he,index:he,dataset:function(t,e,n){var a=ue(e,t);n.axis=n.axis||"xy";var r=fe(n.axis),i=n.intersect?de(t,a):ce(t,a,!1,r);return i.length>0&&(i=t.getDatasetMeta(i[0]._datasetIndex).data),i},"x-axis":function(t,e){return he(t,e,{intersect:!1})},point:function(t,e){return de(t,ue(e,t))},nearest:function(t,e,n){var a=ue(e,t);n.axis=n.axis||"xy";var r=fe(n.axis);return ce(t,a,n.intersect,r)},x:function(t,e,n){var a=ue(e,t),r=[],i=!1;return le(t,(function(t){t.inXRange(a.x)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r},y:function(t,e,n){var a=ue(e,t),r=[],i=!1;return le(t,(function(t){t.inYRange(a.y)&&r.push(t),t.inRange(a.x,a.y)&&(i=!0)})),n.intersect&&!i&&(r=[]),r}}};function pe(t,e){return dt.where(t,(function(t){return t.position===e}))}function be(t,e){t.forEach((function(t,e){return t._tmpIndex_=e,t})),t.sort((function(t,n){var a=e?n:t,r=e?t:n;return a.weight===r.weight?a._tmpIndex_-r._tmpIndex_:a.weight-r.weight})),t.forEach((function(t){delete t._tmpIndex_}))}function me(t,e){dt.each(t,(function(t){e[t.position]+=t.isHorizontal()?t.height:t.width}))}ot._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ye,ve={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var a,r=["fullWidth","position","weight"],i=r.length,s=0;s<i;++s)n.hasOwnProperty(a=r[s])&&(e[a]=n[a])},update:function(t,e,n){if(t){var a=dt.options.toPadding((t.options.layout||{}).padding),r=a.left,i=a.right,s=a.top,o=a.bottom,u=pe(t.boxes,"left"),l=pe(t.boxes,"right"),d=pe(t.boxes,"top"),c=pe(t.boxes,"bottom"),f=pe(t.boxes,"chartArea");be(u,!0),be(l,!1),be(d,!0),be(c,!1);var h,g=u.concat(l),p=d.concat(c),b=g.concat(p),m=e-r-i,y=n-s-o,v=(e-m/2)/g.length,x=m,_=y,T={top:s,left:r,bottom:o,right:i},O=[];dt.each(b,(function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?m:x,y/2),_-=e.height):(e=t.update(v,_),x-=e.width),O.push({horizontal:n,width:e.width,box:t})})),h=function(t){var e=0,n=0,a=0,r=0;return dt.each(t,(function(t){if(t.getPadding){var i=t.getPadding();e=Math.max(e,i.top),n=Math.max(n,i.left),a=Math.max(a,i.bottom),r=Math.max(r,i.right)}})),{top:e,left:n,bottom:a,right:r}}(b),dt.each(g,A),me(g,T),dt.each(p,A),me(p,T),dt.each(g,(function(t){var e=dt.findNextWhere(O,(function(e){return e.box===t}));e&&t.update(e.width,_,{left:0,right:0,top:T.top,bottom:T.bottom})})),me(b,T={top:s,left:r,bottom:o,right:i});var w=Math.max(h.left-T.left,0);T.left+=w,T.right+=Math.max(h.right-T.right,0);var S=Math.max(h.top-T.top,0);T.top+=S,T.bottom+=Math.max(h.bottom-T.bottom,0);var I=n-T.top-T.bottom,N=e-T.left-T.right;N===x&&I===_||(dt.each(g,(function(t){t.height=I})),dt.each(p,(function(t){t.fullWidth||(t.width=N)})),_=I,x=N);var C=r+w,R=s+S;dt.each(u.concat(d),k),C+=x,R+=_,dt.each(l,k),dt.each(c,k),t.chartArea={left:T.left,top:T.top,right:T.left+x,bottom:T.top+_},dt.each(f,(function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(x,_)}))}function A(t){var e=dt.findNextWhere(O,(function(e){return e.box===t}));if(e)if(e.horizontal){var n={left:Math.max(T.left,h.left),right:Math.max(T.right,h.right),top:0,bottom:0};t.update(t.fullWidth?m:x,y/2,n)}else t.update(e.width,_)}function k(t){t.isHorizontal()?(t.left=t.fullWidth?r:T.left,t.right=t.fullWidth?e-i:T.left+x,t.top=R,t.bottom=R+t.height,R=t.bottom):(t.left=C,t.right=C+t.width,t.top=T.top,t.bottom=T.top+_,C=t.right)}}},xe=(ye=Object.freeze({default:"/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"}))&&ye.default||ye,_e=["animationstart","webkitAnimationStart"],Te={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function Oe(t,e){var n=dt.getStyle(t,e),a=n&&n.match(/^(\d+)(\.\d+)?px$/);return a?Number(a[1]):void 0}var we=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(n){}return t}()&&{passive:!0};function Se(t,e,n){t.addEventListener(e,n,we)}function Ie(t,e,n){t.removeEventListener(e,n,we)}function Ne(t,e,n,a,r){return{type:t,chart:e,native:r||null,x:void 0!==n?n:null,y:void 0!==a?a:null}}function Ce(t){var e=document.createElement("div");return e.className=t||"",e}var Re={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(){this._loaded||(this._loaded=!0,this.disableCSSInjection||function(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}(this,xe))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return this._ensureLoaded(),n&&n.canvas===t?(function(t,e){var n=t.style,a=t.getAttribute("height"),r=t.getAttribute("width");if(t.$chartjs={initial:{height:a,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===r||""===r){var i=Oe(t,"width");void 0!==i&&(t.width=i)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=Oe(t,"height");void 0!==i&&(t.height=s)}}(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e.$chartjs){var n=e.$chartjs.initial;["height","width"].forEach((function(t){var a=n[t];dt.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)})),dt.each(n.style||{},(function(t,n){e.style[n]=t})),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var a=t.canvas;if("resize"!==e){var r=n.$chartjs||(n.$chartjs={});Se(a,e,(r.proxies||(r.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=Te[t.type]||t.type,a=dt.getRelativePosition(t,e);return Ne(n,e,a.x,a.y,t)}(e,t))})}else!function(t,e,n){var a,r,i,s,o=t.$chartjs||(t.$chartjs={}),u=o.resizer=function(t){var e=Ce("chartjs-size-monitor"),n=Ce("chartjs-size-monitor-expand"),a=Ce("chartjs-size-monitor-shrink");n.appendChild(Ce()),a.appendChild(Ce()),e.appendChild(n),e.appendChild(a),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,a.scrollLeft=1e6,a.scrollTop=1e6};var r=function(){e._reset(),t()};return Se(n,"scroll",r.bind(n,"expand")),Se(a,"scroll",r.bind(a,"shrink")),e}((a=function(){if(o.resizer){var a=n.options.maintainAspectRatio&&t.parentNode,r=a?a.clientWidth:0;e(Ne("resize",n)),a&&a.clientWidth<r&&n.canvas&&e(Ne("resize",n))}},i=!1,s=[],function(){s=Array.prototype.slice.call(arguments),r=r||this,i||(i=!0,dt.requestAnimFrame.call(window,(function(){i=!1,a.apply(r,s)})))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),a=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};dt.each(_e,(function(e){Se(t,e,a)})),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,(function(){if(o.resizer){var e=t.parentNode;e&&e!==u.parentNode&&e.insertBefore(u,e.firstChild),u._reset()}}))}(a,n,t)},removeEventListener:function(t,e,n){var a,r,i,s=t.canvas;if("resize"!==e){var o=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];o&&Ie(s,e,o)}else i=(r=(a=s).$chartjs||{}).resizer,delete r.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(dt.each(_e,(function(e){Ie(t,e,n)})),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(a),i&&i.parentNode&&i.parentNode.removeChild(i)}};dt.addEvent=Se,dt.removeEvent=Ie;var Ae=dt.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},Re._enabled?Re:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}});ot._set("global",{plugins:{}});var ke={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach((function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)})),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var a,r,i,s,o,u=this.descriptors(t),l=u.length;for(a=0;a<l;++a)if("function"==typeof(o=(i=(r=u[a]).plugin)[e])&&((s=[t].concat(n||[])).push(r.options),!1===o.apply(i,s)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],r=t&&t.config||{},i=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach((function(t){if(-1===n.indexOf(t)){var e=t.id,r=i[e];!1!==r&&(!0===r&&(r=dt.clone(ot.global.plugins[e])),n.push(t),a.push({plugin:t,options:r||{}}))}})),e.descriptors=a,e.id=this._cacheId,a},_invalidate:function(t){delete t.$plugins}},Ee={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=dt.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?dt.merge({},[ot.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=dt.extend(this.defaults[t],e))},addScalesToLayout:function(t){dt.each(t.scales,(function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,ve.addBox(t,e)}))}},Le=dt.valueOrDefault;ot._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:dt.noop,title:function(t,e){var n="",a=e.labels,r=a?a.length:0;if(t.length>0){var i=t[0];i.label?n=i.label:i.xLabel?n=i.xLabel:r>0&&i.index<r&&(n=a[i.index])}return n},afterTitle:dt.noop,beforeBody:dt.noop,beforeLabel:dt.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),dt.isNullOrUndef(t.value)?n+=t.yLabel:n+=t.value,n},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:dt.noop,afterBody:dt.noop,beforeFooter:dt.noop,footer:dt.noop,afterFooter:dt.noop}}});var De={average:function(t){if(!t.length)return!1;var e,n,a=0,r=0,i=0;for(e=0,n=t.length;e<n;++e){var s=t[e];if(s&&s.hasValue()){var o=s.tooltipPosition();a+=o.x,r+=o.y,++i}}return{x:a/i,y:r/i}},nearest:function(t,e){var n,a,r,i=e.x,s=e.y,o=Number.POSITIVE_INFINITY;for(n=0,a=t.length;n<a;++n){var u=t[n];if(u&&u.hasValue()){var l=u.getCenterPoint(),d=dt.distanceBetweenPoints(e,l);d<o&&(o=d,r=u)}}if(r){var c=r.tooltipPosition();i=c.x,s=c.y}return{x:i,y:s}}};function Pe(t,e){return e&&(dt.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Me(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function qe(t){var e=ot.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Le(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Le(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Le(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Le(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Le(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Le(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Le(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Le(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Le(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function je(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Fe(t){return Pe([],Me(t))}var Ge=gt.extend({initialize:function(){this._model=qe(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,a=n.beforeTitle.apply(t,arguments),r=n.title.apply(t,arguments),i=n.afterTitle.apply(t,arguments),s=[];return s=Pe(s,Me(a)),s=Pe(s,Me(r)),Pe(s,Me(i))},getBeforeBody:function(){return Fe(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,a=n._options.callbacks,r=[];return dt.each(t,(function(t){var i={before:[],lines:[],after:[]};Pe(i.before,Me(a.beforeLabel.call(n,t,e))),Pe(i.lines,a.label.call(n,t,e)),Pe(i.after,Me(a.afterLabel.call(n,t,e))),r.push(i)})),r},getAfterBody:function(){return Fe(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),r=e.afterFooter.apply(t,arguments),i=[];return i=Pe(i,Me(n)),i=Pe(i,Me(a)),Pe(i,Me(r))},update:function(t){var e,n,a,r,i,s,o,u,l,d,c=this,f=c._options,h=c._model,g=c._model=qe(f),p=c._active,b=c._data,m={xAlign:h.xAlign,yAlign:h.yAlign},y={x:h.x,y:h.y},v={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(p.length){g.opacity=1;var _=[],T=[];x=De[f.position].call(c,p,c._eventPosition);var O=[];for(e=0,n=p.length;e<n;++e)O.push((r=void 0,i=void 0,u=void 0,l=void 0,d=void 0,r=(a=p[e])._xScale,i=a._yScale||a._scale,s=a._index,l=(u=a._chart.getDatasetMeta(o=a._datasetIndex).controller)._getIndexScale(),d=u._getValueScale(),{xLabel:r?r.getLabelForIndex(s,o):"",yLabel:i?i.getLabelForIndex(s,o):"",label:l?""+l.getLabelForIndex(s,o):"",value:d?""+d.getLabelForIndex(s,o):"",index:s,datasetIndex:o,x:a._model.x,y:a._model.y}));f.filter&&(O=O.filter((function(t){return f.filter(t,b)}))),f.itemSort&&(O=O.sort((function(t,e){return f.itemSort(t,e,b)}))),dt.each(O,(function(t){_.push(f.callbacks.labelColor.call(c,t,c._chart)),T.push(f.callbacks.labelTextColor.call(c,t,c._chart))})),g.title=c.getTitle(O,b),g.beforeBody=c.getBeforeBody(O,b),g.body=c.getBody(O,b),g.afterBody=c.getAfterBody(O,b),g.footer=c.getFooter(O,b),g.x=x.x,g.y=x.y,g.caretPadding=f.caretPadding,g.labelColors=_,g.labelTextColors=T,g.dataPoints=O,v=function(t,e){var n=t._chart.ctx,a=2*e.yPadding,r=0,i=e.body,s=i.reduce((function(t,e){return t+e.before.length+e.lines.length+e.after.length}),0),o=e.title.length,u=e.footer.length,l=e.titleFontSize,d=e.bodyFontSize,c=e.footerFontSize;a+=o*l,a+=o?(o-1)*e.titleSpacing:0,a+=o?e.titleMarginBottom:0,a+=(s+=e.beforeBody.length+e.afterBody.length)*d,a+=s?(s-1)*e.bodySpacing:0,a+=u?e.footerMarginTop:0,a+=u*c,a+=u?(u-1)*e.footerSpacing:0;var f=0,h=function(t){r=Math.max(r,n.measureText(t).width+f)};return n.font=dt.fontString(l,e._titleFontStyle,e._titleFontFamily),dt.each(e.title,h),n.font=dt.fontString(d,e._bodyFontStyle,e._bodyFontFamily),dt.each(e.beforeBody.concat(e.afterBody),h),f=e.displayColors?d+2:0,dt.each(i,(function(t){dt.each(t.before,h),dt.each(t.lines,h),dt.each(t.after,h)})),f=0,n.font=dt.fontString(c,e._footerFontStyle,e._footerFontFamily),dt.each(e.footer,h),{width:r+=2*e.xPadding,height:a}}(this,g),y=function(t,e,n,a){var r=t.x,i=t.y,s=t.caretPadding,o=n.xAlign,u=n.yAlign,l=t.caretSize+s,d=t.cornerRadius+s;return"right"===o?r-=e.width:"center"===o&&((r-=e.width/2)+e.width>a.width&&(r=a.width-e.width),r<0&&(r=0)),"top"===u?i+=l:i-="bottom"===u?e.height+l:e.height/2,"center"===u?"left"===o?r+=l:"right"===o&&(r-=l):"left"===o?r-=d:"right"===o&&(r+=d),{x:r,y:i}}(g,v,m=function(t,e){var n,a,r,i,s,o=t._model,u=t._chart,l=t._chart.chartArea,d="center",c="center";o.y<e.height?c="top":o.y>u.height-e.height&&(c="bottom");var f=(l.left+l.right)/2,h=(l.top+l.bottom)/2;"center"===c?(n=function(t){return t<=f},a=function(t){return t>f}):(n=function(t){return t<=e.width/2},a=function(t){return t>=u.width-e.width/2}),r=function(t){return t+e.width+o.caretSize+o.caretPadding>u.width},i=function(t){return t-e.width-o.caretSize-o.caretPadding<0},s=function(t){return t<=h?"top":"bottom"},n(o.x)?(d="left",r(o.x)&&(d="center",c=s(o.y))):a(o.x)&&(d="right",i(o.x)&&(d="center",c=s(o.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,v),c._chart)}else g.opacity=0;return g.xAlign=m.xAlign,g.yAlign=m.yAlign,g.x=y.x,g.y=y.y,g.width=v.width,g.height=v.height,g.caretX=x.x,g.caretY=x.y,c._model=g,t&&f.custom&&f.custom.call(c,g),c},drawCaret:function(t,e){var n=this._chart.ctx,a=this.getCaretPosition(t,e,this._view);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var a,r,i,s,o,u,l=n.caretSize,d=n.cornerRadius,c=n.xAlign,f=n.yAlign,h=t.x,g=t.y,p=e.width,b=e.height;if("center"===f)o=g+b/2,"left"===c?(r=(a=h)-l,i=a,s=o+l,u=o-l):(r=(a=h+p)+l,i=a,s=o-l,u=o+l);else if("left"===c?(a=(r=h+d+l)-l,i=r+l):"right"===c?(a=(r=h+p-d-l)-l,i=r+l):(a=(r=n.caretX)-l,i=r+l),"top"===f)o=(s=g)-l,u=s;else{o=(s=g+b)+l,u=s;var m=i;i=a,a=m}return{x1:a,x2:r,x3:i,y1:s,y2:o,y3:u}},drawTitle:function(t,e,n){var a=e.title;if(a.length){t.x=je(e,e._titleAlign),n.textAlign=e._titleAlign,n.textBaseline="top";var r,i,s=e.titleFontSize,o=e.titleSpacing;for(n.fillStyle=e.titleFontColor,n.font=dt.fontString(s,e._titleFontStyle,e._titleFontFamily),r=0,i=a.length;r<i;++r)n.fillText(a[r],t.x,t.y),t.y+=s+o,r+1===a.length&&(t.y+=e.titleMarginBottom-o)}},drawBody:function(t,e,n){var a,r=e.bodyFontSize,i=e.bodySpacing,s=e._bodyAlign,o=e.body,u=e.displayColors,l=e.labelColors,d=0,c=u?je(e,"left"):0;n.textAlign=s,n.textBaseline="top",n.font=dt.fontString(r,e._bodyFontStyle,e._bodyFontFamily),t.x=je(e,s);var f=function(e){n.fillText(e,t.x+d,t.y),t.y+=r+i};n.fillStyle=e.bodyFontColor,dt.each(e.beforeBody,f),d=u&&"right"!==s?"center"===s?r/2+1:r+2:0,dt.each(o,(function(i,s){n.fillStyle=a=e.labelTextColors[s],dt.each(i.before,f),dt.each(i.lines,(function(i){u&&(n.fillStyle=e.legendColorBackground,n.fillRect(c,t.y,r,r),n.lineWidth=1,n.strokeStyle=l[s].borderColor,n.strokeRect(c,t.y,r,r),n.fillStyle=l[s].backgroundColor,n.fillRect(c+1,t.y+1,r-2,r-2),n.fillStyle=a),f(i)})),dt.each(i.after,f)})),d=0,dt.each(e.afterBody,f),t.y-=i},drawFooter:function(t,e,n){var a=e.footer;a.length&&(t.x=je(e,e._footerAlign),t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=e.footerFontColor,n.font=dt.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),dt.each(a,(function(a){n.fillText(a,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing})))},drawBackground:function(t,e,n,a){n.fillStyle=e.backgroundColor,n.strokeStyle=e.borderColor,n.lineWidth=e.borderWidth;var r=e.xAlign,i=e.yAlign,s=t.x,o=t.y,u=a.width,l=a.height,d=e.cornerRadius;n.beginPath(),n.moveTo(s+d,o),"top"===i&&this.drawCaret(t,a),n.lineTo(s+u-d,o),n.quadraticCurveTo(s+u,o,s+u,o+d),"center"===i&&"right"===r&&this.drawCaret(t,a),n.lineTo(s+u,o+l-d),n.quadraticCurveTo(s+u,o+l,s+u-d,o+l),"bottom"===i&&this.drawCaret(t,a),n.lineTo(s+d,o+l),n.quadraticCurveTo(s,o+l,s,o+l-d),"center"===i&&"left"===r&&this.drawCaret(t,a),n.lineTo(s,o+d),n.quadraticCurveTo(s,o,s+d,o),n.closePath(),n.fill(),e.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},a={x:e.x,y:e.y},r=Math.abs(e.opacity<.001)?0:e.opacity;this._options.enabled&&(e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length)&&(t.save(),t.globalAlpha=r,this.drawBackground(a,e,t,n),a.y+=e.yPadding,this.drawTitle(a,e,t),this.drawBody(a,e,t),this.drawFooter(a,e,t),t.restore())}},handleEvent:function(t){var e,n=this,a=n._options;return n._lastActive=n._lastActive||[],n._active="mouseout"===t.type?[]:n._chart.getElementsAtEventForMode(t,a.mode,a),(e=!dt.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(a.enabled||a.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}});Ge.positioners=De;var Ve=dt.valueOrDefault;function ze(){return dt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){if("xAxes"===t||"yAxes"===t){var r,i,s,o=n[t].length;for(e[t]||(e[t]=[]),r=0;r<o;++r)i=Ve((s=n[t][r]).type,"xAxes"===t?"category":"linear"),r>=e[t].length&&e[t].push({}),dt.merge(e[t][r],!e[t][r].type||s.type&&s.type!==e[t][r].type?[Ee.getScaleDefaults(i),s]:s)}else dt._merger(t,e,n,a)}})}function Be(){return dt.merge({},[].slice.call(arguments),{merger:function(t,e,n,a){var r=e[t]||{},i=n[t];"scales"===t?e[t]=ze(r,i):"scale"===t?e[t]=dt.merge(r,[Ee.getScaleDefaults(i.type),i]):dt._merger(t,e,n,a)}})}function Ye(t){var e=t.options;dt.each(t.scales,(function(e){ve.removeBox(t,e)})),e=Be(ot.global,ot[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function He(t){return"top"===t||"bottom"===t}ot._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Ue=function(t,e){return this.construct(t,e),this};dt.extend(Ue.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Be(ot.global,ot[t.type],t.options||{}),t}(e);var a=Ae.acquireContext(t,e),r=a&&a.canvas,i=r&&r.height,s=r&&r.width;n.id=dt.uid(),n.ctx=a,n.canvas=r,n.config=e,n.width=s,n.height=i,n.aspectRatio=i?s/i:null,n.options=e.options,n._bufferedRender=!1,n.chart=n,n.controller=n,Ue.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),a&&r?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return ke.notify(t,"beforeInit"),dt.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),ke.notify(t,"afterInit"),t},clear:function(){return dt.canvas.clear(this),this},stop:function(){return mt.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,a=e.canvas,r=n.maintainAspectRatio&&e.aspectRatio||null,i=Math.max(0,Math.floor(dt.getMaximumWidth(a))),s=Math.max(0,Math.floor(r?i/r:dt.getMaximumHeight(a)));if((e.width!==i||e.height!==s)&&(a.width=e.width=i,a.height=e.height=s,a.style.width=i+"px",a.style.height=s+"px",dt.retinaScale(e,n.devicePixelRatio),!t)){var o={width:i,height:s};ke.notify(e,"resize",[o]),n.onResize&&n.onResize(e,o),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;dt.each(e.xAxes,(function(t,e){t.id=t.id||"x-axis-"+e})),dt.each(e.yAxes,(function(t,e){t.id=t.id||"y-axis-"+e})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},a=[],r=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(a=a.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&a.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),dt.each(a,(function(e){var a=e.options,i=a.id,s=Ve(a.type,e.dtype);He(a.position)!==He(e.dposition)&&(a.position=e.dposition),r[i]=!0;var o=null;if(i in n&&n[i].type===s)(o=n[i]).options=a,o.ctx=t.ctx,o.chart=t;else{var u=Ee.getScaleConstructor(s);if(!u)return;o=new u({id:i,type:s,options:a,ctx:t.ctx,chart:t}),n[o.id]=o}o.mergeTicksOptions(),e.isDefault&&(t.scale=o)})),dt.each(r,(function(t,e){t||delete n[e]})),t.scales=n,Ee.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return dt.each(t.data.datasets,(function(n,a){var r=t.getDatasetMeta(a),i=n.type||t.config.type;if(r.type&&r.type!==i&&(t.destroyDatasetMeta(a),r=t.getDatasetMeta(a)),r.type=i,r.controller)r.controller.updateIndex(a),r.controller.linkScales();else{var s=oe[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(t,a),e.push(r.controller)}}),t),e},resetElements:function(){var t=this;dt.each(t.data.datasets,(function(e,n){t.getDatasetMeta(n).controller.reset()}),t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),Ye(e),ke._invalidate(e),!1!==ke.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var n=e.buildOrUpdateControllers();dt.each(e.data.datasets,(function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()}),e),e.updateLayout(),e.options.animation&&e.options.animation.duration&&dt.each(n,(function(t){t.reset()})),e.updateDatasets(),e.tooltip.initialize(),e.lastActive=[],ke.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){!1!==ke.notify(this,"beforeLayout")&&(ve.update(this,this.width,this.height),ke.notify(this,"afterScaleUpdate"),ke.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==ke.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);ke.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==ke.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),ke.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=e.options.animation,a=Ve(t.duration,n&&n.duration),r=t.lazy;if(!1!==ke.notify(e,"beforeRender")){var i=function(t){ke.notify(e,"afterRender"),dt.callback(n&&n.onComplete,[t],e)};if(n&&a){var s=new bt({numSteps:a/16.66,easing:t.easing||n.easing,render:function(t,e){var n=e.currentStep,a=n/e.numSteps;t.draw((0,dt.easing.effects[e.easing])(a),a,n)},onAnimationProgress:n.onProgress,onAnimationComplete:i});mt.addAnimation(e,s,a,r)}else e.draw(),i(new bt({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),dt.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==ke.notify(e,"beforeDraw",[t])&&(dt.each(e.boxes,(function(t){t.draw(e.chartArea)}),e),e.drawDatasets(t),e._drawTooltip(t),ke.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,n=(this.data.datasets||[]).length;e<n;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==ke.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);ke.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),a={meta:n,index:t,easingValue:e};!1!==ke.notify(this,"beforeDatasetDraw",[a])&&(n.controller.draw(e),ke.notify(this,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==ke.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),ke.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ge.modes.single(this,t)},getElementsAtEvent:function(t){return ge.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ge.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var a=ge.modes[e];return"function"==typeof a?a(this,t,n):[]},getDatasetAtEvent:function(t){return ge.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],a=n._meta&&n._meta[e];a&&(a.controller.destroy(),delete n._meta[e])},destroy:function(){var t,e,n=this,a=n.canvas;for(n.stop(),t=0,e=n.data.datasets.length;t<e;++t)n.destroyDatasetMeta(t);a&&(n.unbindEvents(),dt.canvas.clear(n),Ae.releaseContext(n.ctx),n.canvas=null,n.ctx=null),ke.notify(n,"destroy"),delete Ue.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Ge({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};dt.each(t.options.events,(function(a){Ae.addEventListener(t,a,n),e[a]=n})),t.options.responsive&&(n=function(){t.resize()},Ae.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,dt.each(e,(function(e,n){Ae.removeEventListener(t,n,e)})))},updateHoverStyle:function(t,e,n){var a,r,i,s=n?"setHoverStyle":"removeHoverStyle";for(r=0,i=t.length;r<i;++r)(a=t[r])&&this.getDatasetMeta(a._datasetIndex).controller[s](a)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==ke.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var a=e.handleEvent(t);n&&(a=n._start?n.handleEvent(t):a|n.handleEvent(t)),ke.notify(e,"afterEvent",[t]);var r=e._bufferedRequest;return r?e.render(r):a&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,n=this,a=n.options||{},r=a.hover;return n.lastActive=n.lastActive||[],n.active="mouseout"===t.type?[]:n.getElementsAtEventForMode(t,r.mode,r),dt.callback(a.onHover||a.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||a.onClick&&a.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,r.mode,!1),n.active.length&&r.mode&&n.updateHoverStyle(n.active,r.mode,!0),e=!dt.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),Ue.instances={};var We=Ue;function Ke(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function $e(t){this.options=t||{}}Ue.Controller=Ue,Ue.types={},dt.configMerge=Be,dt.scaleMerge=ze,dt.extend($e.prototype,{formats:Ke,parse:Ke,format:Ke,add:Ke,diff:Ke,startOf:Ke,endOf:Ke,_create:function(t){return t}}),$e.override=function(t){dt.extend($e.prototype,t)};var Ze={_date:$e},Je={formatters:{values:function(t){return dt.isArray(t)?t:""+t},linear:function(t,e,n){var a=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=dt.log10(Math.abs(a)),i="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=dt.log10(Math.abs(t));i=t.toExponential(Math.floor(s)-Math.floor(r))}else{var o=-1*Math.floor(r);o=Math.max(Math.min(o,20),0),i=t.toFixed(o)}else i="0";return i},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(dt.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}},Qe=dt.valueOrDefault,Xe=dt.valueAtIndexOrDefault;function tn(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(t[e].label);return a}function en(t,e,n){return dt.isArray(e)?dt.longestText(t,n,e):t.measureText(e).width}ot._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:Je.formatters.values,minor:{},major:{}}});var nn=gt.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){dt.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a,r,i,s,o,u,l=this;for(l.beforeUpdate(),l.maxWidth=t,l.maxHeight=e,l.margins=dt.extend({left:0,right:0,top:0,bottom:0},n),l._maxLabelLines=0,l.longestLabelWidth=0,l.longestTextCache=l.longestTextCache||{},l.beforeSetDimensions(),l.setDimensions(),l.afterSetDimensions(),l.beforeDataLimits(),l.determineDataLimits(),l.afterDataLimits(),l.beforeBuildTicks(),o=l.buildTicks()||[],o=l.afterBuildTicks(o)||o,l.beforeTickToLabelConversion(),i=l.convertTicksToLabels(o)||l.ticks,l.afterTickToLabelConversion(),l.ticks=i,a=0,r=i.length;a<r;++a)s=i[a],(u=o[a])?u.label=s:o.push(u={label:s,major:!1});return l._ticks=o,l.beforeCalculateTickRotation(),l.calculateTickRotation(),l.afterCalculateTickRotation(),l.beforeFit(),l.fit(),l.afterFit(),l.afterUpdate(),l.minSize},afterUpdate:function(){dt.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){dt.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){dt.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){dt.callback(this.options.beforeDataLimits,[this])},determineDataLimits:dt.noop,afterDataLimits:function(){dt.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){dt.callback(this.options.beforeBuildTicks,[this])},buildTicks:dt.noop,afterBuildTicks:function(t){var e=this;return dt.isArray(t)&&t.length?dt.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=dt.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){dt.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){dt.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){dt.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=tn(t._ticks),r=dt.options._parseFont(n);e.font=r.string;var i=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var s,o=dt.longestText(e,r.string,a,t.longestTextCache),u=o,l=t.getPixelForTick(1)-t.getPixelForTick(0)-6;u>l&&i<n.maxRotation;){var d=dt.toRadians(i);if(s=Math.cos(d),Math.sin(d)*o>t.maxHeight){i--;break}i++,u=s*o}t.labelRotation=i},afterCalculateTickRotation:function(){dt.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){dt.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=tn(t._ticks),a=t.options,r=a.ticks,i=a.scaleLabel,s=a.gridLines,o=t._isVisible(),u=a.position,l=t.isHorizontal(),d=dt.options._parseFont,c=d(r),f=a.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:o&&s.drawTicks?f:0,e.height=l?o&&s.drawTicks?f:0:t.maxHeight,i.display&&o){var h=d(i),g=dt.options.toPadding(i.padding),p=h.lineHeight+g.height;l?e.height+=p:e.width+=p}if(r.display&&o){var b=dt.longestText(t.ctx,c.string,n,t.longestTextCache),m=dt.numberOfLabelLines(n),y=.5*c.size,v=t.options.ticks.padding;if(t._maxLabelLines=m,t.longestLabelWidth=b,l){var x=dt.toRadians(t.labelRotation),_=Math.cos(x),T=Math.sin(x);e.height=Math.min(t.maxHeight,e.height+(T*b+c.lineHeight*m+y)+v),t.ctx.font=c.string;var O,w,S=en(t.ctx,n[0],c.string),I=en(t.ctx,n[n.length-1],c.string),N=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(n.length-1);0!==t.labelRotation?(O="bottom"===u?_*S:_*y,w="bottom"===u?_*y:_*I):(O=S/2,w=I/2),t.paddingLeft=Math.max(O-N,0)+3,t.paddingRight=Math.max(w-C,0)+3}else r.mirror?b=0:b+=v+y,e.width=Math.min(t.maxWidth,e.width+b),t.paddingTop=c.size/2,t.paddingBottom=c.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){dt.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(dt.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:dt.noop,getPixelForValue:dt.noop,getValueForPixel:dt.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var a=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),r=a*t+e.paddingLeft;return n&&(r+=a/2),e.left+r+(e.isFullWidth()?e.margins.left:0)}return e.top+t*((e.height-(e.paddingTop+e.paddingBottom))/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;return e.isHorizontal()?e.left+((e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft)+(e.isFullWidth()?e.margins.left:0):e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,a=this,r=a.isHorizontal(),i=t.length,s=!1,o=a.options.ticks.minor.maxTicksLimit,u=a._tickSize()*(i-1),l=r?a.width-(a.paddingLeft+a.paddingRight):a.height-(a.paddingTop+a.PaddingBottom),d=[];for(u>l&&(s=1+Math.floor(u/l)),i>o&&(s=Math.max(s,1+Math.floor(i/o))),e=0;e<i;e++)n=t[e],s>1&&e%s>0&&delete n.label,d.push(n);return d},_tickSize:function(){var t=this,e=t.isHorizontal(),n=t.options.ticks.minor,a=dt.toRadians(t.labelRotation),r=Math.abs(Math.cos(a)),i=Math.abs(Math.sin(a)),s=n.autoSkipPadding||0,o=t.longestLabelWidth+s||0,u=dt.options._parseFont(n),l=t._maxLabelLines*u.lineHeight+s||0;return e?l*r>o*i?o/r:l/i:l*i<o*r?l/r:o/i},_isVisible:function(){var t,e,n,a=this.chart,r=this.options.display;if("auto"!==r)return!!r;for(t=0,e=a.data.datasets.length;t<e;++t)if(a.isDatasetVisible(t)&&((n=a.getDatasetMeta(t)).xAxisID===this.id||n.yAxisID===this.id))return!0;return!1},draw:function(t){var e=this,n=e.options;if(e._isVisible()){var a,r,i,s=e.chart,o=e.ctx,u=ot.global.defaultFontColor,l=n.ticks.minor,d=n.ticks.major||l,c=n.gridLines,f=n.scaleLabel,h=n.position,g=0!==e.labelRotation,p=l.mirror,b=e.isHorizontal(),m=dt.options._parseFont,y=l.display&&l.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=Qe(l.fontColor,u),x=m(l),_=x.lineHeight,T=Qe(d.fontColor,u),O=m(d),w=l.padding,S=l.labelOffset,I=c.drawTicks?c.tickMarkLength:0,N=Qe(f.fontColor,u),C=m(f),R=dt.options.toPadding(f.padding),A=dt.toRadians(e.labelRotation),k=[],E=c.drawBorder?Xe(c.lineWidth,0,0):0,L=dt._alignPixel;if("top"===h?(a=L(s,e.bottom,E),r=e.bottom-I,i=a-E/2):"bottom"===h?(a=L(s,e.top,E),r=a+E/2,i=e.top+I):"left"===h?(a=L(s,e.right,E),r=e.right-I,i=a-E/2):(a=L(s,e.left,E),r=a+E/2,i=e.left+I),dt.each(y,(function(a,o){if(!dt.isNullOrUndef(a.label)){var u,l,d,f,m,y,v,x,T,O,N,C,R,D,P,M,q=a.label;o===e.zeroLineIndex&&n.offset===c.offsetGridLines?(u=c.zeroLineWidth,l=c.zeroLineColor,d=c.zeroLineBorderDash||[],f=c.zeroLineBorderDashOffset||0):(u=Xe(c.lineWidth,o),l=Xe(c.color,o),d=c.borderDash||[],f=c.borderDashOffset||0);var j=dt.isArray(q)?q.length:1,F=function(t,e,n){var a=t.getPixelForTick(e);return n&&(1===t.getTicks().length?a-=t.isHorizontal()?Math.max(a-t.left,t.right-a):Math.max(a-t.top,t.bottom-a):a-=0===e?(t.getPixelForTick(1)-a)/2:(a-t.getPixelForTick(e-1))/2),a}(e,o,c.offsetGridLines);if(b){var G=I+w;F<e.left-1e-7&&(l="rgba(0,0,0,0)"),m=v=T=N=L(s,F,u),y=r,x=i,R=e.getPixelForTick(o)+S,"top"===h?(O=L(s,t.top,E)+E/2,C=t.bottom,P=((g?1:.5)-j)*_,M=g?"left":"center",D=e.bottom-G):(O=t.top,C=L(s,t.bottom,E)-E/2,P=(g?0:.5)*_,M=g?"right":"center",D=e.top+G)}else{var V=(p?0:I)+w;F<e.top-1e-7&&(l="rgba(0,0,0,0)"),m=r,v=i,y=x=O=C=L(s,F,u),D=e.getPixelForTick(o)+S,P=(1-j)*_/2,"left"===h?(T=L(s,t.left,E)+E/2,N=t.right,M=p?"left":"right",R=e.right-V):(T=t.left,N=L(s,t.right,E)-E/2,M=p?"right":"left",R=e.left+V)}k.push({tx1:m,ty1:y,tx2:v,ty2:x,x1:T,y1:O,x2:N,y2:C,labelX:R,labelY:D,glWidth:u,glColor:l,glBorderDash:d,glBorderDashOffset:f,rotation:-1*A,label:q,major:a.major,textOffset:P,textAlign:M})}})),dt.each(k,(function(t){var e=t.glWidth,n=t.glColor;if(c.display&&e&&n&&(o.save(),o.lineWidth=e,o.strokeStyle=n,o.setLineDash&&(o.setLineDash(t.glBorderDash),o.lineDashOffset=t.glBorderDashOffset),o.beginPath(),c.drawTicks&&(o.moveTo(t.tx1,t.ty1),o.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(o.moveTo(t.x1,t.y1),o.lineTo(t.x2,t.y2)),o.stroke(),o.restore()),l.display){o.save(),o.translate(t.labelX,t.labelY),o.rotate(t.rotation),o.font=t.major?O.string:x.string,o.fillStyle=t.major?T:v,o.textBaseline="middle",o.textAlign=t.textAlign;var a=t.label,r=t.textOffset;if(dt.isArray(a))for(var i=0;i<a.length;++i)o.fillText(""+a[i],0,r),r+=_;else o.fillText(a,0,r);o.restore()}})),f.display){var D,P,M=0,q=C.lineHeight/2;if(b)D=e.left+(e.right-e.left)/2,P="bottom"===h?e.bottom-q-R.bottom:e.top+q+R.top;else{var j="left"===h;D=j?e.left+q+R.top:e.right-q-R.top,P=e.top+(e.bottom-e.top)/2,M=j?-.5*Math.PI:.5*Math.PI}o.save(),o.translate(D,P),o.rotate(M),o.textAlign="center",o.textBaseline="middle",o.fillStyle=N,o.font=C.string,o.fillText(f.labelString,0,0),o.restore()}if(E){var F,G,V,z,B=E,Y=Xe(c.lineWidth,y.length-1,0);b?(F=L(s,e.left,B)-B/2,G=L(s,e.right,Y)+Y/2,V=z=a):(V=L(s,e.top,B)-B/2,z=L(s,e.bottom,Y)+Y/2,F=G=a),o.lineWidth=E,o.strokeStyle=Xe(c.color,0),o.beginPath(),o.moveTo(F,V),o.lineTo(G,z),o.stroke()}}}}),an=nn.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,n=e.getLabels();e.minIndex=0,e.maxIndex=n.length-1,void 0!==e.options.ticks.min&&(t=n.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=n.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=n[e.minIndex],e.max=n[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,a=n.chart;return a.getDatasetMeta(e).controller._getValueScaleId()===n.id?n.getRightValue(a.data.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,a=this,r=a.options.offset,i=Math.max(a.maxIndex+1-a.minIndex-(r?0:1),1);if(null!=t&&(n=a.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var s=a.getLabels().indexOf(t=n||t);e=-1!==s?s:e}if(a.isHorizontal()){var o=a.width/i,u=o*(e-a.minIndex);return r&&(u+=o/2),a.left+u}var l=a.height/i,d=l*(e-a.minIndex);return r&&(d+=l/2),a.top+d},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,a=Math.max(e._ticks.length-(n?0:1),1),r=e.isHorizontal(),i=(r?e.width:e.height)/a;return t-=r?e.left:e.top,n&&(t-=i/2),(t<=0?0:Math.round(t/i))+e.minIndex},getBasePixel:function(){return this.bottom}});an._defaults={position:"bottom"};var rn=dt.isNullOrUndef,sn=nn.extend({getRightValue:function(t){return"string"==typeof t?+t:nn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=dt.sign(t.min),a=dt.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,i=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(t.min=null===t.min?e.suggestedMin:Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(t.max=null===t.max?e.suggestedMax:Math.max(t.max,e.suggestedMax)),r!==i&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,a=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),a=a||11),a&&(t=Math.min(a,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:dt.noop,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),a={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:dt.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var n,a,r,i,s=[],o=t.stepSize,u=o||1,l=t.maxTicks-1,d=t.min,c=t.max,f=t.precision,h=e.min,g=e.max,p=dt.niceNum((g-h)/l/u)*u;if(p<1e-14&&rn(d)&&rn(c))return[h,g];(i=Math.ceil(g/p)-Math.floor(h/p))>l&&(p=dt.niceNum(i*p/l/u)*u),o||rn(f)?n=Math.pow(10,dt._decimalPlaces(p)):(n=Math.pow(10,f),p=Math.ceil(p*n)/n),a=Math.floor(h/p)*p,r=Math.ceil(g/p)*p,o&&(!rn(d)&&dt.almostWhole(d/p,p/1e3)&&(a=d),!rn(c)&&dt.almostWhole(c/p,p/1e3)&&(r=c)),i=dt.almostEquals(i=(r-a)/p,Math.round(i),p/1e3)?Math.round(i):Math.ceil(i),a=Math.round(a*n)/n,r=Math.round(r*n)/n,s.push(rn(d)?a:d);for(var b=1;b<i;++b)s.push(Math.round((a+b*p)*n)/n);return s.push(rn(c)?r:c),s}(a,t);t.handleDirectionalChanges(),t.max=dt.max(r),t.min=dt.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),nn.prototype.convertTicksToLabels.call(t)}}),on={position:"left",ticks:{callback:Je.formatters.linear}},un=sn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&dt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var o={};dt.each(a,(function(a,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");void 0===o[u]&&(o[u]={positiveValues:[],negativeValues:[]});var l=o[u].positiveValues,d=o[u].negativeValues;n.isDatasetVisible(r)&&i(s)&&dt.each(a.data,(function(n,a){var r=+t.getRightValue(n);isNaN(r)||s.data[a].hidden||(l[a]=l[a]||0,d[a]=d[a]||0,e.relativePoints?l[a]=100:r<0?d[a]+=r:l[a]+=r)}))})),dt.each(o,(function(e){var n=e.positiveValues.concat(e.negativeValues),a=dt.min(n),r=dt.max(n);t.min=null===t.min?a:Math.min(t.min,a),t.max=null===t.max?r:Math.max(t.max,r)}))}else dt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&dt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a:a>t.max&&(t.max=a))}))}));t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=dt.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,n=e.start,a=+e.getRightValue(t),r=e.end-n;return e.isHorizontal()?e.left+e.width/r*(a-n):e.bottom-e.height/r*(a-n)},getValueForPixel:function(t){var e=this,n=e.isHorizontal();return e.start+(n?t-e.left:e.bottom-t)/(n?e.width:e.height)*(e.end-e.start)},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});un._defaults=on;var ln=dt.valueOrDefault,dn={position:"left",ticks:{callback:Je.formatters.logarithmic}};function cn(t,e){return dt.isFinite(t)&&t>=0?t:e}var fn=nn.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function i(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var s=e.stacked;if(void 0===s&&dt.each(a,(function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&i(a)&&void 0!==a.stack&&(s=!0)}})),e.stacked||s){var o={};dt.each(a,(function(a,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");n.isDatasetVisible(r)&&i(s)&&(void 0===o[u]&&(o[u]=[]),dt.each(a.data,(function(e,n){var a=o[u],r=+t.getRightValue(e);isNaN(r)||s.data[n].hidden||r<0||(a[n]=a[n]||0,a[n]+=r)})))})),dt.each(o,(function(e){if(e.length>0){var n=dt.min(e),a=dt.max(e);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?a:Math.max(t.max,a)}}))}else dt.each(a,(function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&i(r)&&dt.each(e.data,(function(e,n){var a=+t.getRightValue(e);isNaN(a)||r.data[n].hidden||a<0||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a:a>t.max&&(t.max=a),0!==a&&(null===t.minNotZero||a<t.minNotZero)&&(t.minNotZero=a))}))}));this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=cn(e.min,t.min),t.max=cn(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(dt.log10(t.min))-1),t.max=Math.pow(10,Math.floor(dt.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(dt.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(dt.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(dt.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),a={min:cn(e.min),max:cn(e.max)},r=t.ticks=function(t,e){var n,a,r=[],i=ln(t.min,Math.pow(10,Math.floor(dt.log10(e.min)))),s=Math.floor(dt.log10(e.max)),o=Math.ceil(e.max/Math.pow(10,s));0===i?(n=Math.floor(dt.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),r.push(i),i=a*Math.pow(10,n)):(n=Math.floor(dt.log10(i)),a=Math.floor(i/Math.pow(10,n)));var u=n<0?Math.pow(10,Math.abs(n)):1;do{r.push(i),10==++a&&(a=1,u=++n>=0?1:u),i=Math.round(a*Math.pow(10,n)*u)/u}while(n<s||n===s&&a<o);var l=ln(t.max,i);return r.push(l),r}(a,t);t.max=dt.max(r),t.min=dt.min(r),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&r.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),nn.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(dt.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,n,a,r,i,s=this,o=s.options.ticks,u=o.reverse,l=dt.log10,d=s._getFirstTickValue(s.minNotZero),c=0;return t=+s.getRightValue(t),u?(a=s.end,r=s.start,i=-1):(a=s.start,r=s.end,i=1),s.isHorizontal()?(e=s.width,n=u?s.right:s.left):(e=s.height,i*=-1,n=u?s.top:s.bottom),t!==a&&(0===a&&(e-=c=ln(o.fontSize,ot.global.defaultFontSize),a=d),0!==t&&(c+=e/(l(r)-l(a))*(l(t)-l(a))),n+=i*c),n},getValueForPixel:function(t){var e,n,a,r,i=this,s=i.options.ticks,o=s.reverse,u=dt.log10,l=i._getFirstTickValue(i.minNotZero);if(o?(n=i.end,a=i.start):(n=i.start,a=i.end),i.isHorizontal()?(e=i.width,r=o?i.right-t:t-i.left):(e=i.height,r=o?t-i.top:i.bottom-t),r!==n){if(0===n){var d=ln(s.fontSize,ot.global.defaultFontSize);r-=d,e-=d,n=l}r*=u(a)-u(n),r/=e,r=Math.pow(10,u(n)+r)}return r}});fn._defaults=dn;var hn=dt.valueOrDefault,gn=dt.valueAtIndexOrDefault,pn=dt.options.resolve,bn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:Je.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function mn(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function yn(t){var e=t.ticks;return e.display&&t.display?hn(e.fontSize,ot.global.defaultFontSize)+2*e.backdropPaddingY:0}function vn(t,e,n,a,r){return t===a||t===r?{start:e-n/2,end:e+n/2}:t<a||t>r?{start:e-n,end:e}:{start:e,end:e+n}}function xn(t){return 0===t||180===t?"center":t<180?"left":"right"}function _n(t,e,n,a){var r,i,s=n.y+a/2;if(dt.isArray(e))for(r=0,i=e.length;r<i;++r)t.fillText(e[r],n.x,s),s+=a;else t.fillText(e,n.x,s)}function Tn(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function On(t){return dt.isNumber(t)?t:0}var wn=sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=yn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;dt.each(e.data.datasets,(function(r,i){if(e.isDatasetVisible(i)){var s=e.getDatasetMeta(i);dt.each(r.data,(function(e,r){var i=+t.getRightValue(e);isNaN(i)||s.data[r].hidden||(n=Math.min(i,n),a=Math.max(i,a))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=a===Number.NEGATIVE_INFINITY?0:a,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/yn(this.options))},convertTicksToLabels:function(){var t=this;sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,a,r=dt.options._parseFont(t.options.pointLabels),i={l:0,r:t.width,t:0,b:t.height-t.paddingTop},s={};t.ctx.font=r.string,t._pointLabelSizes=[];var o,u,l,d=mn(t);for(e=0;e<d;e++){a=t.getPointPosition(e,t.drawingArea+5),o=t.ctx,u=r.lineHeight,n=dt.isArray(l=t.pointLabels[e]||"")?{w:dt.longestText(o,o.font,l),h:l.length*u}:{w:o.measureText(l).width,h:u},t._pointLabelSizes[e]=n;var c=t.getIndexAngle(e),f=dt.toDegrees(c)%360,h=vn(f,a.x,n.w,0,180),g=vn(f,a.y,n.h,90,270);h.start<i.l&&(i.l=h.start,s.l=c),h.end>i.r&&(i.r=h.end,s.r=c),g.start<i.t&&(i.t=g.start,s.t=c),g.end>i.b&&(i.b=g.end,s.b=c)}t.setReductions(t.drawingArea,i,s)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var a=this,r=e.l/Math.sin(n.l),i=Math.max(e.r-a.width,0)/Math.sin(n.r),s=-e.t/Math.cos(n.t),o=-Math.max(e.b-(a.height-a.paddingTop),0)/Math.cos(n.b);r=On(r),i=On(i),s=On(s),o=On(o),a.drawingArea=Math.min(Math.floor(t-(r+i)/2),Math.floor(t-(s+o)/2)),a.setCenterPoint(r,i,s,o)},setCenterPoint:function(t,e,n,a){var r=this,i=n+r.drawingArea,s=r.height-r.paddingTop-a-r.drawingArea;r.xCenter=Math.floor((t+r.drawingArea+(r.width-e-r.drawingArea))/2+r.left),r.yCenter=Math.floor((i+s)/2+r.top+r.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/mn(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,a=e.ticks;if(e.display){var r=t.ctx,i=this.getIndexAngle(0),s=dt.options._parseFont(a);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,n=t.options,a=n.angleLines,r=n.gridLines,i=n.pointLabels,s=hn(a.lineWidth,r.lineWidth),o=hn(a.color,r.color),u=yn(n);e.save(),e.lineWidth=s,e.strokeStyle=o,e.setLineDash&&(e.setLineDash(pn([a.borderDash,r.borderDash,[]])),e.lineDashOffset=pn([a.borderDashOffset,r.borderDashOffset,0]));var l=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),d=dt.options._parseFont(i);e.font=d.string,e.textBaseline="middle";for(var c=mn(t)-1;c>=0;c--){if(a.display&&s&&o){var f=t.getPointPosition(c,l);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(f.x,f.y),e.stroke()}if(i.display){var h=t.getPointPosition(c,l+(0===c?u/2:0)+5),g=gn(i.fontColor,c,ot.global.defaultFontColor);e.fillStyle=g;var p=t.getIndexAngle(c),b=dt.toDegrees(p);e.textAlign=xn(b),Tn(b,t._pointLabelSizes[c],h),_n(e,t.pointLabels[c]||"",h,d.lineHeight)}}e.restore()}(t),dt.each(t.ticks,(function(e,o){if(o>0||a.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[o]);if(n.display&&0!==o&&function(t,e,n,a){var r,i=t.ctx,s=e.circular,o=mn(t),u=gn(e.color,a-1),l=gn(e.lineWidth,a-1);if((s||o)&&u&&l){if(i.save(),i.strokeStyle=u,i.lineWidth=l,i.setLineDash&&(i.setLineDash(e.borderDash||[]),i.lineDashOffset=e.borderDashOffset||0),i.beginPath(),s)i.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{r=t.getPointPosition(0,n),i.moveTo(r.x,r.y);for(var d=1;d<o;d++)r=t.getPointPosition(d,n),i.lineTo(r.x,r.y)}i.closePath(),i.stroke(),i.restore()}}(t,n,u,o),a.display){var l=hn(a.fontColor,ot.global.defaultFontColor);if(r.font=s.string,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(i),a.showLabelBackdrop){var d=r.measureText(e).width;r.fillStyle=a.backdropColor,r.fillRect(-d/2-a.backdropPaddingX,-u-s.size/2-a.backdropPaddingY,d+2*a.backdropPaddingX,s.size+2*a.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=l,r.fillText(e,0,-u),r.restore()}}}))}}});wn._defaults=bn;var Sn=dt.valueOrDefault,In=Number.MIN_SAFE_INTEGER||-9007199254740991,Nn=Number.MAX_SAFE_INTEGER||9007199254740991,Cn={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},Rn=Object.keys(Cn);function An(t,e){return t-e}function kn(t){var e,n,a,r={},i=[];for(e=0,n=t.length;e<n;++e)r[a=t[e]]||(r[a]=!0,i.push(a));return i}function En(t,e,n,a){var r=function(t,e,n){for(var a,r,i,s=0,o=t.length-1;s>=0&&s<=o;){if(i=t[a=s+o>>1],!(r=t[a-1]||null))return{lo:null,hi:i};if(i[e]<n)s=a+1;else{if(!(r[e]>n))return{lo:r,hi:i};o=a-1}}return{lo:i,hi:null}}(t,e,n),i=r.lo?r.hi?r.lo:t[t.length-2]:t[0],s=r.lo?r.hi?r.hi:t[t.length-1]:t[1],o=s[e]-i[e];return i[a]+(s[a]-i[a])*(o?(n-i[e])/o:0)}function Ln(t,e){var n=t._adapter,a=t.options.time,r=a.parser,i=r||a.format,s=e;return"function"==typeof r&&(s=r(s)),dt.isFinite(s)||(s="string"==typeof i?n.parse(s,i):n.parse(s)),null!==s?+s:(r||"function"!=typeof i||(s=i(e),dt.isFinite(s)||(s=n.parse(s))),s)}function Dn(t,e){if(dt.isNullOrUndef(e))return null;var n=t.options.time,a=Ln(t,t.getRightValue(e));return null===a?a:(n.round&&(a=+t._adapter.startOf(a,n.round)),a)}function Pn(t){for(var e=Rn.indexOf(t)+1,n=Rn.length;e<n;++e)if(Cn[Rn[e]].common)return Rn[e]}var Mn=nn.extend({initialize:function(){this.mergeTicksOptions(),nn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),a=t._adapter=new Ze._date(e.adapters.date);return n.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),dt.mergeIf(n.displayFormats,a.formats()),nn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),nn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,a,r,i,s=this,o=s.chart,u=s._adapter,l=s.options.time,d=l.unit||"day",c=Nn,f=In,h=[],g=[],p=[],b=o.data.labels||[];for(t=0,n=b.length;t<n;++t)p.push(Dn(s,b[t]));for(t=0,n=(o.data.datasets||[]).length;t<n;++t)if(o.isDatasetVisible(t))if(dt.isObject((r=o.data.datasets[t].data)[0]))for(g[t]=[],e=0,a=r.length;e<a;++e)i=Dn(s,r[e]),h.push(i),g[t][e]=i;else{for(e=0,a=p.length;e<a;++e)h.push(p[e]);g[t]=p.slice(0)}else g[t]=[];p.length&&(p=kn(p).sort(An),c=Math.min(c,p[0]),f=Math.max(f,p[p.length-1])),h.length&&(h=kn(h).sort(An),c=Math.min(c,h[0]),f=Math.max(f,h[h.length-1])),c=Dn(s,l.min)||c,f=Dn(s,l.max)||f,c=c===Nn?+u.startOf(Date.now(),d):c,f=f===In?+u.endOf(Date.now(),d)+1:f,s.min=Math.min(c,f),s.max=Math.max(c+1,f),s._horizontal=s.isHorizontal(),s._table=[],s._timestamps={data:h,datasets:g,labels:p}},buildTicks:function(){var t,e,n,a=this,r=a.min,i=a.max,s=a.options,o=s.time,u=[],l=[];switch(s.ticks.source){case"data":u=a._timestamps.data;break;case"labels":u=a._timestamps.labels;break;case"auto":default:u=function(t,e,n,a){var r,i=t._adapter,s=t.options,o=s.time,u=o.unit||function(t,e,n,a){var r,i,s=Rn.length;for(r=Rn.indexOf(t);r<s-1;++r)if((i=Cn[Rn[r]]).common&&Math.ceil((n-e)/((i.steps?i.steps[i.steps.length-1]:Nn)*i.size))<=a)return Rn[r];return Rn[s-1]}(o.minUnit,e,n,a),l=Pn(u),d=Sn(o.stepSize,o.unitStepSize),c="week"===u&&o.isoWeekday,f=s.ticks.major.enabled,h=Cn[u],g=e,p=n,b=[];for(d||(d=function(t,e,n,a){var r,i,s,o=e-t,u=Cn[n],l=u.size,d=u.steps;if(!d)return Math.ceil(o/(a*l));for(r=0,i=d.length;r<i&&(s=d[r],!(Math.ceil(o/(l*s))<=a));++r);return s}(e,n,u,a)),c&&(g=+i.startOf(g,"isoWeek",c),p=+i.startOf(p,"isoWeek",c)),g=+i.startOf(g,c?"day":u),(p=+i.startOf(p,c?"day":u))<n&&(p=+i.add(p,1,u)),r=g,f&&l&&!c&&!o.round&&(r=+i.startOf(r,l),r=+i.add(r,~~((g-r)/(h.size*d))*d,u));r<p;r=+i.add(r,d,u))b.push(+r);return b.push(+r),b}(a,r,i,a.getLabelCapacity(r))}for("ticks"===s.bounds&&u.length&&(r=u[0],i=u[u.length-1]),r=Dn(a,o.min)||r,i=Dn(a,o.max)||i,t=0,e=u.length;t<e;++t)(n=u[t])>=r&&n<=i&&l.push(n);return a.min=r,a.max=i,a._unit=o.unit||function(t,e,n,a,r){var i,s;for(i=Rn.length-1;i>=Rn.indexOf(n);i--)if(Cn[s=Rn[i]].common&&t._adapter.diff(r,a,s)>=e.length)return s;return Rn[n?Rn.indexOf(n):0]}(a,l,o.minUnit,a.min,a.max),a._majorUnit=Pn(a._unit),a._table=function(t,e,n,a){if("linear"===a||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var r,i,s,o,u,l=[],d=[e];for(r=0,i=t.length;r<i;++r)(o=t[r])>e&&o<n&&d.push(o);for(d.push(n),r=0,i=d.length;r<i;++r)u=d[r+1],o=d[r],void 0!==(s=d[r-1])&&void 0!==u&&Math.round((u+s)/2)===o||l.push({time:o,pos:r/(i-1)});return l}(a._timestamps.data,r,i,s.distribution),a._offsets=function(t,e,n,a,r){var i,s,o=0,u=0;return r.offset&&e.length&&(r.time.min||(i=En(t,"time",e[0],"pos"),o=1===e.length?1-i:(En(t,"time",e[1],"pos")-i)/2),r.time.max||(s=En(t,"time",e[e.length-1],"pos"),u=1===e.length?s:(s-En(t,"time",e[e.length-2],"pos"))/2)),{start:o,end:u}}(a._table,l,0,0,s),s.ticks.reverse&&l.reverse(),function(t,e,n){var a,r,i,s,o=[];for(a=0,r=e.length;a<r;++a)i=e[a],s=!!n&&i===+t._adapter.startOf(i,n),o.push({value:i,major:s});return o}(a,l,a._majorUnit)},getLabelForIndex:function(t,e){var n=this,a=n._adapter,r=n.chart.data,i=n.options.time,s=r.labels&&t<r.labels.length?r.labels[t]:"",o=r.datasets[e].data[t];return dt.isObject(o)&&(s=n.getRightValue(o)),i.tooltipFormat?a.format(Ln(n,s),i.tooltipFormat):"string"==typeof s?s:a.format(Ln(n,s),i.displayFormats.datetime)},tickFormatFunction:function(t,e,n,a){var r=this._adapter,i=this.options,s=i.time.displayFormats,o=s[this._unit],u=this._majorUnit,l=s[u],d=+r.startOf(t,u),c=i.ticks.major,f=c.enabled&&u&&l&&t===d,h=r.format(t,a||(f?l:o)),g=f?c:i.ticks.minor,p=Sn(g.callback,g.userCallback);return p?p(h,e,n):h},convertTicksToLabels:function(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(this.tickFormatFunction(t[e].value,e,t));return a},getPixelForOffset:function(t){var e=this,n=e.options.ticks.reverse,a=e._horizontal?e.width:e.height,r=e._horizontal?n?e.right:e.left:n?e.bottom:e.top,i=En(e._table,"time",t,"pos"),s=a*(e._offsets.start+i)/(e._offsets.start+1+e._offsets.end);return n?r-s:r+s},getPixelForValue:function(t,e,n){var a=null;if(void 0!==e&&void 0!==n&&(a=this._timestamps.datasets[n][e]),null===a&&(a=Dn(this,t)),null!==a)return this.getPixelForOffset(a)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,a=En(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.start+1+e._offsets.start)-e._offsets.end,"time");return e._adapter._create(a)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,a=dt.toRadians(e.maxRotation),r=Math.cos(a),i=Math.sin(a);return n*r+Sn(e.fontSize,ot.global.defaultFontSize)*i},getLabelCapacity:function(t){var e=this,n=e.tickFormatFunction(t,0,[],e.options.time.displayFormats.millisecond),a=e.getLabelWidth(n),r=e.isHorizontal()?e.width:e.height,i=Math.floor(r/a);return i>0?i:1}});Mn._defaults={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};var qn={category:an,linear:un,logarithmic:fn,radialLinear:wn,time:Mn},jn={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Ze._date.override("function"==typeof t?{_id:"moment",formats:function(){return jn},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,a){return t(e).add(n,a).valueOf()},diff:function(e,n,a){return t.duration(t(e).diff(t(n))).as(a)},startOf:function(e,n,a){return e=t(e),"isoWeek"===n?e.isoWeekday(a).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),ot._set("global",{plugins:{filler:{propagate:!0}}});var Fn={dataset:function(t){var e=t.fill,n=t.chart,a=n.getDatasetMeta(e),r=a&&n.isDatasetVisible(e)&&a.dataset._children||[],i=r.length||0;return i?function(t,e){return e<i&&r[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,a=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===a?t.y:a}}}};function Gn(t,e,n){var a,r=t._model||{},i=r.fill;if(void 0===i&&(i=!!r.backgroundColor),!1===i||null===i)return!1;if(!0===i)return"origin";if(a=parseFloat(i,10),isFinite(a)&&Math.floor(a)===a)return"-"!==i[0]&&"+"!==i[0]||(a=e+a),!(a===e||a<0||a>=n)&&a;switch(i){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return i;default:return!1}}function Vn(t){var e,n=t.el._model||{},a=t.el._scale||{},r=t.fill,i=null;if(isFinite(r))return null;if("start"===r?i=void 0===n.scaleBottom?a.bottom:n.scaleBottom:"end"===r?i=void 0===n.scaleTop?a.top:n.scaleTop:void 0!==n.scaleZero?i=n.scaleZero:a.getBasePosition?i=a.getBasePosition():a.getBasePixel&&(i=a.getBasePixel()),null!=i){if(void 0!==i.x&&void 0!==i.y)return i;if(dt.isFinite(i))return{x:(e=a.isHorizontal())?i:null,y:e?null:i}}return null}function zn(t,e,n){var a,r=t[e].fill,i=[e];if(!n)return r;for(;!1!==r&&-1===i.indexOf(r);){if(!isFinite(r))return r;if(!(a=t[r]))return!1;if(a.visible)return r;i.push(r),r=a.fill}return!1}function Bn(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),Fn[n](t))}function Yn(t){return t&&!t.skip}function Hn(t,e,n,a,r){var i;if(a&&r){for(t.moveTo(e[0].x,e[0].y),i=1;i<a;++i)dt.canvas.lineTo(t,e[i-1],e[i]);for(t.lineTo(n[r-1].x,n[r-1].y),i=r-1;i>0;--i)dt.canvas.lineTo(t,n[i],n[i-1],!0)}}var Un={id:"filler",afterDatasetsUpdate:function(t,e){var n,a,r,i,s=(t.data.datasets||[]).length,o=e.propagate,u=[];for(a=0;a<s;++a)i=null,(r=(n=t.getDatasetMeta(a)).dataset)&&r._model&&r instanceof qt.Line&&(i={visible:t.isDatasetVisible(a),fill:Gn(r,a,s),chart:t,el:r}),n.$filler=i,u.push(i);for(a=0;a<s;++a)(i=u[a])&&(i.fill=zn(u,a,o),i.boundary=Vn(i),i.mapper=Bn(i))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,r=n.el,i=r._view,s=r._children||[],o=n.mapper,u=i.backgroundColor||ot.global.defaultColor;o&&u&&s.length&&(dt.canvas.clipArea(a,t.chartArea),function(t,e,n,a,r,i){var s,o,u,l,d,c,f,h=e.length,g=a.spanGaps,p=[],b=[],m=0,y=0;for(t.beginPath(),s=0,o=h+!!i;s<o;++s)d=n(l=e[u=s%h]._view,u,a),c=Yn(l),f=Yn(d),c&&f?(m=p.push(l),y=b.push(d)):m&&y&&(g?(c&&p.push(l),f&&b.push(d)):(Hn(t,p,b,m,y),m=y=0,p=[],b=[]));Hn(t,p,b,m,y),t.closePath(),t.fillStyle=r,t.fill()}(a,s,o,i,u,r._loop),dt.canvas.unclipArea(a))}}},Wn=dt.noop,Kn=dt.valueOrDefault;function $n(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}ot._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,a=this.chart,r=a.getDatasetMeta(n);r.hidden=null===r.hidden?!a.data.datasets[n].hidden:null,a.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return dt.isArray(e.datasets)?e.datasets.map((function(e,n){return{text:e.label,fillStyle:dt.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}}),this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var Zn=gt.extend({initialize:function(t){dt.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:Wn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Wn,beforeSetDimensions:Wn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Wn,beforeBuildLabels:Wn,buildLabels:function(){var t=this,e=t.options.labels||{},n=dt.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter((function(n){return e.filter(n,t.chart.data)}))),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:Wn,beforeFit:Wn,fit:function(){var t=this,e=t.options,n=e.labels,a=e.display,r=t.ctx,i=dt.options._parseFont(n),s=i.size,o=t.legendHitBoxes=[],u=t.minSize,l=t.isHorizontal();if(l?(u.width=t.maxWidth,u.height=a?10:0):(u.width=a?10:0,u.height=t.maxHeight),a)if(r.font=i.string,l){var d=t.lineWidths=[0],c=0;r.textAlign="left",r.textBaseline="top",dt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;(0===e||d[d.length-1]+a+n.padding>u.width)&&(c+=s+n.padding,d[d.length-(e>0?0:1)]=n.padding),o[e]={left:0,top:0,width:a,height:s},d[d.length-1]+=a+n.padding})),u.height+=c}else{var f=n.padding,h=t.columnWidths=[],g=n.padding,p=0,b=0,m=s+f;dt.each(t.legendItems,(function(t,e){var a=$n(n,s)+s/2+r.measureText(t.text).width;e>0&&b+m>u.height-f&&(g+=p+n.padding,h.push(p),p=0,b=0),p=Math.max(p,a),b+=m,o[e]={left:0,top:0,width:a,height:s}})),g+=p,h.push(p),u.width+=g}t.width=u.width,t.height=u.height},afterFit:Wn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,a=ot.global,r=a.defaultColor,i=a.elements.line,s=t.width,o=t.lineWidths;if(e.display){var u,l=t.ctx,d=Kn(n.fontColor,a.defaultFontColor),c=dt.options._parseFont(n),f=c.size;l.textAlign="left",l.textBaseline="middle",l.lineWidth=.5,l.strokeStyle=d,l.fillStyle=d,l.font=c.string;var h=$n(n,f),g=t.legendHitBoxes,p=t.isHorizontal();u=p?{x:t.left+(s-o[0])/2+n.padding,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var b=f+n.padding;dt.each(t.legendItems,(function(a,d){var c=l.measureText(a.text).width,m=h+f/2+c,y=u.x,v=u.y;p?d>0&&y+m+n.padding>t.left+t.minSize.width&&(v=u.y+=b,u.line++,y=u.x=t.left+(s-o[u.line])/2+n.padding):d>0&&v+b>t.top+t.minSize.height&&(y=u.x=y+t.columnWidths[u.line]+n.padding,v=u.y=t.top+n.padding,u.line++),function(t,n,a){if(!(isNaN(h)||h<=0)){l.save();var s=Kn(a.lineWidth,i.borderWidth);if(l.fillStyle=Kn(a.fillStyle,r),l.lineCap=Kn(a.lineCap,i.borderCapStyle),l.lineDashOffset=Kn(a.lineDashOffset,i.borderDashOffset),l.lineJoin=Kn(a.lineJoin,i.borderJoinStyle),l.lineWidth=s,l.strokeStyle=Kn(a.strokeStyle,r),l.setLineDash&&l.setLineDash(Kn(a.lineDash,i.borderDash)),e.labels&&e.labels.usePointStyle){var o=h*Math.SQRT2/2;dt.canvas.drawPoint(l,a.pointStyle,o,t+h/2,n+f/2)}else 0!==s&&l.strokeRect(t,n,h,f),l.fillRect(t,n,h,f);l.restore()}}(y,v,a),g[d].left=y,g[d].top=v,function(t,e,n,a){var r=f/2,i=h+r+t,s=e+r;l.fillText(n.text,i,s),n.hidden&&(l.beginPath(),l.lineWidth=2,l.moveTo(i,s),l.lineTo(i+a,s),l.stroke())}(y,v,a,c),p?u.x+=m+n.padding:u.y+=b}))}},_getLegendItemAt:function(t,e){var n,a,r,i=this;if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)for(r=i.legendHitBoxes,n=0;n<r.length;++n)if(t>=(a=r[n]).left&&t<=a.left+a.width&&e>=a.top&&e<=a.top+a.height)return i.legendItems[n];return null},handleEvent:function(t){var e,n=this,a=n.options,r="mouseup"===t.type?"click":t.type;if("mousemove"===r){if(!a.onHover&&!a.onLeave)return}else{if("click"!==r)return;if(!a.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===r?e&&a.onClick&&a.onClick.call(n,t.native,e):(a.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&a.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),a.onHover&&e&&a.onHover.call(n,t.native,e))}});function Jn(t,e){var n=new Zn({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.legend=n}var Qn={id:"legend",_element:Zn,beforeInit:function(t){var e=t.options.legend;e&&Jn(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(dt.mergeIf(e,ot.global.legend),n?(ve.configure(t,n,e),n.options=e):Jn(t,e)):n&&(ve.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Xn=dt.noop;ot._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var ta=gt.extend({initialize:function(t){dt.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Xn,update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=n,a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeBuildLabels(),a.buildLabels(),a.afterBuildLabels(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:Xn,beforeSetDimensions:Xn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Xn,beforeBuildLabels:Xn,buildLabels:Xn,afterBuildLabels:Xn,beforeFit:Xn,fit:function(){var t=this,e=t.options,n=e.display,a=t.minSize,r=dt.isArray(e.text)?e.text.length:1,i=dt.options._parseFont(e),s=n?r*i.lineHeight+2*e.padding:0;t.isHorizontal()?(a.width=t.maxWidth,a.height=s):(a.width=s,a.height=t.maxHeight),t.width=a.width,t.height=a.height},afterFit:Xn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var a,r,i,s=dt.options._parseFont(n),o=s.lineHeight,u=o/2+n.padding,l=0,d=t.top,c=t.left,f=t.bottom,h=t.right;e.fillStyle=dt.valueOrDefault(n.fontColor,ot.global.defaultFontColor),e.font=s.string,t.isHorizontal()?(r=c+(h-c)/2,i=d+u,a=h-c):(r="left"===n.position?c+u:h-u,i=d+(f-d)/2,a=f-d,l=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(r,i),e.rotate(l),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(dt.isArray(g))for(var p=0,b=0;b<g.length;++b)e.fillText(g[b],0,p,a),p+=o;else e.fillText(g,0,0,a);e.restore()}}});function ea(t,e){var n=new ta({ctx:t.ctx,options:e,chart:t});ve.configure(t,n,e),ve.addBox(t,n),t.titleBlock=n}var na={},aa=Un,ra=Qn,ia={id:"title",_element:ta,beforeInit:function(t){var e=t.options.title;e&&ea(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(dt.mergeIf(e,ot.global.title),n?(ve.configure(t,n,e),n.options=e):ea(t,e)):n&&(ve.removeBox(t,n),delete t.titleBlock)}};for(var sa in na.filler=aa,na.legend=ra,na.title=ia,We.helpers=dt,function(){function t(t,e,n){var a;return"string"==typeof t?(a=parseInt(t,10),-1!==t.indexOf("%")&&(a=a/100*e.parentNode[n])):a=t,a}function e(t){return null!=t&&"none"!==t}function n(n,a,r){var i=document.defaultView,s=dt._getParentNode(n),o=i.getComputedStyle(n)[a],u=i.getComputedStyle(s)[a],l=e(o),d=e(u),c=Number.POSITIVE_INFINITY;return l||d?Math.min(l?t(o,n,r):c,d?t(u,s,r):c):"none"}dt.where=function(t,e){if(dt.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return dt.each(t,(function(t){e(t)&&n.push(t)})),n},dt.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var a=0,r=t.length;a<r;++a)if(e.call(n,t[a],a,t))return a;return-1},dt.findNextWhere=function(t,e,n){dt.isNullOrUndef(n)&&(n=-1);for(var a=n+1;a<t.length;a++){var r=t[a];if(e(r))return r}},dt.findPreviousWhere=function(t,e,n){dt.isNullOrUndef(n)&&(n=t.length);for(var a=n-1;a>=0;a--){var r=t[a];if(e(r))return r}},dt.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},dt.almostEquals=function(t,e,n){return Math.abs(t-e)<n},dt.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},dt.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},dt.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},dt.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},dt.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e},dt.toRadians=function(t){return t*(Math.PI/180)},dt.toDegrees=function(t){return t*(180/Math.PI)},dt._decimalPlaces=function(t){if(dt.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},dt.getAngleFromPoint=function(t,e){var n=e.x-t.x,a=e.y-t.y,r=Math.sqrt(n*n+a*a),i=Math.atan2(a,n);return i<-.5*Math.PI&&(i+=2*Math.PI),{angle:i,distance:r}},dt.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},dt.aliasPixel=function(t){return t%2==0?0:.5},dt._alignPixel=function(t,e,n){var a=t.currentDevicePixelRatio,r=n/2;return Math.round((e-r)*a)/a+r},dt.splineCurve=function(t,e,n,a){var r=t.skip?e:t,i=e,s=n.skip?e:n,o=Math.sqrt(Math.pow(i.x-r.x,2)+Math.pow(i.y-r.y,2)),u=Math.sqrt(Math.pow(s.x-i.x,2)+Math.pow(s.y-i.y,2)),l=o/(o+u),d=u/(o+u),c=a*(l=isNaN(l)?0:l),f=a*(d=isNaN(d)?0:d);return{previous:{x:i.x-c*(s.x-r.x),y:i.y-c*(s.y-r.y)},next:{x:i.x+f*(s.x-r.x),y:i.y+f*(s.y-r.y)}}},dt.EPSILON=Number.EPSILON||1e-14,dt.splineCurveMonotone=function(t){var e,n,a,r,i,s,o,u,l,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),c=d.length;for(e=0;e<c;++e)if(!(a=d[e]).model.skip){if(n=e>0?d[e-1]:null,(r=e<c-1?d[e+1]:null)&&!r.model.skip){var f=r.model.x-a.model.x;a.deltaK=0!==f?(r.model.y-a.model.y)/f:0}a.mK=!n||n.model.skip?a.deltaK:!r||r.model.skip?n.deltaK:this.sign(n.deltaK)!==this.sign(a.deltaK)?0:(n.deltaK+a.deltaK)/2}for(e=0;e<c-1;++e)r=d[e+1],(a=d[e]).model.skip||r.model.skip||(dt.almostEquals(a.deltaK,0,this.EPSILON)?a.mK=r.mK=0:(i=a.mK/a.deltaK,s=r.mK/a.deltaK,(u=Math.pow(i,2)+Math.pow(s,2))<=9||(o=3/Math.sqrt(u),a.mK=i*o*a.deltaK,r.mK=s*o*a.deltaK)));for(e=0;e<c;++e)(a=d[e]).model.skip||(r=e<c-1?d[e+1]:null,(n=e>0?d[e-1]:null)&&!n.model.skip&&(a.model.controlPointPreviousX=a.model.x-(l=(a.model.x-n.model.x)/3),a.model.controlPointPreviousY=a.model.y-l*a.mK),r&&!r.model.skip&&(a.model.controlPointNextX=a.model.x+(l=(r.model.x-a.model.x)/3),a.model.controlPointNextY=a.model.y+l*a.mK))},dt.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},dt.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},dt.niceNum=function(t,e){var n=Math.floor(dt.log10(t)),a=t/Math.pow(10,n);return(e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10)*Math.pow(10,n)},dt.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},dt.getRelativePosition=function(t,e){var n,a,r=t.originalEvent||t,i=t.target||t.srcElement,s=i.getBoundingClientRect(),o=r.touches;o&&o.length>0?(n=o[0].clientX,a=o[0].clientY):(n=r.clientX,a=r.clientY);var u=parseFloat(dt.getStyle(i,"padding-left")),l=parseFloat(dt.getStyle(i,"padding-top")),d=parseFloat(dt.getStyle(i,"padding-right")),c=parseFloat(dt.getStyle(i,"padding-bottom")),f=s.bottom-s.top-l-c;return{x:n=Math.round((n-s.left-u)/(s.right-s.left-u-d)*i.width/e.currentDevicePixelRatio),y:a=Math.round((a-s.top-l)/f*i.height/e.currentDevicePixelRatio)}},dt.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},dt.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},dt._calculatePadding=function(t,e,n){return(e=dt.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},dt._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},dt.getMaximumWidth=function(t){var e=dt._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,a=n-dt._calculatePadding(e,"padding-left",n)-dt._calculatePadding(e,"padding-right",n),r=dt.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},dt.getMaximumHeight=function(t){var e=dt._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,a=n-dt._calculatePadding(e,"padding-top",n)-dt._calculatePadding(e,"padding-bottom",n),r=dt.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},dt.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},dt.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var a=t.canvas,r=t.height,i=t.width;a.height=r*n,a.width=i*n,t.ctx.scale(n,n),a.style.height||a.style.width||(a.style.height=r+"px",a.style.width=i+"px")}},dt.fontString=function(t,e,n){return e+" "+t+"px "+n},dt.longestText=function(t,e,n,a){var r=(a=a||{}).data=a.data||{},i=a.garbageCollect=a.garbageCollect||[];a.font!==e&&(r=a.data={},i=a.garbageCollect=[],a.font=e),t.font=e;var s=0;dt.each(n,(function(e){null!=e&&!0!==dt.isArray(e)?s=dt.measureText(t,r,i,s,e):dt.isArray(e)&&dt.each(e,(function(e){null==e||dt.isArray(e)||(s=dt.measureText(t,r,i,s,e))}))}));var o=i.length/2;if(o>n.length){for(var u=0;u<o;u++)delete r[i[u]];i.splice(0,o)}return s},dt.measureText=function(t,e,n,a,r){var i=e[r];return i||(i=e[r]=t.measureText(r).width,n.push(r)),i>a&&(a=i),a},dt.numberOfLabelLines=function(t){var e=1;return dt.each(t,(function(t){dt.isArray(t)&&t.length>e&&(e=t.length)})),e},dt.color=W?function(t){return t instanceof CanvasGradient&&(t=ot.global.defaultColor),W(t)}:function(t){return console.error("Color.js not found!"),t},dt.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:dt.color(t).saturate(.5).darken(.1).rgbString()}}(),We._adapters=Ze,We.Animation=bt,We.animationService=mt,We.controllers=oe,We.DatasetController=Tt,We.defaults=ot,We.Element=gt,We.elements=qt,We.Interaction=ge,We.layouts=ve,We.platform=Ae,We.plugins=ke,We.Scale=nn,We.scaleService=Ee,We.Ticks=Je,We.Tooltip=Ge,We.helpers.each(qn,(function(t,e){We.scaleService.registerScaleType(e,t,t._defaults)})),na)na.hasOwnProperty(sa)&&We.plugins.register(na[sa]);We.platform.initialize();var oa=We;return"undefined"!=typeof window&&(window.Chart=We),We.Chart=We,We.Legend=na.legend._element,We.Title=na.title._element,We.pluginService=We.plugins,We.PluginBase=We.Element.extend({}),We.canvasHelpers=We.helpers.canvas,We.layoutService=We.layouts,We.LinearScaleBase=sn,We.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){We[t]=function(e,n){return new We(e,We.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),oa}(function(){try{return n("wd/R")}catch(t){}}())},MP8s:function(t,e,n){"use strict";n.d(e,"a",(function(){return T}));var a=n("8Y7J"),r=n("2vnA"),i=n("f95s"),s=n("mfoh"),o=n("X+05"),u=n("afOK"),l=n.n(u),d=n("RBan"),c=n.n(d),f=n("wig9"),h=n.n(f),g=n("J2m7"),p=n.n(g),b=n("4qC0"),m=n.n(b),y=n("lSCD"),v=n.n(y),x=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},_=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},T=function(){function t(){this.options=new s.b,this.eventNames=Object.keys(o.a),this.expandedNodeIds={},this.selectedLeafNodeIds={},this.activeNodeIds={},this.hiddenNodeIds={},this.focusedNodeId=null,this.firstUpdate=!0,this.subscriptions=[]}var e;return e=t,t.prototype.fireEvent=function(t){t.treeModel=this,this.events[t.eventName].emit(t),this.events.event.emit(t)},t.prototype.subscribe=function(t,e){var n=this.events[t].subscribe(e);this.subscriptions.push(n)},t.prototype.getFocusedNode=function(){return this.focusedNode},t.prototype.getActiveNode=function(){return this.activeNodes[0]},t.prototype.getActiveNodes=function(){return this.activeNodes},t.prototype.getVisibleRoots=function(){return this.virtualRoot.visibleChildren},t.prototype.getFirstRoot=function(t){return void 0===t&&(t=!1),l()(t?this.getVisibleRoots():this.roots)},t.prototype.getLastRoot=function(t){return void 0===t&&(t=!1),c()(t?this.getVisibleRoots():this.roots)},Object.defineProperty(t.prototype,"isFocused",{get:function(){return e.focusedTree===this},enumerable:!0,configurable:!0}),t.prototype.isNodeFocused=function(t){return this.focusedNode===t},t.prototype.isEmptyTree=function(){return this.roots&&0===this.roots.length},Object.defineProperty(t.prototype,"focusedNode",{get:function(){return this.focusedNodeId?this.getNodeById(this.focusedNodeId):null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expandedNodes",{get:function(){var t=this,e=Object.keys(this.expandedNodeIds).filter((function(e){return t.expandedNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activeNodes",{get:function(){var t=this,e=Object.keys(this.activeNodeIds).filter((function(e){return t.activeNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hiddenNodes",{get:function(){var t=this,e=Object.keys(this.hiddenNodeIds).filter((function(e){return t.hiddenNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectedLeafNodes",{get:function(){var t=this,e=Object.keys(this.selectedLeafNodeIds).filter((function(e){return t.selectedLeafNodeIds[e]})).map((function(e){return t.getNodeById(e)}));return h()(e)},enumerable:!0,configurable:!0}),t.prototype.getNodeByPath=function(t,e){if(void 0===e&&(e=null),!t)return null;if(e=e||this.virtualRoot,0===t.length)return e;if(!e.children)return null;var n=t.shift(),a=p()(e.children,{id:n});return a?this.getNodeByPath(t,a):null},t.prototype.getNodeById=function(t){var e=t.toString();return this.getNodeBy((function(t){return t.id.toString()===e}))},t.prototype.getNodeBy=function(t,e){if(void 0===e&&(e=null),!(e=e||this.virtualRoot).children)return null;var n=p()(e.children,t);if(n)return n;for(var a=0,r=e.children;a<r.length;a++){var i=this.getNodeBy(t,r[a]);if(i)return i}},t.prototype.isExpanded=function(t){return this.expandedNodeIds[t.id]},t.prototype.isHidden=function(t){return this.hiddenNodeIds[t.id]},t.prototype.isActive=function(t){return this.activeNodeIds[t.id]},t.prototype.isSelected=function(t){return this.selectedLeafNodeIds[t.id]},t.prototype.ngOnDestroy=function(){this.dispose(),this.unsubscribeAll()},t.prototype.dispose=function(){this.virtualRoot&&this.virtualRoot.dispose()},t.prototype.unsubscribeAll=function(){this.subscriptions.forEach((function(t){return t.unsubscribe()})),this.subscriptions=[]},t.prototype.setData=function(t){var e=t.nodes,n=t.options,a=void 0===n?null:n,r=t.events,i=void 0===r?null:r;a&&(this.options=new s.b(a)),i&&(this.events=i),e&&(this.nodes=e),this.update()},t.prototype.update=function(){var t,e=((t={id:this.options.rootId,virtual:!0})[this.options.childrenField]=this.nodes,t);this.dispose(),this.virtualRoot=new i.a(e,null,this,0),this.roots=this.virtualRoot.children,this.firstUpdate?this.roots&&(this.firstUpdate=!1,this._calculateExpandedNodes()):this.fireEvent({eventName:o.a.updateData})},t.prototype.setFocusedNode=function(t){this.focusedNodeId=t?t.id:null},t.prototype.setFocus=function(t){e.focusedTree=t?this:null},t.prototype.doForAll=function(t){this.roots.forEach((function(e){return e.doForAll(t)}))},t.prototype.focusNextNode=function(){var t=this.getFocusedNode(),e=t?t.findNextNode(!0,!0):this.getFirstRoot(!0);e&&e.focus()},t.prototype.focusPreviousNode=function(){var t=this.getFocusedNode(),e=t?t.findPreviousNode(!0):this.getLastRoot(!0);e&&e.focus()},t.prototype.focusDrillDown=function(){var t=this.getFocusedNode();if(t&&t.isCollapsed&&t.hasChildren)t.toggleExpanded();else{var e=t?t.getFirstChild(!0):this.getFirstRoot(!0);e&&e.focus()}},t.prototype.focusDrillUp=function(){var t=this.getFocusedNode();if(t)if(t.isExpanded)t.toggleExpanded();else{var e=t.realParent;e&&e.focus()}},t.prototype.setActiveNode=function(t,e,n){void 0===n&&(n=!1),n?this._setActiveNodeMulti(t,e):this._setActiveNodeSingle(t,e),e?(t.focus(this.options.scrollOnActivate),this.fireEvent({eventName:o.a.activate,node:t}),this.fireEvent({eventName:o.a.nodeActivate,node:t})):(this.fireEvent({eventName:o.a.deactivate,node:t}),this.fireEvent({eventName:o.a.nodeDeactivate,node:t}))},t.prototype.setSelectedNode=function(t,e){var n;this.selectedLeafNodeIds=Object.assign({},this.selectedLeafNodeIds,((n={})[t.id]=e,n)),e?(t.focus(),this.fireEvent({eventName:o.a.select,node:t})):this.fireEvent({eventName:o.a.deselect,node:t})},t.prototype.setExpandedNode=function(t,e){var n;this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((n={})[t.id]=e,n)),this.fireEvent({eventName:o.a.toggleExpanded,node:t,isExpanded:e})},t.prototype.expandAll=function(){this.roots.forEach((function(t){return t.expandAll()}))},t.prototype.collapseAll=function(){this.roots.forEach((function(t){return t.collapseAll()}))},t.prototype.setIsHidden=function(t,e){var n;this.hiddenNodeIds=Object.assign({},this.hiddenNodeIds,((n={})[t.id]=e,n))},t.prototype.setHiddenNodeIds=function(t){this.hiddenNodeIds=t.reduce((function(t,e){var n;return Object.assign(t,((n={})[e]=!0,n))}),{})},t.prototype.performKeyAction=function(t,e){var n=this.options.actionMapping.keys[e.keyCode];return!!n&&(e.preventDefault(),n(this,t,e),!0)},t.prototype.filterNodes=function(t,e){var n,a=this;if(void 0===e&&(e=!0),!t)return this.clearFilter();if(m()(t))n=function(e){return-1!==e.displayField.toLowerCase().indexOf(t.toLowerCase())};else{if(!v()(t))return console.error("Don't know what to do with filter",t),void console.error("Should be either a string or function");n=t}var r={};this.roots.forEach((function(t){return a._filterNode(r,t,n,e)})),this.hiddenNodeIds=r,this.fireEvent({eventName:o.a.changeFilter})},t.prototype.clearFilter=function(){this.hiddenNodeIds={},this.fireEvent({eventName:o.a.changeFilter})},t.prototype.moveNode=function(t,e){var n=t.getIndexInParent(),a=t.parent;if(this.canMoveNode(t,e,n)){var r=a.getField("children");e.parent.getField("children")||e.parent.setField("children",[]);var i=e.parent.getField("children"),s=r.splice(n,1)[0],u=a===e.parent&&e.index>n?e.index-1:e.index;i.splice(u,0,s),a.treeModel.update(),e.parent.treeModel!==a.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:o.a.moveNode,node:s,to:{parent:e.parent.data,index:u},from:{parent:a.data,index:n}})}},t.prototype.copyNode=function(t,e){var n=t.getIndexInParent();if(this.canMoveNode(t,e,n)){e.parent.getField("children")||e.parent.setField("children",[]);var a=e.parent.getField("children"),r=this.options.getNodeClone(t);a.splice(e.index,0,r),t.treeModel.update(),e.parent.treeModel!==t.treeModel&&e.parent.treeModel.update(),this.fireEvent({eventName:o.a.copyNode,node:r,to:{parent:e.parent.data,index:e.index}})}},t.prototype.getState=function(){return{expandedNodeIds:this.expandedNodeIds,selectedLeafNodeIds:this.selectedLeafNodeIds,activeNodeIds:this.activeNodeIds,hiddenNodeIds:this.hiddenNodeIds,focusedNodeId:this.focusedNodeId}},t.prototype.setState=function(t){t&&Object.assign(this,{expandedNodeIds:t.expandedNodeIds||{},selectedLeafNodeIds:t.selectedLeafNodeIds||{},activeNodeIds:t.activeNodeIds||{},hiddenNodeIds:t.hiddenNodeIds||{},focusedNodeId:t.focusedNodeId})},t.prototype.subscribeToState=function(t){var e=this;Object(r.b)((function(){return t(e.getState())}))},t.prototype.canMoveNode=function(t,e,n){return void 0===n&&(n=void 0),n||t.getIndexInParent(),(t.parent!==e.parent||n!==e.index)&&!e.parent.isDescendantOf(t)},t.prototype.calculateExpandedNodes=function(){this._calculateExpandedNodes()},t.prototype._filterNode=function(t,e,n,a){var r=this,i=n(e);return e.children&&e.children.forEach((function(e){r._filterNode(t,e,n,a)&&(i=!0)})),i||(t[e.id]=!0),a&&i&&e.ensureVisible(),i},t.prototype._calculateExpandedNodes=function(t){var e,n=this;void 0===t&&(t=null),(t=t||this.virtualRoot).data[this.options.isExpandedField]&&(this.expandedNodeIds=Object.assign({},this.expandedNodeIds,((e={})[t.id]=!0,e))),t.children&&t.children.forEach((function(t){return n._calculateExpandedNodes(t)}))},t.prototype._setActiveNodeSingle=function(t,e){var n,a=this;this.activeNodes.filter((function(e){return e!==t})).forEach((function(t){a.fireEvent({eventName:o.a.deactivate,node:t}),a.fireEvent({eventName:o.a.nodeDeactivate,node:t})})),this.activeNodeIds=e?((n={})[t.id]=!0,n):{}},t.prototype._setActiveNodeMulti=function(t,e){var n;this.activeNodeIds=Object.assign({},this.activeNodeIds,((n={})[t.id]=e,n))},t.focusedTree=null,x([r.d,_("design:type",Array)],t.prototype,"roots",void 0),x([r.d,_("design:type",Object)],t.prototype,"expandedNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"selectedLeafNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"activeNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"hiddenNodeIds",void 0),x([r.d,_("design:type",Object)],t.prototype,"focusedNodeId",void 0),x([r.d,_("design:type",i.a)],t.prototype,"virtualRoot",void 0),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"focusedNode",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"expandedNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"activeNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"hiddenNodes",null),x([r.c,_("design:type",Object),_("design:paramtypes",[])],t.prototype,"selectedLeafNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setData",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"update",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocusedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setFocus",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"doForAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusNextNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusPreviousNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillDown",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"focusDrillUp",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object,Object]),_("design:returntype",void 0)],t.prototype,"setActiveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setSelectedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setExpandedNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"expandAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"collapseAll",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"setIsHidden",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setHiddenNodeIds",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"filterNodes",null),x([r.a,_("design:type",Function),_("design:paramtypes",[]),_("design:returntype",void 0)],t.prototype,"clearFilter",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"moveNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object,Object]),_("design:returntype",void 0)],t.prototype,"copyNode",null),x([r.a,_("design:type",Function),_("design:paramtypes",[Object]),_("design:returntype",void 0)],t.prototype,"setState",null),e=x([Object(a.Injectable)()],t)}()},MdoF:function(t,e,n){"use strict";n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n("8Y7J"),r=n("CNMR"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"button",[["aria-label","Close"],["class","close"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.close()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["×"])),(t()(),a["ɵeld"](3,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Close"]))],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"div",[["role","alert"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"alert alert-"+n.type,n.classes),t(e,4,0,n.dismissible)}),null)}function l(t){return a["ɵvid"](2,[(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isOpen)}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"alert",[],null,null,null,l,s)),a["ɵdid"](1,114688,null,0,r.a,[r.b,a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var c=a["ɵccf"]("alert,bs-alert",r.a,d,{type:"type",dismissible:"dismissible",dismissOnTimeout:"dismissOnTimeout",isOpen:"isOpen"},{onClose:"onClose",onClosed:"onClosed"},["*"])},MrPd:function(t,e,n){var a=n("hypo"),r=n("ljhN"),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var s=t[e];i.call(t,e)&&r(s,n)&&(void 0!==n||e in t)||a(t,e,n)}},MuvH:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}findValue(t,e){if(t.value)return t.value.find(t=>t.section===e)}getValue(t,e){let n=this.findValue(t,e);if(!n){const a=e.indexOf(".");-1!==a&&(n=this.findValue(t,e.substring(0,a)))}return n||(n=this.findValue(t,"global")),n?n.value:t.default}getConfigData(){return this.http.get("api/cluster_conf/")}get(t){return this.http.get(`api/cluster_conf/${t}`)}filter(t){return this.http.get(`api/cluster_conf/filter?names=${t.join(",")}`)}create(t){return this.http.post("api/cluster_conf/",t)}delete(t,e){return this.http.delete(`api/cluster_conf/${t}?section=${e}`)}bulkCreate(t){return this.http.put("api/cluster_conf/",t)}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},MvSz:function(t,e,n){var a=n("LXxW"),r=n("0ycA"),i=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols;t.exports=s?function(t){return null==t?[]:(t=Object(t),a(s(t),(function(e){return i.call(t,e)})))}:r},Mxhz:function(t,e,n){"use strict";var a=n("IheW"),r=n("LRne"),i=n("7o/Q");class s{constructor(t){this.value=t}call(t,e){return e.subscribe(new o(t,this.value))}}class o extends i.a{constructor(t,e){super(t),this.value=e}_next(t){this.destination.next(this.value)}}var u=n("JIr8"),l=n("8Y7J"),d=n("pL04");n.d(e,"a",(function(){return c}));let c=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/user")}delete(t){return this.http.delete(`api/user/${t}`)}get(t){return this.http.get(`api/user/${t}`)}create(t){return this.http.post("api/user",t)}update(t){return this.http.put(`api/user/${t.username}`,t)}changePassword(t,e,n){return this.http.post(`api/user/${t}/change_password`,{old_password:e,new_password:n})}validateUserName(t){return this.get(t).pipe(t=>t.lift(new s(!0)),Object(u.a)(t=>(t.preventDefault(),Object(r.a)(!1))))}validatePassword(t,e=null,n=null){let r=new a.h;return r=r.append("password",t),e&&(r=r.append("username",e)),n&&(r=r.append("old_password",n)),this.http.post("api/user/validate_password",null,{params:r})}}return t.ngInjectableDef=l["ɵɵdefineInjectable"]({factory:function(){return new t(l["ɵɵinject"](a.c))},token:t,providedIn:d.a}),t})()},"N+g0":function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("glrk"),s=n("33Wh");t.exports=a?Object.defineProperties:function(t,e){i(t);for(var n,a=s(e),o=a.length,u=0;o>u;)r.f(t,n=a[u++],e[n]);return t}},"NC/Y":function(t,e,n){var a=n("0GbY");t.exports=a("navigator","userAgent")||""},NEZu:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a){this.customColors={backgroundColor:void 0,borderColor:void 0},this.checkOffset=!1,this.chartEl=t.nativeElement,this.getStyleLeft=n,this.getStyleTop=a,this.tooltipEl=e.nativeElement}customTooltips(t){if(0===t.opacity)return void(this.tooltipEl.style.opacity=0);if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(t.yAlign?t.yAlign:"no-transform"),t.body){const e=t.title||[],n=t.body.map(t=>t.lines);let a="<thead>";e.forEach(t=>{a+="<tr><th>"+this.getTitle(t)+"</th></tr>"}),a+="</thead><tbody>",n.forEach((e,n)=>{const r=t.labelColors[n];let i="background:"+(this.customColors.backgroundColor||r.backgroundColor);i+="; border-color:"+(this.customColors.borderColor||r.borderColor),i+="; border-width: 2px",a+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+i+'"></span>'+this.getBody(e)+"</td></tr>"}),a+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=a}const e=this.chartEl.offsetTop,n=this.chartEl.offsetLeft;if(this.checkOffset){const e=t.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),t.caretX-e<0?this.tooltipEl.classList.add("transform-left"):t.caretX+e>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(t,n),this.tooltipEl.style.top=this.getStyleTop(t,e),this.tooltipEl.style.opacity=1,this.tooltipEl.style.fontFamily=t._fontFamily,this.tooltipEl.style.fontSize=t.fontSize,this.tooltipEl.style.fontStyle=t._fontStyle,this.tooltipEl.style.padding=t.yPadding+"px "+t.xPadding+"px"}getBody(t){return t}getTitle(t){return t}}},NJ4a:function(t,e,n){"use strict";function a(t){setTimeout(()=>{throw t},0)}n.d(e,"a",(function(){return a}))},NJ9Y:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("sVev"),r=n("pLZG"),i=n("BFxc"),s=n("XDbj"),o=n("xbPD"),u=n("SpAZ");function l(t,e){const n=arguments.length>=2;return l=>l.pipe(t?Object(r.a)((e,n)=>t(e,n,l)):u.a,Object(i.a)(1),n?Object(o.a)(e):Object(s.a)(()=>new a.a))}},NKxu:function(t,e,n){var a=n("lSCD"),r=n("E2jh"),i=n("GoyQ"),s=n("3Fdi"),o=/^\[object .+?Constructor\]$/,u=RegExp("^"+Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||r(t))&&(a(t)?u:o).test(s(t))}},NUGo:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("iInd"),s=n("FE24"),o=n("z/SZ"),u=n("GS7A");n("S7zO"),n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return b}));var l=a["ɵcrt"]({encapsulation:0,styles:[[".dropdown-menu[_ngcontent-%COMP%] > .disabled[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]{pointer-events:auto;cursor:default!important}"]],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,10,"button",[["type","button"]],null,[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,5).onClick()&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.ngIf)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](4,{disabled:0}),a["ɵdid"](5,16384,null,0,i.n,[i.m,i.a,[8,null],a.Renderer2,a.ElementRef],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](8,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](9,1),(t()(),a["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](11,null,["",""]))],(function(t,e){var n=e.component,r=a["ɵinlineInterpolate"](1,"btn btn-",n.btnColor,""),i=t(e,4,0,n.disableSelectionAction(e.context.ngIf));t(e,3,0,r,i),t(e,5,0,e.context.ngIf.preserveFragment?"":null,n.useRouterLink(e.context.ngIf));var s=t(e,9,0,e.context.ngIf.icon);t(e,8,0,s)}),(function(t,e){t(e,11,0,e.context.ngIf.name)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.dropDownOnly)}))}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"span",[["class","sr-only"]],null,null,null,null,null))],null,null)}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["dropdownToggle",""],["type","button"]],[[8,"className",0],[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,1).onClick()&&r),r}),null,null)),a["ɵdid"](1,147456,null,0,s.g,[a.ChangeDetectorRef,s.c,a.ElementRef,a.Renderer2,s.f],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.dropDownOnly),t(e,5,0,!n.dropDownOnly)}),(function(t,e){t(e,0,0,a["ɵinlineInterpolate"](1,"btn btn-",e.component.btnColor," dropdown-toggle dropdown-toggle-split"),!0,a["ɵnov"](e,1).isDisabled,a["ɵnov"](e,1).isOpen)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,12,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,11,"li",[["data-toggle","tooltip"],["role","menuitem"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,10,"a",[["class","dropdown-item"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.$implicit)&&r),r}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](5,{disabled:0}),a["ɵdid"](6,671744,null,0,i.p,[i.m,i.a,r.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),a["ɵeld"](7,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](10,1),(t()(),a["ɵeld"](11,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](12,null,["",""]))],(function(t,e){var n=e.component,a=t(e,5,0,n.disableSelectionAction(e.context.$implicit));t(e,4,0,"dropdown-item",a),t(e,6,0,e.context.$implicit.preserveFragment?"":null,n.useRouterLink(e.context.$implicit));var r=t(e,10,0,e.context.$implicit.icon);t(e,9,0,r)}),(function(t,e){var n=e.component;t(e,1,0,a["ɵinlineInterpolate"](1,"",n.toClassName(e.context.$implicit.name),""),a["ɵinlineInterpolate"](1,"",n.useDisableDesc(e.context.$implicit),"")),t(e,2,0,a["ɵnov"](e,6).target,a["ɵnov"](e,6).href),t(e,12,0,e.context.$implicit.name)}))}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](2,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.dropDownActions)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,8,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["ɵprd"](512,null,s.f,s.f,[]),a["ɵdid"](2,212992,null,0,s.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,o.a,s.f,s.a,u.b],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](8,16384,null,0,s.d,[s.f,a.ViewContainerRef,a.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.getCurrentButton()),t(e,6,0,n.showDropDownActions())}),(function(t,e){t(e,0,0,a["ɵnov"](e,2).dropup,a["ɵnov"](e,2).isOpen,a["ɵnov"](e,2).isOpen&&a["ɵnov"](e,2).isBs4)}))}},NaFW:function(t,e,n){var a=n("9d/t"),r=n("P4y1"),i=n("tiKp")("iterator");t.exports=function(t){if(null!=t)return t[i]||t["@@iterator"]||r[a(t)]}},Nehr:function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},Nh2a:function(t,e,n){var a=n("SKAX");t.exports=function(t,e){var n;return a(t,(function(t,a,r){return!(n=e(t,a,r))})),!!n}},Npjl:function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},NykK:function(t,e,n){var a=n("nmnc"),r=n("AP2z"),i=n("KfNM"),s=a?a.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?r(t):i(t)}},O0oS:function(t,e,n){var a=n("Cwc5"),r=function(){try{var t=a(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=r},O741:function(t,e,n){var a=n("hh1v");t.exports=function(t){if(!a(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},O7RO:function(t,e,n){var a=n("CMye"),r=n("7GkX");t.exports=function(t){for(var e=r(t),n=e.length;n--;){var i=e[n],s=t[i];e[n]=[i,s,a(s)]}return e}},O9Tv:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("YzqF");e.Mutex=a.default},OBhP:function(t,e,n){var a=n("fmRc"),r=n("gFfm"),i=n("MrPd"),s=n("WwFo"),o=n("Dw+G"),u=n("5Tg0"),l=n("Q1l4"),d=n("VOtZ"),c=n("EEGq"),f=n("qZTm"),h=n("G6z8"),g=n("QqLw"),p=n("yHx3"),b=n("wrZu"),m=n("+iFO"),y=n("Z0cm"),v=n("DSRE"),x=n("zEVN"),_=n("GoyQ"),T=n("1+5i"),O=n("7GkX"),w={};w["[object Arguments]"]=w["[object Array]"]=w["[object ArrayBuffer]"]=w["[object DataView]"]=w["[object Boolean]"]=w["[object Date]"]=w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Map]"]=w["[object Number]"]=w["[object Object]"]=w["[object RegExp]"]=w["[object Set]"]=w["[object String]"]=w["[object Symbol]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w["[object Error]"]=w["[object Function]"]=w["[object WeakMap]"]=!1,t.exports=function t(e,n,S,I,N,C){var R,A=1&n,k=2&n,E=4&n;if(S&&(R=N?S(e,I,N,C):S(e)),void 0!==R)return R;if(!_(e))return e;var L=y(e);if(L){if(R=p(e),!A)return l(e,R)}else{var D=g(e),P="[object Function]"==D||"[object GeneratorFunction]"==D;if(v(e))return u(e,A);if("[object Object]"==D||"[object Arguments]"==D||P&&!N){if(R=k||P?{}:m(e),!A)return k?c(e,o(R,e)):d(e,s(R,e))}else{if(!w[D])return N?e:{};R=b(e,D,A)}}C||(C=new a);var M=C.get(e);if(M)return M;C.set(e,R),T(e)?e.forEach((function(a){R.add(t(a,n,S,a,e,C))})):x(e)&&e.forEach((function(a,r){R.set(r,t(a,n,S,r,e,C))}));var q=E?k?h:f:k?keysIn:O,j=L?void 0:q(e);return r(j||e,(function(a,r){j&&(a=e[r=a]),i(R,r,t(a,n,S,r,e,C))})),R}},OIDT:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-wrapper",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n      <div *ngIf="!templates.treeNodeWrapperTemplate" class="node-wrapper" [style.padding-left]="node.getNodePadding()">\n          <tree-node-checkbox *ngIf="node.options.useCheckbox" [node]="node"></tree-node-checkbox>\n          <tree-node-expander [node]="node"></tree-node-expander>\n          <div class="node-content-wrapper"\n               [class.node-content-wrapper-active]="node.isActive"\n               [class.node-content-wrapper-focused]="node.isFocused"\n               (click)="node.mouseAction(\'click\', $event)"\n               (dblclick)="node.mouseAction(\'dblClick\', $event)"\n               (mouseover)="node.mouseAction(\'mouseOver\', $event)"\n               (mouseout)="node.mouseAction(\'mouseOut\', $event)"\n               (contextmenu)="node.mouseAction(\'contextMenu\', $event)"\n               (treeDrop)="node.onDrop($event)"\n               (treeDropDragOver)="node.mouseAction(\'dragOver\', $event)"\n               (treeDropDragLeave)="node.mouseAction(\'dragLeave\', $event)"\n               (treeDropDragEnter)="node.mouseAction(\'dragEnter\', $event)"\n               [treeAllowDrop]="node.allowDrop"\n               [allowDragoverStyling]="node.allowDragoverStyling()"\n               [treeDrag]="node"\n               [treeDragEnabled]="node.allowDrag()">\n\n              <tree-node-content [node]="node" [index]="index" [template]="templates.treeNodeTemplate">\n              </tree-node-content>\n          </div>\n      </div>\n      <ng-container\n              [ngTemplateOutlet]="templates.treeNodeWrapperTemplate"\n              [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index, templates: templates }">\n      </ng-container>\n  '}),s("design:paramtypes",[])],t)}()},OIYi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},OLbh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r{constructor(t,e){this.modalRef=t,this.modalService=e,this.boundCancel=this.cancel.bind(this),this.canceled=!1,this.confirmationForm=new a.k({}),this.onHide=this.modalService.onHide.subscribe(t=>{this.onCancel&&(t||this.canceled)&&this.onCancel()})}ngOnInit(){if(this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData,!this.onSubmit)throw new Error("No submit action defined");if(!this.buttonText)throw new Error("No action name defined");if(!this.titleText)throw new Error("No title defined");if(!this.bodyTpl&&!this.description)throw new Error("No description defined")}ngOnDestroy(){this.onHide.unsubscribe()}cancel(){this.canceled=!0,this.modalRef.hide()}stopLoadingSpinner(){this.confirmationForm.setErrors({cdSubmitButton:!0})}}},Oaa7:function(t,e,n){!function(t){"use strict";t.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},Ob0Z:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function a(t,e,n,a){var r="";if(e)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,t)}t.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(t,e){return 12===t&&(t=0),"रात्री"===e?t<4?t:t+12:"सकाळी"===e?t:"दुपारी"===e?t>=10?t:t+12:"सायंकाळी"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"रात्री":t<10?"सकाळी":t<17?"दुपारी":t<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("wd/R"))},OcYo:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a){this.elementRef=t,this.renderer=e,this.toastr=n,this.i18n=a}ngOnInit(){const t=this.renderer.createElement("i");this.renderer.addClass(t,"fa"),this.renderer.addClass(t,"fa-clipboard"),this.renderer.setAttribute(t,"title",this.i18n("Copy to clipboard")),this.renderer.appendChild(this.elementRef.nativeElement,t)}getInputElement(){return document.getElementById(this.cdCopy2ClipboardButton)}onClick(){try{navigator.permissions.query({name:"clipboard-write"}).then(t=>{"granted"!==t.state&&"prompt"!==t.state||navigator.clipboard.writeText(this.getInputElement().value)}),this.toastr.success("Copied text to the clipboard successfully.")}catch(t){this.toastr.error("Failed to copy text to the clipboard.")}}}},"Of+w":function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"WeakMap");t.exports=a},OjkT:function(t,e,n){!function(t){"use strict";var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};t.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(t,e){return 12===t&&(t=0),"राति"===e?t<4?t:t+12:"बिहान"===e?t:"दिउँसो"===e?t>=10?t:t+12:"साँझ"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"राति":t<12?"बिहान":t<16?"दिउँसो":t<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("wd/R"))},Oxv6:function(t,e,n){!function(t){"use strict";var e={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};t.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(t,e){return 12===t&&(t=0),"шаб"===e?t<4?t:t+12:"субҳ"===e?t:"рӯз"===e?t>=11?t:t+12:"бегоҳ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"шаб":t<11?"субҳ":t<16?"рӯз":t<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},"P/G1":function(t,e,n){var a=n("JmpY"),r=n("7GkX");t.exports=function(t){return null==t?[]:a(t,r(t))}},P4Tr:function(t,e,n){var a=n("heNW"),r=n("EA7m"),i=n("4DFU"),s=n("JBE3"),o=r((function(t){return t.push(void 0,i),a(s,void 0,t)}));t.exports=o},P4y1:function(t,e){t.exports={}},P8lu:function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("mrSG"),r=n("IheW"),i=n("LvDl"),s=n("cp0P"),o=n("LRne"),u=n("5+tZ"),l=n("xTzq"),d=n("8Y7J"),c=n("pL04");let f=(()=>{let t=class{constructor(t){this.http=t,this.url="api/rgw/user"}list(){return this.enumerate().pipe(Object(u.a)(t=>t.length>0?Object(s.a)(t.map(t=>this.get(t))):Object(o.a)([])))}enumerate(){return this.http.get(this.url)}enumerateEmail(){return this.http.get(`${this.url}/get_emails`)}get(t){return this.http.get(`${this.url}/${t}`)}getQuota(t){return this.http.get(`${this.url}/${t}/quota`)}create(t){let e=new r.h;return i.keys(t).forEach(n=>{e=e.append(n,t[n])}),this.http.post(this.url,null,{params:e})}update(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}`,null,{params:n})}updateQuota(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.put(`${this.url}/${t}/quota`,null,{params:n})}delete(t){return this.http.delete(`${this.url}/${t}`)}createSubuser(t,e){let n=new r.h;return i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/subuser`,null,{params:n})}deleteSubuser(t,e){return this.http.delete(`${this.url}/${t}/subuser/${e}`)}addCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.post(`${this.url}/${t}/capability`,null,{params:a})}deleteCapability(t,e,n){let a=new r.h;return a=a.append("type",e),a=a.append("perm",n),this.http.delete(`${this.url}/${t}/capability`,{params:a})}addS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),i.keys(e).forEach(t=>{n=n.append(t,e[t])}),this.http.post(`${this.url}/${t}/key`,null,{params:n})}deleteS3Key(t,e){let n=new r.h;return n=n.append("key_type","s3"),n=n.append("access_key",e),this.http.delete(`${this.url}/${t}/key`,{params:n})}exists(t){return this.enumerate().pipe(Object(u.a)(e=>{const n=i.indexOf(e,t);return Object(o.a)(-1!==n)}))}emailExists(t){return t=decodeURIComponent(t),this.enumerateEmail().pipe(Object(u.a)(e=>{const n=i.indexOf(e,t);return Object(o.a)(-1!==n)}))}};return t.ngInjectableDef=d["ɵɵdefineInjectable"]({factory:function(){return new t(d["ɵɵinject"](r.c))},token:t,providedIn:c.a}),t=a.__decorate([l.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},PA2r:function(t,e,n){!function(t){"use strict";var e="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function i(t){return t>1&&t<5&&1!=~~(t/10)}function s(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(i(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(i(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(i(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(i(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(i(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(i(t)?"roky":"let"):r+"lety"}}t.defineLocale("cs",{months:e,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},PCNd:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},"PEr+":function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("EEJc"),s=n("ajRT"),o=n("s7LF"),u=n("+gVj"),l=n("mXUL"),d=n("IZUe"),c=n("gp3X"),f=n("sb0X"),h=n("KVJa"),g=n("Z21x"),p=n("sne2"),b=n("0+/T"),m=n("LqlI");n.d(e,"a",(function(){return k}));var y=a["ɵcrt"]({encapsulation:0,styles:[[".modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]{margin-top:1em}.modal-body[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]   .form-check[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," "])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](4,null,["",""])),(t()(),a["ɵted"](-1,null,["?"]))],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r),t(e,4,0,n.itemNames[0])}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected items?"])),a["ɵppd"](2,1),(t()(),a["ɵeld"](3,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](5,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,5,0,e.component.itemNames)}),(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["manyNames",2]],null,0,null,O))],(function(t,e){t(e,2,0,1===e.component.itemNames.length,a["ɵnov"](e,3))}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["Are you sure that you want to "," the selected ","?"])),a["ɵppd"](2,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,1,0,t(e,2,0,a["ɵnov"](e.parent,0),n.actionDescription));t(e,1,0,r,n.itemDescription)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function C(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," ","\n"])),a["ɵppd"](1,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent,1),n.actionDescription));t(e,0,0,r,n.itemDescription)}))}function R(t){return a["ɵvid"](0,[a["ɵpid"](0,r.LowerCasePipe,[]),a["ɵpid"](0,r.TitleCasePipe,[]),a["ɵqud"](402653184,1,{submitButton:0}),(t()(),a["ɵeld"](3,0,null,null,43,"cd-modal",[],null,null,null,i.c,i.b)),a["ɵdid"](4,49152,[["modal",4]],0,s.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵeld"](5,0,null,0,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](8,0,null,1,38,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](9,0,null,null,37,"form",[["name","deletionForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,11).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,11).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,14).onSubmit()&&r),r}),null,null)),a["ɵdid"](10,16384,null,0,o.G,[],null,null),a["ɵdid"](11,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,o.d,null,[o.l]),a["ɵdid"](13,16384,null,0,o.s,[[4,o.d]],null,null),a["ɵdid"](14,16384,null,0,u.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](15,0,null,null,24,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,x)),a["ɵdid"](17,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](18,0,null,null,21,"div",[["class","question"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](20,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["noNames",2]],null,0,null,S)),(t()(),a["ɵand"](16777216,null,null,2,null,I)),a["ɵdid"](23,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["ɵpod"](24,{form:0}),(t()(),a["ɵeld"](25,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,l.b,l.a)),a["ɵdid"](26,1163264,null,2,u.c,[a.ElementRef,u.g],null,null),a["ɵqud"](603979776,2,{FormControlNames:1}),a["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),a["ɵeld"](29,0,null,0,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),a["ɵeld"](30,0,null,null,7,"input",[["autofocus",""],["class","custom-control-input"],["formControlName","confirmation"],["id","confirmation"],["name","confirmation"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,31).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,31).onTouched()&&r),r}),null,null)),a["ɵdid"](31,16384,null,0,o.c,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,o.p,(function(t){return[t]}),[o.c]),a["ɵdid"](33,671744,[[2,4]],0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,o.q,null,[o.j]),a["ɵdid"](35,16384,null,0,o.r,[[4,o.q]],null,null),a["ɵdid"](36,4210688,null,0,d.a,[a.ElementRef],{autofocus:[0,"autofocus"]},null),a["ɵdid"](37,16384,null,0,u.h,[[3,o.d],u.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵeld"](38,0,null,null,1,"label",[["class","custom-control-label"],["for","confirmation"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Yes, I am sure."])),(t()(),a["ɵeld"](40,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](41,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.callSubmitAction()&&a),a}),c.b,c.a)),a["ɵdid"](42,114688,[[1,4],["submitButton",4]],0,f.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵand"](16777216,null,0,1,null,N)),a["ɵdid"](44,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["ɵeld"](45,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,h.b,h.a)),a["ɵdid"](46,49152,null,0,g.a,[r.Location,p.b],{name:[0,"name"],back:[1,"back"]},null),(t()(),a["ɵand"](0,[["deletionHeading",2]],null,0,null,C))],(function(t,e){var n=e.component;t(e,4,0,n.modalRef),t(e,7,0,a["ɵnov"](e,47)),t(e,11,0,n.deletionForm),t(e,14,0,n.deletionForm),t(e,17,0,n.bodyContext,n.bodyTemplate),t(e,20,0,n.itemNames,a["ɵnov"](e,21));var r=t(e,24,0,n.deletionForm);t(e,23,0,r,n.childFormGroupTemplate),t(e,26,0),t(e,33,0,"confirmation"),t(e,36,0,""),t(e,37,0,"confirmation"),t(e,42,0,n.deletionForm),t(e,44,0,a["ɵnov"](e,47)),t(e,46,0,"Cancel",n.modalRef.hide)}),(function(t,e){t(e,9,0,a["ɵnov"](e,13).ngClassUntouched,a["ɵnov"](e,13).ngClassTouched,a["ɵnov"](e,13).ngClassPristine,a["ɵnov"](e,13).ngClassDirty,a["ɵnov"](e,13).ngClassValid,a["ɵnov"](e,13).ngClassInvalid,a["ɵnov"](e,13).ngClassPending),t(e,25,0,a["ɵnov"](e,26).hasErrors,a["ɵnov"](e,26).hasSuccess),t(e,30,0,a["ɵnov"](e,35).ngClassUntouched,a["ɵnov"](e,35).ngClassTouched,a["ɵnov"](e,35).ngClassPristine,a["ɵnov"](e,35).ngClassDirty,a["ɵnov"](e,35).ngClassValid,a["ɵnov"](e,35).ngClassInvalid,a["ɵnov"](e,35).ngClassPending,a["ɵnov"](e,37).validClass,a["ɵnov"](e,37).invalidClass)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-deletion-modal",[],null,null,null,R,y)),a["ɵdid"](1,114688,null,0,b.a,[m.a],null,null)],(function(t,e){t(e,1,0)}),null)}var k=a["ɵccf"]("cd-deletion-modal",b.a,A,{},{},[])},PKPk:function(t,e,n){"use strict";var a=n("ZUd8").charAt,r=n("afO8"),i=n("fdAy"),s=r.set,o=r.getterFor("String Iterator");i(String,"String",(function(t){s(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,e=o(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=a(n,r),e.index+=t.length,{value:t,done:!1})}))},PeUW:function(t,e,n){!function(t){"use strict";var e={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};t.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(t){return t+"வது"},preparse:function(t){return t.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(t,e,n){return t<2?" யாமம்":t<6?" வைகறை":t<10?" காலை":t<14?" நண்பகல்":t<18?" எற்பாடு":t<22?" மாலை":" யாமம்"},meridiemHour:function(t,e){return 12===t&&(t=0),"யாமம்"===e?t<2?t:t+12:"வைகறை"===e||"காலை"===e?t:"நண்பகல்"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})}(n("wd/R"))},PpIw:function(t,e,n){!function(t){"use strict";var e={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};t.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(t){return t.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ರಾತ್ರಿ"===e?t<4?t:t+12:"ಬೆಳಿಗ್ಗೆ"===e?t:"ಮಧ್ಯಾಹ್ನ"===e?t>=10?t:t+12:"ಸಂಜೆ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ರಾತ್ರಿ":t<10?"ಬೆಳಿಗ್ಗೆ":t<17?"ಮಧ್ಯಾಹ್ನ":t<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(t){return t+"ನೇ"},week:{dow:0,doy:6}})}(n("wd/R"))},PqYM:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("D0XW"),i=n("Y7HM"),s=n("z+Ro");function o(t=0,e,n){let o=-1;return Object(i.a)(e)?o=Number(e)<1?1:Number(e):Object(s.a)(e)&&(n=e),Object(s.a)(n)||(n=r.a),new a.a(e=>{const a=Object(i.a)(t)?t:+t-n.now();return n.schedule(u,a,{index:0,period:o,subscriber:e})})}function u(t){const{index:e,period:n,subscriber:a}=t;if(a.next(e),!a.closed){if(-1===n)return a.complete();t.index=e+1,this.schedule(t,n)}}},Puqe:function(t,e,n){var a=n("eUgh"),r=n("OBhP"),i=n("S7Xf"),s=n("4uTw"),o=n("juv8"),u=n("4Oe1"),l=n("xs/l"),d=n("G6z8"),c=l((function(t,e){var n={};if(null==t)return n;var l=!1;e=a(e,(function(e){return e=s(e,t),l||(l=e.length>1),e})),o(t,d(t),n),l&&(n=r(n,7,u));for(var c=e.length;c--;)i(n,e[c]);return n}));t.exports=c},Q1l4:function(t,e){t.exports=function(t,e){var n=-1,a=t.length;for(e||(e=Array(a));++n<a;)e[n]=t[n];return e}},QC43:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("MdoF"),i=n("CNMR"),s=n("SVse");n("XFyV"),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u}));var o=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["ɵdid"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["ɵeld"](2,0,null,0,4,"strong",[],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,s["ɵNgClassImpl"],s["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,s.NgClass,[s["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,2),a["ɵncd"](0,0)],(function(t,e){var n=e.component;t(e,1,0,"info");var a=t(e,6,0,n.icons.spinner,n.icons.spin);t(e,5,0,a)}),null)}},QFaf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("s7LF");class r extends a.k{constructor(t,e,n){super(t,e,n),this.controls=t}get(t){const e=this._get(t);if(!e)throw new Error(`Control '${t}' could not be found!`);return e}_get(t){return super.get(t)||Object.values(this.controls).filter(t=>t.get).map(e=>e instanceof r?e._get(t):e.get(t)).find(t=>Boolean(t))}getValue(t){return this.get(t).value}silentSet(t,e){this.get(t).setValue(e,{emitEvent:!1})}showError(t,e,n){const a=this.get(t);return(e.submitted||a.dirty)&&(n?a.hasError(n):a.invalid)}}},QIyF:function(t,e,n){var a=n("Kz5y");t.exports=function(){return a.Date.now()}},QTAa:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},QWBl:function(t,e,n){"use strict";var a=n("I+eb"),r=n("F8JR");a({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},QcOe:function(t,e,n){var a=n("GoyQ"),r=n("6sVZ"),i=n("7Ix3"),s=Object.prototype.hasOwnProperty;t.exports=function(t){if(!a(t))return i(t);var e=r(t),n=[];for(var o in t)("constructor"!=o||!e&&s.call(t,o))&&n.push(o);return n}},Qj4J:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("wd/R"))},QkVE:function(t,e,n){var a=n("EpBk");t.exports=function(t,e){var n=t.__data__;return a(e)?n["string"==typeof e?"string":"hash"]:n.map}},Qo9l:function(t,e,n){var a=n("2oRo");t.exports=a},QoRX:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(e(t[n],n,t))return!0;return!1}},QqLw:function(t,e,n){var a=n("tadb"),r=n("ebwN"),i=n("HOxn"),s=n("yGk4"),o=n("Of+w"),u=n("NykK"),l=n("3Fdi"),d=l(a),c=l(r),f=l(i),h=l(s),g=l(o),p=u;(a&&"[object DataView]"!=p(new a(new ArrayBuffer(1)))||r&&"[object Map]"!=p(new r)||i&&"[object Promise]"!=p(i.resolve())||s&&"[object Set]"!=p(new s)||o&&"[object WeakMap]"!=p(new o))&&(p=function(t){var e=u(t),n="[object Object]"==e?t.constructor:void 0,a=n?l(n):"";if(a)switch(a){case d:return"[object DataView]";case c:return"[object Map]";case f:return"[object Promise]";case h:return"[object Set]";case g:return"[object WeakMap]"}return e}),t.exports=p},"R/W3":function(t,e,n){var a=n("KwMD"),r=n("2ajD"),i=n("CZoQ");t.exports=function(t,e,n){return e==e?i(t,e,n):a(t,r,n)}},RAwQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?r[n][0]:r[n][1]}function n(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10;return n(0===e?t/10:e)}if(t<1e4){for(;t>=10;)t/=10;return n(t)}return n(t/=1e3)}t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(t){return n(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t},past:function(t){return n(t.substr(0,t.indexOf(" ")))?"viru "+t:"virun "+t},s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},RBan:function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},RK3t:function(t,e,n){var a=n("0Dky"),r=n("xrYK"),i="".split;t.exports=a((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==r(t)?i.call(t,""):Object(t)}:Object},RNIs:function(t,e,n){var a=n("tiKp"),r=n("fHMY"),i=n("m/L8"),s=a("unscopables"),o=Array.prototype;null==o[s]&&i.f(o,s,{configurable:!0,value:r(null)}),t.exports=function(t){o[s][t]=!0}},Rf2I:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("s7LF"),r=n("LvDl");n("2EZI"),n("Fgil"),n("aXbf");class i{constructor(t,e,n,a,r){this.bsModalRef=t,this.formBuilder=e,this.formatter=n,this.dimlessBinaryPipe=a,this.i18n=r}ngOnInit(){this.createForm()}createForm(){const t={};this.fields.forEach(e=>{t[e.name]=this.createFormControl(e)}),this.formGroup=this.formBuilder.group(t)}createFormControl(t){let e=[];return r.isBoolean(t.required)&&t.required&&e.push(a.B.required),t.validators&&(e=e.concat(t.validators)),new a.i(r.defaultTo("binary"===t.type?this.dimlessBinaryPipe.transform(t.value):t.value,null),{validators:e})}getError(t){const e=this.formGroup.get(t.name).errors;return Object.keys(e).map(n=>this.getErrorMessage(n,e[n],t.errors)).join("<br>")}getErrorMessage(t,e,n){if(n){const e=n[t];if(e)return e}return["binaryMin","binaryMax"].includes(t)?e(this.i18n):this.i18n("required"===t?"This field is required.":"An error occurred.")}onSubmitForm(t){this.fields.filter(t=>"binary"===t.type).map(t=>t.name).forEach(e=>{const n=t[e];n&&(t[e]=this.formatter.toBytes(n))}),this.bsModalRef.hide(),r.isFunction(this.onSubmit)&&this.onSubmit(t)}}},Rm1S:function(t,e,n){"use strict";var a=n("14Sl"),r=n("glrk"),i=n("UMSQ"),s=n("HYAF"),o=n("iqWW"),u=n("FMNM");a("match",1,(function(t,e,n){return[function(e){var n=s(this),a=null==e?void 0:e[t];return void 0!==a?a.call(e,n):new RegExp(e)[t](String(n))},function(t){var a=n(e,t,this);if(a.done)return a.value;var s=r(t),l=String(this);if(!s.global)return u(s,l);var d=s.unicode;s.lastIndex=0;for(var c,f=[],h=0;null!==(c=u(s,l));){var g=String(c[0]);f[h]=g,""===g&&(s.lastIndex=o(l,i(s.lastIndex),d)),h++}return 0===h?null:f}]}))},RnhZ:function(t,e,n){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="RnhZ"},S6ln:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=t+" ";switch(n){case"ss":return a+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return a+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return a+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return a+(1===t?"dan":"dana");case"MM":return a+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return a+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},S7Xf:function(t,e,n){var a=n("4uTw"),r=n("RBan"),i=n("gpbi"),s=n("9Nap");t.exports=function(t,e){return e=a(e,t),null==(t=i(t,e))||delete t[s(r(e))]}},S7zO:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("oxzT");n("vCyI"),n("jKX/");class i{constructor(){this.btnColor="secondary",this.dropDownActions=[],this.icons=r.a}ngOnInit(){this.removeActionsWithNoPermissions(),this.updateDropDownActions()}toClassName(t){return t.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()}removeActionsWithNoPermissions(){if(!this.permission)return void(this.tableActions=[]);const t=Object.keys(this.permission).filter(t=>this.permission[t]);this.tableActions=this.tableActions.filter(e=>t.includes(e.permission))}updateDropDownActions(){this.dropDownActions=this.tableActions.filter(t=>t.visible?t.visible(this.selection):t)}getCurrentButton(){if(this.dropDownOnly)return;let t=this.dropDownActions.find(t=>this.showableAction(t));return!t&&this.dropDownActions.length>0&&(t=this.dropDownActions[0]),t}showableAction(t){const e=t.canBePrimary,n=this.selection.hasSingleSelection,a="create"===t.permission?!n:n;return e&&e(this.selection)||!e&&a}useRouterLink(t){if(t.routerLink&&!this.disableSelectionAction(t))return a.isString(t.routerLink)?t.routerLink:t.routerLink()}disableSelectionAction(t){const e=t.disable;if(e)return Boolean(e(this.selection));const n=t.permission,a=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(n)&&(!a||a.cdExecuting))}showDropDownActions(){return this.updateDropDownActions(),this.dropDownActions.length>1}useClickAction(t){return!this.disableSelectionAction(t)&&t.click&&t.click()}useDisableDesc(t){return t.disableDesc&&t.disableDesc(this.selection)}}},"SB+Q":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return encodeURIComponent(t)}}},SFxW:function(t,e,n){!function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10;return t+(e[n]||e[t%100-n]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},SKAX:function(t,e,n){var a=n("JC6p"),r=n("lQqw")(a);t.exports=r},SPu7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="pl-PL">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Rozwiń</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Pulpit</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosty</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Usługi</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD-ki</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfiguracja</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Zarządca modułów</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Logi</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pule</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Dostęp blokowy</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Kopia lustrzana</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>Sieciowy system plików NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systemy plików</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Dostęp obiektowy</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Demony</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Wybierz język</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Trwa ładowanie danych...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Wybór czasu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Zresetuj ustawienia</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Wstecz</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Błąd wczytywania danych.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>Wybrane</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>Znaleziono</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>Razem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nazwa</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Opis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Długi opis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Domyślna</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Domyślny demon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Wartości</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Zapisz</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>widok CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Ładowanie...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nazwa hosta</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Tak, jestem pewny.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Anuluj</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zamknij</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista hostów</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Całkowita wydajność</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nie znaleziono wejść</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Logi z klastra </target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Audyt logów</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Ładowanie konfiguracji.</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Nie można załadować konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edytuj moduł zarządzania</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Wpisana wartość nie jest poprawnym UUID, np. 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Wpisana wartość musi być poprawnym adresem IP</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Podana wartość musi być liczbą</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Podana wartość musi być liczbą albo dziesiętną.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Klaster ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Zmodyfikowana monmapa</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>epoka monmap</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kworum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kworum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>wymagany con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>Wymagane mon </target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>W kworum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nie w kworum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Dodaj</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkcje</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flagi OSD w całym klastrze</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Zatwierdź</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Zaawansowane...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorytet odzyskiwania OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorytet</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Dostosuj wartości priorytetowe</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>To pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Wartość powinna być pomiędzy 0 a 1. </target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ponowne ważenie</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {Głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, wybierz, 1 {głębokość} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista OSD-ków </target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Wartość</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edytuj</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdrowie</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statystyki</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienci</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Każdy klient ma dostęp</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Obowiązkowe pole</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Musi zawierać jedną albo więcej ,rozdzielonych przecinkiem, wartości </target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Na przykład: </target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ dostępu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Dodaj klientów </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Brak dostępnego klastra -- </target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Wybierz klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Dodaj demona</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Pamięć Podręczna</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Brak danych puli -- </target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Wybierz pamięć podręczną -- </target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Użytkownik dostępu obiektowego</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Brak dostępnych użytkowników -- </target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Wybierz użytkownika dostępu obiektowego -- </target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS Użytkownik ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Brak dostępnych klientów -- </target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Wybierz klienta cephx -- </target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nazwa CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etykieta bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Uruchom etykietę bezpieczeństwa</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ścieżka CephFS </target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Ścieżka powinna zaczynać się z \'/\' i następne może być słowo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Nowy katalog będzie stworzony. </target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ścieżka</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Ścieżką może być tylko \'/\' albo słowo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Nowe wiadro będzie stworzone </target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokół NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klient może nie montować podkatalogów ( np. jeśli Tag = foo, klient może nie montować foo/baz) </target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Tagu, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Używając różnych opcji Pseudo, ta sama Ścieżka może być wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Brak dostępnych typów dostępu --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Wybierz typ dostępu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>- Brak squasha -</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokół Transportu </target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Witamy w Cephie! </target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nazwa użytkownika jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Hasło jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Zaloguj</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Przepraszam, użytkownik nie istnieje w  Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Zakazany</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Przepraszam, nie masz dostępu do tego czego szukasz. </target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfiguracja RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Usuń wartość konfiguracji lokalnej. Wartość konfiguracji rodzica będzie odziedziczona i zostanie użyta zamiast tej.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimalna wartość wynosi 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista puli</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nazwa może składać się z alfanumerycznych znaków, kresek i podkreśleń.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Wybrana nazwa profilu kodu kasowania jest już używana.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Wtyczka</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Ramka danych (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Musi być większa bądź równa 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Kodowanie kawałka (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Musi być większa bądź równa 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estymator trwałości (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalność  (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domena niepowodzenia Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalność Crusha</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Nic</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Rozmiar pakietu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>korzeń Crusha</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>urządzenie klasy Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>którykolwiek</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Katalog</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nazwa...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Wybrana nazwa Ceph pula jest już użyta.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ pula</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Wybierz typ pula --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupa umieszczenia</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Przynajmniej jedna grupa umieszczenia jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Twój klaster nie obsługuje tylu PG. Skalkuluj proszę potrzebną ilość PG.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Pomoc obliczeniowa</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flagi</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Nadpisuje</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Zastosowania</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Skasuj profil kodu.</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Brak profilu kasowania --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Wybierz profil kodu wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Wybierz zasadę Crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>zasada Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Kroki Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresja</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Tryb</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorytm</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Brak algorytmu kompresji wymazywania --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>np. 128 KB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Wartość powinna być większa niż 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maksymalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>np. 512 KB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Wartość powinna być większa niż minimalny rozmiar blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Stosunek</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Skompresowany stosunek</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Wartość powinna być pomiędzy 0.0, a 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>np. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Szczegóły</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Szczegóły wydajności</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Szczegóły poziomów pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Przenieś obraz do kosza</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Zabezpieczenie wygasa w </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Zły format daty. Proszę używać "RRRR-MM-DD GG:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Ochrona już wygasła. Proszę wybrać przyszłą datę lub zostawić pustą.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Przenieś obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Przegląd</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Obiekty docelowe</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Użytkownik</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i \nmogą zawierać jedynie litery, \'.\', \'@\', \'-\', \'_\' lub \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Hasło</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Wspólny użytkownik </target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Wspólne hasło</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Dostępne informacje: </target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>obiekty docelowe iSCSI niedostępne </target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pul</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Dane pula</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Utworzony</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Rozmiar</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Obiekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Rozmiar obiektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Zaopatrzony</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>Niedostępny</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Całkowite rezerwy</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Jednostka maskowana</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Licznik maskowania</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Rodzic</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefiks nazwy bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Zamówienie</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Migawki</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>To ustawienie zastępuję wartość globalną.</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globalne</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>To jest globalna wartość. Dla tego obrazu nie ustawiono żadnej wartości dla tej opcji.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' and \'@\' nie są dozwolone.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Brak dostępnych rbd puli --  </target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Wybierz pul --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Użyj dedykowanych danych pul </target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Dane pul</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Dedykowany pul, który przechowuje dane obiektowe z RBD</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Musisz zwiększyć rozmiar.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Maskowanie</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednostka pasków</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Wybierz jednostkę pasków -- </target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Pole jest wymagane, ponieważ licznik pasków jest zdefiniowany. </target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednostka pasków jest większa niż rozmiar obiektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Licznik pasków </target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Pole jest wymagane, ponieważ jednostka pasków jest zdefiniowana! </target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Licznik pasków musi być większy od 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Zaraz się wycofasz. </target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Usuń Śmieci</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Wszystkie</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pul:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nazwa pula</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Przywróć obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>Wpisz nazwe nowego obrazu i kliknij. </target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nowa Nazwa</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Wygasły w</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Zabezpieczony do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologia iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Zmiana tych parametrów z domyślnych wartości przeważnie nie jest potrzebna.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ustawienia</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Tylny koniec przechowywania</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potwierdź</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ustawienia zaawansowane</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Nazwa IQN obiektu docelowego iSCSI</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Błędna składnia nazwy IQN.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Na przykład: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Więcej informacji</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Ten obiekt docelowy  zmodyfikował zaawansowane ustawienia.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portale</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Dodaj portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Ten obraz zmodyfikował ustawienia. </target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Dodaj obraz.</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Uwierzytelnianie ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inicjatory iSCSI</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klient IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inicjator IQN powinien być unikalny.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nazwy użytkowników muszą mieć długość od 8 do 64 znaków i mogą zawierać jedynie litery,  \'.\', \'@\', \'-\', \'_\' lub  \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inicjator iSCSI należą do grupy. Obrazy będą skonfigurowane w grupie. </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Brak dodanych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Dodaj inicjator iSCSI</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupy</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupa</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Dodaj grupę</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Kosz</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Zagadnienia</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizacja</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Gotowy</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Tryb edycji lustrzanego pula</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Sparowany klaster musi być usunięty  przed wyłączeniem lustra. </target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, wybierz, edytuj{Edytuj} inaczej {Dodaj} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nazwa Klastra</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nazwa klastra jest niepoprawna </target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>ID CephX nie jest poprawne.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adres monitora </target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresy rozdzielane przecinkami... </target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adres monitora nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Klucz CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klucz zakodowany w Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Klucz CephX musi być zakodowany w Base64/</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Liczniki wydajności nie są dostępne</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista demonów</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Liczniki wydajności</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Ładowanie wiadra danych</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Number ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Wartość nie jest poprawna.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Wybrana nazwa już jest użyta.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Właściciel</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Wybierz użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Uaktywniony</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ indeksu</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Zasada umieszczania</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Znacznik</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Maksymalny znacznik</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Wersja</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Główna wersja</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Czas modyfikacji</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Strefa </target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>kontyngent wiadra</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maksymalny rozmiar</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Nielimitowany</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Maksimum obiektów</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nazwa użytkownika</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Wybierz nazwę użytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Auto-generowany klucz</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Klucz dostępu</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajny klucz </target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Pełne imię </target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adres email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Zawieszony</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Maksimum wiader</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>pod-użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Zdolności</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Limit użytkownika</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Pokaż</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klucze</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- wybierz typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Pozwolenie </target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Wybierz pozwolenie --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>pod-użytkownik</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Wybrane ID pod-użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>odczyt, zapis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pełny</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Szybki klucz</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Auto-generowany sekret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Ładowanie danych użytkownika...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Nie można załadować danych użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Wybrane ID użytkownika jest już użyte.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ten adres email nie jest poprawny.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Wybrany adres email jest już użyty.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Max. wiader </target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Wyłączony</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Zwyczaj</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>klucz S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nie ma pod-użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3 (prosty serwis przechowywania) </target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nie ma kluczy.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Szybki</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nie ma zdolności. </target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Nielimitowany rozmiar</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. rozmiar</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Nielimitowane obiekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Max. obiektów</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Podana wartość musi być &gt;= 0</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Opis...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Pozwolenia</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potwierdź hasło</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Potwierdzające hasło nie pokrywa się z hasłem.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Niepoprawny email.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Zamierzasz usunąć uprawnienia „odczytu / aktualizacji użytkownika” od własnego użytkownika.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jeśli kontynuujesz, nie będziesz mógł dodawać albo usuwać role od użytkowników.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Jesteś pewny, że chcesz kontynuować? </target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Pomoc</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentacja</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Interfejs API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ustawienia Pulpitu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Zarządzanie użytkownikami</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Zalogowany użytkownik</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Wyloguj</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atrybuty (mapa OSD-ków)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Niedostępne metadane</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadane</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Licznik wydajności</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Pisze</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Czyta</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Obecne wartości </target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Źródło </target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Poziom</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Może być aktualizowany w czasie wykonywania (edytowalny)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tagi</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Wartości enumerowane </target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Zobacz także </target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status klastra</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Zarządzanie demonami</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Obiekty bram </target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serwery metadanych</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Bramy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>Klient IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Przepustowość klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Odczyt/Zapis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Przepustowość odzyskiwania</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Szoruj</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Wydajność</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Pojemność rzędu</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG-y na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Pojemność</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Szeregi</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Obecny</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Zaktualizowane uwierzytelnianie wykrywania</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Brak dostępnych portali.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nie ma dostępnych obrazów. </target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nie ma dostępnych obrazów. Proszę się upewnić, że dodajesz obraz do obiektu docelowego. </target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nie ma dostępnych inicjatorów iSCSI. Proszę upewnić się, że dodajesz inicjator iSCSI do obiektu docelowego.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>obiekt docelowy iSCSI</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Odczyt bajtów </target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Zapis bajtów</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Odczyt Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Zapis Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancja</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Zagadnienie </target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progres</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Tryb Edycji</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Dodaj parowanie </target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edytuj parowanie</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Usuń parowanie</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Lider</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokalny</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Zdalny</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>lustrzane parowanie</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klucz</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Głębokie spłaszczenie</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Warstwowanie </target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Wyłączna blokada</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa obiektów (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Kronikowanie  (wymaga wyłącznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NIEZABEZPIECZONY </target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Wycofywanie migawek RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>migawka RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Usunięty o </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>wersja</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>administrator</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Czuwanie demona </target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Ranga</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Demon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktywność</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>centrale</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>i-węzły</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Użycie</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Zaktualizowany</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Wartość może być zaktualizowana w czasie wykonywania . </target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Demony/klienci nie pobierają tej wartości z\nbazy danych skonfigurowanego monitora. Nie zezwalamy na ustawienie tej opcji przez \'konfiguracje ceph\nustaw.. \'. Ta opcja powinna być skonfigurowana przez ceph.conf albo przez\nterminal.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Opcja działa tylko podczas startu demona.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Opcja dotyczy tylko tworzenia klastra.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Opcja tylko wpływa na tworzenie demona.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Usługa</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Obecna wartość</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Edytowalny</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Włączyć</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Wyłączyć</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Ponowne łączenie, proszę czekać</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adres publiczny</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otwarte sesje</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Nie w </target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD-ki, które zostały oznaczone jako poza, nie będą oznaczone ponownie jako w gdy zostaną uruchomion</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Nie poza</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD-ki nie będą automatycznie oznaczone jako poza po konfiguracji interwału</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nie powstały </target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD-ki nie mogą startować</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nie upadły</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Raport z niepowodzenia OSD jest ignorowany, także monitory nie oznaczą OSD jako upadłego. </target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pauza </target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pauzuje czytanie i zapisywanie</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nie szoruj</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nie ma głębokiego szorowania</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Głębokie szorowanie jest wyłączone</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Brak zasypywania</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypywanie PG jest zawieszone</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nie przywrócono</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Przywrócenie PGy jest zawieszone </target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Sortuj bitowo</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Użyj sortowania bitowego</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Usuń snap katalogi</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD-ki zmieniły snapsety</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Odzyskaj usunięte</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Podczas zdrowienia zastosowano usunięcie zamiast parowania</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Twardy limit logów PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Ustawia twardy limit na długość logów PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Zaktualizowane flagi OSD-ków</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD-ik</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>poza</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>w</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>upadły</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Zaznacz</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>Stracony OSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>Zaznaczony jako stracony</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>Zniszczony</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>Usuń</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG-y</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Czytanie bajtów</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapis bajtów </target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Czytanie ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Zapis ops</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max zasypywanie</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Max aktywność wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Max pojedynczy start wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uśpienie wyzdrowienia</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Praca</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>surowość</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Wystartowany</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Użyty</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dostępny</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Czyść</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Działający</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Ostrzeżenie </target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Nieznany</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>Podniesiony</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>brak systemów plików</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktywny</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>Rezerwa</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>niedostępny</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktywny demon</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kworum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Usługa NFS Ganesha nie jest skonfigurowana</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Użytkownik CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>system plików CephFS </target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(Odziedziczyło z globalnej konfiguracji)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>Odziedziczyło z globalnej konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Wybierz, jakiego rodzaju identyfikacja użytkownika ma być przeprowadzana -- </target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Brak dostępnym demonów</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Tryb pamięci podręcznej</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min wiek eksmisji</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min wiek wyrównania </target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max bajtów obiektu docelowego </target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max obiektów docelowych</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nie dodano żadnego zastosowania</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Osiągnięto limit zastosowań </target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Pul może mieć maksymalnie 4 definicje aplikacji. </target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Dozwolone znaki \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Maksymalna długość wynosi 128 znaków</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtruj lub dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Dodaj zastosowanie</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>skasuj profil kodu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Rozmiar repliki</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Ostatnia zmiana</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Skasuj profil zakodowany</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Zbiór zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>wiadro</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Wiadra</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>użytkownik</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>użytkownicy</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Zakres</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Czytaj</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Stwórz</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>System roli </target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Zaktualizuj użytkownika</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Kontynuuj </target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Zostałeś automatycznie wylogowany, ponieważ zostały zmienione twoje role.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Każdy obiekt jest podzielony na części fragmentów danych, każdy jest przechowywany na innym OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Oblicz porcje kodu dla każdego obiektu i przechowuj je na różnych OSD.\n Liczba fragmentów kodujących to również liczba OSD, które mogą zostać wyłączone bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Wtyczka jerasure jest najbardziej uniwersalną i elastyczną wtyczką,\n jest to również domyślne ustawienie dla pui kodowanych przez Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Bardziej elastyczną techniką jest reed_sol_van: wystarczy ustawić k\n oraz m. Technika cauchy_good może być szybsza, ale musisz wybrać rozmiar pakietu\n ostrożnie. Wszystkie reed_sol_r6_op, liberation, blaum_roth, liber8tion są odpowiednikami RAID6\n w tym sensie, że mogą być skonfigurowane tylko z m = 2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Kodowanie będzie wykonywane na pakietach o rozmiarze bajtów naraz.\n Wybór odpowiedniego rozmiaru pakietu jest trudny.\n Dokumentacja jerasure zawiera obszerne informacje na ten temat.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Z wtyczką jerasure, gdy obiekt zakodowany przy użyciu skasowania jest przechowywany na \n wielu OSD-kach, odzyskiwanie po utracie jednego OSD wymaga odczytu ze wszystkich pozostałych.\n Na przykład, jeśli konfiguracja skryptu ma wartość k = 8 ,m = 4 i l=4, utrata jednego OSD wymaga odczytu\n od jedenastu innych do naprawy.\n\n Wtyczka kodu wymazywania lrc tworzy fragmenty o parzystości lokalnej, aby móc je odzyskać\n mniej OSD. Na przykład, jeśli lrc jest skonfigurowane z k = 8, m = 4 i l = 4, zostanie utworzony\n dodatkowy fragment parzystości na każde cztery OSD. Gdy jeden OSD zostanie utracone, może to być\n odzyskane tylko z czterema OSD zamiast jedenastu.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Grupuj fragmenty kodu i danych w zestawy lokalizacji wielkości. Na przykład,\n dla k = 4 i m = 2, gdy lokalność = 3 tworzone są dwie grupy po trzy. Każdy zestaw może\n odzyskać bez czytania kawałków z innego zestawu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Typ wiadra CRUSH, w którym zdefiniowano każdy zestaw porcji\n przez l zostaną zapisane. Na przykład, jeśli jest ustawiony na rack, każda grupa l porcji będzie\n umieszczona w innym raku. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru\n racka. Jeśli nie jest ustawiony, nie ma takiego grupowania.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Wtyczka isa zawiera bibliotekę ISA. Działa tylko na procesorach Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Wtyczka ISA jest dostępna w dwóch formach Reed Solomon.\n Jeśli ustawiono reed_sol_van, jest to Vandermonde, jeśli ustawiono cauchy, to jest to Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Wtyczka shec zawiera wiele bibliotek SHEC.\n Pozwala ceph odzyskać dane bardziej efektywnie niż kody Reeda Solomona.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Liczba kawałków parzystości, z których każdy zawiera każdą porcję danych w swoim zakresie obliczeń. Liczba jest używana jako estymator trwałości. Na przykład, jeśli c = 2,\n 2 OSD można wyłączyć bez utraty danych.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nazwa wiadra crush jest użyte do pierwszego kroku reguły CRUSH.\nNa przykład krok jest domyślny.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Upewnij się, że żadne dwie porcje nie znajdują się w wiadrze z tą samą awarią\n domeny. Na przykład, jeśli domena awarii jest hostem, nie zostaną na niej zapisane dwie porcje\n hosta. Służy do utworzenia kroku reguły CRUSH, takiego jak krok wyboru hosta.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Ogranicz umieszczanie do urządzeń określonej klasy\n (np. ssd lub hdd), używając nazw klas urządzeń zgniatających na mapie CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Ustaw nazwę katalogu, z którego ładowana jest wtyczka kodu kasowania.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Dozwolone są wszystkie operacje</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Dozwolone są operacje, które nie modyfikują serweru</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Operacje odczytu i zapisu są zakazane, wszystkie inne dozwolone</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Operacje odczytu i zapisu, oraz wszystkie operacje modyfikujące atrybuty albo katalogi są zakazane </target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Brak dostępu w ogóle</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- wybierz priorytet -- </target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Niski</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Wysoki</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informacja</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Ostatnie 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Ostatnie 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Ostatnie 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Ostatnia 1 godzina (domyślnie)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Ostatnie 3 godziny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Ostatnie 6 godzin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Ostatnie 12 godzin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Ostatnie 24 godziny</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Wczoraj</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Do tej pory dzisiaj</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Przedwczoraj</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Ostatnie 2 dni</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tego dnia tydzień temu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Poprzedni tydzień</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Ten tydzień </target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Do tej pory w tym tygodniu</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Ostatnie 7 dni</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Poprzedniego miesiąca</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>ten miesiąc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Do tej pory w tym miesiącu</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Ostatnie 30 dni</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Ostatnie 90 dni</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Ostatnie 6 miesięcy</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Ostatni 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Poprzedniego roku</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Do tej pory bieżącego roku</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Ostatnie 2 lata</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Ostatnie 5 lat</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nie wybrano żadnej pozycji</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Odznacz pozycję, żeby wybrać ponownie</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Osiągnięto limit wyboru. </target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtr tagów.</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Dodaj odznakę</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Brak dostępnych pozycji.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Sklonuj</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopia</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Szoruj głęboko</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zniszcz</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>zaznacz jako upadły</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Zaznacz jako w </target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Zaznacz jako stracony</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Zaznacz jako poza</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Zabezpiecz</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Zmień nazwę</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Przywróć</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Przenieś do kosza</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Odbezpiecz </target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Usunięty</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Sklonowano</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Skopiowano </target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Spłaszczony</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Oczyszczony</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Przywrócony</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Wycofaj</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Tak</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Nie</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Jakość serwisu</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Pożądany limit IO bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Pożądany limit operacji IO na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>limit odczytu BPS</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Pożądany limit odczytu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>limit  odczytu IOPS</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Pożądany limit operacji odczytu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit zapisu BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Pożądany limit zapisu bajtów na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit zapisu IOPS</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Pożądany limit operacji zapisu na sekundę.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Wiązka BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Żądana granica serii IO bajtów.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Wiązka IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Żądana granica serii operacji IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Odczyt wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Żądana granica serii odczytanych bajtów.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Odczyt wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target> Żądana granica serii operacji odczytu.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Zapis wiązki BPS</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Żądana granica serii bajtów zapisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Zapis wiązki IOPS</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Żądana granica serii operacji zapisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Wykonywanie </target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>Wykonaj</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Wykonany</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>Nieznane zadanie</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Tworzenie</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>Utwórz</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizowanie </target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>Zaktualizuj</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Usuwanie</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonowanie</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>Sklonuj </target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopiowanie </target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>Kopiuj</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Spłaszczanie</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>Spłaszcz</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Wycofywanie </target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>Wycofanie</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Przenoszenie</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>Przenieś</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Przeniesiono</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Nie znaleziono obrazu.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Przywracanie</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>Przywróć </target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>oczyszczać</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>oczyść</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>Wszystkie pule</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Nie można wyłączyć lustrzenia ponieważ zawiera parowanie.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},STAE:function(t,e,n){var a=n("0Dky");t.exports=!!Object.getOwnPropertySymbols&&!a((function(){return!String(Symbol())}))},SVse:function(t,e,n){"use strict";n.r(e),n.d(e,"ɵangular_packages_common_common_c",(function(){return ae})),n.d(e,"ɵangular_packages_common_common_h",(function(){return At})),n.d(e,"ɵangular_packages_common_common_g",(function(){return Ct})),n.d(e,"ɵangular_packages_common_common_f",(function(){return Nt})),n.d(e,"ɵangular_packages_common_common_k",(function(){return Qt})),n.d(e,"ɵangular_packages_common_common_j",(function(){return Zt})),n.d(e,"ɵangular_packages_common_common_i",(function(){return $t})),n.d(e,"ɵangular_packages_common_common_a",(function(){return ft})),n.d(e,"ɵangular_packages_common_common_b",(function(){return bt})),n.d(e,"ɵangular_packages_common_common_e",(function(){return Se})),n.d(e,"ɵangular_packages_common_common_d",(function(){return Ke})),n.d(e,"ɵregisterLocaleData",(function(){return mt})),n.d(e,"registerLocaleData",(function(){return mt})),n.d(e,"formatDate",(function(){return K})),n.d(e,"formatCurrency",(function(){return ot})),n.d(e,"formatNumber",(function(){return lt})),n.d(e,"formatPercent",(function(){return ut})),n.d(e,"NgLocaleLocalization",(function(){return pt})),n.d(e,"NgLocalization",(function(){return ht})),n.d(e,"Plural",(function(){return g})),n.d(e,"NumberFormatStyle",(function(){return h})),n.d(e,"FormStyle",(function(){return p})),n.d(e,"TranslationWidth",(function(){return b})),n.d(e,"FormatWidth",(function(){return m})),n.d(e,"NumberSymbol",(function(){return y})),n.d(e,"WeekDay",(function(){return v})),n.d(e,"getNumberOfCurrencyDigits",(function(){return V})),n.d(e,"getCurrencySymbol",(function(){return G})),n.d(e,"getLocaleDayPeriods",(function(){return _})),n.d(e,"getLocaleDayNames",(function(){return T})),n.d(e,"getLocaleMonthNames",(function(){return O})),n.d(e,"getLocaleId",(function(){return x})),n.d(e,"getLocaleEraNames",(function(){return w})),n.d(e,"getLocaleWeekEndRange",(function(){return I})),n.d(e,"getLocaleFirstDayOfWeek",(function(){return S})),n.d(e,"getLocaleDateFormat",(function(){return N})),n.d(e,"getLocaleDateTimeFormat",(function(){return R})),n.d(e,"getLocaleExtraDayPeriodRules",(function(){return M})),n.d(e,"getLocaleExtraDayPeriods",(function(){return q})),n.d(e,"getLocalePluralCase",(function(){return D})),n.d(e,"getLocaleTimeFormat",(function(){return C})),n.d(e,"getLocaleNumberSymbol",(function(){return A})),n.d(e,"getLocaleNumberFormat",(function(){return k})),n.d(e,"getLocaleCurrencyName",(function(){return L})),n.d(e,"getLocaleCurrencySymbol",(function(){return E})),n.d(e,"ɵparseCookieValue",(function(){return yt})),n.d(e,"CommonModule",(function(){return $e})),n.d(e,"DeprecatedI18NPipesModule",(function(){return Ze})),n.d(e,"NgClass",(function(){return Lt})),n.d(e,"NgClassBase",(function(){return Et})),n.d(e,"NgForOf",(function(){return Mt})),n.d(e,"NgForOfContext",(function(){return Pt})),n.d(e,"NgIf",(function(){return jt})),n.d(e,"NgIfContext",(function(){return Ft})),n.d(e,"NgPlural",(function(){return Ht})),n.d(e,"NgPluralCase",(function(){return Ut})),n.d(e,"NgStyle",(function(){return ee})),n.d(e,"NgStyleBase",(function(){return te})),n.d(e,"NgSwitch",(function(){return zt})),n.d(e,"NgSwitchCase",(function(){return Bt})),n.d(e,"NgSwitchDefault",(function(){return Yt})),n.d(e,"NgTemplateOutlet",(function(){return ne})),n.d(e,"NgComponentOutlet",(function(){return Dt})),n.d(e,"DOCUMENT",(function(){return Je})),n.d(e,"AsyncPipe",(function(){return Ae})),n.d(e,"DatePipe",(function(){return Pe})),n.d(e,"I18nPluralPipe",(function(){return qe})),n.d(e,"I18nSelectPipe",(function(){return je})),n.d(e,"JsonPipe",(function(){return Fe})),n.d(e,"LowerCasePipe",(function(){return ke})),n.d(e,"CurrencyPipe",(function(){return Ye})),n.d(e,"DecimalPipe",(function(){return ze})),n.d(e,"PercentPipe",(function(){return Be})),n.d(e,"SlicePipe",(function(){return We})),n.d(e,"UpperCasePipe",(function(){return De})),n.d(e,"TitleCasePipe",(function(){return Le})),n.d(e,"KeyValuePipe",(function(){return Ge})),n.d(e,"DeprecatedDatePipe",(function(){return ve})),n.d(e,"DeprecatedCurrencyPipe",(function(){return we})),n.d(e,"DeprecatedDecimalPipe",(function(){return Te})),n.d(e,"DeprecatedPercentPipe",(function(){return Oe})),n.d(e,"ɵPLATFORM_BROWSER_ID",(function(){return Qe})),n.d(e,"ɵPLATFORM_SERVER_ID",(function(){return Xe})),n.d(e,"ɵPLATFORM_WORKER_APP_ID",(function(){return tn})),n.d(e,"ɵPLATFORM_WORKER_UI_ID",(function(){return en})),n.d(e,"isPlatformBrowser",(function(){return nn})),n.d(e,"isPlatformServer",(function(){return an})),n.d(e,"isPlatformWorkerApp",(function(){return rn})),n.d(e,"isPlatformWorkerUi",(function(){return sn})),n.d(e,"VERSION",(function(){return on})),n.d(e,"ViewportScroller",(function(){return un})),n.d(e,"ɵNullViewportScroller",(function(){return dn})),n.d(e,"ɵNgClassImplProvider__POST_R3__",(function(){return Rt})),n.d(e,"ɵNgClassR2Impl",(function(){return It})),n.d(e,"ɵNgClassImpl",(function(){return St})),n.d(e,"ɵNgStyleImplProvider__POST_R3__",(function(){return Jt})),n.d(e,"ɵNgStyleR2Impl",(function(){return Kt})),n.d(e,"ɵNgStyleImpl",(function(){return Wt})),n.d(e,"ɵngStyleDirectiveDef__POST_R3__",(function(){return Xt})),n.d(e,"ɵngClassDirectiveDef__POST_R3__",(function(){return kt})),n.d(e,"PlatformLocation",(function(){return r})),n.d(e,"LOCATION_INITIALIZED",(function(){return i})),n.d(e,"LocationStrategy",(function(){return s})),n.d(e,"APP_BASE_HREF",(function(){return o})),n.d(e,"HashLocationStrategy",(function(){return d})),n.d(e,"PathLocationStrategy",(function(){return c})),n.d(e,"Location",(function(){return u}));var a=n("8Y7J");class r{}const i=new a.InjectionToken("Location Initialized");class s{}const o=new a.InjectionToken("appBaseHref");class u{constructor(t,e){this._subject=new a.EventEmitter,this._urlChangeListeners=[],this._platformStrategy=t;const n=this._platformStrategy.getBaseHref();this._platformLocation=e,this._baseHref=u.stripTrailingSlash(l(n)),this._platformStrategy.onPopState(t=>{this._subject.emit({url:this.path(!0),pop:!0,state:t.state,type:t.type})})}path(t=!1){return this.normalize(this._platformStrategy.path(t))}getState(){return this._platformLocation.getState()}isCurrentPathEqualTo(t,e=""){return this.path()==this.normalize(t+u.normalizeQueryParams(e))}normalize(t){return u.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,l(t)))}prepareExternalUrl(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)}go(t,e="",n=null){this._platformStrategy.pushState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+u.normalizeQueryParams(e)),n)}replaceState(t,e="",n=null){this._platformStrategy.replaceState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+u.normalizeQueryParams(e)),n)}forward(){this._platformStrategy.forward()}back(){this._platformStrategy.back()}onUrlChange(t){this._urlChangeListeners.push(t),this.subscribe(t=>{this._notifyUrlChangeListeners(t.url,t.state)})}_notifyUrlChangeListeners(t="",e){this._urlChangeListeners.forEach(n=>n(t,e))}subscribe(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})}static normalizeQueryParams(t){return t&&"?"!==t[0]?"?"+t:t}static joinWithSlash(t,e){if(0==t.length)return e;if(0==e.length)return t;let n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e}static stripTrailingSlash(t){const e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)}}function l(t){return t.replace(/\/index.html$/,"")}class d extends s{constructor(t,e){super(),this._platformLocation=t,this._baseHref="",null!=e&&(this._baseHref=e)}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}path(t=!1){let e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e}prepareExternalUrl(t){const e=u.joinWithSlash(this._baseHref,t);return e.length>0?"#"+e:e}pushState(t,e,n,a){let r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){let r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}class c extends s{constructor(t,e){if(super(),this._platformLocation=t,null==e&&(e=this._platformLocation.getBaseHrefFromDOM()),null==e)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=e}onPopState(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return u.joinWithSlash(this._baseHref,t)}path(t=!1){const e=this._platformLocation.pathname+u.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?`${e}${n}`:e}pushState(t,e,n,a){const r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));this._platformLocation.pushState(t,e,r)}replaceState(t,e,n,a){const r=this.prepareExternalUrl(n+u.normalizeQueryParams(a));this._platformLocation.replaceState(t,e,r)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}}const f={ADP:[void 0,void 0,0],AFN:[void 0,void 0,0],ALL:[void 0,void 0,0],AMD:[void 0,void 0,0],AOA:[void 0,"Kz"],ARS:[void 0,"$"],AUD:["A$","$"],BAM:[void 0,"KM"],BBD:[void 0,"$"],BDT:[void 0,"৳"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,"$"],BND:[void 0,"$"],BOB:[void 0,"Bs"],BRL:["R$"],BSD:[void 0,"$"],BWP:[void 0,"P"],BYN:[void 0,"р.",2],BYR:[void 0,void 0,0],BZD:[void 0,"$"],CAD:["CA$","$",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,"$",0],CNY:["CN¥","¥"],COP:[void 0,"$",0],CRC:[void 0,"₡",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"Kč",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E£"],ESP:[void 0,"₧",0],EUR:["€"],FJD:[void 0,"$"],FKP:[void 0,"£"],GBP:["£"],GEL:[void 0,"₾"],GIP:[void 0,"£"],GNF:[void 0,"FG",0],GTQ:[void 0,"Q"],GYD:[void 0,"$",0],HKD:["HK$","$"],HNL:[void 0,"L"],HRK:[void 0,"kn"],HUF:[void 0,"Ft",2],IDR:[void 0,"Rp",0],ILS:["₪"],INR:["₹"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,"kr",0],ITL:[void 0,void 0,0],JMD:[void 0,"$"],JOD:[void 0,void 0,3],JPY:["¥",void 0,0],KHR:[void 0,"៛"],KMF:[void 0,"CF",0],KPW:[void 0,"₩",0],KRW:["₩",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"₸"],LAK:[void 0,"₭",0],LBP:[void 0,"L£",0],LKR:[void 0,"Rs"],LRD:[void 0,"$"],LTL:[void 0,"Lt"],LUF:[void 0,void 0,0],LVL:[void 0,"Ls"],LYD:[void 0,void 0,3],MGA:[void 0,"Ar",0],MGF:[void 0,void 0,0],MMK:[void 0,"K",0],MNT:[void 0,"₮",0],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",0],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"₦"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:[void 0,"₱"],PKR:[void 0,"Rs",0],PLN:[void 0,"zł"],PYG:[void 0,"₲",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"₽"],RUR:[void 0,"р."],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"£"],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"£"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"£",0],THB:[void 0,"฿"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,"T$"],TRL:[void 0,void 0,0],TRY:[void 0,"₺"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,0],UAH:[void 0,"₴"],UGX:[void 0,void 0,0],USD:["$"],UYI:[void 0,void 0,0],UYU:[void 0,"$"],UZS:[void 0,void 0,0],VEF:[void 0,"Bs"],VND:["₫",void 0,0],VUV:[void 0,void 0,0],XAF:["FCFA",void 0,0],XCD:["EC$","$"],XOF:["CFA",void 0,0],XPF:["CFPF",void 0,0],YER:[void 0,void 0,0],ZAR:[void 0,"R"],ZMK:[void 0,void 0,0],ZMW:[void 0,"ZK"],ZWD:[void 0,void 0,0]},h=function(){var t={Decimal:0,Percent:1,Currency:2,Scientific:3};return t[t.Decimal]="Decimal",t[t.Percent]="Percent",t[t.Currency]="Currency",t[t.Scientific]="Scientific",t}(),g=function(){var t={Zero:0,One:1,Two:2,Few:3,Many:4,Other:5};return t[t.Zero]="Zero",t[t.One]="One",t[t.Two]="Two",t[t.Few]="Few",t[t.Many]="Many",t[t.Other]="Other",t}(),p=function(){var t={Format:0,Standalone:1};return t[t.Format]="Format",t[t.Standalone]="Standalone",t}(),b=function(){var t={Narrow:0,Abbreviated:1,Wide:2,Short:3};return t[t.Narrow]="Narrow",t[t.Abbreviated]="Abbreviated",t[t.Wide]="Wide",t[t.Short]="Short",t}(),m=function(){var t={Short:0,Medium:1,Long:2,Full:3};return t[t.Short]="Short",t[t.Medium]="Medium",t[t.Long]="Long",t[t.Full]="Full",t}(),y=function(){var t={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};return t[t.Decimal]="Decimal",t[t.Group]="Group",t[t.List]="List",t[t.PercentSign]="PercentSign",t[t.PlusSign]="PlusSign",t[t.MinusSign]="MinusSign",t[t.Exponential]="Exponential",t[t.SuperscriptingExponent]="SuperscriptingExponent",t[t.PerMille]="PerMille",t[t.Infinity]="Infinity",t[t.NaN]="NaN",t[t.TimeSeparator]="TimeSeparator",t[t.CurrencyDecimal]="CurrencyDecimal",t[t.CurrencyGroup]="CurrencyGroup",t}(),v=function(){var t={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6};return t[t.Sunday]="Sunday",t[t.Monday]="Monday",t[t.Tuesday]="Tuesday",t[t.Wednesday]="Wednesday",t[t.Thursday]="Thursday",t[t.Friday]="Friday",t[t.Saturday]="Saturday",t}();function x(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].LocaleId]}function _(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DayPeriodsFormat],r[a["ɵLocaleDataIndex"].DayPeriodsStandalone]],e);return j(i,n)}function T(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].DaysFormat],r[a["ɵLocaleDataIndex"].DaysStandalone]],e);return j(i,n)}function O(t,e,n){const r=Object(a["ɵfindLocaleData"])(t),i=j([r[a["ɵLocaleDataIndex"].MonthsFormat],r[a["ɵLocaleDataIndex"].MonthsStandalone]],e);return j(i,n)}function w(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Eras],e)}function S(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].FirstDayOfWeek]}function I(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].WeekendRange]}function N(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateFormat],e)}function C(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].TimeFormat],e)}function R(t,e){return j(Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].DateTimeFormat],e)}function A(t,e){const n=Object(a["ɵfindLocaleData"])(t),r=n[a["ɵLocaleDataIndex"].NumberSymbols][e];if(void 0===r){if(e===y.CurrencyDecimal)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Decimal];if(e===y.CurrencyGroup)return n[a["ɵLocaleDataIndex"].NumberSymbols][y.Group]}return r}function k(t,e){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].NumberFormats][e]}function E(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencySymbol]||null}function L(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].CurrencyName]||null}const D=a["ɵgetLocalePluralCase"];function P(t){if(!t[a["ɵLocaleDataIndex"].ExtraData])throw new Error(`Missing extra locale data for the locale "${t[a["ɵLocaleDataIndex"].LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function M(t){const e=Object(a["ɵfindLocaleData"])(t);return P(e),(e[a["ɵLocaleDataIndex"].ExtraData][2]||[]).map(t=>"string"==typeof t?F(t):[F(t[0]),F(t[1])])}function q(t,e,n){const r=Object(a["ɵfindLocaleData"])(t);P(r);const i=j([r[a["ɵLocaleDataIndex"].ExtraData][0],r[a["ɵLocaleDataIndex"].ExtraData][1]],e)||[];return j(i,n)||[]}function j(t,e){for(let n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function F(t){const[e,n]=t.split(":");return{hours:+e,minutes:+n}}function G(t,e,n="en"){const r=function(t){return Object(a["ɵfindLocaleData"])(t)[a["ɵLocaleDataIndex"].Currencies]}(n)[t]||f[t]||[],i=r[1];return"narrow"===e&&"string"==typeof i?i:r[0]||t}function V(t){let e;const n=f[t];return n&&(e=n[2]),"number"==typeof e?e:2}const z=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,B={},Y=/((?:[^GyMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,H=function(){var t={Short:0,ShortGMT:1,Long:2,Extended:3};return t[t.Short]="Short",t[t.ShortGMT]="ShortGMT",t[t.Long]="Long",t[t.Extended]="Extended",t}(),U=function(){var t={FullYear:0,Month:1,Date:2,Hours:3,Minutes:4,Seconds:5,FractionalSeconds:6,Day:7};return t[t.FullYear]="FullYear",t[t.Month]="Month",t[t.Date]="Date",t[t.Hours]="Hours",t[t.Minutes]="Minutes",t[t.Seconds]="Seconds",t[t.FractionalSeconds]="FractionalSeconds",t[t.Day]="Day",t}(),W=function(){var t={DayPeriods:0,Days:1,Months:2,Eras:3};return t[t.DayPeriods]="DayPeriods",t[t.Days]="Days",t[t.Months]="Months",t[t.Eras]="Eras",t}();function K(t,e,n,a){let r=function(t){if(rt(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){t=t.trim();const e=parseFloat(t);if(!isNaN(t-e))return new Date(e);if(/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){const[e,n,a]=t.split("-").map(t=>+t);return new Date(e,n-1,a)}let n;if(n=t.match(z))return at(n)}const e=new Date(t);if(!rt(e))throw new Error(`Unable to convert "${t}" into a date`);return e}(t);e=function t(e,n){const a=x(e);if(B[a]=B[a]||{},B[a][n])return B[a][n];let r="";switch(n){case"shortDate":r=N(e,m.Short);break;case"mediumDate":r=N(e,m.Medium);break;case"longDate":r=N(e,m.Long);break;case"fullDate":r=N(e,m.Full);break;case"shortTime":r=C(e,m.Short);break;case"mediumTime":r=C(e,m.Medium);break;case"longTime":r=C(e,m.Long);break;case"fullTime":r=C(e,m.Full);break;case"short":const n=t(e,"shortTime"),a=t(e,"shortDate");r=$(R(e,m.Short),[n,a]);break;case"medium":const i=t(e,"mediumTime"),s=t(e,"mediumDate");r=$(R(e,m.Medium),[i,s]);break;case"long":const o=t(e,"longTime"),u=t(e,"longDate");r=$(R(e,m.Long),[o,u]);break;case"full":const l=t(e,"fullTime"),d=t(e,"fullDate");r=$(R(e,m.Full),[l,d])}return r&&(B[a][n]=r),r}(n,e)||e;let i,s=[];for(;e;){if(i=Y.exec(e),!i){s.push(e);break}{s=s.concat(i.slice(1));const t=s.pop();if(!t)break;e=t}}let o=r.getTimezoneOffset();a&&(o=nt(a,o),r=function(t,e,n){const a=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(nt(e,a)-a))}(r,a));let u="";return s.forEach(t=>{const e=function(t){if(et[t])return et[t];let e;switch(t){case"G":case"GG":case"GGG":e=Q(W.Eras,b.Abbreviated);break;case"GGGG":e=Q(W.Eras,b.Wide);break;case"GGGGG":e=Q(W.Eras,b.Narrow);break;case"y":e=J(U.FullYear,1,0,!1,!0);break;case"yy":e=J(U.FullYear,2,0,!0,!0);break;case"yyy":e=J(U.FullYear,3,0,!1,!0);break;case"yyyy":e=J(U.FullYear,4,0,!1,!0);break;case"M":case"L":e=J(U.Month,1,1);break;case"MM":case"LL":e=J(U.Month,2,1);break;case"MMM":e=Q(W.Months,b.Abbreviated);break;case"MMMM":e=Q(W.Months,b.Wide);break;case"MMMMM":e=Q(W.Months,b.Narrow);break;case"LLL":e=Q(W.Months,b.Abbreviated,p.Standalone);break;case"LLLL":e=Q(W.Months,b.Wide,p.Standalone);break;case"LLLLL":e=Q(W.Months,b.Narrow,p.Standalone);break;case"w":e=tt(1);break;case"ww":e=tt(2);break;case"W":e=tt(1,!0);break;case"d":e=J(U.Date,1);break;case"dd":e=J(U.Date,2);break;case"E":case"EE":case"EEE":e=Q(W.Days,b.Abbreviated);break;case"EEEE":e=Q(W.Days,b.Wide);break;case"EEEEE":e=Q(W.Days,b.Narrow);break;case"EEEEEE":e=Q(W.Days,b.Short);break;case"a":case"aa":case"aaa":e=Q(W.DayPeriods,b.Abbreviated);break;case"aaaa":e=Q(W.DayPeriods,b.Wide);break;case"aaaaa":e=Q(W.DayPeriods,b.Narrow);break;case"b":case"bb":case"bbb":e=Q(W.DayPeriods,b.Abbreviated,p.Standalone,!0);break;case"bbbb":e=Q(W.DayPeriods,b.Wide,p.Standalone,!0);break;case"bbbbb":e=Q(W.DayPeriods,b.Narrow,p.Standalone,!0);break;case"B":case"BB":case"BBB":e=Q(W.DayPeriods,b.Abbreviated,p.Format,!0);break;case"BBBB":e=Q(W.DayPeriods,b.Wide,p.Format,!0);break;case"BBBBB":e=Q(W.DayPeriods,b.Narrow,p.Format,!0);break;case"h":e=J(U.Hours,1,-12);break;case"hh":e=J(U.Hours,2,-12);break;case"H":e=J(U.Hours,1);break;case"HH":e=J(U.Hours,2);break;case"m":e=J(U.Minutes,1);break;case"mm":e=J(U.Minutes,2);break;case"s":e=J(U.Seconds,1);break;case"ss":e=J(U.Seconds,2);break;case"S":e=J(U.FractionalSeconds,1);break;case"SS":e=J(U.FractionalSeconds,2);break;case"SSS":e=J(U.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=X(H.Short);break;case"ZZZZZ":e=X(H.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=X(H.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=X(H.Long);break;default:return null}return et[t]=e,e}(t);u+=e?e(r,n,o):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),u}function $(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,(function(t,n){return null!=e&&n in e?e[n]:t}))),t}function Z(t,e,n="-",a,r){let i="";(t<0||r&&t<=0)&&(r?t=1-t:(t=-t,i=n));let s=String(t);for(;s.length<e;)s="0"+s;return a&&(s=s.substr(s.length-e)),i+s}function J(t,e,n=0,a=!1,r=!1){return function(i,s){let o=function(t,e){switch(t){case U.FullYear:return e.getFullYear();case U.Month:return e.getMonth();case U.Date:return e.getDate();case U.Hours:return e.getHours();case U.Minutes:return e.getMinutes();case U.Seconds:return e.getSeconds();case U.FractionalSeconds:return e.getMilliseconds();case U.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${t}".`)}}(t,i);if((n>0||o>-n)&&(o+=n),t===U.Hours)0===o&&-12===n&&(o=12);else if(t===U.FractionalSeconds)return u=e,Z(o,3).substr(0,u);var u;const l=A(s,y.MinusSign);return Z(o,e,l,a,r)}}function Q(t,e,n=p.Format,a=!1){return function(r,i){return function(t,e,n,a,r,i){switch(n){case W.Months:return O(e,r,a)[t.getMonth()];case W.Days:return T(e,r,a)[t.getDay()];case W.DayPeriods:const s=t.getHours(),o=t.getMinutes();if(i){const t=M(e),n=q(e,r,a);let i;if(t.forEach((t,e)=>{if(Array.isArray(t)){const{hours:a,minutes:r}=t[0],{hours:u,minutes:l}=t[1];s>=a&&o>=r&&(s<u||s===u&&o<l)&&(i=n[e])}else{const{hours:a,minutes:r}=t;a===s&&r===o&&(i=n[e])}}),i)return i}return _(e,r,a)[s<12?0:1];case W.Eras:return w(e,a)[t.getFullYear()<=0?0:1];default:throw new Error(`unexpected translation type ${n}`)}}(r,i,t,e,n,a)}}function X(t){return function(e,n,a){const r=-1*a,i=A(n,y.MinusSign),s=r>0?Math.floor(r/60):Math.ceil(r/60);switch(t){case H.Short:return(r>=0?"+":"")+Z(s,2,i)+Z(Math.abs(r%60),2,i);case H.ShortGMT:return"GMT"+(r>=0?"+":"")+Z(s,1,i);case H.Long:return"GMT"+(r>=0?"+":"")+Z(s,2,i)+":"+Z(Math.abs(r%60),2,i);case H.Extended:return 0===a?"Z":(r>=0?"+":"")+Z(s,2,i)+":"+Z(Math.abs(r%60),2,i);default:throw new Error(`Unknown zone width "${t}"`)}}}function tt(t,e=!1){return function(n,a){let r;if(e){const t=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,e=n.getDate();r=1+Math.floor((e+t)/7)}else{const t=function(t){const e=new Date(t,0,1).getDay();return new Date(t,0,1+(e<=4?4:11)-e)}(n.getFullYear()),e=(i=n,new Date(i.getFullYear(),i.getMonth(),i.getDate()+(4-i.getDay()))).getTime()-t.getTime();r=1+Math.round(e/6048e5)}var i;return Z(r,t,A(a,y.MinusSign))}}const et={};function nt(t,e){t=t.replace(/:/g,"");const n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function at(t){const e=new Date(0);let n=0,a=0;const r=t[8]?e.setUTCFullYear:e.setFullYear,i=t[8]?e.setUTCHours:e.setHours;t[9]&&(n=Number(t[9]+t[10]),a=Number(t[9]+t[11])),r.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));const s=Number(t[4]||0)-n,o=Number(t[5]||0)-a,u=Number(t[6]||0),l=Math.round(1e3*parseFloat("0."+(t[7]||0)));return i.call(e,s,o,u,l),e}function rt(t){return t instanceof Date&&!isNaN(t.valueOf())}const it=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function st(t,e,n,a,r,i,s=!1){let o="",u=!1;if(isFinite(t)){let l=function(t){let e,n,a,r,i,s=Math.abs(t)+"",o=0;for((n=s.indexOf("."))>-1&&(s=s.replace(".","")),(a=s.search(/e/i))>0?(n<0&&(n=a),n+=+s.slice(a+1),s=s.substring(0,a)):n<0&&(n=s.length),a=0;"0"===s.charAt(a);a++);if(a===(i=s.length))e=[0],n=1;else{for(i--;"0"===s.charAt(i);)i--;for(n-=a,e=[],r=0;a<=i;a++,r++)e[r]=Number(s.charAt(a))}return n>22&&(e=e.splice(0,21),o=n-1,n=1),{digits:e,exponent:o,integerLen:n}}(t);s&&(l=function(t){if(0===t.digits[0])return t;const e=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===e?t.digits.push(0,0):1===e&&t.digits.push(0),t.integerLen+=2),t}(l));let d=e.minInt,c=e.minFrac,f=e.maxFrac;if(i){const t=i.match(it);if(null===t)throw new Error(`${i} is not a valid digit info`);const e=t[1],n=t[3],a=t[5];null!=e&&(d=ct(e)),null!=n&&(c=ct(n)),null!=a?f=ct(a):null!=n&&c>f&&(f=c)}!function(t,e,n){if(e>n)throw new Error(`The minimum number of digits after fraction (${e}) is higher than the maximum (${n}).`);let a=t.digits,r=a.length-t.integerLen;const i=Math.min(Math.max(e,r),n);let s=i+t.integerLen,o=a[s];if(s>0){a.splice(Math.max(t.integerLen,s));for(let t=s;t<a.length;t++)a[t]=0}else{r=Math.max(0,r),t.integerLen=1,a.length=Math.max(1,s=i+1),a[0]=0;for(let t=1;t<s;t++)a[t]=0}if(o>=5)if(s-1<0){for(let e=0;e>s;e--)a.unshift(0),t.integerLen++;a.unshift(1),t.integerLen++}else a[s-1]++;for(;r<Math.max(0,i);r++)a.push(0);let u=0!==i;const l=e+t.integerLen,d=a.reduceRight((function(t,e,n,a){return a[n]=(e+=t)<10?e:e-10,u&&(0===a[n]&&n>=l?a.pop():u=!1),e>=10?1:0}),0);d&&(a.unshift(d),t.integerLen++)}(l,c,f);let h=l.digits,g=l.integerLen;const p=l.exponent;let b=[];for(u=h.every(t=>!t);g<d;g++)h.unshift(0);for(;g<0;g++)h.unshift(0);g>0?b=h.splice(g,h.length):(b=h,h=[0]);const m=[];for(h.length>=e.lgSize&&m.unshift(h.splice(-e.lgSize,h.length).join(""));h.length>e.gSize;)m.unshift(h.splice(-e.gSize,h.length).join(""));h.length&&m.unshift(h.join("")),o=m.join(A(n,a)),b.length&&(o+=A(n,r)+b.join("")),p&&(o+=A(n,y.Exponential)+"+"+p)}else o=A(n,y.Infinity);return o=t<0&&!u?e.negPre+o+e.negSuf:e.posPre+o+e.posSuf,o}function ot(t,e,n,a,r){const i=dt(k(e,h.Currency),A(e,y.MinusSign));return i.minFrac=V(a),i.maxFrac=i.minFrac,st(t,i,e,y.CurrencyGroup,y.CurrencyDecimal,r).replace("¤",n).replace("¤","")}function ut(t,e,n){return st(t,dt(k(e,h.Percent),A(e,y.MinusSign)),e,y.Group,y.Decimal,n,!0).replace(new RegExp("%","g"),A(e,y.PercentSign))}function lt(t,e,n){return st(t,dt(k(e,h.Decimal),A(e,y.MinusSign)),e,y.Group,y.Decimal,n)}function dt(t,e="-"){const n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},a=t.split(";"),r=a[0],i=a[1],s=-1!==r.indexOf(".")?r.split("."):[r.substring(0,r.lastIndexOf("0")+1),r.substring(r.lastIndexOf("0")+1)],o=s[0],u=s[1]||"";n.posPre=o.substr(0,o.indexOf("#"));for(let d=0;d<u.length;d++){const t=u.charAt(d);"0"===t?n.minFrac=n.maxFrac=d+1:"#"===t?n.maxFrac=d+1:n.posSuf+=t}const l=o.split(",");if(n.gSize=l[1]?l[1].length:0,n.lgSize=l[2]||l[1]?(l[2]||l[1]).length:0,i){const t=r.length-n.posPre.length-n.posSuf.length,e=i.indexOf("#");n.negPre=i.substr(0,e).replace(/'/g,""),n.negSuf=i.substr(e+t).replace(/'/g,"")}else n.negPre=e+n.posPre,n.negSuf=n.posSuf;return n}function ct(t){const e=parseInt(t);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}const ft=new a.InjectionToken("UseV4Plurals");class ht{}function gt(t,e,n,a){let r=`=${t}`;if(e.indexOf(r)>-1)return r;if(r=n.getPluralCategory(t,a),e.indexOf(r)>-1)return r;if(e.indexOf("other")>-1)return"other";throw new Error(`No plural message found for value "${t}"`)}class pt extends ht{constructor(t,e){super(),this.locale=t,this.deprecatedPluralFn=e}getPluralCategory(t,e){switch(this.deprecatedPluralFn?this.deprecatedPluralFn(e||this.locale,t):D(e||this.locale)(t)){case g.Zero:return"zero";case g.One:return"one";case g.Two:return"two";case g.Few:return"few";case g.Many:return"many";default:return"other"}}}function bt(t,e){"string"==typeof e&&(e=parseInt(e,10));const n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,s=parseInt(a,10),o=parseInt(n.toString().replace(/^[^.]*\.?|0+$/g,""),10)||0;switch(t.split("-")[0].toLowerCase()){case"af":case"asa":case"az":case"bem":case"bez":case"bg":case"brx":case"ce":case"cgg":case"chr":case"ckb":case"ee":case"el":case"eo":case"es":case"eu":case"fo":case"fur":case"gsw":case"ha":case"haw":case"hu":case"jgo":case"jmc":case"ka":case"kk":case"kkj":case"kl":case"ks":case"ksb":case"ky":case"lb":case"lg":case"mas":case"mgo":case"ml":case"mn":case"nb":case"nd":case"ne":case"nn":case"nnh":case"nyn":case"om":case"or":case"os":case"ps":case"rm":case"rof":case"rwk":case"saq":case"seh":case"sn":case"so":case"sq":case"ta":case"te":case"teo":case"tk":case"tr":case"ug":case"uz":case"vo":case"vun":case"wae":case"xog":return 1===n?g.One:g.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?g.One:g.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?g.One:g.Other;case"ar":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?g.Many:g.Other;case"ast":case"ca":case"de":case"en":case"et":case"fi":case"fy":case"gl":case"it":case"nl":case"sv":case"sw":case"ur":case"yi":return 1===r&&0===i?g.One:g.Other;case"be":return n%10==1&&n%100!=11?g.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?g.Few:n%10==0||n%10===Math.floor(n%10)&&n%10>=5&&n%10<=9||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=14?g.Many:g.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?g.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?g.Two:n%10===Math.floor(n%10)&&(n%10>=3&&n%10<=4||n%10==9)&&!(n%100>=10&&n%100<=19||n%100>=70&&n%100<=79||n%100>=90&&n%100<=99)?g.Few:0!==n&&n%1e6==0?g.Many:g.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||s%10==1&&s%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||s%10===Math.floor(s%10)&&s%10>=2&&s%10<=4&&!(s%100>=12&&s%100<=14)?g.Few:g.Other;case"cs":case"sk":return 1===r&&0===i?g.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?g.Few:0!==i?g.Many:g.Other;case"cy":return 0===n?g.Zero:1===n?g.One:2===n?g.Two:3===n?g.Few:6===n?g.Many:g.Other;case"da":return 1===n||0!==o&&(0===r||1===r)?g.One:g.Other;case"dsb":case"hsb":return 0===i&&r%100==1||s%100==1?g.One:0===i&&r%100==2||s%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||s%100===Math.floor(s%100)&&s%100>=3&&s%100<=4?g.Few:g.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?g.One:g.Other;case"fil":return 0===i&&(1===r||2===r||3===r)||0===i&&r%10!=4&&r%10!=6&&r%10!=9||0!==i&&s%10!=4&&s%10!=6&&s%10!=9?g.One:g.Other;case"ga":return 1===n?g.One:2===n?g.Two:n===Math.floor(n)&&n>=3&&n<=6?g.Few:n===Math.floor(n)&&n>=7&&n<=10?g.Many:g.Other;case"gd":return 1===n||11===n?g.One:2===n||12===n?g.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?g.Few:g.Other;case"gv":return 0===i&&r%10==1?g.One:0===i&&r%10==2?g.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?g.Many:g.Other:g.Few;case"he":return 1===r&&0===i?g.One:2===r&&0===i?g.Two:0!==i||n>=0&&n<=10||n%10!=0?g.Other:g.Many;case"is":return 0===o&&r%10==1&&r%100!=11||0!==o?g.One:g.Other;case"ksh":return 0===n?g.Zero:1===n?g.One:g.Other;case"kw":case"naq":case"se":case"smn":return 1===n?g.One:2===n?g.Two:g.Other;case"lag":return 0===n?g.Zero:0!==r&&1!==r||0===n?g.Other:g.One;case"lt":return n%10!=1||n%100>=11&&n%100<=19?n%10===Math.floor(n%10)&&n%10>=2&&n%10<=9&&!(n%100>=11&&n%100<=19)?g.Few:0!==s?g.Many:g.Other:g.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&s%100===Math.floor(s%100)&&s%100>=11&&s%100<=19?g.Zero:n%10==1&&n%100!=11||2===i&&s%10==1&&s%100!=11||2!==i&&s%10==1?g.One:g.Other;case"mk":return 0===i&&r%10==1||s%10==1?g.One:g.Other;case"mt":return 1===n?g.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?g.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?g.Many:g.Other;case"pl":return 1===r&&0===i?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&1!==r&&r%10===Math.floor(r%10)&&r%10>=0&&r%10<=1||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=12&&r%100<=14?g.Many:g.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?g.One:g.Other;case"ro":return 1===r&&0===i?g.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?g.Few:g.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?g.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?g.Few:0===i&&r%10==0||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=11&&r%100<=14?g.Many:g.Other;case"shi":return 0===r||1===n?g.One:n===Math.floor(n)&&n>=2&&n<=10?g.Few:g.Other;case"si":return 0===n||1===n||0===r&&1===s?g.One:g.Other;case"sl":return 0===i&&r%100==1?g.One:0===i&&r%100==2?g.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?g.Few:g.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?g.One:g.Other;default:return g.Other}}function mt(t,e,n){"string"!=typeof e&&(n=e,e=t[a["ɵLocaleDataIndex"].LocaleId]),e=e.toLowerCase().replace(/_/g,"-"),a["ɵLOCALE_DATA"][e]=t,n&&(a["ɵLOCALE_DATA"][e][a["ɵLocaleDataIndex"].ExtraData]=n)}function yt(t,e){e=encodeURIComponent(e);for(const n of t.split(";")){const t=n.indexOf("="),[a,r]=-1==t?[n,""]:[n.slice(0,t),n.slice(t+1)];if(a.trim()===e)return decodeURIComponent(r)}return null}class vt{constructor(t,e){this._name=t,this._options=e,this.value=null,this._lastSetValue=null,this._lastSetValueType=0,this._lastSetValueIdentityChange=!1}setValue(t){if(Array.isArray(t))this._lastSetValueType=4;else if(t instanceof Set)this._lastSetValueType=8;else if(t&&"string"==typeof t){if(!(4&this._options))throw new Error(this._name+" string values are not allowed");this._lastSetValueType=1}else this._lastSetValueType=t?2:0;this._lastSetValueIdentityChange=!0,this._lastSetValue=t||null}hasValueChanged(){let t=this._lastSetValueIdentityChange;if(!(t||14&this._lastSetValueType))return!1;let e=null;const n=!!(1&this._options),a=!!(8&this._options),r=!!(2&this._options);switch(this._lastSetValueType){case 1:const i=this._lastSetValue.split(/\s+/g);16&this._options?(e={},i.forEach((t,n)=>e[t]=!0)):e=i.reduce((t,e,n)=>t+(n?" ":"")+e);break;case 2:const s=this._lastSetValue,o=Object.keys(s);t||(t=!this.value||function(t,e,n){const a=t;if(!wt(Object.keys(e),a))return!0;for(let r=0;r<a.length;r++){const t=a[r];if(e[t]!==n[t])return!0}return!1}(o,this.value,s)),t&&(e=xt(this._name,n,a,r,s,o));break;case 4:case 8:const u=Array.from(this._lastSetValue);t||(t=!wt(Object.keys(this.value),u)),t&&(e=xt(this._name,n,a,r,u));break;default:e=null}return t&&(this.value=e),t}}function xt(t,e,n,a,r,i){const s={};if(i)for(let o=0;o<i.length;o++){let t=i[o];t=e?t.trim():t,Tt(s,t,r[t],n,a)}else for(let o=0;o<r.length;o++){let n=r[o];_t(t,n),n=e?n.trim():n,Tt(s,n,!0,!1,a)}return s}function _t(t,e){if("string"!=typeof e)throw new Error(`${t} can only toggle CSS classes expressed as strings, got ${e}`)}function Tt(t,e,n,a,r){if(r&&e.indexOf(" ")>0){const r=e.split(/\s+/g);for(let e=0;e<r.length;e++)Ot(t,r[e],n,a)}else Ot(t,e,n,a)}function Ot(t,e,n,a){if(a){const t=function(t,e){const n=t.indexOf(".");if(n>0){const a=t.substr(n+1);t=t.substring(0,n),null!=e&&(e+=a)}return{key:t,value:e}}(e,n);n=t.value,e=t.key}t[e]=n}function wt(t,e){if(t&&e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(-1===e.indexOf(t[n]))return!1;return!0}return!1}class St{}class It{constructor(t,e,n,a){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=a,this._initialClasses=[]}getValue(){return null}setClass(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}setNgClass(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(Object(a["ɵisListLikeIterable"])(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}applyChanges(){if(this._iterableDiffer){const t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){const t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}}_applyKeyValueChanges(t){t.forEachAddedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachChangedItem(t=>this._toggleClass(t.key,t.currentValue)),t.forEachRemovedItem(t=>{t.previousValue&&this._toggleClass(t.key,!1)})}_applyIterableChanges(t){t.forEachAddedItem(t=>{if("string"!=typeof t.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${Object(a["ɵstringify"])(t.item)}`);this._toggleClass(t.item,!0)}),t.forEachRemovedItem(t=>this._toggleClass(t.item,!1))}_applyClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!0)):Object.keys(t).forEach(e=>this._toggleClass(e,!!t[e])))}_removeClasses(t){t&&(Array.isArray(t)||t instanceof Set?t.forEach(t=>this._toggleClass(t,!1)):Object.keys(t).forEach(t=>this._toggleClass(t,!1)))}_toggleClass(t,e){(t=t.trim())&&t.split(/\s+/g).forEach(t=>{e?this._renderer.addClass(this._ngEl.nativeElement,t):this._renderer.removeClass(this._ngEl.nativeElement,t)})}}class Nt{constructor(){this._value=null,this._ngClassDiffer=new vt("NgClass",23),this._classStringDiffer=null}getValue(){return this._value}setClass(t){(t||this._classStringDiffer)&&(this._classStringDiffer=this._classStringDiffer||new vt("class",20),this._classStringDiffer.setValue(t))}setNgClass(t){this._ngClassDiffer.setValue(t)}applyChanges(){const t=!!this._classStringDiffer&&this._classStringDiffer.hasValueChanged(),e=this._ngClassDiffer.hasValueChanged();if(t||e){let t=this._ngClassDiffer.value;if(this._classStringDiffer){let e=this._classStringDiffer.value;e&&(t=t?Object.assign({},e,t):e)}this._value=t}}}const Ct={provide:St,useClass:It},Rt={provide:St,useClass:Nt},At=Ct,kt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&(Object(a["ɵɵallocHostVars"])(1),Object(a["ɵɵstyling"])()),2&t&&(Object(a["ɵɵclassMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let Et=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class Lt extends Et{constructor(t){super(t)}set klass(t){this._delegate.setClass(t)}set ngClass(t){this._delegate.setNgClass(t)}ngDoCheck(){this._delegate.applyChanges()}}class Dt{constructor(t){this._viewContainerRef=t,this._componentRef=null,this._moduleRef=null}ngOnChanges(t){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){const e=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(t.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){const t=e.get(a.NgModuleRef);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(t.injector)}else this._moduleRef=null;const n=(this._moduleRef?this._moduleRef.componentFactoryResolver:e.get(a.ComponentFactoryResolver)).resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(n,this._viewContainerRef.length,e,this.ngComponentOutletContent)}}ngOnDestroy(){this._moduleRef&&this._moduleRef.destroy()}}class Pt{constructor(t,e,n,a){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=a}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}}class Mt{constructor(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOfDirty=!0,this._differ=null}set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){Object(a.isDevMode)()&&null!=t&&"function"!=typeof t&&console&&console.warn&&console.warn(`trackBy must be a function, but received ${JSON.stringify(t)}. `+"See https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html#!#change-propagation for more information."),this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const n=this._ngForOf;if(!this._differ&&n)try{this._differ=this._differs.find(n).create(this.ngForTrackBy)}catch(e){throw new Error(`Cannot find a differ supporting object '${n}' of type '${t=n,t.name||typeof t}'. NgFor only supports binding to Iterables such as Arrays.`)}}var t;if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const e=[];t.forEachOperation((t,n,a)=>{if(null==t.previousIndex){const n=this._viewContainer.createEmbeddedView(this._template,new Pt(null,this._ngForOf,-1,-1),null===a?void 0:a),r=new qt(t,n);e.push(r)}else if(null==a)this._viewContainer.remove(null===n?void 0:n);else if(null!==n){const r=this._viewContainer.get(n);this._viewContainer.move(r,a);const i=new qt(t,r);e.push(i)}});for(let n=0;n<e.length;n++)this._perViewChange(e[n].view,e[n].record);for(let n=0,a=this._viewContainer.length;n<a;n++){const t=this._viewContainer.get(n);t.context.index=n,t.context.count=a,t.context.ngForOf=this._ngForOf}t.forEachIdentityChange(t=>{this._viewContainer.get(t.currentIndex).context.$implicit=t.item})}_perViewChange(t,e){t.context.$implicit=e.item}static ngTemplateContextGuard(t,e){return!0}}class qt{constructor(t,e){this.record=t,this.view=e}}class jt{constructor(t,e){this._viewContainer=t,this._context=new Ft,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){Gt("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){Gt("ngIfElse",t),this._elseTemplateRef=t,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)))}}class Ft{constructor(){this.$implicit=null,this.ngIf=null}}function Gt(t,e){if(e&&!e.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${Object(a["ɵstringify"])(e)}'.`)}class Vt{constructor(t,e){this._viewContainerRef=t,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(t){t&&!this._created?this.create():!t&&this._created&&this.destroy()}}class zt{constructor(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(t){this._ngSwitch=t,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(t){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(t)}_matchCase(t){const e=t==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||e,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),e}_updateDefaultCases(t){if(this._defaultViews&&t!==this._defaultUsed){this._defaultUsed=t;for(let e=0;e<this._defaultViews.length;e++)this._defaultViews[e].enforceState(t)}}}class Bt{constructor(t,e,n){this.ngSwitch=n,n._addCase(),this._view=new Vt(t,e)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}class Yt{constructor(t,e,n){n._addDefault(new Vt(t,e))}}class Ht{constructor(t){this._localization=t,this._caseViews={}}set ngPlural(t){this._switchValue=t,this._updateView()}addCase(t,e){this._caseViews[t]=e}_updateView(){this._clearViews();const t=Object.keys(this._caseViews),e=gt(this._switchValue,t,this._localization);this._activateView(this._caseViews[e])}_clearViews(){this._activeView&&this._activeView.destroy()}_activateView(t){t&&(this._activeView=t,this._activeView.create())}}class Ut{constructor(t,e,n,a){this.value=t;const r=!isNaN(Number(t));a.addCase(r?`=${t}`:t,new Vt(n,e))}}class Wt{}class Kt{constructor(t,e,n){this._ngEl=t,this._differs=e,this._renderer=n}getValue(){return null}setNgStyle(t){this._ngStyle=t,!this._differ&&t&&(this._differ=this._differs.find(t).create())}applyChanges(){if(this._differ){const t=this._differ.diff(this._ngStyle);t&&this._applyChanges(t)}}_applyChanges(t){t.forEachRemovedItem(t=>this._setStyle(t.key,null)),t.forEachAddedItem(t=>this._setStyle(t.key,t.currentValue)),t.forEachChangedItem(t=>this._setStyle(t.key,t.currentValue))}_setStyle(t,e){const[n,a]=t.split(".");null!=(e=null!=e&&a?`${e}${a}`:e)?this._renderer.setStyle(this._ngEl.nativeElement,n,e):this._renderer.removeStyle(this._ngEl.nativeElement,n)}}class $t{constructor(){this._differ=new vt("NgStyle",8),this._value=null}getValue(){return this._value}setNgStyle(t){this._differ.setValue(t)}applyChanges(){this._differ.hasValueChanged()&&(this._value=this._differ.value)}}const Zt={provide:Wt,useClass:Kt},Jt={provide:Wt,useClass:$t},Qt=Zt,Xt=Object(a["ɵɵdefineDirective"])({type:function(){},selectors:null,factory:()=>{},hostBindings:function(t,e,n){1&t&&Object(a["ɵɵstyling"])(),2&t&&(Object(a["ɵɵstyleMap"])(e.getValue()),Object(a["ɵɵstylingApply"])())}});let te=(()=>{class t{constructor(t){this._delegate=t}getValue(){return this._delegate.getValue()}}return t.ngDirectiveDef=void 0,t})();class ee extends te{constructor(t){super(t)}set ngStyle(t){this._delegate.setNgStyle(t)}ngDoCheck(){this._delegate.applyChanges()}}class ne{constructor(t){this._viewContainerRef=t,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null}ngOnChanges(t){this._shouldRecreateView(t)?(this._viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._viewRef)),this.ngTemplateOutlet&&(this._viewRef=this._viewContainerRef.createEmbeddedView(this.ngTemplateOutlet,this.ngTemplateOutletContext))):this._viewRef&&this.ngTemplateOutletContext&&this._updateExistingContext(this.ngTemplateOutletContext)}_shouldRecreateView(t){const e=t.ngTemplateOutletContext;return!!t.ngTemplateOutlet||e&&this._hasContextShapeChanged(e)}_hasContextShapeChanged(t){const e=Object.keys(t.previousValue||{}),n=Object.keys(t.currentValue||{});if(e.length===n.length){for(let t of n)if(-1===e.indexOf(t))return!0;return!1}return!0}_updateExistingContext(t){for(let e of Object.keys(t))this._viewRef.context[e]=this.ngTemplateOutletContext[e]}}const ae=[Lt,Dt,Mt,jt,ne,ee,zt,Bt,Yt,Ht,Ut];function re(t,e){return Error(`InvalidPipeArgument: '${e}' for pipe '${Object(a["ɵstringify"])(t)}'`)}const ie=/((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/,se={yMMMdjms:me(be([ge("year",1),pe("month",3),ge("day",1),ge("hour",1),ge("minute",1),ge("second",1)])),yMdjm:me(be([ge("year",1),ge("month",1),ge("day",1),ge("hour",1),ge("minute",1)])),yMMMMEEEEd:me(be([ge("year",1),pe("month",4),pe("weekday",4),ge("day",1)])),yMMMMd:me(be([ge("year",1),pe("month",4),ge("day",1)])),yMMMd:me(be([ge("year",1),pe("month",3),ge("day",1)])),yMd:me(be([ge("year",1),ge("month",1),ge("day",1)])),jms:me(be([ge("hour",1),ge("second",1),ge("minute",1)])),jm:me(be([ge("hour",1),ge("minute",1)]))},oe={yyyy:me(ge("year",4)),yy:me(ge("year",2)),y:me(ge("year",1)),MMMM:me(pe("month",4)),MMM:me(pe("month",3)),MM:me(ge("month",2)),M:me(ge("month",1)),LLLL:me(pe("month",4)),L:me(pe("month",1)),dd:me(ge("day",2)),d:me(ge("day",1)),HH:ue(de(me(he(ge("hour",2),!1)))),H:de(me(he(ge("hour",1),!1))),hh:ue(de(me(he(ge("hour",2),!0)))),h:de(me(he(ge("hour",1),!0))),jj:me(ge("hour",2)),j:me(ge("hour",1)),mm:ue(me(ge("minute",2))),m:me(ge("minute",1)),ss:ue(me(ge("second",2))),s:me(ge("second",1)),sss:me(ge("second",3)),EEEE:me(pe("weekday",4)),EEE:me(pe("weekday",3)),EE:me(pe("weekday",2)),E:me(pe("weekday",1)),a:le(me(he(ge("hour",1),!0))),Z:fe("short"),z:fe("long"),ww:me({}),w:me({}),G:me(pe("era",1)),GG:me(pe("era",2)),GGG:me(pe("era",3)),GGGG:me(pe("era",4))};function ue(t){return function(e,n){const a=t(e,n);return 1==a.length?"0"+a:a}}function le(t){return function(e,n){return t(e,n).split(" ")[1]}}function de(t){return function(e,n){return t(e,n).split(" ")[0]}}function ce(t,e,n){return new Intl.DateTimeFormat(e,n).format(t).replace(/[\u200e\u200f]/g,"")}function fe(t){const e={hour:"2-digit",hour12:!1,timeZoneName:t};return function(t,n){const a=ce(t,n,e);return a?a.substring(3):""}}function he(t,e){return t.hour12=e,t}function ge(t,e){const n={};return n[t]=2===e?"2-digit":"numeric",n}function pe(t,e){const n={};return n[t]=e<4?e>1?"short":"narrow":"long",n}function be(t){return t.reduce((t,e)=>Object.assign({},t,e),{})}function me(t){return(e,n)=>ce(e,n,t)}const ye=new Map;let ve=(()=>{class t{constructor(t){this._locale=t}transform(e,n="mediumDate"){if(null==e||""===e||e!=e)return null;let a;if("string"==typeof e&&(e=e.trim()),xe(e))a=e;else if(isNaN(e-parseFloat(e)))if("string"==typeof e&&/^(\d{4}-\d{1,2}-\d{1,2})$/.test(e)){const[t,n,r]=e.split("-").map(t=>parseInt(t,10));a=new Date(t,n-1,r)}else a=new Date(e);else a=new Date(parseFloat(e));if(!xe(a)){let n;if("string"!=typeof e||!(n=e.match(z)))throw re(t,e);a=at(n)}return class{static format(t,e,n){return function(t,e,n){const a=se[t];if(a)return a(e,n);const r=t;let i=ye.get(r);if(!i){let e;i=[],ie.exec(t);let n=t;for(;n;)e=ie.exec(n),e?(i=i.concat(e.slice(1)),n=i.pop()):(i.push(n),n=null);ye.set(r,i)}return i.reduce((t,a)=>{const r=oe[a];return t+(r?r(e,n):function(t){return"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}(a))},"")}(n,t,e)}}.format(a,this._locale,t._ALIASES[n]||n)}}return t._ALIASES={medium:"yMMMdjms",short:"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},t})();function xe(t){return t instanceof Date&&!isNaN(t.valueOf())}function _e(t,e,n,a,r,i=null,s=!1){if(null==n)return null;if("number"!=typeof(n="string"!=typeof n||isNaN(+n-parseFloat(n))?n:+n))throw re(t,n);let o,u,l;if(a!==h.Currency&&(o=1,u=0,l=3),r){const t=r.match(it);if(null===t)throw new Error(`${r} is not a valid digit info for number pipes`);null!=t[1]&&(o=ct(t[1])),null!=t[3]&&(u=ct(t[3])),null!=t[5]&&(l=ct(t[5]))}return class{static format(t,e,n,a={}){const{minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,currency:o,currencyAsSymbol:u=!1}=a,l={minimumIntegerDigits:r,minimumFractionDigits:i,maximumFractionDigits:s,style:h[n].toLowerCase()};return n==h.Currency&&(l.currency="string"==typeof o?o:void 0,l.currencyDisplay=u?"symbol":"code"),new Intl.NumberFormat(e,l).format(t)}}.format(n,e,a,{minimumIntegerDigits:o,minimumFractionDigits:u,maximumFractionDigits:l,currency:i,currencyAsSymbol:s})}class Te{constructor(t){this._locale=t}transform(t,e){return _e(Te,this._locale,t,h.Decimal,e)}}class Oe{constructor(t){this._locale=t}transform(t,e){return _e(Oe,this._locale,t,h.Percent,e)}}class we{constructor(t){this._locale=t}transform(t,e="USD",n=!1,a){return _e(we,this._locale,t,h.Currency,a,e,n)}}const Se=[Te,Oe,we,ve];class Ie{createSubscription(t,e){return t.subscribe({next:e,error:t=>{throw t}})}dispose(t){t.unsubscribe()}onDestroy(t){t.unsubscribe()}}class Ne{createSubscription(t,e){return t.then(e,t=>{throw t})}dispose(t){}onDestroy(t){}}const Ce=new Ne,Re=new Ie;class Ae{constructor(t){this._ref=t,this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null}ngOnDestroy(){this._subscription&&this._dispose()}transform(t){return this._obj?t!==this._obj?(this._dispose(),this.transform(t)):Object(a["ɵlooseIdentical"])(this._latestValue,this._latestReturnedValue)?this._latestReturnedValue:(this._latestReturnedValue=this._latestValue,a.WrappedValue.wrap(this._latestValue)):(t&&this._subscribe(t),this._latestReturnedValue=this._latestValue,this._latestValue)}_subscribe(t){this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,e=>this._updateLatestValue(t,e))}_selectStrategy(t){if(Object(a["ɵisPromise"])(t))return Ce;if(Object(a["ɵisObservable"])(t))return Re;throw re(Ae,t)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null}_updateLatestValue(t,e){t===this._obj&&(this._latestValue=e,this._ref.markForCheck())}}class ke{transform(t){if(!t)return t;if("string"!=typeof t)throw re(ke,t);return t.toLowerCase()}}const Ee=/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D])\S*/g;class Le{transform(t){if(!t)return t;if("string"!=typeof t)throw re(Le,t);return t.replace(Ee,t=>t[0].toUpperCase()+t.substr(1).toLowerCase())}}class De{transform(t){if(!t)return t;if("string"!=typeof t)throw re(De,t);return t.toUpperCase()}}class Pe{constructor(t){this.locale=t}transform(t,e="mediumDate",n,a){if(null==t||""===t||t!=t)return null;try{return K(t,e,a||this.locale,n)}catch(r){throw re(Pe,r.message)}}}const Me=/#/g;class qe{constructor(t){this._localization=t}transform(t,e,n){if(null==t)return"";if("object"!=typeof e||null===e)throw re(qe,e);return e[gt(t,Object.keys(e),this._localization,n)].replace(Me,t.toString())}}class je{transform(t,e){if(null==t)return"";if("object"!=typeof e||"string"!=typeof t)throw re(je,e);return e.hasOwnProperty(t)?e[t]:e.hasOwnProperty("other")?e.other:""}}class Fe{transform(t){return JSON.stringify(t,null,2)}}class Ge{constructor(t){this.differs=t,this.keyValues=[]}transform(t,e=Ve){if(!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());const n=this.differ.diff(t);return n&&(this.keyValues=[],n.forEachItem(t=>{this.keyValues.push({key:t.key,value:t.currentValue})}),this.keyValues.sort(e)),this.keyValues}}function Ve(t,e){const n=t.key,a=e.key;if(n===a)return 0;if(void 0===n)return 1;if(void 0===a)return-1;if(null===n)return 1;if(null===a)return-1;if("string"==typeof n&&"string"==typeof a)return n<a?-1:1;if("number"==typeof n&&"number"==typeof a)return n-a;if("boolean"==typeof n&&"boolean"==typeof a)return n<a?-1:1;const r=String(n),i=String(a);return r==i?0:r<i?-1:1}class ze{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return lt(Ue(t),n,e)}catch(a){throw re(ze,a.message)}}}class Be{constructor(t){this._locale=t}transform(t,e,n){if(He(t))return null;n=n||this._locale;try{return ut(Ue(t),n,e)}catch(a){throw re(Be,a.message)}}}class Ye{constructor(t){this._locale=t}transform(t,e,n="symbol",a,r){if(He(t))return null;r=r||this._locale,"boolean"==typeof n&&(console&&console.warn&&console.warn('Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".'),n=n?"symbol":"code");let i=e||"USD";"code"!==n&&(i="symbol"===n||"symbol-narrow"===n?G(i,"symbol"===n?"wide":"narrow",r):n);try{return ot(Ue(t),r,i,e,a)}catch(s){throw re(Ye,s.message)}}}function He(t){return null==t||""===t||t!=t}function Ue(t){if("string"==typeof t&&!isNaN(Number(t)-parseFloat(t)))return Number(t);if("number"!=typeof t)throw new Error(`${t} is not a number`);return t}class We{transform(t,e,n){if(null==t)return t;if(!this.supports(t))throw re(We,t);return t.slice(e,n)}supports(t){return"string"==typeof t||Array.isArray(t)}}const Ke=[Ae,De,ke,Fe,We,ze,Be,Le,Ye,Pe,qe,je,Ge];class $e{}class Ze{}const Je=new a.InjectionToken("DocumentToken"),Qe="browser",Xe="server",tn="browserWorkerApp",en="browserWorkerUi";function nn(t){return t===Qe}function an(t){return t===Xe}function rn(t){return t===tn}function sn(t){return t===en}const on=new a.Version("8.2.14");let un=(()=>{class t{}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({token:t,providedIn:"root",factory:()=>new ln(Object(a["ɵɵinject"])(Je),window,Object(a["ɵɵinject"])(a.ErrorHandler))}),t})();class ln{constructor(t,e,n){this.document=t,this.window=e,this.errorHandler=n,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]}scrollToPosition(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){if(this.supportScrollRestoration()){t=this.window.CSS&&this.window.CSS.escape?this.window.CSS.escape(t):t.replace(/(\"|\'\ |:|\.|\[|\]|,|=)/g,"\\$1");try{const e=this.document.querySelector(`#${t}`);if(e)return void this.scrollToElement(e);const n=this.document.querySelector(`[name='${t}']`);if(n)return void this.scrollToElement(n)}catch(e){this.errorHandler.handleError(e)}}}setHistoryScrollRestoration(t){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}}scrollToElement(t){const e=t.getBoundingClientRect(),n=e.left+this.window.pageXOffset,a=e.top+this.window.pageYOffset,r=this.offset();this.window.scrollTo(n-r[0],a-r[1])}supportScrollRestoration(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}}}class dn{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}}},SatO:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},SeVD:function(t,e,n){"use strict";var a=n("ngJS"),r=n("NJ4a"),i=n("Lhse"),s=n("kJWO"),o=n("I55L"),u=n("c2HN"),l=n("XoHu");n.d(e,"a",(function(){return d}));const d=t=>{if(t&&"function"==typeof t[s.a])return d=t,t=>{const e=d[s.a]();if("function"!=typeof e.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return e.subscribe(t)};if(Object(o.a)(t))return Object(a.a)(t);if(Object(u.a)(t))return n=t,t=>(n.then(e=>{t.closed||(t.next(e),t.complete())},e=>t.error(e)).then(null,r.a),t);if(t&&"function"==typeof t[i.a])return e=t,t=>{const n=e[i.a]();for(;;){const e=n.next();if(e.done){t.complete();break}if(t.next(e.value),t.closed)break}return"function"==typeof n.return&&t.add(()=>{n.return&&n.return()}),t};{const e=Object(l.a)(t)?"an invalid object":`'${t}'`;throw new TypeError(`You provided ${e} where a stream was expected.`+" You can provide an Observable, Promise, Array, or Iterable.")}var e,n,d}},SfRM:function(t,e,n){var a=n("YESw");t.exports=function(){this.__data__=a?a(null):{},this.size=0}},SgmB:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("IheW"),r=n("LRne"),i=n("5+tZ"),s=n("8Y7J"),o=n("pL04");let u=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("api/role")}delete(t){return this.http.delete(`api/role/${t}`)}get(t){return this.http.get(`api/role/${t}`)}create(t){return this.http.post("api/role",t)}clone(t,e){let n=new a.h;return n=n.append("new_name",e),this.http.post(`api/role/${t}/clone`,null,{params:n})}update(t){return this.http.put(`api/role/${t.name}`,t)}exists(t){return this.list().pipe(Object(i.a)(e=>{const n=e.some(e=>e.name===t);return Object(r.a)(n)}))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](a.c))},token:t,providedIn:o.a}),t})()},SpAZ:function(t,e,n){"use strict";function a(t){return t}n.d(e,"a",(function(){return a}))},SxV6:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("sVev"),r=n("pLZG"),i=n("IzEk"),s=n("xbPD"),o=n("XDbj"),u=n("SpAZ");function l(t,e){const n=arguments.length>=2;return l=>l.pipe(t?Object(r.a)((e,n)=>t(e,n,l)):u.a,Object(i.a)(1),n?Object(s.a)(e):Object(o.a)(()=>new a.a))}},Sxd8:function(t,e,n){var a=n("ZCgT");t.exports=function(t){var e=a(t),n=e%1;return e==e?n?e-n:e:0}},T1AV:function(t,e,n){var a=n("t2Dn"),r=n("5Tg0"),i=n("yP5f"),s=n("Q1l4"),o=n("+iFO"),u=n("03A+"),l=n("Z0cm"),d=n("3L66"),c=n("DSRE"),f=n("lSCD"),h=n("GoyQ"),g=n("YO3V"),p=n("c6wG"),b=n("itsj"),m=n("jeLo");t.exports=function(t,e,n,y,v,x,_){var T=b(t,n),O=b(e,n),w=_.get(O);if(w)a(t,n,w);else{var S=x?x(T,O,n+"",t,e,_):void 0,I=void 0===S;if(I){var N=l(O),C=!N&&c(O),R=!N&&!C&&p(O);S=O,N||C||R?l(T)?S=T:d(T)?S=s(T):C?(I=!1,S=r(O,!0)):R?(I=!1,S=i(O,!0)):S=[]:g(O)||u(O)?(S=T,u(T)?S=m(T):h(T)&&!f(T)||(S=o(O))):I=!1}I&&(_.set(O,S),v(S,O,y,x,_),_.delete(O)),a(t,n,S)}}},TJUb:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e){return a.isPlainObject(e)?a.get(e,t,t):t}}},TNUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"TreeNode, tree-node",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        *ngIf="!templates.treeNodeFullTemplate"\n        [class]="node.getClass()"\n        [class.tree-node]="true"\n        [class.tree-node-expanded]="node.isExpanded && node.hasChildren"\n        [class.tree-node-collapsed]="node.isCollapsed && node.hasChildren"\n        [class.tree-node-leaf]="node.isLeaf"\n        [class.tree-node-active]="node.isActive"\n        [class.tree-node-focused]="node.isFocused"\n      >\n        <tree-node-drop-slot\n          *ngIf="index === 0"\n          [dropIndex]="node.index"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n\n        <tree-node-wrapper\n          [node]="node"\n          [index]="index"\n          [templates]="templates"\n        ></tree-node-wrapper>\n\n        <tree-node-children\n          [node]="node"\n          [templates]="templates"\n        ></tree-node-children>\n        <tree-node-drop-slot\n          [dropIndex]="node.index + 1"\n          [node]="node.parent"\n        ></tree-node-drop-slot>\n      </div>\n      <ng-container\n        [ngTemplateOutlet]="templates.treeNodeFullTemplate"\n        [ngTemplateOutletContext]="{\n          $implicit: node,\n          node: node,\n          index: index,\n          templates: templates\n        }"\n      >\n      </ng-container>\n    </ng-container>\n  '})],t)}()},TWQb:function(t,e,n){var a=n("/GqU"),r=n("UMSQ"),i=n("I8vh"),s=function(t){return function(e,n,s){var o,u=a(e),l=r(u.length),d=i(s,l);if(t&&n!=n){for(;l>d;)if((o=u[d++])!=o)return!0}else for(;l>d;d++)if((t||d in u)&&u[d]===n)return t||d||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},TYy9:function(t,e,n){var a=n("XGnz");t.exports=function(t){return null!=t&&t.length?a(t,1):[]}},TYzs:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){const e=parseInt(t,10);return isNaN(e)?t:t+(1===Math.floor(e/10)?"th":e%10==1?"st":e%10==2?"nd":e%10==3?"rd":"th")}}},TeQF:function(t,e,n){"use strict";var a=n("I+eb"),r=n("tycR").filter,i=n("Hd5f"),s=n("rkAj"),o=i("filter"),u=s("filter");a({target:"Array",proto:!0,forced:!o||!u},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},UB5X:function(t,e,n){var a=n("NykK"),r=n("ExA7");t.exports=function(t){return"number"==typeof t||r(t)&&"[object Number]"==a(t)}},UDhR:function(t,e,n){!function(t){"use strict";t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},UMSQ:function(t,e,n){var a=n("ppGB"),r=Math.min;t.exports=function(t){return t>0?r(a(t),9007199254740991):0}},"UNi/":function(t,e){t.exports=function(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}},USCx:function(t,e,n){!function(t){"use strict";t.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},UTVS:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},UfWW:function(t,e,n){var a=n("KwMD"),r=n("ut/Y"),i=n("Sxd8"),s=Math.max;t.exports=function(t,e,n){var o=null==t?0:t.length;if(!o)return-1;var u=null==n?0:i(n);return u<0&&(u=s(o+u,0)),a(t,r(e,3),u)}},UpQW:function(t,e,n){!function(t){"use strict";var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},Ur1D:function(t,e,n){!function(t){"use strict";t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("wd/R"))},UxlC:function(t,e,n){"use strict";var a=n("14Sl"),r=n("glrk"),i=n("ewvW"),s=n("UMSQ"),o=n("ppGB"),u=n("HYAF"),l=n("iqWW"),d=n("FMNM"),c=Math.max,f=Math.min,h=Math.floor,g=/\$([$&'`]|\d\d?|<[^>]*>)/g,p=/\$([$&'`]|\d\d?)/g;a("replace",2,(function(t,e,n,a){var b=a.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=a.REPLACE_KEEPS_$0,y=b?"$":"$0";return[function(n,a){var r=u(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,r,a):e.call(String(r),n,a)},function(t,a){if(!b&&m||"string"==typeof a&&-1===a.indexOf(y)){var i=n(e,t,this,a);if(i.done)return i.value}var u=r(t),h=String(this),g="function"==typeof a;g||(a=String(a));var p=u.global;if(p){var x=u.unicode;u.lastIndex=0}for(var _=[];;){var T=d(u,h);if(null===T)break;if(_.push(T),!p)break;""===String(T[0])&&(u.lastIndex=l(h,s(u.lastIndex),x))}for(var O,w="",S=0,I=0;I<_.length;I++){T=_[I];for(var N=String(T[0]),C=c(f(o(T.index),h.length),0),R=[],A=1;A<T.length;A++)R.push(void 0===(O=T[A])?O:String(O));var k=T.groups;if(g){var E=[N].concat(R,C,h);void 0!==k&&E.push(k);var L=String(a.apply(void 0,E))}else L=v(N,h,C,R,k,a);C>=S&&(w+=h.slice(S,C)+L,S=C+N.length)}return w+h.slice(S)}];function v(t,n,a,r,s,o){var u=a+t.length,l=r.length,d=p;return void 0!==s&&(s=i(s),d=g),e.call(o,d,(function(e,i){var o;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,a);case"'":return n.slice(u);case"<":o=s[i.slice(1,-1)];break;default:var d=+i;if(0===d)return e;if(d>l){var c=h(d/10);return 0===c?e:c<=l?void 0===r[c-1]?i.charAt(1):r[c-1]+i.charAt(1):e}o=r[d-1]}return void 0===o?"":o}))}}))},"V/fk":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},V2x9:function(t,e,n){!function(t){"use strict";t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},V3my:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("DSvg"),n("SgmB"),n("20UP"),n("Mxhz"),n("OLbh")),o=n("DNAf"),u=(n("sne2"),n("oxzT")),l=n("mtw6"),d=(n("2EZI"),n("1Ni5")),c=n("oMSZ"),f=(n("aexS"),n("9nlD"),n("1nQr"),function(t){return t.editing="editing",t}({}));class h{}n.d(e,"a",(function(){return g}));class g{constructor(t,e,n,a,r,i,s,l,d,c,h,g,p){this.authService=t,this.authStorageService=e,this.route=n,this.router=a,this.modalService=r,this.roleService=i,this.userService=s,this.notificationService=l,this.i18n=d,this.actionLabels=c,this.passwordPolicyService=h,this.formBuilder=g,this.settingsService=p,this.userFormMode=f,this.messages=new o.a({empty:this.i18n("There are no roles.")},this.i18n),this.passwordPolicyHelpText="",this.icons=u.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.resource=this.i18n("user"),this.createForm(),this.messages=new o.a({empty:this.i18n("There are no roles.")},this.i18n)}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({username:["",[a.B.required],[d.a.unique(this.userService.validateUserName,this.userService)]],name:[""],password:["",[],[d.a.passwordPolicy(this.userService,()=>this.userForm.getValue("username"),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=r.defaultTo(n,"")})]],confirmpassword:[""],pwdExpirationDate:[""],email:["",[d.a.email]],roles:[[]],enabled:[!0,[a.B.required]],pwdUpdateRequired:[!0]},{validators:[d.a.match("password","confirmpassword")]})}ngOnInit(){this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.minDate=new Date;const t=[this.roleService.list(),this.settingsService.getStandardSettings()];Object(i.a)(t).subscribe(t=>{if(this.allRoles=r.map(t[0],t=>(t.enabled=!0,t)),this.pwdExpirationSettings=new c.a(t[1]),this.mode===this.userFormMode.editing)this.initEdit();else if(this.pwdExpirationSettings.pwdExpirationSpan>0){const t=this.userForm.get("pwdExpirationDate"),e=new Date;e.setDate(this.minDate.getDate()+this.pwdExpirationSettings.pwdExpirationSpan),t.setValue(e),t.setValidators([a.B.required])}})}initEdit(){this.disableForEdit(),this.route.params.subscribe(t=>{this.userService.get(t.username).subscribe(t=>{this.response=r.cloneDeep(t),this.setResponse(t)})})}disableForEdit(){this.userForm.get("username").disable()}setResponse(t){["username","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>this.userForm.get(e).setValue(t[e]));const e=t.pwdExpirationDate;e&&this.userForm.get("pwdExpirationDate").setValue(new Date(1e3*e))}getRequest(){const t=new h;["username","password","name","email","roles","enabled","pwdUpdateRequired"].forEach(e=>t[e]=this.userForm.get(e).value);const e=this.userForm.get("pwdExpirationDate").value;return e&&(this.mode===this.userFormMode.editing&&this.response.pwdExpirationDate===Number(e)/1e3||e.setHours(23,59,59),t.pwdExpirationDate=Number(e)/1e3),t}createAction(){const t=this.getRequest();this.userService.create(t).subscribe(()=>{this.notificationService.show(l.a.success,this.i18n('Created user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"])},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}editAction(){if(this.isUserRemovingNeededRolePermissions()){const t={titleText:this.i18n("Update user"),buttonText:this.i18n("Continue"),bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:()=>{this.modalRef.hide(),this.doEditAction()},onCancel:()=>{this.userForm.setErrors({cdSubmitButton:!0}),this.userForm.get("roles").reset(this.userForm.get("roles").value)}};this.modalRef=this.modalService.show(s.a,{initialState:t})}else this.doEditAction()}isCurrentUser(){return this.authStorageService.getUsername()===this.userForm.getValue("username")}isUserChangingRoles(){return this.isCurrentUser()&&this.response&&!r.isEqual(this.response.roles,this.userForm.getValue("roles"))}isUserRemovingNeededRolePermissions(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))}hasUserReadUpdatePermissions(t=[]){for(const e of this.allRoles)if(-1!==t.indexOf(e.name)&&e.scopes_permissions.user){const t=e.scopes_permissions.user;return["read","update"].every(e=>-1!==t.indexOf(e))}return!1}doEditAction(){const t=this.getRequest();this.userService.update(t).subscribe(()=>{this.isUserChangingRoles()?this.authService.logout(()=>{this.notificationService.show(l.a.info,this.i18n("You were automatically logged out because your roles have been changed."))}):(this.notificationService.show(l.a.success,this.i18n('Updated user "{{username}}"',{username:t.username})),this.router.navigate(["/user-management/users"]))},()=>{this.userForm.setErrors({cdSubmitButton:!0})})}clearExpirationDate(){this.userForm.get("pwdExpirationDate").setValue(void 0)}submit(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()}}},V5SL:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="fr-FR">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Activer/Désactiver la navigation</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Grappe</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Serveurs</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Moniteurs</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuration</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modules Manager</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Journaux</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Réserves</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloc</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Images</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Mise en miroir</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systèmes de fichiers</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Compartiments</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sélectionner une langue</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Chargement des données du panneau...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Sélecteur d\'heure Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Réinitialiser les paramètres</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Retour</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Échec du chargement des données.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>sélectionné(e)(s)</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>trouvé(e)(s)</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nom</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Description</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Description longue</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Valeur par défaut</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Valeur par défaut du daemon</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valeurs</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Sauvegarder</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visionneuse de carte CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Chargement...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nom d\'hôte</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Ce champs est requis.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Oui.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annuler</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fermer</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste d\'hôtes</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performance globale</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Aucune entrée trouvée</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Journaux de grappes</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Journaux d\'audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Chargement de la configuration...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>La configuration n\'a pas pu être chargée.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Modifier le module Manager</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>La valeur entrée n\'est pas un UUID valide, par exemple : 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>La valeur entrée doit être une adresse IP valide.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>La valeur entrée doit être un nombre.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>La valeur entrée doit être un nombre ou une valeur décimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Mise à jour</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Statut</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de grappe</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap modifié</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>required con</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>required mon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Dans le quorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Hors quorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Ajouter</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Drapeaux OSD à l\'échelle de la grappe</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Soumettre</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avancé...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorité de récupération des OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorité</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personnaliser les valeurs de priorité</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Ce champ est obligatoire !</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>La valeur doit être comprise entre 0 et 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Réévaluer</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profondeur } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Liste des OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valeur</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifier</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Supprimer</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Santé</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiques</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clients</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Accès possible par tous les clients</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresses</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Champ obligatoire</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Doit contenir une ou plusieurs valeurs séparées par une virgule</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Par exemple :</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Type d\'accès</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Ajouter des clients</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Aucune grappe disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Sélectionner la grappe --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Ajouter un daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend de stockage</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Aucune réserve de données disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Sélectionner le backend de stockage --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Utilisateur Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Aucun utilisateur disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Sélectionner l\'utilisateur Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Aucun client disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Sélectionner le client cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nom CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Activer le libellé de sécurité</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Chemin CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Le chemin doit commencer par \'/\' et peut être suivi d\'un mot</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Un nouveau répertoire sera créé</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Chemin</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Le chemin peut être constitué d\'un seul \'/\' ou d\'un seul mot</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Un compartiment sera créé</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocole NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Balise NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Les clients ne peuvent pas monter de sous-répertoires (si la balise = foo, le client ne peut pas monter foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de balise, il est possible d\'exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>En utilisant différentes options de pseudo, il est possible d\'exporter exporter plusieurs fois le même chemin.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Aucun type d\'accès disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Sélectionner le type d\'accès --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Aucun squash disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionnez le type de squash d\'ID utilisateur qui est effectué --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocole de transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Bienvenue dans Ceph !</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nom d\'utilisateur requis</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Mot de passe requis</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Connexion</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Désolé, l\'utilisateur n\'existe pas dans Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Interdit</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Désolé, vous n\'êtes pas autorisé à voir ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuration RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Supprimez la valeur de configuration locale. La valeur de configuration parent sera héritée et utilisée à la place.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>La valeur minimale est 0.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Liste des réserves</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Le nom doit être exclusivement composé de caractères alphanumériques, de tirets et de traits de soulignement.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Le nom de profil du code d\'effacement sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plug-in</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Blocs de données (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Doit être égal ou supérieur à 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Blocs de codage (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Doit être égal ou supérieur à 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimateur de durabilité (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localité (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domaine de défaillance Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localité Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Aucun</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technique</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Taille de paquet</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Racine Crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Classe de périphérique Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>tout</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Répertoire</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nom...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Le nom de réserve Ceph sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Type de réserve</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Sélectionner un type de réserve --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Au moins un groupe de placements est nécessaire.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Votre grappe ne peut pas gérer autant de groupes de placements. Veuillez recalculer le nombre de groupes de placements nécessaires.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Aide au calcul</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Taille de réplication</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Drapeaux</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Écrasements EC</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Applications</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Aucun profil de code d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Sélectionner un profil de code d\'effacement --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Sélectionner une règle crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Règle Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Étapes Crush</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compression</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algorithme</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Aucun algorithme de compression d\'effacement n\'est disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Taille de blob minimale</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>par ex. 128 Kio</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>La valeur doit être supérieure à 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Taille de blob maximale</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>par ex., 512 Kio</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>La valeur doit être supérieure à la taille de blob minimale.</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rapport</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rapport de compression</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>La valeur doit se situer entre 0.0 et 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>par exemple, 10 Gio</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Détails</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Détails des performances</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Détails des niveaux de mise en cache</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Déplacer une image vers la corbeille.</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protection expire le </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format de date incorrect. Veuillez utiliser "AAAA-MM-JJ HH:mm:ss"</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protection a déjà expiré. Veuillez sélectionner une date ultérieure ou laisser le champ vide.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Déplacer une image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Présentation</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cibles</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Authentification de la découverte</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utilisateur</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Mot de passe</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Utilisateur commun</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Mot de passe commun</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informations disponibles :</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Cibles iSCSI non disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Réserve</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Créé</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Taille</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objets</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Taille de l\'objet</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Provisionné</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Provisionnement total</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Nombre de segmentations</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Parent</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Préfixe du nom de bloc</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Tri</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantanés</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Ce paramètre remplace la valeur globale</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Il s\'agit de la valeur globale. Aucune valeur de cette option n\'a été définie pour cette image.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>Les caractères \'/\' et \'@\' ne sont pas autorisés.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Aucune réserve RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Sélectionner une réserve --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utiliser une réserve de données dédiée</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Réserve de données</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Réserve dédiée qui stocke les données objet du RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Vous devez augmenter la taille.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avancé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Segmentation</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unité de segmentation</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Sélectionner une unité de segmentation --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Ce champ est obligatoire, car le nombre de segments est défini.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>L\'unité de segmentation est supérieure à la taille de l\'objet.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Nombre de segments</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Ce champ est obligatoire, car l\'unité de segmentation est définie.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Le nombre de segments doit être supérieur à 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Vous êtes sur le point de revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vider la corbeille</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tout</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Réserve :</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nom de la réserve...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurer l\'image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pour restaurer</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>saisissez le nouveau nom de l\'image, puis cliquez sur</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nouveau nom</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Expiration le </target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protection jusqu\'au</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Il n\'est généralement pas nécessaire de modifier ces paramètres par défaut.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Paramètres</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmer</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Paramètres avancés</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cible</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Modèle IQN incorrect.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Par exemple : iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Plus d\'informations</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Des paramètres avancés de cette cible ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portails</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Ajouter un portail</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Des paramètres avancés de cette image ont été modifiés.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Ajouter une image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Authentification ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Initiateurs</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Initiateur</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN client</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>L\'IQN de l\'initiateur doit être unique.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Les noms d\'utilisateur doivent comporter entre 8 et 64 caractères et\n                        ne peuvent contenir que des lettres et les caractères \'.\', \'@\', \'-\', \'_\' ou \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'initiateur appartient à un groupe dans lequel les images seront configurées.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Aucun élément ajouté.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Ajouter un initiateur</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Groupes</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Groupe</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Ajouter un groupe</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Corbeille</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problèmes</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronisation en cours</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Prêt</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Modifier le mode de mise en miroir de la réserve</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Les grappes d\'homologues doivent être supprimées avant de désactiver la mise en miroir.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Modifier} other {Ajouter} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nom de grappe</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Le nom de grappe n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID CephX</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>L\'ID CephX n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresses du moniteur</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Adresses séparées par une virgule...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>L\'adresse du moniteur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clef CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clef Base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clef CephX doit être codée en base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Compteurs de performance non disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Liste de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Compteurs de performance</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Chargement des données de compartiment...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>La valeur n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Le nom sélectionné est déjà en cours d\'utilisation.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propriétaire</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Sélectionner un utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Activé</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Type d\'index</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Règle de placement</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marqueur</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marqueur maximum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Version</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Version principale</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Date de modification</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Groupe de zones</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota de compartiments</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Taille maximale</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Illimité</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nombre maximal d\'objets</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nom d\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Sélectionner un nom d\'utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Générer automatiquement la clef</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clef d\'accès</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clef secrète</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nom complet</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendu</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Système</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nombre maximal de compartiments</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Utilisateurs secondaires</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Fonctionnalités</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Quota utilisateur</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Afficher</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Clefs</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Type</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Sélectionner un type --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Autorisation</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Sélectionner une autorisation --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Utilisateur secondaire</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>L\'ID d\'utilisateur secondaire sélectionné est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lire, écrire</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>complet</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clé Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Générer automatiquement le secret</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Chargement des donnés utilisateur…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Les donnés utilisateur n\'ont pas pu être chargées.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>L\'ID utilisateur spécifié est déjà utilisé.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ceci n\'est pas une adresse électronique valide.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>L\'adresse électronique spécifiée est déjà utilisée.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nombre max. de compartiments</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Désactivé</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personnalisé</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clef S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Il n\'y a aucun utilisateur secondaire.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Il n\'y a pas de clefs.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Il n\'y a aucune fonctionnalité.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Taille illimitée</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Taille max.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objets illimités</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nombre max. d\'objets</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>La valeur saisie doit être &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Description...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Autorisations</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Rôles</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmer le mot de passe</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Le mot de passe de confirmation ne correspond pas au mot de passe.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Adresse électronique</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>L\'adresse électronique n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Vous êtes sur le point de supprimer les autorisations "lecture/mise à jour utilisateur" de votre propre utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si vous continuez, vous ne serez plus en mesure d\'ajouter ni de supprimer des rôles pour n\'importe quel utilisateur.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Voulez-vous vraiment continuer ?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Aide</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentation</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>À propos de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Paramètres du tableau de bord</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestion des utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Utilisateur connecté</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Se déconnecter</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Attributs (carte OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Métadonnées non disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Métadonnées</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Compteur de performance</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Écritures</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lectures</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogramme</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valeurs actuelles</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Minimum</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maximum</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Source</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Niveau</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Mise à jour possible lors de l\'exécution (modifiable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Balises</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valeurs d\'énuménation</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Voir aussi</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Statut de la grappe</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons du gestionnaire</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Passerelles d\'objet</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Serveurs de métadonnées</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Passerelles iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS client</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Débit client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectures/Écritures client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Débit de récupération</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Nettoyer</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Performance</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacité brute</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Groupes de placements par OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Statut du groupe de placements</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacité</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Rangs</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actuel</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Authentification de la découverte mise à jour</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Il n\'y a aucun portail disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Il n\'y a aucune image disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Il n\'y a aucune image disponible. Veillez à ajouter une image à la cible.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Il n\'y a aucun initiateur disponible. Veillez à ajouter un initiateur à la cible.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cible</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>État</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O depuis</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problème</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Avancement</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode d\'édition</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Ajouter un homologue</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Modifier un homologue</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Supprimer un homologue</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Leader</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>nb en local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>nb à distance</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mettre en miroir l\'homologue</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clef</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplatissement en profondeur</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Superposition</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Verrou exclusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Assignation d\'objet (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journalisation (nécessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROTÉGÉ</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Retour à l\'état initial de l\'instantané RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revenir à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Intantané RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Supprimé le</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>type</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>état</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>version</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hôte</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>racine</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons en veille</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Rang</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Activité</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodes</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Utilisation</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Mis à jour</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>La valeur peut être mise à jour au moment de l\'exécution.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Les daemons/clients ne tirent pas cette valeur de\n  la base de données de configuration de Monitor. Nous n\'autorisons pas le réglage de cette option via \'ceph config\n  set ...\'. Cette option doit être configurée via ceph.conf ou via\n  la ligne de commande.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>L\'option ne prend effet qu\'au démarrage du daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>L\'option n\'affecte que la création des grappes.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>L\'option n\'affecte que la création des daemons.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Service</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valeur actuelle</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Modifiable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Activer</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Désactiver</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconnexion en cours… Veuillez patienter.</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Adresse publique</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sessions ouvertes</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Pas rentrés</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Les OSD qui ont été marqués comme sortis ne seront pas marqués comme rentrés à leur démarrage.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Pas sortis</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Les OSD ne seront pas marqués automatiquement comme sortis après l\'intervalle configuré.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Pas démarrés</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>Les OSD ne sont pas autorisés à démarrer.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Pas arrêtés</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Les rapports de défaillance des OSD sont ignorés, de sorte que les moniteurs ne marquent pas les OSD comme étant arrêtés.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pause</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Met en pause les lectures et écritures</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Pas de nettoyage</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Nettoyage désactivé</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Pas de nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Le nettoyage en profondeur est désactivé</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Pas de renvoi</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Le renvoi des groupes de placements est suspendu</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Pas de récupération</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La récupération des groupes de placements est suspendue</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Utiliser le tri au niveau du bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Variables snapdir purgées</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Les OSD ont converti les variables snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Suppressions des récupérations</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Suppressions effectuées pendant la restauration et non l\'homologation</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite stricte de journalisation des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Impose une limite stricte à la longueur du journal des groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Drapeaux OSD mis à jour</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>sorti</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>rentré</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>arrêté</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marquer</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdu</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marqué comme perdu</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Purger</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purgé</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>détruire</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>détruit</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>supprimer</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Groupes de placements</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Octets de lecture</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Octets d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Opérations d\'écriture</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Nbre max. de renvois</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Nombre maximum de récupérations actives</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Nombre maximum de démarrages uniques de récupérations</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Mise en veille de la récupération</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Travail</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravité</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Démarré</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilisé</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispo.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Nettoyé</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En cours</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Avertissement</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Inconnu</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>opérationnel</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>aucun système de fichiers</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>actif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>veille</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon actif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Le service NFS Ganesha n\'est pas configuré.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Utilisateur CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Système de fichiers CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(hérité de la configuration globale)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>hérité de la configuration globale</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Sélectionner le type de squashing d\'ID utilisateur effectué --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Aucun daemon n\'est disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Âge évict min.</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Âge vidage min.</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nombre max d\'octets cibles</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nombre max. d\'objets cibles</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Aucune application ajoutée</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Limite d\'applications atteinte</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Une réserve peut avoir quatre définitions d\'application maximum.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caractère autorisés \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longueur maximale est de 128 caractères.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrer ou ajouter des applications</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Ajouter une application</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Taille de la réplique</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Dernier changement</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Jeu de règles Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>compartiment</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartiments</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>utilisateur</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Périmètre</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lecture</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Créer</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Rôle système</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Mettre à jour l\'utilisateur</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuer</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Vous avez été automatiquement déconnecté, car vos rôles ont changé.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Chaque objet est divisé en parties de blocs de données, chacune étant stockée sur un OSD différent.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calculez des blocs de codage pour chaque objet et stockez-les sur différents OSD.\n Le nombre de blocs de codage correspond également au nombre d\'OSD qui peuvent être arrêtés sans perdre de données.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Le plugin jerasure est le plugin le plus générique et le plus flexible,\n  c\'est aussi la valeur par défaut des réserves codées à effacement Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La technique la plus flexible est reed_sol_van_van : il suffit de définir k\n et m. La technique cauchy_good peut être plus rapide, mais vous devez choisir la taille du paquet\n avec précaution. reed_sol_r6_op, liberation, blaum_roth et liber8tion sont des équivalents RAID6\n en ce sens qu\'ils ne peuvent être configurés qu\'avec m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>L\'encodage se fera sur des paquets de taille d\'octets.\n  Choisir la bonne taille de paquet est difficile.\n  La documentation de jerasure contient de nombreuses informations à ce sujet.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Avec le plugin jerasure, lorsqu\'un objet codé à effacement est stocké sur\n plusieurs OSD, la récupération à la suite de la perte d\'un OSD nécessite la lecture de tous les autres.\n Par exemple, si jerasure est configuré avec k=8 et m=4, la perte d\'un OSD nécessite de lire\n les onze autres pour pouvoir effectuer une réparation.\n\n Le plugin de code d\'effacement lrc crée des blocs de parité locale pour permettre la récupération avec\n moins d\'OSD. Par exemple, si lrc est configuré avec k=8, m=4 et l=4,\n un bloc de parité supplémentaire est créé pour chaque groupe de quatre OSD. Lorsqu\'un seul OSD est perdu, il peut être\n récupéré avec seulement quatre OSD au lieu de onze.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Regroupez les blocs de données et de codage en ensembles de localité de taille. Par exemple,\n pour k=4 et m=2, lorsque locality=3, deux groupes de trois sont créés. Chaque ensemble peut\n être récupéré sans lire les blocs d\'un autre jeu.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Type de compartiment Crush dans lequel chaque ensemble de blocs défini\n par I sera stocké. Par exemple, s\'il est réglé sur rack, chaque groupe de blocs I sera\n placé dans un rack différent. Il est utilisé pour créer une étape de la règle CRUSH telle que l\'étape de choix\n d\'un rack. S\'il n\'est pas défini, aucun regroupement de ce type n\'est effectué.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Le plug-in isa encapsule la bibliothèque ISA. Il ne fonctionne qu\'avec des processeurs Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Le plugin ISA se présente sous deux formes Reed Solomon.\n Si reed_sol_van est défini, il équivaut à Vandermonde. Si cauchy est configuré, il équivaut à Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Le plug-in shec encapsule la bibliothèque SHEC multiple.\n Il permet à Ceph de récupérer les données plus efficacement qu\'avec les codes Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Nombre de blocs de parité, chacun incluant chaque bloc de données dans sa\n plage de calcul. Ce nombre est utilisé comme estimateur de durabilité. Par exemple, si c=2,\n 2 OSD peuvent être arrêtés sans perte de données.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nom du compartiment crush utilisé pour la première étape de la règle CRUSH.\n Par exemple, l\'étape de définition des valeurs par défaut.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Vérifiez qu\'il n\'existe pas deux blocs dans un compartiment avec le même domaine de\n défaillance. Par exemple, si le domaine de défaillance est un hôte, deux blocs ne seront pas stockés sur le même\n hôte. Cette option est utilisée pour créer une étape de la règle CRUSH telle que chooseleaf host.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restreindre le placement aux périphériques d\'une classe spécifique\n (par exemple, ssd ou hdd), en utilisant les noms des classes de périphériques crush dans la carte CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Définissez le nom du répertoire à partir duquel le plug-in de code d\'effacement est chargé.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Autoriser toutes les opérations</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Autorise uniquement les opérations qui ne modifient pas le serveur</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>N\'autorise pas les opérations de lecture ou d\'écriture, mais toutes les autres.</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>N\'autorise pas la lecture, l\'écriture ni aucune autre opération modifiant les attributs d\'un fichier ou le contenu d\'un répertoire.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>N\'autorise aucun accès</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Sélectionner la priorité --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Faible</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Élevée</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informations</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Les 5 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Les 15 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Les 30 dernières minutes</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>La dernière heure (par défaut)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Les 3 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Les 6 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Les 12 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Les 24 dernières heures</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Hier</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Aujourd\'hui</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Depuis le début de la journée</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Avant-hier</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Les 2 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Il y a huit jours</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semaine dernière</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Cette semaine</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Depuis le début de la semaine</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Les 7 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Le mois dernier</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Ce mois</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Depuis le début du mois</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Les 30 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Les 90 derniers jours</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Les 6 derniers mois</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>L\'année écoulée</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>L\'année dernière</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Cette année</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Depuis le début de l\'année</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Les 2 dernières années</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Les 5 dernières années</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Aucun élément sélectionné.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Désélectionnez l\'élément pour le sélectionner à nouveau.</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de sélection atteinte</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Balises de filtre</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Ajouter un badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Aucun élément disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Cloner</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copier</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Nettoyage en profondeur</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Détruire</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplatir</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marquer comme arrêté</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marquer comme rentré</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marquer comme perdu</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marquer comme sorti</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Protéger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renommer</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurer</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Déplacer vers la corbeille</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Annuler la protection</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Supprimé</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Cloné</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copié</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Applati</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgé</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restauré</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rétabli à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Oui</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Non</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualité de service</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limite de bits/s</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limite souhaitée d\'octets E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limite E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limite souhaitée d\'opérations E/S par seconde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limite de bits/s en lecture</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limite souhaitée de lecture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limite E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limite souhaitée d\'opérations de lecture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limite de bits/s en écriture</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limite souhaitée d\'écriture d\'octets par seconde.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limite E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limite souhaitée d\'opérations d\'écriture par seconde.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Rafale de bits/s</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limite de rafale d\'octets en E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Rafale E/S par seconde</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limite de rafale d\'opérations E/S souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limite de rafale d\'octets lus par seconde.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Rafale E/S par seconde en lecture</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limite de rafale d\'opérations de lecture</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Rafale E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limite de rafale de lectures d\'octets souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Rafale d\'E/S par seconde en écriture</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limite de rafale d\'opérations d\'écriture souhaitée.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>En cours d\'exécution</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>exécuter</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Exécuté</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tâche inconnue</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>En cours de création</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>créer</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>En cours de mise à jour</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>mettre à jour</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>En cours de suppression</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonage en cours</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>cloner</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>En cours de copie</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copie</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplatissement</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplatir</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Retour à l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>rétablir l\'état initial</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>En cours de déplacement</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>déplacer</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Déplacé</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Impossible de trouver l\'image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>En cours de restauration.</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurer</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>En cours de purge</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>purger</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>toutes les réserves</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Impossible de désactiver la mise en miroir, car l\'élément contient un homologue.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},V6Ve:function(t,e,n){var a=n("kekF")(Object.keys,Object);t.exports=a},VOtZ:function(t,e,n){var a=n("juv8"),r=n("MvSz");t.exports=function(t,e){return a(t,r(t),e)}},VRyK:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("z+Ro"),i=n("bHdf"),s=n("yCtX");function o(...t){let e=Number.POSITIVE_INFINITY,n=null,o=t[t.length-1];return Object(r.a)(o)?(n=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(e=t.pop())):"number"==typeof o&&(e=t.pop()),null===n&&1===t.length&&t[0]instanceof a.a?t[0]:Object(i.a)(e)(Object(s.a)(t,n))}},VTlA:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("mSOc"),n("ufoC");class a{constructor(t,e){this.taskMessageService=t,this.summaryService=e}init(t,e,n,a,r,i,s){this.getUpdate=t,this.preProcessing=e,this.setList=n,this.onFetchError=a,this.taskFilter=r,this.itemFilter=i,this.builders=s||{},this.summaryDataSubscription=this.summaryService.subscribe(t=>{this.getUpdate().subscribe(e=>{this.updateData(e,t.executing_tasks.filter(this.taskFilter))},this.onFetchError)},this.onFetchError)}updateData(t,e){const n=this.preProcessing?this.preProcessing(t):t;this.addMissing(n,e),n.forEach(t=>{const n=e.filter(e=>this.itemFilter(t,e));t.cdExecuting=this.getTaskAction(n)}),this.setList(n)}addMissing(t,e){const n=this.builders.default;e.forEach(e=>{const a=t.find(t=>this.itemFilter(t,e)),r=this.builders[e.name];a||!r&&!n||t.push(r?r(e.metadata):n(e.metadata))})}getTaskAction(t){if(0!==t.length)return t.map(t=>{const e=t.progress?` ${t.progress}%`:"";return this.taskMessageService.getRunningText(t)+"..."+e}).join(", ")}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}}},VXsX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("LvDl"),r=n("8Y7J");class i{constructor(t,e,n){this.name=t,this.metadata=e,this.onTaskFinished=n}}let s=(()=>{class t{constructor(){this.subscriptions=[]}init(t){return t.subscribe(t=>{const e=t.executing_tasks,n=t.finished_tasks,a=[];for(const r of this.subscriptions){const t=this._getTask(r,n),i=this._getTask(r,e);null!==t&&null===i&&r.onTaskFinished(t),null!==i&&a.push(r),this.subscriptions=a}})}subscribe(t,e,n){this.subscriptions.push(new i(t,e,n))}_getTask(t,e){for(const n of e)if(n.name===t.name&&a.isEqual(n.metadata,t.metadata))return n;return null}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},VaNO:function(t,e){t.exports=function(t){return this.__data__.has(t)}},Vclq:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("wd/R"))},Vhfg:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("lJxs"),r=n("ej+x"),i=n("8Y7J"),s=n("iInd");let o=(()=>{class t{constructor(t,e){this.router=t,this.featureToggles=e}canActivate(t){return this.featureToggles.get().pipe(Object(a.a)(e=>!1!==e[t.routeConfig.path]||(this.router.navigate(["404"]),!1)))}canActivateChild(t){return this.canActivate(t.parent)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.m),i["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},ViD7:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="cs">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Zobraz./skrýt navigaci</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klastr</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Stroje</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Služby</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH mapa</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Moduly správy</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Fondy</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Obrazy</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Zrcadlení</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektová brána</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Procesy služeb</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Nádoby</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Získávají se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Čekejte…\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Zobrazují se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>z mezipaměti\n  pro \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Nedaří se načíst dat \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pro\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Zkontrolujte zdraví klastru.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Vyčistit oznámení</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Odebrat oznámení</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Trvání:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>Nejsou zde žádná oznámení.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Úlohy a oznámení</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Vyberte jazyk</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Načítání údajů panelu…</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Nahlédněte do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>, kde naleznete jak\n  nastavit a zapnout funkci monitorování.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana přehled neexistuje. Podívejte se do\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> jak\n  přidat přehledy do Grafany.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Volič čas Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Resetovat nastavení</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Načíst znovu</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Odebrat uživatelsky určenou hodnotu nastavení. Namísto toho bude převzato a použito výchozí nastavení.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než 1.</target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zpět</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Data se nepodařilo načíst</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>vybráno</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>nalezeno</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>celkem</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Název</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Popis</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Podrobnější popis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Výchozí</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Výchozí pro proces služby</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Hodnoty</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Nemůže být vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Nemůže být nižší než \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Uložit</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>prohlížeč CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Načítání…</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Název stroje</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Tuto kolonku je třeba vyplnit.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>Zvolený název stroje už je používán.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Opravdu chcete označené položky \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> ?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Opravdu chcete \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> označené \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ano, opravdu to chci.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Storno</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zavřít</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Seznam strojů</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Celková výkonnost</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Zařízení</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenalezeny žádné položky</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Záznamy událostí v klastra</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Auditní záznamy událostí</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priorita:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Klíčové slovo:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Datum:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Volba data</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Časový rozsah:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Načítání nastavení…</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Toto nastavení se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Upravit modul správy</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Zadaná hodnota není platné UUID, např.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Je třeba, aby zadaná hodnota byla platnou IP adresou.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká! Je třeba, aby byla nižší nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla vyšší než nebo rovná \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Je třeba, aby zadaná hodnota byla číslo nebo desítkové.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>Identif. kastru</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>mapa monitorů změněna</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epocha</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kvórum spojení</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kvórum monitor</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>vyžadováno spojení</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>vyžadováno monitorů</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>V kvóru</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Není v kvóru</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Přidat</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Funkce</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Příznaky OSD pro celý klastr</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Odeslat</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Pokročilé…</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Pokročilé volby nastavení</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorita obnovení OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorita</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Přizpůsobit hodnoty priority</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Tuto kolonku je třeba vyplnit!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš vysoká, je třeba, aby nebyla vyšší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>Zadaná hodnota je příliš nízká! Je třeba, aby byla nižší než \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Je třeba, aby hodnota byla mezi 0 a 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Znovu vyvážit</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSD \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>kontrola\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, vybrat, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Seznam OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Ticha</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Vyberte atribut vůči kterému hledat shodu --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Hodnota</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Použít regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Upravit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Smazat</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Úprava ticha skončí platnost původního ticha a znovu ho vytvoří jako nové ticho</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Tvůrce</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Komentář</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Čas začátku</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>Pokud čas začátku leží v minulosti, bude namísto něj použit okamžik vytvoření</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Trvání</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>Čas konce</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdraví</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistiky</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Ohledně nastavení a zapnutí funkce správy NFS Ganesha nahlédněte do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klienti</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Přistupovat může libovolný klient</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Adresy</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Vyžadovaná kolonka</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Je třeba, aby obsahovalo jednu nebo více čárkou oddělovaných hodnot</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Například:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ přístupu</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Přidat klienty</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Žádný klastr k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Vyberte klastr --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Přidat proces služby</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Podpůrná vrstva úložiště</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Žádné fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Vyberte podpůrnou vrstvu úložiště --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Uživatel objektové brány</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Žádní uživatelé k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Vyberte uživatele brány objektů --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>Identif. uživatele CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Žádní klienti k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Vyberte cephx klienta --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Název CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- Žádný souborový systém CephFS k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Vyberte CephFS souborový systém --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Zapnout štítek zabezpečení</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Popis umístění CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Je třeba, aby popis umístění začínal na „/“, za kterým následuje slovo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Bude vytvořena nová složka</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Popis umístění</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Popis umístění může být pouze jediné „/“ nebo slovo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Bude vytvořena nová nádoba</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS protokol</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFS štítek</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternativní přístup pro \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> připojení (nemůže začínat na /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klienti nemohou připojovat podsložky (tj. pokud Tag = neco, klient nemůže připojit neco/podslozka).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Použitím různých voleb Štítku, může to stejné umístění být exportováno vícekrát.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>Pozice kterou tento \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export zabírá\n                v \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (je třeba, aby se neopakovalo).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>By using different Pseudo options, the same Path may be exported multiple times.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Je třeba, aby Pseudo začínalo na „/“ a a nemůže obsahovat nic z následujícího: &gt;, &lt;, |, &amp;, ( nebo ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Žádný typ přístupu k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Vyberte typ přístupu --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Žádné squash k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportní protokol</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Původní heslo</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>Je třeba, aby původní a nové heslo nebyly stejné</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>Nové heslo</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Zopakování zadání nového hesla</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Kontrolní zadání nového hesla se neshoduje.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Vítejte v Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Je třeba vyplnit uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Je třeba vyplnit heslo</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Přihlásit</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Je nám líto, uživatel v Ceph neexistuje.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Vrátit se na \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Přihlašovací stránku\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Budete odhlášeni od poskytovatele identity když se pokusíte znovu přihlásit.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Odepřeno</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Omlouváme se, ale nemáte oprávnění zobrazit to, po čem se  poohlížíte.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>Data obdržena v JSON formátu verze 2.x, což je v tuto chvíli nekompatibilní s přehledem.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>výsledek SMART testu samoposouzení celkového stavu</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Informace o zařízení</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Nastavení RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Odebrat hodnotu místnímu nastavení. Namísto ní bude použita hodnota nadřazeného nastavení.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minimální hodnota je 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Seznam fondů</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Název může být tvořen pouze písmeny a číslicemi, dále ještě spojovníky a podtržítky.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Zvolený název pro profil mazacího kódu je už používán.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Zásuvný modul</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Shluky dat (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Je třeba, aby bylo 2 a více.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Shluky kódování (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Je třeba, aby bylo 1 a více.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Odhadování odolnosti (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Umístění (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Doména selhání crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalita crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Žádné</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Technika</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Velikostpaketu</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Kořen crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Třída crush zařízení</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>libovolné</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Složka</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Název…</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Zvolený název pro Ceph fond je už používán.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Není možné vytvořit RBD fond s názvem „/“ v názvu.\n              Změňte název nebo \'rbd\' odeberte ze seznamu aplikací.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Typ fondul</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Vybrat typ fondu --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Je třeba alespoň jedné skupiny umístění!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Váš klastr nemůže obsloužit tolik skupin umístění. Přepočítejte potřebné množství skupin umístění.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Nápověda k výpočtu</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikovaná velikost</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Nejméně: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Nejvíce: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>Zadaná velikost je mimo rozsah. Platná hodnota je\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> až \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> .\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Příznaky</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC přebití</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikace</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Žádný profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Vyberte profil mazacího kódu --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Sada pravidel crush</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Vybrat crush pravidlo --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush pravidlo</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush kroky</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Komprese</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Režim</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmus</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Žádný algoritmus komprese mazání --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>např. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Hodnota by měla být vyšší než nula</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Hodnota by měla být nižší než maximální velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Nejvyšší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>např. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Hodnota by měla být vyšší než nejnižší velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Poměr</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Kompresní poměr</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Hodnota by měla být z rozmezí 0.0 až 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Kvóty</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Nejvýše bajtů</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Pro vypnutí této kvóty nevyplňujte nebo zadejte 0 (nulu).</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>Platná kvóta by měla být vyšší než 0 (nula).</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>např. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>Hodnota by měla být vyšší nebo rovna 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Podrobnosti</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Podrobnosti o výkonnosti</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Podrobnosti o stupních mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Přesunout obraz do koše</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Platnost ochrany skončí v</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Chybný formát data. Použijte „RRRR-MM-DD HH:mm:ss“.</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Platnost ochrany už skončila. Zvolte budoucí datum nebo nevyplňujte.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Přesunout obraz</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Brány</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo vyšší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Je třeba, aby bylo nižší nebo rovno \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Přehled</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Cíle</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Uživatele</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména byla 8 až 64 znaků dlouhá a\n              mohu obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ a „:“.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Heslo</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla byla 12 až 16 znaků dlouhá\n              a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Uživatel pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Heslo pro vzájemné ověření</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby heslo byla 12 až 16 znaků dlouhá a\n              mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy iSCSI cílů.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informace k dispozici:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI cíl není k dispozici</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>K dispozici pouze pro RBD obrazy se zapnutým \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Fond</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Velikost</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objekty</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Velikost objektu</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Poskytováno</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Celkem poskytováno</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Proužkovací jednotka</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Počet proužkování</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Nadřazené</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Předpona názvu bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Pořadí</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Zachycené stavy</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Toto nastavení přebije globální hodnotu</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globální</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Toto je globální hodnota. Pro tento obraz nebyla u této volby nastavena žádná hodnota.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> od\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>„/“ a „@“ nejsou dovoleny.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Žádné rbd fondy k dispozici --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Vybrat fond --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Použít vyhrazený datový fond</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datový fond</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Vyhrazený fond který uchovává objektová data RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Je třeba zvětšit.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Pokročilé</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Proužkování</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednotka proužku</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Vybrat jednotku proužku --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definován počet proužků!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Jednotka proužku je vyšší než velikost objektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Počet proužků</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Tuto kolonku je třeba vyplnit, protože je definována jednotka proužku!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Je třeba, aby počet proužků byl větší než nula.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Chystáte se vrátit zpět</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vysypat koš</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Vše</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Fond:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Název fondu…</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Obnovit obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Pro obnovení</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>zadejte nový název pro obraz a klikněte na</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nový název</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Platnost skončila v</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Chráněno do</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>Tento obraz je chráněn do\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologie iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Měnit tyto parametry z jejich výchozích hodnot obvykle není potřeba.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Nastavení</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Potvrdit</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pokročilá nastavení</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN cíle</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN nemá správný formát.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN má následující formu zápisu\n                \'iqn.$rok-$mesic.$adresaObracene:$definovanyNazev\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Například: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Další informace</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Tento cíl má změněná pokročilá nastavení.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portály</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Přidat portál</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Je třeba alespoň \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bran.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Tento obraz má změněná nastavení.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Přidat obraz</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL ověřování</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                obsahovala pouze písmena a případně ještě znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                a obsahovala písmena a znaky „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciátory</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciátor</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN klienta</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Je třeba, aby se IQN iniciátoru neopakovalo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Je třeba, aby uživatelská jména měla délku 8 až 64 znaků a\n                        mohou obsahovat pouze písmena a znaky „.“, „@“, „-“, „_“ nebo „:“.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 až 16 znaků\n                        a mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Je třeba, aby hesla měla délku 12 znaků 16 a\n                        mohou obsahovat pouze písmena, „@“, „-“, „_“ nebo „/“.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Iniciátor spadá do skupiny. Obrazy budou nastaveny ve skupině.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nepřidány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Přidat iniciátor</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Skupiny</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Skupina</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Přidat skupinu</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Koš</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>problémy</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Synchronizuje se</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Připraveno</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Upravit režim zrcadlení fondu</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Pro úpravu režimu zrcadlení pro fond \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, vyberte ze seznamu nový režim a klikněte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aktualizovat\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Před vypnutím zrcadlení je třeba odebrat klastry-protějšky.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  protějšek zrcadlení fondu\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Název klastru</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Název klastru není platný</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX identif.</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX identif. …</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX identif. není platný.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresy monitorů</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Čárkou oddělované adresy…</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Adresa monitoru není platná.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX klíč</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Klíč v base64 kódování…</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Je třeba, aby CephX klíč byl v kódování base64.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Výkonnostní čítače nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Podívejte se do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentace\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  jak nastavit a zapnout funkci správy brány objektů.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Seznam procesů služeb</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Výkonnostní čítače</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Načítání dat nádoby…</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Hodnota není platná.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Zvolený název už je používán.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Vlastník</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Vybrat uživatele --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Cíl umístění</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Vybrat cíl umístění --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Verzování</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Zapnuto</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>Identif.</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Typ rejstříku</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Pravidlo umístění</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Označovač</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Nejvyšší označovač</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Verze</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Hlavní verze</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Okamžik úpravy</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Skupinazóny</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kvóta nádoby</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Neomezeno</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Uživatelské jméno</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Vybrat uživatelské jméno --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Automaticky vytvořit klíč</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Přístupový klíč</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajný klíč</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Celé jméno</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-mailová adresa</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Systém</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Dílčí uživatelé</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Schopnosti</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kvóta uživatele</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Zobrazit</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Klíče</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Typ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Vybrat typ --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Vybrat oprávnění --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>Zvolený identifikátor dílčího uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>číst, zapisovat</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>plné</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Automaticky vytvořit tajemství</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Načítání údajů uživatele…</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Údaje uživatele se nepodařilo načíst.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>Zvolený identif. uživatele už je používán.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Toto není platná e-mailová adresa.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Zvolená e-mailová adresa už je používána.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nejvýše nádob</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Vypnuto</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Uživatelsky určené</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nejsou zde žádní dílčí uživatelé.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Nejsou zde žádné klíče.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nejsou zde žádné schopnosti.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Neomezená velikost</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Nejvyšší velikost</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Neomezené objekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nejvýše objektů</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Je třeba, aby zadaná hodnota byla 0 a vyšší.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Popis…</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Oprávnění</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potvrzení zadání hesla</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Zadání hesla se neshodují.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>E-mail</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Neplatný e-mail.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Chystáte se odebrat oprávnění „uživatel číst/aktualizovat“ svému vlastnímu účtu.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Pokud budete pokračovat, nebudete nadále schopní přidávat nebo nebo odebírat role žádnému z uživatelů.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Opravdu chcete pokračovat?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Nápověda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentace</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>Aplikační program. rozhraní</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>O aplikaci</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Nastavení přehledu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Správa uživatelů</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Přihlášený uživatel</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Přihlášeni jako\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Změnit heslo</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Odhlásit</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributy (OSD mapa)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Stav zařízení</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Výkonnostní čítač</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram není k dispozici: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Zápisy</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Stávající hodnoty</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Max</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Zdroj</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Úroveň</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Je možné aktualizovat za provozu (upravitelné)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Štítky</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Vyčíslit hodnoty</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Viz také</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Stav klastru</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Procesy služby správy</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektové brány</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Metadata servery</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI brány</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>vst/výst. klienta</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Propustnost klienta</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Čtení/zápis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Propustnost zotavení</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Kontrola</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Výkonnost</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Holá kapacita</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Skupin umístění na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stav skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapacita</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>Další podrobnosti \n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> naleznete v \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>záznamech událostí\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>čítače výkonnosti MDS</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Složky</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Klienti (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Stávající</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Aktualizováno ověřování pro objevování</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Nejsou k dispozici žádné portály.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nejsou k dispozici žádné obrazy.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Nejsou k dispozici žádné obrazy. Ověřte, že jste cíli přidali obraz.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Nejsou k dispozici žádné iniciátory. Ověřte, že jste cíli přidali iniciátor.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>cíl</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Cíl</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target>Počet relací</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Cíl má aktivní relace</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI cíl</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stav</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target>Počet cílů</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bajtů čtení</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bajtů zápis</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O od</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problém</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Ukazatel postupu</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Upravit režim</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Přidat protějšek</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Upravit protějšek</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Smazat protějšek</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Vedoucí</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Počet místních</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Počet vzdálených</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>zrcadlit protějšek</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Klíč</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Hluboké zploštění</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Vrstvení</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Výhradní zámek</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa objektů (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Žurnálování (vyžaduje výhradní zámek)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Je třeba, aby nadřazený obraz podporoval vrstvy</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NECHRÁNĚNO</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Vrácení zachyceného stavu RBD zpět</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Vrácení zpět</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Zachycený stav RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Smazáno v</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>identif.</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>typ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>stav</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>verze</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Stroj</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>kořen</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Procesy služeb v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Hodnocení</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Proces služby</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivita</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Struktury složek</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>I-uzlů</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Využití</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Původ</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualizováno</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Hodnotu je možné aktualizovat za chodu.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Procesy služeb / klienti nezískávají tuto hodnotu\n      z databáze nastavení monitoru. Není umožněno nastavit tuto volbu\n      prostřednictvím „ceph config set …\'. Tato volba by měla být nastavena\n      z příkazového řádku.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Volba se uplatní pouze při spouštění procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Volba ovlivní pouze vytváření klastru.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Volba ovlivní pouze vytvoření procesu služby.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Aktualizována volba nastavení \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Služba</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Stávající hodnota</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Upravitelné</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>stroj</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Popis umístění zařízení</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Aktualizována volba pro modul „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Zapnout</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Vypnout</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>Modul Zpráva je vždy zapnutý.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Opětovné připojování, čekejte…</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Veřejná adresa</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otevřené relace</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Počet do</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD které byly dříve odznačeny nebudou označeny nazpět když spustí</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Počet ven</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD nebudou automaticky odznačeny po nastaveném intervalu</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Počet aktivních</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD není dovoleno spuštění</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Počet neaktivních</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Hlášení o selhání OSD jsou ignorovány, jako například že monitory OSD neoznačí jako nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pozastavit</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pozastavit čtení a zápisy</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Žádná kontrola</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Žádná hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Hloubková kontrola je vypnutá</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Žádné zasypávání</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasypávání skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Žádné obnovení</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Obnovování skupin umístění je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitové třídění</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Třídit podle bitů</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Vyčištěné složky zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD mají převedené sady zachycených stavů</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Smazáno při zotavování</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Mazání provedená při obnovování namísto peeringu</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Nepřekročitelný limit záznamu událostí PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Zapne nepřekročitelný limit na délku záznamu událostí v pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualizovány OSD příznaky</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>ven</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>dovnitř</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>nedostupné</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Značka</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD ztraceno</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Vyčistit</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>smazat</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Priorita zotavování</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>skupiny umístění</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Přečteno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapsáno bajtů</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operací/s čtení</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operací/s zápis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Označit \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Max Backfills</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Recovery Max Active</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Recovery Max Single Start</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Uspání zotavení</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Aktualizována rychlost zotavení OSD „\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Úloha</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Závažnost</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Zahájeno</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL adresa</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>ticho</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Název atributu</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regulární výraz</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Přidejte hostitele s Prometheus do nastavení přehledu a znovu načtete stránku</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Vytvořil(a)</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Končí</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Ticho</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Popis stavu</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Použito</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>K dispozici</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Čisté</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Pracující</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Varování</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Neznámé</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Zdravé</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Chybně umístěno</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degradováno</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Odnalezeno</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>repliky</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>žádné souborové systémy</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktivní</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>v pohotovosti</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>neaplikovatelné</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktivní proces služby</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kvórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Služba NFS Ganesha není nastavena.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS uživatel</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Souborový systém CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(převzato z globálního nastavení)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>převzato z globálního nastavení</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Vyberte jaký druh squashování identifikátor uživatele je prováděn --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Nejsou k dispozici žádné procesy služeb.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC profil</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Režim mezipaměti</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Evict Age</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Flush Age</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Nejvýše bajtů cíle</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nejvýše objektů cíle</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nebyla přidána žádná aplikace</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Dosažen limit aplikací</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Fond může mít nejvýše čtyři definice aplikací.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Použitelné znaky „_a-zA-Z0-9“</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Nejvyšší délka je 128 znaků</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrovat nebo přidat aplikace</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Přidat aplikaci</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>fond</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil mazacího kódu</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Velikost repliky</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Nejnovější změna</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Mazáním kódovaný profil</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Sada crush pravidel</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Smazání fondu je vypnuto nastavením mon_allow_pool_delete configuration.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>nádoba</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Vytvořena nádoba objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>nádoby</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>schopnost</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>uživatel</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>dílčí uživatel</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 klíč</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Aktualizován uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Vytvořen uživatel objektové brány „\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>uživatelé</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift klíč</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>Vyskytla se chyba s kódem \n          <x id="INTERPOLATION" equiv-text="{{code}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Nezpracované</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Práh</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>Když se nezdařilo</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Nejhorší</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Rozsah</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Čtení</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Vytvořit</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Vytvořena role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Aktualizována role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Systémová role</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Smazána role „\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>Nejsou zde žádné role.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Vytvořen uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aktualizovat uživatele</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Pokračovat</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Byli jste automaticky odhlášeni protože vaše role byly změněny.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Aktualizován uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Smazán uživatel „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Nepodařilo se smazat uživatele „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>Nyní jste přihlášení jako „\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>“.\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>heslo</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Aktualizované heslo uživatele"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Každý objekt je rozdělen v částech shluků dat, každé uložené na jiném OSD.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Počítat kódovací shluky pro každý objekt a ukládat je na různých OSD.\n      Počet kódovacích shluků je také počet OSD, které mohou vypadnou, aniž dojde ke ztrátě dat.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Zásuvný modul jerasure je nejobecnější a nejpřizpůsobivější,\n je také výchozí pro Ceph fondy kódované mazáním.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Přizpůsobivější technikou je reed_sol_van: postačí nastvit k\n          a m. Technika cauchy_good technique může být rychlejší, ale je třeba pečlivě nastavit velikost\n          paketu. Všechny z reed_sol_r6_op, liberation, blaum_roth, liber8tion jsou ekvivalenty RAID6\n          v tom smyslu, že je možné je nastavit pouze s m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Zásuvný modul isa obaluje knihovnu ISA. Funguje pouze na procesorech Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Zásuvný modul ISA přichází ve dvou Reed Solomon podobách.\n          Pokud je nastaveno reed_sol_van, je to Vandermonde, pokud je nastaveno Cauchy, je Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Počet paritních shluků, ze kterých každý obsahuje každý shluk dat ve svém\n          výpočetním rozsahu. Číslo je použito pro odhad odolnosti. Například, pokud c=2,\n          2 OSD mohou vypadnou aniž by byla ztracena data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Název crush nádoby sloužící jako první krok CRUSH pravidla.\n Například krok vzít výchozí.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Zajistit, aby žádné dva shluky nebyly v nádobě nacházejícící se ve stejné\n      doméně selhání. Například, pokud doména selhání je hostitel, žádné dva shluky nebudou uloženy na stejném hostiteli\n      Je použito pro vytvoření kroku CRUSH pravidla jako krok chooseleaf hostitele.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Omezit umístění na zařízení určité třídy\n      (např., ssd nebo hdd), pomocí názvu crush třídy zařízení v  CRUSH mapě.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Nastavit složku ze které načítat zásuvný modul mazacího kódu.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Umožnit všechny operace</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Umožnit pouze operace které neupraví server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Neumožňuje operace čtení či zápisu, ale umožňuje ostatní</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Neumožňuje čtení, zápis nebo jinou operaci která upravuje atributy        souboru nebo obsah složky</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Neumožnit vůbec žádný přístup</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Vyberte prioritu --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Nízká</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Vysoká</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Chyba</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informace</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Úspěch</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Uplynulých 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Uplynulých 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Uplynulých 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Uplynulá 1 hodina (výchozí)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Uplynulé 3 hodiny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Uplynulých 6 hodin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Uplynulých 12 hodin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Uplynulých 24 hodin</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Včera</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Dnes</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Dnes doposud</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Včerejšek</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Uplynulé 2 dny</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Tento den minulý týden</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Předchozí týden</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Tento týden</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Tento týden doposud</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Uplynulých 7 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Předchozí měsíc</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Tento měsíc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Tento měsíc doposud</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Uplynulých 30 dnů</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Uplynulých 90 dnů</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Uplynulých 6 měsíců</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Uplynulý 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Předchozí rok</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tento rok</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Tento rok doposud</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Uplynulé 2 roky</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Uplynulých 5 let</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nevybrány žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Aby položku bylo možné znovu vybrat, je třeba nejprve zrušit její výběr</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Dosažen limit výběru</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrovat štítky</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Přidat odznak</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Nejsou k dispozici žádné položky.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Odebrat</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonovat</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kopírovat</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Hloubková kontrola</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Zlikvidovat</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Zploštit</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Označit</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Označit ztracené</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Odznačit</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Ochránit</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Přejmenovat</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Obnovit</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Zrušit ochranu</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Změnit</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Znovuvytvořit</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Ukončit platnost</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Smazáno</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Přidáno</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Odebráno</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Upraveno</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Zrušeno</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Naklonováno</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Zkopírováno</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Zlikvidováno</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Zploštěno</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Označeno jako ztracené</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Chráněno</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Vyčištěno</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Přejmenováno</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Obnoveno</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Vzato zpět</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Zobrazeno</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Přesunout do koše</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Ochrana zrušena</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Znovu vytvořeno</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Platnost skončila</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ano</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Ne</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>žádné aktivní výstrahy</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>Jedna aktivní výstraha</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> aktivních výstrah\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Odpovídá jednomu pravidlu</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Odpovídá \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> pravidlům\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> s \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kvalita služby</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Požadovaný limit vst./výstup. bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit vst/výstup. operací / s</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Požadovaný limit vst./výstup. operací za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Požadovaný limit čtení bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Požadovaný limit zápisu bajtů za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Požadovaný limit operací čtení za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS dávka</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Požadovaný limit dávky bajtů vstup/výstupu.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS dávka</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Požadovaný limit dávky vst./výstup. operací.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Dávka BPS čtení</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Požadovaný limit dávky bajtů čtení.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Dávka IOPS čtení</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Požadovaný limit dávky čtení bajtů.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Dávka BPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Požadovaný limit bajtů dávky zápisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Dávka IOPS zápisu</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Požadovaný limit dávky operace zápisu.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Nepodařilo se \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Vykonává se</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>vykonat</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Vykonáno</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>neznámý úkol</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Vytváří se</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>vytvořit</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Aktualizuje se</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>aktualizovat</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Maže se</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Přidávání</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>přidat</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Odebírání</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>odebrat</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD zachycený stav „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>režim zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>protějšek zrcadlení pro fond „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>všechny přehledy</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Název už je používán \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> obsahuje zachycené stavy.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Klonuje se</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klonovat</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Je třeba, aby zachycený stav \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> byl chráněný.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kopíruje se</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>zkopírovat</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Zploštění</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>zploštit</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Název už je používán pro \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Není možné zrušit ochranu \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, protože obsahuje podřízené obrazy.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> není možné smazat, protože je chráněné.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Bere se zpět</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>vzít zpět</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Přesouvá se</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>přesunout</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Přesunuto</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do koše\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Obraz se nedaří najít.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Obnovuje se</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>obnovit</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ do „\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Název „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“ už je používán pro jiný obraz.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>obraz „\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Čistí se</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>vyčistit</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>všechny fondy</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>obrazy z \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Zrcadlení nelze vypnout protože obsahuje protějšek.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>stroj „\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>fond „\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>profil mazacího kódu „\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>cíl „\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>“\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},VpIT:function(t,e,n){var a=n("xDBR"),r=n("xs3f");(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.5",mode:a?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},Vu81:function(t,e,n){var a=n("0GbY"),r=n("JBy8"),i=n("dBg+"),s=n("glrk");t.exports=a("Reflect","ownKeys")||function(t){var e=r.f(s(t)),n=i.f;return n?e.concat(n(t)):e}},WF9J:function(t,e,n){"use strict";n("TeQF"),n("QWBl"),n("4mDm"),n("zKZe"),n("07d7"),n("4l63"),n("PKPk"),n("ENF9"),n("3bBZ");var a=n("hKI/"),r=n.n(a),i=n("9/5/"),s=n.n(i),o=n("uyHG"),u=n.n(o),l=function(){if("undefined"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,a){return t[0]===e&&(n=a,!0)})),n}return function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),a=this.__entries__[n];return a&&a[1]},e.prototype.set=function(e,n){var a=t(this.__entries__,e);~a?this.__entries__[a][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,a=t(n,e);~a&&n.splice(a,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,a=this.__entries__;n<a.length;n++){var r=a[n];t.call(e,r[1],r[0])}},e}()}(),d="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,c="undefined"!=typeof global&&global.Math===Math?global:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),f="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(c):function(t){return setTimeout((function(){return t(Date.now())}),1e3/60)},h=["top","right","bottom","left","width","height","size","weight"],g="undefined"!=typeof MutationObserver,p=function(){function t(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(t,e){var n=!1,a=!1,r=0;function i(){n&&(n=!1,t()),a&&o()}function s(){f(i)}function o(){var t=Date.now();if(n){if(t-r<2)return;a=!0}else n=!0,a=!1,setTimeout(s,20);r=t}return o}(this.refresh.bind(this))}return t.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},t.prototype.removeObserver=function(t){var e=this.observers_,n=e.indexOf(t);~n&&e.splice(n,1),!e.length&&this.connected_&&this.disconnect_()},t.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},t.prototype.updateObservers_=function(){var t=this.observers_.filter((function(t){return t.gatherActive(),t.hasActive()}));return t.forEach((function(t){return t.broadcastActive()})),t.length>0},t.prototype.connect_=function(){d&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),g?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){d&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?"":e;h.some((function(t){return!!~n.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),b=function(t,e){for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];Object.defineProperty(t,r,{value:e[r],enumerable:!1,writable:!1,configurable:!0})}return t},m=function(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView||c},y=T(0,0,0,0);function v(t){return parseFloat(t)||0}function x(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return e.reduce((function(e,n){return e+v(t["border-"+n+"-width"])}),0)}var _="undefined"!=typeof SVGGraphicsElement?function(t){return t instanceof m(t).SVGGraphicsElement}:function(t){return t instanceof m(t).SVGElement&&"function"==typeof t.getBBox};function T(t,e,n,a){return{x:t,y:e,width:n,height:a}}var O=function(){function t(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=T(0,0,0,0),this.target=t}return t.prototype.isActive=function(){var t,e=(t=this.target,d?_(t)?function(t){var e=t.getBBox();return T(0,0,e.width,e.height)}(t):function(t){var e=t.clientWidth,n=t.clientHeight;if(!e&&!n)return y;var a=m(t).getComputedStyle(t),r=function(t){for(var e={},n=0,a=["top","right","bottom","left"];n<a.length;n++){var r=a[n];e[r]=v(t["padding-"+r])}return e}(a),i=r.left+r.right,s=r.top+r.bottom,o=v(a.width),u=v(a.height);if("border-box"===a.boxSizing&&(Math.round(o+i)!==e&&(o-=x(a,"left","right")+i),Math.round(u+s)!==n&&(u-=x(a,"top","bottom")+s)),!function(t){return t===m(t).document.documentElement}(t)){var l=Math.round(o+i)-e,d=Math.round(u+s)-n;1!==Math.abs(l)&&(o-=l),1!==Math.abs(d)&&(u-=d)}return T(r.left,r.top,o,u)}(t):y);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},t.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},t}(),w=function(t,e){var n,a,r,i,s,o,u,l=(a=(n=e).x,r=n.y,i=n.width,s=n.height,o="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,u=Object.create(o.prototype),b(u,{x:a,y:r,width:i,height:s,top:r,right:a+i,bottom:s+r,left:a}),u);b(this,{target:t,contentRect:l})},S=function(){function t(t,e,n){if(this.activeObservations_=[],this.observations_=new l,"function"!=typeof t)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=t,this.controller_=e,this.callbackCtx_=n}return t.prototype.observe=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof m(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)||(e.set(t,new O(t)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof m(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)&&(e.delete(t),e.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach((function(e){e.isActive()&&t.activeObservations_.push(e)}))},t.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,e=this.activeObservations_.map((function(t){return new w(t.target,t.broadcastRect())}));this.callback_.call(t,e,t),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return this.activeObservations_.length>0},t}(),I="undefined"!=typeof WeakMap?new WeakMap:new l,N=function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=p.getInstance(),a=new S(e,n,this);I.set(this,a)};["observe","unobserve","disconnect"].forEach((function(t){N.prototype[t]=function(){var e;return(e=I.get(this))[t].apply(e,arguments)}}));var C=void 0!==c.ResizeObserver?c.ResizeObserver:N,R=n("AxL3"),A=n.n(R),k=(n("E9XD"),n("sMBO"),n("rB9j"),n("Rm1S"),n("UxlC"),null),E=null;function L(){if(null===k){if("undefined"==typeof document)return k=0;var t=document.body,e=document.createElement("div");e.classList.add("simplebar-hide-scrollbar"),t.appendChild(e);var n=e.getBoundingClientRect().right;t.removeChild(e),k=n}return k}function D(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function P(t){return t&&t.ownerDocument?t.ownerDocument:document}A.a&&window.addEventListener("resize",(function(){E!==window.devicePixelRatio&&(E=window.devicePixelRatio,k=null)}));var M=function(){function t(e,n){var a=this;this.onScroll=function(){var t=D(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],o=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var u=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-o);"x"===a.draggedAxis&&(u=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u-(r+i.size):u,u=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-u:u),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=u},this.onEndDrag=function(t){var e=P(a.el),n=D(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=r()(this.recalculate.bind(this),64),this.onMouseMove=r()(this.onMouseMove.bind(this),64),this.hideScrollbars=s()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=s()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=u()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=P(t),a=D(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),A.a&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.initListeners=function(){var t=this,e=D(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||C)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=D(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.contentEl.offsetWidth,n=this.heightAutoObserverEl.offsetHeight<=1,a=this.heightAutoObserverEl.offsetWidth<=1||e>0,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var o=this.contentEl.scrollHeight,u=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=n?"auto":"100%",this.placeholderEl.style.width=a?(e||u)+"px":"auto",this.placeholderEl.style.height=o+"px";var l=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=0!==e&&u>e,this.axis.y.isOverflowing=o>l,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var d=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&u>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&o>l-d,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));o="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o+(a-i.size):o,i.el.style.transform="x"===e?"translate3d("+o+"px, 0, 0)":"translate3d(0, "+o+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=P(this.el),a=D(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=D(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,u=-1===o?s-i:s+i;!function t(){var r,i;-1===o?s>u&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=40,r)),a.requestAnimationFrame(t)):s<u&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=40,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:L()}catch(t){return L()}},e.removeListeners=function(){var t=this,e=D(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver.disconnect(),this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();M.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},M.instances=new WeakMap;var q=M,j=(n("FZtP"),null),F=null;function G(){if(null===j){if("undefined"==typeof document)return j=0;var t=document.body,e=document.createElement("div");e.classList.add("simplebar-hide-scrollbar"),t.appendChild(e);var n=e.getBoundingClientRect().right;t.removeChild(e),j=n}return j}A.a&&window.addEventListener("resize",(function(){F!==window.devicePixelRatio&&(F=window.devicePixelRatio,j=null)}));var V=function(t){return Array.prototype.reduce.call(t,(function(t,e){var n=e.name.match(/data-simplebar-(.+)/);if(n){var a=n[1].replace(/\W+(.)/g,(function(t,e){return e.toUpperCase()}));switch(e.value){case"true":t[a]=!0;break;case"false":t[a]=!1;break;case void 0:t[a]=!0;break;default:t[a]=e.value}}return t}),{})};function z(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:window}function B(t){return t&&t.ownerDocument?t.ownerDocument:document}var Y=function(){function t(e,n){var a=this;this.onScroll=function(){var t=z(a.el);a.scrollXTicking||(t.requestAnimationFrame(a.scrollX),a.scrollXTicking=!0),a.scrollYTicking||(t.requestAnimationFrame(a.scrollY),a.scrollYTicking=!0)},this.scrollX=function(){a.axis.x.isOverflowing&&(a.showScrollbar("x"),a.positionScrollbar("x")),a.scrollXTicking=!1},this.scrollY=function(){a.axis.y.isOverflowing&&(a.showScrollbar("y"),a.positionScrollbar("y")),a.scrollYTicking=!1},this.onMouseEnter=function(){a.showScrollbar("x"),a.showScrollbar("y")},this.onMouseMove=function(t){a.mouseX=t.clientX,a.mouseY=t.clientY,(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseMoveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseMoveForAxis("y")},this.onMouseLeave=function(){a.onMouseMove.cancel(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&a.onMouseLeaveForAxis("x"),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&a.onMouseLeaveForAxis("y"),a.mouseX=-1,a.mouseY=-1},this.onWindowResize=function(){a.scrollbarWidth=a.getScrollbarWidth(),a.hideNativeScrollbar()},this.hideScrollbars=function(){a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.track.rect)||(a.axis.y.scrollbar.el.classList.remove(a.classNames.visible),a.axis.y.isVisible=!1),a.isWithinBounds(a.axis.x.track.rect)||(a.axis.x.scrollbar.el.classList.remove(a.classNames.visible),a.axis.x.isVisible=!1)},this.onPointerEvent=function(t){var e,n;a.axis.x.track.rect=a.axis.x.track.el.getBoundingClientRect(),a.axis.y.track.rect=a.axis.y.track.el.getBoundingClientRect(),(a.axis.x.isOverflowing||a.axis.x.forceVisible)&&(e=a.isWithinBounds(a.axis.x.track.rect)),(a.axis.y.isOverflowing||a.axis.y.forceVisible)&&(n=a.isWithinBounds(a.axis.y.track.rect)),(e||n)&&(t.preventDefault(),t.stopPropagation(),"mousedown"===t.type&&(e&&(a.axis.x.scrollbar.rect=a.axis.x.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.x.scrollbar.rect)?a.onDragStart(t,"x"):a.onTrackClick(t,"x")),n&&(a.axis.y.scrollbar.rect=a.axis.y.scrollbar.el.getBoundingClientRect(),a.isWithinBounds(a.axis.y.scrollbar.rect)?a.onDragStart(t,"y"):a.onTrackClick(t,"y"))))},this.drag=function(e){var n=a.axis[a.draggedAxis].track,r=n.rect[a.axis[a.draggedAxis].sizeAttr],i=a.axis[a.draggedAxis].scrollbar,s=a.contentWrapperEl[a.axis[a.draggedAxis].scrollSizeAttr],o=parseInt(a.elStyles[a.axis[a.draggedAxis].sizeAttr],10);e.preventDefault(),e.stopPropagation();var u=(("y"===a.draggedAxis?e.pageY:e.pageX)-n.rect[a.axis[a.draggedAxis].offsetAttr]-a.axis[a.draggedAxis].dragOffset)/(r-i.size)*(s-o);"x"===a.draggedAxis&&(u=a.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?u-(r+i.size):u,u=a.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-u:u),a.contentWrapperEl[a.axis[a.draggedAxis].scrollOffsetAttr]=u},this.onEndDrag=function(t){var e=B(a.el),n=z(a.el);t.preventDefault(),t.stopPropagation(),a.el.classList.remove(a.classNames.dragging),e.removeEventListener("mousemove",a.drag,!0),e.removeEventListener("mouseup",a.onEndDrag,!0),a.removePreventClickId=n.setTimeout((function(){e.removeEventListener("click",a.preventClick,!0),e.removeEventListener("dblclick",a.preventClick,!0),a.removePreventClickId=null}))},this.preventClick=function(t){t.preventDefault(),t.stopPropagation()},this.el=e,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},n),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,t.instances.has(this.el)||(this.recalculate=r()(this.recalculate.bind(this),64),this.onMouseMove=r()(this.onMouseMove.bind(this),64),this.hideScrollbars=s()(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=s()(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=u()(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var e=document.createElement("div");e.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var n=e.firstElementChild;document.body.appendChild(n);var a=n.firstElementChild;n.scrollLeft=0;var r=t.getOffset(n),i=t.getOffset(a);n.scrollLeft=999;var s=t.getOffset(a);return{isRtlScrollingInverted:r.left!==i.left&&i.left-s.left!=0,isRtlScrollbarInverted:r.left!==i.left}},t.getOffset=function(t){var e=t.getBoundingClientRect(),n=B(t),a=z(t);return{top:e.top+(a.pageYOffset||n.documentElement.scrollTop),left:e.left+(a.pageXOffset||n.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),A.a&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var t=this;if(Array.prototype.filter.call(this.el.children,(function(e){return e.classList.contains(t.classNames.wrapper)})).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.axis.x.track.el=e.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=e.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.initListeners=function(){var t=this,e=z(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.addEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),e.addEventListener("resize",this.onWindowResize);var n=!1;this.resizeObserver=new(e.ResizeObserver||C)((function(){n&&t.recalculate()})),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),e.requestAnimationFrame((function(){n=!0})),this.mutationObserver=new e.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var t=z(this.el);this.elStyles=t.getComputedStyle(this.el),this.isRtl="rtl"===this.elStyles.direction;var e=this.contentEl.offsetWidth,n=this.heightAutoObserverEl.offsetHeight<=1,a=this.heightAutoObserverEl.offsetWidth<=1||e>0,r=this.contentWrapperEl.offsetWidth,i=this.elStyles.overflowX,s=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var o=this.contentEl.scrollHeight,u=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=n?"auto":"100%",this.placeholderEl.style.width=a?(e||u)+"px":"auto",this.placeholderEl.style.height=o+"px";var l=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=0!==e&&u>e,this.axis.y.isOverflowing=o>l,this.axis.x.isOverflowing="hidden"!==i&&this.axis.x.isOverflowing,this.axis.y.isOverflowing="hidden"!==s&&this.axis.y.isOverflowing,this.axis.x.forceVisible="x"===this.options.forceVisible||!0===this.options.forceVisible,this.axis.y.forceVisible="y"===this.options.forceVisible||!0===this.options.forceVisible,this.hideNativeScrollbar();var d=this.axis.x.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&u>r-(this.axis.y.isOverflowing?this.scrollbarWidth:0),this.axis.y.isOverflowing=this.axis.y.isOverflowing&&o>l-d,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(t){if(void 0===t&&(t="y"),!this.axis[t].isOverflowing)return 0;var e,n=this.axis[t].track.el[this.axis[t].offsetSizeAttr];return e=Math.max(~~(n/this.contentEl[this.axis[t].scrollSizeAttr]*n),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(e=Math.min(e,this.options.scrollbarMaxSize)),e},e.positionScrollbar=function(e){if(void 0===e&&(e="y"),this.axis[e].isOverflowing){var n=this.contentWrapperEl[this.axis[e].scrollSizeAttr],a=this.axis[e].track.el[this.axis[e].offsetSizeAttr],r=parseInt(this.elStyles[this.axis[e].sizeAttr],10),i=this.axis[e].scrollbar,s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=~~((s="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-s:s)/(n-r)*(a-i.size));o="x"===e&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?o+(a-i.size):o,i.el.style.transform="x"===e?"translate3d("+o+"px, 0, 0)":"translate3d(0, "+o+"px, 0)"}},e.toggleTrackVisibility=function(t){void 0===t&&(t="y");var e=this.axis[t].track.el,n=this.axis[t].scrollbar.el;this.axis[t].isOverflowing||this.axis[t].forceVisible?(e.style.visibility="visible",this.contentWrapperEl.style[this.axis[t].overflowAttr]="scroll"):(e.style.visibility="hidden",this.contentWrapperEl.style[this.axis[t].overflowAttr]="hidden"),n.style.display=this.axis[t].isOverflowing?"block":"none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.rect=this.axis[t].track.el.getBoundingClientRect(),this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect(),this.isWithinBounds(this.axis[t].scrollbar.rect)?this.axis[t].scrollbar.el.classList.add(this.classNames.hover):this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[t].track.rect)?(this.showScrollbar(t),this.axis[t].track.el.classList.add(this.classNames.hover)):this.axis[t].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(t){void 0===t&&(t="y"),this.axis[t].track.el.classList.remove(this.classNames.hover),this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(t){void 0===t&&(t="y"),this.axis[t].isVisible||(this.axis[t].scrollbar.el.classList.add(this.classNames.visible),this.axis[t].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(t,e){void 0===e&&(e="y");var n=B(this.el),a=z(this.el);this.axis[e].dragOffset=("y"===e?t.pageY:t.pageX)-this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],this.draggedAxis=e,this.el.classList.add(this.classNames.dragging),n.addEventListener("mousemove",this.drag,!0),n.addEventListener("mouseup",this.onEndDrag,!0),null===this.removePreventClickId?(n.addEventListener("click",this.preventClick,!0),n.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(t,e){var n=this;if(void 0===e&&(e="y"),this.options.clickOnTrack){var a=z(this.el);this.axis[e].scrollbar.rect=this.axis[e].scrollbar.el.getBoundingClientRect();var r=this.axis[e].scrollbar.rect[this.axis[e].offsetAttr],i=parseInt(this.elStyles[this.axis[e].sizeAttr],10),s=this.contentWrapperEl[this.axis[e].scrollOffsetAttr],o=("y"===e?this.mouseY-r:this.mouseX-r)<0?-1:1,u=-1===o?s-i:s+i;!function t(){var r,i;-1===o?s>u&&(n.contentWrapperEl.scrollTo(((r={})[n.axis[e].offsetAttr]=s-=40,r)),a.requestAnimationFrame(t)):s<u&&(n.contentWrapperEl.scrollTo(((i={})[n.axis[e].offsetAttr]=s+=40,i)),a.requestAnimationFrame(t))}()}},e.getContentElement=function(){return this.contentEl},e.getScrollElement=function(){return this.contentWrapperEl},e.getScrollbarWidth=function(){try{return"none"===getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:G()}catch(t){return G()}},e.removeListeners=function(){var t=this,e=z(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,!0)})),["touchstart","touchend","touchmove"].forEach((function(e){t.el.removeEventListener(e,t.onPointerEvent,{capture:!0,passive:!0})})),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onWindowResize),this.mutationObserver.disconnect(),this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},e.unMount=function(){this.removeListeners(),t.instances.delete(this.el)},e.isWithinBounds=function(t){return this.mouseX>=t.left&&this.mouseX<=t.left+t.width&&this.mouseY>=t.top&&this.mouseY<=t.top+t.height},e.findChild=function(t,e){var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return Array.prototype.filter.call(t.children,(function(t){return n.call(t,e)}))[0]},t}();Y.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3},Y.instances=new WeakMap,Y.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll('[data-simplebar]:not([data-simplebar="init"])'),(function(t){Y.instances.has(t)||new Y(t,V(t.attributes))}))},Y.removeObserver=function(){this.globalObserver.disconnect()},Y.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),"undefined"!=typeof MutationObserver&&(this.globalObserver=new MutationObserver(Y.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))},Y.handleMutations=function(t){t.forEach((function(t){Array.prototype.forEach.call(t.addedNodes,(function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?!Y.instances.has(t)&&new Y(t,V(t.attributes)):Array.prototype.forEach.call(t.querySelectorAll('[data-simplebar]:not([data-simplebar="init"])'),(function(t){!Y.instances.has(t)&&new Y(t,V(t.attributes))})))})),Array.prototype.forEach.call(t.removedNodes,(function(t){1===t.nodeType&&(t.hasAttribute('[data-simplebar="init"]')?Y.instances.has(t)&&Y.instances.get(t).unMount():Array.prototype.forEach.call(t.querySelectorAll('[data-simplebar="init"]'),(function(t){Y.instances.has(t)&&Y.instances.get(t).unMount()})))}))}))},Y.getOptions=V,A.a&&Y.initHtmlApi(),n.d(e,"a",(function(){return H})),n.d(e,"b",(function(){return U}));class H{constructor(t){this.elRef=t}ngOnInit(){}ngAfterViewInit(){this.SimpleBar=new q(this.elRef.nativeElement,this.options||{})}ngOnDestroy(){this.SimpleBar.unMount(),this.SimpleBar=null}}class U{}},WFqU:function(t,e){var n="object"==typeof global&&global&&global.Object===Object&&global;t.exports=n},WJkJ:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},WKiH:function(t,e,n){var a=n("HYAF"),r="["+n("WJkJ")+"]",i=RegExp("^"+r+r+"*"),s=RegExp(r+r+"*$"),o=function(t){return function(e){var n=String(a(e));return 1&t&&(n=n.replace(i,"")),2&t&&(n=n.replace(s,"")),n}};t.exports={start:o(1),end:o(2),trim:o(3)}},WYrj:function(t,e,n){!function(t){"use strict";var e=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];t.defineLocale("dv",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(t){return"މފ"===t},meridiem:function(t,e,n){return t<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("wd/R"))},WaXT:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("2vnA"),i=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.a.apply(void 0,t)}),r.a),s=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.c.apply(void 0,t)}),r.c),o=Object.assign((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r.d.apply(void 0,t)}),r.d),u=n("MP8s");n.d(e,"a",(function(){return c}));var l=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},d=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},c=function(){function t(){this._dispose=[]}return Object.defineProperty(t.prototype,"nodes",{get:function(){return this._nodes},set:function(t){this.setNodes(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"marginTop",{get:function(){var t=this.viewportNodes&&this.viewportNodes.length&&this.viewportNodes[0];return(t&&t.parent?t.position-t.parent.position-t.parent.getSelfHeight():0)+"px"},enumerable:!0,configurable:!0}),t.prototype.setNodes=function(t){this._nodes=t},t.prototype.ngOnInit=function(){var t=this;this.virtualScroll=this.treeModel.virtualScroll,this._dispose=[Object(r.e)((function(){return t.virtualScroll.getViewportNodes(t.nodes).map((function(t){return t.index}))}),(function(e){t.viewportNodes=e.map((function(e){return t.nodes[e]}))}),{compareStructural:!0,fireImmediately:!0}),Object(r.e)((function(){return t.nodes}),(function(e){t.viewportNodes=t.virtualScroll.getViewportNodes(e)}))]},t.prototype.ngOnDestroy=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.trackNode=function(t,e){return e.id},l([Object(a.Input)(),d("design:type",Object),d("design:paramtypes",[Object])],t.prototype,"nodes",null),l([Object(a.Input)(),d("design:type",u.a)],t.prototype,"treeModel",void 0),l([o,d("design:type",Object)],t.prototype,"_nodes",void 0),l([Object(a.Input)(),d("design:type",Object)],t.prototype,"templates",void 0),l([o,d("design:type",Array)],t.prototype,"viewportNodes",void 0),l([s,d("design:type",String),d("design:paramtypes",[])],t.prototype,"marginTop",null),l([i,d("design:type",Function),d("design:paramtypes",[Object]),d("design:returntype",void 0)],t.prototype,"setNodes",null),l([Object(a.Component)({selector:"tree-node-collection",encapsulation:a.ViewEncapsulation.None,template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div [style.margin-top]="marginTop">\n        <tree-node\n          *ngFor="let node of viewportNodes; let i = index; trackBy: trackNode"\n          [node]="node"\n          [index]="i"\n          [templates]="templates"\n        >\n        </tree-node>\n      </div>\n    </ng-container>\n  '})],t)}()},WiuZ:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("978R"),s=n("z/SZ"),o=n("2uy1"),u=n("s7LF"),l=n("+gVj"),d=n("KOzp");n("wnGv"),n("GiVz"),n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return w}));var c=a["ɵcrt"]({encapsulation:0,styles:[[".select-menu-item[_ngcontent-%COMP%]{display:block;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.09);font-size:12px}.select-menu-item[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.select-menu-item-icon[_ngcontent-%COMP%]{float:left;padding:.5em;width:3em}.select-menu-item-content[_ngcontent-%COMP%]{padding:.5em}"]],data:{}});function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback text-center"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.messages.customValidations[e.parent.context.$implicit])}))}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,f)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form.showError("filter",a["ɵnov"](e.parent,2))&&n.filter.hasError(e.context.$implicit))}),null)}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,1)],(function(t,e){var n=t(e,3,0,e.component.icons.check);t(e,2,0,n)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"small",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),a["ɵted"](3,null,[" ","  "]))],null,(function(t,e){t(e,3,0,e.parent.context.$implicit.description)}))}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,11,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.triggerSelection(t.context.$implicit)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{"help-block disabled":0}),(t()(),a["ɵeld"](4,0,null,null,3,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](8,0,null,null,3,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](9,null,[" "," "])),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](11,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=t(e,3,0,!(n.data.length!==n.selectionLimit&&e.context.$implicit.enabled||e.context.$implicit.selected));t(e,2,0,"select-menu-item",a),t(e,6,0,e.context.$implicit.selected),t(e,11,0,e.context.$implicit.description)}),(function(t,e){t(e,9,0,e.context.$implicit.name)}))}function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"div",[["class","select-menu-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addCustomOption()&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](4,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](5,1),(t()(),a["ɵted"](-1,null,["   "])),(t()(),a["ɵeld"](7,0,null,null,1,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["ɵted"](8,null,[" "," '","' "]))],(function(t,e){var n=t(e,5,0,e.component.icons.tag);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,8,0,n.messages.add,n.filter.value)}))}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,2,"span",[["class","form-text text-muted text-center text-warning"]],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,i.c,[a.ViewContainerRef,s.a,i.a,a.ElementRef,a.Renderer2,o.a],{tooltip:[0,"tooltip"]},null),(t()(),a["ɵted"](2,null,[" "," "])),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.messages.selectionLimit.tooltip)}),(function(t,e){t(e,2,0,e.component.messages.selectionLimit.text)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","is-invalid"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.data.length===n.selectionLimit)}),null)}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,2).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,2).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,5).onSubmit()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,u.G,[],null,null),a["ɵdid"](2,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,u.d,null,[u.l]),a["ɵdid"](4,16384,null,0,u.s,[[4,u.d]],null,null),a["ɵdid"](5,16384,null,0,l.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](6,0,null,null,9,"div",[],null,null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,6,"input",[["class","form-control text-center"],["formControlName","filter"],["type","text"]],[[8,"placeholder",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["ɵnov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,8)._compositionEnd(n.target.value)&&r),"keyup"===e&&(r=!1!==(13==n.keyCode?i.selectOption():i.updateFilter())&&r),r}),null,null)),a["ɵdid"](8,16384,null,0,u.e,[a.Renderer2,a.ElementRef,[2,u.b]],null,null),a["ɵprd"](1024,null,u.p,(function(t){return[t]}),[u.e]),a["ɵdid"](10,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,u.q,null,[u.j]),a["ɵdid"](12,16384,null,0,u.r,[[4,u.q]],null,null),a["ɵdid"](13,16384,null,0,l.h,[[3,u.d],l.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](15,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,b)),a["ɵdid"](17,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.form),t(e,5,0,n.form),t(e,10,0,"filter"),t(e,13,0,"filter"),t(e,15,0,n.Object.keys(n.messages.customValidations)),t(e,17,0,n.filteredOptions),t(e,19,0,n.isCreatable()),t(e,21,0,n.data.length===n.selectionLimit)}),(function(t,e){var n=e.component;t(e,0,0,a["ɵnov"](e,4).ngClassUntouched,a["ɵnov"](e,4).ngClassTouched,a["ɵnov"](e,4).ngClassPristine,a["ɵnov"](e,4).ngClassDirty,a["ɵnov"](e,4).ngClassValid,a["ɵnov"](e,4).ngClassInvalid,a["ɵnov"](e,4).ngClassPending),t(e,7,0,n.messages.filter,a["ɵnov"](e,12).ngClassUntouched,a["ɵnov"](e,12).ngClassTouched,a["ɵnov"](e,12).ngClassPristine,a["ɵnov"](e,12).ngClassDirty,a["ɵnov"](e,12).ngClassValid,a["ɵnov"](e,12).ngClassInvalid,a["ɵnov"](e,12).ngClassPending,a["ɵnov"](e,13).validClass,a["ɵnov"](e,13).invalidClass)}))}function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,4,"a",[["class","select-menu-edit float-left"],["container","body"],["outsideClick","true"],["placement","bottom"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵdid"](3,212992,null,0,d.c,[d.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,o.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0,"select-menu-edit float-left",e.component.elemClass),t(e,3,0,a["ɵnov"](e.parent,0),"bottom","true","body")}),null)}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.empty)}))}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted  float-left"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" ","\n"]))],null,(function(t,e){t(e,1,0,e.component.messages.noOptions)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵand"](0,[["popTemplate",2]],null,0,null,x)),(t()(),a["ɵand"](16777216,null,null,1,null,_)),a["ɵdid"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,O)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.customBadges||n.options.length>0),t(e,4,0,0===n.data.length&&!(!n.customBadges&&0===n.options.length)),t(e,6,0,!n.customBadges&&0===n.options.length)}),null)}},WwFo:function(t,e,n){var a=n("juv8"),r=n("7GkX");t.exports=function(t,e){return t&&a(e,r(e),t)}},WxRl:function(t,e,n){!function(t){"use strict";var e="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(t,e,n,a){var r=t;switch(n){case"s":return a||e?"néhány másodperc":"néhány másodperce";case"ss":return r+(a||e)?" másodperc":" másodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return r+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" óra":" órája");case"hh":return r+(a||e?" óra":" órája");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return r+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" hónap":" hónapja");case"MM":return r+(a||e?" hónap":" hónapja");case"y":return"egy"+(a||e?" év":" éve");case"yy":return r+(a||e?" év":" éve")}return""}function a(t){return(t?"":"[múlt] ")+"["+e[this.day()]+"] LT[-kor]"}t.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(t){return"u"===t.charAt(1).toLowerCase()},meridiem:function(t,e,n){return t<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"X+05":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a={toggleExpanded:"toggleExpanded",activate:"activate",deactivate:"deactivate",nodeActivate:"nodeActivate",nodeDeactivate:"nodeDeactivate",select:"select",deselect:"deselect",focus:"focus",blur:"blur",initialized:"initialized",updateData:"updateData",moveNode:"moveNode",copyNode:"copyNode",event:"event",loadNodeChildren:"loadNodeChildren",changeFilter:"changeFilter",stateChange:"stateChange"}},X709:function(t,e,n){!function(t){"use strict";t.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e?"a":2===e?"a":"e")},week:{dow:1,doy:4}})}(n("wd/R"))},XDbj:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("sVev"),r=n("7o/Q");function i(t=u){return e=>e.lift(new s(t))}class s{constructor(t){this.errorFactory=t}call(t,e){return e.subscribe(new o(t,this.errorFactory))}}class o extends r.a{constructor(t,e){super(t),this.errorFactory=e,this.hasValue=!1}_next(t){this.hasValue=!0,this.destination.next(t)}_complete(){if(this.hasValue)return this.destination.complete();{let e;try{e=this.errorFactory()}catch(t){e=t}this.destination.error(e)}}}function u(){return new a.a}},XDpg:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"周";default:return t}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("wd/R"))},XFyV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},XGnz:function(t,e,n){var a=n("CH3K"),r=n("BiGR");t.exports=function t(e,n,i,s,o){var u=-1,l=e.length;for(i||(i=r),o||(o=[]);++u<l;){var d=e[u];n>0&&i(d)?n>1?t(d,n-1,i,s,o):a(o,d):s||(o[o.length]=d)}return o}},XGwC:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},XKAG:function(t,e,n){var a=n("ut/Y"),r=n("MMmD"),i=n("7GkX");t.exports=function(t){return function(e,n,s){var o=Object(e);if(!r(e)){var u=a(n,3);e=i(e),n=function(t){return u(o[t],t,o)}}var l=t(e,n,s);return l>-1?o[u?e[l]:l]:void 0}}},XLvN:function(t,e,n){!function(t){"use strict";t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(t,e){return 12===t&&(t=0),"రాత్రి"===e?t<4?t:t+12:"ఉదయం"===e?t:"మధ్యాహ్నం"===e?t>=10?t:t+12:"సాయంత్రం"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"రాత్రి":t<10?"ఉదయం":t<17?"మధ్యాహ్నం":t<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("wd/R"))},XNiG:function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return d}));var a=n("HDdC"),r=n("7o/Q"),i=n("quSY"),s=n("9ppp"),o=n("Ylt2"),u=n("2QA8");class l extends r.a{constructor(t){super(t),this.destination=t}}let d=(()=>{class t extends a.a{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[u.a](){return new l(this)}lift(t){const e=new c(this,this);return e.operator=t,e}next(t){if(this.closed)throw new s.a;if(!this.isStopped){const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].next(t)}}error(t){if(this.closed)throw new s.a;this.hasError=!0,this.thrownError=t,this.isStopped=!0;const{observers:e}=this,n=e.length,a=e.slice();for(let r=0;r<n;r++)a[r].error(t);this.observers.length=0}complete(){if(this.closed)throw new s.a;this.isStopped=!0;const{observers:t}=this,e=t.length,n=t.slice();for(let a=0;a<e;a++)n[a].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(t){if(this.closed)throw new s.a;return super._trySubscribe(t)}_subscribe(t){if(this.closed)throw new s.a;return this.hasError?(t.error(this.thrownError),i.a.EMPTY):this.isStopped?(t.complete(),i.a.EMPTY):(this.observers.push(t),new o.a(this,t))}asObservable(){const t=new a.a;return t.source=this,t}}return t.create=(t,e)=>new c(t,e),t})();class c extends d{constructor(t,e){super(),this.destination=t,this.source=e}next(t){const{destination:e}=this;e&&e.next&&e.next(t)}error(t){const{destination:e}=this;e&&e.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:e}=this;return e?this.source.subscribe(t):i.a.EMPTY}}},XYm9:function(t,e,n){var a=n("+K+b");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}},Xg1U:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("978R"),i=(n("SVse"),a["ɵcrt"]({encapsulation:0,styles:[".tooltip[_nghost-%COMP%] {\n      display: block;\n      pointer-events: none;\n    }\n    .bs3.tooltip.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\n      margin-left: -2px;\n    }\n    .bs3.tooltip.bottom[_nghost-%COMP%] {\n      margin-top: 0px;\n    }\n    .bs3.bs-tooltip-left[_nghost-%COMP%], .bs3.bs-tooltip-right[_nghost-%COMP%]{\n      margin: 0px;\n    }\n    .bs3.bs-tooltip-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs3.bs-tooltip-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      margin: .3rem 0;\n    }"],data:{}}));function s(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,0,"div",[["class","tooltip-arrow arrow"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","tooltip-inner"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-tooltip-container",[["role","tooltip"]],[[8,"className",0],[2,"show",null],[2,"bs3",null],[1,"id",0]],null,null,s,i)),a["ɵdid"](1,4243456,null,0,r.b,[r.a],null,null)],null,(function(t,e){t(e,0,0,"tooltip in tooltip-"+a["ɵnov"](e,1).placement+" bs-tooltip-"+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).placement+" "+a["ɵnov"](e,1).containerClass,!a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).isBs3,a["ɵnov"](e,1).id)}))}var u=a["ɵccf"]("bs-tooltip-container",r.b,o,{},{},["*"])},Xi7e:function(t,e,n){var a=n("KMkd"),r=n("adU4"),i=n("tMB7"),s=n("+6XX"),o=n("Z8oC");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}u.prototype.clear=a,u.prototype.delete=r,u.prototype.get=i,u.prototype.has=s,u.prototype.set=o,t.exports=u},XoHu:function(t,e,n){"use strict";function a(t){return null!==t&&"object"==typeof t}n.d(e,"a",(function(){return a}))},Y7HM:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("DH7j");function r(t){return!Object(a.a)(t)&&t-parseFloat(t)+1>=0}},YESw:function(t,e,n){var a=n("Cwc5")(Object,"create");t.exports=a},YNrV:function(t,e,n){"use strict";var a=n("g6v/"),r=n("0Dky"),i=n("33Wh"),s=n("dBg+"),o=n("0eef"),u=n("ewvW"),l=n("RK3t"),d=Object.assign,c=Object.defineProperty;t.exports=!d||r((function(){if(a&&1!==d({b:1},d(c({},"a",{enumerable:!0,get:function(){c(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=d({},t)[n]||"abcdefghijklmnopqrst"!=i(d({},e)).join("")}))?function(t,e){for(var n=u(t),r=arguments.length,d=1,c=s.f,f=o.f;r>d;)for(var h,g=l(arguments[d++]),p=c?i(g).concat(c(g)):i(g),b=p.length,m=0;b>m;)h=p[m++],a&&!f.call(g,h)||(n[h]=g[h]);return n}:d},YO3V:function(t,e,n){var a=n("NykK"),r=n("LcsW"),i=n("ExA7"),s=Function.prototype.toString,o=Object.prototype.hasOwnProperty,u=s.call(Object);t.exports=function(t){if(!i(t)||"[object Object]"!=a(t))return!1;var e=r(t);if(null===e)return!0;var n=o.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==u}},YRex:function(t,e,n){!function(t){"use strict";t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"يېرىم كېچە":a<900?"سەھەر":a<1130?"چۈشتىن بۇرۇن":a<1230?"چۈش":a<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("wd/R"))},YcCt:function(t,e,n){"use strict";function a(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,r){n=n||"=";var i={};if("string"!=typeof t||0===t.length)return i;var s=/\+/g;t=t.split(e=e||"&");var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var u=t.length;o>0&&u>o&&(u=o);for(var l=0;l<u;++l){var d,c,f,h,g=t[l].replace(s,"%20"),p=g.indexOf(n);p>=0?(d=g.substr(0,p),c=g.substr(p+1)):(d=g,c=""),f=decodeURIComponent(d),h=decodeURIComponent(c),a(i,f)?Array.isArray(i[f])?i[f].push(h):i[f]=[i[f],h]:i[f]=h}return i}},Ylt2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("quSY");class r extends a.a{constructor(t,e){super(),this.subject=t,this.subscriber=e,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,e=t.observers;if(this.subject=null,!e||0===e.length||t.isStopped||t.closed)return;const n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}},YuTi:function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},YzqF:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(){this._queue=[],this._pending=!1}return t.prototype.isLocked=function(){return this._pending},t.prototype.acquire=function(){var t=this,e=new Promise((function(e){return t._queue.push(e)}));return this._pending||this._dispatchNext(),e},t.prototype.runExclusive=function(t){return this.acquire().then((function(e){var n;try{n=t()}catch(a){throw e(),a}return Promise.resolve(n).then((function(t){return e(),t}),(function(t){throw e(),t}))}))},t.prototype._dispatchNext=function(){this._queue.length>0?(this._pending=!0,this._queue.shift()(this._dispatchNext.bind(this))):this._pending=!1},t}();e.default=a},Z0cm:function(t,e){t.exports=Array.isArray},Z21x:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("sne2");class a{constructor(t,e){this.location=t,this.actionLabels=e,this.name=this.actionLabels.CANCEL,this.back=()=>this.location.back()}}},Z4QM:function(t,e,n){!function(t){"use strict";var e=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("wd/R"))},Z8oC:function(t,e,n){var a=n("y1pI");t.exports=function(t,e){var n=this.__data__,r=a(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}},ZAMP:function(t,e,n){!function(t){"use strict";t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},ZCgT:function(t,e,n){var a=n("tLB3");t.exports=function(t){return t?(t=a(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},ZCpW:function(t,e,n){var a=n("lm/5"),r=n("O7RO"),i=n("IOzZ");t.exports=function(t){var e=r(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||a(n,t,e)}}},ZDA6:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("IheW"),i=n("pL04");let s=(()=>{class t{constructor(t){this.http=t}list(){return this.http.get("ui-api/scope")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.c))},token:t,providedIn:i.a}),t})()},ZEkX:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return u})),n("Mxhz");var a=n("0+/T"),r=(n("sne2"),n("x38r")),i=n("oxzT"),s=n("mtw6"),o=n("vCyI");n("a0VL"),n("nSDx"),n("aexS"),n("9nlD");const u=new(n("EgGo").a)("user-management/users");class l{constructor(t,e,n,a,r,s,u,l,d){this.userService=t,this.emptyPipe=e,this.modalService=n,this.notificationService=a,this.authStorageService=r,this.i18n=s,this.urlBuilder=u,this.cdDatePipe=l,this.actionLabels=d,this.selection=new o.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:i.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"update",icon:i.a.edit,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().username),name:this.actionLabels.EDIT},{permission:"delete",icon:i.a.destroy,click:()=>this.deleteUserModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Name"),prop:"name",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Email"),prop:"email",flexGrow:1,pipe:this.emptyPipe},{name:this.i18n("Roles"),prop:"roles",flexGrow:1,cellTemplate:this.userRolesTpl},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellTransformation:r.a.checkIcon},{name:this.i18n("Password expiration date"),prop:"pwdExpirationDate",flexGrow:1,pipe:this.cdDatePipe}]}getUsers(){this.userService.list().subscribe(t=>{t.forEach(t=>{t.pwdExpirationDate&&t.pwdExpirationDate>0&&(t.pwdExpirationDate=1e3*t.pwdExpirationDate)}),this.users=t})}updateSelection(t){this.selection=t}deleteUser(t){this.userService.delete(t).subscribe(()=>{this.getUsers(),this.modalRef.hide(),this.notificationService.show(s.a.success,this.i18n('Deleted user "{{username}}"',{username:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteUserModal(){const t=this.authStorageService.getUsername(),e=this.selection.first().username;t!==e?this.modalRef=this.modalService.show(a.a,{initialState:{itemDescription:"User",itemNames:[e],submitAction:()=>this.deleteUser(e)}}):this.notificationService.show(s.a.error,this.i18n('Failed to delete user "{{username}}"',{username:e}),this.i18n('You are currently logged in as "{{username}}".',{username:e}))}}},ZUHj:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("51Dv"),r=n("SeVD"),i=n("HDdC");function s(t,e,n,s,o=new a.a(t,n,s)){if(!o.closed)return e instanceof i.a?e.subscribe(o):Object(r.a)(e)(o)}},ZUd8:function(t,e,n){var a=n("ppGB"),r=n("HYAF"),i=function(t){return function(e,n){var i,s,o=String(r(e)),u=a(n),l=o.length;return u<0||u>=l?t?"":void 0:(i=o.charCodeAt(u))<55296||i>56319||u+1===l||(s=o.charCodeAt(u+1))<56320||s>57343?t?o.charAt(u):i:t?o.slice(u,u+2):s-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},ZWtO:function(t,e,n){var a=n("4uTw"),r=n("9Nap");t.exports=function(t,e){for(var n=0,i=(e=a(e,t)).length;null!=t&&n<i;)t=t[r(e[n++])];return n&&n==i?t:void 0}},Zduo:function(t,e,n){!function(t){"use strict";t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(t){return"p"===t.charAt(0).toLowerCase()},meridiem:function(t,e,n){return t>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("wd/R"))},ZfDv:function(t,e,n){var a=n("hh1v"),r=n("6LWA"),i=n("tiKp")("species");t.exports=function(t,e){var n;return r(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!r(n.prototype)?a(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},ZhuC:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({encapsulation:a.ViewEncapsulation.None,selector:"tree-loading-component",template:'\n    <span *ngIf="!template">loading...</span>\n    <ng-container\n      [ngTemplateOutlet]="template"\n      [ngTemplateOutletContext]="{ $implicit: node }">\n    </ng-container>\n  '})],t)}()},ZirO:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a;)if(!e(t[n],n,t))return!1;return!0}},a0VL:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.datePipe=t}transform(t){return null===t||""===t?"":this.datePipe.transform(t,"shortDate")+" "+this.datePipe.transform(t,"mediumTime")}}},a278:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("QC43"),i=n("XFyV"),s=n("DqMs"),o=n("/NlG"),u=n("GiVz"),l=n("i4WA"),d=n("6qls"),c=n("tz6c"),f=n("s7LF"),h=n("SVse");n("insk"),n("cUpR"),n("20UP"),n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return x}));var g=a["ɵcrt"]({encapsulation:0,styles:[[".grafana[_ngcontent-%COMP%]{width:100%;height:600px;z-index:0}.grafana_one[_ngcontent-%COMP%]{height:400px}.grafana_two[_ngcontent-%COMP%]{height:750px}.grafana_three[_ngcontent-%COMP%]{height:900px}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-weight:700}.dropdown-menu[_ngcontent-%COMP%]{top:20px;right:20px;left:auto}"]],data:{}});function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,r.b,r.a)),a["ɵdid"](1,49152,null,0,i.a,[],null,null),(t()(),a["ɵted"](-1,0,["Loading panel data..."]))],null,null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,o.a,[u.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Please consult the "])),(t()(),a["ɵeld"](3,0,null,0,1,"cd-doc",[["section","grafana"]],null,null,null,l.b,l.a)),a["ɵdid"](4,114688,null,0,d.a,[c.a,u.a],{section:[0,"section"]},null),(t()(),a["ɵted"](-1,0,[" on how to configure and enable the monitoring functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"grafana")}),null)}function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,o.a,[u.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Grafana Dashboard doesn't exist. Please refer to "])),(t()(),a["ɵeld"](3,0,null,0,1,"cd-doc",[["section","grafana"]],null,null,null,l.b,l.a)),a["ɵdid"](4,114688,null,0,d.a,[c.a,u.a],{section:[0,"section"]},null),(t()(),a["ɵted"](-1,0,[" on how to add dashboards to Grafana."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"grafana")}),null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,f.v,[a.ElementRef,a.Renderer2,[2,f.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,f.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[""," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,24,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,17,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,16,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](3,0,null,null,15,"div",[["class","form-inline timepicker"]],null,null,null,null,null)),(t()(),a["ɵeld"](4,0,null,null,1,"label",[["class","ml-1 my-1 col-form-label"],["for","timepicker"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Grafana Time Picker"])),(t()(),a["ɵeld"](6,0,null,null,7,"select",[["class","custom-select my-1 mx-3"],["id","timepicker"],["name","timepicker"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["ɵnov"](t,7).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,7).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(i.time=n)&&r),"ngModelChange"===e&&(r=!1!==i.onTimepickerChange(n)&&r),r}),null,null)),a["ɵdid"](7,16384,null,0,f.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,f.p,(function(t){return[t]}),[f.A]),a["ɵdid"](9,671744,null,0,f.u,[[8,null],[8,null],[8,null],[6,f.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["ɵprd"](2048,null,f.q,null,[f.u]),a["ɵdid"](11,16384,null,0,f.r,[[4,f.q]],null,null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](13,278528,null,0,h.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](14,0,null,null,4,"button",[["class","btn btn-light my-1"],["title","Reset Settings"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.reset()&&a),a}),null,null)),(t()(),a["ɵeld"](15,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,h["ɵNgClassImpl"],h["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](17,278528,null,0,h.NgClass,[h["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](18,1),(t()(),a["ɵeld"](19,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["ɵeld"](20,0,null,null,4,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),a["ɵeld"](21,0,null,null,3,"div",[["class","grafana-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](22,0,[["iframe",1]],null,2,"iframe",[["class","grafana"],["frameborder","0"],["id","iframe"],["scrolling","no"]],[[8,"src",5]],null,null,null,null)),a["ɵprd"](512,null,h["ɵNgClassImpl"],h["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](24,278528,null,0,h.NgClass,[h["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null)],(function(t,e){var n=e.component;t(e,9,0,"timepicker",n.time),t(e,13,0,n.grafanaTimes);var a=t(e,18,0,n.icons.undo);t(e,17,0,a),t(e,24,0,"grafana",n.panelStyle)}),(function(t,e){var n=e.component;t(e,6,0,a["ɵnov"](e,11).ngClassUntouched,a["ɵnov"](e,11).ngClassTouched,a["ɵnov"](e,11).ngClassPristine,a["ɵnov"](e,11).ngClassDirty,a["ɵnov"](e,11).ngClassValid,a["ɵnov"](e,11).ngClassInvalid,a["ɵnov"](e,11).ngClassPending),t(e,22,0,n.grafanaSrc)}))}function x(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](1,16384,null,0,h.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,b)),a["ɵdid"](3,16384,null,0,h.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](5,16384,null,0,h.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,v)),a["ɵdid"](7,16384,null,0,h.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&n.grafanaExist),t(e,3,0,!n.grafanaExist),t(e,5,0,!n.dashboardExist),t(e,7,0,n.grafanaExist&&n.dashboardExist)}),null)}},a40w:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("EEJc"),i=n("ajRT"),s=n("s7LF"),o=n("+gVj"),u=n("SVse"),l=n("gp3X"),d=n("sb0X"),c=n("KVJa"),f=n("Z21x"),h=n("sne2"),g=n("OLbh"),p=n("LqlI");n.d(e,"a",(function(){return _}));var b=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function m(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.description)}))}function v(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,[[null,"hide"]],(function(t,e,n){var a=!0;return"hide"===e&&(a=!1!==t.component.cancel()&&a),a}),r.c,r.b)),a["ɵdid"](1,49152,null,0,i.a,[],null,{hide:"hide"}),(t()(),a["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](3,null,["",""])),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["name","confirmationForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,s.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,s.d,null,[s.l]),a["ɵdid"](9,16384,null,0,s.s,[[4,s.d]],null,null),a["ɵdid"](10,16384,null,0,o.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,m)),a["ɵdid"](13,540672,null,0,u.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,y)),a["ɵdid"](15,16384,null,0,u.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmit(r.confirmationForm.value)&&a),a}),l.b,l.a)),a["ɵdid"](19,114688,null,0,d.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),a["ɵdid"](22,49152,null,0,f.a,[u.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.confirmationForm),t(e,10,0,n.confirmationForm),t(e,13,0,n.bodyContext,n.bodyTpl),t(e,15,0,n.description),t(e,19,0,n.confirmationForm),t(e,22,0,"Cancel",n.boundCancel)}),(function(t,e){var n=e.component;t(e,3,0,n.titleText),t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.buttonText)}))}function x(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-confirmation-modal",[],null,null,null,v,b)),a["ɵdid"](1,245760,null,0,g.a,[p.a,p.b],null,null)],(function(t,e){t(e,1,0)}),null)}var _=a["ɵccf"]("cd-confirmation-modal",g.a,x,{},{},[])},a96k:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a=!0){this.selected=t,this.name=e,this.description=n,this.enabled=a}}},aHM3:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("8Y7J"),n("s7LF");class a{static forRoot(){return{ngModule:a,providers:[]}}}},aIdf:function(t,e,n){!function(t){"use strict";function e(t,e,n){return t+" "+function(t,e){return 2===e?function(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}(t):t}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],t)}t.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:function(t){switch(function t(e){return e>9?t(e%10):e}(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(t){return t+(1===t?"añ":"vet")},week:{dow:1,doy:4}})}(n("wd/R"))},aIsn:function(t,e,n){!function(t){"use strict";t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},aQkU:function(t,e,n){!function(t){"use strict";t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},aXbf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("LvDl"),r=n("8Y7J");let i=(()=>{class t{constructor(){}format_number(t,e,n,r=1){if(a.isString(t)&&(t=Number(t)),!a.isNumber(t))return"-";let i=t<1?0:Math.floor(Math.log(t)/Math.log(e));i=i>=n.length?n.length-1:i;let s=a.round(t/Math.pow(e,i),r).toString();return""===s?"-":(""!==n[i]&&(s=`${s} ${n[i]}`),s)}toBytes(t,e=null){const n=["b","k","m","g","t","p","e","z","y"],r=RegExp("^(\\d+(.\\d+)?) ?(["+n.join("")+"]?(b|ib|B/s)?)?$","i").exec(t);if(null===r)return e;let i=parseFloat(r[1]);return a.isString(r[3])&&(i*=Math.pow(1024,n.indexOf(r[3].toLowerCase()[0]))),Math.round(i)}toMilliseconds(t){const e=/^\s*(\d+)\s*(ms)?\s*$/i.exec(t);return null!==e?+e[1]:0}toIops(t){const e=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(t);return null!==e?+e[1]:0}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},adU4:function(t,e,n){var a=n("y1pI"),r=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=a(e,t);return!(n<0||(n==e.length-1?e.pop():r.call(e,n,1),--this.size,0))}},aexS:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("2Vo4"),r=n("jKX/"),i=n("8Y7J");let s=(()=>{class t{constructor(){this.isPwdDisplayedSource=new a.a(!1),this.isPwdDisplayed$=this.isPwdDisplayedSource.asObservable()}set(t,e,n={},a=!1,i=null,s=!1){localStorage.setItem("dashboard_username",t),localStorage.setItem("access_token",e),localStorage.setItem("dashboard_permissions",JSON.stringify(new r.a(n))),localStorage.setItem("user_pwd_expiration_date",String(i)),localStorage.setItem("user_pwd_update_required",String(s)),localStorage.setItem("sso",String(a))}remove(){localStorage.removeItem("access_token"),localStorage.removeItem("dashboard_username"),localStorage.removeItem("user_pwd_expiration_data"),localStorage.removeItem("user_pwd_update_required")}getToken(){return localStorage.getItem("access_token")}isLoggedIn(){return null!==localStorage.getItem("dashboard_username")}getUsername(){return localStorage.getItem("dashboard_username")}getPermissions(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new r.a({})))}getPwdExpirationDate(){return Number(localStorage.getItem("user_pwd_expiration_date"))}getPwdUpdateRequired(){return"true"===localStorage.getItem("user_pwd_update_required")}isSSO(){return"true"===localStorage.getItem("sso")}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})()},afO8:function(t,e,n){var a,r,i,s=n("f5p1"),o=n("2oRo"),u=n("hh1v"),l=n("kRJp"),d=n("UTVS"),c=n("93I0"),f=n("0BK2");if(s){var h=new(0,o.WeakMap),g=h.get,p=h.has,b=h.set;a=function(t,e){return b.call(h,t,e),e},r=function(t){return g.call(h,t)||{}},i=function(t){return p.call(h,t)}}else{var m=c("state");f[m]=!0,a=function(t,e){return l(t,m,e),e},r=function(t){return d(t,m)?t[m]:{}},i=function(t){return d(t,m)}}t.exports={set:a,get:r,has:i,enforce:function(t){return i(t)?r(t):a(t,{})},getterFor:function(t){return function(e){var n;if(!u(e)||(n=r(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},afOK:function(t,e,n){t.exports=n("pZt1")},ajRT:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J");class r{constructor(){this.hide=new a.EventEmitter}close(){this.modalRef&&this.modalRef.hide(),this.hide.emit()}}},atuK:function(t,e,n){"use strict";n.d(e,"a",(function(){return v})),n.d(e,"b",(function(){return E})),n.d(e,"d",(function(){return H})),n.d(e,"c",(function(){return rt}));var a=n("8Y7J"),r=n("ienR"),i=n("SVse"),s=(n("s7LF"),n("2uy1")),o=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,u)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,d)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function h(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,f)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function b(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,c)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,h)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,p)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function m(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,b)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),m,o)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.b,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var v=a["ɵccf"]("bs-datepicker-container",r.b,y,{},{},[]),x=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function _(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function T(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,_)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function O(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function w(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,O)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,S)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,T)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,w)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,N)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,C)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,R)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-datepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),A,x)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.e,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var E=a["ɵccf"]("bs-datepicker-inline-container",r.e,k,{},{},[]),L=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,D)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,M)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function j(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function F(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,j)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function G(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function V(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,P)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,q)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,F)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,G)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,V)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function B(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,z)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function Y(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-inline-container",[],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),B,L)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.k,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var H=a["ɵccf"]("bs-daterangepicker-inline-container",r.k,Y,{},{},[]),U=a["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"datepickerAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function W(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-days-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onHoverWeek"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.dayHoverHandler(n)&&a),"onHoverWeek"===e&&(a=!1!==r.weekHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.daySelectHandler(n)&&a),a}),It,xt)),a["ɵdid"](1,49152,null,0,r.B,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["ɵunv"](e,1,1,a["ɵnov"](e,2).transform(n.options)))}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)}))}function K(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,W)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.daysCalendar)))}),null)}function $(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-month-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.monthHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.monthSelectHandler(n)&&a),a}),At,Nt)),a["ɵdid"](1,49152,null,0,r.C,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function Z(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,$)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.monthsCalendar)))}),null)}function J(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"bs-years-calendar-view",[],[[2,"bs-datepicker-multiple",null]],[[null,"onNavigate"],[null,"onViewMode"],[null,"onHover"],[null,"onSelect"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.setViewMode(n)&&a),"onHover"===e&&(a=!1!==r.yearHoverHandler(n)&&a),"onSelect"===e&&(a=!1!==r.yearSelectHandler(n)&&a),a}),Mt,Lt)),a["ɵdid"](1,49152,null,0,r.E,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){t(e,1,0,e.context.$implicit)}),(function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["ɵunv"](e,0,0,a["ɵnov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)}))}function Q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,2,null,J)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,2,0,a["ɵunv"](e,2,0,a["ɵnov"](e,3).transform(n.yearsCalendar)))}),null)}function X(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-success"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Apply"])),(t()(),a["ɵeld"](3,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Cancel"]))],null,null)}function tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,gt,ct)),a["ɵdid"](2,49152,null,0,r.y,[],{ranges:[0,"ranges"]},null)],(function(t,e){t(e,2,0,e.component._customRangesFish)}),null)}function et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵeld"](3,0,null,null,11,"div",[["class","bs-datepicker-container"]],[[24,"@datepickerAnimation",0]],[[null,"@datepickerAnimation.done"]],(function(t,e,n){var a=!0;return"@datepickerAnimation.done"===e&&(a=!1!==t.component.positionServiceEnable()&&a),a}),null,null)),(t()(),a["ɵeld"](4,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["ɵand"](16777216,null,null,1,null,K)),a["ɵdid"](8,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Z)),a["ɵdid"](10,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Q)),a["ɵdid"](12,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,X)),a["ɵdid"](14,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,tt)),a["ɵdid"](16,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"bs-datepicker",n.containerClass),t(e,5,0,a["ɵunv"](e,5,0,a["ɵnov"](e,6).transform(n.viewMode))),t(e,8,0,"day"),t(e,10,0,"month"),t(e,12,0,"year"),t(e,14,0,!1),t(e,16,0,!1)}),(function(t,e){t(e,3,0,e.component.animationState)}))}function nt(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,2,null,et)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,1,0,a["ɵunv"](e,1,0,a["ɵnov"](e,2).transform(n.viewMode)))}),null)}function at(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"bs-daterangepicker-container",[["aria-label","calendar"],["class","bottom"],["role","dialog"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t,3)._stopPropagation(n)&&r),r}),nt,U)),a["ɵprd"](512,null,r.t,r.t,[]),a["ɵprd"](512,null,r.u,r.u,[r.v,r.l]),a["ɵdid"](3,245760,null,0,r.i,[a.Renderer2,r.a,r.t,a.ElementRef,r.v,r.u,s.a],null,null)],(function(t,e){t(e,3,0)}),null)}var rt=a["ɵccf"]("bs-daterangepicker-container",r.i,at,{},{},[]),it=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function st(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-current-date",[["title","hey there"]],null,null,null,dt,lt)),a["ɵdid"](1,49152,null,0,r.x,[],{title:[0,"title"]},null)],(function(t,e){t(e,1,0,"hey there")}),null)}function ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-timepicker",[],null,null,null,Et,kt)),a["ɵdid"](1,49152,null,0,r.D,[],null,null)],null,null)}function ut(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,st)),a["ɵdid"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](2,0,null,null,1,"div",[["class","bs-datepicker-head"]],null,null,null,null,null)),a["ɵncd"](null,0),(t()(),a["ɵeld"](4,0,null,null,1,"div",[["class","bs-datepicker-body"]],null,null,null,null,null)),a["ɵncd"](null,1),(t()(),a["ɵand"](16777216,null,null,1,null,ot)),a["ɵdid"](7,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,!1),t(e,7,0,!1)}),null)}var lt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["class","current-timedate"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.title)}))}var ct=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function ft(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.label)}))}function ht(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"button",[["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Custom Range"]))],null,null)}function gt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,4,"div",[["class","bs-datepicker-predefined-btns"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,ft)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,ht)),a["ɵdid"](4,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.ranges),t(e,4,0,n.isCustomRangeShown)}),null)}var pt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function bt(t){return a["ɵvid"](2,[(t()(),a["ɵted"](0,null,["",""]))],null,(function(t,e){t(e,0,0,e.component.day.label)}))}var mt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function yt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("month")&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.component.calendar.monthTitle)}))}function vt(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,2,"button",[["class","previous"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!0)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["‹"])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵand"](16777216,null,null,1,null,yt)),a["ɵdid"](5,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](7,0,null,null,2,"button",[["class","current"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.view("year")&&a),a}),null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](9,null,["",""])),(t()(),a["ɵted"](-1,null,[" ​ "])),(t()(),a["ɵeld"](11,0,null,null,2,"button",[["class","next"],["type","button"]],[[8,"disabled",0],[4,"visibility",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.navTo(!1)&&a),a}),null,null)),(t()(),a["ɵeld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["›"]))],(function(t,e){t(e,5,0,e.component.calendar.monthTitle)}),(function(t,e){var n=e.component;t(e,0,0,n.calendar.disableLeftArrow,n.calendar.hideLeftArrow?"hidden":"visible"),t(e,9,0,n.calendar.yearTitle),t(e,11,0,n.calendar.disableRightArrow,n.calendar.hideRightArrow?"hidden":"visible")}))}var xt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function _t(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,0,"th",[],null,null,null,null,null))],null,null)}function Tt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"th",[["aria-label","weekday"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[""," "]))],null,(function(t,e){t(e,1,0,e.component.calendar.weekdays[e.context.index])}))}function Ot(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["class","week"]],[[2,"active-week",null]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],null,[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectWeek(t.parent.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.weekHoverHandler(t.parent.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){var n=e.component;t(e,0,0,n.isWeekHovered),t(e,2,0,n.calendar.weekNumbers[e.parent.context.index])}))}function wt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"td",[["role","gridcell"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,2,"span",[["bsDatepickerDayDecorator",""]],[[2,"disabled",null],[2,"is-highlighted",null],[2,"is-other-month",null],[2,"is-active-other-month",null],[2,"in-range",null],[2,"select-start",null],[2,"select-end",null],[2,"selected",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectDay(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverDay(t.context.$implicit,!1)&&a),a}),bt,pt)),a["ɵdid"](2,114688,null,0,r.z,[r.a,a.ElementRef,a.Renderer2],{day:[0,"day"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,1,0,a["ɵnov"](e,2).day.isDisabled,a["ɵnov"](e,2).day.isHovered,a["ɵnov"](e,2).day.isOtherMonth,a["ɵnov"](e,2).day.isOtherMonthHovered,a["ɵnov"](e,2).day.isInRange,a["ɵnov"](e,2).day.isSelectionStart,a["ɵnov"](e,2).day.isSelectionEnd,a["ɵnov"](e,2).day.isSelected),t(e,3,0,e.context.$implicit.label)}))}function St(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ot)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,wt)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.options.showWeekNumbers),t(e,4,0,e.context.$implicit.days)}),null)}function It(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,13,"bs-calendar-layout",[],null,null,null,ut,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,9,"table",[["class","days weeks"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,5,"thead",[],null,null,null,null,null)),(t()(),a["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,_t)),a["ɵdid"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,Tt)),a["ɵdid"](10,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](11,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,St)),a["ɵdid"](13,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,8,0,n.options.showWeekNumbers),t(e,10,0,n.calendar.weekdays),t(e,13,0,n.calendar.weeks)}),null)}var Nt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Ct(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewMonth(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverMonth(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Rt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Ct)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function At(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ut,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","months"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Rt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.months)}),null)}var kt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Et(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,15,"div",[["class","bs-timepicker-container"]],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](4,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](7,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["ɵeld"](8,0,null,null,1,"button",[["class","bs-decrease"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["-"])),(t()(),a["ɵeld"](10,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["ɵeld"](11,0,null,null,1,"button",[["class","bs-increase"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["+"])),(t()(),a["ɵeld"](13,0,null,null,2,"button",[["class","switch-time-format"],["type","button"]],null,null,null,null,null)),(t()(),a["ɵted"](14,null,[""," "])),(t()(),a["ɵeld"](15,0,null,null,0,"img",[["alt",""],["src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg=="]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,4,0,n.hours),t(e,10,0,n.minutes),t(e,14,0,n.ampm)}))}var Lt=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function Dt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"td",[["role","gridcell"]],[[2,"disabled",null],[2,"is-highlighted",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.viewYear(t.context.$implicit)&&a),"mouseenter"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!0)&&a),"mouseleave"===e&&(a=!1!==r.hoverYear(t.context.$implicit,!1)&&a),a}),null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"span",[],[[2,"selected",null]],null,null,null,null)),(t()(),a["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,1,0,e.context.$implicit.isSelected),t(e,2,0,e.context.$implicit.label)}))}function Pt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Dt)),a["ɵdid"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function Mt(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,ut,it)),a["ɵdid"](1,49152,null,0,r.w,[],null,null),(t()(),a["ɵeld"](2,0,null,0,1,"bs-datepicker-navigation-view",[],null,[[null,"onNavigate"],[null,"onViewMode"]],(function(t,e,n){var a=!0,r=t.component;return"onNavigate"===e&&(a=!1!==r.navigateTo(n)&&a),"onViewMode"===e&&(a=!1!==r.changeViewMode(n)&&a),a}),vt,mt)),a["ɵdid"](3,49152,null,0,r.A,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["ɵeld"](4,0,null,1,3,"table",[["class","years"],["role","grid"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,Pt)),a["ɵdid"](7,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.calendar),t(e,7,0,n.calendar.years)}),null)}},b1Dy:function(t,e,n){!function(t){"use strict";t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},b2z7:function(t,e){var n=/\w*$/;t.exports=function(t){var e=new t.constructor(t.source,n.exec(t));return e.lastIndex=t.lastIndex,e}},b5OY:function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("pxLl");class a{constructor(t,e){this.performanceCounterService=t,this.i18n=e,this.columns=[],this.counters=[]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Description"),prop:"description",flexGrow:1},{name:this.i18n("Value"),prop:"value",cellTemplate:this.valueTpl,flexGrow:1}]}getCounters(t){this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(t=>{this.counters=t},e=>{404===e.status?(e.preventDefault(),this.counters=null):t.error()})}}},b80T:function(t,e,n){var a=n("UNi/"),r=n("03A+"),i=n("Z0cm"),s=n("DSRE"),o=n("wJg7"),u=n("c6wG"),l=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=i(t),d=!n&&r(t),c=!n&&!d&&s(t),f=!n&&!d&&!c&&u(t),h=n||d||c||f,g=h?a(t.length,String):[],p=g.length;for(var b in t)!e&&!l.call(t,b)||h&&("length"==b||c&&("offset"==b||"parent"==b)||f&&("buffer"==b||"byteLength"==b||"byteOffset"==b)||o(b,p))||g.push(b);return g}},bHdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("5+tZ"),r=n("SpAZ");function i(t=Number.POSITIVE_INFINITY){return Object(a.a)(r.a,t)}},bN42:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="ja-JP">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>ナビゲーションの切り替え</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>ダッシュボード</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>クラスタ</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>モニター</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSHマップ</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>マネージャモジュール</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>ログ</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>ブロック</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>ミラーリング</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>ファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>言語の選択</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>パネルデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana Time Picker</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>設定のリセット</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>戻る</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>データを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>選択済み</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>検出済み</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>合計</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>名前</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>説明</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>長い説明</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>デフォルト</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>デーモンのデフォルト</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>保存</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSHマップビューア</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>ホスト名</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>はい。</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>キャンセル</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>閉じる</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>ホストリスト</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>全体的なパフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>エントリが見つかりません</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>クラスタログ</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>監査ログ</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>設定を読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>設定を読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>マネージャモジュールの編集</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>入力された値は有効なUUIDではありません(有効なUUIDの例: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8)。</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>有効なIPアドレスを入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>数字を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>数字または小数を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>ステータス</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>クラスタID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmapが変更されました</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmapエポック</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>定数con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>定数mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>必須のcon</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>必須のmon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>定数内</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>非定数内</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>追加</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>クラスタ全体のOSDフラグ</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>送信</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>詳細...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD回復優先度</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>優先度</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>優先度値のカスタマイズ</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>値は0と1の間である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>再重みづけ</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Deep } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {deep } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSDリスト</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>値</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>編集</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>ヘルス</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>統計情報</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>クライアント</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>任意のクライアントからアクセスできます</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>アドレス</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>必須フィールド</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>1つ以上のカンマ区切り値を含んでいる必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>例:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>アクセスタイプ</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>スカッシュ</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>クライアントの追加</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- 使用可能なクラスタがありません --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- クラスタを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>デーモンの追加</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>ストレージバックエンド</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- 使用可能なデータプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- ストレージバックエンドを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>オブジェクトゲートウェイユーザ</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- 使用可能なユーザがありません --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- オブジェクトゲートウェイユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFSユーザID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- 使用可能なクライアントがありません --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephxクライアントを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS名</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>セキュリティラベル</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>セキュリティラベルの有効化</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFSパス</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>パスは「/」で始まる必要があり、その後ろに1つの単語を配置できます</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>新しいディレクトリが作成されます</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>パス</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>パスは単一の「/」または1つの単語である必要があります</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>新しいバケットが作成されます</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFSプロトコル</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>NFSタグ</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>クライアントはサブディレクトリをマウントできません(たとえば、[タグ] = fooの場合は、クライアントはfoo/bazをマウントできません)。</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>異なる[タグ]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>疑似</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>異なる[疑似]オプションを使用することで、同じパスを複数回エクスポートできます。</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- 使用可能なアクセスタイプがありません --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- アクセスタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- 使用可能なスカッシュがありません --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作の種類を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>トランスポートプロトコル</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Cephにようこそ!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>ユーザ名は必須です</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>パスワードは必須です</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>ログイン</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>このユーザはCephに存在しません。</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>禁止</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>検索していた内容を表示することは許可されていません。</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD設定</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>ローカル設定値を削除します。親設定値が継承されて代わりに使用されます。</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>最小値は0です</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>プールリスト</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>名前は英数字、ダッシュ、および下線のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>選択されたイレイジャコードプロファイル名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>プラグイン</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>データチャンク(k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>2以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>コーディングチャンク(m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>1以上である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>耐久性推定子(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>地域(l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush障害ドメイン</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush地域</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>技法</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>パケットサイズ</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crushルート</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crushデバイスクラス</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>任意</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>ディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>名前...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>選択されたCephプール名はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>プールタイプ</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- プールタイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>配置グループ</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>少なくとも1つの配置グループが必要です。</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>ご使用のクラスタはこれだけ多数の配置グループを処理できません。必要な配置グループの数を再計算してください。</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>計算のヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>複製されたサイズ</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>フラグ</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>ECの上書き</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>アプリケーション</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- 使用可能なイレイジャコードプロファイルがありません --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- イレイジャコードプロファイルを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crushルールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crushルール</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crushステップ</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>圧縮</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>モード</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>アルゴリズム</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- 使用可能なイレイジャ圧縮アルゴリズムがありません --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>最小blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>例: 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>値は0より大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>最大blobサイズ</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>例: 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>値は最小blobサイズより大きい必要があります</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>率</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>圧縮率</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>値は0.0~1.0の間である必要があります</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>例: 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>パフォーマンスの詳細</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>キャッシュ層の詳細</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>イメージをごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>保護の失効日</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>保護されていません</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>日付の形式が正しくありません。「YYYY-MM-DD HH:mm:ss」という形式を使用してください。</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>保護はすでに失効しています。将来の日付を選択するか、日付を空白のままにしてください。</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>イメージの移動</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>概要</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>検出認証</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>パスワード</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>相互ユーザ</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>相互パスワード</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>取得可能な情報:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>使用可能なiSCSIターゲットがありません</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>プール</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>作成済み</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>サイズ</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>オブジェクトサイズ</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>プロビジョニング済み</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>プロビジョニング済み合計</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>ストライピング単位</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>ストライピング数</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>親</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>ブロック名のプレフィックス</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>順番</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>スナップショット</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>イメージ</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>この設定はグローバル値よりも優先されます</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>グローバル</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>これはグローバル値です。このイメージについて、このオプションの値は設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>「/」と「@」は使用できません。</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- 使用可能なrbdプールがありません --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- プールを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>専用のデータプールを使用してください</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>データプール</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>RBDのオブジェクトデータを保管するための専用プール</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>サイズを大きくする必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>詳細</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>ストライピング</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>ストライプ単位</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- ストライプ単位を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>ストライプ数が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>ストライプ単位がオブジェクトサイズより大きいです。</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>ストライプ数</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>ストライプ単位が定義されているため、このフィールドは必須です。</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>ストライプ数は0より大きい必要があります。</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>ロールバックしようとしています</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>ごみ箱を空にする</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>すべて</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>プール:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>プール名...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>イメージの復元</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>復元するには</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>イメージの新しい名前を入力してクリックします</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>新しい名前</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>失効日</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>保護の終了日</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSIトポロジ</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>通常はこれらのパラメータをデフォルト値から変更する必要はありません。</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>設定</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>バックストア</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>確認</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>詳細設定</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>ターゲットIQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQNのパターンが正しくありません。</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>例: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>詳細情報</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>このターゲットの詳細設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>ポータル</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>ポータルの追加</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>このイメージの設定は変更されています。</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>イメージの追加</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL認証</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>イニシエータ</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>クライアントIQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>イニシエータIQNは一意である必要があります。</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>ユーザ名は8~64文字の長さである必要があり、\n英字、「.」、「@」、「-」、「_」、または「:」のみで構成される必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>イニシエータはいずれかのグループに属します。イメージはそのグループ内で設定されます。</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>アイテムが追加されていません。</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>イニシエータの追加</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>グループ</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>グループの追加</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>ごみ箱</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>同期中</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>準備完了</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>プールのミラーモードの編集</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>ミラーを無効にする前に、ピアクラスタを削除する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>クラスタ名</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>このクラスタ名は無効です。</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>このCephX IDは無効です。</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>モニターアドレス</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>カンマ区切りアドレス...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>この警告アドレスは無効です。</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephXキー</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64エンコード化済みキー...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephXキーはbase64でエンコードされている必要があります。</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>パフォーマンスカウンタを使用できません</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>デーモンリスト</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>バケットデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>この値は無効です。</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>選択された名前はすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>所有者</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- ユーザを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>有効化済み</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>インデックスタイプ</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>配置ルール</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>マーカー</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>最大マーカー</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>マスタバージョン</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>変更時間</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>ゾーングループ</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>バケットクォータ</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>無制限</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>ユーザ名</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- ユーザ名を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>キーの自動生成</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>アクセスキー</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>秘密キー</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>氏名</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>電子メールアドレス</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>中断済み</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>システム</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>機能</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>ユーザクォータ</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>表示</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- タイプを選択してください --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- 許可を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>サブユーザ</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>選択されたサブユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>読み取り、書き込み</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>フル</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>スウィフトキー</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>秘密の自動生成</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>ユーザデータを読み込んでいます...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>ユーザデータを読み込めませんでした。</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>選択されたユーザIDはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>これは有効な電子メールアドレスではありません。</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>選択された電子メールアドレスはすでに使用されています。</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>最大バケット数</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>無効化済み</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>カスタム</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3キー</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>サブユーザがいません。</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>キーがありません。</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>スウィフト</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>機能がありません。</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>無制限のサイズ</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>最大サイズ</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>無制限のオブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>0以上の値を入力する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>説明...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>許可</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>役割</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>パスワードの確認入力</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>確認入力されたパスワードがパスワードと一致しません。</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>電子メール</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>無効な電子メールです。</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>自身のユーザから「user read / update」という許可を削除しようとしています。</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>続行した場合は、どのユーザの役割も追加および削除できなくなります。</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>続行してもよろしいですか?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>ヘルプ</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>ドキュメント</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>バージョン情報</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>ダッシュボード設定</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>ユーザ管理</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>ログイン済みユーザ</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>サインアウト</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>属性(OSDマップ)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>メタデータを使用できません</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>メタデータ</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>パフォーマンスカウンタ</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>書き込み回数</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>読み取り回数</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>ヒストグラム</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>最小</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>最大</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>ソース</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>レベル</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>実行時に更新できます(編集可能)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>タグ</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>列挙値</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>関連項目</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>クラスタのステータス</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>マネージャデーモン</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>オブジェクトゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>メタデータサーバ</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSIゲートウェイ</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>クライアントのIOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>クライアントのスループット</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>クライアントの読み取り/書き込み</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>回復スループット</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>スクラブ</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>パフォーマンス</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>未フォーマット時の容量</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSDあたりの配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>配置グループのステータス</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>容量</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>現在</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>検出認証を更新しました</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>使用可能なポータルはありません。</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>使用可能なイメージはありません。</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>使用可能なイメージはありません。ターゲットにイメージを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>使用可能なイニシエータはありません。ターゲットにイニシエータを追加したことを確認してください。</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>ターゲット</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>次の日付以降のA/O</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>インスタンス</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>問題</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>進捗</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>モードの編集</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>ピアの追加</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>ピアの編集</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>ピアの削除</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>リーダー</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>#ローカル</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>#リモート</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>ミラーピア</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>キー</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>ディープフラット化</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>階層化</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>排他ロック</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>オブジェクトマップ(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>ジャーナリング(排他ロックが必要)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>未保護</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBDスナップショットのロールバック</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBDスナップショット</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>削除日時</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>タイプ</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>状態</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>バージョン</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>ホスト</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>ルート</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>スタンバイデーモン</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>ランク</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>デーモン</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>アクティビティ</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>dエントリ</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>iノード</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>使用量</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>更新済み</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>この値は実行時に更新できます。</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>デーモン/クライアントはこの値をモニター設定データベースから取得しません。\nこのオプションを「ceph config set ...」を通じて設定することは禁止されています。\nこのオプションは、ceph.confまたはコマンドラインを通じて\n設定する必要があります。</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>オプションはデーモン始動時のみに有効になります。</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>オプションはクラスタの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>オプションはデーモンの作成のみに適用されます。</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>サービス</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>現行値</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>編集可能</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>有効化</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>無効化</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>再接続していますので、しばらくお待ちください...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>パブリックアドレス</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>セッションの開始</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>インなし</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>以前にアウトとしてマークされたOSDは、それらの始動時にインとしてマークされることはありません</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>アウトなし</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSDは、設定済みの間隔が経過した後に自動的にアウトとしてマークされます</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>アップなし</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSDを始動することは許可されていません</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>ダウンなし</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>OSDの障害レポートは無視されているため、OSDはモニターによってダウンとしてマークされません</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>一時停止</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>読み取りと書き込みを一時停止します</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>スクラブなし</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>スクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>ディープスクラブなし</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>ディープスクラブ処理は無効化されています</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>バックフィルなし</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>配置グループのバックフィルは中断されています</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>回復なし</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>配置グループの回復は中断されています</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>ビット単位のソート</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>ビット単位のソートを使用する</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>消去されたスナップディレクトリ</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSDによってスナップセットが変換されました</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>回復の削除</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>ピアリングの代わりに回復時に削除が実行されました</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>配置グループログのハード制限</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>配置グループログ長のハード制限を適用します</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>OSDフラグを更新しました</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>アウト</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>イン</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ダウン</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>マーク</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>喪失したOSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>喪失としてマーク済み</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>破棄済み</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>削除</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>配置グループ数</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>読み取りバイト数</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>書き込みバイト数</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>読み取り操作数</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>書き込み操作数</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>最大バックフィル数</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>回復最大アクティブ</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>回復最大単一始動</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>回復スリープ</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>ジョブ</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>重大度</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>始動済み</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>使用済み</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>使用可能</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>クリーン</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>動作中</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>警告</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>不明</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>アップ</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>ファイルシステムがありません</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>アクティブ</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>スタンバイ</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>なし</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>アクティブデーモン</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>定数</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>NFS Ganeshaサービスが設定されていません。</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>トランスポート</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFSユーザ</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFSファイルシステム</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(グローバル設定から継承)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>グローバル設定から継承されました</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- 実行されるユーザIDスカッシュ操作を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>使用可能なデーモンがありません。</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>キャッシュモード</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>退去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>消去までの最小経過時間</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>ターゲットの最大バイト数</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>ターゲットの最大オブジェクト数</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>アプリケーションは追加されていません</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>アプリケーション数の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>1つのプールは最大で4つのアプリケーション定義しか保有できません。</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>使用可能な文字「_a-zA-Z0-9」</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>最大長は128文字です</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>アプリケーションのフィルタリングまたは追加</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>アプリケーションの追加</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>イレイジャコードプロファイル</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>レプリカサイズ</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>最後の変更</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>イレイジャコード化済みプロファイル</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crushルールセット</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>バケット</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>バケット数</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>ユーザ</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>ユーザ数</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>範囲</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>読み取り</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>システム役割</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>ユーザの更新</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>続行</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>このユーザの役割が変更されたため、このユーザは自動的にログアウトされました。</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>各オブジェクトは複数のデータチャンクパートに分割されており、それぞれのパートは異なるOSDに保管されています。</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>各オブジェクトのコーディングチャンクを計算して、これらのチャンクを別々のOSDに保管します。\nコーディングチャンクの数は、データを失うことなくダウン状態になることができるOSDの数でもあります。</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>jerasureプラグインは最も汎用的で柔軟性の高いプラグインです。\nこのプラグインは、Cephイレイジャコード化済みプール用のデフォルトでもあります。</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>さらに柔軟性の高い技法はreed_sol_vanです。kとmを\n設定するだけで十分です。\ncauchy_good技法はより高速となり得ますが、パケットサイズを慎重に選択する必要があります。\nreed_sol_r6_op、liberation、blaum_roth、liber8tionはすべて、\nm=2を使用した設定のみが可能という意味でRAID6と同等です。</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>エンコードはバイトサイズのパケット群に対して同時に実行されます。\n適切なパケットサイズを選択することは困難です。\njerasureのドキュメントにはこのトピックに関する詳細な情報が記載されています。</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>jerasureプラグインを使用すると、イレイジャコード化済みオブジェクトが複数のOSDに保管されている場合は、\n1つのOSDの喪失から回復するには、他のすべてのOSDからの読み取りが必要になります。\nたとえば、k=8およびm=4を使用してjerasureが設定されている場合は、1つのOSDが失われた場合、\n修復のためには他の11個のOSDからの読み取りが必要になります。\n\nlrcイレイジャコードプラグインは、これより少ないOSDを使用した回復を可能にするために、\nローカルパリティチャンクを作成します。たとえば、lrcがk=8、m=4、およびl=4を使用して設定されている場合は、\nlrcは、4つのOSDごとに1つの追加パリティチャンクを作成します。1つのOSDが失われた場合は、\n11個の代わりに4つのOSDのみを使用してそのOSDを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>コーディングチャンクとデータチャンクをサイズ地域の複数セットにグループ分けします。\nたとえば、k=4およびm=2の場合に、[地域]=3の場合は、3つのチャンクからなるグループが2つ作成されます。\n各セットは、別のセットからチャンクを読み取ることなく回復できます。</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>1によって定義されたチャンクの各セットが保管されるCrushバケットのタイプ。\nたとえば、このバケットタイプがラックに設定されている場合は、1のチャンクの各グループは異なるラックに配置されます。\nこのバケットタイプを使用して、「ラックの選択」ステップなどのCRUSHルールステップが作成されます。\nこのバケットタイプが設定されていない場合は、このようなグループ分けは行われません。</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>isaプラグインはISAライブラリをカプセル化します。このプラグインはIntelプロセッサ上のみで動作します。</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>ISAプラグインは2つのリードソロモン形式で提供されています。reed_sol_vanが設定されている場合は、Vandermondeであり、cauchyが設定されている場合は、Cauchyです。</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>shecプラグインは複数のSHECライブラリをカプセル化します。\nこのプラグインを使用すると、cephはリードソロモンコードより効率的にデータを回復できます。</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>それぞれが各データチャンクを各自の計算範囲内に含んでいるパリティチャンクの数。\nこの数は、耐久性推定子として使用されます。\nたとえば、c=2の場合は、データを失うことなく2つのOSDがダウン状態になることができます。</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>CRUSHルールの最初のステップ(「デフォルトの使用」ステップなど)用に\n使用されるCrushバケットの名前。</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>同じ障害ドメインの単一バケット内に2つのチャンクが配置されることを防止します。\nたとえば、障害ドメインがホストである場合は、2つのチャンクが同じホストに保管されることはありません。\nこれを使用して、「リーフホストの選択」ステップなどのCRUSHルールステップが作成されます。</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>CRUSHマップ内でCrushデバイスクラス名を使用して、配置先を特定クラス(ssdやhddなど)のデバイスのみに制限します。</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>イレイジャコードプラグインの読み込み元となるディレクトリ名を設定します。</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>すべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>サーバに変更を加えない操作のみを許可します</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>読み取り/書き込み操作を許可しませんが、他のすべての操作を許可します</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>読み取り/書き込み操作、およびファイル属性やディレクトリ内容を変更するどの操作も許可しません</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>アクセスを一切許可しません</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- 優先度を選択してください --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>低</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>高</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>情報</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>直前の5分間</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>直前の15分間</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>直前の30分間</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>直前の1時間(デフォルト)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>直前の3時間</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>直前の6時間</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>直前の12時間</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>直前の24時間</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>昨日</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>本日</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>本日の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>一昨日</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>過去2日間</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>先週の同じ曜日</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>前週</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>今週</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>今週の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>過去7日間</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>前月</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>今月</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>今月の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>過去30日間</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>過去90日間</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>過去6カ月</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>過去1年間</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>前年</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>今年</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>今年の現時点まで</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>過去2年間</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>過去5年間</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>アイテムが選択されていません。</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>アイテムを選択解除して再選択してください</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>選択の上限に達しました</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>タグのフィルタリング</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>バッジの追加</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>使用可能なアイテムはありません。</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>ディープスクラブ</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>破棄</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>ダウンとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>インとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>喪失としてマーク</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>アウトとしてマーク</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>保護</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>名前の変更</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>ごみ箱に移動する</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>保護解除</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>削除済み</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>複製済み</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>コピー済み</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>フラット化済み</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>消去済み</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>復元済み</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>ロールバック済み</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>はい</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>いいえ</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>サービス品質</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS制限</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>希望する秒あたり入出力バイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS制限</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>希望する秒あたり入出力操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>読み取りBPS制限</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>希望する秒あたり読み取りバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>読み取りIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>希望する秒あたり読み取り操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>書き込みBPS制限</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>希望する秒あたり書き込みバイト数の上限。</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>書き込みIOPS制限</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>希望する秒あたり書き込み操作数の上限。</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPSバースト</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>希望する入出力バイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>希望する入出力操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>読み取りBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>希望する読み取りバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>読み取りIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>希望する読み取り操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>書き込みBPSバースト</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>希望する書き込みバイト数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>書き込みIOPSバースト</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>希望する書き込み操作数のバースト上限。</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>実行中</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>実行</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>実行済み</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>不明なタスク</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>作成中</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>作成</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>更新中</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>更新</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>削除中</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>複製中</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>複製</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>コピー中</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>コピー</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>フラット化中</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>フラット化</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>ロールバック中</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>ロールバック</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>移動中</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>移動</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>移動済み</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>イメージが見つかりませんでした。</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>復元中</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>復元</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>消去中</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>消去</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>すべてのプール</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>ピアを含んでいるためミラーリングを無効化できません。</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},bOMt:function(t,e,n){!function(t){"use strict";t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},bOdf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("5+tZ");function r(t,e){return Object(a.a)(t,e,1)}},bWFh:function(t,e,n){"use strict";var a=n("I+eb"),r=n("2oRo"),i=n("lMq5"),s=n("busE"),o=n("8YOa"),u=n("ImZN"),l=n("GarU"),d=n("hh1v"),c=n("0Dky"),f=n("HH4o"),h=n("1E5z"),g=n("cVYH");t.exports=function(t,e,n){var p=-1!==t.indexOf("Map"),b=-1!==t.indexOf("Weak"),m=p?"set":"add",y=r[t],v=y&&y.prototype,x=y,_={},T=function(t){var e=v[t];s(v,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(b&&!d(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return b&&!d(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(b&&!d(t))&&e.call(this,0===t?0:t)}:function(t,n){return e.call(this,0===t?0:t,n),this})};if(i(t,"function"!=typeof y||!(b||v.forEach&&!c((function(){(new y).entries().next()})))))x=n.getConstructor(e,t,p,m),o.REQUIRED=!0;else if(i(t,!0)){var O=new x,w=O[m](b?{}:-0,1)!=O,S=c((function(){O.has(1)})),I=f((function(t){new y(t)})),N=!b&&c((function(){for(var t=new y,e=5;e--;)t[m](e,e);return!t.has(-0)}));I||((x=e((function(e,n){l(e,x,t);var a=g(new y,e,x);return null!=n&&u(n,a[m],a,p),a}))).prototype=v,v.constructor=x),(S||N)&&(T("delete"),T("has"),p&&T("get")),(N||w)&&T(m),b&&v.clear&&delete v.clear}return _[t]=x,a({global:!0,forced:x!=y},_),h(x,t),b||n.setStrong(x,t,p),x}},bXm7:function(t,e,n){!function(t){"use strict";var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};t.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},bYM6:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("wd/R"))},bpih:function(t,e,n){!function(t){"use strict";t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},busE:function(t,e,n){var a=n("2oRo"),r=n("kRJp"),i=n("UTVS"),s=n("zk60"),o=n("iSVu"),u=n("afO8"),l=u.get,d=u.enforce,c=String(String).split("String");(t.exports=function(t,e,n,o){var u=!!o&&!!o.unsafe,l=!!o&&!!o.enumerable,f=!!o&&!!o.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||r(n,"name",e),d(n).source=c.join("string"==typeof e?e:"")),t!==a?(u?!f&&t[e]&&(l=!0):delete t[e],l?t[e]=n:r(t,e,n)):l?t[e]=n:s(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&l(this).source||o(this)}))},bxKX:function(t,e,n){!function(t){"use strict";t.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},bxSN:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("8Y7J"),i=n("moLw");e.ClickOutsideModule=function(){return a([r.NgModule({declarations:[i.ClickOutsideDirective],exports:[i.ClickOutsideDirective]})],(function(){}))}()},c2HN:function(t,e,n){"use strict";function a(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}n.d(e,"a",(function(){return a}))},c6wG:function(t,e,n){var a=n("dD9F"),r=n("sEf8"),i=n("mdPL"),s=i&&i.isTypedArray,o=s?r(s):a;t.exports=o},cRix:function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},cUpR:function(t,e,n){"use strict";n.d(e,"p",(function(){return _})),n.d(e,"a",(function(){return dt})),n.d(e,"h",(function(){return lt})),n.d(e,"c",(function(){return T})),n.d(e,"d",(function(){return O})),n.d(e,"e",(function(){return W})),n.d(e,"f",(function(){return K})),n.d(e,"g",(function(){return $})),n.d(e,"b",(function(){return tt})),n.d(e,"q",(function(){return s})),n.d(e,"j",(function(){return k})),n.d(e,"i",(function(){return H})),n.d(e,"m",(function(){return Z})),n.d(e,"n",(function(){return X})),n.d(e,"l",(function(){return I})),n.d(e,"o",(function(){return S})),n.d(e,"k",(function(){return et}));var a=n("SVse"),r=n("8Y7J");let i=null;function s(){return i}const o={class:"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},u={"\b":"Backspace","\t":"Tab","\7f":"Delete","\e":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},l={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\90":"NumLock"},d=(()=>{if(r["ɵglobal"].Node)return r["ɵglobal"].Node.prototype.contains||function(t){return!!(16&this.compareDocumentPosition(t))}})();class c extends class extends class{constructor(){this.resourceLoaderType=null}get attrToPropMap(){return this._attrToPropMap}set attrToPropMap(t){this._attrToPropMap=t}}{constructor(){super(),this._animationPrefix=null,this._transitionEnd=null;try{const t=this.createElement("div",document);if(null!=this.getStyle(t,"animationName"))this._animationPrefix="";else{const e=["Webkit","Moz","O","ms"];for(let n=0;n<e.length;n++)if(null!=this.getStyle(t,e[n]+"AnimationName")){this._animationPrefix="-"+e[n].toLowerCase()+"-";break}}const e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};Object.keys(e).forEach(n=>{null!=this.getStyle(t,n)&&(this._transitionEnd=e[n])})}catch(t){this._animationPrefix=null,this._transitionEnd=null}}getDistributedNodes(t){return t.getDistributedNodes()}resolveAndSetHref(t,e,n){t.href=null==n?e:e+"/../"+n}supportsDOMEvents(){return!0}supportsNativeShadowDOM(){return"function"==typeof document.body.createShadowRoot}getAnimationPrefix(){return this._animationPrefix?this._animationPrefix:""}getTransitionEnd(){return this._transitionEnd?this._transitionEnd:""}supportsAnimation(){return null!=this._animationPrefix&&null!=this._transitionEnd}}{parse(t){throw new Error("parse not implemented")}static makeCurrent(){var t;t=new c,i||(i=t)}hasProperty(t,e){return e in t}setProperty(t,e,n){t[e]=n}getProperty(t,e){return t[e]}invoke(t,e,n){t[e](...n)}logError(t){window.console&&(console.error?console.error(t):console.log(t))}log(t){window.console&&window.console.log&&window.console.log(t)}logGroup(t){window.console&&window.console.group&&window.console.group(t)}logGroupEnd(){window.console&&window.console.groupEnd&&window.console.groupEnd()}get attrToPropMap(){return o}contains(t,e){return d.call(t,e)}querySelector(t,e){return t.querySelector(e)}querySelectorAll(t,e){return t.querySelectorAll(e)}on(t,e,n){t.addEventListener(e,n,!1)}onAndCancel(t,e,n){return t.addEventListener(e,n,!1),()=>{t.removeEventListener(e,n,!1)}}dispatchEvent(t,e){t.dispatchEvent(e)}createMouseEvent(t){const e=this.getDefaultDocument().createEvent("MouseEvent");return e.initEvent(t,!0,!0),e}createEvent(t){const e=this.getDefaultDocument().createEvent("Event");return e.initEvent(t,!0,!0),e}preventDefault(t){t.preventDefault(),t.returnValue=!1}isPrevented(t){return t.defaultPrevented||null!=t.returnValue&&!t.returnValue}getInnerHTML(t){return t.innerHTML}getTemplateContent(t){return"content"in t&&this.isTemplateElement(t)?t.content:null}getOuterHTML(t){return t.outerHTML}nodeName(t){return t.nodeName}nodeValue(t){return t.nodeValue}type(t){return t.type}content(t){return this.hasProperty(t,"content")?t.content:t}firstChild(t){return t.firstChild}nextSibling(t){return t.nextSibling}parentElement(t){return t.parentNode}childNodes(t){return t.childNodes}childNodesAsList(t){const e=t.childNodes,n=new Array(e.length);for(let a=0;a<e.length;a++)n[a]=e[a];return n}clearNodes(t){for(;t.firstChild;)t.removeChild(t.firstChild)}appendChild(t,e){t.appendChild(e)}removeChild(t,e){t.removeChild(e)}replaceChild(t,e,n){t.replaceChild(e,n)}remove(t){return t.parentNode&&t.parentNode.removeChild(t),t}insertBefore(t,e,n){t.insertBefore(n,e)}insertAllBefore(t,e,n){n.forEach(n=>t.insertBefore(n,e))}insertAfter(t,e,n){t.insertBefore(n,e.nextSibling)}setInnerHTML(t,e){t.innerHTML=e}getText(t){return t.textContent}setText(t,e){t.textContent=e}getValue(t){return t.value}setValue(t,e){t.value=e}getChecked(t){return t.checked}setChecked(t,e){t.checked=e}createComment(t){return this.getDefaultDocument().createComment(t)}createTemplate(t){const e=this.getDefaultDocument().createElement("template");return e.innerHTML=t,e}createElement(t,e){return(e=e||this.getDefaultDocument()).createElement(t)}createElementNS(t,e,n){return(n=n||this.getDefaultDocument()).createElementNS(t,e)}createTextNode(t,e){return(e=e||this.getDefaultDocument()).createTextNode(t)}createScriptTag(t,e,n){const a=(n=n||this.getDefaultDocument()).createElement("SCRIPT");return a.setAttribute(t,e),a}createStyleElement(t,e){const n=(e=e||this.getDefaultDocument()).createElement("style");return this.appendChild(n,this.createTextNode(t,e)),n}createShadowRoot(t){return t.createShadowRoot()}getShadowRoot(t){return t.shadowRoot}getHost(t){return t.host}clone(t){return t.cloneNode(!0)}getElementsByClassName(t,e){return t.getElementsByClassName(e)}getElementsByTagName(t,e){return t.getElementsByTagName(e)}classList(t){return Array.prototype.slice.call(t.classList,0)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}hasClass(t,e){return t.classList.contains(e)}setStyle(t,e,n){t.style[e]=n}removeStyle(t,e){t.style[e]=""}getStyle(t,e){return t.style[e]}hasStyle(t,e,n){const a=this.getStyle(t,e)||"";return n?a==n:a.length>0}tagName(t){return t.tagName}attributeMap(t){const e=new Map,n=t.attributes;for(let a=0;a<n.length;a++){const t=n.item(a);e.set(t.name,t.value)}return e}hasAttribute(t,e){return t.hasAttribute(e)}hasAttributeNS(t,e,n){return t.hasAttributeNS(e,n)}getAttribute(t,e){return t.getAttribute(e)}getAttributeNS(t,e,n){return t.getAttributeNS(e,n)}setAttribute(t,e,n){t.setAttribute(e,n)}setAttributeNS(t,e,n,a){t.setAttributeNS(e,n,a)}removeAttribute(t,e){t.removeAttribute(e)}removeAttributeNS(t,e,n){t.removeAttributeNS(e,n)}templateAwareRoot(t){return this.isTemplateElement(t)?this.content(t):t}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}getBoundingClientRect(t){try{return t.getBoundingClientRect()}catch(e){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}}getTitle(t){return t.title}setTitle(t,e){t.title=e||""}elementMatches(t,e){return!!this.isElementNode(t)&&(t.matches&&t.matches(e)||t.msMatchesSelector&&t.msMatchesSelector(e)||t.webkitMatchesSelector&&t.webkitMatchesSelector(e))}isTemplateElement(t){return this.isElementNode(t)&&"TEMPLATE"===t.nodeName}isTextNode(t){return t.nodeType===Node.TEXT_NODE}isCommentNode(t){return t.nodeType===Node.COMMENT_NODE}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}hasShadowRoot(t){return null!=t.shadowRoot&&t instanceof HTMLElement}isShadowRoot(t){return t instanceof DocumentFragment}importIntoDoc(t){return document.importNode(this.templateAwareRoot(t),!0)}adoptNode(t){return document.adoptNode(t)}getHref(t){return t.getAttribute("href")}getEventKey(t){let e=t.key;if(null==e){if(e=t.keyIdentifier,null==e)return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&l.hasOwnProperty(e)&&(e=l[e]))}return u[e]||e}getGlobalEventTarget(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null}getHistory(){return window.history}getLocation(){return window.location}getBaseHref(t){const e=h||(h=document.querySelector("base"),h)?h.getAttribute("href"):null;return null==e?null:(n=e,f||(f=document.createElement("a")),f.setAttribute("href",n),"/"===f.pathname.charAt(0)?f.pathname:"/"+f.pathname);var n}resetBaseElement(){h=null}getUserAgent(){return window.navigator.userAgent}setData(t,e,n){this.setAttribute(t,"data-"+e,n)}getData(t,e){return this.getAttribute(t,"data-"+e)}getComputedStyle(t){return getComputedStyle(t)}supportsWebAnimation(){return"function"==typeof Element.prototype.animate}performanceNow(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()}supportsCookies(){return!0}getCookie(t){return Object(a["ɵparseCookieValue"])(document.cookie,t)}setCookie(t,e){document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)}}let f,h=null;function g(){return!!window.history.pushState}const p=new r.InjectionToken("TRANSITION_ID"),b=[{provide:r.APP_INITIALIZER,useFactory:function(t,e,n){return()=>{n.get(r.ApplicationInitStatus).donePromise.then(()=>{const n=s();Array.prototype.slice.apply(n.querySelectorAll(e,"style[ng-transition]")).filter(e=>n.getAttribute(e,"ng-transition")===t).forEach(t=>n.remove(t))})}},deps:[p,a.DOCUMENT,r.Injector],multi:!0}];class m{static init(){Object(r.setTestabilityGetter)(new m)}addToWindow(t){r["ɵglobal"].getAngularTestability=(e,n=!0)=>{const a=t.findTestabilityInTree(e,n);if(null==a)throw new Error("Could not find testability for element.");return a},r["ɵglobal"].getAllAngularTestabilities=()=>t.getAllTestabilities(),r["ɵglobal"].getAllAngularRootElements=()=>t.getAllRootElements(),r["ɵglobal"].frameworkStabilizers||(r["ɵglobal"].frameworkStabilizers=[]),r["ɵglobal"].frameworkStabilizers.push(t=>{const e=r["ɵglobal"].getAllAngularTestabilities();let n=e.length,a=!1;const i=function(e){a=a||e,n--,0==n&&t(a)};e.forEach((function(t){t.whenStable(i)}))})}findTestabilityInTree(t,e,n){if(null==e)return null;const a=t.getTestability(e);return null!=a?a:n?s().isShadowRoot(e)?this.findTestabilityInTree(t,s().getHost(e),!0):this.findTestabilityInTree(t,s().parentElement(e),!0):null}}function y(t,e){"undefined"!=typeof COMPILED&&COMPILED||((r["ɵglobal"].ng=r["ɵglobal"].ng||{})[t]=e)}const v=(()=>({ApplicationRef:r.ApplicationRef,NgZone:r.NgZone}))();function x(t){return Object(r.getDebugNode)(t)}function _(t){return y("probe",x),y("coreTokens",Object.assign({},v,(t||[]).reduce((t,e)=>(t[e.name]=e.token,t),{}))),()=>x}const T=new r.InjectionToken("EventManagerPlugins");class O{constructor(t,e){this._zone=e,this._eventNameToPlugin=new Map,t.forEach(t=>t.manager=this),this._plugins=t.slice().reverse()}addEventListener(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)}addGlobalEventListener(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)}getZone(){return this._zone}_findPluginFor(t){const e=this._eventNameToPlugin.get(t);if(e)return e;const n=this._plugins;for(let a=0;a<n.length;a++){const e=n[a];if(e.supports(t))return this._eventNameToPlugin.set(t,e),e}throw new Error(`No event manager plugin found for event ${t}`)}}class w{constructor(t){this._doc=t}addGlobalEventListener(t,e,n){const a=s().getGlobalEventTarget(this._doc,t);if(!a)throw new Error(`Unsupported event target ${a} for event ${e}`);return this.addEventListener(a,e,n)}}class S{constructor(){this._stylesSet=new Set}addStyles(t){const e=new Set;t.forEach(t=>{this._stylesSet.has(t)||(this._stylesSet.add(t),e.add(t))}),this.onStylesAdded(e)}onStylesAdded(t){}getAllStyles(){return Array.from(this._stylesSet)}}class I extends S{constructor(t){super(),this._doc=t,this._hostNodes=new Set,this._styleNodes=new Set,this._hostNodes.add(t.head)}_addStylesToHost(t,e){t.forEach(t=>{const n=this._doc.createElement("style");n.textContent=t,this._styleNodes.add(e.appendChild(n))})}addHost(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)}removeHost(t){this._hostNodes.delete(t)}onStylesAdded(t){this._hostNodes.forEach(e=>this._addStylesToHost(t,e))}ngOnDestroy(){this._styleNodes.forEach(t=>s().remove(t))}}const N={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/"},C=/%COMP%/g;function R(t,e,n){for(let a=0;a<e.length;a++){let r=e[a];Array.isArray(r)?R(t,r,n):(r=r.replace(C,t),n.push(r))}return n}function A(t){return e=>{!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}class k{constructor(t,e,n){this.eventManager=t,this.sharedStylesHost=e,this.appId=n,this.rendererByCompId=new Map,this.defaultRenderer=new E(t)}createRenderer(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case r.ViewEncapsulation.Emulated:{let n=this.rendererByCompId.get(e.id);return n||(n=new P(this.eventManager,this.sharedStylesHost,e,this.appId),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n}case r.ViewEncapsulation.Native:case r.ViewEncapsulation.ShadowDom:return new M(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){const t=R(e.id,e.styles,[]);this.sharedStylesHost.addStyles(t),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}class E{constructor(t){this.eventManager=t,this.data=Object.create(null)}destroy(){}createElement(t,e){return e?document.createElementNS(N[e]||e,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,e){t.appendChild(e)}insertBefore(t,e,n){t&&t.insertBefore(e,n)}removeChild(t,e){t&&t.removeChild(e)}selectRootElement(t,e){let n="string"==typeof t?document.querySelector(t):t;if(!n)throw new Error(`The selector "${t}" did not match any elements`);return e||(n.textContent=""),n}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,e,n,a){if(a){e=a+":"+e;const r=N[a];r?t.setAttributeNS(r,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)}removeAttribute(t,e,n){if(n){const a=N[n];a?t.removeAttributeNS(a,e):t.removeAttribute(`${n}:${e}`)}else t.removeAttribute(e)}addClass(t,e){t.classList.add(e)}removeClass(t,e){t.classList.remove(e)}setStyle(t,e,n,a){a&r.RendererStyleFlags2.DashCase?t.style.setProperty(e,n,a&r.RendererStyleFlags2.Important?"important":""):t.style[e]=n}removeStyle(t,e,n){n&r.RendererStyleFlags2.DashCase?t.style.removeProperty(e):t.style[e]=""}setProperty(t,e,n){D(e,"property"),t[e]=n}setValue(t,e){t.nodeValue=e}listen(t,e,n){return D(e,"listener"),"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,A(n)):this.eventManager.addEventListener(t,e,A(n))}}const L=(()=>"@".charCodeAt(0))();function D(t,e){if(t.charCodeAt(0)===L)throw new Error(`Found the synthetic ${e} ${t}. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.`)}class P extends E{constructor(t,e,n,a){super(t),this.component=n;const r=R(a+"-"+n.id,n.styles,[]);e.addStyles(r),this.contentAttr="_ngcontent-%COMP%".replace(C,a+"-"+n.id),this.hostAttr=function(t){return"_nghost-%COMP%".replace(C,t)}(a+"-"+n.id)}applyToHost(t){super.setAttribute(t,this.hostAttr,"")}createElement(t,e){const n=super.createElement(t,e);return super.setAttribute(n,this.contentAttr,""),n}}class M extends E{constructor(t,e,n,a){super(t),this.sharedStylesHost=e,this.hostEl=n,this.component=a,this.shadowRoot=a.encapsulation===r.ViewEncapsulation.ShadowDom?n.attachShadow({mode:"open"}):n.createShadowRoot(),this.sharedStylesHost.addHost(this.shadowRoot);const i=R(a.id,a.styles,[]);for(let r=0;r<i.length;r++){const t=document.createElement("style");t.textContent=i[r],this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}appendChild(t,e){return super.appendChild(this.nodeOrShadowRoot(t),e)}insertBefore(t,e,n){return super.insertBefore(this.nodeOrShadowRoot(t),e,n)}removeChild(t,e){return super.removeChild(this.nodeOrShadowRoot(t),e)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}}const q=(()=>"undefined"!=typeof Zone&&Zone.__symbol__||function(t){return"__zone_symbol__"+t})(),j=q("addEventListener"),F=q("removeEventListener"),G={},V="__zone_symbol__propagationStopped",z=(()=>{const t="undefined"!=typeof Zone&&Zone[q("BLACK_LISTED_EVENTS")];if(t){const e={};return t.forEach(t=>{e[t]=t}),e}})(),B=function(t){return!!z&&z.hasOwnProperty(t)},Y=function(t){const e=G[t.type];if(!e)return;const n=this[e];if(!n)return;const a=[t];if(1===n.length){const t=n[0];return t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}{const e=n.slice();for(let n=0;n<e.length&&!0!==t[V];n++){const t=e[n];t.zone!==Zone.current?t.zone.run(t.handler,this,a):t.handler.apply(this,a)}}};class H extends w{constructor(t,e,n){super(t),this.ngZone=e,n&&Object(a.isPlatformServer)(n)||this.patchEvent()}patchEvent(){if("undefined"==typeof Event||!Event||!Event.prototype)return;if(Event.prototype.__zone_symbol__stopImmediatePropagation)return;const t=Event.prototype.__zone_symbol__stopImmediatePropagation=Event.prototype.stopImmediatePropagation;Event.prototype.stopImmediatePropagation=function(){this&&(this[V]=!0),t&&t.apply(this,arguments)}}supports(t){return!0}addEventListener(t,e,n){let a=n;if(!t[j]||r.NgZone.isInAngularZone()&&!B(e))t.addEventListener(e,a,!1);else{let n=G[e];n||(n=G[e]=q("ANGULAR"+e+"FALSE"));let r=t[n];const i=r&&r.length>0;r||(r=t[n]=[]);const s=B(e)?Zone.root:Zone.current;if(0===r.length)r.push({zone:s,handler:a});else{let t=!1;for(let e=0;e<r.length;e++)if(r[e].handler===a){t=!0;break}t||r.push({zone:s,handler:a})}i||t[j](e,Y,!1)}return()=>this.removeEventListener(t,e,a)}removeEventListener(t,e,n){let a=t[F];if(!a)return t.removeEventListener.apply(t,[e,n,!1]);let r=G[e],i=r&&t[r];if(!i)return t.removeEventListener.apply(t,[e,n,!1]);let s=!1;for(let o=0;o<i.length;o++)if(i[o].handler===n){s=!0,i.splice(o,1);break}s?0===i.length&&a.apply(t,[e,Y,!1]):t.removeEventListener.apply(t,[e,n,!1])}}const U={pan:!0,panstart:!0,panmove:!0,panend:!0,pancancel:!0,panleft:!0,panright:!0,panup:!0,pandown:!0,pinch:!0,pinchstart:!0,pinchmove:!0,pinchend:!0,pinchcancel:!0,pinchin:!0,pinchout:!0,press:!0,pressup:!0,rotate:!0,rotatestart:!0,rotatemove:!0,rotateend:!0,rotatecancel:!0,swipe:!0,swipeleft:!0,swiperight:!0,swipeup:!0,swipedown:!0,tap:!0},W=new r.InjectionToken("HammerGestureConfig"),K=new r.InjectionToken("HammerLoader");class ${constructor(){this.events=[],this.overrides={}}buildHammer(t){const e=new Hammer(t,this.options);e.get("pinch").set({enable:!0}),e.get("rotate").set({enable:!0});for(const n in this.overrides)e.get(n).set(this.overrides[n]);return e}}class Z extends w{constructor(t,e,n,a){super(t),this._config=e,this.console=n,this.loader=a}supports(t){return!(!U.hasOwnProperty(t.toLowerCase())&&!this.isCustomEvent(t)||!window.Hammer&&!this.loader&&(this.console.warn(`The "${t}" event cannot be bound because Hammer.JS is not `+"loaded and no custom loader has been specified."),1))}addEventListener(t,e,n){const a=this.manager.getZone();if(e=e.toLowerCase(),!window.Hammer&&this.loader){let a=!1,r=()=>{a=!0};return this.loader().then(()=>{if(!window.Hammer)return this.console.warn("The custom HAMMER_LOADER completed, but Hammer.JS is not present."),void(r=()=>{});a||(r=this.addEventListener(t,e,n))}).catch(()=>{this.console.warn(`The "${e}" event cannot be bound because the custom `+"Hammer.JS loader failed."),r=()=>{}}),()=>{r()}}return a.runOutsideAngular(()=>{const r=this._config.buildHammer(t),i=function(t){a.runGuarded((function(){n(t)}))};return r.on(e,i),()=>{r.off(e,i),"function"==typeof r.destroy&&r.destroy()}})}isCustomEvent(t){return this._config.events.indexOf(t)>-1}}const J=["alt","control","meta","shift"],Q={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};class X extends w{constructor(t){super(t)}supports(t){return null!=X.parseEventName(t)}addEventListener(t,e,n){const a=X.parseEventName(e),r=X.eventCallback(a.fullKey,n,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>s().onAndCancel(t,a.domEventName,r))}static parseEventName(t){const e=t.toLowerCase().split("."),n=e.shift();if(0===e.length||"keydown"!==n&&"keyup"!==n)return null;const a=X._normalizeKey(e.pop());let r="";if(J.forEach(t=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),r+=t+".")}),r+=a,0!=e.length||0===a.length)return null;const i={};return i.domEventName=n,i.fullKey=r,i}static getEventFullKey(t){let e="",n=s().getEventKey(t);return n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),J.forEach(a=>{a!=n&&(0,Q[a])(t)&&(e+=a+".")}),e+=n,e}static eventCallback(t,e,n){return a=>{X.getEventFullKey(a)===t&&n.runGuarded(()=>e(a))}}static _normalizeKey(t){switch(t){case"esc":return"escape";default:return t}}}class tt{}class et extends tt{constructor(t){super(),this._doc=t}sanitize(t,e){if(null==e)return null;switch(t){case r.SecurityContext.NONE:return e;case r.SecurityContext.HTML:return e instanceof at?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"HTML"),Object(r["ɵ_sanitizeHtml"])(this._doc,String(e)));case r.SecurityContext.STYLE:return e instanceof rt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"Style"),Object(r["ɵ_sanitizeStyle"])(e));case r.SecurityContext.SCRIPT:if(e instanceof it)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"Script"),new Error("unsafe value used in a script context");case r.SecurityContext.URL:return e instanceof ot||e instanceof st?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"URL"),Object(r["ɵ_sanitizeUrl"])(String(e)));case r.SecurityContext.RESOURCE_URL:if(e instanceof ot)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"ResourceURL"),new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");default:throw new Error(`Unexpected SecurityContext ${t} (see http://g.co/ng/security#xss)`)}}checkNotSafeValue(t,e){if(t instanceof nt)throw new Error(`Required a safe ${e}, got a ${t.getTypeName()} `+"(see http://g.co/ng/security#xss)")}bypassSecurityTrustHtml(t){return new at(t)}bypassSecurityTrustStyle(t){return new rt(t)}bypassSecurityTrustScript(t){return new it(t)}bypassSecurityTrustUrl(t){return new st(t)}bypassSecurityTrustResourceUrl(t){return new ot(t)}}class nt{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}`+" (see http://g.co/ng/security#xss)"}}class at extends nt{getTypeName(){return"HTML"}}class rt extends nt{getTypeName(){return"Style"}}class it extends nt{getTypeName(){return"Script"}}class st extends nt{getTypeName(){return"URL"}}class ot extends nt{getTypeName(){return"ResourceURL"}}const ut=[{provide:r.PLATFORM_ID,useValue:a["ɵPLATFORM_BROWSER_ID"]},{provide:r.PLATFORM_INITIALIZER,useValue:function(){c.makeCurrent(),m.init()},multi:!0},{provide:a.PlatformLocation,useClass:class extends a.PlatformLocation{constructor(t){super(),this._doc=t,this._init()}_init(){this.location=s().getLocation(),this._history=s().getHistory()}getBaseHrefFromDOM(){return s().getBaseHref(this._doc)}onPopState(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)}onHashChange(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)}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(t){this.location.pathname=t}pushState(t,e,n){g()?this._history.pushState(t,e,n):this.location.hash=n}replaceState(t,e,n){g()?this._history.replaceState(t,e,n):this.location.hash=n}forward(){this._history.forward()}back(){this._history.back()}getState(){return this._history.state}},deps:[a.DOCUMENT]},{provide:a.DOCUMENT,useFactory:function(){return document},deps:[]}],lt=Object(r.createPlatformFactory)(r.platformCore,"browser",ut);class dt{constructor(t){if(t)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(t){return{ngModule:dt,providers:[{provide:r.APP_ID,useValue:t.appId},{provide:p,useExisting:r.APP_ID},b]}}}"undefined"!=typeof window&&window},cVYH:function(t,e,n){var a=n("hh1v"),r=n("0rvr");t.exports=function(t,e,n){var i,s;return r&&"function"==typeof(i=e.constructor)&&i!==n&&a(s=i.prototype)&&s!==n.prototype&&r(t,s),t}},cp0P:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("HDdC"),r=n("DH7j"),i=n("lJxs"),s=n("XoHu"),o=n("Cfvw");function u(...t){if(1===t.length){const e=t[0];if(Object(r.a)(e))return l(e,null);if(Object(s.a)(e)&&Object.getPrototypeOf(e)===Object.prototype){const t=Object.keys(e);return l(t.map(t=>e[t]),t)}}if("function"==typeof t[t.length-1]){const e=t.pop();return l(t=1===t.length&&Object(r.a)(t[0])?t[0]:t,null).pipe(Object(i.a)(t=>e(...t)))}return l(t,null)}function l(t,e){return new a.a(n=>{const a=t.length;if(0===a)return void n.complete();const r=new Array(a);let i=0,s=0;for(let u=0;u<a;u++){const l=Object(o.a)(t[u]);let d=!1;n.add(l.subscribe({next:t=>{d||(d=!0,s++),r[u]=t},error:t=>n.error(t),complete:()=>{i++,i!==a&&d||(s===a&&n.next(e?e.reduce((t,e,n)=>(t[e]=r[n],t),{}):r),n.complete())}}))}})}},"cq/+":function(t,e,n){var a=n("mc0g")();t.exports=a},crnd:function(t,e){function n(t){return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}))}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id="crnd"},cvCv:function(t,e){t.exports=function(t){return function(){return t}}},czMo:function(t,e,n){!function(t){"use strict";t.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},"d+Og":function(t,e,n){"use strict";var a=n("LvDl");let r=(()=>{class t{constructor(t){if(this.type=t,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}isValidType(){return t.VALID_CATEGORIES.includes(this.type)}setTypeStates(){switch(this.type){case t.CATEGORY_CLEAN:this.states=["active","clean"];break;case t.CATEGORY_WORKING:this.states=["activating","backfill_wait","backfilling","creating","deep","degraded","forced_backfill","forced_recovery","peering","peered","recovering","recovery_wait","repair","scrubbing","snaptrim","snaptrim_wait"];break;case t.CATEGORY_WARNING:this.states=["backfill_toofull","backfill_unfound","down","incomplete","inconsistent","recovery_toofull","recovery_unfound","remapped","snaptrim_error","stale","undersized"];break;default:this.states=[]}}}return t.CATEGORY_CLEAN="clean",t.CATEGORY_WORKING="working",t.CATEGORY_WARNING="warning",t.CATEGORY_UNKNOWN="unknown",t.VALID_CATEGORIES=[t.CATEGORY_CLEAN,t.CATEGORY_WORKING,t.CATEGORY_WARNING,t.CATEGORY_UNKNOWN],t})();var i=n("8Y7J"),s=n("kJI8");n.d(e,"a",(function(){return o}));let o=(()=>{class t{constructor(){this.categories=this.createCategories()}getAllTypes(){return r.VALID_CATEGORIES}getTypeByStates(t){const e=this.getPgStatesFromText(t);if(0===e.length)return r.CATEGORY_UNKNOWN;const n=a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>a.intersection(this.categories[t].states,e).length));if(n[r.CATEGORY_WARNING]>0)return r.CATEGORY_WARNING;const i=n[r.CATEGORY_WORKING];return e.length>n[r.CATEGORY_CLEAN]+i?r.CATEGORY_UNKNOWN:i?r.CATEGORY_WORKING:r.CATEGORY_CLEAN}createCategories(){return a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(t=>new r(t)))}getPgStatesFromText(t){const e=t.replace(/[^a-z]+/g," ").trim().split(" ");return a.uniq(e)}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:s.a}),t})()},dApe:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("2vnA"),i=n("MP8s"),s=n("X+05"),o=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},u=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},l=function(){function t(t){var e=this;this.treeModel=t,this.yBlocks=0,this.x=0,this.viewportHeight=null,this.viewport=null,t.virtualScroll=this,this._dispose=[Object(r.b)((function(){return e.fixScroll()}))]}return Object.defineProperty(t.prototype,"y",{get:function(){return 150*this.yBlocks},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalHeight",{get:function(){return this.treeModel.virtualRoot?this.treeModel.virtualRoot.height:0},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},t.prototype.init=function(){var t=this,e=this.recalcPositions.bind(this);e(),this._dispose=this._dispose.concat([Object(r.e)((function(){return t.treeModel.roots}),e),Object(r.e)((function(){return t.treeModel.expandedNodeIds}),e),Object(r.e)((function(){return t.treeModel.hiddenNodeIds}),e)]),this.treeModel.subscribe(s.a.loadNodeChildren,e)},t.prototype.isEnabled=function(){return this.treeModel.options.useVirtualScroll},t.prototype._setYBlocks=function(t){this.yBlocks=t},t.prototype.recalcPositions=function(){this.treeModel.virtualRoot.height=this._getPositionAfter(this.treeModel.getVisibleRoots(),0)},t.prototype._getPositionAfter=function(t,e){var n=this,a=e;return t.forEach((function(t){t.position=a,a=n._getPositionAfterNode(t,a)})),a},t.prototype._getPositionAfterNode=function(t,e){var n=t.getSelfHeight()+e;return t.children&&t.isExpanded&&(n=this._getPositionAfter(t.visibleChildren,n)),t.height=n-e,n},t.prototype.clear=function(){this._dispose.forEach((function(t){return t()}))},t.prototype.setViewport=function(t){Object.assign(this,{viewport:t,x:t.scrollLeft,yBlocks:Math.round(t.scrollTop/150),viewportHeight:t.getBoundingClientRect?t.getBoundingClientRect().height:0})},t.prototype.scrollIntoView=function(t,e,n){if(void 0===n&&(n=!0),t.options.scrollContainer){var a=t.options.scrollContainer,r=a.getBoundingClientRect().height,i=a.getBoundingClientRect().top,s=this.viewport.getBoundingClientRect().top+t.position-i;(e||s<a.scrollTop||s+t.getSelfHeight()>a.scrollTop+r)&&(a.scrollTop=n?s-r/2:s)}else(e||t.position<this.y||t.position+t.getSelfHeight()>this.y+this.viewportHeight)&&this.viewport&&(this.viewport.scrollTop=n?t.position-this.viewportHeight/2:t.position,this._setYBlocks(Math.floor(this.viewport.scrollTop/150)))},t.prototype.getViewportNodes=function(t){var e=this;if(!t)return[];var n=t.filter((function(t){return!t.isHidden}));if(!this.isEnabled())return n;if(!this.viewportHeight||!n.length)return[];var a=d(n,(function(t){return t.position+500>e.y||t.position+t.height>e.y})),r=d(n,(function(t){return t.position-500>e.y+e.viewportHeight}),a),i=[];if(r-a>(1e3+this.viewportHeight)/n[0].treeModel.options.options.nodeHeight)return[];for(var s=a;s<=r;s++)i.push(n[s]);return i},t.prototype.fixScroll=function(){var t=Math.max(0,this.totalHeight-this.viewportHeight);this.y<0&&this._setYBlocks(0),this.y>t&&this._setYBlocks(t/150)},o([r.d,u("design:type",Object)],t.prototype,"yBlocks",void 0),o([r.d,u("design:type",Object)],t.prototype,"x",void 0),o([r.d,u("design:type",Object)],t.prototype,"viewportHeight",void 0),o([r.c,u("design:type",Object),u("design:paramtypes",[])],t.prototype,"y",null),o([r.c,u("design:type",Object),u("design:paramtypes",[])],t.prototype,"totalHeight",null),o([r.a,u("design:type",Function),u("design:paramtypes",[Object]),u("design:returntype",void 0)],t.prototype,"_setYBlocks",null),o([r.a,u("design:type",Function),u("design:paramtypes",[]),u("design:returntype",void 0)],t.prototype,"recalcPositions",null),o([r.a,u("design:type",Function),u("design:paramtypes",[Object]),u("design:returntype",void 0)],t.prototype,"setViewport",null),o([r.a,u("design:type",Function),u("design:paramtypes",[Object,Object,Object]),u("design:returntype",void 0)],t.prototype,"scrollIntoView",null),o([Object(a.Injectable)(),u("design:paramtypes",[i.a])],t)}();function d(t,e,n){void 0===n&&(n=0);for(var a=n,r=t.length-1;a!==r;){var i=Math.floor((a+r)/2);e(t[i])?r=i:a=a===i?r:i}return a}},"dBg+":function(t,e){e.f=Object.getOwnPropertySymbols},dD9F:function(t,e,n){var a=n("NykK"),r=n("shjB"),i=n("ExA7"),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&r(t.length)&&!!s[a(t)]}},dEH0:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{transform(t){return`${t} ms`}}},dNwA:function(t,e,n){!function(t){"use strict";t.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("wd/R"))},dTAl:function(t,e,n){var a=n("GoyQ"),r=Object.create,i=function(){function t(){}return function(e){if(!a(e))return{};if(r)return r(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=i},dgut:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("NEZu");n("Fgil");class r{constructor(t){this.dimlessBinaryPipe=t,this.style={height:"30px",width:"100px"},this.colors=[{backgroundColor:"rgba(40,140,234,0.2)",borderColor:"rgba(40,140,234,1)",pointBackgroundColor:"rgba(40,140,234,1)",pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(40,140,234,0.8)"}],this.options={animation:{duration:0},responsive:!0,maintainAspectRatio:!1,legend:{display:!1},elements:{line:{borderWidth:1}},tooltips:{enabled:!1,mode:"index",intersect:!1,custom:void 0,callbacks:{label:t=>this.isBinary?this.dimlessBinaryPipe.transform(t.yLabel):t.yLabel,title:()=>""}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}ngOnInit(){const t=new a.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",t=>t.caretY-t.height-t.yPadding-5+"px");t.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=e=>{t.customTooltips(e)}}ngOnChanges(t){this.datasets[0].data=t.data.currentValue,this.labels=[...Array(t.data.currentValue.length)]}}},dt0z:function(t,e,n){var a=n("zoYe");t.exports=function(t){return null==t?"":a(t)}},"e+ae":function(t,e,n){!function(t){"use strict";var e="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function a(t){return t>1&&t<5}function r(t,e,n,r){var i=t+" ";switch(n){case"s":return e||r?"pár sekúnd":"pár sekundami";case"ss":return e||r?i+(a(t)?"sekundy":"sekúnd"):i+"sekundami";case"m":return e?"minúta":r?"minútu":"minútou";case"mm":return e||r?i+(a(t)?"minúty":"minút"):i+"minútami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?i+(a(t)?"hodiny":"hodín"):i+"hodinami";case"d":return e||r?"deň":"dňom";case"dd":return e||r?i+(a(t)?"dni":"dní"):i+"dňami";case"M":return e||r?"mesiac":"mesiacom";case"MM":return e||r?i+(a(t)?"mesiace":"mesiacov"):i+"mesiacmi";case"y":return e||r?"rok":"rokom";case"yy":return e||r?i+(a(t)?"roky":"rokov"):i+"rokmi"}}t.defineLocale("sk",{months:e,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},e4Nc:function(t,e,n){var a=n("fGT3"),r=n("k+1r"),i=n("JHgL"),s=n("pSRY"),o=n("H8j4");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}u.prototype.clear=a,u.prototype.delete=r,u.prototype.get=i,u.prototype.has=s,u.prototype.set=o,t.exports=u},e5cp:function(t,e,n){var a=n("fmRc"),r=n("or5M"),i=n("HDyB"),s=n("seXi"),o=n("QqLw"),u=n("Z0cm"),l=n("DSRE"),d=n("c6wG"),c="[object Object]",f=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,h,g,p){var b=u(t),m=u(e),y=b?"[object Array]":o(t),v=m?"[object Array]":o(e),x=(y="[object Arguments]"==y?c:y)==c,_=(v="[object Arguments]"==v?c:v)==c,T=y==v;if(T&&l(t)){if(!l(e))return!1;b=!0,x=!1}if(T&&!x)return p||(p=new a),b||d(t)?r(t,e,n,h,g,p):i(t,e,y,n,h,g,p);if(!(1&n)){var O=x&&f.call(t,"__wrapped__"),w=_&&f.call(e,"__wrapped__");if(O||w){var S=O?t.value():t,I=w?e.value():e;return p||(p=new a),g(S,I,n,h,p)}}return!!T&&(p||(p=new a),s(t,e,n,h,g,p))}},"eDl+":function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},eIep:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("l7GE"),r=n("51Dv"),i=n("ZUHj"),s=n("lJxs"),o=n("Cfvw");function u(t,e){return"function"==typeof e?n=>n.pipe(u((n,a)=>Object(o.a)(t(n,a)).pipe(Object(s.a)((t,r)=>e(n,t,a,r))))):e=>e.lift(new l(t))}class l{constructor(t){this.project=t}call(t,e){return e.subscribe(new d(t,this.project))}}class d extends a.a{constructor(t,e){super(t),this.project=e,this.index=0}_next(t){let e;const n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this._innerSub(e,t,n)}_innerSub(t,e,n){const a=this.innerSubscription;a&&a.unsubscribe();const s=new r.a(this,e,n),o=this.destination;o.add(s),this.innerSubscription=Object(i.a)(this,t,void 0,void 0,s),this.innerSubscription!==s&&o.add(this.innerSubscription)}_complete(){const{innerSubscription:t}=this;t&&!t.closed||super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=null}notifyComplete(t){this.destination.remove(t),this.innerSubscription=null,this.isStopped&&super._complete()}notifyNext(t,e,n,a,r){this.destination.next(e)}}},eTJe:function(t,e,n){"use strict";var a=n("s7LF"),r=n("LvDl"),i=n("cp0P"),s=(n("SgmB"),n("ZDA6"),n("sne2"),n("mtw6")),o=n("QFaf"),u=n("1Ni5"),l=(n("9nlD"),function(t){return t.editing="editing",t}({}));class d{}n.d(e,"a",(function(){return c}));class c{constructor(t,e,n,a,r,i,s){this.route=t,this.router=e,this.roleService=n,this.scopeService=a,this.notificationService=r,this.i18n=i,this.actionLabels=s,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=l,this.resource=this.i18n("role"),this.createForm(),this.listenToChanges()}createForm(){this.roleForm=new o.a({name:new a.i("",{validators:[a.B.required],asyncValidators:[u.a.unique(this.roleService.exists,this.roleService)]}),description:new a.i(""),scopes_permissions:new a.i({})})}ngOnInit(){this.columns=[{prop:"scope",name:this.i18n("All"),flexGrow:2,cellTemplate:this.cellScopeCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTemplate:this.cellPermissionCheckboxTpl,headerTemplate:this.headerPermissionCheckboxTpl}],this.router.url.startsWith("/user-management/roles/edit")?(this.mode=this.roleFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.mode===this.roleFormMode.editing?this.initEdit():this.initCreate()}initCreate(){this.scopeService.list().subscribe(t=>{this.scopes=t,this.roleForm.get("scopes_permissions").setValue({})})}initEdit(){this.roleForm.get("name").disable(),this.route.params.subscribe(t=>{const e=[];e.push(this.scopeService.list()),e.push(this.roleService.get(t.name)),Object(i.a)(e).subscribe(t=>{this.scopes=t[0],["name","description","scopes_permissions"].forEach(e=>this.roleForm.get(e).setValue(t[1][e]))})})}listenToChanges(){this.roleForm.get("scopes_permissions").valueChanges.subscribe(t=>{const e=[];r.each(this.scopes,n=>{const a={read:!1,create:!1,update:!1,delete:!1};a.scope=n,n in t&&r.each(t[n],t=>{a[t]=!0}),e.push(a)}),this.scopes_permissions=e})}isRowChecked(t){const e=r.find(this.scopes_permissions,e=>e.scope===t);return!r.isUndefined(e)&&e.read&&e.create&&e.update&&e.delete}isHeaderChecked(t){let e=[t];return"scope"===t&&(e=["read","create","update","delete"]),e.every(t=>this.scopes_permissions.every(e=>e[t]))}onClickCellCheckbox(t,e,n=null){const a=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let i=[e];"scope"===e&&(i=["read","create","update","delete"]),t in a||(a[t]=[]),n&&n.target.checked||!r.isEqual(i.sort(),r.intersection(a[t],i).sort())?a[t]=r.union(a[t],i):(a[t]=r.difference(a[t],i),r.isEmpty(a[t])&&r.unset(a,t)),this.roleForm.get("scopes_permissions").setValue(a)}onClickHeaderCheckbox(t,e){const n=r.cloneDeep(this.roleForm.getValue("scopes_permissions"));let a=[t];"scope"===t&&(a=["read","create","update","delete"]),r.each(a,t=>{r.each(this.scopes,a=>{e.target.checked?n[a]=r.union(n[a],[t]):(n[a]=r.difference(n[a],[t]),r.isEmpty(n[a])&&r.unset(n,a))})}),this.roleForm.get("scopes_permissions").setValue(n)}getRequest(){const t=new d;return["name","description","scopes_permissions"].forEach(e=>t[e]=this.roleForm.get(e).value),t}createAction(){const t=this.getRequest();this.roleService.create(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Created role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}editAction(){const t=this.getRequest();this.roleService.update(t).subscribe(()=>{this.notificationService.show(s.a.success,this.i18n("Updated role '{{role_name}}'",{role_name:t.name})),this.router.navigate(["/user-management/roles"])},()=>{this.roleForm.setErrors({cdSubmitButton:!0})})}submit(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()}}},eUgh:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length,r=Array(a);++n<a;)r[n]=e(t[n],n,t);return r}},ebwN:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"Map");t.exports=a},efK2:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e,n){return a.isString(t)?(n=a.defaultTo(n,""),a.truncate(t,{length:e,omission:n})):t}}},"ej+x":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("lOp/"),r=n("8Y7J"),i=n("IheW");let s=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=3e4,this.featureToggleMap$=this.timerService.get(()=>this.http.get(this.API_URL),this.REFRESH_INTERVAL)}get(){return this.featureToggleMap$}}return t.ngInjectableDef=r["ɵɵdefineInjectable"]({factory:function(){return new t(r["ɵɵinject"](i.c),r["ɵɵinject"](a.a))},token:t,providedIn:"root"}),t})()},ekgI:function(t,e,n){var a=n("YESw"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return a?void 0!==e[t]:r.call(e,t)}},ewvW:function(t,e,n){var a=n("HYAF");t.exports=function(t){return Object(a(t))}},f5p1:function(t,e,n){var a=n("2oRo"),r=n("iSVu"),i=a.WeakMap;t.exports="function"==typeof i&&/native code/.test(r(i))},f95s:function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n("2vnA"),r=n("X+05"),i=n("afOK"),s=n.n(i),o=n("RBan"),u=n.n(o),l=n("MJIl"),d=n.n(l),c=n("Jlc5"),f=n.n(c),h=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},g=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},p=function(){function t(t,e,n,a){var r=this;this.data=t,this.parent=e,this.treeModel=n,this.position=0,this.allowDrop=function(t,e){return r.options.allowDrop(t,{parent:r,index:0},e)},this.allowDragoverStyling=function(){return r.options.allowDragoverStyling},null==this.id&&(this.id=Math.floor(1e13*Math.random())),this.index=a,this.getField("children")&&this._initChildren(),this.autoLoadChildren()}return Object.defineProperty(t.prototype,"isHidden",{get:function(){return this.treeModel.isHidden(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpanded",{get:function(){return this.treeModel.isExpanded(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isActive",{get:function(){return this.treeModel.isActive(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFocused",{get:function(){return this.treeModel.isNodeFocused(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):d()(this.children,(function(t){return t.isSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isAllSelected",{get:function(){return this.isSelectable()?this.treeModel.isSelected(this):f()(this.children,(function(t){return t.isAllSelected}))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isPartiallySelected",{get:function(){return this.isSelected&&!this.isAllSelected},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"level",{get:function(){return this.parent?this.parent.level+1:0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return this.parent?this.parent.path.concat([this.id]):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"elementRef",{get:function(){throw"Element Ref is no longer supported since introducing virtual scroll\n\n      You may use a template to obtain a reference to the element"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalNode",{get:function(){return this._originalNode},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasChildren",{get:function(){return!!(this.getField("hasChildren")||this.children&&this.children.length>0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCollapsed",{get:function(){return!this.isExpanded},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLeaf",{get:function(){return!this.hasChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isRoot",{get:function(){return this.parent.data.virtual},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"realParent",{get:function(){return this.isRoot?null:this.parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{get:function(){return this.treeModel.options},enumerable:!0,configurable:!0}),t.prototype.fireEvent=function(t){this.treeModel.fireEvent(t)},Object.defineProperty(t.prototype,"displayField",{get:function(){return this.getField("display")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"id",{get:function(){return this.getField("id")},set:function(t){this.setField("id",t)},enumerable:!0,configurable:!0}),t.prototype.getField=function(t){return this.data[this.options[t+"Field"]]},t.prototype.setField=function(t,e){this.data[this.options[t+"Field"]]=e},t.prototype._findAdjacentSibling=function(t,e){void 0===e&&(e=!1);var n=this._getParentsChildren(e),a=n.indexOf(this);return n.length>a+t?n[a+t]:null},t.prototype.findNextSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(1,t)},t.prototype.findPreviousSibling=function(t){return void 0===t&&(t=!1),this._findAdjacentSibling(-1,t)},t.prototype.getVisibleChildren=function(){return this.visibleChildren},Object.defineProperty(t.prototype,"visibleChildren",{get:function(){return(this.children||[]).filter((function(t){return!t.isHidden}))},enumerable:!0,configurable:!0}),t.prototype.getFirstChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return s()(e||[])},t.prototype.getLastChild=function(t){void 0===t&&(t=!1);var e=t?this.visibleChildren:this.children;return u()(e||[])},t.prototype.findNextNode=function(t,e){return void 0===t&&(t=!0),void 0===e&&(e=!1),t&&this.isExpanded&&this.getFirstChild(e)||this.findNextSibling(e)||this.parent&&this.parent.findNextNode(!1,e)},t.prototype.findPreviousNode=function(t){void 0===t&&(t=!1);var e=this.findPreviousSibling(t);return e?e._getLastOpenDescendant(t):this.realParent},t.prototype._getLastOpenDescendant=function(t){void 0===t&&(t=!1);var e=this.getLastChild(t);return this.isCollapsed||!e?this:e._getLastOpenDescendant(t)},t.prototype._getParentsChildren=function(t){return void 0===t&&(t=!1),this.parent&&(t?this.parent.getVisibleChildren():this.parent.children)||[]},t.prototype.getIndexInParent=function(t){return void 0===t&&(t=!1),this._getParentsChildren(t).indexOf(this)},t.prototype.isDescendantOf=function(t){return this===t||this.parent&&this.parent.isDescendantOf(t)},t.prototype.getNodePadding=function(){return this.options.levelPadding*(this.level-1)+"px"},t.prototype.getClass=function(){return[this.options.nodeClass(this),"tree-node-level-"+this.level].join(" ")},t.prototype.onDrop=function(t){this.mouseAction("drop",t.event,{from:t.element,to:{parent:this,index:0,dropOnNode:!0}})},t.prototype.allowDrag=function(){return this.options.allowDrag(this)},t.prototype.loadNodeChildren=function(){var t=this;return this.options.getChildren?Promise.resolve(this.options.getChildren(this)).then((function(e){e&&(t.setField("children",e),t._initChildren(),t.options.useTriState&&t.treeModel.isSelected(t)&&t.setIsSelected(!0),t.children.forEach((function(t){t.getField("isExpanded")&&t.hasChildren&&t.expand()})))})).then((function(){t.fireEvent({eventName:r.a.loadNodeChildren,node:t})})):Promise.resolve()},t.prototype.expand=function(){return this.isExpanded||this.toggleExpanded(),this},t.prototype.collapse=function(){return this.isExpanded&&this.toggleExpanded(),this},t.prototype.doForAll=function(t){var e=this;Promise.resolve(t(this)).then((function(){e.children&&e.children.forEach((function(e){return e.doForAll(t)}))}))},t.prototype.expandAll=function(){this.doForAll((function(t){return t.expand()}))},t.prototype.collapseAll=function(){this.doForAll((function(t){return t.collapse()}))},t.prototype.ensureVisible=function(){return this.realParent&&(this.realParent.expand(),this.realParent.ensureVisible()),this},t.prototype.toggleExpanded=function(){return this.setIsExpanded(!this.isExpanded),this},t.prototype.setIsExpanded=function(t){return this.hasChildren&&this.treeModel.setExpandedNode(this,t),this},t.prototype.autoLoadChildren=function(){var t=this;this.handler=Object(a.e)((function(){return t.isExpanded}),(function(e){!t.children&&t.hasChildren&&e&&t.loadNodeChildren()}),{fireImmediately:!0})},t.prototype.dispose=function(){this.children&&this.children.forEach((function(t){return t.dispose()})),this.handler&&this.handler(),this.parent=null,this.children=null},t.prototype.setIsActive=function(t,e){return void 0===e&&(e=!1),this.treeModel.setActiveNode(this,t,e),t&&this.focus(this.options.scrollOnActivate),this},t.prototype.isSelectable=function(){return this.isLeaf||!this.children||!this.options.useTriState},t.prototype.setIsSelected=function(t){return this.isSelectable()?this.treeModel.setSelectedNode(this,t):this.visibleChildren.forEach((function(e){return e.setIsSelected(t)})),this},t.prototype.toggleSelected=function(){return this.setIsSelected(!this.isSelected),this},t.prototype.toggleActivated=function(t){return void 0===t&&(t=!1),this.setIsActive(!this.isActive,t),this},t.prototype.setActiveAndVisible=function(t){return void 0===t&&(t=!1),this.setIsActive(!0,t).ensureVisible(),setTimeout(this.scrollIntoView.bind(this)),this},t.prototype.scrollIntoView=function(t){void 0===t&&(t=!1),this.treeModel.virtualScroll.scrollIntoView(this,t)},t.prototype.focus=function(t){void 0===t&&(t=!0);var e=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(this),t&&this.scrollIntoView(),e&&this.fireEvent({eventName:r.a.blur,node:e}),this.fireEvent({eventName:r.a.focus,node:this}),this},t.prototype.blur=function(){var t=this.treeModel.getFocusedNode();return this.treeModel.setFocusedNode(null),t&&this.fireEvent({eventName:r.a.blur,node:this}),this},t.prototype.setIsHidden=function(t){this.treeModel.setIsHidden(this,t)},t.prototype.hide=function(){this.setIsHidden(!0)},t.prototype.show=function(){this.setIsHidden(!1)},t.prototype.mouseAction=function(t,e,n){void 0===n&&(n=null),this.treeModel.setFocus(!0);var a=this.options.actionMapping.mouse[t];a&&a(this.treeModel,this,e,n)},t.prototype.getSelfHeight=function(){return this.options.nodeHeight(this)},t.prototype._initChildren=function(){var e=this;this.children=this.getField("children").map((function(n,a){return new t(n,e,e.treeModel,a)}))},h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isHidden",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isExpanded",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isActive",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isFocused",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isAllSelected",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"isPartiallySelected",null),h([a.d,g("design:type",Array)],t.prototype,"children",void 0),h([a.d,g("design:type",Number)],t.prototype,"index",void 0),h([a.d,g("design:type",Object)],t.prototype,"position",void 0),h([a.d,g("design:type",Number)],t.prototype,"height",void 0),h([a.c,g("design:type",Number),g("design:paramtypes",[])],t.prototype,"level",null),h([a.c,g("design:type",Array),g("design:paramtypes",[])],t.prototype,"path",null),h([a.c,g("design:type",Object),g("design:paramtypes",[])],t.prototype,"visibleChildren",null),h([a.a,g("design:type",Function),g("design:paramtypes",[Object]),g("design:returntype",void 0)],t.prototype,"setIsSelected",null),h([a.a,g("design:type",Function),g("design:paramtypes",[]),g("design:returntype",void 0)],t.prototype,"_initChildren",null),t}()},fGT3:function(t,e,n){var a=n("4kuk"),r=n("Xi7e"),i=n("ebwN");t.exports=function(){this.size=0,this.__data__={hash:new a,map:new(i||r),string:new a}}},fHMY:function(t,e,n){var a,r=n("glrk"),i=n("N+g0"),s=n("eDl+"),o=n("0BK2"),u=n("G+Rx"),l=n("zBJ4"),d=n("93I0")("IE_PROTO"),c=function(){},f=function(t){return"<script>"+t+"<\/script>"},h=function(){try{a=document.domain&&new ActiveXObject("htmlfile")}catch(r){}var t,e;h=a?function(t){t.write(f("")),t.close();var e=t.parentWindow.Object;return t=null,e}(a):((e=l("iframe")).style.display="none",u.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(f("document.F=Object")),t.close(),t.F);for(var n=s.length;n--;)delete h.prototype[s[n]];return h()};o[d]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(c.prototype=r(t),n=new c,c.prototype=null,n[d]=t):n=h(),void 0===e?n:i(n,e)}},"fR/l":function(t,e,n){var a=n("CH3K"),r=n("Z0cm");t.exports=function(t,e,n){var i=e(t);return r(t)?i:a(i,n(t))}},fdAy:function(t,e,n){"use strict";var a=n("I+eb"),r=n("ntOU"),i=n("4WOD"),s=n("0rvr"),o=n("1E5z"),u=n("kRJp"),l=n("busE"),d=n("tiKp"),c=n("xDBR"),f=n("P4y1"),h=n("rpNk"),g=h.IteratorPrototype,p=h.BUGGY_SAFARI_ITERATORS,b=d("iterator"),m=function(){return this};t.exports=function(t,e,n,d,h,y,v){r(n,e,d);var x,_,T,O=function(t){if(t===h&&C)return C;if(!p&&t in I)return I[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},w=e+" Iterator",S=!1,I=t.prototype,N=I[b]||I["@@iterator"]||h&&I[h],C=!p&&N||O(h),R="Array"==e&&I.entries||N;if(R&&(x=i(R.call(new t)),g!==Object.prototype&&x.next&&(c||i(x)===g||(s?s(x,g):"function"!=typeof x[b]&&u(x,b,m)),o(x,w,!0,!0),c&&(f[w]=m))),"values"==h&&N&&"values"!==N.name&&(S=!0,C=function(){return N.call(this)}),c&&!v||I[b]===C||u(I,b,C),f[e]=C,h)if(_={values:O("values"),keys:y?C:O("keys"),entries:O("entries")},v)for(T in _)!p&&!S&&T in I||l(I,T,_[T]);else a({target:e,proto:!0,forced:p||S},_);return _}},fmRc:function(t,e,n){var a=n("Xi7e"),r=n("77Zs"),i=n("L8xA"),s=n("gCq4"),o=n("VaNO"),u=n("0Cz8");function l(t){var e=this.__data__=new a(t);this.size=e.size}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=s,l.prototype.has=o,l.prototype.set=u,t.exports=l},ftKO:function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},fxL3:function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n("8Y7J"),r=n("MP8s"),i=n("gk6K"),s=n("mfoh"),o=n("HIU9"),u=n("ijCd"),l=n.n(u),d=n("JZM8"),c=n.n(d),f=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},h=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},g=function(){function t(t,e){var n=this;this.treeModel=t,this.treeDraggedElement=e,t.eventNames.forEach((function(t){return n[t]=new a.EventEmitter})),t.subscribeToState((function(t){return n.stateChange.emit(t)}))}return Object.defineProperty(t.prototype,"nodes",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"options",{set:function(t){},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"focused",{set:function(t){this.treeModel.setFocus(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"state",{set:function(t){this.treeModel.setState(t)},enumerable:!0,configurable:!0}),t.prototype.onKeydown=function(t){if(this.treeModel.isFocused&&!l()(["input","textarea"],document.activeElement.tagName.toLowerCase())){var e=this.treeModel.getFocusedNode();this.treeModel.performKeyAction(e,t)}},t.prototype.onMousedown=function(t){(function t(e,n){return!e||e.localName!==n&&t(e.parentElement,n)})(t.target,"tree-root")&&this.treeModel.setFocus(!1)},t.prototype.ngOnChanges=function(t){(t.options||t.nodes)&&this.treeModel.setData({options:t.options&&t.options.currentValue,nodes:t.nodes&&t.nodes.currentValue,events:c()(this,this.treeModel.eventNames)})},t.prototype.sizeChanged=function(){this.viewportComponent.setViewport()},f([Object(a.ContentChild)("loadingTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"loadingTemplate",void 0),f([Object(a.ContentChild)("treeNodeTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeTemplate",void 0),f([Object(a.ContentChild)("treeNodeWrapperTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeWrapperTemplate",void 0),f([Object(a.ContentChild)("treeNodeFullTemplate",{static:!1}),h("design:type",a.TemplateRef)],t.prototype,"treeNodeFullTemplate",void 0),f([Object(a.ViewChild)("viewport",{static:!1}),h("design:type",o.a)],t.prototype,"viewportComponent",void 0),f([Object(a.Input)(),h("design:type",Array),h("design:paramtypes",[Array])],t.prototype,"nodes",null),f([Object(a.Input)(),h("design:type",s.b),h("design:paramtypes",[s.b])],t.prototype,"options",null),f([Object(a.Input)(),h("design:type",Boolean),h("design:paramtypes",[Boolean])],t.prototype,"focused",null),f([Object(a.Input)(),h("design:type",Object),h("design:paramtypes",[Object])],t.prototype,"state",null),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"toggleExpanded",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"activate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeActivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"nodeDeactivate",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"select",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"deselect",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"focus",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"blur",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"updateData",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"initialized",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"moveNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"copyNode",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"loadNodeChildren",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"changeFilter",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"event",void 0),f([Object(a.Output)(),h("design:type",Object)],t.prototype,"stateChange",void 0),f([Object(a.HostListener)("body: keydown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onKeydown",null),f([Object(a.HostListener)("body: mousedown",["$event"]),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],t.prototype,"onMousedown",null),f([Object(a.Component)({selector:"Tree, tree-root",providers:[r.a],styles:[],template:'\n      <tree-viewport #viewport>\n          <div\n                  class="angular-tree-component"\n                  [class.node-dragging]="treeDraggedElement.isDragging()"\n                  [class.angular-tree-component-rtl]="treeModel.options.rtl">\n              <tree-node-collection\n                      *ngIf="treeModel.roots"\n                      [nodes]="treeModel.roots"\n                      [treeModel]="treeModel"\n                      [templates]="{\n            loadingTemplate: loadingTemplate,\n            treeNodeTemplate: treeNodeTemplate,\n            treeNodeWrapperTemplate: treeNodeWrapperTemplate,\n            treeNodeFullTemplate: treeNodeFullTemplate\n          }">\n              </tree-node-collection>\n              <tree-node-drop-slot\n                      class="empty-tree-drop-slot"\n                      *ngIf="treeModel.isEmptyTree()"\n                      [dropIndex]="0"\n                      [node]="treeModel.virtualRoot">\n              </tree-node-drop-slot>\n          </div>\n      </tree-viewport>\n  '}),h("design:paramtypes",[r.a,i.a])],t)}()},fzPg:function(t,e,n){!function(t){"use strict";t.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("wd/R"))},"g6v/":function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},gCq4:function(t,e){t.exports=function(t){return this.__data__.get(t)}},gFfm:function(t,e){t.exports=function(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}},gRHU:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("2fFW"),r=n("NJ4a");const i={closed:!0,next(t){},error(t){if(a.a.useDeprecatedSynchronousErrorHandling)throw t;Object(r.a)(t)},complete(){}}},gVVK:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===t?e?"sekundo":"sekundi":2===t?e||a?"sekundi":"sekundah":t<5?e||a?"sekunde":"sekundah":"sekund");case"m":return e?"ena minuta":"eno minuto";case"mm":return r+(1===t?e?"minuta":"minuto":2===t?e||a?"minuti":"minutama":t<5?e||a?"minute":"minutami":e||a?"minut":"minutami");case"h":return e?"ena ura":"eno uro";case"hh":return r+(1===t?e?"ura":"uro":2===t?e||a?"uri":"urama":t<5?e||a?"ure":"urami":e||a?"ur":"urami");case"d":return e||a?"en dan":"enim dnem";case"dd":return r+(1===t?e||a?"dan":"dnem":2===t?e||a?"dni":"dnevoma":e||a?"dni":"dnevi");case"M":return e||a?"en mesec":"enim mesecem";case"MM":return r+(1===t?e||a?"mesec":"mesecem":2===t?e||a?"meseca":"mesecema":t<5?e||a?"mesece":"meseci":e||a?"mesecev":"meseci");case"y":return e||a?"eno leto":"enim letom";case"yy":return r+(1===t?e||a?"leto":"letom":2===t?e||a?"leti":"letoma":t<5?e||a?"leta":"leti":e||a?"let":"leti")}}t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},gekB:function(t,e,n){!function(t){"use strict";var e="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",e[7],e[8],e[9]];function a(t,a,r,i){var s="";switch(r){case"s":return i?"muutaman sekunnin":"muutama sekunti";case"ss":return i?"sekunnin":"sekuntia";case"m":return i?"minuutin":"minuutti";case"mm":s=i?"minuutin":"minuuttia";break;case"h":return i?"tunnin":"tunti";case"hh":s=i?"tunnin":"tuntia";break;case"d":return i?"päivän":"päivä";case"dd":s=i?"päivän":"päivää";break;case"M":return i?"kuukauden":"kuukausi";case"MM":s=i?"kuukauden":"kuukautta";break;case"y":return i?"vuoden":"vuosi";case"yy":s=i?"vuoden":"vuotta"}return function(t,a){return t<10?a?n[t]:e[t]:t}(t,i)+" "+s}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},gjCT:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};t.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("wd/R"))},gk6K:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("8Y7J"),r=function(){function t(){this._draggedElement=null}return t.prototype.set=function(t){this._draggedElement=t},t.prototype.get=function(){return this._draggedElement},t.prototype.isDragging=function(){return!!this.get()},function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.Injectable)()],t)}()},glrk:function(t,e,n){var a=n("hh1v");t.exports=function(t){if(!a(t))throw TypeError(String(t)+" is not an object");return t}},gp3X:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse");n("sb0X"),n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o}));var i=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](3,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](4,2)],(function(t,e){var n=e.component,a=t(e,4,0,n.icons.spinner,n.icons.spin);t(e,3,0,a)}),null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,5,"button",[["class","btn btn-secondary tc_submitButton"]],[[8,"type",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.submit(n)&&a),a}),null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,s)),a["ɵdid"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"btn btn-secondary tc_submitButton",n.btnClass),t(e,5,0,n.loading)}),(function(t,e){var n=e.component;t(e,0,0,n.type,n.loading||n.disabled)}))}},gpbi:function(t,e,n){var a=n("ZWtO"),r=n("KxBF");t.exports=function(t,e){return e.length<2?t:a(t,r(e,0,-1))}},"hKI/":function(t,e){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,i=/^0o[0-7]+$/i,s=parseInt,o="object"==typeof global&&global&&global.Object===Object&&global,u="object"==typeof self&&self&&self.Object===Object&&self,l=o||u||Function("return this")(),d=Object.prototype.toString,c=Math.max,f=Math.min,h=function(){return l.Date.now()};function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function p(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==d.call(t)}(t))return NaN;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(n,"");var o=r.test(t);return o||i.test(t)?s(t.slice(2),o?2:8):a.test(t)?NaN:+t}t.exports=function(t,e,n){var a=!0,r=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return g(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),function(t,e,n){var a,r,i,s,o,u,l=0,d=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=a,i=r;return a=r=void 0,l=e,s=t.apply(i,n)}function v(t){return l=t,o=setTimeout(_,e),d?y(t):s}function x(t){var n=t-u;return void 0===u||n>=e||n<0||b&&t-l>=i}function _(){var t=h();if(x(t))return T(t);o=setTimeout(_,function(t){var n=e-(t-u);return b?f(n,i-(t-l)):n}(t))}function T(t){return o=void 0,m&&a?y(t):(a=r=void 0,s)}function O(){var t=h(),n=x(t);if(a=arguments,r=this,u=t,n){if(void 0===o)return v(u);if(b)return o=setTimeout(_,e),y(u)}return void 0===o&&(o=setTimeout(_,e)),s}return e=p(e)||0,g(n)&&(d=!!n.leading,i=(b="maxWait"in n)?c(p(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==o&&clearTimeout(o),l=0,a=u=r=o=void 0},O.flush=function(){return void 0===o?s:T(h())},O}(t,e,{leading:a,maxWait:e,trailing:r})}},hKrs:function(t,e,n){!function(t){"use strict";t.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})}(n("wd/R"))},heNW:function(t,e){t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},hfeG:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("s7LF"),s=n("+gVj"),o=n("EmSq"),u=n("Fgil"),l=n("aXbf"),d=n("pYKc"),c=n("ppaS"),f=n("GiVz"),h=n("mXUL"),g=n("EEJc"),p=n("ajRT"),b=n("gp3X"),m=n("sb0X"),y=n("KVJa"),v=n("Z21x"),x=n("sne2"),_=n("Rf2I"),T=n("LqlI"),O=n("2EZI");n.d(e,"a",(function(){return j}));var w=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function S(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.titleText)}))}function I(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.message)}))}function N(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["ɵpod"](3,{required:0}),(t()(),a["ɵted"](4,null,[" "," "]))],(function(t,e){var n=t(e,3,0,!0===(null==e.parent.context.$implicit?null:e.parent.context.$implicit.required));t(e,2,0,"cd-col-form-label",n)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name),t(e,4,0,e.parent.context.$implicit.label)}))}function C(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,6,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.e,[a.Renderer2,a.ElementRef,[2,i.b]],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.e]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,16384,null,0,s.h,[[3,i.d],s.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.type,e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,6).validClass,a["ɵnov"](e,6).invalidClass])}))}function R(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,7,"input",[["cdDimlessBinary",""],["class","form-control"],["type","text"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["ɵnov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["ɵnov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["ɵnov"](t,1)._compositionEnd(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,6).onBlur(n.target.value)&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.e,[a.Renderer2,a.ElementRef,[2,i.b]],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.e]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,81920,null,0,o.a,[a.ElementRef,i.q,u.a,l.a],null,null),a["ɵdid"](7,16384,null,0,s.h,[[3,i.d],s.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0),t(e,7,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,1,[e.parent.context.$implicit.name,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,7).validClass,a["ɵnov"](e,7).invalidClass])}))}function A(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,i.v,[a.ElementRef,a.Renderer2,[2,i.A]],{ngValue:[0,"ngValue"]},null),a["ɵdid"](2,147456,null,0,i.F,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,null),t(e,2,0,null)}),(function(t,e){t(e,3,0,null==e.parent.parent.context.$implicit?null:null==e.parent.parent.context.$implicit.typeConfig?null:e.parent.parent.context.$implicit.typeConfig.placeholder)}))}function k(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["ɵdid"](1,147456,null,0,i.v,[a.ElementRef,a.Renderer2,[2,i.A]],{value:[0,"value"]},null),a["ɵdid"](2,147456,null,0,i.F,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function E(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,10,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["ɵnov"](t,1).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["ɵnov"](t,1).onTouched()&&r),r}),null,null)),a["ɵdid"](1,16384,null,0,i.A,[a.Renderer2,a.ElementRef],null,null),a["ɵprd"](1024,null,i.p,(function(t){return[t]}),[i.A]),a["ɵdid"](3,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.E]],{name:[0,"name"]},null),a["ɵprd"](2048,null,i.q,null,[i.j]),a["ɵdid"](5,16384,null,0,i.r,[[4,i.q]],null,null),a["ɵdid"](6,16384,null,0,s.h,[[3,i.d],s.a],{formControlName:[0,"formControlName"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,A)),a["ɵdid"](8,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,k)),a["ɵdid"](10,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.name),t(e,8,0,null==e.parent.context.$implicit?null:null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.placeholder),t(e,10,0,null==e.parent.context.$implicit?null:null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.options)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name,a["ɵnov"](e,5).ngClassUntouched,a["ɵnov"](e,5).ngClassTouched,a["ɵnov"](e,5).ngClassPristine,a["ɵnov"](e,5).ngClassDirty,a["ɵnov"](e,5).ngClassValid,a["ɵnov"](e,5).ngClassInvalid,a["ɵnov"](e,5).ngClassPending,a["ɵnov"](e,6).validClass,a["ɵnov"](e,6).invalidClass)}))}function L(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-select-badges",[],[[8,"id",0]],null,null,d.b,d.a)),a["ɵdid"](1,49152,null,0,c.a,[f.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"],customBadges:[3,"customBadges"]},null)],(function(t,e){t(e,1,0,e.parent.context.$implicit.value,null==e.parent.context.$implicit?null:null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.options,null==e.parent.context.$implicit?null:null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.messages,null==e.parent.context.$implicit?null:null==e.parent.context.$implicit.typeConfig?null:e.parent.context.$implicit.typeConfig.customBadges)}),(function(t,e){t(e,0,0,e.parent.context.$implicit.name)}))}function D(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),a["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getError(e.parent.context.$implicit))}))}function P(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,21,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,20,"div",[],[[8,"className",0],[2,"has-error",null],[2,"has-success",null]],null,null,h.b,h.a)),a["ɵdid"](2,1163264,null,2,s.c,[a.ElementRef,s.g],null,null),a["ɵqud"](603979776,1,{FormControlNames:1}),a["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),a["ɵand"](16777216,null,0,1,null,N)),a["ɵdid"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](7,0,null,0,14,"div",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](9,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpod"](10,{"cd-col-form-input":0,"col-sm-12":1}),(t()(),a["ɵand"](16777216,null,null,2,null,C)),a["ɵdid"](12,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["ɵpad"](13,2),(t()(),a["ɵand"](16777216,null,null,1,null,R)),a["ɵdid"](15,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,E)),a["ɵdid"](17,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,L)),a["ɵdid"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,D)),a["ɵdid"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,6,0,e.context.$implicit.label);var r=t(e,10,0,e.context.$implicit.label,!e.context.$implicit.label);t(e,9,0,r);var i=t(e,13,0,"text","number").includes(e.context.$implicit.type);t(e,12,0,i),t(e,15,0,"binary"===e.context.$implicit.type),t(e,17,0,"select"===e.context.$implicit.type),t(e,19,0,"select-badges"===e.context.$implicit.type),t(e,21,0,n.formGroup.showError(e.context.$implicit.name,a["ɵnov"](e.parent,7)))}),(function(t,e){t(e,1,0,a["ɵinlineInterpolate"](1,"form-group row cd-",e.context.$implicit.name,"-form-group"),a["ɵnov"](e,2).hasErrors,a["ɵnov"](e,2).hasSuccess)}))}function M(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,22,"cd-modal",[],null,null,null,g.c,g.b)),a["ɵdid"](1,49152,null,0,p.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["ɵand"](16777216,null,0,1,null,S)),a["ɵdid"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵeld"](4,0,null,1,18,null,null,null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,17,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var r=!0;return"submit"===e&&(r=!1!==a["ɵnov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["ɵnov"](t,7).onReset()&&r),"submit"===e&&(r=!1!==a["ɵnov"](t,10).onSubmit()&&r),r}),null,null)),a["ɵdid"](6,16384,null,0,i.G,[],null,null),a["ɵdid"](7,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["ɵprd"](2048,null,i.d,null,[i.l]),a["ɵdid"](9,16384,null,0,i.s,[[4,i.d]],null,null),a["ɵdid"](10,16384,null,0,s.d,[],{formGroup:[0,"formGroup"]},null),(t()(),a["ɵeld"](11,0,null,null,4,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["ɵand"](16777216,null,null,1,null,I)),a["ɵdid"](13,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,P)),a["ɵdid"](15,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["ɵeld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0,r=t.component;return"submitAction"===e&&(a=!1!==r.onSubmitForm(r.formGroup.value)&&a),a}),b.b,b.a)),a["ɵdid"](19,114688,null,0,m.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["ɵted"](20,0,[" "," "])),(t()(),a["ɵeld"](21,0,null,null,1,"cd-back-button",[],null,null,null,y.b,y.a)),a["ɵdid"](22,49152,null,0,v.a,[r.Location,x.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,3,0,n.titleText),t(e,7,0,n.formGroup),t(e,10,0,n.formGroup),t(e,13,0,n.message),t(e,15,0,n.fields),t(e,19,0,n.formGroup),t(e,22,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,5,0,a["ɵnov"](e,9).ngClassUntouched,a["ɵnov"](e,9).ngClassTouched,a["ɵnov"](e,9).ngClassPristine,a["ɵnov"](e,9).ngClassDirty,a["ɵnov"](e,9).ngClassValid,a["ɵnov"](e,9).ngClassInvalid,a["ɵnov"](e,9).ngClassPending),t(e,20,0,n.submitButtonText)}))}function q(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"cd-form-modal",[],null,null,null,M,w)),a["ɵdid"](1,114688,null,0,_.a,[T.a,O.a,l.a,u.a,f.a],null,null)],(function(t,e){t(e,1,0)}),null)}var j=a["ɵccf"]("cd-form-modal",_.a,q,{},{},[])},hgQt:function(t,e,n){var a=n("Juji"),r=n("4sDh");t.exports=function(t,e){return null!=t&&r(t,e,a)}},hh1v:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},honF:function(t,e,n){!function(t){"use strict";var e={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};t.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(t){return t.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},hpHm:function(t,e,n){"use strict";n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return p})),n.d(e,"c",(function(){return c})),n.d(e,"d",(function(){return h})),n.d(e,"e",(function(){return o})),n.d(e,"f",(function(){return s})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return u})),n.d(e,"i",(function(){return y})),n.d(e,"j",(function(){return d}));var a=n("8Y7J");class r{constructor(t,e){this.open=t,this.close=e||t}isManual(){return"manual"===this.open||"manual"===this.close}}const i={hover:["mouseover","mouseout"],focus:["focusin","focusout"]};function s(t,e=i){const n=(t||"").trim();if(0===n.length)return[];const a=n.split(/\s+/).map(t=>t.split(":")).map(t=>{const n=e[t[0]]||t;return new r(n[0],n[1])}),s=a.filter(t=>t.isManual());if(s.length>1)throw new Error("Triggers parse error: only one manual trigger is allowed");if(1===s.length&&a.length>1)throw new Error("Triggers parse error: manual trigger can't be mixed with other triggers");return a}function o(t,e){const n=s(e.triggers),a=e.target;if(1===n.length&&n[0].isManual())return Function.prototype;const r=[],i=[],o=()=>{i.forEach(t=>r.push(t())),i.length=0};return n.forEach(n=>{const s=n.open===n.close,u=s?e.toggle:e.show;s||i.push(()=>t.listen(a,n.close,e.hide)),r.push(t.listen(a,n.open,()=>u(o)))}),()=>{r.forEach(t=>t())}}function u(t,e){return e.outsideClick?t.listen("document","click",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}function l(t,e){return e.outsideEsc?t.listen("document","keyup.esc",t=>{e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(e=>e.contains(t.target))||e.hide()}):Function.prototype}const d="undefined"!=typeof window&&window||{},c=d.document;let f;function h(){return void 0===d||(void 0===d.__theme?f?"bs3"===f:(f=function(){if("undefined"==typeof document)return null;const t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");const e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}(),"bs3"===f):"bs4"!==d.__theme)}function g(t){return function(t,e){const n=` __${e}Value`;Object.defineProperty(t,e,{get(){return this[n]},set(t){const a=this[n];this[n]=t,a!==t&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}}class p{static reflow(t){}static getStyles(t){let e=t.ownerDocument.defaultView;return e&&e.opener||(e=d),e.getComputedStyle(t)}}const b={},m="undefined"==typeof console||!("warn"in console);function y(t){!Object(a.isDevMode)()||m||t in b||(b[t]=!0,console.warn(t))}},hrfs:function(t,e,n){"use strict";n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return m})),n.d(e,"c",(function(){return g}));var a=n("8Y7J"),r=n("MO+k"),i=n("2Vo4"),s=n("LvDl");const o=[[255,99,132],[54,162,235],[255,206,86],[231,233,237],[75,192,192],[151,187,205],[220,220,220],[247,70,74],[70,191,189],[253,180,92],[148,159,177],[77,83,96]];function u(t,e){return"rgba("+t.concat(e).join(",")+")"}function l(t,e){return Math.floor(Math.random()*(e-t+1))+t}function d(t){return{backgroundColor:t.map(t=>u(t,.6)),borderColor:t.map(()=>"#fff"),pointBackgroundColor:t.map(t=>u(t,1)),pointBorderColor:t.map(()=>"#fff"),pointHoverBackgroundColor:t.map(t=>u(t,1)),pointHoverBorderColor:t.map(t=>u(t,1))}}function c(){return[l(0,255),l(0,255),l(0,255)]}function f(t){return o[t]||c()}function h(t){const e=new Array(t);for(let n=0;n<t;n++)e[n]=o[n]||c();return e}let g=(()=>{class t{constructor(){this.pColorschemesOptions={},this.colorschemesOptions=new i.a({})}setColorschemesOptions(t){this.pColorschemesOptions=t,this.colorschemesOptions.next(t)}getColorschemesOptions(){return this.pColorschemesOptions}}return t.ngInjectableDef=Object(a["ɵɵdefineInjectable"])({factory:function(){return new t},token:t,providedIn:"root"}),t})();const p=function(){var t={Default:0,Update:1,Refresh:2};return t[t.Default]="Default",t[t.Update]="Update",t[t.Refresh]="Refresh",t}();class b{constructor(t,e){this.element=t,this.themeService=e,this.options={},this.chartClick=new a.EventEmitter,this.chartHover=new a.EventEmitter,this.old={dataExists:!1,dataLength:0,datasetsExists:!1,datasetsLength:0,datasetsDataObjects:[],datasetsDataLengths:[],colorsExists:!1,colors:[],labelsExist:!1,labels:[],legendExists:!1,legend:{}},this.subs=[]}static registerPlugin(t){r.Chart.plugins.register(t)}static unregisterPlugin(t){r.Chart.plugins.unregister(t)}ngOnInit(){this.ctx=this.element.nativeElement.getContext("2d"),this.refresh(),this.subs.push(this.themeService.colorschemesOptions.subscribe(t=>this.themeChanged(t)))}themeChanged(t){this.refresh()}ngDoCheck(){if(!this.chart)return;let t=p.Default;const e=e=>{t=e>t?e:t};switch(!!this.data!==this.old.dataExists&&(this.propagateDataToDatasets(this.data),this.old.dataExists=!!this.data,e(p.Update)),this.data&&this.data.length!==this.old.dataLength&&(this.old.dataLength=this.data&&this.data.length||0,e(p.Update)),!!this.datasets!==this.old.datasetsExists&&(this.old.datasetsExists=!!this.datasets,e(p.Update)),this.datasets&&this.datasets.length!==this.old.datasetsLength&&(this.old.datasetsLength=this.datasets&&this.datasets.length||0,e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data!==this.old.datasetsDataObjects[e]).length&&(this.old.datasetsDataObjects=this.datasets.map(t=>t.data),e(p.Update)),this.datasets&&this.datasets.filter((t,e)=>t.data.length!==this.old.datasetsDataLengths[e]).length&&(this.old.datasetsDataLengths=this.datasets.map(t=>t.data.length),e(p.Update)),!!this.colors!==this.old.colorsExists&&(this.old.colorsExists=!!this.colors,this.updateColors(),e(p.Update)),this.colors&&this.colors.filter((t,e)=>!this.colorsEqual(t,this.old.colors[e])).length&&(this.old.colors=this.colors.map(t=>this.copyColor(t)),this.updateColors(),e(p.Update)),!!this.labels!==this.old.labelsExist&&(this.old.labelsExist=!!this.labels,e(p.Update)),this.labels&&this.labels.filter((t,e)=>!this.labelsEqual(t,this.old.labels[e])).length&&(this.old.labels=this.labels.map(t=>this.copyLabel(t)),e(p.Update)),!!this.options.legend!==this.old.legendExists&&(this.old.legendExists=!!this.options.legend,e(p.Refresh)),this.options.legend&&this.options.legend.position!==this.old.legend.position&&(this.old.legend.position=this.options.legend.position,e(p.Refresh)),t){case p.Default:break;case p.Update:this.update();break;case p.Refresh:this.refresh()}}copyLabel(t){return Array.isArray(t)?[...t]:t}labelsEqual(t,e){return Array.isArray(t)===Array.isArray(e)&&(Array.isArray(t)||t===e)&&(!Array.isArray(t)||t.length===e.length)&&(!Array.isArray(t)||0===t.filter((t,n)=>t!==e[n]).length)}copyColor(t){return{backgroundColor:t.backgroundColor,borderWidth:t.borderWidth,borderColor:t.borderColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,pointBorderColor:t.pointBorderColor,pointBackgroundColor:t.pointBackgroundColor,pointBorderWidth:t.pointBorderWidth,pointRadius:t.pointRadius,pointHoverRadius:t.pointHoverRadius,pointHitRadius:t.pointHitRadius,pointHoverBackgroundColor:t.pointHoverBackgroundColor,pointHoverBorderColor:t.pointHoverBorderColor,pointHoverBorderWidth:t.pointHoverBorderWidth,pointStyle:t.pointStyle,hoverBackgroundColor:t.hoverBackgroundColor,hoverBorderColor:t.hoverBorderColor,hoverBorderWidth:t.hoverBorderWidth}}colorsEqual(t,e){return!t==!e&&(!t||t.backgroundColor===e.backgroundColor&&t.borderWidth===e.borderWidth&&t.borderColor===e.borderColor&&t.borderCapStyle===e.borderCapStyle&&t.borderDash===e.borderDash&&t.borderDashOffset===e.borderDashOffset&&t.borderJoinStyle===e.borderJoinStyle&&t.pointBorderColor===e.pointBorderColor&&t.pointBackgroundColor===e.pointBackgroundColor&&t.pointBorderWidth===e.pointBorderWidth&&t.pointRadius===e.pointRadius&&t.pointHoverRadius===e.pointHoverRadius&&t.pointHitRadius===e.pointHitRadius&&t.pointHoverBackgroundColor===e.pointHoverBackgroundColor&&t.pointHoverBorderColor===e.pointHoverBorderColor&&t.pointHoverBorderWidth===e.pointHoverBorderWidth&&t.pointStyle===e.pointStyle&&t.hoverBackgroundColor===e.hoverBackgroundColor&&t.hoverBorderColor===e.hoverBorderColor&&t.hoverBorderWidth===e.hoverBorderWidth)}updateColors(){this.datasets.forEach((t,e)=>{this.colors&&this.colors[e]?Object.assign(t,this.colors[e]):Object.assign(t,function(t,e,n){if("pie"===t||"doughnut"===t)return d(h(n));if("polarArea"===t)return{backgroundColor:(a=h(n)).map(t=>u(t,.6)),borderColor:a.map(t=>u(t,1)),hoverBackgroundColor:a.map(t=>u(t,.8)),hoverBorderColor:a.map(t=>u(t,1))};var a;if("line"===t||"radar"===t)return function(t){return{backgroundColor:u(t,.4),borderColor:u(t,1),pointBackgroundColor:u(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:u(t,.8)}}(f(e));if("bar"===t||"horizontalBar"===t)return function(t){return{backgroundColor:u(t,.6),borderColor:u(t,1),hoverBackgroundColor:u(t,.8),hoverBorderColor:u(t,1)}}(f(e));if("bubble"===t)return d(h(n));if("scatter"===t)return d(h(n));throw new Error(`getColors - Unsupported chart type ${t}`)}(this.chartType,e,t.data.length),Object.assign({},t))})}ngOnChanges(t){let e=p.Default;const n=t=>{e=t>e?t:e};switch(t.hasOwnProperty("data")&&t.data.currentValue&&(this.propagateDataToDatasets(t.data.currentValue),n(p.Update)),t.hasOwnProperty("datasets")&&t.datasets.currentValue&&(this.propagateDatasetsToData(t.datasets.currentValue),n(p.Update)),t.hasOwnProperty("labels")&&(this.chart&&(this.chart.data.labels=t.labels.currentValue),n(p.Update)),t.hasOwnProperty("legend")&&(this.chart&&(this.chart.config.options.legend.display=t.legend.currentValue,this.chart.generateLegend()),n(p.Update)),t.hasOwnProperty("options")&&n(p.Refresh),e){case p.Update:this.update();break;case p.Refresh:case p.Default:this.refresh()}}ngOnDestroy(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.subs.forEach(t=>t.unsubscribe())}update(t,e){if(this.chart)return this.chart.update(t,e)}hideDataset(t,e){this.chart.getDatasetMeta(t).hidden=e,this.chart.update()}isDatasetHidden(t){return this.chart.getDatasetMeta(t).hidden}toBase64Image(){return this.chart.toBase64Image()}getChartConfiguration(){const t=this.getDatasets(),e=Object.assign({},this.options);!1===this.legend&&(e.legend={display:!1}),e.hover=e.hover||{},e.hover.onHover||(e.hover.onHover=(t,e)=>{e&&!e.length||this.chartHover.emit({event:t,active:e})}),e.onClick||(e.onClick=(t,e)=>{this.chartClick.emit({event:t,active:e})});const n=this.smartMerge(e,this.themeService.getColorschemesOptions());return{type:this.chartType,data:{labels:this.labels||[],datasets:t},plugins:this.plugins,options:n}}getChartBuilder(t){const e=this.getChartConfiguration();return new r.Chart(t,e)}smartMerge(t,e,n=0){if(0===n&&(t=Object(s.cloneDeep)(t)),Object.keys(e).forEach(a=>{if(Array.isArray(e[a])){const r=t[a];r&&r.forEach(t=>{this.smartMerge(t,e[a][0],n+1)})}else"object"==typeof e[a]?(a in t||(t[a]={}),this.smartMerge(t[a],e[a],n+1)):t[a]=e[a]}),0===n)return t}isMultiLineLabel(t){return Array.isArray(t)}joinLabel(t){return t?this.isMultiLineLabel(t)?t.join(" "):t:null}propagateDatasetsToData(t){this.data=this.datasets.map(t=>t.data),this.chart&&(this.chart.data.datasets=t),this.updateColors()}propagateDataToDatasets(t){this.isMultiDataSet(t)?this.datasets&&t.length===this.datasets.length?this.datasets.forEach((e,n)=>{e.data=t[n]}):(this.datasets=t.map((t,e)=>({data:t,label:this.joinLabel(this.labels[e])||`Label ${e}`})),this.chart&&(this.chart.data.datasets=this.datasets)):this.datasets?(this.datasets[0].data=t,this.datasets.splice(1)):(this.datasets=[{data:t}],this.chart&&(this.chart.data.datasets=this.datasets)),this.updateColors()}isMultiDataSet(t){return Array.isArray(t[0])}getDatasets(){if(!this.datasets&&!this.data)throw new Error(`ng-charts configuration error, data or datasets field are required to render chart ${this.chartType}`);return this.datasets?(this.propagateDatasetsToData(this.datasets),this.datasets):this.data?(this.propagateDataToDatasets(this.data),this.datasets):void 0}refresh(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.ctx&&(this.chart=this.getChartBuilder(this.ctx))}}class m{}},hypo:function(t,e,n){var a=n("O0oS");t.exports=function(t,e,n){"__proto__"==e&&a?a(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},i4WA:function(t,e,n){"use strict";var a=n("8Y7J");n("6qls"),n("tz6c"),n("GiVz"),n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var r=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,0,0,a["ɵinlineInterpolate"](1,"",n.docUrl,"")),t(e,1,0,n.docText)}))}},iEDd:function(t,e,n){!function(t){"use strict";t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},iExv:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.i18n=t}transform(t,e=this.i18n("Yes"),n=this.i18n("No")){return Boolean(t)?e:n}}},iInd:function(t,e,n){"use strict";var a=n("SVse"),r=n("8Y7J"),i=n("LRne"),s=n("Cfvw"),o=n("2Vo4"),u=n("HDdC"),l=n("sVev"),d=n("z+Ro"),c=n("DH7j"),f=n("l7GE"),h=n("ZUHj"),g=n("yCtX");const p={};class b{constructor(t){this.resultSelector=t}call(t,e){return e.subscribe(new m(t,this.resultSelector))}}class m extends f.a{constructor(t,e){super(t),this.resultSelector=e,this.active=0,this.values=[],this.observables=[]}_next(t){this.values.push(p),this.observables.push(t)}_complete(){const t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(let n=0;n<e;n++){const e=t[n];this.add(Object(h.a)(this,e,e,n))}}}notifyComplete(t){0==(this.active-=1)&&this.destination.complete()}notifyNext(t,e,n,a,r){const i=this.values,s=this.toRespond?i[n]===p?--this.toRespond:this.toRespond:0;i[n]=e,0===s&&(this.resultSelector?this._tryResultSelector(i):this.destination.next(i.slice()))}_tryResultSelector(t){let e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}var y=n("EY2u");function v(t){return new u.a(e=>{let n;try{n=t()}catch(a){return void e.error(a)}return(n?Object(s.a)(n):Object(y.b)()).subscribe(e)})}var x=n("XNiG"),_=n("lJxs"),T=n("0EUg"),O=n("NJ9Y"),w=n("JIr8"),S=n("SxV6"),I=n("5+tZ"),N=n("7o/Q");class C{constructor(t,e,n){this.predicate=t,this.thisArg=e,this.source=n}call(t,e){return e.subscribe(new R(t,this.predicate,this.thisArg,this.source))}}class R extends N.a{constructor(t,e,n,a){super(t),this.predicate=e,this.thisArg=n,this.source=a,this.index=0,this.thisArg=n||this}notifyComplete(t){this.destination.next(t),this.destination.complete()}_next(t){let e=!1;try{e=this.predicate.call(this.thisArg,t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e||this.notifyComplete(!1)}_complete(){this.notifyComplete(!0)}}var A=n("eIep"),k=n("IzEk"),E=n("GyhO"),L=n("Kqap"),D=n("pLZG"),P=n("bOdf"),M=n("128B"),q=n("vkgz"),j=n("quSY");class F{constructor(t){this.callback=t}call(t,e){return e.subscribe(new G(t,this.callback))}}class G extends N.a{constructor(t,e){super(t),this.add(new j.a(e))}}var V=n("bHdf"),z=n("cUpR");n.d(e,"F",(function(){return st})),n.d(e,"v",(function(){return _n})),n.d(e,"C",(function(){return kn})),n.d(e,"x",(function(){return Sn})),n.d(e,"D",(function(){return En})),n.d(e,"E",(function(){return Ln})),n.d(e,"z",(function(){return Nn})),n.d(e,"y",(function(){return In})),n.d(e,"B",(function(){return An})),n.d(e,"w",(function(){return On})),n.d(e,"A",(function(){return Rn})),n.d(e,"G",(function(){return vn})),n.d(e,"n",(function(){return on})),n.d(e,"p",(function(){return un})),n.d(e,"o",(function(){return dn})),n.d(e,"r",(function(){return hn})),n.d(e,"d",(function(){return H})),n.d(e,"e",(function(){return Y})),n.d(e,"l",(function(){return Ze})),n.d(e,"m",(function(){return sn})),n.d(e,"k",(function(){return Qe})),n.d(e,"i",(function(){return xn})),n.d(e,"j",(function(){return Dn})),n.d(e,"q",(function(){return wn})),n.d(e,"b",(function(){return fn})),n.d(e,"f",(function(){return mn})),n.d(e,"g",(function(){return bn})),n.d(e,"h",(function(){return pn})),n.d(e,"s",(function(){return yn})),n.d(e,"a",(function(){return $t})),n.d(e,"t",(function(){return tn})),n.d(e,"c",(function(){return Ct})),n.d(e,"u",(function(){return Nt}));class B{constructor(t,e){this.id=t,this.url=e}}class Y extends B{constructor(t,e,n="imperative",a=null){super(t,e),this.navigationTrigger=n,this.restoredState=a}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class H extends B{constructor(t,e,n){super(t,e),this.urlAfterRedirects=n}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class U extends B{constructor(t,e,n){super(t,e),this.reason=n}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class W extends B{constructor(t,e,n){super(t,e),this.error=n}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class K extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class $ extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Z extends B{constructor(t,e,n,a,r){super(t,e),this.urlAfterRedirects=n,this.state=a,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class J extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Q extends B{constructor(t,e,n,a){super(t,e),this.urlAfterRedirects=n,this.state=a}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class X{constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class tt{constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class et{constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class nt{constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class at{constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class rt{constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class it{constructor(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class st{}class ot{constructor(t){this.params=t||{}}has(t){return this.params.hasOwnProperty(t)}get(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e[0]:e}return null}getAll(t){if(this.has(t)){const e=this.params[t];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function ut(t){return new ot(t)}function lt(t){const e=Error("NavigationCancelingError: "+t);return e.ngNavigationCancelingError=!0,e}function dt(t,e,n){const a=n.path.split("/");if(a.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||a.length<t.length))return null;const r={};for(let i=0;i<a.length;i++){const e=a[i],n=t[i];if(e.startsWith(":"))r[e.substring(1)]=n;else if(e!==n.path)return null}return{consumed:t.slice(0,a.length),posParams:r}}class ct{constructor(t,e){this.routes=t,this.module=e}}function ft(t,e=""){for(let n=0;n<t.length;n++){const a=t[n];ht(a,gt(e,a))}}function ht(t,e){if(!t)throw new Error(`\n      Invalid configuration of route '${e}': Encountered undefined route.\n      The reason might be an extra comma.\n\n      Example:\n      const routes: Routes = [\n        { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n        { path: 'dashboard',  component: DashboardComponent },, << two commas\n        { path: 'detail/:id', component: HeroDetailComponent }\n      ];\n    `);if(Array.isArray(t))throw new Error(`Invalid configuration of route '${e}': Array cannot be specified`);if(!t.component&&!t.children&&!t.loadChildren&&t.outlet&&"primary"!==t.outlet)throw new Error(`Invalid configuration of route '${e}': a componentless route without children or loadChildren cannot have a named outlet set`);if(t.redirectTo&&t.children)throw new Error(`Invalid configuration of route '${e}': redirectTo and children cannot be used together`);if(t.redirectTo&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': redirectTo and loadChildren cannot be used together`);if(t.children&&t.loadChildren)throw new Error(`Invalid configuration of route '${e}': children and loadChildren cannot be used together`);if(t.redirectTo&&t.component)throw new Error(`Invalid configuration of route '${e}': redirectTo and component cannot be used together`);if(t.path&&t.matcher)throw new Error(`Invalid configuration of route '${e}': path and matcher cannot be used together`);if(void 0===t.redirectTo&&!t.component&&!t.children&&!t.loadChildren)throw new Error(`Invalid configuration of route '${e}'. One of the following must be provided: component, redirectTo, children or loadChildren`);if(void 0===t.path&&void 0===t.matcher)throw new Error(`Invalid configuration of route '${e}': routes must have either a path or a matcher specified`);if("string"==typeof t.path&&"/"===t.path.charAt(0))throw new Error(`Invalid configuration of route '${e}': path cannot start with a slash`);if(""===t.path&&void 0!==t.redirectTo&&void 0===t.pathMatch)throw new Error(`Invalid configuration of route '{path: "${e}", redirectTo: "${t.redirectTo}"}': please provide 'pathMatch'. The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`);if(void 0!==t.pathMatch&&"full"!==t.pathMatch&&"prefix"!==t.pathMatch)throw new Error(`Invalid configuration of route '${e}': pathMatch can only be set to 'prefix' or 'full'`);t.children&&ft(t.children,e)}function gt(t,e){return e?t||e.path?t&&!e.path?`${t}/`:!t&&e.path?e.path:`${t}/${e.path}`:"":t}function pt(t){const e=t.children&&t.children.map(pt),n=e?Object.assign({},t,{children:e}):Object.assign({},t);return!n.component&&(e||n.loadChildren)&&n.outlet&&"primary"!==n.outlet&&(n.component=st),n}function bt(t,e){const n=Object.keys(t),a=Object.keys(e);if(!n||!a||n.length!=a.length)return!1;let r;for(let i=0;i<n.length;i++)if(r=n[i],t[r]!==e[r])return!1;return!0}function mt(t){return Array.prototype.concat.apply([],t)}function yt(t){return t.length>0?t[t.length-1]:null}function vt(t,e){for(const n in t)t.hasOwnProperty(n)&&e(t[n],n)}function xt(t){return Object(r["ɵisObservable"])(t)?t:Object(r["ɵisPromise"])(t)?Object(s.a)(Promise.resolve(t)):Object(i.a)(t)}function _t(t,e,n){return n?function(t,e){return bt(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!St(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(const a in n.children){if(!e.children[a])return!1;if(!t(e.children[a],n.children[a]))return!1}return!0}(t.root,e.root):function(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(n=>e[n]===t[n])}(t.queryParams,e.queryParams)&&function t(e,n){return function e(n,a,r){if(n.segments.length>r.length)return!!St(n.segments.slice(0,r.length),r)&&!a.hasChildren();if(n.segments.length===r.length){if(!St(n.segments,r))return!1;for(const e in a.children){if(!n.children[e])return!1;if(!t(n.children[e],a.children[e]))return!1}return!0}{const t=r.slice(0,n.segments.length),i=r.slice(n.segments.length);return!!St(n.segments,t)&&!!n.children.primary&&e(n.children.primary,a,i)}}(e,n,n.segments)}(t.root,e.root)}class Tt{constructor(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=ut(this.queryParams)),this._queryParamMap}toString(){return Rt.serialize(this)}}class Ot{constructor(t,e){this.segments=t,this.children=e,this.parent=null,vt(e,(t,e)=>t.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return At(this)}}class wt{constructor(t,e){this.path=t,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=ut(this.parameters)),this._parameterMap}toString(){return Mt(this)}}function St(t,e){return t.length===e.length&&t.every((t,n)=>t.path===e[n].path)}function It(t,e){let n=[];return vt(t.children,(t,a)=>{"primary"===a&&(n=n.concat(e(t,a)))}),vt(t.children,(t,a)=>{"primary"!==a&&(n=n.concat(e(t,a)))}),n}class Nt{}class Ct{parse(t){const e=new Vt(t);return new Tt(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(t){var e;return`${`/${function t(e,n){if(!e.hasChildren())return At(e);if(n){const n=e.children.primary?t(e.children.primary,!1):"",a=[];return vt(e.children,(e,n)=>{"primary"!==n&&a.push(`${n}:${t(e,!1)}`)}),a.length>0?`${n}(${a.join("//")})`:n}{const n=It(e,(n,a)=>"primary"===a?[t(e.children.primary,!1)]:[`${a}:${t(n,!1)}`]);return`${At(e)}/(${n.join("//")})`}}(t.root,!0)}`}${function(t){const e=Object.keys(t).map(e=>{const n=t[e];return Array.isArray(n)?n.map(t=>`${Et(e)}=${Et(t)}`).join("&"):`${Et(e)}=${Et(n)}`});return e.length?`?${e.join("&")}`:""}(t.queryParams)}${"string"==typeof t.fragment?`#${e=t.fragment,encodeURI(e)}`:""}`}}const Rt=new Ct;function At(t){return t.segments.map(t=>Mt(t)).join("/")}function kt(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Et(t){return kt(t).replace(/%3B/gi,";")}function Lt(t){return kt(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Dt(t){return decodeURIComponent(t)}function Pt(t){return Dt(t.replace(/\+/g,"%20"))}function Mt(t){return`${Lt(t.path)}${e=t.parameters,Object.keys(e).map(t=>`;${Lt(t)}=${Lt(e[t])}`).join("")}`;var e}const qt=/^[^\/()?;=#]+/;function jt(t){const e=t.match(qt);return e?e[0]:""}const Ft=/^[^=?&#]+/,Gt=/^[^?&#]+/;class Vt{constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Ot([],{}):new Ot([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n.primary=new Ot(t,e)),n}parseSegment(){const t=jt(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(t),new wt(Dt(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const e=jt(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=jt(this.remaining);t&&(n=t,this.capture(n))}t[Dt(e)]=Dt(n)}parseQueryParam(t){const e=function(t){const e=t.match(Ft);return e?e[0]:""}(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){const t=function(t){const e=t.match(Gt);return e?e[0]:""}(this.remaining);t&&(n=t,this.capture(n))}const a=Pt(e),r=Pt(n);if(t.hasOwnProperty(a)){let e=t[a];Array.isArray(e)||(e=[e],t[a]=e),e.push(r)}else t[a]=r}parseParens(t){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const n=jt(this.remaining),a=this.remaining[n.length];if("/"!==a&&")"!==a&&";"!==a)throw new Error(`Cannot parse url '${this.url}'`);let r=void 0;n.indexOf(":")>-1?(r=n.substr(0,n.indexOf(":")),this.capture(r),this.capture(":")):t&&(r="primary");const i=this.parseChildren();e[r]=1===Object.keys(i).length?i.primary:new Ot([],i),this.consumeOptional("//")}return e}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new Error(`Expected "${t}".`)}}class zt{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null}children(t){const e=Bt(t,this._root);return e?e.children.map(t=>t.value):[]}firstChild(t){const e=Bt(t,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(t){const e=Yt(t,this._root);return e.length<2?[]:e[e.length-2].children.map(t=>t.value).filter(e=>e!==t)}pathFromRoot(t){return Yt(t,this._root).map(t=>t.value)}}function Bt(t,e){if(t===e.value)return e;for(const n of e.children){const e=Bt(t,n);if(e)return e}return null}function Yt(t,e){if(t===e.value)return[e];for(const n of e.children){const a=Yt(t,n);if(a.length)return a.unshift(e),a}return[]}class Ht{constructor(t,e){this.value=t,this.children=e}toString(){return`TreeNode(${this.value})`}}function Ut(t){const e={};return t&&t.children.forEach(t=>e[t.value.outlet]=t),e}class Wt extends zt{constructor(t,e){super(t),this.snapshot=e,Xt(this,t)}toString(){return this.snapshot.toString()}}function Kt(t,e){const n=function(t,e){const n=new Jt([],{},{},"",{},"primary",e,null,t.root,-1,{});return new Qt("",new Ht(n,[]))}(t,e),a=new o.a([new wt("",{})]),r=new o.a({}),i=new o.a({}),s=new o.a({}),u=new o.a(""),l=new $t(a,r,s,u,i,"primary",e,n.root);return l.snapshot=n.root,new Wt(new Ht(l,[]),n)}class $t{constructor(t,e,n,a,r,i,s,o){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this._futureSnapshot=o}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(Object(_.a)(t=>ut(t)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(Object(_.a)(t=>ut(t)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Zt(t,e="emptyOnly"){const n=t.pathFromRoot;let a=0;if("always"!==e)for(a=n.length-1;a>=1;){const t=n[a],e=n[a-1];if(t.routeConfig&&""===t.routeConfig.path)a--;else{if(e.component)break;a--}}return function(t){return t.reduce((t,e)=>({params:Object.assign({},t.params,e.params),data:Object.assign({},t.data,e.data),resolve:Object.assign({},t.resolve,e._resolvedData)}),{params:{},data:{},resolve:{}})}(n.slice(a))}class Jt{constructor(t,e,n,a,r,i,s,o,u,l,d){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=s,this.routeConfig=o,this._urlSegment=u,this._lastPathIndex=l,this._resolve=d}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=ut(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=ut(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(t=>t.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Qt extends zt{constructor(t,e){super(e),this.url=t,Xt(this,e)}toString(){return te(this._root)}}function Xt(t,e){e.value._routerState=t,e.children.forEach(e=>Xt(t,e))}function te(t){const e=t.children.length>0?` { ${t.children.map(te).join(", ")} } `:"";return`${t.value}${e}`}function ee(t){if(t.snapshot){const e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,bt(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),bt(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;++n)if(!bt(t[n],e[n]))return!1;return!0}(e.url,n.url)||t.url.next(n.url),bt(e.data,n.data)||t.data.next(n.data)}else t.snapshot=t._futureSnapshot,t.data.next(t._futureSnapshot.data)}function ne(t,e){var n,a;return bt(t.params,e.params)&&St(n=t.url,a=e.url)&&n.every((t,e)=>bt(t.parameters,a[e].parameters))&&!(!t.parent!=!e.parent)&&(!t.parent||ne(t.parent,e.parent))}function ae(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function re(t,e,n,a,r){let i={};return a&&vt(a,(t,e)=>{i[e]=Array.isArray(t)?t.map(t=>`${t}`):`${t}`}),new Tt(n.root===t?e:function t(e,n,a){const r={};return vt(e.children,(e,i)=>{r[i]=e===n?a:t(e,n,a)}),new Ot(e.segments,r)}(n.root,t,e),i,r)}class ie{constructor(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&ae(n[0]))throw new Error("Root segment cannot have matrix parameters");const a=n.find(t=>"object"==typeof t&&null!=t&&t.outlets);if(a&&a!==yt(n))throw new Error("{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class se{constructor(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}function oe(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets.primary:`${t}`}function ue(t,e,n){if(t||(t=new Ot([],{})),0===t.segments.length&&t.hasChildren())return le(t,e,n);const a=function(t,e,n){let a=0,r=e;const i={match:!1,pathIndex:0,commandIndex:0};for(;r<t.segments.length;){if(a>=n.length)return i;const e=t.segments[r],s=oe(n[a]),o=a<n.length-1?n[a+1]:null;if(r>0&&void 0===s)break;if(s&&o&&"object"==typeof o&&void 0===o.outlets){if(!he(s,o,e))return i;a+=2}else{if(!he(s,{},e))return i;a++}r++}return{match:!0,pathIndex:r,commandIndex:a}}(t,e,n),r=n.slice(a.commandIndex);if(a.match&&a.pathIndex<t.segments.length){const e=new Ot(t.segments.slice(0,a.pathIndex),{});return e.children.primary=new Ot(t.segments.slice(a.pathIndex),t.children),le(e,0,r)}return a.match&&0===r.length?new Ot(t.segments,{}):a.match&&!t.hasChildren()?de(t,e,n):a.match?le(t,0,r):de(t,e,n)}function le(t,e,n){if(0===n.length)return new Ot(t.segments,{});{const a=function(t){return"object"!=typeof t[0]?{primary:t}:void 0===t[0].outlets?{primary:t}:t[0].outlets}(n),r={};return vt(a,(n,a)=>{null!==n&&(r[a]=ue(t.children[a],e,n))}),vt(t.children,(t,e)=>{void 0===a[e]&&(r[e]=t)}),new Ot(t.segments,r)}}function de(t,e,n){const a=t.segments.slice(0,e);let r=0;for(;r<n.length;){if("object"==typeof n[r]&&void 0!==n[r].outlets){const t=ce(n[r].outlets);return new Ot(a,t)}if(0===r&&ae(n[0])){a.push(new wt(t.segments[e].path,n[0])),r++;continue}const i=oe(n[r]),s=r<n.length-1?n[r+1]:null;i&&s&&ae(s)?(a.push(new wt(i,fe(s))),r+=2):(a.push(new wt(i,{})),r++)}return new Ot(a,{})}function ce(t){const e={};return vt(t,(t,n)=>{null!==t&&(e[n]=de(new Ot([],{}),0,t))}),e}function fe(t){const e={};return vt(t,(t,n)=>e[n]=`${t}`),e}function he(t,e,n){return t==n.path&&bt(e,n.parameters)}class ge{constructor(t,e,n,a){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=a}activate(t){const e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),ee(this.futureState.root),this.activateChildRoutes(e,n,t)}deactivateChildRoutes(t,e,n){const a=Ut(e);t.children.forEach(t=>{const e=t.value.outlet;this.deactivateRoutes(t,a[e],n),delete a[e]}),vt(a,(t,e)=>{this.deactivateRouteAndItsChildren(t,n)})}deactivateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(a===r)if(a.component){const r=n.getContext(a.outlet);r&&this.deactivateChildRoutes(t,e,r.children)}else this.deactivateChildRoutes(t,e,n);else r&&this.deactivateRouteAndItsChildren(e,n)}deactivateRouteAndItsChildren(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)}detachAndStoreRouteSubtree(t,e){const n=e.getContext(t.value.outlet);if(n&&n.outlet){const e=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:e,route:t,contexts:a})}}deactivateRouteAndOutlet(t,e){const n=e.getContext(t.value.outlet);if(n){const a=Ut(t),r=t.value.component?n.children:e;vt(a,(t,e)=>this.deactivateRouteAndItsChildren(t,r)),n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated())}}activateChildRoutes(t,e,n){const a=Ut(e);t.children.forEach(t=>{this.activateRoutes(t,a[t.value.outlet],n),this.forwardEvent(new rt(t.value.snapshot))}),t.children.length&&this.forwardEvent(new nt(t.value.snapshot))}activateRoutes(t,e,n){const a=t.value,r=e?e.value:null;if(ee(a),a===r)if(a.component){const r=n.getOrCreateContext(a.outlet);this.activateChildRoutes(t,e,r.children)}else this.activateChildRoutes(t,e,n);else if(a.component){const e=n.getOrCreateContext(a.outlet);if(this.routeReuseStrategy.shouldAttach(a.snapshot)){const t=this.routeReuseStrategy.retrieve(a.snapshot);this.routeReuseStrategy.store(a.snapshot,null),e.children.onOutletReAttached(t.contexts),e.attachRef=t.componentRef,e.route=t.route.value,e.outlet&&e.outlet.attach(t.componentRef,t.route.value),pe(t.route)}else{const n=function(t){for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig;if(t&&t.component)return null}return null}(a.snapshot),r=n?n.module.componentFactoryResolver:null;e.attachRef=null,e.route=a,e.resolver=r,e.outlet&&e.outlet.activateWith(a,r),this.activateChildRoutes(t,null,e.children)}}else this.activateChildRoutes(t,null,n)}}function pe(t){ee(t.value),t.children.forEach(pe)}function be(t){return"function"==typeof t}function me(t){return t instanceof Tt}class ye{constructor(t){this.segmentGroup=t||null}}class ve{constructor(t){this.urlTree=t}}function xe(t){return new u.a(e=>e.error(new ye(t)))}function _e(t){return new u.a(e=>e.error(new ve(t)))}function Te(t){return new u.a(e=>e.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${t}'`)))}class Oe{constructor(t,e,n,a,i){this.configLoader=e,this.urlSerializer=n,this.urlTree=a,this.config=i,this.allowRedirects=!0,this.ngModule=t.get(r.NgModuleRef)}apply(){return this.expandSegmentGroup(this.ngModule,this.config,this.urlTree.root,"primary").pipe(Object(_.a)(t=>this.createUrlTree(t,this.urlTree.queryParams,this.urlTree.fragment))).pipe(Object(w.a)(t=>{if(t instanceof ve)return this.allowRedirects=!1,this.match(t.urlTree);if(t instanceof ye)throw this.noMatchError(t);throw t}))}match(t){return this.expandSegmentGroup(this.ngModule,this.config,t.root,"primary").pipe(Object(_.a)(e=>this.createUrlTree(e,t.queryParams,t.fragment))).pipe(Object(w.a)(t=>{if(t instanceof ye)throw this.noMatchError(t);throw t}))}noMatchError(t){return new Error(`Cannot match any routes. URL Segment: '${t.segmentGroup}'`)}createUrlTree(t,e,n){const a=t.segments.length>0?new Ot([],{primary:t}):t;return new Tt(a,e,n)}expandSegmentGroup(t,e,n,a){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(Object(_.a)(t=>new Ot([],t))):this.expandSegment(t,n,e,n.segments,a,!0)}expandChildren(t,e,n){return function(t,e){if(0===Object.keys(t).length)return Object(i.a)({});const n=[],a=[],r={};return vt(t,(t,i)=>{const s=e(i,t).pipe(Object(_.a)(t=>r[i]=t));"primary"===i?n.push(s):a.push(s)}),i.a.apply(null,n.concat(a)).pipe(Object(T.a)(),Object(O.a)(),Object(_.a)(()=>r))}(n.children,(n,a)=>this.expandSegmentGroup(t,e,a,n))}expandSegment(t,e,n,a,r,s){return Object(i.a)(...n).pipe(Object(_.a)(o=>this.expandSegmentAgainstRoute(t,e,n,o,a,r,s).pipe(Object(w.a)(t=>{if(t instanceof ye)return Object(i.a)(null);throw t}))),Object(T.a)(),Object(S.a)(t=>!!t),Object(w.a)((t,n)=>{if(t instanceof l.a||"EmptyError"===t.name){if(this.noLeftoversInUrl(e,a,r))return Object(i.a)(new Ot([],{}));throw new ye(e)}throw t}))}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}expandSegmentAgainstRoute(t,e,n,a,r,i,s){return Ne(a)!==i?xe(e):void 0===a.redirectTo?this.matchSegmentAgainstRoute(t,e,a,r):s&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i):xe(e)}expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){return"**"===a.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,a,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i)}expandWildCardWithParamsAgainstRouteUsingRedirect(t,e,n,a){const r=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?_e(r):this.lineralizeSegments(n,r).pipe(Object(I.a)(n=>{const r=new Ot(n,{});return this.expandSegment(t,r,e,n,a,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i){const{matched:s,consumedSegments:o,lastChild:u,positionalParamSegments:l}=we(e,a,r);if(!s)return xe(e);const d=this.applyRedirectCommands(o,a.redirectTo,l);return a.redirectTo.startsWith("/")?_e(d):this.lineralizeSegments(a,d).pipe(Object(I.a)(a=>this.expandSegment(t,e,n,a.concat(r.slice(u)),i,!1)))}matchSegmentAgainstRoute(t,e,n,a){if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(Object(_.a)(t=>(n._loadedConfig=t,new Ot(a,{})))):Object(i.a)(new Ot(a,{}));const{matched:r,consumedSegments:s,lastChild:o}=we(e,n,a);if(!r)return xe(e);const u=a.slice(o);return this.getChildConfig(t,n,a).pipe(Object(I.a)(t=>{const n=t.module,a=t.routes,{segmentGroup:r,slicedSegments:o}=function(t,e,n,a){return n.length>0&&function(t,e,n){return n.some(n=>Ie(t,e,n)&&"primary"!==Ne(n))}(t,n,a)?{segmentGroup:Se(new Ot(e,function(t,e){const n={};n.primary=e;for(const a of t)""===a.path&&"primary"!==Ne(a)&&(n[Ne(a)]=new Ot([],{}));return n}(a,new Ot(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return n.some(n=>Ie(t,e,n))}(t,n,a)?{segmentGroup:Se(new Ot(t.segments,function(t,e,n,a){const r={};for(const i of n)Ie(t,e,i)&&!a[Ne(i)]&&(r[Ne(i)]=new Ot([],{}));return Object.assign({},a,r)}(t,n,a,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,s,u,a);return 0===o.length&&r.hasChildren()?this.expandChildren(n,a,r).pipe(Object(_.a)(t=>new Ot(s,t))):0===a.length&&0===o.length?Object(i.a)(new Ot(s,{})):this.expandSegment(n,r,a,o,"primary",!0).pipe(Object(_.a)(t=>new Ot(s.concat(t.segments),t.children)))}))}getChildConfig(t,e,n){return e.children?Object(i.a)(new ct(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?Object(i.a)(e._loadedConfig):function(t,e,n){const a=e.canLoad;return a&&0!==a.length?Object(s.a)(a).pipe(Object(_.a)(a=>{const r=t.get(a);let i;if(function(t){return t&&be(t.canLoad)}(r))i=r.canLoad(e,n);else{if(!be(r))throw new Error("Invalid CanLoad guard");i=r(e,n)}return xt(i)})).pipe(Object(T.a)(),(r=t=>!0===t,t=>t.lift(new C(r,void 0,t)))):Object(i.a)(!0);var r}(t.injector,e,n).pipe(Object(I.a)(n=>n?this.configLoader.load(t.injector,e).pipe(Object(_.a)(t=>(e._loadedConfig=t,t))):function(t){return new u.a(e=>e.error(lt(`Cannot load children because the guard of the route "path: '${t.path}'" returned false`)))}(e))):Object(i.a)(new ct([],t))}lineralizeSegments(t,e){let n=[],a=e.root;for(;;){if(n=n.concat(a.segments),0===a.numberOfChildren)return Object(i.a)(n);if(a.numberOfChildren>1||!a.children.primary)return Te(t.redirectTo);a=a.children.primary}}applyRedirectCommands(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)}applyRedirectCreatreUrlTree(t,e,n,a){const r=this.createSegmentGroup(t,e.root,n,a);return new Tt(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(t,e){const n={};return vt(t,(t,a)=>{if("string"==typeof t&&t.startsWith(":")){const r=t.substring(1);n[a]=e[r]}else n[a]=t}),n}createSegmentGroup(t,e,n,a){const r=this.createSegments(t,e.segments,n,a);let i={};return vt(e.children,(e,r)=>{i[r]=this.createSegmentGroup(t,e,n,a)}),new Ot(r,i)}createSegments(t,e,n,a){return e.map(e=>e.path.startsWith(":")?this.findPosParam(t,e,a):this.findOrReturn(e,n))}findPosParam(t,e,n){const a=n[e.path.substring(1)];if(!a)throw new Error(`Cannot redirect to '${t}'. Cannot find '${e.path}'.`);return a}findOrReturn(t,e){let n=0;for(const a of e){if(a.path===t.path)return e.splice(n),a;n++}return t}}function we(t,e,n){if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||n.length>0)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:[],lastChild:0,positionalParamSegments:{}};const a=(e.matcher||dt)(n,t,e);return a?{matched:!0,consumedSegments:a.consumed,lastChild:a.consumed.length,positionalParamSegments:a.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function Se(t){if(1===t.numberOfChildren&&t.children.primary){const e=t.children.primary;return new Ot(t.segments.concat(e.segments),e.children)}return t}function Ie(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function Ne(t){return t.outlet||"primary"}class Ce{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class Re{constructor(t,e){this.component=t,this.route=e}}function Ae(t,e,n){const a=t._root;return function t(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=Ut(n);return e.children.forEach(e=>{!function(e,n,a,r,i={canDeactivateChecks:[],canActivateChecks:[]}){const s=e.value,o=n?n.value:null,u=a?a.getContext(e.value.outlet):null;if(o&&s.routeConfig===o.routeConfig){const l=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!St(t.url,e.url);case"pathParamsOrQueryParamsChange":return!St(t.url,e.url)||!bt(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!ne(t,e)||!bt(t.queryParams,e.queryParams);case"paramsChange":default:return!ne(t,e)}}(o,s,s.routeConfig.runGuardsAndResolvers);l?i.canActivateChecks.push(new Ce(r)):(s.data=o.data,s._resolvedData=o._resolvedData),t(e,n,s.component?u?u.children:null:a,r,i),l&&i.canDeactivateChecks.push(new Re(u&&u.outlet&&u.outlet.component||null,o))}else o&&Ee(n,u,i),i.canActivateChecks.push(new Ce(r)),t(e,null,s.component?u?u.children:null:a,r,i)}(e,s[e.value.outlet],a,r.concat([e.value]),i),delete s[e.value.outlet]}),vt(s,(t,e)=>Ee(t,a.getContext(e),i)),i}(a,e?e._root:null,n,[a.value])}function ke(t,e,n){const a=function(t){if(!t)return null;for(let e=t.parent;e;e=e.parent){const t=e.routeConfig;if(t&&t._loadedConfig)return t._loadedConfig}return null}(e);return(a?a.module.injector:n).get(t)}function Ee(t,e,n){const a=Ut(t),r=t.value;vt(a,(t,a)=>{Ee(t,r.component?e?e.children.getContext(a):null:e,n)}),n.canDeactivateChecks.push(new Re(r.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,r))}const Le=Symbol("INITIAL_VALUE");function De(){return Object(A.a)(t=>function(...t){let e=null,n=null;return Object(d.a)(t[t.length-1])&&(n=t.pop()),"function"==typeof t[t.length-1]&&(e=t.pop()),1===t.length&&Object(c.a)(t[0])&&(t=t[0]),Object(g.a)(t,n).lift(new b(e))}(...t.map(t=>t.pipe(Object(k.a)(1),function(...t){const e=t[t.length-1];return Object(d.a)(e)?(t.pop(),n=>Object(E.a)(t,n,e)):e=>Object(E.a)(t,e)}(Le)))).pipe(Object(L.a)((t,e)=>{let n=!1;return e.reduce((t,a,r)=>{if(t!==Le)return t;if(a===Le&&(n=!0),!n){if(!1===a)return a;if(r===e.length-1||me(a))return a}return t},t)},Le),Object(D.a)(t=>t!==Le),Object(_.a)(t=>me(t)?t:!0===t),Object(k.a)(1)))}function Pe(t,e){return null!==t&&e&&e(new at(t)),Object(i.a)(!0)}function Me(t,e){return null!==t&&e&&e(new et(t)),Object(i.a)(!0)}function qe(t,e,n){const a=e.routeConfig?e.routeConfig.canActivate:null;if(!a||0===a.length)return Object(i.a)(!0);const r=a.map(a=>v(()=>{const r=ke(a,e,n);let i;if(function(t){return t&&be(t.canActivate)}(r))i=xt(r.canActivate(e,t));else{if(!be(r))throw new Error("Invalid CanActivate guard");i=xt(r(e,t))}return i.pipe(Object(S.a)())}));return Object(i.a)(r).pipe(De())}function je(t,e,n){const a=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(t=>function(t){const e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)).filter(t=>null!==t).map(e=>v(()=>{const r=e.guards.map(r=>{const i=ke(r,e.node,n);let s;if(function(t){return t&&be(t.canActivateChild)}(i))s=xt(i.canActivateChild(a,t));else{if(!be(i))throw new Error("Invalid CanActivateChild guard");s=xt(i(a,t))}return s.pipe(Object(S.a)())});return Object(i.a)(r).pipe(De())}));return Object(i.a)(r).pipe(De())}class Fe{}class Ge{constructor(t,e,n,a,r,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=a,this.paramsInheritanceStrategy=r,this.relativeLinkResolution=i}recognize(){try{const t=Be(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,"primary"),n=new Jt([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},"primary",this.rootComponentType,null,this.urlTree.root,-1,{}),a=new Ht(n,e),r=new Qt(this.url,a);return this.inheritParamsAndData(r._root),Object(i.a)(r)}catch(t){return new u.a(e=>e.error(t))}}inheritParamsAndData(t){const e=t.value,n=Zt(e,this.paramsInheritanceStrategy);e.params=Object.freeze(n.params),e.data=Object.freeze(n.data),t.children.forEach(t=>this.inheritParamsAndData(t))}processSegmentGroup(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)}processChildren(t,e){const n=It(e,(e,n)=>this.processSegmentGroup(t,e,n));return function(t){const e={};t.forEach(t=>{const n=e[t.value.outlet];if(n){const e=n.url.map(t=>t.toString()).join("/"),a=t.value.url.map(t=>t.toString()).join("/");throw new Error(`Two segments cannot have the same outlet name: '${e}' and '${a}'.`)}e[t.value.outlet]=t.value})}(n),n.sort((t,e)=>"primary"===t.value.outlet?-1:"primary"===e.value.outlet?1:t.value.outlet.localeCompare(e.value.outlet)),n}processSegment(t,e,n,a){for(const i of t)try{return this.processSegmentAgainstRoute(i,e,n,a)}catch(r){if(!(r instanceof Fe))throw r}if(this.noLeftoversInUrl(e,n,a))return[];throw new Fe}noLeftoversInUrl(t,e,n){return 0===e.length&&!t.children[n]}processSegmentAgainstRoute(t,e,n,a){if(t.redirectTo)throw new Fe;if((t.outlet||"primary")!==a)throw new Fe;let r,i=[],s=[];if("**"===t.path){const i=n.length>0?yt(n).parameters:{};r=new Jt(n,i,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ue(t),a,t.component,t,Ve(e),ze(e)+n.length,We(t))}else{const o=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new Fe;return{consumedSegments:[],lastChild:0,parameters:{}}}const a=(e.matcher||dt)(n,t,e);if(!a)throw new Fe;const r={};vt(a.posParams,(t,e)=>{r[e]=t.path});const i=a.consumed.length>0?Object.assign({},r,a.consumed[a.consumed.length-1].parameters):r;return{consumedSegments:a.consumed,lastChild:a.consumed.length,parameters:i}}(e,t,n);i=o.consumedSegments,s=n.slice(o.lastChild),r=new Jt(i,o.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Ue(t),a,t.component,t,Ve(e),ze(e)+i.length,We(t))}const o=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),{segmentGroup:u,slicedSegments:l}=Be(e,i,s,o,this.relativeLinkResolution);if(0===l.length&&u.hasChildren()){const t=this.processChildren(o,u);return[new Ht(r,t)]}if(0===o.length&&0===l.length)return[new Ht(r,[])];const d=this.processSegment(o,u,l,"primary");return[new Ht(r,d)]}}function Ve(t){let e=t;for(;e._sourceSegment;)e=e._sourceSegment;return e}function ze(t){let e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;for(;e._sourceSegment;)e=e._sourceSegment,n+=e._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Be(t,e,n,a,r){if(n.length>0&&function(t,e,n){return n.some(n=>Ye(t,e,n)&&"primary"!==He(n))}(t,n,a)){const r=new Ot(e,function(t,e,n,a){const r={};r.primary=a,a._sourceSegment=t,a._segmentIndexShift=e.length;for(const i of n)if(""===i.path&&"primary"!==He(i)){const n=new Ot([],{});n._sourceSegment=t,n._segmentIndexShift=e.length,r[He(i)]=n}return r}(t,e,a,new Ot(n,t.children)));return r._sourceSegment=t,r._segmentIndexShift=e.length,{segmentGroup:r,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return n.some(n=>Ye(t,e,n))}(t,n,a)){const i=new Ot(t.segments,function(t,e,n,a,r,i){const s={};for(const o of a)if(Ye(t,n,o)&&!r[He(o)]){const n=new Ot([],{});n._sourceSegment=t,n._segmentIndexShift="legacy"===i?t.segments.length:e.length,s[He(o)]=n}return Object.assign({},r,s)}(t,e,n,a,t.children,r));return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}const i=new Ot(t.segments,t.children);return i._sourceSegment=t,i._segmentIndexShift=e.length,{segmentGroup:i,slicedSegments:n}}function Ye(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function He(t){return t.outlet||"primary"}function Ue(t){return t.data||{}}function We(t){return t.resolve||{}}function Ke(t,e,n,a){const r=ke(t,e,a);return xt(r.resolve?r.resolve(e,n):r(e,n))}function $e(t){return function(e){return e.pipe(Object(A.a)(e=>{const n=t(e);return n?Object(s.a)(n).pipe(Object(_.a)(()=>e)):Object(s.a)([e])}))}}class Ze{}class Je{shouldDetach(t){return!1}store(t,e){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,e){return t.routeConfig===e.routeConfig}}const Qe=new r.InjectionToken("ROUTES");class Xe{constructor(t,e,n,a){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=a}load(t,e){return this.onLoadStartListener&&this.onLoadStartListener(e),this.loadModuleFactory(e.loadChildren).pipe(Object(_.a)(n=>{this.onLoadEndListener&&this.onLoadEndListener(e);const a=n.create(t);return new ct(mt(a.injector.get(Qe)).map(pt),a)}))}loadModuleFactory(t){return"string"==typeof t?Object(s.a)(this.loader.load(t)):xt(t()).pipe(Object(I.a)(t=>t instanceof r.NgModuleFactory?Object(i.a)(t):Object(s.a)(this.compiler.compileModuleAsync(t))))}}class tn{}class en{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,e){return t}}function nn(t){throw t}function an(t,e,n){return e.parse("/")}function rn(t,e){return Object(i.a)(null)}class sn{constructor(t,e,n,a,i,s,u,l){this.rootComponentType=t,this.urlSerializer=e,this.rootContexts=n,this.location=a,this.config=l,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.navigationId=0,this.isNgZoneEnabled=!1,this.events=new x.a,this.errorHandler=nn,this.malformedUriErrorHandler=an,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:rn,afterPreactivation:rn},this.urlHandlingStrategy=new en,this.routeReuseStrategy=new Je,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="legacy",this.ngModule=i.get(r.NgModuleRef),this.console=i.get(r["ɵConsole"]);const d=i.get(r.NgZone);this.isNgZoneEnabled=d instanceof r.NgZone,this.resetConfig(l),this.currentUrlTree=new Tt(new Ot([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Xe(s,u,t=>this.triggerEvent(new X(t)),t=>this.triggerEvent(new tt(t))),this.routerState=Kt(this.currentUrlTree,this.rootComponentType),this.transitions=new o.a({id:0,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,extractedUrl:this.urlHandlingStrategy.extract(this.currentUrlTree),urlAfterRedirects:this.urlHandlingStrategy.extract(this.currentUrlTree),rawUrl:this.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:this.routerState.snapshot,targetSnapshot:null,currentRouterState:this.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.navigations=this.setupNavigations(this.transitions),this.processNavigations()}setupNavigations(t){const e=this.events;return t.pipe(Object(D.a)(t=>0!==t.id),Object(_.a)(t=>Object.assign({},t,{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl)})),Object(A.a)(t=>{let n=!1,a=!1;return Object(i.a)(t).pipe(Object(q.a)(t=>{this.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?Object.assign({},this.lastSuccessfulNavigation,{previousNavigation:null}):null}}),Object(A.a)(t=>{const n=!this.navigated||t.extractedUrl.toString()!==this.browserUrlTree.toString();if(("reload"===this.onSameUrlNavigation||n)&&this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return Object(i.a)(t).pipe(Object(A.a)(t=>{const n=this.transitions.getValue();return e.next(new Y(t.id,this.serializeUrl(t.extractedUrl),t.source,t.restoredState)),n!==this.transitions.getValue()?y.a:[t]}),Object(A.a)(t=>Promise.resolve(t)),(a=this.ngModule.injector,r=this.configLoader,s=this.urlSerializer,o=this.config,function(t){return t.pipe(Object(A.a)(t=>function(t,e,n,a,r){return new Oe(t,e,n,a,r).apply()}(a,r,s,t.extractedUrl,o).pipe(Object(_.a)(e=>Object.assign({},t,{urlAfterRedirects:e})))))}),Object(q.a)(t=>{this.currentNavigation=Object.assign({},this.currentNavigation,{finalUrl:t.urlAfterRedirects})}),function(t,e,n,a,r){return function(i){return i.pipe(Object(I.a)(i=>function(t,e,n,a,r="emptyOnly",i="legacy"){return new Ge(t,e,n,a,r,i).recognize()}(t,e,i.urlAfterRedirects,n(i.urlAfterRedirects),a,r).pipe(Object(_.a)(t=>Object.assign({},i,{targetSnapshot:t})))))}}(this.rootComponentType,this.config,t=>this.serializeUrl(t),this.paramsInheritanceStrategy,this.relativeLinkResolution),Object(q.a)(t=>{"eager"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),Object(q.a)(t=>{const n=new K(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.next(n)}));var a,r,s,o;if(n&&this.rawUrlTree&&this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)){const{id:n,extractedUrl:a,source:r,restoredState:s,extras:o}=t,u=new Y(n,this.serializeUrl(a),r,s);e.next(u);const l=Kt(a,this.rootComponentType).snapshot;return Object(i.a)(Object.assign({},t,{targetSnapshot:l,urlAfterRedirects:a,extras:Object.assign({},o,{skipLocationChange:!1,replaceUrl:!1})}))}return this.rawUrlTree=t.rawUrl,this.browserUrlTree=t.urlAfterRedirects,t.resolve(null),y.a}),$e(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.beforePreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(q.a)(t=>{const e=new $(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),Object(_.a)(t=>Object.assign({},t,{guards:Ae(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),function(t,e){return function(n){return n.pipe(Object(I.a)(n=>{const{targetSnapshot:a,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:u}}=n;return 0===u.length&&0===o.length?Object(i.a)(Object.assign({},n,{guardsResult:!0})):function(t,e,n,a){return Object(s.a)(t).pipe(Object(I.a)(t=>function(t,e,n,a,r){const s=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!s||0===s.length)return Object(i.a)(!0);const o=s.map(i=>{const s=ke(i,e,r);let o;if(function(t){return t&&be(t.canDeactivate)}(s))o=xt(s.canDeactivate(t,e,n,a));else{if(!be(s))throw new Error("Invalid CanDeactivate guard");o=xt(s(t,e,n,a))}return o.pipe(Object(S.a)())});return Object(i.a)(o).pipe(De())}(t.component,t.route,n,e,a)),Object(S.a)(t=>!0!==t,!0))}(u,a,r,t).pipe(Object(I.a)(n=>n&&"boolean"==typeof n?function(t,e,n,a){return Object(s.a)(e).pipe(Object(P.a)(e=>Object(s.a)([Me(e.route.parent,a),Pe(e.route,a),je(t,e.path,n),qe(t,e.route,n)]).pipe(Object(T.a)(),Object(S.a)(t=>!0!==t,!0))),Object(S.a)(t=>!0!==t,!0))}(a,o,t,e):Object(i.a)(n)),Object(_.a)(t=>Object.assign({},n,{guardsResult:t})))}))}}(this.ngModule.injector,t=>this.triggerEvent(t)),Object(q.a)(t=>{if(me(t.guardsResult)){const e=lt(`Redirecting to "${this.serializeUrl(t.guardsResult)}"`);throw e.url=t.guardsResult,e}}),Object(q.a)(t=>{const e=new Z(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.triggerEvent(e)}),Object(D.a)(t=>{if(!t.guardsResult){this.resetUrlToCurrentUrlTree();const n=new U(t.id,this.serializeUrl(t.extractedUrl),"");return e.next(n),t.resolve(!1),!1}return!0}),$e(t=>{if(t.guards.canActivateChecks.length)return Object(i.a)(t).pipe(Object(q.a)(t=>{const e=new J(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}),(e=this.paramsInheritanceStrategy,n=this.ngModule.injector,function(t){return t.pipe(Object(I.a)(t=>{const{targetSnapshot:a,guards:{canActivateChecks:r}}=t;return r.length?Object(s.a)(r).pipe(Object(P.a)(t=>function(t,e,n,a){return function(t,e,n,a){const r=Object.keys(t);if(0===r.length)return Object(i.a)({});if(1===r.length){const i=r[0];return Ke(t[i],e,n,a).pipe(Object(_.a)(t=>({[i]:t})))}const o={};return Object(s.a)(r).pipe(Object(I.a)(r=>Ke(t[r],e,n,a).pipe(Object(_.a)(t=>(o[r]=t,t))))).pipe(Object(O.a)(),Object(_.a)(()=>o))}(t._resolve,t,e,a).pipe(Object(_.a)(e=>(t._resolvedData=e,t.data=Object.assign({},t.data,Zt(t,n).resolve),null)))}(t.route,a,e,n)),Object(M.a)((t,e)=>t),Object(_.a)(e=>t)):Object(i.a)(t)}))}),Object(q.a)(t=>{const e=new Q(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);this.triggerEvent(e)}));var e,n}),$e(t=>{const{targetSnapshot:e,id:n,extractedUrl:a,rawUrl:r,extras:{skipLocationChange:i,replaceUrl:s}}=t;return this.hooks.afterPreactivation(e,{navigationId:n,appliedUrlTree:a,rawUrlTree:r,skipLocationChange:!!i,replaceUrl:!!s})}),Object(_.a)(t=>{const e=function(t,e,n){const a=function t(e,n,a){if(a&&e.shouldReuseRoute(n.value,a.value.snapshot)){const r=a.value;r._futureSnapshot=n.value;const i=function(e,n,a){return n.children.map(n=>{for(const r of a.children)if(e.shouldReuseRoute(r.value.snapshot,n.value))return t(e,n,r);return t(e,n)})}(e,n,a);return new Ht(r,i)}{const a=e.retrieve(n.value);if(a){const t=a.route;return function t(e,n){if(e.value.routeConfig!==n.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(e.children.length!==n.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");n.value._futureSnapshot=e.value;for(let a=0;a<e.children.length;++a)t(e.children[a],n.children[a])}(n,t),t}{const a=new $t(new o.a((r=n.value).url),new o.a(r.params),new o.a(r.queryParams),new o.a(r.fragment),new o.a(r.data),r.outlet,r.component,r),i=n.children.map(n=>t(e,n));return new Ht(a,i)}}var r}(t,e._root,n?n._root:void 0);return new Wt(a,e)}(this.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return Object.assign({},t,{targetRouterState:e})}),Object(q.a)(t=>{this.currentUrlTree=t.urlAfterRedirects,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl),this.routerState=t.targetRouterState,"deferred"===this.urlUpdateStrategy&&(t.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),this.browserUrlTree=t.urlAfterRedirects)}),(u=this.rootContexts,l=this.routeReuseStrategy,d=t=>this.triggerEvent(t),Object(_.a)(t=>(new ge(l,t.targetRouterState,t.currentRouterState,d).activate(u),t))),Object(q.a)({next(){n=!0},complete(){n=!0}}),(r=()=>{if(!n&&!a){this.resetUrlToCurrentUrlTree();const n=new U(t.id,this.serializeUrl(t.extractedUrl),`Navigation ID ${t.id} is not equal to the current navigation id ${this.navigationId}`);e.next(n),t.resolve(!1)}this.currentNavigation=null},t=>t.lift(new F(r))),Object(w.a)(n=>{if(a=!0,(r=n)&&r.ngNavigationCancelingError){const a=me(n.url);a||(this.navigated=!0,this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));const r=new U(t.id,this.serializeUrl(t.extractedUrl),n.message);e.next(r),t.resolve(!1),a&&this.navigateByUrl(n.url)}else{this.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);const a=new W(t.id,this.serializeUrl(t.extractedUrl),n);e.next(a);try{t.resolve(this.errorHandler(n))}catch(i){t.reject(i)}}var r;return y.a}));var r,u,l,d}))}resetRootComponentType(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType}getTransition(){const t=this.transitions.value;return t.urlAfterRedirects=this.browserUrlTree,t}setTransition(t){this.transitions.next(Object.assign({},this.getTransition(),t))}initialNavigation(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(t=>{let e=this.parseUrl(t.url);const n="popstate"===t.type?"popstate":"hashchange",a=t.state&&t.state.navigationId?t.state:null;setTimeout(()=>{this.scheduleNavigation(e,n,a,{replaceUrl:!0})},0)}))}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.currentNavigation}triggerEvent(t){this.events.next(t)}resetConfig(t){ft(t),this.config=t.map(pt),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=null)}createUrlTree(t,e={}){const{relativeTo:n,queryParams:a,fragment:i,preserveQueryParams:s,queryParamsHandling:o,preserveFragment:u}=e;Object(r.isDevMode)()&&s&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");const l=n||this.routerState.root,d=u?this.currentUrlTree.fragment:i;let c=null;if(o)switch(o){case"merge":c=Object.assign({},this.currentUrlTree.queryParams,a);break;case"preserve":c=this.currentUrlTree.queryParams;break;default:c=a||null}else c=s?this.currentUrlTree.queryParams:a||null;return null!==c&&(c=this.removeEmptyProps(c)),function(t,e,n,a,r){if(0===n.length)return re(e.root,e.root,e,a,r);const i=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new ie(!0,0,t);let e=0,n=!1;const a=t.reduce((t,a,r)=>{if("object"==typeof a&&null!=a){if(a.outlets){const e={};return vt(a.outlets,(t,n)=>{e[n]="string"==typeof t?t.split("/"):t}),[...t,{outlets:e}]}if(a.segmentPath)return[...t,a.segmentPath]}return"string"!=typeof a?[...t,a]:0===r?(a.split("/").forEach((a,r)=>{0==r&&"."===a||(0==r&&""===a?n=!0:".."===a?e++:""!=a&&t.push(a))}),t):[...t,a]},[]);return new ie(n,e,a)}(n);if(i.toRoot())return re(e.root,new Ot([],{}),e,a,r);const s=function(t,e,n){if(t.isAbsolute)return new se(e.root,!0,0);if(-1===n.snapshot._lastPathIndex)return new se(n.snapshot._urlSegment,!0,0);const a=ae(t.commands[0])?0:1;return function(t,e,n){let a=t,r=e,i=n;for(;i>r;){if(i-=r,a=a.parent,!a)throw new Error("Invalid number of '../'");r=a.segments.length}return new se(a,!1,r-i)}(n.snapshot._urlSegment,n.snapshot._lastPathIndex+a,t.numberOfDoubleDots)}(i,e,t),o=s.processChildren?le(s.segmentGroup,s.index,i.commands):ue(s.segmentGroup,s.index,i.commands);return re(s.segmentGroup,o,e,a,r)}(l,this.currentUrlTree,t,c,d)}navigateByUrl(t,e={skipLocationChange:!1}){Object(r.isDevMode)()&&this.isNgZoneEnabled&&!r.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");const n=me(t)?t:this.parseUrl(t),a=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(a,"imperative",null,e)}navigate(t,e={skipLocationChange:!1}){return function(t){for(let e=0;e<t.length;e++){const n=t[e];if(null==n)throw new Error(`The requested path contains ${n} segment at index ${e}`)}}(t),this.navigateByUrl(this.createUrlTree(t,e),e)}serializeUrl(t){return this.urlSerializer.serialize(t)}parseUrl(t){let e;try{e=this.urlSerializer.parse(t)}catch(n){e=this.malformedUriErrorHandler(n,this.urlSerializer,t)}return e}isActive(t,e){if(me(t))return _t(this.currentUrlTree,t,e);const n=this.parseUrl(t);return _t(this.currentUrlTree,n,e)}removeEmptyProps(t){return Object.keys(t).reduce((e,n)=>{const a=t[n];return null!=a&&(e[n]=a),e},{})}processNavigations(){this.navigations.subscribe(t=>{this.navigated=!0,this.lastSuccessfulId=t.id,this.events.next(new H(t.id,this.serializeUrl(t.extractedUrl),this.serializeUrl(this.currentUrlTree))),this.lastSuccessfulNavigation=this.currentNavigation,this.currentNavigation=null,t.resolve(!0)},t=>{this.console.warn("Unhandled Navigation Error: ")})}scheduleNavigation(t,e,n,a){const r=this.getTransition();if(r&&"imperative"!==e&&"imperative"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"hashchange"==e&&"popstate"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(r&&"popstate"==e&&"hashchange"===r.source&&r.rawUrl.toString()===t.toString())return Promise.resolve(!0);let i=null,s=null;const o=new Promise((t,e)=>{i=t,s=e}),u=++this.navigationId;return this.setTransition({id:u,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:a,resolve:i,reject:s,promise:o,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),o.catch(t=>Promise.reject(t))}setBrowserUrl(t,e,n,a){const r=this.urlSerializer.serialize(t);a=a||{},this.location.isCurrentPathEqualTo(r)||e?this.location.replaceState(r,"",Object.assign({},a,{navigationId:n})):this.location.go(r,"",Object.assign({},a,{navigationId:n}))}resetStateAndUrl(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})}}class on{constructor(t,e,n,a,r){this.router=t,this.route=e,this.commands=[],null==n&&a.setAttribute(r.nativeElement,"tabindex","0")}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated!, use queryParamsHandling instead."),this.preserve=t}onClick(){const t={skipLocationChange:ln(this.skipLocationChange),replaceUrl:ln(this.replaceUrl)};return this.router.navigateByUrl(this.urlTree,t),!0}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:ln(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:ln(this.preserveFragment)})}}class un{constructor(t,e,n){this.router=t,this.route=e,this.locationStrategy=n,this.commands=[],this.subscription=t.events.subscribe(t=>{t instanceof H&&this.updateTargetUrlAndHref()})}set routerLink(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]}set preserveQueryParams(t){Object(r.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead."),this.preserve=t}ngOnChanges(t){this.updateTargetUrlAndHref()}ngOnDestroy(){this.subscription.unsubscribe()}onClick(t,e,n,a){if(0!==t||e||n||a)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0;const r={skipLocationChange:ln(this.skipLocationChange),replaceUrl:ln(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,r),!1}updateTargetUrlAndHref(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))}get urlTree(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:ln(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:ln(this.preserveFragment)})}}function ln(t){return""===t||!!t}class dn{constructor(t,e,n,a,r){this.router=t,this.element=e,this.renderer=n,this.link=a,this.linkWithHref=r,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.subscription=t.events.subscribe(t=>{t instanceof H&&this.update()})}ngAfterContentInit(){this.links.changes.subscribe(t=>this.update()),this.linksWithHrefs.changes.subscribe(t=>this.update()),this.update()}set routerLinkActive(t){const e=Array.isArray(t)?t:t.split(" ");this.classes=e.filter(t=>!!t)}ngOnChanges(t){this.update()}ngOnDestroy(){this.subscription.unsubscribe()}update(){this.links&&this.linksWithHrefs&&this.router.navigated&&Promise.resolve().then(()=>{const t=this.hasActiveLinks();this.isActive!==t&&(this.isActive=t,this.classes.forEach(e=>{t?this.renderer.addClass(this.element.nativeElement,e):this.renderer.removeClass(this.element.nativeElement,e)}))})}isLinkActive(t){return e=>t.isActive(e.urlTree,this.routerLinkActiveOptions.exact)}hasActiveLinks(){const t=this.isLinkActive(this.router);return this.link&&t(this.link)||this.linkWithHref&&t(this.linkWithHref)||this.links.some(t)||this.linksWithHrefs.some(t)}}class cn{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.children=new fn,this.attachRef=null}}class fn{constructor(){this.contexts=new Map}onChildOutletCreated(t,e){const n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)}onChildOutletDestroyed(t){const e=this.getContext(t);e&&(e.outlet=null)}onOutletDeactivated(){const t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let e=this.getContext(t);return e||(e=new cn,this.contexts.set(t,e)),e}getContext(t){return this.contexts.get(t)||null}}class hn{constructor(t,e,n,a,i){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=i,this.activated=null,this._activatedRoute=null,this.activateEvents=new r.EventEmitter,this.deactivateEvents=new r.EventEmitter,this.name=a||"primary",t.onChildOutletCreated(this.name,this)}ngOnDestroy(){this.parentContexts.onChildOutletDestroyed(this.name)}ngOnInit(){if(!this.activated){const t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();const t=this.activated;return this.activated=null,this._activatedRoute=null,t}attach(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)}deactivate(){if(this.activated){const t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;const n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),a=this.parentContexts.getOrCreateContext(this.name).children,r=new gn(t,a,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,r),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}class gn{constructor(t,e,n){this.route=t,this.childContexts=e,this.parent=n}get(t,e){return t===$t?this.route:t===fn?this.childContexts:this.parent.get(t,e)}}class pn{}class bn{preload(t,e){return e().pipe(Object(w.a)(()=>Object(i.a)(null)))}}class mn{preload(t,e){return Object(i.a)(null)}}class yn{constructor(t,e,n,a,r){this.router=t,this.injector=a,this.preloadingStrategy=r,this.loader=new Xe(e,n,e=>t.triggerEvent(new X(e)),e=>t.triggerEvent(new tt(e)))}setUpPreloading(){this.subscription=this.router.events.pipe(Object(D.a)(t=>t instanceof H),Object(P.a)(()=>this.preload())).subscribe(()=>{})}preload(){const t=this.injector.get(r.NgModuleRef);return this.processRoutes(t,this.router.config)}ngOnDestroy(){this.subscription.unsubscribe()}processRoutes(t,e){const n=[];for(const a of e)if(a.loadChildren&&!a.canLoad&&a._loadedConfig){const t=a._loadedConfig;n.push(this.processRoutes(t.module,t.routes))}else a.loadChildren&&!a.canLoad?n.push(this.preloadConfig(t,a)):a.children&&n.push(this.processRoutes(t,a.children));return Object(s.a)(n).pipe(Object(V.a)(),Object(_.a)(t=>{}))}preloadConfig(t,e){return this.preloadingStrategy.preload(e,()=>this.loader.load(t.injector,e).pipe(Object(I.a)(t=>(e._loadedConfig=t,this.processRoutes(t.module,t.routes)))))}}class vn{constructor(t,e,n={}){this.router=t,this.viewportScroller=e,this.options=n,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},n.scrollPositionRestoration=n.scrollPositionRestoration||"disabled",n.anchorScrolling=n.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.router.events.subscribe(t=>{t instanceof Y?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof H&&(this.lastId=t.id,this.scheduleScrollEvent(t,this.router.parseUrl(t.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.router.events.subscribe(t=>{t instanceof it&&(t.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(t.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,e){this.router.triggerEvent(new it(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))}ngOnDestroy(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}const xn=new r.InjectionToken("ROUTER_CONFIGURATION"),_n=new r.InjectionToken("ROUTER_FORROOT_GUARD"),Tn=[a.Location,{provide:Nt,useClass:Ct},{provide:sn,useFactory:Rn,deps:[r.ApplicationRef,Nt,fn,a.Location,r.Injector,r.NgModuleFactoryLoader,r.Compiler,Qe,xn,[tn,new r.Optional],[Ze,new r.Optional]]},fn,{provide:$t,useFactory:An,deps:[sn]},{provide:r.NgModuleFactoryLoader,useClass:r.SystemJsNgModuleLoader},yn,mn,bn,{provide:xn,useValue:{enableTracing:!1}}];function On(){return new r.NgProbeToken("Router",sn)}class wn{constructor(t,e){}static forRoot(t,e){return{ngModule:wn,providers:[Tn,Cn(t),{provide:_n,useFactory:Nn,deps:[[sn,new r.Optional,new r.SkipSelf]]},{provide:xn,useValue:e||{}},{provide:a.LocationStrategy,useFactory:In,deps:[a.PlatformLocation,[new r.Inject(a.APP_BASE_HREF),new r.Optional],xn]},{provide:vn,useFactory:Sn,deps:[sn,a.ViewportScroller,xn]},{provide:pn,useExisting:e&&e.preloadingStrategy?e.preloadingStrategy:mn},{provide:r.NgProbeToken,multi:!0,useFactory:On},[kn,{provide:r.APP_INITIALIZER,multi:!0,useFactory:En,deps:[kn]},{provide:Dn,useFactory:Ln,deps:[kn]},{provide:r.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:Dn}]]}}static forChild(t){return{ngModule:wn,providers:[Cn(t)]}}}function Sn(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new vn(t,e,n)}function In(t,e,n={}){return n.useHash?new a.HashLocationStrategy(t,e):new a.PathLocationStrategy(t,e)}function Nn(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function Cn(t){return[{provide:r.ANALYZE_FOR_ENTRY_COMPONENTS,multi:!0,useValue:t},{provide:Qe,multi:!0,useValue:t}]}function Rn(t,e,n,a,r,i,s,o,u={},l,d){const c=new sn(null,e,n,a,r,i,s,mt(o));if(l&&(c.urlHandlingStrategy=l),d&&(c.routeReuseStrategy=d),u.errorHandler&&(c.errorHandler=u.errorHandler),u.malformedUriErrorHandler&&(c.malformedUriErrorHandler=u.malformedUriErrorHandler),u.enableTracing){const t=Object(z.q)();c.events.subscribe(e=>{t.logGroup(`Router Event: ${e.constructor.name}`),t.log(e.toString()),t.log(e),t.logGroupEnd()})}return u.onSameUrlNavigation&&(c.onSameUrlNavigation=u.onSameUrlNavigation),u.paramsInheritanceStrategy&&(c.paramsInheritanceStrategy=u.paramsInheritanceStrategy),u.urlUpdateStrategy&&(c.urlUpdateStrategy=u.urlUpdateStrategy),u.relativeLinkResolution&&(c.relativeLinkResolution=u.relativeLinkResolution),c}function An(t){return t.routerState.root}class kn{constructor(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new x.a}appInitializer(){return this.injector.get(a.LOCATION_INITIALIZED,Promise.resolve(null)).then(()=>{let t=null;const e=new Promise(e=>t=e),n=this.injector.get(sn),a=this.injector.get(xn);if(this.isLegacyDisabled(a)||this.isLegacyEnabled(a))t(!0);else if("disabled"===a.initialNavigation)n.setUpLocationChangeListener(),t(!0);else{if("enabled"!==a.initialNavigation)throw new Error(`Invalid initialNavigation options: '${a.initialNavigation}'`);n.hooks.afterPreactivation=()=>this.initNavigation?Object(i.a)(null):(this.initNavigation=!0,t(!0),this.resultOfPreactivationDone),n.initialNavigation()}return e})}bootstrapListener(t){const e=this.injector.get(xn),n=this.injector.get(yn),a=this.injector.get(vn),i=this.injector.get(sn),s=this.injector.get(r.ApplicationRef);t===s.components[0]&&(this.isLegacyEnabled(e)?i.initialNavigation():this.isLegacyDisabled(e)&&i.setUpLocationChangeListener(),n.setUpPreloading(),a.init(),i.resetRootComponentType(s.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}isLegacyEnabled(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation}isLegacyDisabled(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation}}function En(t){return t.appInitializer.bind(t)}function Ln(t){return t.bootstrapListener.bind(t)}const Dn=new r.InjectionToken("Router Initializer")},iSVu:function(t,e,n){var a=n("xs3f"),r=Function.toString;"function"!=typeof a.inspectSource&&(a.inspectSource=function(t){return r.call(t)}),t.exports=a.inspectSource},iYuL:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,a){return t?/-MMM-/.test(a)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("wd/R"))},idmN:function(t,e,n){var a=n("ZWtO"),r=n("FZoo"),i=n("4uTw");t.exports=function(t,e,n){for(var s=-1,o=e.length,u={};++s<o;){var l=e[s],d=a(t,l);n(d,l)&&r(u,i(l,t),d)}return u}},ienR:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return q})),n.d(e,"c",(function(){return j})),n.d(e,"d",(function(){return F})),n.d(e,"e",(function(){return G})),n.d(e,"f",(function(){return Y})),n.d(e,"g",(function(){return nt})),n.d(e,"h",(function(){return H})),n.d(e,"i",(function(){return z})),n.d(e,"j",(function(){return V})),n.d(e,"k",(function(){return B})),n.d(e,"l",(function(){return b})),n.d(e,"m",(function(){return st})),n.d(e,"n",(function(){return rt})),n.d(e,"o",(function(){return it})),n.d(e,"p",(function(){return dt})),n.d(e,"q",(function(){return ot})),n.d(e,"r",(function(){return ut})),n.d(e,"s",(function(){return lt})),n.d(e,"t",(function(){return M})),n.d(e,"u",(function(){return m})),n.d(e,"v",(function(){return p})),n.d(e,"w",(function(){return U})),n.d(e,"x",(function(){return W})),n.d(e,"y",(function(){return K})),n.d(e,"z",(function(){return $})),n.d(e,"A",(function(){return J})),n.d(e,"B",(function(){return Q})),n.d(e,"C",(function(){return X})),n.d(e,"D",(function(){return tt})),n.d(e,"E",(function(){return et}));var a=n("8Y7J"),r=n("pLZG"),i=n("lJxs"),s=n("IzEk"),o=n("xj/R"),u=n("2Vo4"),l=n("AfCQ"),d=n("2uy1"),c=(n("GS7A"),n("z/SZ")),f=(n("s7LF"),n("hpHm"));class h{constructor(){this.adaptivePosition=!1,this.useUtc=!1,this.isAnimated=!1,this.containerClass="theme-green",this.displayMonths=1,this.showWeekNumbers=!0,this.dateInputFormat="L",this.rangeSeparator=" - ",this.rangeInputFormat="L",this.monthTitle="MMMM",this.yearTitle="YYYY",this.dayLabel="D",this.monthLabel="MMMM",this.yearLabel="YYYY",this.weekNumbers="w"}}class g{constructor(){this._customRangesFish=[]}set minDate(t){this._effects.setMinDate(t)}set maxDate(t){this._effects.setMaxDate(t)}set daysDisabled(t){this._effects.setDaysDisabled(t)}set datesDisabled(t){this._effects.setDatesDisabled(t)}set isDisabled(t){this._effects.setDisabled(t)}set dateCustomClasses(t){this._effects.setDateCustomClasses(t)}setViewMode(t){}navigateTo(t){}dayHoverHandler(t){}weekHoverHandler(t){}monthHoverHandler(t){}yearHoverHandler(t){}daySelectHandler(t){}monthSelectHandler(t){}yearSelectHandler(t){}_stopPropagation(t){t.stopPropagation()}}let p=(()=>{class t{calculate(){return{type:t.CALCULATE}}format(){return{type:t.FORMAT}}flag(){return{type:t.FLAG}}select(e){return{type:t.SELECT,payload:e}}changeViewMode(e){return{type:t.CHANGE_VIEWMODE,payload:e}}navigateTo(e){return{type:t.NAVIGATE_TO,payload:e}}navigateStep(e){return{type:t.NAVIGATE_OFFSET,payload:e}}setOptions(e){return{type:t.SET_OPTIONS,payload:e}}selectRange(e){return{type:t.SELECT_RANGE,payload:e}}hoverDay(e){return{type:t.HOVER,payload:e.isHovered?e.cell.date:null}}minDate(e){return{type:t.SET_MIN_DATE,payload:e}}maxDate(e){return{type:t.SET_MAX_DATE,payload:e}}daysDisabled(e){return{type:t.SET_DAYSDISABLED,payload:e}}datesDisabled(e){return{type:t.SET_DATESDISABLED,payload:e}}isDisabled(e){return{type:t.SET_IS_DISABLED,payload:e}}setDateCustomClasses(e){return{type:t.SET_DATE_CUSTOM_CLASSES,payload:e}}setLocale(e){return{type:t.SET_LOCALE,payload:e}}}return t.CALCULATE="[datepicker] calculate dates matrix",t.FORMAT="[datepicker] format datepicker values",t.FLAG="[datepicker] set flags",t.SELECT="[datepicker] select date",t.NAVIGATE_OFFSET="[datepicker] shift view date",t.NAVIGATE_TO="[datepicker] change view date",t.SET_OPTIONS="[datepicker] update render options",t.HOVER="[datepicker] hover date",t.CHANGE_VIEWMODE="[datepicker] switch view mode",t.SET_MIN_DATE="[datepicker] set min date",t.SET_MAX_DATE="[datepicker] set max date",t.SET_DAYSDISABLED="[datepicker] set days disabled",t.SET_DATESDISABLED="[datepicker] set dates disabled",t.SET_IS_DISABLED="[datepicker] set is disabled",t.SET_DATE_CUSTOM_CLASSES="[datepicker] set date custom classes",t.SET_LOCALE="[datepicker] set datepicker locale",t.SELECT_RANGE="[daterangepicker] select dates range",t})();class b{constructor(){this._defaultLocale="en",this._locale=new u.a(this._defaultLocale),this._localeChange=this._locale.asObservable()}get locale(){return this._locale}get localeChange(){return this._localeChange}get currentLocale(){return this._locale.getValue()}use(t){t!==this.currentLocale&&this._locale.next(t)}}class m{constructor(t,e){this._actions=t,this._localeService=e,this._subs=[]}init(t){return this._store=t,this}setValue(t){this._store.dispatch(this._actions.select(t))}setRangeValue(t){this._store.dispatch(this._actions.selectRange(t))}setMinDate(t){return this._store.dispatch(this._actions.minDate(t)),this}setMaxDate(t){return this._store.dispatch(this._actions.maxDate(t)),this}setDaysDisabled(t){return this._store.dispatch(this._actions.daysDisabled(t)),this}setDatesDisabled(t){return this._store.dispatch(this._actions.datesDisabled(t)),this}setDisabled(t){return this._store.dispatch(this._actions.isDisabled(t)),this}setDateCustomClasses(t){return this._store.dispatch(this._actions.setDateCustomClasses(t)),this}setOptions(t){const e=Object.assign({locale:this._localeService.currentLocale},t);return this._store.dispatch(this._actions.setOptions(e)),this}setBindings(t){return t.daysCalendar=this._store.select(t=>t.flaggedMonths).pipe(Object(r.a)(t=>!!t)),t.monthsCalendar=this._store.select(t=>t.flaggedMonthsCalendar).pipe(Object(r.a)(t=>!!t)),t.yearsCalendar=this._store.select(t=>t.yearsCalendarFlagged).pipe(Object(r.a)(t=>!!t)),t.viewMode=this._store.select(t=>t.view.mode),t.options=this._store.select(t=>t.showWeekNumbers).pipe(Object(i.a)(t=>({showWeekNumbers:t}))),this}setEventHandlers(t){return t.setViewMode=t=>{this._store.dispatch(this._actions.changeViewMode(t))},t.navigateTo=t=>{this._store.dispatch(this._actions.navigateStep(t.step))},t.dayHoverHandler=t=>{const e=t.cell;e.isOtherMonth||e.isDisabled||(this._store.dispatch(this._actions.hoverDay(t)),e.isHovered=t.isHovered)},t.monthHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.yearHoverHandler=t=>{t.cell.isHovered=t.isHovered},t.monthSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{month:Object(o.l)(t.date),year:Object(o.j)(t.date)},viewMode:"day"}))},t.yearSelectHandler=t=>{t.isDisabled||this._store.dispatch(this._actions.navigateTo({unit:{year:Object(o.j)(t.date)},viewMode:"month"}))},this}registerDatepickerSideEffects(){return this._subs.push(this._store.select(t=>t.view).subscribe(t=>{this._store.dispatch(this._actions.calculate())})),this._subs.push(this._store.select(t=>t.monthsModel).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.format()))),this._subs.push(this._store.select(t=>t.formattedMonths).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.selectedRange).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.monthsCalendar).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.yearsCalendarModel).pipe(Object(r.a)(t=>!!t)).subscribe(()=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.hoveredDate).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._store.select(t=>t.dateCustomClasses).pipe(Object(r.a)(t=>!!t)).subscribe(t=>this._store.dispatch(this._actions.flag()))),this._subs.push(this._localeService.localeChange.subscribe(t=>this._store.dispatch(this._actions.setLocale(t)))),this}destroy(){for(const t of this._subs)t.unsubscribe()}}const y={date:new Date,mode:"day"},v=Object.assign(new h,{locale:"en",view:y,selectedRange:[],monthViewOptions:{width:7,height:6}});function x(t,e,n){const a=e&&Object(o.p)(Object(o.d)(t,"month"),e,"day"),r=n&&Object(o.n)(Object(o.G)(t,"month"),n,"day");return a||r}function _(t,e,n){const a=e&&Object(o.p)(Object(o.d)(t,"year"),e,"day"),r=n&&Object(o.n)(Object(o.G)(t,"year"),n,"day");return a||r}function T(t,e=0){const n=t&&t.yearsCalendarModel&&t.yearsCalendarModel[e];return n&&n.years&&n.years[0]&&n.years[0][0]&&n.years[0][0].date}function O(t,e){let n=t.initialDate;const a=new Array(t.height);for(let r=0;r<t.height;r++){a[r]=new Array(t.width);for(let i=0;i<t.width;i++)a[r][i]=e(n),n=Object(o.F)(n,t.shift)}return a}function w(t,e){const n=Object(o.i)(t),a=function(t,e){if(Object(o.t)(t,e.firstDayOfWeek))return t;const n=function(t,e){if(0===e)return t;const n=t-e%7;return n<0?n+7:n}(Object(o.h)(t),e.firstDayOfWeek);return Object(o.F)(t,{day:-n})}(n,e);return{daysMatrix:O({width:e.width,height:e.height,initialDate:a,shift:{day:1}},t=>t),month:n}}function S(t){const e=Object(o.k)(t),n=e.weekdaysShort(),a=e.firstDayOfWeek();return[...n.slice(a),...n.slice(0,a)]}function I(t,e){return!e||t>=e}const N={month:1};function C(t,e){return{months:O({width:3,height:4,initialDate:Object(o.G)(t,"year"),shift:N},t=>({date:t,label:Object(o.f)(t,e.monthLabel,e.locale)})),monthTitle:"",yearTitle:Object(o.f)(t,e.yearTitle,e.locale)}}const R=-1*(Math.floor(8)-1),A={year:1};function k(t,e,n){const a=O({width:4,height:4,initialDate:function(t,e){return e&&t.getFullYear()>=e.getFullYear()&&t.getFullYear()<e.getFullYear()+16?e:Object(o.F)(t,{year:R})}(t,n),shift:A},t=>({date:t,label:Object(o.f)(t,e.yearLabel,e.locale)}));return{years:a,monthTitle:"",yearTitle:function(t,e){return`${Object(o.f)(t[0][0].date,e.yearTitle,e.locale)} - ${Object(o.f)(t[3][3].date,e.yearTitle,e.locale)}`}(a,e)}}function E(t=v,e){switch(e.type){case p.CALCULATE:return function(t){const e=t.displayMonths;let n=t.view.date;if("day"===t.view.mode){t.showPreviousMonth&&0===t.selectedRange.length&&(n=Object(o.F)(n,{month:-1})),t.monthViewOptions.firstDayOfWeek=Object(o.k)(t.locale).firstDayOfWeek();const a=new Array(e);for(let r=0;r<e;r++)a[r]=w(n,t.monthViewOptions),n=Object(o.F)(n,{month:1});return Object.assign({},t,{monthsModel:a})}if("month"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=C(n,D(t)),n=Object(o.F)(n,{year:1});return Object.assign({},t,{monthsCalendar:a})}if("year"===t.view.mode){const a=new Array(e);for(let r=0;r<e;r++)a[r]=k(n,D(t),"year"===t.minMode?T(t,r):void 0),n=Object(o.F)(n,{year:16});return Object.assign({},t,{yearsCalendarModel:a})}return t}(t);case p.FORMAT:return function(t,e){if("day"===t.view.mode){const e=t.monthsModel.map((e,n)=>function(t,e,n){return{month:t.month,monthTitle:Object(o.f)(t.month,e.monthTitle,e.locale),yearTitle:Object(o.f)(t.month,e.yearTitle,e.locale),weekNumbers:(a=t.daysMatrix,r=e.weekNumbers,i=e.locale,a.map(t=>t[0]?Object(o.f)(t[0],r,i):"")),weekdays:S(e.locale),weeks:t.daysMatrix.map((t,a)=>({days:t.map((t,r)=>({date:t,label:Object(o.f)(t,e.dayLabel,e.locale),monthIndex:n,weekIndex:a,dayIndex:r}))}))};var a,r,i}(e,D(t),n));return Object.assign({},t,{formattedMonths:e})}const n=t.displayMonths;let a=t.view.date;if("month"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=C(a,D(t)),a=Object(o.F)(a,{year:1});return Object.assign({},t,{monthsCalendar:e})}if("year"===t.view.mode){const e=new Array(n);for(let r=0;r<n;r++)e[r]=k(a,D(t)),a=Object(o.F)(a,{year:16});return Object.assign({},t,{yearsCalendarModel:e})}return t}(t);case p.FLAG:return function(t,e){if("day"===t.view.mode){const e=t.formattedMonths.map((e,n)=>function(t,e){return t.weeks.forEach(n=>{n.days.forEach((a,r)=>{const i=!Object(o.w)(a.date,t.month),s=!i&&Object(o.v)(a.date,e.hoveredDate),u=!i&&e.selectedRange&&Object(o.v)(a.date,e.selectedRange[0]),l=!i&&e.selectedRange&&Object(o.v)(a.date,e.selectedRange[1]),d=!i&&Object(o.v)(a.date,e.selectedDate)||u||l,c=!i&&e.selectedRange&&function(t,e,n){return!(!t||!e[0])&&(e[1]?t>e[0]&&t<=e[1]:!!n&&t>e[0]&&t<=n)}(a.date,e.selectedRange,e.hoveredDate),f=e.isDisabled||Object(o.p)(a.date,e.minDate,"day")||Object(o.n)(a.date,e.maxDate,"day")||Object(o.s)(a.date,e.daysDisabled)||(h=a.date,!(void 0===(g=e.datesDisabled)||!g||!g.length)&&g.some(t=>Object(o.u)(h,t,"date")));var h,g;const p=new Date,b=!i&&Object(o.v)(a.date,p),m=e.dateCustomClasses&&e.dateCustomClasses.map(t=>Object(o.v)(a.date,t.date)?t.classes:[]).reduce((t,e)=>t.concat(e),[]).join(" ")||"",y=Object.assign({},a,{isOtherMonth:i,isHovered:s,isSelected:d,isSelectionStart:u,isSelectionEnd:l,isInRange:c,isDisabled:f,isToday:b,customClasses:m});a.isOtherMonth===y.isOtherMonth&&a.isHovered===y.isHovered&&a.isSelected===y.isSelected&&a.isSelectionStart===y.isSelectionStart&&a.isSelectionEnd===y.isSelectionEnd&&a.isDisabled===y.isDisabled&&a.isInRange===y.isInRange&&a.customClasses===y.customClasses||(n.days[r]=y)})}),t.hideLeftArrow=e.isDisabled||e.monthIndex>0&&e.monthIndex!==e.displayMonths,t.hideRightArrow=e.isDisabled||e.monthIndex<e.displayMonths&&e.monthIndex+1!==e.displayMonths,t.disableLeftArrow=x(Object(o.F)(t.month,{month:-1}),e.minDate,e.maxDate),t.disableRightArrow=x(Object(o.F)(t.month,{month:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,daysDisabled:t.daysDisabled,datesDisabled:t.datesDisabled,hoveredDate:t.hoveredDate,selectedDate:t.selectedDate,selectedRange:t.selectedRange,displayMonths:t.displayMonths,dateCustomClasses:t.dateCustomClasses,monthIndex:n}));return Object.assign({},t,{flaggedMonths:e})}if("month"===t.view.mode){const e=t.monthsCalendar.map((e,n)=>{return r={isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredMonth:t.hoveredMonth,selectedDate:t.selectedDate,displayMonths:t.displayMonths,monthIndex:n},(a=e).months.forEach((t,e)=>{t.forEach((t,n)=>{const i=Object(o.w)(t.date,r.hoveredMonth),s=r.isDisabled||x(t.date,r.minDate,r.maxDate),u=Object(o.w)(t.date,r.selectedDate),l=Object.assign(t,{isHovered:i,isDisabled:s,isSelected:u});t.isHovered===l.isHovered&&t.isDisabled===l.isDisabled&&t.isSelected===l.isSelected||(a.months[e][n]=l)})}),a.hideLeftArrow=r.monthIndex>0&&r.monthIndex!==r.displayMonths,a.hideRightArrow=r.monthIndex<r.displayMonths&&r.monthIndex+1!==r.displayMonths,a.disableLeftArrow=_(Object(o.F)(a.months[0][0].date,{year:-1}),r.minDate,r.maxDate),a.disableRightArrow=_(Object(o.F)(a.months[0][0].date,{year:1}),r.minDate,r.maxDate),a;var a,r});return Object.assign({},t,{flaggedMonthsCalendar:e})}if("year"===t.view.mode){const e=t.yearsCalendarModel.map((e,n)=>function(t,e){t.years.forEach((n,a)=>{n.forEach((n,r)=>{const i=Object(o.x)(n.date,e.hoveredYear),s=e.isDisabled||_(n.date,e.minDate,e.maxDate),u=Object(o.x)(n.date,e.selectedDate),l=Object.assign(n,{isHovered:i,isDisabled:s,isSelected:u});n.isHovered===l.isHovered&&n.isDisabled===l.isDisabled&&n.isSelected===l.isSelected||(t.years[a][r]=l)})}),t.hideLeftArrow=e.yearIndex>0&&e.yearIndex!==e.displayMonths,t.hideRightArrow=e.yearIndex<e.displayMonths&&e.yearIndex+1!==e.displayMonths,t.disableLeftArrow=_(Object(o.F)(t.years[0][0].date,{year:-1}),e.minDate,e.maxDate);const n=t.years.length-1,a=t.years[n].length-1;return t.disableRightArrow=_(Object(o.F)(t.years[n][a].date,{year:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredYear:t.hoveredYear,selectedDate:t.selectedDate,displayMonths:t.displayMonths,yearIndex:n}));return Object.assign({},t,{yearsCalendarFlagged:e})}return t}(t);case p.NAVIGATE_OFFSET:return function(t,e){const n={view:{mode:t.view.mode,date:L(t,e)}};return Object.assign({},t,n)}(t,e);case p.NAVIGATE_TO:{const n=e.payload,a=Object(o.E)(t.view.date,n.unit);let r,i;return I(n.viewMode,t.minMode)?(i=n.viewMode,r={view:{date:a,mode:i}}):(i=t.view.mode,r={selectedDate:a,view:{date:a,mode:i}}),Object.assign({},t,r)}case p.CHANGE_VIEWMODE:return I(e.payload,t.minMode)?Object.assign({},t,{view:{date:t.view.date,mode:e.payload}}):t;case p.HOVER:return Object.assign({},t,{hoveredDate:e.payload});case p.SELECT:{const n={selectedDate:e.payload,view:t.view},a=t.view.mode,r=P(e.payload||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_OPTIONS:{const n=e.payload,a=n.minMode?n.minMode:t.view.mode,r=P(Object(o.r)(n.value)&&n.value||Object(o.o)(n.value)&&Object(o.r)(n.value[0])&&n.value[0]||t.view.date,n.minDate,n.maxDate);return n.view={mode:a,date:r},n.value&&(Object(o.o)(n.value)&&(n.selectedRange=n.value),n.value instanceof Date&&(n.selectedDate=n.value)),Object.assign({},t,n)}case p.SELECT_RANGE:{const n={selectedRange:e.payload,view:t.view},a=t.view.mode,r=P(e.payload&&e.payload[0]||t.view.date,t.minDate,t.maxDate);return n.view={mode:a,date:r},Object.assign({},t,n)}case p.SET_MIN_DATE:return Object.assign({},t,{minDate:e.payload});case p.SET_MAX_DATE:return Object.assign({},t,{maxDate:e.payload});case p.SET_IS_DISABLED:return Object.assign({},t,{isDisabled:e.payload});case p.SET_DATE_CUSTOM_CLASSES:return Object.assign({},t,{dateCustomClasses:e.payload});default:return t}}function L(t,e){if("year"===t.view.mode&&"year"===t.minMode){const n=T(t,0),a=Object(o.F)(n,{year:-R});return Object(o.F)(a,e.payload)}return Object(o.F)(Object(o.G)(t.view.date,"month"),e.payload)}function D(t){return{locale:t.locale,monthTitle:t.monthTitle,yearTitle:t.yearTitle,dayLabel:t.dayLabel,monthLabel:t.monthLabel,yearLabel:t.yearLabel,weekNumbers:t.weekNumbers}}function P(t,e,n){const a=Array.isArray(t)?t[0]:t;return e&&Object(o.n)(e,a,"day")?e:n&&Object(o.p)(n,a,"day")?n:a}class M extends l.b{constructor(){const t=new u.a({type:"[datepicker] dispatcher init"});super(t,E,new l.a(v,t,E))}}class q extends g{constructor(t,e,n,r,i,s,o){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=o,this.valueChange=new a.EventEmitter,this.animationState="void",this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.isOtherMonthsActive=this._config.selectFromOtherMonth,this.containerClass=this._config.containerClass,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedDate).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||this._store.dispatch(this._actions.select(t.date))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class j{constructor(t,e,n,r,i){this._config=t,this.placement="bottom",this.triggers="click",this.outsideClick=!0,this.container="body",this.outsideEsc=!0,this.bsValueChange=new a.EventEmitter,this._subs=[],Object.assign(this,this._config),this._datepicker=i.createLoader(e,r,n),this.onShown=this._datepicker.onShown,this.onHidden=this._datepicker.onHidden}get isOpen(){return this._datepicker.isShown}set isOpen(t){t?this.show():this.hide()}set bsValue(t){this._bsValue&&t&&this._bsValue.getTime()===t.getTime()||(this._bsValue=t,this.bsValueChange.emit(t))}ngOnInit(){this._datepicker.listen({outsideClick:this.outsideClick,outsideEsc:this.outsideEsc,triggers:this.triggers,show:()=>this.show()}),this.setConfig()}ngOnChanges(t){this._datepickerRef&&this._datepickerRef.instance&&(t.minDate&&(this._datepickerRef.instance.minDate=this.minDate),t.maxDate&&(this._datepickerRef.instance.maxDate=this.maxDate),t.daysDisabled&&(this._datepickerRef.instance.daysDisabled=this.daysDisabled),t.datesDisabled&&(this._datepickerRef.instance.datesDisabled=this.datesDisabled),t.isDisabled&&(this._datepickerRef.instance.isDisabled=this.isDisabled),t.dateCustomClasses&&(this._datepickerRef.instance.dateCustomClasses=this.dateCustomClasses))}show(){this._datepicker.isShown||(this.setConfig(),this._datepickerRef=this._datepicker.provide({provide:h,useValue:this._config}).attach(q).to(this.container).position({attachment:this.placement}).show({placement:this.placement}),this._subs.push(this.bsValueChange.subscribe(t=>{this._datepickerRef.instance.value=t})),this._subs.push(this._datepickerRef.instance.valueChange.subscribe(t=>{this.bsValue=t,this.hide()})))}hide(){this.isOpen&&this._datepicker.hide();for(const t of this._subs)t.unsubscribe()}toggle(){if(this.isOpen)return this.hide();this.show()}setConfig(){this._config=Object.assign({},this._config,this.bsConfig,{value:this._bsValue,isDisabled:this.isDisabled,minDate:this.minDate||this.bsConfig&&this.bsConfig.minDate,maxDate:this.maxDate||this.bsConfig&&this.bsConfig.maxDate,daysDisabled:this.daysDisabled||this.bsConfig&&this.bsConfig.daysDisabled,dateCustomClasses:this.dateCustomClasses||this.bsConfig&&this.bsConfig.dateCustomClasses,datesDisabled:this.datesDisabled||this.bsConfig&&this.bsConfig.datesDisabled,minMode:this.minMode||this.bsConfig&&this.bsConfig.minMode})}ngOnDestroy(){this._datepicker.dispose()}}class F extends h{}class G extends q{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class V extends h{constructor(){super(...arguments),this.displayMonths=2,this.isAnimated=!1}}class z extends g{constructor(t,e,n,r,i,s,o){super(),this._config=e,this._store=n,this._element=r,this._actions=i,this._positionService=o,this.valueChange=new a.EventEmitter,this.animationState="void",this._rangeStack=[],this._subs=[],this._effects=s,t.setStyle(r.nativeElement,"display","block"),t.setStyle(r.nativeElement,"position","absolute")}set value(t){this._effects.setRangeValue(t)}ngOnInit(){this._positionService.setOptions({modifiers:{flip:{enabled:this._config.adaptivePosition}},allowedPositions:["top","bottom"]}),this._positionService.event$.pipe(Object(s.a)(1)).subscribe(()=>{this._positionService.disable(),this.animationState=this._config.isAnimated?this.isTopPosition?"animated-up":"animated-down":"unanimated"}),this.containerClass=this._config.containerClass,this.isOtherMonthsActive=this._config.selectFromOtherMonth,this._effects.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects(),this._subs.push(this._store.select(t=>t.selectedRange).subscribe(t=>this.valueChange.emit(t)))}get isTopPosition(){return this._element.nativeElement.classList.contains("top")}positionServiceEnable(){this._positionService.enable()}daySelectHandler(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||(1===this._rangeStack.length&&(this._rangeStack=t.date>=this._rangeStack[0]?[this._rangeStack[0],t.date]:[t.date]),0===this._rangeStack.length&&(this._rangeStack=[t.date]),this._store.dispatch(this._actions.selectRange(this._rangeStack)),2===this._rangeStack.length&&(this._rangeStack=[]))}ngOnDestroy(){for(const t of this._subs)t.unsubscribe();this._effects.destroy()}}class B extends z{constructor(t,e,n,a,r,i,s){super(t,e,n,a,r,i,s),t.setStyle(a.nativeElement,"display","inline-block"),t.setStyle(a.nativeElement,"position","static")}}class Y{constructor(t,e,n,a,r){this._picker=t,this._localeService=e,this._renderer=n,this._elRef=a,this.changeDetection=r,this._onChange=Function.prototype,this._onTouched=Function.prototype,this._validatorChange=Function.prototype,this._picker.bsValueChange.subscribe(t=>{let e=t;if(t){const n=this._localeService.currentLocale,a=Object(o.k)(n);if(!a)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);e=a.preinput(t)}this._setInputValue(e),this._value!==e&&(this._value=e,this._onChange(e),this._onTouched()),this.changeDetection.markForCheck()}),this._localeService.localeChange.subscribe(()=>{this._setInputValue(this._value)})}_setInputValue(t){const e=t?Object(o.f)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale):"";this._renderer.setProperty(this._elRef.nativeElement,"value",e)}onChange(t){this.writeValue(t.target.value),this._onChange(this._value),this._onTouched()}validate(t){const e=t.value;if(null==e||""===e)return null;if(Object(o.q)(e)){if(!Object(o.r)(e))return{bsDate:{invalid:e}};if(this._picker&&this._picker.minDate&&Object(o.p)(e,this._picker.minDate,"date"))return this.writeValue(this._picker.minDate),{bsDate:{minDate:this._picker.minDate}};if(this._picker&&this._picker.maxDate&&Object(o.n)(e,this._picker.maxDate,"date"))return this.writeValue(this._picker.maxDate),{bsDate:{maxDate:this._picker.maxDate}}}}registerOnValidatorChange(t){this._validatorChange=t}writeValue(t){if(t){const e=this._localeService.currentLocale;if(!Object(o.k)(e))throw new Error(`Locale "${e}" is not defined, please add it with "defineLocale(...)"`);this._value=Object(o.B)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale),this._picker._config.useUtc&&(this._value=Object(o.H)(this._value))}else this._value=null;this._picker.bsValue=this._value}setDisabledState(t){this._picker.isDisabled=t,t?this._renderer.setAttribute(this._elRef.nativeElement,"disabled","disabled"):this._renderer.removeAttribute(this._elRef.nativeElement,"disabled")}registerOnChange(t){this._onChange=t}registerOnTouched(t){this._onTouched=t}onBlur(){this._onTouched()}hide(){this._picker.hide(),this._renderer.selectRootElement(this._elRef.nativeElement).blur()}}class H extends h{constructor(){super(...arguments),this.displayMonths=2}}class U{}class W{}class K{}class ${constructor(t,e,n){this._config=t,this._elRef=e,this._renderer=n}ngOnInit(){this.day.isToday&&this._config&&this._config.customTodayClass&&this._renderer.addClass(this._elRef.nativeElement,this._config.customTodayClass),"string"==typeof this.day.customClasses&&this.day.customClasses.split(" ").filter(t=>t).forEach(t=>{this._renderer.addClass(this._elRef.nativeElement,t)})}}const Z=function(){var t={UP:0,DOWN:1};return t[t.UP]="UP",t[t.DOWN]="DOWN",t}();class J{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter}navTo(t){this.onNavigate.emit(t?Z.DOWN:Z.UP)}view(t){this.onViewMode.emit(t)}}class Q{constructor(t){this._config=t,this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter,this.onHoverWeek=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{month:Z.DOWN===t?-1:1}})}changeViewMode(t){this.onViewMode.emit(t)}selectDay(t){this.onSelect.emit(t)}selectWeek(t){if(!this._config.selectWeek)return;if(t.days&&t.days[0]&&!t.days[0].isDisabled&&this._config.selectFromOtherMonth)return void this.onSelect.emit(t.days[0]);if(0===t.days.length)return;const e=t.days.find(t=>this._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled);this.onSelect.emit(e)}weekHoverHandler(t,e){this._config.selectWeek&&t.days.find(t=>this._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled)&&(t.isHovered=e,this.isWeekHovered=e,this.onHoverWeek.emit(t))}hoverDay(t,e){this._config.selectFromOtherMonth&&t.isOtherMonth&&(t.isOtherMonthHovered=e),this.onHover.emit({cell:t,isHovered:e})}}class X{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:Z.DOWN===t?-1:1}})}viewMonth(t){this.onSelect.emit(t)}hoverMonth(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class tt{constructor(){this.ampm="ok",this.hours=0,this.minutes=0}}class et{constructor(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}navigateTo(t){this.onNavigate.emit({step:{year:16*(Z.DOWN===t?-1:1)}})}viewYear(t){this.onSelect.emit(t)}hoverYear(t,e){this.onHover.emit({cell:t,isHovered:e})}changeViewMode(t){this.onViewMode.emit(t)}}class nt{static forRoot(){return{ngModule:nt,providers:[c.a,d.a,M,p,h,H,F,V,m,b]}}}class at{format(t,e,n){return Object(o.f)(t,e,n)}}class rt{constructor(){this.selectionDone=new a.EventEmitter(void 0),this.update=new a.EventEmitter(!1),this.activeDateChange=new a.EventEmitter(void 0),this.stepDay={},this.stepMonth={},this.stepYear={},this.modes=["day","month","year"],this.dateFormatter=new at}get activeDate(){return this._activeDate}set activeDate(t){this._activeDate=t}ngOnInit(){this.uniqueId=`datepicker--${Math.floor(1e4*Math.random())}`,this.initDate?(this.activeDate=this.initDate,this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate)):void 0===this.activeDate&&(this.activeDate=new Date)}ngOnChanges(t){this.refreshView(),this.checkIfActiveDateGotUpdated(t.activeDate)}checkIfActiveDateGotUpdated(t){if(t&&!t.firstChange){const e=t.previousValue;e&&e instanceof Date&&e.getTime()!==t.currentValue.getTime()&&this.activeDateChange.emit(this.activeDate)}}setCompareHandler(t,e){"day"===e&&(this.compareHandlerDay=t),"month"===e&&(this.compareHandlerMonth=t),"year"===e&&(this.compareHandlerYear=t)}compare(t,e){if(void 0!==t&&void 0!==e)return"day"===this.datepickerMode&&this.compareHandlerDay?this.compareHandlerDay(t,e):"month"===this.datepickerMode&&this.compareHandlerMonth?this.compareHandlerMonth(t,e):"year"===this.datepickerMode&&this.compareHandlerYear?this.compareHandlerYear(t,e):void 0}setRefreshViewHandler(t,e){"day"===e&&(this.refreshViewHandlerDay=t),"month"===e&&(this.refreshViewHandlerMonth=t),"year"===e&&(this.refreshViewHandlerYear=t)}refreshView(){"day"===this.datepickerMode&&this.refreshViewHandlerDay&&this.refreshViewHandlerDay(),"month"===this.datepickerMode&&this.refreshViewHandlerMonth&&this.refreshViewHandlerMonth(),"year"===this.datepickerMode&&this.refreshViewHandlerYear&&this.refreshViewHandlerYear()}dateFilter(t,e){return this.dateFormatter.format(t,e,this.locale)}isActive(t){return 0===this.compare(t.date,this.activeDate)&&(this.activeDateId=t.uid,!0)}createDateObject(t,e){const n={};return n.date=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n.date=this.fixTimeZone(n.date),n.label=this.dateFilter(t,e),n.selected=0===this.compare(t,this.selectedDate),n.disabled=this.isDisabled(t),n.current=0===this.compare(t,new Date),n.customClass=this.getCustomClassForDate(n.date),n}split(t,e){const n=[];for(;t.length>0;)n.push(t.splice(0,e));return n}fixTimeZone(t){const e=t.getHours();return new Date(t.getFullYear(),t.getMonth(),t.getDate(),23===e?e+2:0)}select(t,e=!0){this.datepickerMode===this.minMode?(this.activeDate||(this.activeDate=new Date(0,0,0,0,0,0,0)),this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&this.selectionDone.emit(this.activeDate)):(this.activeDate=new Date(t.getFullYear(),t.getMonth(),t.getDate()),this.activeDate=this.fixTimeZone(this.activeDate),e&&(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)-1])),this.selectedDate=new Date(this.activeDate.valueOf()),this.update.emit(this.activeDate),this.refreshView()}move(t){let e;if("day"===this.datepickerMode&&(e=this.stepDay),"month"===this.datepickerMode&&(e=this.stepMonth),"year"===this.datepickerMode&&(e=this.stepYear),e){const n=this.activeDate.getFullYear()+t*(e.years||0),a=this.activeDate.getMonth()+t*(e.months||0);this.activeDate=new Date(n,a,1),this.refreshView(),this.activeDateChange.emit(this.activeDate)}}toggleMode(t){const e=t||1;this.datepickerMode===this.maxMode&&1===e||this.datepickerMode===this.minMode&&-1===e||(this.datepickerMode=this.modes[this.modes.indexOf(this.datepickerMode)+e],this.refreshView())}getCustomClassForDate(t){if(!this.customClass)return"";const e=this.customClass.find(e=>e.date.valueOf()===t.valueOf()&&e.mode===this.datepickerMode,this);return void 0===e?"":e.clazz}compareDateDisabled(t,e){if(void 0!==t&&void 0!==e)return"day"===t.mode&&this.compareHandlerDay?this.compareHandlerDay(t.date,e):"month"===t.mode&&this.compareHandlerMonth?this.compareHandlerMonth(t.date,e):"year"===t.mode&&this.compareHandlerYear?this.compareHandlerYear(t.date,e):void 0}isDisabled(t){let e=!1;return this.dateDisabled&&this.dateDisabled.forEach(n=>{0===this.compareDateDisabled(n,t)&&(e=!0)}),this.dayDisabled&&(e=e||this.dayDisabled.indexOf(t.getDay())>-1),e||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0}}class it{constructor(){this.locale="en",this.datepickerMode="day",this.startingDay=0,this.yearRange=20,this.minMode="day",this.maxMode="year",this.showWeeks=!0,this.formatDay="DD",this.formatMonth="MMMM",this.formatYear="YYYY",this.formatDayHeader="dd",this.formatDayTitle="MMMM YYYY",this.formatMonthTitle="YYYY",this.onlyCurrentMonth=!1,this.monthColLimit=3,this.yearColLimit=5,this.shortcutPropagation=!1}}class st{constructor(t){this.datepickerMode="day",this.showWeeks=!0,this.selectionDone=new a.EventEmitter(void 0),this.activeDateChange=new a.EventEmitter(void 0),this.onChange=Function.prototype,this.onTouched=Function.prototype,this._now=new Date,this.config=t,this.configureOptions()}get activeDate(){return this._activeDate||this._now}set activeDate(t){this._activeDate=t}configureOptions(){Object.assign(this,this.config)}onUpdate(t){this.activeDate=t,this.onChange(t)}onSelectionDone(t){this.selectionDone.emit(t)}onActiveDateChange(t){this.activeDateChange.emit(t)}writeValue(t){if(0!==this._datePicker.compare(t,this._activeDate))return t&&t instanceof Date?(this.activeDate=t,void this._datePicker.select(t,!1)):void(this.activeDate=t?new Date(t):void 0)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}}class ot{constructor(t){this.labels=[],this.rows=[],this.weekNumbers=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepDay={months:1},this.datePicker.setRefreshViewHandler((function(){const e=this.activeDate.getFullYear(),n=this.activeDate.getMonth(),a=new Date(e,n,1),r=this.startingDay-a.getDay(),i=r>0?7-r:-r,s=new Date(a.getTime());i>0&&s.setDate(1-i);const o=t.getDates(s,42),u=[];for(let t=0;t<42;t++){const e=this.createDateObject(o[t],this.formatDay);e.secondary=o[t].getMonth()!==n,e.uid=this.uniqueId+"-"+t,u[t]=e}t.labels=[];for(let l=0;l<7;l++)t.labels[l]={},t.labels[l].abbr=this.dateFilter(u[l].date,this.formatDayHeader),t.labels[l].full=this.dateFilter(u[l].date,"EEEE");if(t.title=this.dateFilter(this.activeDate,this.formatDayTitle),t.rows=this.split(u,7),this.showWeeks){t.weekNumbers=[];const e=(11-this.startingDay)%7,n=t.rows.length;for(let a=0;a<n;a++)t.weekNumbers.push(t.getISO8601WeekNumber(t.rows[a][e].date))}}),"day"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),a=new Date(e.getFullYear(),e.getMonth(),e.getDate());return n.getTime()-a.getTime()}),"day"),this.datePicker.refreshView()}getDates(t,e){const n=new Array(e);let a,r=new Date(t.getTime()),i=0;for(;i<e;)a=new Date(r.getTime()),a=this.datePicker.fixTimeZone(a),n[i++]=a,r=new Date(a.getFullYear(),a.getMonth(),a.getDate()+1);return n}getISO8601WeekNumber(t){const e=new Date(t.getTime());e.setDate(e.getDate()+4-(e.getDay()||7));const n=e.getTime();return e.setMonth(0),e.setDate(1),Math.floor(Math.round((n-e.getTime())/864e5)/7)+1}}class ut{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepMonth={years:1},this.datePicker.setRefreshViewHandler((function(){const e=new Array(12),n=this.activeDate.getFullYear();let a;for(let t=0;t<12;t++)a=new Date(n,t,1),a=this.fixTimeZone(a),e[t]=this.createDateObject(a,this.formatMonth),e[t].uid=this.uniqueId+"-"+t;t.title=this.dateFilter(this.activeDate,this.formatMonthTitle),t.rows=this.split(e,t.datePicker.monthColLimit)}),"month"),this.datePicker.setCompareHandler((function(t,e){const n=new Date(t.getFullYear(),t.getMonth()),a=new Date(e.getFullYear(),e.getMonth());return n.getTime()-a.getTime()}),"month"),this.datePicker.refreshView()}}class lt{constructor(t){this.rows=[],this.datePicker=t}get isBs4(){return!Object(f.d)()}ngOnInit(){const t=this;this.datePicker.stepYear={years:this.datePicker.yearRange},this.datePicker.setRefreshViewHandler((function(){const e=new Array(this.yearRange);let n;const a=t.getStartingYear(this.activeDate.getFullYear());for(let t=0;t<this.yearRange;t++)n=new Date(a+t,0,1),n=this.fixTimeZone(n),e[t]=this.createDateObject(n,this.formatYear),e[t].uid=this.uniqueId+"-"+t;t.title=[e[0].label,e[this.yearRange-1].label].join(" - "),t.rows=this.split(e,t.datePicker.yearColLimit)}),"year"),this.datePicker.setCompareHandler((function(t,e){return t.getFullYear()-e.getFullYear()}),"year"),this.datePicker.refreshView()}getStartingYear(t){return(t-1)/this.datePicker.yearRange*this.datePicker.yearRange+1}}class dt{static forRoot(){return{ngModule:dt,providers:[it]}}}},ijCd:function(t,e,n){var a=n("R/W3"),r=n("MMmD"),i=n("4qC0"),s=n("Sxd8"),o=n("P/G1"),u=Math.max;t.exports=function(t,e,n,l){t=r(t)?t:o(t),n=n&&!l?s(n):0;var d=t.length;return n<0&&(n=u(d+n,0)),i(t)?n<=d&&t.indexOf(e,n)>-1:!!d&&a(t,e,n)>-1}},insk:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");n("20UP");class r{constructor(t,e,n){this.sanitizer=t,this.settingsService=e,this.i18n=n,this.grafanaExist=!1,this.mode="&kiosk",this.loading=!0,this.styles={},this.dashboardExist=!0,this.icons=a.a,this.DEFAULT_TIME="from=now-1h&to=now",this.grafanaTimes=[{name:this.i18n("Last 5 minutes"),value:"from=now-5m&to=now"},{name:this.i18n("Last 15 minutes"),value:"from=now-15m&to=now"},{name:this.i18n("Last 30 minutes"),value:"from=now-30m&to=now"},{name:this.i18n("Last 1 hour (Default)"),value:"from=now-1h&to=now"},{name:this.i18n("Last 3 hours"),value:"from=now-3h&to=now"},{name:this.i18n("Last 6 hours"),value:"from=now-6h&to=now"},{name:this.i18n("Last 12 hours"),value:"from=now-12h&to=now"},{name:this.i18n("Last 24 hours"),value:"from=now-24h&to=now"},{name:this.i18n("Yesterday"),value:"from=now-1d%2Fd&to=now-1d%2Fd"},{name:this.i18n("Today so far"),value:"from=now%2Fd&to=now"},{name:this.i18n("Day before yesterday"),value:"from=now-2d%2Fd&to=now-2d%2Fd"},{name:this.i18n("Last 2 days"),value:"from=now-2d&to=now"},{name:this.i18n("This day last week"),value:"from=now-7d%2Fd&to=now-7d%2Fd"},{name:this.i18n("Previous week"),value:"from=now-1w%2Fw&to=now-1w%2Fw"},{name:this.i18n("This week so far"),value:"from=now%2Fw&to=now"},{name:this.i18n("Last 7 days"),value:"from=now-7d&to=now"},{name:this.i18n("Previous month"),value:"from=now-1M%2FM&to=now-1M%2FM"},{name:this.i18n("This month so far"),value:"from=now%2FM&to=now"},{name:this.i18n("Last 30 days"),value:"from=now-30d&to=now"},{name:this.i18n("Last 90 days"),value:"from=now-90d&to=now"},{name:this.i18n("Last 6 months"),value:"from=now-6M&to=now"},{name:this.i18n("Last 1 year"),value:"from=now-1y&to=now"},{name:this.i18n("Previous year"),value:"from=now-1y%2Fy&to=now-1y%2Fy"},{name:this.i18n("This year so far"),value:"from=now%2Fy&to=now"},{name:this.i18n("Last 2 years"),value:"from=now-2y&to=now"},{name:this.i18n("Last 5 years"),value:"from=now-5y&to=now"}]}ngOnInit(){this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three"},this.settingsService.ifSettingConfigured("api/grafana/url",t=>{this.grafanaExist=!0,this.loading=!1,this.baseUrl=t+"/d/",this.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]}getFrame(){this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(t=>this.dashboardExist=200===t),this.url=this.baseUrl+this.uid+"/"+this.grafanaPath+"&refresh=2s"+this.mode+"&"+this.time,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)}onTimepickerChange(){this.grafanaExist&&this.getFrame()}reset(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()}ngOnChanges(){this.grafanaExist&&this.getFrame()}}},iqWW:function(t,e,n){"use strict";var a=n("ZUd8").charAt;t.exports=function(t,e,n){return e+(n?a(t,e).length:1)}},itsj:function(t,e){t.exports=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}},iutN:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("8Y7J"),r=n("FE24"),i=n("GS7A"),s=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["ɵvid"](2,[(t()(),a["ɵeld"](0,0,null,null,1,"div",[],[[2,"dropup",null],[2,"dropdown",null],[2,"show",null],[2,"open",null]],null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"up"===n.direction,"down"===n.direction,n.isOpen,n.isOpen)}))}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-dropdown-container",[["style","display:block;position: absolute;"]],null,null,null,o,s)),a["ɵdid"](1,180224,null,0,r.b,[r.f,a.ChangeDetectorRef,a.Renderer2,a.ElementRef,i.b],null,null)],null,null)}var l=a["ɵccf"]("bs-dropdown-container",r.b,u,{},{},["*"])},j8L6:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm"),s=n("DqMs"),o=n("/NlG"),u=n("GiVz"),l=n("o4+5"),d=n("aXbf"),c=n("SVse");n("b5OY"),n("pxLl"),n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return b}));var f=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function h(t){return a["ɵvid"](0,[(t()(),a["ɵted"](0,null,[" "," "," "])),a["ɵppd"](1,1)],null,(function(t,e){var n=a["ɵunv"](e,0,0,t(e,1,0,a["ɵnov"](e.parent.parent,0),e.context.row.value));t(e,0,0,n,e.context.row.unit)}))}function g(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getCounters(n)&&a),a}),r.b,r.a)),a["ɵdid"](1,2867200,null,0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},{fetchData:"fetchData"}),(t()(),a["ɵand"](0,[[1,2],["valueTpl",2]],null,0,null,h))],(function(t,e){var n=e.component;t(e,1,0,n.counters,n.columns,"flex",!1)}),null)}function p(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,s.b,s.a)),a["ɵdid"](1,114688,null,0,o.a,[u.a],{type:[0,"type"]},null),(t()(),a["ɵted"](-1,0,["Performance counters not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function b(t){return a["ɵvid"](0,[a["ɵpid"](0,l.a,[d.a]),a["ɵqud"](671088640,1,{valueTpl:0}),(t()(),a["ɵand"](16777216,null,null,1,null,g)),a["ɵdid"](3,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["ɵand"](0,[["warning",2]],null,0,null,p))],(function(t,e){t(e,3,0,e.component.counters,a["ɵnov"](e,4))}),null)}},"jKX/":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));class a{constructor(t=[]){["read","create","update","delete"].forEach(e=>this[e]=t.includes(e))}}class r{constructor(t){this.hosts=new a(t.hosts),this.configOpt=new a(t["config-opt"]),this.pool=new a(t.pool),this.osd=new a(t.osd),this.monitor=new a(t.monitor),this.rbdImage=new a(t["rbd-image"]),this.iscsi=new a(t.iscsi),this.rbdMirroring=new a(t["rbd-mirroring"]),this.rgw=new a(t.rgw),this.cephfs=new a(t.cephfs),this.manager=new a(t.manager),this.log=new a(t.log),this.user=new a(t.user),this.grafana=new a(t.grafana),this.prometheus=new a(t.prometheus),this.nfs=new a(t["nfs-ganesha"])}}},jUeY:function(t,e,n){!function(t){"use strict";t.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return t?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,n){return t>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(t){return"μ"===(t+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,e){var n,a=this._calendarEl[t],r=e&&e.hours();return((n=a)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(a=a.apply(e)),a.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("wd/R"))},jV1L:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-expander",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <span\n        *ngIf="node.hasChildren"\n        [class.toggle-children-wrapper-expanded]="node.isExpanded"\n        [class.toggle-children-wrapper-collapsed]="node.isCollapsed"\n        class="toggle-children-wrapper"\n        (click)="node.mouseAction(\'expanderClick\', $event)"\n      >\n        <span class="toggle-children"></span>\n      </span>\n      <span *ngIf="!node.hasChildren" class="toggle-children-placeholder">\n      </span>\n    </ng-container>\n  '})],t)}()},jVDg:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n){this.poolName=t,this.namespace=e,this.imageName=n}static fromString(t){const e=t.split("/");return new this(e[0],e.length>=3?e[1]:null,e.length>=3?e[2]:e[1])}getNameSpace(){return this.namespace?`${this.namespace}/`:""}toString(){return`${this.poolName}/${this.getNameSpace()}${this.imageName}`}toStringEncoded(){return encodeURIComponent(`${this.poolName}/${this.getNameSpace()}${this.imageName}`)}}},jVdC:function(t,e,n){!function(t){"use strict";var e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function a(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function r(t,e,n){var r=t+" ";switch(n){case"ss":return r+(a(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return r+(a(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return r+(a(t)?"godziny":"godzin");case"MM":return r+(a(t)?"miesiące":"miesięcy");case"yy":return r+(a(t)?"lata":"lat")}}t.defineLocale("pl",{months:function(t,a){return t?""===a?"("+n[t.month()]+"|"+e[t.month()]+")":/D MMMM/.test(a)?n[t.month()]:e[t.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},jZKg:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n("HDdC"),r=n("quSY");function i(t,e){return new a.a(n=>{const a=new r.a;let i=0;return a.add(e.schedule((function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()}))),a})}},jeLo:function(t,e,n){var a=n("juv8"),r=n("mTTR");t.exports=function(t){return a(t,r(t))}},jfSC:function(t,e,n){!function(t){"use strict";var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};t.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(t){return/بعد از ظهر/.test(t)},meridiem:function(t,e,n){return t<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("wd/R"))},jnO4:function(t,e,n){!function(t){"use strict";var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(t){return function(e,n,i,s){var o=a(e),u=r[t][a(e)];return 2===o&&(u=u[n?0:1]),u.replace(/%d/i,e)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];t.defineLocale("ar",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("wd/R"))},jqst:function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="id-ID">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Pengalih navigasi</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Dasbor</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Klaster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Konfigurasi</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Log</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Blok</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Pencerminan</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemfile</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Buket</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Pilih bahasa</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Memuat data panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Pemilih Waktu Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Reset Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Kembali</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Gagal memuat data.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>dipilih</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>ditemukan</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nama</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Deskripsi</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Deskripsi lengkap</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Bawaan</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon bawaan</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Simpan</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Penampil peta CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Memuat...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nama hos</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Isian ini tidak boleh kosong.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Ya, saya yakin.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Batal</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Tutup</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Daftar Hos</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performa Keseluruhan</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Entri tidak ditemukan</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Log Klaster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Log Audit</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Memuat konfigurasi...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Konfigurasi tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edit modul Ceph Manajer</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>Nilai yang dimasukkan bukan UUID yang valid, cth: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>Nilai yang dimasukkan harus alamat IP yang valid.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>Nilai yang dimasukkan harus berupa angka.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>Nilai yang dimasukkan harus berupa angka atau desimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Perbarui</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Status</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID Klaster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap diubah</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap epoch</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>kuorum con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kuorum mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon yang dibutuhkan</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Memenuhi Kuorum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Tidak dalam Kuorum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Tambah</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fitur</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD Klaster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Kirim</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Tingkat lanjut...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioritas pemulihan OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioritas</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Ubah nilai prioritas</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Isian ini harus diisi!</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>Nilai harus antara 0 dan 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ubah bobot</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Dalam } }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {dalam } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Daftar OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Nilai</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edit</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Hapus</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Kesehatan</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Statistik </target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Klien</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Semua klien dapat mengakses</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Alamat</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Wajib diisi</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Harus mengandung satu atau lebih nilai yang dipisahkan koma</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Contoh:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipe Akses</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Squash</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Tambah klien</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Klaster tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Pilih klaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Tambah daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Backend Penyimpanan</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Tidak ada pool data tersedia --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Pilih backend penyimpanan --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Pengguna Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Pengguna tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Pilih pengguna gerbang objek --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Klien tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Pilih klien cephx --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nama CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Label Keamanan</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Aktifkan label keamanan</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS Path</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>Lintasan atau path harus dimulai dengan \'/\' dan diikuti dengan kata</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Direktori baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Path</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>Path hanya boleh berupa \'/\' atau kata</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Buket baru akan dibuat</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protokol NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Tag NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Klien mungkin tidak dapat mount subdirektori (cth. jika Tag = foo, klien mungkin tidak bisa mount foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Tag yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Dengan menggunakan opsi Pseudo yang berbeda, Path yang sama akan diekspor beberapa kali.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Tipe akses tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Pilih tipe akses --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Squash tidak tersedia --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protokol Transport</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Selamat datang di Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>Nama pengguna harus diisi</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Kata sandi harus diisi</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Masuk</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Maaf, pengguna tidak terdaftar di Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Terlarang</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Maaf, Anda tidak dizinkan melihat hal yang Anda inginkan.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Konfigurasi RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Menghapus nilai konfigurasi lokal. Nilai konfigurasi induk akan diturun dan digunakan.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Nilai minimum adalah 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Daftar pool</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nama hanya boleh terdiri dari alfanumerik, tanda hubung, dan garis bawah.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>Nama profil erasure code sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Plugin</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Pecahan data (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Harus sama dengan atau lebih dari 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Pecahan Coding (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Harus sama dengan atau lebih dari 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Penduga daya tahan (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalitas (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domain kegagalan Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Lokalitas Crush</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Tidak ada</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Teknik</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Ukuran paket</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush root</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Kelas perangkat Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>apa saja</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Direktori</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nama...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>Nama pool Ceph yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Jenis pool</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Pilih jenis pool --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grup penempatan</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Dibutuhkan setidaknya satu grup penempatan!</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>Klaster Anda tidak dapat menangani PG sebanyak ini. Mohon hitung ulang jumlah PG yang dibutuhkan.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Bantuan penghitungan</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Jumlah replikasi</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Flag</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC Overwrites</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplikasi</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Tidak ada profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Pilih profil erasure code --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Aturan CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Pilih aturan crush --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Aturan crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush steps</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Kompresi</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Mode</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritma</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- Tidak ada algoritma pengompresian erasure --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Ukuran blob minimum</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>cth. 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>Nilai harus lebih besar dari 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Ukuran maksimum blob</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>cth. 512KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>Nilai harus lebih besar dari ukuran minimum blob</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Rasio</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Rasio kompresi</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>Nilai harus antara 0.0 dan 1.0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>cth. 10GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detail</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detail Performa</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detil Cache Bertingkat</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Pindahkan image ke tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Proteksi berakhir pada</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Format tanggal salah. Mohon gunakan "TTTT-BB-HH JJ:mm:dd".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>Proteksi telah kedaluarsa. Mohon pilih tanggal masa mendatang atau kosongkan.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Pindahkan Image</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Ikhtisar</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Otentikasi Discovery</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Pengguna</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri dari 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Kata sandi</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Pengguna Bersama</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Kata sandi bersama</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informasi tersedia:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI Target tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Pool Data</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Dibuat</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Ukuran</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objek</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Ukuran objek</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Disiapkan</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/A</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total disiapkan</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Induk</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Awalan nama blok</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Urutan</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Snapshot</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Pengaturan ini akan membatalkan nilai global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Ini adalah nilai global. Tidak ada nilai yang diset untuk image ini.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' dan \'@\' tidak diperbolehkan.</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Tidak ada pool rbd tersedia --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pilih pool --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Gunakan pool data terdedikasi</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Pool data</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Pool terdedikasi yang menyimpan data-objek dari RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Anda harus menaikkan ukuran.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Tingkat lanjut</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Setrip</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit setrip</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Pilih ukuran setrip --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Isian ini harus diisi karena jumlah setrip telah ditentukan!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>Unit setrip lebih besar dari ukuran objek.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Jumlah setrip</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Isian wajib diisi karena unit setrip didefinisikan!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>Jumlah setrip harus lebih besar dari 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Anda akan mengembalikan semula</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Kosongkan Tempah Sampah</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Semua</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Pool:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nama Pool...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Pulihkan Image</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Untuk memulihkan</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>ketik nama baru image dan pilih</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nama Baru</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Kedaluwarsa pada</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Diproteksi hingga</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topologi iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Mengganti parameter ini dari nilai bawaan biasanya tidak diperlukan.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Pengaturan</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Backstore</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Konfirmasi</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pengaturan Lanjut</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>Target IQN</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Pola IQN salah.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Contoh: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Informasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Pengaturan lanjutan target ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portal</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Tambahkan portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Pengaturan Image ini telah dimodifikasi.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Tambahkan image</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Otentikasi ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inisiator</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>Klien IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>Inisiator IQN harus unik.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Nama pengguna harus terdiri atas 8 hingga 64 karakter dan\nhanya boleh mengandung huruf, \'.\', \'@\', \'-\', \'_\' atau \':\'.</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Inisiator termasuk ke dalam grup. Image akan dikonfigurasi di dalam grup.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Tidak ada yang ditambahkan.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Tambahkan inisiator</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grup</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Tambahkan grup</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Tempat sampah</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Masalah</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Menyinkronkan</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Siap</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Edit mode pencerminan pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Klaster mitra harus dihapus sebelum menonaktfikan pencerminan.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Edit} other {Tambah} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nama Klaster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>Nama klaster tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX ID</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX ID...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX ID tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Alamat Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Alamat dengan pemisah-koma...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Alamat monitor tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX Key</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-encoded key...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Kunci CephX harus base64 encoded.</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Penghitung kinerja tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Daftar Daemon</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Penghitung Performa</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Memuat data buket...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>Id</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>Nilai tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Nama yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Pemilik</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Pilih pengguna --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Diaktifkan</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Jenis indeks</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Aturan penempatan</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Penanda</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Penanda maksimum</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versi</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versi Master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Modifikasi waktu</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Zona grup</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kuota Buket</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Ukuran maksimum</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Objek maksimum</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nama pengguna</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Pilih nama pengguna --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Kunci otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Kunci akses</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Kunci rahasia</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nama lengkap</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Alamat email</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Dihentikan</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistem</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Buket maksimum</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Kemampuan</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kuota pengguna</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Tampilkan</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipe</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Pilih tipe --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Pilih izin --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subpengguna</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>ID subpengguna sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>baca, tulis</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>penuh</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Kunci Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Sandi otomatis-dibuat</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Memuat data pengguna...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>Data pengguna tidak dapat dimuat.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>ID pengguna yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Ini bukan alamat email yang valid.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>Alamat email yang dipilih sudah digunakan.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Maks. buket</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Dimatikan</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Ubahsuai</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Kunci S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Tidak ada sub-pengguna.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>Kunci tidak ditemukan.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Kemampuan tidak ada.</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Ukuran tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Ukuran maks.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objek tak terbatas</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objek maks.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Nilai yang dimasukkan harus &gt;= 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Deskripsi...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Izin</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Peran</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Konfirmasi kata sandi</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Konfirmasi kata sandi tidak sesuai dengan kata sandi.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Email</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Email tidak valid.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Anda akan menghapus izin "pengguna baca / perbarui" dari diri Anda sendiri.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Jika melanjutkan, Anda tidak akan lagi dapat menambahkan atau menghapus peran dari pengguna manapun.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Anda yakin ingin melanjutkan?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Bantuan</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Dokumentasi </target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Tentang</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Pengaturan Dasbor</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Manajemen Pengguna</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Pengguna masuk</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Keluar</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atribut (peta OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Metadata tidak tersedia</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadata</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Penghitung kinerja</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Tulis</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histogram</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Min</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Maks</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Sumber</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Level</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Boleh diperbarui saat dijalankan (bisa diedit)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Tag</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Nilai Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Lihat juga</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Status Klaster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Manajer Daemon</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Gerbang Objek</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Server Metadata</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Gateway iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS klien</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Throughput Pengguna</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Baca/Tulis Klien</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Scrub</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Kinerja</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Kapasitas mentah</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>PG per OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Status PG</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Kapasitas</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Terkini</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Otentikasi penemuan telah diperbarui</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Tidak ada portal yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Tidak ada image yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>Tidak ada image yang tersedia. Mohon pastikan Anda telah menambahkan image ke target.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>Tidak ada inisiator tersedia. Mohon pastikan Anda telah menambahkan inisiator ke target.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Target</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Keadaan</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Baca Bytes</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Tulis Bytes</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Ops Baca</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Ops Tulis</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O Sejak</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instance</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Isu</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Kemajuan</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode Edit</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Tambahkan Mitra</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Edit Mitra</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Hapus Mitra</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Pemimpin</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># Lokal</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># Jauh</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>mitra pencerminan</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Kunci</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Perataan mendalam</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Lapisan</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Kunci eksklusif</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Peta objek (butuh kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Penjurnalan (membutuhkan kunci-eksklusif)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>TIDAK DIPROTEKSI</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Kembalikan snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Kembalikan</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Snapshot RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Dihapus pada</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>id</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipe</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>keadaan</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versi</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Hos</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>induk</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon siaga</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Peringkat</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Aktivitas</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inode</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Penggunaan</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Diperbarui</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Nilai dapat diperbarui saat runtime.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Daemon/klien tidak dapat mengambil nilai dari\nbasis data konfigurasi monitor. Kami tidak mengizinkan mengubah ini dari \'ceph config\nset ...\'. Pilihan ini harus dikonfigurasi melalui ceph.conf atau CLI.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>Pilihan hanya dapat bekerja selama daemon dimulai.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan klaster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Pilihan hanya berpengaruh pada pembuatan daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Layanan</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Nilai saat ini</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Dapat diedit</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Aktifkan</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Nonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Menghubungkan kembali, mohon tunggu...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Alamat Publik</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Buka Sesi</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Tidak boleh Masuk</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>OSD yang telah ditandai keluar tidak akan ditandai masuk saat mereka menyala</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Tidak boleh Keluar</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>OSD tidak akan otomatis ditandai keluar setelah interval dikonfigurasi</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Tidak Nyala</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD tidak diizinkan menyala</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Tidak Mati</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Laporan kegagalan OSD sedang diabaikan sehingga monitor tidak akan menandai OSD mati</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Jeda</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Jeda baca dan tulis</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Nonaktifkan Scrub</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Scrubbing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nonaktifkan Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Deep Scrubing dinonaktifkan</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>Tidak ada Penambalan</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Penambalan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Tidak ada Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Pemulihan PG dihentikan</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Urutan Bitwise</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Gunakan urutan bitwise</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Buang Snapdirs</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD memiliki snapset yang dikonversi</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Pulihkan yang telah dihapus</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Penghapusan dilakukan saat pemulihan bukan saat bermitra</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Batas Maks Log PG</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Taruh batas maks pada panjang log pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Flag OSD diperbarui</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>keluar</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>masuk</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>gugur</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Tandai</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD hilang</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>ditandai hilang</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Buang</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>dibuang</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>hancurkan</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>dihancurkan</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>hapus</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>PG</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bita baca</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bita tulis</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Ops baca</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Ops tulis</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Maks Penambalan</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Maks Pemulihan Aktif</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Maks Menjalankan Pemulihan Tunggal</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Jeda Pemulihan</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Tugas</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Keparahan</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Dimulai</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Terpakai</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Tersedia</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Bersih</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Bekerja</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Peringatan</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Tidak diketahui</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>nyala</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>tidak ada filesistem</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktif</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>siaga</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon aktif</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kuorum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Layanan NFS Ganesha belum dikonfigurasi.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transport</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Pengguna CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Filesistem CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(diturunkan dari konfig global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>diturunkan dari konfig global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Pilih jenis squashing id pengguna yang akan dilakukan --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Tidak ada daemon tersedia.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Mode Cache</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Min Waktu Usir</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min Waktu Buang</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Target Maks Bita</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Target Maks Objek</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Tidak ada aplikasi ditambahkan</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Batas aplikasi tercapai</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Sebuah pool hanya dapat memiliki empat definisi aplikasi.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Karakter diperbolehkan \'_a-zA-Z0-9\'</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Panjang maksimum 128 karakter</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Saring atau tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Tambah aplikasi</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil erasure code</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Ukuran Replikasi</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Perubahan Terakhir</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil Erasure Code</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Aturan Crush</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>buket</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>pengguna</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Cakupan</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Baca</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Buat</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Peran Sistem</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Perbarui pengguna</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Lanjutkan</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>Anda dikeluarkan otomatis karena peran Anda telah berubah.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Tiap objek dipecah dalam pecahan-data, masing-masing disimpan pada OSD yang berbeda.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Hitung pecahan coding untuk tiap objek dan simpan pada OSD yang berbeda.\nJumlah pecahan data juga menjadi jumlah OSD yang diperbolehkan mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>Plugin jerasure merupakan plugin paling umum dan fleksibel,\nserta merupakan plugin bawaan Ceph untuk pool erasure code.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>Teknik yang lebih fleksibel yaitu reed_sol_van : cukup mengeset k\ndan m. Teknik cauchy_good bisa lebih cepat, namun Anda harus memilih ukuran paket\ndengan seksama. Semua reed_sol_r6_op, liberation, blaum_roth, liber8tion setara dengan RAID6\ndalam hal mereka hanya bisa diatur dengan m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>Penyandian dilakukan setiap saat pada ukuran bita paket.\nSulit untuk menentukan ukuran paket yang tepat.\nSilakan cek dokumentasi jerasure untuk informasi lebih mendalam.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Pada plugin jerasure, saat objek dengan erasure code disimpan pada\nbanyak OSD, pemulihan dari OSD yang hilang membutuhkan akses dari OSD lainnya.\nContoh, saat jerasure dikonfigurasi dengan k=8 dan m=4, saat satu OSD mati, maka pemulihan akan membutuhkan pembacaan dari tujuh OSD lainnya.\n\nPlugin lrc erasure code membuat pecahan paritas lokal agar dapat memulihkan \ndengan OSD yang lebih sedikit. Contoh, jika lrc dikonfigurasi dengan k=8, m=4, dan l=4, maka lrc akan\nmembuat pecahan paritas tambahan tiap empat OSD. Saat satu OSD mati, maka pemulihan dapat dilakukan hanya dengan 4 OSD, alih-alih 7 OSD.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Kelompokkan pecahan data dan coding ke dalam ukuran lokalitas. Controh\nuntuk k=4 dan m=2, saat lokalitas=3 dua grup dari tiga akan dibuat. Setiap set akan\ndipulihkan tanpa membaca pecahan dari set lainnya.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>Tipe buket crush setiap set pecahan yang didefinisikan oleh l  \nakan disimpan. Contoh, jika diset pada rak, tiap grup pecahan l akan \nditempatkan pada rak berbeda. Ini akan digunakan pada aturan step CRUSH yaitu \nmemilih tiap rak. Jika tidak diset, tidak akan ada pengelompokkan.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>Plugin isa menghimpun perpustakaan ISA. Hanya dapat berjalan pada prosesor Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>Plugin ISA memiliki dua jenis Reed Solomon.\nJika reed_sol_van diset, maka menjadi Vandermonde, jika cauchy diset, maka menjadi Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>Plugin shec mengenkapsulasi banyak pustaka SHEC.\nHal ini agar ceph dapat dipulihkan dengan lebih efisien dari kode Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>Jumlah potongan paritas yang masing-masing mencakup setiap potongan data \ndalam rentang perhitungannya. Nilai ini digunakan untuk perkiraan daya tahan. Contoh, jika c=2, \n2 OSD dapat mati tanpa kehilangan data.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>Nama buket crush digunakan sebagai langkah pertama dari aturan CRUSH.\nContoh diambil langkah bawaan.</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Memastikan tidak ada pecahan data berada pada buket dengan domain kegagalan\nyang sama. Contoh, saat domain gagal adalah hos, maka tidak ada pecahan data yang akan disimpan \npada hos yang sama. Aturan CRUSH seperti step chooseleaf hos akan digunakan untuk hal tersebut.</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Batasi penempatan ke perangkat dengan kelas tertentu\n(cth. ssd atau hdd), menggunakan nama kelas perangkat crush pada peta CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Set nama direktori empat plugin erasure code akan dimuat.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Izinkan semua operasi</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Izinkan hanya untuk operasi yang tidak mengubah server</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>Tidak diizinkan untuk operasi baca dan tulis, namun izinkan operasi lainnya</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>Tidak diizinkan untuk baca, tulis, atau operasi lainnya yang mengubah atribut berkas atau konten direktori</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Tidak diizinkan untuk semua hal</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Pilih prioritas --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Rendah</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Tinggi</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informasi</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>5 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>15 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>30 menit terakhir</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>1 Jam Terakhir (Bawaan)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>3 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>6 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>12 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>24 jam terakhir</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Kemarin</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hari ini</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Sejauh hari ini</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Kemarin dulu</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>2 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Hari ini minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Minggu lalu</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Minggu ini</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Sejauh minggu ini</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>7 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>Bulan lalu</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Bulan ini</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Sejauh bulan ini</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>30 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>90 hari terakhir</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>6 bulan terakhir</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>1 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>Tahun lalu</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Tahun ini</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Sejauh tahun ini</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>2 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>5 tahun terakhir</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Tidak ada yang dipilih.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Batalkan memilih untuk memilih ulang</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Batas pemilihan tercapai</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Tanda penyaringan</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Tambahkan lencana</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Tidak ada yang tersedia.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klon</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Salin</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Deep Scrub</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Hancurkan</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Ratakan</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Tandai Gugur</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Tandai Masuk</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Tandai Hilang</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Tandai Keluar</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteksi</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Ubah nama</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Pulihkan</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Pindahkan ke Tempat Sampah</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Tidak diproteksi</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Dihapus</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Diklon</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Disalin</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Diratakan</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Dibuang</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Dipulihkan</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Dikembalikan</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Ya</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>Tidak</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kualitas Layanan atau QoS</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Limit BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>Limit IO bytes per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Limit IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>Limit operasi IO per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Limit Baca BPS </target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>Limit byte baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Limit IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>Limit operasi baca per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Limit Tulis BPS</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>Limit tulis byte per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Limit IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>Limit operasi tulis per detik yang diinginkan.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Letupan BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari IO byte.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Letupan IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi IO.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Letupan Baca BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari baca byte.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Letupan IOPS Baca</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Letupan BPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari tulis byte.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Letupan IOPS Tulis</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Limit yang diinginkan untuk letupan atau burst dari operasi baca.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Mengeksekusi</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>eksekusi</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Dieksekusi</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tugas tak diketahui</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Membuat</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>buat</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Memperbarui</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>perbarui</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Menghapus</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Pengklonan</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>klon</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Menyalin</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>salin</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Meratakan</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>ratakan</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Mengembalikan</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>kembalikan</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Memindahkan</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>pindah</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>dipindahkan</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Tidak dapat menemukan image.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Memulihkan</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>pulihkan</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Membuang</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>buang</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>semua pool</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>Gagal menonaktifkan pencerminan karena sedang bermitra.</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},jtHE:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n("XNiG"),r=n("qgXg"),i=n("quSY"),s=n("pxpQ"),o=n("9ppp"),u=n("Ylt2");class l extends a.a{constructor(t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,n){super(),this.scheduler=n,this._events=[],this._infiniteTimeWindow=!1,this._bufferSize=t<1?1:t,this._windowTime=e<1?1:e,e===Number.POSITIVE_INFINITY?(this._infiniteTimeWindow=!0,this.next=this.nextInfiniteTimeWindow):this.next=this.nextTimeWindow}nextInfiniteTimeWindow(t){const e=this._events;e.push(t),e.length>this._bufferSize&&e.shift(),super.next(t)}nextTimeWindow(t){this._events.push(new d(this._getNow(),t)),this._trimBufferThenGetEvents(),super.next(t)}_subscribe(t){const e=this._infiniteTimeWindow,n=e?this._events:this._trimBufferThenGetEvents(),a=this.scheduler,r=n.length;let l;if(this.closed)throw new o.a;if(this.isStopped||this.hasError?l=i.a.EMPTY:(this.observers.push(t),l=new u.a(this,t)),a&&t.add(t=new s.a(t,a)),e)for(let i=0;i<r&&!t.closed;i++)t.next(n[i]);else for(let i=0;i<r&&!t.closed;i++)t.next(n[i].value);return this.hasError?t.error(this.thrownError):this.isStopped&&t.complete(),l}_getNow(){return(this.scheduler||r.a).now()}_trimBufferThenGetEvents(){const t=this._getNow(),e=this._bufferSize,n=this._windowTime,a=this._events,r=a.length;let i=0;for(;i<r&&!(t-a[i].time<n);)i++;return r>e&&(i=Math.max(i,r-e)),i>0&&a.splice(0,i),a}}class d{constructor(t,e){this.time=t,this.value=e}}},juv8:function(t,e,n){var a=n("MrPd"),r=n("hypo");t.exports=function(t,e,n,i){var s=!n;n||(n={});for(var o=-1,u=e.length;++o<u;){var l=e[o],d=i?i(n[l],t[l],l,n,t):void 0;void 0===d&&(d=t[l]),s?r(n,l,d):a(n,l,d)}return n}},"k+1r":function(t,e,n){var a=n("QkVE");t.exports=function(t){var e=a(this,t).delete(t);return this.size-=e?1:0,e}},kEOa:function(t,e,n){!function(t){"use strict";var e={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};t.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(t){return t.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(t,e){return 12===t&&(t=0),"রাত"===e&&t>=4||"দুপুর"===e&&t<5||"বিকাল"===e?t+12:t},meridiem:function(t,e,n){return t<4?"রাত":t<10?"সকাল":t<17?"দুপুর":t<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("wd/R"))},kJI8:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},kJWO:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")()},kOOl:function(t,e){var n=0,a=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+a).toString(36)}},kOpN:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("wd/R"))},kRJp:function(t,e,n){var a=n("g6v/"),r=n("m/L8"),i=n("XGwC");t.exports=a?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},kekF:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},kmMV:function(t,e,n){"use strict";var a,r,i=n("rW0t"),s=n("n3/R"),o=RegExp.prototype.exec,u=String.prototype.replace,l=o,d=(r=/b*/g,o.call(a=/a/,"a"),o.call(r,"a"),0!==a.lastIndex||0!==r.lastIndex),c=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(d||f||c)&&(l=function(t){var e,n,a,r,s=this,l=c&&s.sticky,h=i.call(s),g=s.source,p=0,b=t;return l&&(-1===(h=h.replace("y","")).indexOf("g")&&(h+="g"),b=String(t).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==t[s.lastIndex-1])&&(g="(?: "+g+")",b=" "+b,p++),n=new RegExp("^(?:"+g+")",h)),f&&(n=new RegExp("^"+g+"$(?!\\s)",h)),d&&(e=s.lastIndex),a=o.call(l?n:s,b),l?a?(a.input=a.input.slice(p),a[0]=a[0].slice(p),a.index=s.lastIndex,s.lastIndex+=a[0].length):s.lastIndex=0:d&&a&&(s.lastIndex=s.global?a.index+a[0].length:e),f&&a&&a.length>1&&u.call(a[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(a[r]=void 0)})),a}),t.exports=l},"kn/O":function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n("HDdC"),r=n("mtw6"),i=n("G1I9"),s=n("QTAa"),o=n("9nlD"),u=n("mSOc"),l=n("VXsX"),d=n("ufoC"),c=n("8Y7J");let f=(()=>{class t{constructor(t,e,n,a){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.taskManagerService=a}wrapTaskAroundCall({task:t,call:e}){return new a.a(n=>{e.subscribe(e=>{202===e.status?this._handleExecutingTasks(t):(this.summaryService.refresh(),t.success=!0,this.notificationService.notifyTask(t))},e=>{t.success=!1,t.exception=e.error,n.error(e)},()=>{n.complete()})})}_handleExecutingTasks(t){const e=new i.b(r.a.info,this.taskMessageService.getRunningTitle(t));e.isFinishedTask=!0,this.notificationService.show(e);const n=new s.a(t.name,t.metadata);this.summaryService.addRunningTask(n),this.taskManagerService.subscribe(n.name,n.metadata,t=>{this.notificationService.notifyTask(t)})}}return t.ngInjectableDef=c["ɵɵdefineInjectable"]({factory:function(){return new t(c["ɵɵinject"](o.a),c["ɵɵinject"](u.a),c["ɵɵinject"](d.a),c["ɵɵinject"](l.a))},token:t,providedIn:"root"}),t})()},kvvV:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("t/zF");class r extends a.a{}},l5ep:function(t,e,n){!function(t){"use strict";t.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(t){var e="";return t>20?e=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(e=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),t+e},week:{dow:1,doy:4}})}(n("wd/R"))},l7GE:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");class r extends a.a{notifyNext(t,e,n,a,r){this.destination.next(e)}notifyError(t,e){this.destination.error(t)}notifyComplete(t){this.destination.complete()}}},lJxs:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){if("function"!=typeof t)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new i(t,e))}}class i{constructor(t,e){this.project=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.project,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.project=e,this.count=0,this.thisArg=n||this}_next(t){let e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}},lMq5:function(t,e,n){var a=n("0Dky"),r=/#|\.prototype\./,i=function(t,e){var n=o[s(t)];return n==l||n!=u&&("function"==typeof e?a(e):!!e)},s=i.normalize=function(t){return String(t).replace(r,".").toLowerCase()},o=i.data={},u=i.NATIVE="N",l=i.POLYFILL="P";t.exports=i},"lOp/":function(t,e,n){"use strict";var a=n("PqYM"),r=n("pxpQ"),i=n("eIep"),s=n("jtHE"),o=n("D0XW"),u=n("8Y7J");class l{constructor(t){this.zone=t,this.scheduler=o.a}now(){return this.scheduler.now()}}let d=(()=>{class t extends l{constructor(t){super(t)}schedule(...t){return this.zone.runOutsideAngular(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](u.NgZone))},token:t,providedIn:"root"}),t})(),c=(()=>{class t extends l{constructor(t){super(t)}schedule(...t){return this.zone.run(()=>this.scheduler.schedule.apply(this.scheduler,t))}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](u.NgZone))},token:t,providedIn:"root"}),t})(),f=(()=>{class t{constructor(t,e){this.leave=t,this.enter=e}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](d),u["ɵɵinject"](c))},token:t,providedIn:"root"}),t})();n.d(e,"a",(function(){return h}));let h=(()=>{class t{constructor(t){this.ngZone=t,this.DEFAULT_REFRESH_INTERVAL=5e3,this.DEFAULT_DUE_TIME=0}get(t,e=this.DEFAULT_REFRESH_INTERVAL,n=this.DEFAULT_DUE_TIME){return Object(a.a)(n,e,this.ngZone.leave).pipe(Object(r.b)(this.ngZone.enter),Object(i.a)(t),function(t,e,n){let a;return a=t&&"object"==typeof t?t:{bufferSize:t,windowTime:void 0,refCount:!1,scheduler:void 0},t=>t.lift(function({bufferSize:t=Number.POSITIVE_INFINITY,windowTime:e=Number.POSITIVE_INFINITY,refCount:n,scheduler:a}){let r,i,o=0,u=!1,l=!1;return function(d){o++,r&&!u||(u=!1,r=new s.a(t,e,a),i=d.subscribe({next(t){r.next(t)},error(t){u=!0,r.error(t)},complete(){l=!0,i=void 0,r.complete()}}));const c=r.subscribe(this);this.add(()=>{o--,c.unsubscribe(),i&&!l&&n&&0===o&&(i.unsubscribe(),i=void 0,r=void 0)})}}(a))}({refCount:!0,bufferSize:1}))}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](f))},token:t,providedIn:"root"}),t})()},lQqw:function(t,e,n){var a=n("MMmD");t.exports=function(t,e){return function(n,r){if(null==n)return n;if(!a(n))return t(n,r);for(var i=n.length,s=e?i:-1,o=Object(n);(e?s--:++s<i)&&!1!==r(o[s],s,o););return n}}},lSCD:function(t,e,n){var a=n("NykK"),r=n("GoyQ");t.exports=function(t){if(!r(t))return!1;var e=a(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},lXzo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"минута":"минуту":t+" "+(a=+t,r={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];t.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:e,m:e,mm:e,h:"час",hh:e,d:"день",dd:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночи":t<12?"утра":t<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:4}})}(n("wd/R"))},lYtQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"хэдхэн секунд":"хэдхэн секундын";case"ss":return t+(e?" секунд":" секундын");case"m":case"mm":return t+(e?" минут":" минутын");case"h":case"hh":return t+(e?" цаг":" цагийн");case"d":case"dd":return t+(e?" өдөр":" өдрийн");case"M":case"MM":return t+(e?" сар":" сарын");case"y":case"yy":return t+(e?" жил":" жилийн");default:return t}}t.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(t){return"ҮХ"===t},meridiem:function(t,e,n){return t<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" өдөр";default:return t}}})}(n("wd/R"))},lgnt:function(t,e,n){!function(t){"use strict";var e={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};t.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},ljhN:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},"lm/5":function(t,e,n){var a=n("fmRc"),r=n("wF/u");t.exports=function(t,e,n,i){var s=n.length,o=s,u=!i;if(null==t)return!o;for(t=Object(t);s--;){var l=n[s];if(u&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++s<o;){var d=(l=n[s])[0],c=t[d],f=l[1];if(u&&l[2]){if(void 0===c&&!(d in t))return!1}else{var h=new a;if(i)var g=i(c,f,d,t,e,h);if(!(void 0===g?r(f,c,3,i,h):g))return!1}}return!0}},lyxo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a=" ";return(t%100>=20||t>=100&&t%100==0)&&(a=" de "),t+a+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:e,m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}(n("wd/R"))},"m/L8":function(t,e,n){var a=n("g6v/"),r=n("DPsx"),i=n("glrk"),s=n("wE6v"),o=Object.defineProperty;e.f=a?o:function(t,e,n){if(i(t),e=s(e,!0),i(n),r)try{return o(t,e,n)}catch(a){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},m92n:function(t,e,n){var a=n("glrk");t.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(s){var i=t.return;throw void 0!==i&&a(i.call(t)),s}}},mCNh:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("KqfI");function r(...t){return i(t)}function i(t){return t?1===t.length?t[0]:function(e){return t.reduce((t,e)=>e(t),e)}:a.a}},mSOc:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("LvDl"),r=n("2Vo4"),i=n("pLZG"),s=n("SxV6"),o=n("lOp/"),u=n("8Y7J"),l=n("IheW");let d=(()=>{class t{constructor(t,e){this.http=t,this.timerService=e,this.REFRESH_INTERVAL=5e3,this.summaryDataSource=new r.a(null),this.summaryData$=this.summaryDataSource.asObservable()}startPolling(){return this.timerService.get(()=>this.retrieveSummaryObservable(),this.REFRESH_INTERVAL).subscribe(this.retrieveSummaryObserver())}refresh(){return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver())}retrieveSummaryObservable(){return this.http.get("api/summary")}retrieveSummaryObserver(){return t=>{this.summaryDataSource.next(t)}}subscribeOnce(t,e){return this.summaryData$.pipe(Object(i.a)(t=>!!t),Object(s.a)()).subscribe(t,e)}subscribe(t,e){return this.summaryData$.pipe(Object(i.a)(t=>!!t)).subscribe(t,e)}addRunningTask(t){const e=this.summaryDataSource.getValue();e&&(a.isArray(e.executing_tasks)?e.executing_tasks.find(e=>e.name===t.name&&a.isEqual(e.metadata,t.metadata))||e.executing_tasks.push(t):e.executing_tasks=[t],this.summaryDataSource.next(e))}}return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](l.c),u["ɵɵinject"](o.a))},token:t,providedIn:"root"}),t})()},mTTR:function(t,e,n){var a=n("b80T"),r=n("QcOe"),i=n("MMmD");t.exports=function(t){return i(t)?a(t,!0):r(t)}},mXUL:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return c}));var a=n("8Y7J"),r=n("+gVj"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:[".invalid-feedback[_ngcontent-%COMP%], .valid-feedback[_ngcontent-%COMP%] {\n        display: block;\n      }"],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),a["ɵted"](3,null,["",""]))],(function(t,e){t(e,2,0,e.component.className)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function u(t){return a["ɵvid"](0,[(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](1,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,e.component.messages())}),null)}var l=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bfv-messages",[],null,null,null,u,s)),a["ɵdid"](1,49152,null,0,r.e,[r.a],{messages:[0,"messages"]},null)],(function(t,e){t(e,1,0,e.component.messages)}),null)}function c(t){return a["ɵvid"](0,[a["ɵncd"](null,0),(t()(),a["ɵand"](16777216,null,null,1,null,d)),a["ɵdid"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,!e.component.messagesBlock)}),null)}},mc0g:function(t,e){t.exports=function(t){return function(e,n,a){for(var r=-1,i=Object(e),s=a(e),o=s.length;o--;){var u=s[t?o:++r];if(!1===n(i[u],u,i))break}return e}}},mdPL:function(t,e,n){(function(t){var a=n("WFqU"),r=e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,s=i&&i.exports===r&&a.process,o=function(){try{return i&&i.require&&i.require("util").types||s&&s.binding&&s.binding("util")}catch(t){}}();t.exports=o}).call(this,n("YuTi")(t))},mfoh:function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return p}));var a,r=n("CFvb"),i=n("P4Tr"),s=n.n(i),o=n("mwIZ"),u=n.n(o),l=n("Puqe"),d=n.n(l),c=n("UB5X"),f=n.n(c),h={TOGGLE_ACTIVE:function(t,e,n){return e&&e.toggleActivated()},TOGGLE_ACTIVE_MULTI:function(t,e,n){return e&&e.toggleActivated(!0)},TOGGLE_SELECTED:function(t,e,n){return e&&e.toggleSelected()},ACTIVATE:function(t,e,n){return e.setIsActive(!0)},DEACTIVATE:function(t,e,n){return e.setIsActive(!1)},SELECT:function(t,e,n){return e.setIsSelected(!0)},DESELECT:function(t,e,n){return e.setIsSelected(!1)},FOCUS:function(t,e,n){return e.focus()},TOGGLE_EXPANDED:function(t,e,n){return e.hasChildren&&e.toggleExpanded()},EXPAND:function(t,e,n){return e.expand()},COLLAPSE:function(t,e,n){return e.collapse()},DRILL_DOWN:function(t,e,n){return t.focusDrillDown()},DRILL_UP:function(t,e,n){return t.focusDrillUp()},NEXT_NODE:function(t,e,n){return t.focusNextNode()},PREVIOUS_NODE:function(t,e,n){return t.focusPreviousNode()},MOVE_NODE:function(t,e,n,a){var r=a.from,i=a.to;n.ctrlKey?t.copyNode(r,i):t.moveNode(r,i)}},g={mouse:{click:h.TOGGLE_ACTIVE,dblClick:null,contextMenu:null,expanderClick:h.TOGGLE_EXPANDED,checkboxClick:h.TOGGLE_SELECTED,drop:h.MOVE_NODE},keys:(a={},a[r.a.RIGHT]=h.DRILL_DOWN,a[r.a.LEFT]=h.DRILL_UP,a[r.a.DOWN]=h.NEXT_NODE,a[r.a.UP]=h.PREVIOUS_NODE,a[r.a.SPACE]=h.TOGGLE_ACTIVE,a[r.a.ENTER]=h.TOGGLE_ACTIVE,a)},p=function(){function t(t){void 0===t&&(t={}),this.options=t,this.actionMapping=s()({},this.options.actionMapping,g),t.rtl&&(this.actionMapping.keys[r.a.RIGHT]=u()(t,["actionMapping","keys",r.a.RIGHT])||h.DRILL_UP,this.actionMapping.keys[r.a.LEFT]=u()(t,["actionMapping","keys",r.a.LEFT])||h.DRILL_DOWN)}return Object.defineProperty(t.prototype,"hasChildrenField",{get:function(){return this.options.hasChildrenField||"hasChildren"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"childrenField",{get:function(){return this.options.childrenField||"children"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"displayField",{get:function(){return this.options.displayField||"name"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"idField",{get:function(){return this.options.idField||"id"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isExpandedField",{get:function(){return this.options.isExpandedField||"isExpanded"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"getChildren",{get:function(){return this.options.getChildren},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"levelPadding",{get:function(){return this.options.levelPadding||0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useVirtualScroll",{get:function(){return this.options.useVirtualScroll},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateExpand",{get:function(){return this.options.animateExpand},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateSpeed",{get:function(){return this.options.animateSpeed||1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"animateAcceleration",{get:function(){return this.options.animateAcceleration||1.2},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollOnActivate",{get:function(){return void 0===this.options.scrollOnActivate||this.options.scrollOnActivate},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rtl",{get:function(){return!!this.options.rtl},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rootId",{get:function(){return this.options.rootId},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useCheckbox",{get:function(){return this.options.useCheckbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"useTriState",{get:function(){return void 0===this.options.useTriState||this.options.useTriState},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollContainer",{get:function(){return this.options.scrollContainer},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allowDragoverStyling",{get:function(){return void 0===this.options.allowDragoverStyling||this.options.allowDragoverStyling},enumerable:!0,configurable:!0}),t.prototype.getNodeClone=function(t){return this.options.getNodeClone?this.options.getNodeClone(t):d()(Object.assign({},t.data),["id"])},t.prototype.allowDrop=function(t,e,n){return this.options.allowDrop instanceof Function?this.options.allowDrop(t,e,n):void 0===this.options.allowDrop||this.options.allowDrop},t.prototype.allowDrag=function(t){return this.options.allowDrag instanceof Function?this.options.allowDrag(t):this.options.allowDrag},t.prototype.nodeClass=function(t){return this.options.nodeClass?this.options.nodeClass(t):""},t.prototype.nodeHeight=function(t){if(t.data.virtual)return 0;var e=this.options.nodeHeight||22;return"function"==typeof e&&(e=e(t)),e+(0===t.index?2:1)*this.dropSlotHeight},Object.defineProperty(t.prototype,"dropSlotHeight",{get:function(){return f()(this.options.dropSlotHeight)?this.options.dropSlotHeight:2},enumerable:!0,configurable:!0}),t}()},moLw:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("8Y7J"),s=n("SVse");e.ClickOutsideDirective=function(){function t(t,e,n){this._el=t,this._ngZone=e,this.platformId=n,this.clickOutsideEnabled=!0,this.attachOutsideOnClick=!1,this.delayClickOutsideInit=!1,this.emitOnBlur=!1,this.exclude="",this.excludeBeforeClick=!1,this.clickOutsideEvents="",this.clickOutside=new i.EventEmitter,this._nodesExcluded=[],this._events=["click"],this._initOnClickBody=this._initOnClickBody.bind(this),this._onClickBody=this._onClickBody.bind(this),this._onWindowBlur=this._onWindowBlur.bind(this)}return t.prototype.ngOnInit=function(){s.isPlatformBrowser(this.platformId)&&this._init()},t.prototype.ngOnDestroy=function(){s.isPlatformBrowser(this.platformId)&&(this._removeClickOutsideListener(),this._removeAttachOutsideOnClickListener(),this._removeWindowBlurListener())},t.prototype.ngOnChanges=function(t){s.isPlatformBrowser(this.platformId)&&(t.attachOutsideOnClick||t.exclude||t.emitOnBlur)&&this._init()},t.prototype._init=function(){""!==this.clickOutsideEvents&&(this._events=this.clickOutsideEvents.split(",").map((function(t){return t.trim()}))),this._excludeCheck(),this.attachOutsideOnClick?this._initAttachOutsideOnClickListener():this._initOnClickBody(),this.emitOnBlur&&this._initWindowBlurListener()},t.prototype._initOnClickBody=function(){this.delayClickOutsideInit?setTimeout(this._initClickOutsideListener.bind(this)):this._initClickOutsideListener()},t.prototype._excludeCheck=function(){if(this.exclude)try{var t=Array.from(document.querySelectorAll(this.exclude));t&&(this._nodesExcluded=t)}catch(e){console.error("[ng-click-outside] Check your exclude selector syntax.",e)}},t.prototype._onClickBody=function(t){this.clickOutsideEnabled&&(this.excludeBeforeClick&&this._excludeCheck(),this._el.nativeElement.contains(t.target)||this._shouldExclude(t.target)||(this._emit(t),this.attachOutsideOnClick&&this._removeClickOutsideListener()))},t.prototype._onWindowBlur=function(t){var e=this;setTimeout((function(){document.hidden||e._emit(t)}))},t.prototype._emit=function(t){var e=this;this.clickOutsideEnabled&&this._ngZone.run((function(){return e.clickOutside.emit(t)}))},t.prototype._shouldExclude=function(t){for(var e=0,n=this._nodesExcluded;e<n.length;e++)if(n[e].contains(t))return!0;return!1},t.prototype._initClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.addEventListener(e,t._onClickBody)}))}))},t.prototype._removeClickOutsideListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return document.removeEventListener(e,t._onClickBody)}))}))},t.prototype._initAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.addEventListener(e,t._initOnClickBody)}))}))},t.prototype._removeAttachOutsideOnClickListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){t._events.forEach((function(e){return t._el.nativeElement.removeEventListener(e,t._initOnClickBody)}))}))},t.prototype._initWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.addEventListener("blur",t._onWindowBlur)}))},t.prototype._removeWindowBlurListener=function(){var t=this;this._ngZone.runOutsideAngular((function(){window.removeEventListener("blur",t._onWindowBlur)}))},a([i.Input(),r("design:type",Boolean)],t.prototype,"clickOutsideEnabled",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"attachOutsideOnClick",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"delayClickOutsideInit",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"emitOnBlur",void 0),a([i.Input(),r("design:type",String)],t.prototype,"exclude",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"excludeBeforeClick",void 0),a([i.Input(),r("design:type",String)],t.prototype,"clickOutsideEvents",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"clickOutside",void 0),a([i.Injectable(),i.Directive({selector:"[clickOutside]"})],t)}()},mrSG:function(t,e,n){"use strict";n.r(e),n.d(e,"__extends",(function(){return r})),n.d(e,"__assign",(function(){return i})),n.d(e,"__rest",(function(){return s})),n.d(e,"__decorate",(function(){return o})),n.d(e,"__param",(function(){return u})),n.d(e,"__metadata",(function(){return l})),n.d(e,"__awaiter",(function(){return d})),n.d(e,"__generator",(function(){return c})),n.d(e,"__exportStar",(function(){return f})),n.d(e,"__values",(function(){return h})),n.d(e,"__read",(function(){return g})),n.d(e,"__spread",(function(){return p})),n.d(e,"__spreadArrays",(function(){return b})),n.d(e,"__await",(function(){return m})),n.d(e,"__asyncGenerator",(function(){return y})),n.d(e,"__asyncDelegator",(function(){return v})),n.d(e,"__asyncValues",(function(){return x})),n.d(e,"__makeTemplateObject",(function(){return _})),n.d(e,"__importStar",(function(){return T})),n.d(e,"__importDefault",(function(){return O})),n.d(e,"__classPrivateFieldGet",(function(){return w})),n.d(e,"__classPrivateFieldSet",(function(){return S}));var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function r(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function s(t,e){var n={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&e.indexOf(a)<0&&(n[a]=t[a]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(t);r<a.length;r++)e.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(t,a[r])&&(n[a[r]]=t[a[r]])}return n}function o(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}function u(t,e){return function(n,a){e(n,a,t)}}function l(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function d(t,e,n,a){return new(n||(n=Promise))((function(r,i){function s(t){try{u(a.next(t))}catch(e){i(e)}}function o(t){try{u(a.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,o)}u((a=a.apply(t,e||[])).next())}))}function c(t,e){var n,a,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function o(i){return function(o){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,a&&(r=2&i[0]?a.return:i[0]?a.throw||((r=a.return)&&r.call(a),0):a.next)&&!(r=r.call(a,i[1])).done)return r;switch(a=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,a=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(r=(r=s.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){s.label=i[1];break}if(6===i[0]&&s.label<r[1]){s.label=r[1],r=i;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(i);break}r[2]&&s.ops.pop(),s.trys.pop();continue}i=e.call(t,s)}catch(o){i=[6,o],a=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,o])}}}function f(t,e){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}function h(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],a=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(o){r={error:o}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}function p(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(g(arguments[e]));return t}function b(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,o=i.length;s<o;s++,r++)a[r]=i[s];return a}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function y(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,r=n.apply(t,e||[]),i=[];return a={},s("next"),s("throw"),s("return"),a[Symbol.asyncIterator]=function(){return this},a;function s(t){r[t]&&(a[t]=function(e){return new Promise((function(n,a){i.push([t,e,n,a])>1||o(t,e)}))})}function o(t,e){try{!function(t){t.value instanceof m?Promise.resolve(t.value.v).then(u,l):d(i[0][2],t)}(r[t](e))}catch(n){d(i[0][3],n)}}function u(t){o("next",t)}function l(t){o("throw",t)}function d(t,e){t(e),i.shift(),i.length&&o(i[0][0],i[0][1])}}function v(t){var e,n;return e={},a("next"),a("throw",(function(t){throw t})),a("return"),e[Symbol.iterator]=function(){return this},e;function a(a,r){e[a]=t[a]?function(e){return(n=!n)?{value:m(t[a](e)),done:"return"===a}:r?r(e):e}:r}}function x(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=h(t),e={},a("next"),a("throw"),a("return"),e[Symbol.asyncIterator]=function(){return this},e);function a(n){e[n]=t[n]&&function(e){return new Promise((function(a,r){!function(t,e,n,a){Promise.resolve(a).then((function(e){t({value:e,done:n})}),e)}(a,r,(e=t[n](e)).done,e.value)}))}}}function _(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function T(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function O(t){return t&&t.__esModule?t:{default:t}}function w(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function S(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}},mtw6:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.error=0]="error",t[t.info=1]="info",t[t.success=2]="success",t}({})},"mv/X":function(t,e,n){var a=n("ljhN"),r=n("MMmD"),i=n("wJg7"),s=n("GoyQ");t.exports=function(t,e,n){if(!s(n))return!1;var o=typeof e;return!!("number"==o?r(n)&&i(e,n.length):"string"==o&&e in n)&&a(n[e],t)}},mwIZ:function(t,e,n){var a=n("ZWtO");t.exports=function(t,e,n){var r=null==t?void 0:a(t,e);return void 0===r?n:r}},"n/D3":function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return c}));var a=n("cp0P"),r=(n("SgmB"),n("ZDA6"),n("+fVR")),i=n("0+/T"),s=n("Rf2I"),o=(n("sne2"),n("x38r")),u=n("oxzT"),l=n("mtw6"),d=n("vCyI");n("nSDx"),n("aexS"),n("9nlD");const c=new(n("EgGo").a)("user-management/roles");class f extends r.a{constructor(t,e,n,a,r,i,s,o,l){super(),this.roleService=t,this.scopeService=e,this.emptyPipe=n,this.authStorageService=a,this.modalService=r,this.notificationService=i,this.i18n=s,this.urlBuilder=o,this.actionLabels=l,this.selection=new d.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:u.a.add,routerLink:()=>this.urlBuilder.getCreate(),name:this.actionLabels.CREATE},{permission:"create",icon:u.a.clone,name:this.actionLabels.CLONE,disable:()=>!this.selection.hasSingleSelection,click:()=>this.cloneRole()},{permission:"update",icon:u.a.edit,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,routerLink:()=>this.selection.first()&&this.urlBuilder.getEdit(this.selection.first().name),name:this.actionLabels.EDIT},{permission:"delete",icon:u.a.destroy,disable:()=>!this.selection.hasSingleSelection||this.selection.first().system,click:()=>this.deleteRoleModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:3},{name:this.i18n("Description"),prop:"description",flexGrow:5,pipe:this.emptyPipe},{name:this.i18n("System Role"),prop:"system",cellClass:"text-center",flexGrow:1,cellTransformation:o.a.checkIcon}]}getRoles(){Object(a.a)([this.roleService.list(),this.scopeService.list()]).subscribe(t=>{this.roles=t[0],this.scopes=t[1]})}updateSelection(t){this.selection=t}deleteRole(t){this.roleService.delete(t).subscribe(()=>{this.getRoles(),this.modalRef.hide(),this.notificationService.show(l.a.success,this.i18n("Deleted role '{{role_name}}'",{role_name:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}deleteRoleModal(){const t=this.selection.first().name;this.modalRef=this.modalService.show(i.a,{initialState:{itemDescription:"Role",itemNames:[t],submitAction:()=>this.deleteRole(t)}})}cloneRole(){const t=this.selection.first().name;this.modalRef=this.modalService.show(s.a,{initialState:{fields:[{type:"text",name:"newName",value:`${t}_clone`,label:this.i18n("New name"),required:!0}],titleText:this.i18n("Clone Role"),submitButtonText:this.i18n("Clone Role"),onSubmit:e=>{this.roleService.clone(t,e.newName).subscribe(()=>{this.getRoles(),this.notificationService.show(l.a.success,this.i18n("Cloned role '{{dst_name}}' from '{{src_name}}'",{src_name:t,dst_name:e.newName}))})}}})}}},"n3/R":function(t,e,n){"use strict";var a=n("0Dky");function r(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=a((function(){var t=r("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=a((function(){var t=r("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},n6bG:function(t,e,n){"use strict";function a(t){return"function"==typeof t}n.d(e,"a",(function(){return a}))},nSDx:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t){return a.isUndefined(t)||a.isNull(t)?"-":t}}},nYho:function(t,e,n){(function(t){var a;!function(r){"object"==typeof global&&global;var i,s=2147483647,o=/^xn--/,u=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,d={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=Math.floor,f=String.fromCharCode;function h(t){throw RangeError(d[t])}function g(t,e){for(var n=t.length,a=[];n--;)a[n]=e(t[n]);return a}function p(t,e){var n=t.split("@"),a="";return n.length>1&&(a=n[0]+"@",t=n[1]),a+g((t=t.replace(l,".")).split("."),e).join(".")}function b(t){for(var e,n,a=[],r=0,i=t.length;r<i;)(e=t.charCodeAt(r++))>=55296&&e<=56319&&r<i?56320==(64512&(n=t.charCodeAt(r++)))?a.push(((1023&e)<<10)+(1023&n)+65536):(a.push(e),r--):a.push(e);return a}function m(t){return g(t,(function(t){var e="";return t>65535&&(e+=f((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+f(t)})).join("")}function y(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function v(t,e,n){var a=0;for(t=n?c(t/700):t>>1,t+=c(t/e);t>455;a+=36)t=c(t/35);return c(a+36*t/(t+38))}function x(t){var e,n,a,r,i,o,u,l,d,f,g,p=[],b=t.length,y=0,x=128,_=72;for((n=t.lastIndexOf("-"))<0&&(n=0),a=0;a<n;++a)t.charCodeAt(a)>=128&&h("not-basic"),p.push(t.charCodeAt(a));for(r=n>0?n+1:0;r<b;){for(i=y,o=1,u=36;r>=b&&h("invalid-input"),((l=(g=t.charCodeAt(r++))-48<10?g-22:g-65<26?g-65:g-97<26?g-97:36)>=36||l>c((s-y)/o))&&h("overflow"),y+=l*o,!(l<(d=u<=_?1:u>=_+26?26:u-_));u+=36)o>c(s/(f=36-d))&&h("overflow"),o*=f;_=v(y-i,e=p.length+1,0==i),c(y/e)>s-x&&h("overflow"),x+=c(y/e),y%=e,p.splice(y++,0,x)}return m(p)}function _(t){var e,n,a,r,i,o,u,l,d,g,p,m,x,_,T,O=[];for(m=(t=b(t)).length,e=128,n=0,i=72,o=0;o<m;++o)(p=t[o])<128&&O.push(f(p));for(a=r=O.length,r&&O.push("-");a<m;){for(u=s,o=0;o<m;++o)(p=t[o])>=e&&p<u&&(u=p);for(u-e>c((s-n)/(x=a+1))&&h("overflow"),n+=(u-e)*x,e=u,o=0;o<m;++o)if((p=t[o])<e&&++n>s&&h("overflow"),p==e){for(l=n,d=36;!(l<(g=d<=i?1:d>=i+26?26:d-i));d+=36)O.push(f(y(g+(T=l-g)%(_=36-g),0))),l=c(T/_);O.push(f(y(l,0))),i=v(n,x,a==r),n=0,++a}++n,++e}return O.join("")}i={version:"1.3.2",ucs2:{decode:b,encode:m},decode:x,encode:_,toASCII:function(t){return p(t,(function(t){return u.test(t)?"xn--"+_(t):t}))},toUnicode:function(t){return p(t,(function(t){return o.test(t)?x(t.slice(4).toLowerCase()):t}))}},void 0===(a=(function(){return i}).call(e,n,e,t))||(t.exports=a)}()}).call(this,n("YuTi")(t))},ngJS:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=t=>e=>{for(let n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.complete()}},nmnc:function(t,e,n){var a=n("Kz5y");t.exports=a.Symbol},ntOU:function(t,e,n){"use strict";var a=n("rpNk").IteratorPrototype,r=n("fHMY"),i=n("XGwC"),s=n("1E5z"),o=n("P4y1"),u=function(){return this};t.exports=function(t,e,n){var l=e+" Iterator";return t.prototype=r(a,{next:i(1,n)}),s(t,l,!1,!0),o[l]=u,t}},nyYc:function(t,e,n){!function(t){"use strict";t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},o1bE:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n("wd/R"))},"o4+5":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n("aXbf");class a{constructor(t){this.formatter=t}transform(t){return this.formatter.format_number(t,1e3,["","k","M","G","T","P","E","Z","Y"])}}},"oCl/":function(t,e,n){var a=n("CH3K"),r=n("LcsW"),i=n("MvSz"),s=n("0ycA");t.exports=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)a(e,i(t)),t=r(t);return e}:s},oMSZ:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this.pwdExpirationSpan=0,this.pwdExpirationSpan=t.user_pwd_expiration_span,this.pwdExpirationWarning1=t.user_pwd_expiration_warning_1,this.pwdExpirationWarning2=t.user_pwd_expiration_warning_2}}},or5M:function(t,e,n){var a=n("1hJj"),r=n("QoRX"),i=n("xYSL");t.exports=function(t,e,n,s,o,u){var l=1&n,d=t.length,c=e.length;if(d!=c&&!(l&&c>d))return!1;var f=u.get(t);if(f&&u.get(e))return f==e;var h=-1,g=!0,p=2&n?new a:void 0;for(u.set(t,e),u.set(e,t);++h<d;){var b=t[h],m=e[h];if(s)var y=l?s(m,b,h,e,t,u):s(b,m,h,t,e,u);if(void 0!==y){if(y)continue;g=!1;break}if(p){if(!r(e,(function(t,e){if(!i(p,e)&&(b===t||o(b,t,n,s,u)))return p.push(e)}))){g=!1;break}}else if(b!==m&&!o(b,m,n,s,u)){g=!1;break}}return u.delete(t),u.delete(e),g}},"otv/":function(t,e,n){var a=n("nmnc"),r=a?a.prototype:void 0,i=r?r.valueOf:void 0;t.exports=function(t){return i?Object(i.call(t)):{}}},oxzT:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.add="fa fa-plus",t.addCircle="fa fa-plus-circle",t.minusCircle="fa fa-minus-circle",t.edit="fa fa-pencil",t.destroy="fa fa-times",t.destroyCircle="fa fa-times-circle",t.exchange="fa fa-exchange",t.copy="fa fa-copy",t.clipboard="fa fa-clipboard",t.flatten="fa fa-chain-broken",t.trash="fa fa-trash-o",t.lock="fa fa-lock",t.unlock="fa fa-unlock",t.clone="fa fa-clone",t.undo="fa fa-undo",t.search="fa fa-search",t.start="fa fa-play",t.stop="fa fa-stop",t.analyse="fa fa-stethoscope",t.deepCheck="fa fa-cog",t.reweight="fa fa-balance-scale",t.left="fa fa-arrow-left",t.right="fa fa-arrow-right",t.down="fa fa-arrow-down",t.erase="fa fa-eraser",t.user="fa fa-user",t.users="fa fa-users",t.share="fa fa-share-alt",t.key="fa fa-key-modern",t.warning="fa fa-exclamation-triangle",t.info="fa fa-info",t.infoCircle="fa fa-info-circle",t.questionCircle="fa fa-question-circle-o",t.check="fa fa-check",t.show="fa fa-eye",t.paragraph="fa fa-paragraph",t.terminal="fa fa-terminal",t.magic="fa fa-magic",t.hourglass="fa fa-hourglass-o",t.filledHourglass="fa fa-hourglass",t.table="fa fa-table",t.spinner="fa fa-spinner",t.refresh="fa fa-refresh",t.bullseye="fa fa-bullseye",t.disk="fa fa-hdd-o",t.server="fa fa-server",t.filter="fa fa-filter",t.lineChart="fa fa-line-chart",t.signOut="fa fa-sign-out",t.health="fa fa-heartbeat",t.circle="fa fa-circle",t.bell="fa fa-bell",t.tag="fa fa-tag",t.leftArrow="fa fa-angle-left",t.rightArrow="fa fa-angle-right",t.leftArrowDouble="fa fa-angle-double-left",t.rightArrowDouble="fa fa-angle-double-right",t.flag="fa fa-flag",t.clearFilters="fa fa-window-close",t.download="fa fa-download",t.upload="fa fa-upload",t.large="fa fa-lg",t.large2x="fa fa-2x",t.large3x="fa fa-3x",t.stack="fa fa-stack",t.stack1x="fa fa-stack-1x",t.stack2x="fa fa-stack-2x",t.pulse="fa fa-pulse",t.spin="fa fa-spin",t.inverse="fa fa-inverse",t}({})},"p/rL":function(t,e,n){!function(t){"use strict";t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("wd/R"))},p4Cf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("oxzT");class r{constructor(){this.icons=a.a}}},pFRH:function(t,e,n){var a=n("cvCv"),r=n("O0oS"),i=n("zZ0H");t.exports=r?function(t,e){return r(t,"toString",{configurable:!0,enumerable:!1,value:a(e),writable:!0})}:i},pKUh:function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return l}));var a=n("8Y7J"),r=n("2ZVE"),i=n("SVse"),s=a["ɵcrt"]({encapsulation:0,styles:["[_nghost-%COMP%]   .nav-tabs[_ngcontent-%COMP%]   .nav-item.disabled[_ngcontent-%COMP%]   a.disabled[_ngcontent-%COMP%]{cursor:default}"],data:{}});function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"span",[["class","bs-remove-tab"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(n.preventDefault(),a=!1!==r.removeTab(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),a["ɵted"](-1,null,[" ❌"]))],null,null)}function u(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,9,"li",[],[[2,"active",null],[2,"disabled",null]],[[null,"keydown"]],(function(t,e,n){var a=!0;return"keydown"===e&&(a=!1!==t.component.keyNavActions(n,t.context.index)&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](3,2),(t()(),a["ɵeld"](4,0,null,null,5,"a",[["class","nav-link"],["href","javascript:void(0);"],["role","tab"]],[[1,"aria-controls",0],[1,"aria-selected",0],[1,"id",0],[2,"active",null],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.context.$implicit.active=!0)&&a),a}),null,null)),(t()(),a["ɵeld"](5,16777216,null,null,2,"span",[],null,null,null,null,null)),a["ɵdid"](6,16384,null,0,r.a,[a.ViewContainerRef],{ngTransclude:[0,"ngTransclude"]},null),(t()(),a["ɵted"](7,null,["",""])),(t()(),a["ɵand"](16777216,null,null,1,null,o)),a["ɵdid"](9,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,"nav-item",e.context.$implicit.customClass||"");t(e,2,0,n),t(e,6,0,e.context.$implicit.headingRef),t(e,9,0,e.context.$implicit.removable)}),(function(t,e){t(e,0,0,e.context.$implicit.active,e.context.$implicit.disabled),t(e,4,0,e.context.$implicit.id?e.context.$implicit.id:"",!!e.context.$implicit.active,e.context.$implicit.id?e.context.$implicit.id+"-link":"",e.context.$implicit.active,e.context.$implicit.disabled),t(e,7,0,e.context.$implicit.heading)}))}function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,4,"ul",[["class","nav"],["role","tablist"]],[[1,"aria-label",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a}),null,null)),a["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["ɵand"](16777216,null,null,1,null,u)),a["ɵdid"](4,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["ɵeld"](5,0,null,null,1,"div",[["class","tab-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"nav",n.classMap),t(e,4,0,n.tabs)}),(function(t,e){t(e,0,0,e.component.ariaLabel)}))}},pL04:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},pLZG:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t,e){return function(n){return n.lift(new i(t,e))}}class i{constructor(t,e){this.predicate=t,this.thisArg=e}call(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg))}}class s extends a.a{constructor(t,e,n){super(t),this.predicate=e,this.thisArg=n,this.count=0}_next(t){let e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)}}},pMnS:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n("8Y7J"),r=n("iInd"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),a["ɵdid"](1,212992,null,0,r.r,[r.b,a.ViewContainerRef,a.ComponentFactoryResolver,[8,null],a.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"ng-component",[],null,null,null,s,i)),a["ɵdid"](1,49152,null,0,r.F,[],null,null)],null,null)}var u=a["ɵccf"]("ng-component",r.F,o,{},{},[])},pSRY:function(t,e,n){var a=n("QkVE");t.exports=function(t){return a(this,t).has(t)}},pYKc:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("WiuZ"),s=n("wnGv"),o=n("GiVz");n("ppaS"),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return d}));var u=a["ɵcrt"]({encapsulation:0,styles:[[".badge-remove[_ngcontent-%COMP%]{color:#fff}i.fa-pencil[_ngcontent-%COMP%]{font-size:1.1rem}"]],data:{}});function l(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,8,"span",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,7,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"span",[["class","mr-2"]],null,null,null,null,null)),(t()(),a["ɵted"](3,null,["",""])),(t()(),a["ɵeld"](4,0,null,null,4,"a",[["class","badge-remove"]],null,[[null,"click"]],(function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["ɵnov"](t.parent,2).removeItem(t.context.$implicit)&&r),r}),null,null)),(t()(),a["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](7,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](8,1)],(function(t,e){var n=t(e,8,0,e.component.icons.destroy);t(e,7,0,n)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function d(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{cdSelect:0}),(t()(),a["ɵeld"](1,0,null,null,5,"cd-select",[["elemClass","mr-2 select-menu-edit"]],null,[[null,"selection"]],(function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.selection.emit(n)&&a),a}),i.b,i.a)),a["ɵdid"](2,638976,[[1,4],["cdSelect",4]],0,s.a,[o.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"],selectionLimit:[4,"selectionLimit"],customBadges:[5,"customBadges"],customBadgeValidators:[6,"customBadgeValidators"]},{selection:"selection"}),(t()(),a["ɵeld"](3,0,null,0,3,"i",[],null,null,null,null,null)),a["ɵprd"](512,null,r["ɵNgClassImpl"],r["ɵNgClassR2Impl"],[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2]),a["ɵdid"](5,278528,null,0,r.NgClass,[r["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),a["ɵpad"](6,1),(t()(),a["ɵand"](16777216,null,null,1,null,l)),a["ɵdid"](8,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,2,0,"mr-2 select-menu-edit",n.data,n.options,n.messages,n.selectionLimit,n.customBadges,n.customBadgeValidators);var a=t(e,6,0,n.icons.edit);t(e,5,0,a),t(e,8,0,n.data)}),null)}},pZt1:function(t,e){t.exports=function(t){return t&&t.length?t[0]:void 0}},pcHL:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Object)],t.prototype,"templates",void 0),i([Object(a.Component)({selector:"tree-node-children",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <div\n        [class.tree-children]="true"\n        [class.tree-children-no-padding]="node.options.levelPadding"\n        *treeAnimateOpen="\n          node.isExpanded;\n          speed: node.options.animateSpeed;\n          acceleration: node.options.animateAcceleration;\n          enabled: node.options.animateExpand\n        "\n      >\n        <tree-node-collection\n          *ngIf="node.children"\n          [nodes]="node.children"\n          [templates]="templates"\n          [treeModel]="node.treeModel"\n        >\n        </tree-node-collection>\n        <tree-loading-component\n          [style.padding-left]="node.getNodePadding()"\n          class="tree-node-loading"\n          *ngIf="!node.children"\n          [template]="templates.loadingTemplate"\n          [node]="node"\n        ></tree-loading-component>\n      </div>\n    </ng-container>\n  '})],t)}()},pkCn:function(t,e,n){"use strict";var a=n("0Dky");t.exports=function(t,e){var n=[][t];return!!n&&a((function(){n.call(null,e||function(){throw 1},1)}))}},ppGB:function(t,e){var n=Math.ceil,a=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?a:n)(t)}},ppaS:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("8Y7J"),r=n("oxzT"),i=n("DNAf");n("wnGv");class s{constructor(t){this.i18n=t,this.data=[],this.options=[],this.messages=new i.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.icons=r.a}}},pxLl:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("mrSG"),r=n("IheW"),i=n("LRne"),s=n("5+tZ"),o=n("xTzq"),u=n("8Y7J"),l=n("pL04");let d=(()=>{let t=class{constructor(t){this.http=t,this.url="api/perf_counters"}list(){return this.http.get(this.url)}get(t,e){return this.http.get(`${this.url}/${t}/${e}`).pipe(Object(s.a)(t=>Object(i.a)(t.counters)))}};return t.ngInjectableDef=u["ɵɵdefineInjectable"]({factory:function(){return new t(u["ɵɵinject"](r.c))},token:t,providedIn:l.a}),t=a.__decorate([o.a,a.__metadata("design:paramtypes",[r.c])],t),t})()},pxpQ:function(t,e,n){"use strict";var a=n("7o/Q"),r=n("EY2u"),i=n("LRne"),s=n("z6cu");let o=(()=>{class t{constructor(t,e,n){this.kind=t,this.value=e,this.error=n,this.hasValue="N"===t}observe(t){switch(this.kind){case"N":return t.next&&t.next(this.value);case"E":return t.error&&t.error(this.error);case"C":return t.complete&&t.complete()}}do(t,e,n){switch(this.kind){case"N":return t&&t(this.value);case"E":return e&&e(this.error);case"C":return n&&n()}}accept(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)}toObservable(){switch(this.kind){case"N":return Object(i.a)(this.value);case"E":return Object(s.a)(this.error);case"C":return Object(r.b)()}throw new Error("unexpected notification kind value")}static createNext(e){return void 0!==e?new t("N",e):t.undefinedValueNotification}static createError(e){return new t("E",void 0,e)}static createComplete(){return t.completeNotification}}return t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t})();function u(t,e=0){return function(n){return n.lift(new l(t,e))}}n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return d}));class l{constructor(t,e=0){this.scheduler=t,this.delay=e}call(t,e){return e.subscribe(new d(t,this.scheduler,this.delay))}}class d extends a.a{constructor(t,e,n=0){super(t),this.scheduler=e,this.delay=n}static dispatch(t){const{notification:e,destination:n}=t;e.observe(n),this.unsubscribe()}scheduleMessage(t){this.destination.add(this.scheduler.schedule(d.dispatch,this.delay,new c(t,this.destination)))}_next(t){this.scheduleMessage(o.createNext(t))}_error(t){this.scheduleMessage(o.createError(t)),this.unsubscribe()}_complete(){this.scheduleMessage(o.createComplete()),this.unsubscribe()}}class c{constructor(t,e){this.notification=t,this.destination=e}}},qZTm:function(t,e,n){var a=n("fR/l"),r=n("MvSz"),i=n("7GkX");t.exports=function(t){return a(t,i,r)}},qgXg:function(t,e,n){"use strict";var a=n("3N8a");class r extends a.a{constructor(t,e){super(t,e),this.scheduler=t,this.work=e}schedule(t,e=0){return e>0?super.schedule(t,e):(this.delay=e,this.state=t,this.scheduler.flush(this),this)}execute(t,e){return e>0||this.closed?super.execute(t,e):this._execute(t,e)}requestAsyncId(t,e,n=0){return null!==n&&n>0||null===n&&this.delay>0?super.requestAsyncId(t,e,n):t.flush(this)}}var i=n("IjjT");class s extends i.a{}n.d(e,"a",(function(){return o}));const o=new s(r)},quSY:function(t,e,n){"use strict";var a=n("DH7j"),r=n("XoHu"),i=n("n6bG");const s=(()=>{function t(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((t,e)=>`${e+1}) ${t.toString()}`).join("\n  ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return t.prototype=Object.create(Error.prototype),t})();n.d(e,"a",(function(){return o}));let o=(()=>{class t{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}unsubscribe(){let e;if(this.closed)return;let{_parentOrParents:n,_unsubscribe:o,_subscriptions:l}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof t)n.remove(this);else if(null!==n)for(let t=0;t<n.length;++t)n[t].remove(this);if(Object(i.a)(o))try{o.call(this)}catch(d){e=d instanceof s?u(d.errors):[d]}if(Object(a.a)(l)){let t=-1,n=l.length;for(;++t<n;){const n=l[t];if(Object(r.a)(n))try{n.unsubscribe()}catch(d){e=e||[],d instanceof s?e=e.concat(u(d.errors)):e.push(d)}}}if(e)throw new s(e)}add(e){let n=e;if(!e)return t.EMPTY;switch(typeof e){case"function":n=new t(e);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof t)){const e=n;n=new t,n._subscriptions=[e]}break;default:throw new Error("unrecognized teardown "+e+" added to Subscription.")}let{_parentOrParents:a}=n;if(null===a)n._parentOrParents=this;else if(a instanceof t){if(a===this)return n;n._parentOrParents=[a,this]}else{if(-1!==a.indexOf(this))return n;a.push(this)}const r=this._subscriptions;return null===r?this._subscriptions=[n]:r.push(n),n}remove(t){const e=this._subscriptions;if(e){const n=e.indexOf(t);-1!==n&&e.splice(n,1)}}}var e;return t.EMPTY=((e=new t).closed=!0,e),t})();function u(t){return t.reduce((t,e)=>t.concat(e instanceof s?e.errors:e),[])}},r8II:function(t,e,n){"use strict";e.decode=e.parse=n("YcCt"),e.encode=e.stringify=n("6MUB")},rB9j:function(t,e,n){"use strict";var a=n("I+eb"),r=n("kmMV");a({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},rEGp:function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},rKzb:function(t,e,n){"use strict";var a=n("4syw"),r=n("8YOa").getWeakData,i=n("glrk"),s=n("hh1v"),o=n("GarU"),u=n("ImZN"),l=n("tycR"),d=n("UTVS"),c=n("afO8"),f=c.set,h=c.getterFor,g=l.find,p=l.findIndex,b=0,m=function(t){return t.frozen||(t.frozen=new y)},y=function(){this.entries=[]},v=function(t,e){return g(t.entries,(function(t){return t[0]===e}))};y.prototype={get:function(t){var e=v(this,t);if(e)return e[1]},has:function(t){return!!v(this,t)},set:function(t,e){var n=v(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=p(this.entries,(function(e){return e[0]===t}));return~e&&this.entries.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,l){var c=t((function(t,a){o(t,c,e),f(t,{type:e,id:b++,frozen:void 0}),null!=a&&u(a,t[l],t,n)})),g=h(e),p=function(t,e,n){var a=g(t),s=r(i(e),!0);return!0===s?m(a).set(e,n):s[a.id]=n,t};return a(c.prototype,{delete:function(t){var e=g(this);if(!s(t))return!1;var n=r(t);return!0===n?m(e).delete(t):n&&d(n,e.id)&&delete n[e.id]},has:function(t){var e=g(this);if(!s(t))return!1;var n=r(t);return!0===n?m(e).has(t):n&&d(n,e.id)}}),a(c.prototype,n?{get:function(t){var e=g(this);if(s(t)){var n=r(t);return!0===n?m(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return p(this,t,e)}}:{add:function(t){return p(this,t,!0)}}),c}}},rW0t:function(t,e,n){"use strict";var a=n("glrk");t.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},rZud:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"index",void 0),i([Object(a.Input)(),s("design:type",a.TemplateRef)],t.prototype,"template",void 0),i([Object(a.Component)({selector:"tree-node-content",encapsulation:a.ViewEncapsulation.None,template:'\n  <span *ngIf="!template">{{ node.displayField }}</span>\n  <ng-container\n    [ngTemplateOutlet]="template"\n    [ngTemplateOutletContext]="{ $implicit: node, node: node, index: index }">\n  </ng-container>'})],t)}()},raLr:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"хвилина":"хвилину":"h"===n?e?"година":"годину":t+" "+(a=+t,r={ss:e?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:e?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:e?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}function n(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}t.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(t,e){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:e,m:e,mm:e,h:"годину",hh:e,d:"день",dd:e,M:"місяць",MM:e,y:"рік",yy:e},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(t){return/^(дня|вечора)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночі":t<12?"ранку":t<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},rkAj:function(t,e,n){var a=n("g6v/"),r=n("0Dky"),i=n("UTVS"),s=Object.defineProperty,o={},u=function(t){throw t};t.exports=function(t,e){if(i(o,t))return o[t];e||(e={});var n=[][t],l=!!i(e,"ACCESSORS")&&e.ACCESSORS,d=i(e,0)?e[0]:u,c=i(e,1)?e[1]:void 0;return o[t]=!!n&&!r((function(){if(l&&!a)return!0;var t={length:-1};l?s(t,1,{enumerable:!0,get:u}):t[1]=1,n.call(t,d,c)}))}},rpNk:function(t,e,n){"use strict";var a,r,i,s=n("4WOD"),o=n("kRJp"),u=n("UTVS"),l=n("tiKp"),d=n("xDBR"),c=l("iterator"),f=!1;[].keys&&("next"in(i=[].keys())?(r=s(s(i)))!==Object.prototype&&(a=r):f=!0),null==a&&(a={}),d||u(a,c)||o(a,c,(function(){return this})),t.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:f}},"s+uk":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},s7LF:function(t,e,n){"use strict";n.d(e,"C",(function(){return Tt})),n.d(e,"G",(function(){return gt})),n.d(e,"D",(function(){return R})),n.d(e,"E",(function(){return pt})),n.d(e,"F",(function(){return F})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return h})),n.d(e,"p",(function(){return u})),n.d(e,"b",(function(){return d})),n.d(e,"e",(function(){return c})),n.d(e,"q",(function(){return p})),n.d(e,"r",(function(){return m})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return ot})),n.d(e,"u",(function(){return ht})),n.d(e,"w",(function(){return C})),n.d(e,"x",(function(){return A})),n.d(e,"j",(function(){return xt})),n.d(e,"l",(function(){return bt})),n.d(e,"g",(function(){return yt})),n.d(e,"m",(function(){return mt})),n.d(e,"v",(function(){return q})),n.d(e,"A",(function(){return M})),n.d(e,"z",(function(){return _t})),n.d(e,"h",(function(){return Ot})),n.d(e,"a",(function(){return nt})),n.d(e,"f",(function(){return it})),n.d(e,"i",(function(){return at})),n.d(e,"k",(function(){return rt})),n.d(e,"o",(function(){return x})),n.d(e,"B",(function(){return T})),n.d(e,"n",(function(){return wt})),n.d(e,"y",(function(){return St}));var a=n("8Y7J"),r=n("cUpR"),i=n("cp0P"),s=n("Cfvw"),o=n("lJxs");const u=new a.InjectionToken("NgValueAccessor");class l{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}const d=new a.InjectionToken("CompositionEventMode");class c{constructor(t,e,n){this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=t=>{},this.onTouched=()=>{},this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const t=Object(r.q)()?Object(r.q)().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}class f{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}reset(t){this.control&&this.control.reset(t)}hasError(t,e){return!!this.control&&this.control.hasError(t,e)}getError(t,e){return this.control?this.control.getError(t,e):null}}class h extends f{get formDirective(){return null}get path(){return null}}function g(){throw new Error("unimplemented")}class p extends f{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null,this._rawValidators=[],this._rawAsyncValidators=[]}get validator(){return g()}get asyncValidator(){return g()}}class b{constructor(t){this._cd=t}get ngClassUntouched(){return!!this._cd.control&&this._cd.control.untouched}get ngClassTouched(){return!!this._cd.control&&this._cd.control.touched}get ngClassPristine(){return!!this._cd.control&&this._cd.control.pristine}get ngClassDirty(){return!!this._cd.control&&this._cd.control.dirty}get ngClassValid(){return!!this._cd.control&&this._cd.control.valid}get ngClassInvalid(){return!!this._cd.control&&this._cd.control.invalid}get ngClassPending(){return!!this._cd.control&&this._cd.control.pending}}class m extends b{constructor(t){super(t)}}class y extends b{constructor(t){super(t)}}function v(t){return null==t||0===t.length}const x=new a.InjectionToken("NgValidators"),_=/^(?=.{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 T{static min(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n<t?{min:{min:t,actual:e.value}}:null}}static max(t){return e=>{if(v(e.value)||v(t))return null;const n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}}static required(t){return v(t.value)?{required:!0}:null}static requiredTrue(t){return!0===t.value?null:{required:!0}}static email(t){return v(t.value)?null:_.test(t.value)?null:{email:!0}}static minLength(t){return e=>{if(v(e.value))return null;const n=e.value?e.value.length:0;return n<t?{minlength:{requiredLength:t,actualLength:n}}:null}}static maxLength(t){return e=>{const n=e.value?e.value.length:0;return n>t?{maxlength:{requiredLength:t,actualLength:n}}:null}}static pattern(t){if(!t)return T.nullValidator;let e,n;return"string"==typeof t?(n="","^"!==t.charAt(0)&&(n+="^"),n+=t,"$"!==t.charAt(t.length-1)&&(n+="$"),e=new RegExp(n)):(n=t.toString(),e=t),t=>{if(v(t.value))return null;const a=t.value;return e.test(a)?null:{pattern:{requiredPattern:n,actualValue:a}}}}static nullValidator(t){return null}static compose(t){if(!t)return null;const e=t.filter(O);return 0==e.length?null:function(t){return S(function(t,e){return e.map(e=>e(t))}(t,e))}}static composeAsync(t){if(!t)return null;const e=t.filter(O);return 0==e.length?null:function(t){const n=function(t,e){return e.map(e=>e(t))}(t,e).map(w);return Object(i.a)(n).pipe(Object(o.a)(S))}}}function O(t){return null!=t}function w(t){const e=Object(a["ɵisPromise"])(t)?Object(s.a)(t):t;if(!Object(a["ɵisObservable"])(e))throw new Error("Expected validator to return Promise or Observable.");return e}function S(t){const e=t.reduce((t,e)=>null!=e?Object.assign({},t,e):t,{});return 0===Object.keys(e).length?null:e}function I(t){return t.validate?e=>t.validate(e):t}function N(t){return t.validate?e=>t.validate(e):t}class C{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}class R{constructor(){this._accessors=[]}add(t,e){this._accessors.push([t,e])}remove(t){for(let e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)}select(t){this._accessors.forEach(e=>{this._isSameGroup(e,t)&&e[1]!==t&&e[1].fireUncheck(t.value)})}_isSameGroup(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name}}class A{constructor(t,e,n,a){this._renderer=t,this._elementRef=e,this._registry=n,this._injector=a,this.onChange=()=>{},this.onTouched=()=>{}}ngOnInit(){this._control=this._injector.get(p),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)}registerOnChange(t){this._fn=t,this.onChange=()=>{t(this.value),this._registry.select(this)}}fireUncheck(t){this.writeValue(t)}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_checkName(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)}_throwNameError(){throw new Error('\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')}}const k='\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });',E='\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });',L='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>';class D{static controlParentException(){throw new Error(`formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      ${k}`)}static ngModelGroupException(){throw new Error(`formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        ${E}\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        ${L}`)}static missingFormException(){throw new Error(`formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       ${k}`)}static groupParentException(){throw new Error(`formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      ${E}`)}static arrayParentException(){throw new Error('formArrayName must be used with a parent formGroup directive.  You\'ll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        \n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; index as i">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });')}static disabledAttrWarning(){console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")}static ngModelWarning(t){console.warn(`\n    It looks like you're using ngModel on the same form field as ${t}. \n    Support for using the ngModel input property and ngModelChange event with \n    reactive form directives has been deprecated in Angular v6 and will be removed \n    in Angular v7.\n    \n    For more information on this, see our API docs here:\n    https://angular.io/api/forms/${"formControl"===t?"FormControlDirective":"FormControlName"}#use-with-ngmodel\n    `)}}function P(t,e){return null==t?`${e}`:(e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class M{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error(`compareWith must be a function, but received ${JSON.stringify(t)}`);this._compareWith=t}writeValue(t){this.value=t;const e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);const n=P(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)}registerOnChange(t){this.onChange=e=>{this.value=this._getOptionValue(e),t(this.value)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e),t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e):t}}class q{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption())}set ngValue(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(P(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function j(t,e){return null==t?`${e}`:("string"==typeof e&&(e=`'${e}'`),e&&"object"==typeof e&&(e="Object"),`${t}: ${e}`.slice(0,50))}class F{constructor(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){null!=this._select&&(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}function G(t,e){return[...e.path,t]}function V(t,e){t||H(e,"Cannot find control with"),e.valueAccessor||H(e,"No value accessor for form control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator]),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(n=>{t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&z(t,e)})}(t,e),function(t,e){t.registerOnChange((t,n)=>{e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&z(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),e.valueAccessor.setDisabledState&&t.registerOnDisabledChange(t=>{e.valueAccessor.setDisabledState(t)}),e._rawValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())}),e._rawAsyncValidators.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(()=>t.updateValueAndValidity())})}function z(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function B(t,e){null==t&&H(e,"Cannot find control with"),t.validator=T.compose([t.validator,e.validator]),t.asyncValidator=T.composeAsync([t.asyncValidator,e.asyncValidator])}function Y(t){return H(t,"There is no FormControl instance attached to form control element with")}function H(t,e){let n;throw n=t.path.length>1?`path: '${t.path.join(" -> ")}'`:t.path[0]?`name: '${t.path}'`:"unspecified name attribute",new Error(`${e} ${n}`)}function U(t){return null!=t?T.compose(t.map(I)):null}function W(t){return null!=t?T.composeAsync(t.map(N)):null}function K(t,e){if(!t.hasOwnProperty("model"))return!1;const n=t.model;return!!n.isFirstChange()||!Object(a["ɵlooseIdentical"])(e,n.currentValue)}const $=[l,class{constructor(t,e){this._renderer=t,this._elementRef=e,this.onChange=t=>{},this.onTouched=()=>{}}writeValue(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(t))}registerOnChange(t){this.onChange=e=>{t(""==e?null:parseFloat(e))}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}},C,M,class{constructor(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=t=>{},this.onTouched=()=>{},this._compareWith=a["ɵlooseIdentical"]}set compareWith(t){if("function"!=typeof t)throw new Error(`compareWith must be a function, but received ${JSON.stringify(t)}`);this._compareWith=t}writeValue(t){let e;if(this.value=t,Array.isArray(t)){const n=t.map(t=>this._getOptionId(t));e=(t,e)=>{t._setSelected(n.indexOf(e.toString())>-1)}}else e=(t,e)=>{t._setSelected(!1)};this._optionMap.forEach(e)}registerOnChange(t){this.onChange=e=>{const n=[];if(e.hasOwnProperty("selectedOptions")){const t=e.selectedOptions;for(let e=0;e<t.length;e++){const a=t.item(e),r=this._getOptionValue(a.value);n.push(r)}}else{const t=e.options;for(let e=0;e<t.length;e++){const a=t.item(e);if(a.selected){const t=this._getOptionValue(a.value);n.push(t)}}}this.value=n,t(n)}}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}_registerOption(t){const e=(this._idCounter++).toString();return this._optionMap.set(e,t),e}_getOptionId(t){for(const e of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(e)._value,t))return e;return null}_getOptionValue(t){const e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e)._value:t}},A];function Z(t,e){t._syncPendingControls(),e.forEach(t=>{const e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)})}function J(t,e){if(!e)return null;Array.isArray(e)||H(t,"Value accessor was not provided as an array for form control with");let n=void 0,a=void 0,r=void 0;return e.forEach(e=>{var i;e.constructor===c?n=e:(i=e,$.some(t=>i.constructor===t)?(a&&H(t,"More than one built-in value accessor matches form control with"),a=e):(r&&H(t,"More than one custom value accessor matches form control with"),r=e))}),r||a||n||(H(t,"No valid value accessor for form control with"),null)}function Q(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}function X(t){const e=et(t)?t.validators:t;return Array.isArray(e)?U(e):e||null}function tt(t,e){const n=et(e)?e.asyncValidators:t;return Array.isArray(n)?W(n):n||null}function et(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class nt{constructor(t,e){this.validator=t,this.asyncValidator=e,this._onCollectionChange=()=>{},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}get parent(){return this._parent}get valid(){return"VALID"===this.status}get invalid(){return"INVALID"===this.status}get pending(){return"PENDING"==this.status}get disabled(){return"DISABLED"===this.status}get enabled(){return"DISABLED"!==this.status}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this.validator=X(t)}setAsyncValidators(t){this.asyncValidator=tt(t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(t=>t.markAllAsTouched())}markAsUntouched(t={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(t=>{t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}markAsDirty(t={}){this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}markAsPristine(t={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(t=>{t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}markAsPending(t={}){this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}disable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="DISABLED",this.errors=null,this._forEachChild(e=>{e.disable(Object.assign({},t,{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!0))}enable(t={}){const e=this._parentMarkedDirty(t.onlySelf);this.status="VALID",this._forEachChild(e=>{e.enable(Object.assign({},t,{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign({},t,{skipPristineCheck:e})),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(t){this._parent=t}updateValueAndValidity(t={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this.status||this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t){if(this.asyncValidator){this.status="PENDING";const e=w(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(e=>this.setErrors(e,{emitEvent:t}))}}_cancelExistingSubscription(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)}get(t){return function(t,e,n){return null==e?null:(e instanceof Array||(e=e.split(".")),e instanceof Array&&0===e.length?null:e.reduce((t,e)=>t instanceof rt?t.controls.hasOwnProperty(e)?t.controls[e]:null:t instanceof it&&t.at(e)||null,t))}(this,t)}getError(t,e){const n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}_initObservables(){this.valueChanges=new a.EventEmitter,this.statusChanges=new a.EventEmitter}_calculateStatus(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t={}){this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}_updateTouched(t={}){this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}_isBoxedValue(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){et(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){return!t&&this._parent&&this._parent.dirty&&!this._parent._anyControlsDirty()}}class at extends nt{constructor(t=null,e,n){super(X(e),tt(n,e)),this._onChange=[],this._applyFormState(t),this._setUpdateStrategy(e),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),this._initObservables()}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(t=>t(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=null,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_clearChangeFns(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=()=>{}}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_forEachChild(t){}_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(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}class rt extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}removeControl(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){this._checkAllValuesPresent(t),Object.keys(t).forEach(n=>{this._throwIfControlMissing(n),this.controls[n].setValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){Object.keys(t).forEach(n=>{this.controls[n]&&this.controls[n].patchValue(t[n],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t={},e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(t,e,n)=>(t[n]=e instanceof at?e.value:e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(t,e)=>!!e._syncPendingControls()||t);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!Object.keys(this.controls).length)throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[t])throw new Error(`Cannot find form control with name: ${t}.`)}_forEachChild(t){Object.keys(this.controls).forEach(e=>t(this.controls[e],e))}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){let e=!1;return this._forEachChild((n,a)=>{e=e||this.contains(a)&&t(n)}),e}_reduceValue(){return this._reduceChildren({},(t,e,n)=>((e.enabled||this.disabled)&&(t[n]=e.value),t))}_reduceChildren(t,e){let n=t;return this._forEachChild((t,a)=>{n=e(n,t,a)}),n}_allControlsDisabled(){for(const t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control with name: '${n}'.`)})}}class it extends nt{constructor(t,e,n){super(X(e),tt(n,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}at(t){return this.controls[t]}push(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()}insert(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()}removeAt(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),this.updateValueAndValidity()}setControl(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){this._checkAllValuesPresent(t),t.forEach((t,n)=>{this._throwIfControlMissing(n),this.at(n).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t.forEach((t,n)=>{this.at(n)&&this.at(n).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}reset(t=[],e={}){this._forEachChild((n,a)=>{n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(t=>t instanceof at?t.value:t.getRawValue())}clear(){this.controls.length<1||(this._forEachChild(t=>t._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity())}_syncPendingControls(){let t=this.controls.reduce((t,e)=>!!e._syncPendingControls()||t,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(t))throw new Error(`Cannot find form control at index ${t}`)}_forEachChild(t){this.controls.forEach((e,n)=>{t(e,n)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_checkAllValuesPresent(t){this._forEachChild((e,n)=>{if(void 0===t[n])throw new Error(`Must supply a value for form control at index: ${n}.`)})}_allControlsDisabled(){for(const t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}}const st=(()=>Promise.resolve(null))();class ot extends h{constructor(t,e){super(),this.submitted=!1,this._directives=[],this.ngSubmit=new a.EventEmitter,this.form=new rt({},U(t),W(e))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){st.then(()=>{const e=this._findContainer(t.path);t.control=e.registerControl(t.name,t.control),V(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.push(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name),Q(this._directives,t)})}addFormGroup(t){st.then(()=>{const e=this._findContainer(t.path),n=new rt({});B(n,t),e.registerControl(t.name,n),n.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){st.then(()=>{const e=this._findContainer(t.path);e&&e.removeControl(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,e){st.then(()=>{this.form.get(t.path).setValue(e)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submitted=!0,Z(this.form,this._directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}}class ut{static modelParentException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup's partner directive "formControlName" instead.  Example:\n\n      ${k}\n\n      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n      Example:\n\n      \n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  `)}static formGroupNameException(){throw new Error(`\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      ${E}\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      ${L}`)}static missingNameException(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')}static modelGroupParentException(){throw new Error(`\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      ${E}\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      ${L}`)}static ngFormWarning(){console.warn("\n    It looks like you're using 'ngForm'.\n\n    Support for using the 'ngForm' element selector has been deprecated in Angular v6 and will be removed\n    in Angular v9.\n\n    Use 'ng-form' instead.\n\n    Before:\n    <ngForm #myForm=\"ngForm\">\n\n    After:\n    <ng-form #myForm=\"ngForm\">\n    ")}}const lt=new a.InjectionToken("NgFormSelectorWarning");class dt extends h{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return G(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){}}class ct extends dt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){this._parent instanceof ct||this._parent instanceof ot||ut.modelGroupParentException()}}const ft=(()=>Promise.resolve(null))();class ht extends p{constructor(t,e,n,r){super(),this.control=new at,this._registered=!1,this.update=new a.EventEmitter,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=J(this,r)}ngOnChanges(t){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in t&&this._updateDisabled(t),K(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?G(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_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(){V(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){!(this._parent instanceof ct)&&this._parent instanceof dt?ut.formGroupNameException():this._parent instanceof ct||this._parent instanceof ot||ut.modelParentException()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||ut.missingNameException()}_updateValue(t){ft.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1})})}_updateDisabled(t){const e=t.isDisabled.currentValue,n=""===e||e&&"false"!==e;ft.then(()=>{n&&!this.control.disabled?this.control.disable():!n&&this.control.disabled&&this.control.enable()})}}class gt{}const pt=new a.InjectionToken("NgModelWithFormControlWarning");class bt extends h{constructor(t,e){super(),this._validators=t,this._asyncValidators=e,this.submitted=!1,this.directives=[],this.form=null,this.ngSubmit=new a.EventEmitter}ngOnChanges(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(t){const e=this.form.get(t.path);return V(e,t),e.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),e}getControl(t){return this.form.get(t.path)}removeControl(t){Q(this.directives,t)}addFormGroup(t){const e=this.form.get(t.path);B(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormGroup(t){}getFormGroup(t){return this.form.get(t.path)}addFormArray(t){const e=this.form.get(t.path);B(e,t),e.updateValueAndValidity({emitEvent:!1})}removeFormArray(t){}getFormArray(t){return this.form.get(t.path)}updateModel(t,e){this.form.get(t.path).setValue(e)}onSubmit(t){return this.submitted=!0,Z(this.form,this.directives),this.ngSubmit.emit(t),!1}onReset(){this.resetForm()}resetForm(t){this.form.reset(t),this.submitted=!1}_updateDomValue(){this.directives.forEach(t=>{const e=this.form.get(t.path);t.control!==e&&(function(t,e){e.valueAccessor.registerOnChange(()=>Y(e)),e.valueAccessor.registerOnTouched(()=>Y(e)),e._rawValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),e._rawAsyncValidators.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),t&&t._clearChangeFns()}(t.control,t),e&&V(e,t),t.control=e)}),this.form._updateTreeValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(()=>this._updateDomValue()),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{}),this._oldForm=this.form}_updateValidators(){const t=U(this._validators);this.form.validator=T.compose([this.form.validator,t]);const e=W(this._asyncValidators);this.form.asyncValidator=T.composeAsync([this.form.asyncValidator,e])}_checkFormPresent(){this.form||D.missingFormException()}}class mt extends dt{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}_checkParentType(){vt(this._parent)&&D.groupParentException()}}class yt extends h{constructor(t,e,n){super(),this._parent=t,this._validators=e,this._asyncValidators=n}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return G(this.name,this._parent)}get validator(){return U(this._validators)}get asyncValidator(){return W(this._asyncValidators)}_checkParentType(){vt(this._parent)&&D.arrayParentException()}}function vt(t){return!(t instanceof mt||t instanceof bt||t instanceof yt)}let xt=(()=>{class t extends p{constructor(t,e,n,r,i){super(),this._ngModelWarningConfig=i,this._added=!1,this.update=new a.EventEmitter,this._ngModelWarningSent=!1,this._parent=t,this._rawValidators=e||[],this._rawAsyncValidators=n||[],this.valueAccessor=J(this,r)}set isDisabled(t){D.disabledAttrWarning()}ngOnChanges(e){var n,r;this._added||this._setUpControl(),K(e,this.viewModel)&&("formControlName",n=t,this,r=this._ngModelWarningConfig,Object(a.isDevMode)()&&"never"!==r&&((null!==r&&"once"!==r||n._ngModelWarningSentOnce)&&("always"!==r||this._ngModelWarningSent)||(D.ngModelWarning("formControlName"),n._ngModelWarningSentOnce=!0,this._ngModelWarningSent=!0)),this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}get path(){return G(this.name,this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}get validator(){return U(this._rawValidators)}get asyncValidator(){return W(this._rawAsyncValidators)}_checkParentType(){!(this._parent instanceof mt)&&this._parent instanceof dt?D.ngModelGroupException():this._parent instanceof mt||this._parent instanceof bt||this._parent instanceof yt||D.controlParentException()}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0}}return t._ngModelWarningSentOnce=!1,t})();class _t{get required(){return this._required}set required(t){this._required=null!=t&&!1!==t&&"false"!==`${t}`,this._onChange&&this._onChange()}validate(t){return this.required?T.required(t):null}registerOnValidatorChange(t){this._onChange=t}}class Tt{}class Ot{group(t,e=null){const n=this._reduceControls(t);let a=null,r=null,i=void 0;return null!=e&&(function(t){return void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn}(e)?(a=null!=e.validators?e.validators:null,r=null!=e.asyncValidators?e.asyncValidators:null,i=null!=e.updateOn?e.updateOn:void 0):(a=null!=e.validator?e.validator:null,r=null!=e.asyncValidator?e.asyncValidator:null)),new rt(n,{asyncValidators:r,updateOn:i,validators:a})}control(t,e,n){return new at(t,e,n)}array(t,e,n){const a=t.map(t=>this._createControl(t));return new it(a,e,n)}_reduceControls(t){const e={};return Object.keys(t).forEach(n=>{e[n]=this._createControl(t[n])}),e}_createControl(t){return t instanceof at||t instanceof rt||t instanceof it?t:Array.isArray(t)?this.control(t[0],t.length>1?t[1]:null,t.length>2?t[2]:null):this.control(t)}}class wt{static withConfig(t){return{ngModule:wt,providers:[{provide:lt,useValue:t.warnOnDeprecatedNgFormSelector}]}}}class St{static withConfig(t){return{ngModule:St,providers:[{provide:pt,useValue:t.warnOnNgModelWithFormControl}]}}}},sEFX:function(t,e,n){"use strict";var a=n("AO7/"),r=n("9d/t");t.exports=a?{}.toString:function(){return"[object "+r(this)+"]"}},sEf8:function(t,e){t.exports=function(t){return function(e){return t(e)}}},sEfC:function(t,e,n){var a=n("GoyQ"),r=n("QIyF"),i=n("tLB3"),s=Math.max,o=Math.min;t.exports=function(t,e,n){var u,l,d,c,f,h,g=0,p=!1,b=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function y(e){var n=u,a=l;return u=l=void 0,g=e,c=t.apply(a,n)}function v(t){return g=t,f=setTimeout(_,e),p?y(t):c}function x(t){var n=t-h;return void 0===h||n>=e||n<0||b&&t-g>=d}function _(){var t=r();if(x(t))return T(t);f=setTimeout(_,function(t){var n=e-(t-h);return b?o(n,d-(t-g)):n}(t))}function T(t){return f=void 0,m&&u?y(t):(u=l=void 0,c)}function O(){var t=r(),n=x(t);if(u=arguments,l=this,h=t,n){if(void 0===f)return v(h);if(b)return clearTimeout(f),f=setTimeout(_,e),y(h)}return void 0===f&&(f=setTimeout(_,e)),c}return e=i(e)||0,a(n)&&(p=!!n.leading,d=(b="maxWait"in n)?s(i(n.maxWait)||0,e):d,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==f&&clearTimeout(f),g=0,u=h=l=f=void 0},O.flush=function(){return void 0===f?c:T(r())},O}},sLuX:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("25BL"),i=n("uIqm");n("FSuO"),n("a0VL"),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return o}));var s=a["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function o(t){return a["ɵvid"](0,[a["ɵqud"](402653184,1,{table:0}),(t()(),a["ɵeld"](1,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,r.b,r.a)),a["ɵdid"](2,2867200,[[1,4],["table",4]],0,i.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],header:[4,"header"],footer:[5,"footer"],limit:[6,"limit"],autoReload:[7,"autoReload"],autoSave:[8,"autoSave"],customCss:[9,"customCss"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.tableData,n.columns,"flex",!1,!1,!1,0,n.autoReload,!1,n.customCss)}),null)}},sMBO:function(t,e,n){var a=n("g6v/"),r=n("m/L8").f,i=Function.prototype,s=i.toString,o=/^\s*function ([^ (]*)/;!a||"name"in i||r(i,"name",{configurable:!0,get:function(){try{return s.call(this).match(o)[1]}catch(t){return""}}})},sVev:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=(()=>{function t(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return t.prototype=Object.create(Error.prototype),t})()},sb0X:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("s7LF"),i=n("oxzT"),s=n("LvDl");class o{constructor(t){this.elRef=t,this.type="submit",this.disabled=!1,this.submitAction=new a.EventEmitter,this.loading=!1,this.icons=i.a}ngOnInit(){this.form.statusChanges.subscribe(()=>{s.has(this.form.errors,"cdSubmitButton")&&(this.loading=!1,s.unset(this.form.errors,"cdSubmitButton"),this.form instanceof r.a&&this.form.updateValueAndValidity())})}submit(t){this.focusButton(),this.form instanceof r.l&&this.form.onSubmit(t),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())}focusButton(){this.elRef.nativeElement.offsetParent.querySelector(`button[type="${this.type}"]`).focus()}focusInvalid(){const t=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");t&&t.focus()}}},seXi:function(t,e,n){var a=n("qZTm"),r=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,i,s,o){var u=1&n,l=a(t),d=l.length;if(d!=a(e).length&&!u)return!1;for(var c=d;c--;){var f=l[c];if(!(u?f in e:r.call(e,f)))return!1}var h=o.get(t);if(h&&o.get(e))return h==e;var g=!0;o.set(t,e),o.set(e,t);for(var p=u;++c<d;){var b=t[f=l[c]],m=e[f];if(i)var y=u?i(m,b,f,e,t,o):i(b,m,f,t,e,o);if(!(void 0===y?b===m||s(b,m,n,i,o):y)){g=!1;break}p||(p="constructor"==f)}if(g&&!p){var v=t.constructor,x=e.constructor;v!=x&&"constructor"in t&&"constructor"in e&&!("function"==typeof v&&v instanceof v&&"function"==typeof x&&x instanceof x)&&(g=!1)}return o.delete(t),o.delete(e),g}},shjB:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},sne2:function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"e",(function(){return s})),n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return u})),n.d(e,"d",(function(){return l}));var a=n("8Y7J"),r=n("GiVz");let i=(()=>{class t{}return t.organization="ceph",t.projectName="Ceph Dashboard",t.license="Free software (LGPL 2.1).",t})();var s=function(t){return t.CREATE="create",t.EDIT="edit",t.UPDATE="update",t.REMOVE="remove",t.DELETE="delete",t.ADD="add",t.COPY="copy",t.CLONE="clone",t.RECREATE="recreate",t.EXPIRE="expire",t}({}),o=function(t){return t.CREATE="Create",t.DELETE="Delete",t.ADD="Add",t.REMOVE="Remove",t.EDIT="Edit",t.CANCEL="Cancel",t.COPY="Copy",t.CLONE="Clone",t.UPDATE="Update",t.EVICT="Evict",t.SHOW="Show",t.RECREATE="Recreate",t.EXPIRE="Expire",t}({});let u=(()=>{class t{constructor(t){this.i18n=t,this.CREATE=this.i18n("Create"),this.DELETE=this.i18n("Delete"),this.ADD=this.i18n("Add"),this.SET=this.i18n("Set"),this.REMOVE=this.i18n("Remove"),this.UNSET=this.i18n("Unset"),this.EDIT=this.i18n("Edit"),this.UPDATE=this.i18n("Update"),this.CANCEL=this.i18n("Cancel"),this.CLONE=this.i18n("Clone"),this.COPY=this.i18n("Copy"),this.DEEP_SCRUB=this.i18n("Deep Scrub"),this.DESTROY=this.i18n("Destroy"),this.EVICT=this.i18n("Evict"),this.FLATTEN=this.i18n("Flatten"),this.MARK_DOWN=this.i18n("Mark Down"),this.MARK_IN=this.i18n("Mark In"),this.MARK_LOST=this.i18n("Mark Lost"),this.MARK_OUT=this.i18n("Mark Out"),this.PROTECT=this.i18n("Protect"),this.PURGE=this.i18n("Purge"),this.RENAME=this.i18n("Rename"),this.RESTORE=this.i18n("Restore"),this.REWEIGHT=this.i18n("Reweight"),this.ROLLBACK=this.i18n("Rollback"),this.SCRUB=this.i18n("Scrub"),this.SHOW=this.i18n("Show"),this.TRASH=this.i18n("Move to Trash"),this.UNPROTECT=this.i18n("Unprotect"),this.CHANGE=this.i18n("Change"),this.RECREATE=this.i18n("Recreate"),this.EXPIRE=this.i18n("Expire")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})(),l=(()=>{class t{constructor(t){this.i18n=t,this.CREATED=this.i18n("Created"),this.DELETED=this.i18n("Deleted"),this.ADDED=this.i18n("Added"),this.REMOVED=this.i18n("Removed"),this.EDITED=this.i18n("Edited"),this.CANCELED=this.i18n("Canceled"),this.CLONED=this.i18n("Cloned"),this.COPIED=this.i18n("Copied"),this.DEEP_SCRUBBED=this.i18n("Deep Scrubbed"),this.DESTROYED=this.i18n("Destroyed"),this.FLATTENED=this.i18n("Flattened"),this.MARKED_DOWN=this.i18n("Marked Down"),this.MARKED_IN=this.i18n("Marked In"),this.MARKED_LOST=this.i18n("Marked Lost"),this.MARKED_OUT=this.i18n("Marked Out"),this.PROTECTED=this.i18n("Protected"),this.PURGED=this.i18n("Purged"),this.RENAMED=this.i18n("Renamed"),this.RESTORED=this.i18n("Restored"),this.REWEIGHTED=this.i18n("Reweighted"),this.ROLLED_BACK=this.i18n("Rolled back"),this.SCRUBBED=this.i18n("Scrubbed"),this.SHOWED=this.i18n("Showed"),this.TRASHED=this.i18n("Moved to Trash"),this.UNPROTECTED=this.i18n("Unprotected"),this.CHANGE=this.i18n("Change"),this.RECREATED=this.i18n("Recreated"),this.EXPIRED=this.i18n("Expired")}}return t.ngInjectableDef=a["ɵɵdefineInjectable"]({factory:function(){return new t(a["ɵɵinject"](r.a))},token:t,providedIn:"root"}),t})()},sp3z:function(t,e,n){!function(t){"use strict";t.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(t){return"ຕອນແລງ"===t},meridiem:function(t,e,n){return t<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(t){return"ທີ່"+t}})}(n("wd/R"))},"t/zF":function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e){this.name=t,this.metadata=e}}},t2Dn:function(t,e,n){var a=n("hypo"),r=n("ljhN");t.exports=function(t,e,n){(void 0===n||r(t[e],n))&&(void 0!==n||e in t)||a(t,e,n)}},tAZD:function(t,e,n){var a,r,i;!function(s){if("object"==typeof t.exports){var o=s(0,e);void 0!==o&&(t.exports=o)}else r=[n,e],void 0===(i="function"==typeof(a=s)?a.apply(e,r):a)||(t.exports=i)}((function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=void 0;e.default=["en",[["a","p"],["AM","PM"],n],[["AM","PM"],n,n],[["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"]],n,[["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"]],n,[["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}",n,"{1} 'at' {0}",n],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"$","US Dollar",{},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}]}))},tGlX:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},tLB3:function(t,e,n){var a=n("GoyQ"),r=n("/9aa"),i=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(r(t))return NaN;if(a(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=a(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(i,"");var n=o.test(t);return n||u.test(t)?l(t.slice(2),n?2:8):s.test(t)?NaN:+t}},tMB7:function(t,e,n){var a=n("y1pI");t.exports=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]}},tT3J:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("wd/R"))},tUCv:function(t,e,n){!function(t){"use strict";t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("wd/R"))},tadb:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"DataView");t.exports=a},tiKp:function(t,e,n){var a=n("2oRo"),r=n("VpIT"),i=n("UTVS"),s=n("kOOl"),o=n("STAE"),u=n("/b8u"),l=r("wks"),d=a.Symbol,c=u?d:d&&d.withoutSetter||s;t.exports=function(t){return i(l,t)||(l[t]=o&&i(d,t)?d[t]:c("Symbol."+t)),l[t]}},tycR:function(t,e,n){var a=n("A2ZE"),r=n("RK3t"),i=n("ewvW"),s=n("UMSQ"),o=n("ZfDv"),u=[].push,l=function(t){var e=1==t,n=2==t,l=3==t,d=4==t,c=6==t,f=5==t||c;return function(h,g,p,b){for(var m,y,v=i(h),x=r(v),_=a(g,p,3),T=s(x.length),O=0,w=b||o,S=e?w(h,T):n?w(h,0):void 0;T>O;O++)if((f||O in x)&&(y=_(m=x[O],O,v),t))if(e)S[O]=y;else if(y)switch(t){case 3:return!0;case 5:return m;case 6:return O;case 2:u.call(S,m)}else if(d)return!1;return c?-1:l||d?d:S}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6)}},tz6c:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("2Vo4"),r=n("pLZG"),i=n("lJxs"),s=n("SxV6"),o=n("+0ag"),u=n("mSOc"),l=n("8Y7J");let d=(()=>{class t{constructor(t,e){this.summaryservice=t,this.cephReleaseNamePipe=e,this.releaseDataSource=new a.a(null),this.releaseData$=this.releaseDataSource.asObservable(),this.summaryservice.subscribeOnce(t=>{const e=this.cephReleaseNamePipe.transform(t.version);this.releaseDataSource.next(e)})}urlGenerator(t,e){const n=`http://docs.ceph.com/docs/${t}/`;return{iscsi:`${n}mgr/dashboard/#enabling-iscsi-management`,prometheus:`${n}mgr/dashboard/#enabling-prometheus-alerting`,"nfs-ganesha":`${n}mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard`,"rgw-nfs":`${n}radosgw/nfs`,rgw:`${n}mgr/dashboard/#enabling-the-object-gateway-management-frontend`,dashboard:`${n}mgr/dashboard`,grafana:`${n}mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards`,orch:`${n}mgr/orchestrator`,pgs:"http://ceph.com/pgcalc"}[e]}subscribeOnce(t,e,n){return this.releaseData$.pipe(Object(r.a)(t=>!!t),Object(i.a)(e=>this.urlGenerator(e,t)),Object(s.a)()).subscribe(e,n)}}return t.ngInjectableDef=l["ɵɵdefineInjectable"]({factory:function(){return new t(l["ɵɵinject"](u.a),l["ɵɵinject"](o.a))},token:t,providedIn:"root"}),t})()},u3GI:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},u8Dt:function(t,e,n){var a=n("YESw"),r=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(a){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return r.call(e,t)?e[t]:void 0}},uEye:function(t,e,n){!function(t){"use strict";t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uIqm:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("w9WL"),i=n("LvDl"),s=n("PqYM"),o=n("HDdC"),u=n("oxzT"),l=n("x38r");class d{constructor(t){this.errorConfig={resetData:!0,displayError:!0},this.error=t}}var c=n("vCyI");n.d(e,"a",(function(){return f}));class f{constructor(t,e){this.ngZone=t,this.cdRef=e,this.columnMode="flex",this.onlyActionHeader=!1,this.toolHeader=!0,this.searchField=!0,this.header=!0,this.footer=!0,this.limit=10,this.hasDetails=!1,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.updateExpandedOnRefresh="onChange",this.autoSave=!0,this.searchableObjects=!1,this.extraFilterableColumns=[],this.fetchData=new a.EventEmitter,this.updateSelection=new a.EventEmitter,this.setExpandedRow=new a.EventEmitter,this.columnFiltersChanged=new a.EventEmitter,this.selection=new c.a,this.expanded=void 0,this.icons=u.a,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.loadingError=!1,this.paginationClasses={pagerLeftArrow:u.a.leftArrowDouble,pagerRightArrow:u.a.rightArrowDouble,pagerPrevious:u.a.leftArrow,pagerNext:u.a.rightArrow},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1,this.columnFilters=[]}get columnFiltered(){return i.some(this.columnFilters,t=>void 0!==t.value)}static prepareSearch(t){return(t=t.toLowerCase().replace(/,/g,"")).match(/['"][^'"]+['"]/)&&(t=t.replace(/['"][^'"]+['"]/g,t=>t.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+"))),t.split(" ").filter(t=>t)}ngOnInit(){if(this.table.element.addEventListener("mouseenter",t=>t.stopPropagation(),!0),this._addTemplates(),!this.sorts){const t=-1!==i.findIndex(this.columns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(t?this.identifier:this.columns[0].prop+""),t||this.forceIdentifier||(this.identifier=this.columns[0].prop+"")}this.initUserConfig(),this.columns.forEach(t=>{t.cellTransformation&&(t.cellTemplate=this.cellTemplates[t.cellTransformation]),t.flexGrow||(t.flexGrow=t.prop+""===this.identifier?1:2),t.resizeable||(t.resizeable=!1)}),this.initExpandCollapseColumn(),this.initCheckboxColumn(),this.filterHiddenColumns(),this.initColumnFilters(),this.updateColumnFilterOptions(),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),i.isInteger(this.autoReload)&&this.autoReload>0?this.ngZone.runOutsideAngular(()=>{this.reloadSubscriber=Object(s.a)(0,this.autoReload).subscribe(()=>{this.ngZone.run(()=>this.reloadData())})}):this.autoReload?this.useData():this.reloadData()}initUserConfig(){this.autoSave&&(this.tableName=this._calculateUniqueTableName(this.columns),this._loadUserConfig(),this._initUserConfigAutoSave()),this.userConfig.limit||(this.userConfig.limit=this.limit),this.userConfig.sorts||(this.userConfig.sorts=this.sorts),this.userConfig.columns?this.columns.forEach((t,e)=>{t.isHidden=this.userConfig.columns[e].isHidden}):this.updateUserColumns()}_calculateUniqueTableName(t){const e=t=>{if(!i.isString(t))return 0;let e=0;for(let n=0;n<t.length;n++)e+=t.charCodeAt(n)*n;return e};return t.reduce((t,n,a)=>(e(n.prop)+e(n.name))*(a+1)+t,0).toString()}_loadUserConfig(){const t=this.localStorage.getItem(this.tableName);t&&(this.userConfig=JSON.parse(t))}_initUserConfigAutoSave(){const t=o.a.create(this._initUserConfigProxy.bind(this));this.saveSubscriber=t.subscribe(this._saveUserConfig.bind(this))}_initUserConfigProxy(t){this.userConfig=new Proxy(this.userConfig,{set:(e,n,a)=>(e[n]=a,t.next(e),!0)})}_saveUserConfig(t){this.localStorage.setItem(this.tableName,JSON.stringify(t))}updateUserColumns(){this.userConfig.columns=this.columns.map(t=>({prop:t.prop,name:t.name,isHidden:!!t.isHidden}))}initCheckboxColumn(){"multiClick"===this.selectionType&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,checkboxable:!0,canAutoResize:!1,cellClass:"cd-datatable-checkbox",width:30})}initExpandCollapseColumn(){this.hasDetails&&this.columns.unshift({prop:void 0,resizeable:!1,sortable:!1,draggable:!1,isHidden:!1,canAutoResize:!1,cellClass:"cd-datatable-expand-collapse",width:40,cellTemplate:this.rowDetailsTpl})}filterHiddenColumns(){this.tableColumns=this.columns.filter(t=>!t.isHidden)}initColumnFilters(){let t=i.filter(this.columns,{filterable:!0});t=[...t,...this.extraFilterableColumns],this.columnFilters=t.map(t=>({column:t,options:[],value:t.filterInitValue?this.createColumnFilterOption(t.filterInitValue,t.pipe):void 0})),this.selectedFilter=i.first(this.columnFilters)}createColumnFilterOption(t,e){return{raw:i.toString(t),formatted:e?e.transform(t):i.toString(t)}}updateColumnFilterOptions(){this.columnFilters.forEach(t=>{let e=[];if(i.isUndefined(t.column.filterOptions)){const n=i.filter(i.map(this.data,t.column.prop),t=>i.isString(t)&&""!==t||i.isBoolean(t)||i.isFinite(t)||i.isDate(t));e=i.sortedUniq(n.sort())}else e=t.column.filterOptions;const n=e.map(e=>this.createColumnFilterOption(e,t.column.pipe));t.value&&i.isUndefined(i.find(n,{raw:t.value.raw}))&&(t.value=void 0),t.options=n})}onSelectFilter(t){this.selectedFilter=t}onChangeFilter(t,e){t.value=i.isEqual(t.value,e)?void 0:e,this.updateFilter()}doColumnFiltering(){const t=[];let e=[...this.data],n=[];return this.columnFilters.forEach(a=>{if(void 0===a.value)return;t.push({name:a.column.name,prop:a.column.prop,value:a.value});const s=i.partition(e,t=>{const e=Object(r.C)(a.column.prop)(t,a.column.prop);return i.isUndefined(a.column.filterPredicate)?`${e}`===a.value.raw:a.column.filterPredicate(t,a.value.raw)});e=s[0],n=[...n,...s[1]]}),this.columnFiltersChanged.emit({filters:t,data:e,dataOut:n}),i.forEach(this.selection.selected,t=>{void 0===i.find(e,{[this.identifier]:t[this.identifier]})&&(this.selection=new c.a,this.onSelect(this.selection))}),e}ngOnDestroy(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()}ngAfterContentChecked(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate(),i.get(this.table,"cd").markForCheck())}_addTemplates(){this.cellTemplates.bold=this.tableCellBoldTpl,this.cellTemplates.checkIcon=this.checkIconTpl,this.cellTemplates.sparkline=this.sparklineTpl,this.cellTemplates.routerLink=this.routerLinkTpl,this.cellTemplates.perSecond=this.perSecondTpl,this.cellTemplates.executing=this.executingTpl,this.cellTemplates.classAdding=this.classAddingTpl,this.cellTemplates.badge=this.badgeTpl,this.cellTemplates.map=this.mapTpl,this.cellTemplates.truncate=this.truncateTpl}useCustomClass(t){if(!this.customCss)throw new Error("Custom classes are not set!");const e=Object.keys(this.customCss),n=Object.values(this.customCss).map((n,a)=>(i.isFunction(n)&&n(t)||n===t)&&e[a]).filter(t=>t).join(" ");return i.isEmpty(n)?void 0:n}ngOnChanges(){this.useData()}setLimit(t){const e=parseInt(t.target.value,10);e>0&&(this.userConfig.limit=e)}reloadData(){if(!this.updating){this.loadingError=!1;const t=new d(()=>{this.loadingError=t.errorConfig.displayError,t.errorConfig.resetData&&(this.data=[]),this.useData()});this.fetchData.emit(t),this.updating=!0}}refreshBtn(){this.loadingIndicator=!0,this.reloadData()}rowIdentity(){return t=>{const e=t[this.identifier];if(i.isUndefined(e))throw new Error(`Wrong identifier "${this.identifier}" -> "${e}"`);return e}}useData(){this.data&&(this.updateColumnFilterOptions(),this.updateFilter(),this.reset(),this.updateSelected(),this.updateExpanded())}reset(){this.loadingIndicator=!1,this.updating=!1}updateSelected(){if("never"===this.updateSelectionOnRefresh)return;const t=[];this.selection.selected.forEach(e=>{for(const n of this.data)e[this.identifier]===n[this.identifier]&&t.push(n)}),"onChange"===this.updateSelectionOnRefresh&&i.isEqual(this.selection.selected,t)||(this.selection.selected=t,this.onSelect(this.selection))}updateExpanded(){if(i.isUndefined(this.expanded)||"never"===this.updateExpandedOnRefresh)return;const t=this.expanded[this.identifier],e=i.find(this.data,e=>t===e[this.identifier]);"onChange"===this.updateExpandedOnRefresh&&i.isEqual(this.expanded,e)||(this.expanded=e,this.setExpandedRow.emit(e))}onSelect(t){this.selection.selected=t.selected,this.updateSelection.emit(i.clone(this.selection))}toggleColumn(t){const e=t.target.name,n=!t.target.checked;n&&1===this.tableColumns.length?t.target.checked=!0:(i.find(this.columns,t=>t.prop===e).isHidden=n,this.updateColumns())}updateColumns(){this.updateUserColumns(),this.filterHiddenColumns();const t=this.userConfig.sorts[0].prop;i.find(this.tableColumns,e=>e.prop===t)||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop)),this.table.recalculate(),this.cdRef.detectChanges()}createSortingDefinition(t){return[{prop:t,dir:r.A.asc}]}changeSorting({sorts:t}){this.userConfig.sorts=t}onClearSearch(){this.search="",this.updateFilter()}onClearFilters(){this.columnFilters.forEach(t=>{t.value=void 0}),this.selectedFilter=i.first(this.columnFilters),this.updateFilter()}updateFilter(){let t=0!==this.columnFilters.length?this.doColumnFiltering():this.data;if(this.search.length>0&&t){const e=this.columns.filter(t=>t.cellTransformation!==l.a.sparkline);t=this.subSearch(t,f.prepareSearch(this.search),e),this.table.offset=0}this.rows=t}subSearch(t,e,n){if(0===e.length||0===t.length)return t;const a=e.pop().replace(/\+/g," ").split(":"),r=[...n];return 2===a.length&&(n=r.filter(t=>-1!==t.name.toLowerCase().indexOf(a[0]))),t=this.basicDataSearch(i.last(a),t,n),this.subSearch(t,e,r)}basicDataSearch(t,e,n){return 0===t.length?e:e.filter(e=>n.filter(n=>{let a=i.get(e,n.prop);if(i.isUndefined(n.pipe)||(a=n.pipe.transform(a)),i.isUndefined(a)||i.isNull(a))return!1;if(i.isArray(a)?a=a.join(" "):(i.isNumber(a)||i.isBoolean(a))&&(a=a.toString()),i.isObjectLike(a)){if(!this.searchableObjects)return!1;a=JSON.stringify(a)}return-1!==a.toLowerCase().indexOf(t)}).length>0)}getRowClass(){return()=>({clickable:!i.isUndefined(this.selectionType)})}toggleExpandRow(t,e){e?(this.expanded=void 0,this.setExpandedRow.emit(void 0)):(this.expanded=t,this.table.rowDetail.collapseAllRows(),this.setExpandedRow.emit(t)),this.table.rowDetail.toggleExpandRow(t)}}},uNpg:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Component)({selector:"tree-node-checkbox",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <ng-container *treeMobxAutorun="{ dontDetach: true }">\n      <input\n        class="tree-node-checkbox"\n        type="checkbox"\n        (click)="node.mouseAction(\'checkboxClick\', $event)"\n        [checked]="node.isSelected"\n        [indeterminate]="node.isPartiallySelected"\n      />\n    </ng-container>\n  '})],t)}()},uXwI:function(t,e,n){!function(t){"use strict";var e={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(t,e,n){return n?e%10==1&&e%100!=11?t[2]:t[3]:e%10==1&&e%100!=11?t[0]:t[1]}function a(t,a,r){return t+" "+n(e[r],t,a)}function r(t,a,r){return n(e[r],t,a)}t.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(t,e){return e?"dažas sekundes":"dažām sekundēm"},ss:a,m:r,mm:a,h:r,hh:a,d:r,dd:a,M:r,MM:a,y:r,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uYzU:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(){}transform(t){switch(t){case"user:rbd":return"user:rbd (tcmu-runner)";default:return t}}}},ufoC:function(t,e,n){"use strict";var a=function(t){return t.auth="Login",t.cephfs="CephFS",t.rbd="RBD",t.pool="Pool",t.osd="OSD",t.role="Role",t.user="User",t}({}),r=n("jVDg"),i=n("8Y7J"),s=n("GiVz");n.d(e,"a",(function(){return l}));class o{constructor(t,e,n){this.running=t,this.failure=e,this.success=n}}class u{failure(t){return this.i18n("Failed to {{failure}} {{metadata}}",{failure:this.operation.failure,metadata:this.involves(t)})}running(t){return`${this.operation.running} ${this.involves(t)}`}success(t){return`${this.operation.success} ${this.involves(t)}`}constructor(t,e,n,a){this.i18n=t,this.operation=e,this.involves=n,this.errors=a||(()=>({}))}}let l=(()=>{class t{constructor(t){this.i18n=t,this.defaultMessage=this.newTaskMessage(new o(this.i18n("Executing"),this.i18n("execute"),this.i18n("Executed")),t=>t&&(a[t.component]||t.component)||this.i18n("unknown task"),()=>({})),this.commonOperations={create:new o(this.i18n("Creating"),this.i18n("create"),this.i18n("Created")),update:new o(this.i18n("Updating"),this.i18n("update"),this.i18n("Updated")),delete:new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),add:new o(this.i18n("Adding"),this.i18n("add"),this.i18n("Added")),remove:new o(this.i18n("Removing"),this.i18n("remove"),this.i18n("Removed")),import:new o(this.i18n("Importing"),this.i18n("import"),this.i18n("Imported"))},this.rbd={default:t=>this.i18n("RBD '{{id}}'",{id:`${t.image_spec}`}),create:t=>{const e=new r.a(t.pool_name,t.namespace,t.image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},child:t=>{const e=new r.a(t.child_pool_name,t.child_namespace,t.child_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},destination:t=>{const e=new r.a(t.dest_pool_name,t.dest_namespace,t.dest_image_name).toString();return this.i18n("RBD '{{id}}'",{id:e})},snapshot:t=>this.i18n("RBD snapshot '{{id}}'",{id:`${t.image_spec}@${t.snapshot_name}`})},this.rbd_mirroring={site_name:()=>this.i18n("mirroring site name"),bootstrap:()=>this.i18n("bootstrap token"),pool:t=>this.i18n("mirror mode for pool '{{id}}'",{id:`${t.pool_name}`}),pool_peer:t=>this.i18n("mirror peer for pool '{{id}}'",{id:`${t.pool_name}`})},this.grafana={update_dashboards:()=>this.i18n("all dashboards")},this.messages={"host/create":this.newTaskMessage(this.commonOperations.create,t=>this.host(t)),"host/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.host(t)),"osd/create":this.newTaskMessage(this.commonOperations.create,t=>this.i18n("OSDs (DriveGroups: {{tracking_id}})",{tracking_id:t.tracking_id})),"osd/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.osd(t)),"pool/create":this.newTaskMessage(this.commonOperations.create,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/edit":this.newTaskMessage(this.commonOperations.update,t=>this.pool(t),t=>({17:this.i18n("Name is already used by {{pool_name}}.",{pool_name:this.pool(t)})})),"pool/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.pool(t)),"ecp/create":this.newTaskMessage(this.commonOperations.create,t=>this.ecp(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.ecp(t)})})),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.ecp(t)),"crushRule/create":this.newTaskMessage(this.commonOperations.create,t=>this.crushRule(t),t=>({17:this.i18n("Name is already used by {{name}}.",{name:this.crushRule(t)})})),"crushRule/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.crushRule(t)),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.create,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.create(t)})})),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.default(t)})})),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,t=>({16:this.i18n("{{rbd_name}} is busy.",{rbd_name:this.rbd.default(t)}),39:this.i18n("{{rbd_name}} contains snapshots.",{rbd_name:this.rbd.default(t)})})),"rbd/clone":this.newTaskMessage(new o(this.i18n("Cloning"),this.i18n("clone"),this.i18n("Cloned")),this.rbd.child,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.child(t)}),22:this.i18n("Snapshot of {{rbd_name}} must be protected.",{rbd_name:this.rbd.child(t)})})),"rbd/copy":this.newTaskMessage(new o(this.i18n("Copying"),this.i18n("copy"),this.i18n("Copied")),this.rbd.destination,t=>({17:this.i18n("Name is already used by {{rbd_name}}.",{rbd_name:this.rbd.destination(t)})})),"rbd/flatten":this.newTaskMessage(new o(this.i18n("Flattening"),this.i18n("flatten"),this.i18n("Flattened")),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,t=>({17:this.i18n("Name is already used by {{snap_name}}.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,t=>({16:this.i18n("Cannot unprotect {{snap_name}} because it contains child images.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,t=>({16:this.i18n("Cannot delete {{snap_name}} because it's protected.",{snap_name:this.rbd.snapshot(t)})})),"rbd/snap/rollback":this.newTaskMessage(new o(this.i18n("Rolling back"),this.i18n("rollback"),this.i18n("Rolled back")),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new o(this.i18n("Moving"),this.i18n("move"),this.i18n("Moved")),t=>this.i18n("image '{{id}}' to trash",{id:t.image_spec}),()=>({2:this.i18n("Could not find image.")})),"rbd/trash/restore":this.newTaskMessage(new o(this.i18n("Restoring"),this.i18n("restore"),this.i18n("Restored")),t=>this.i18n("image '{{id}}' into '{{new_id}}'",{id:t.image_id_spec,new_id:t.new_image_name}),t=>({17:this.i18n("Image name '{{id}}' is already in use.",{id:t.new_image_name})})),"rbd/trash/remove":this.newTaskMessage(new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),t=>this.i18n("image '{{id}}'",{id:`${t.image_id_spec}`})),"rbd/trash/purge":this.newTaskMessage(new o(this.i18n("Purging"),this.i18n("purge"),this.i18n("Purged")),t=>{let e=this.i18n("all pools");return t.pool_name&&(e=`'${t.pool_name}'`),this.i18n("images from {{message}}",{message:e})}),"rbd/mirroring/site_name/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.site_name,()=>({})),"rbd/mirroring/bootstrap/create":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/bootstrap/import":this.newTaskMessage(this.commonOperations.import,this.rbd_mirroring.bootstrap,()=>({})),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,()=>({16:this.i18n("Cannot disable mirroring because it contains a peer.")})),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,()=>({})),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,()=>({})),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,t=>this.iscsiTarget(t)),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,t=>this.iscsiTarget(t)),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.iscsiTarget(t)),"nfs/create":this.newTaskMessage(this.commonOperations.create,t=>this.nfs(t)),"nfs/edit":this.newTaskMessage(this.commonOperations.update,t=>this.nfs(t)),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,t=>this.nfs(t)),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,()=>({})),"orchestrator/identify_device":this.newTaskMessage(new o(this.i18n("Identifying"),this.i18n("identify"),this.i18n("Identified")),t=>this.i18n("device '{{device}}' on host '{{hostname}}'",t))}}newTaskMessage(t,e,n){return new u(this.i18n,t,e,n)}host(t){return this.i18n("host '{{hostname}}'",{hostname:t.hostname})}osd(t){return this.i18n("OSD '{{svc_id}}'",{svc_id:t.svc_id})}pool(t){return this.i18n("pool '{{pool_name}}'",{pool_name:t.pool_name})}ecp(t){return this.i18n("erasure code profile '{{name}}'",{name:t.name})}crushRule(t){return this.i18n("crush rule '{{name}}'",{name:t.name})}iscsiTarget(t){return this.i18n("target '{{target_iqn}}'",{target_iqn:t.target_iqn})}nfs(t){return this.i18n("NFS {{nfs_id}}",{nfs_id:`'${t.cluster_id}:${t.export_id?t.export_id:t.path}'`})}_getTaskTitle(t){return t.name&&t.name.startsWith("progress/")?this.newTaskMessage(new o(t.name.replace("progress/",""),"",t.name.replace("progress/","")),t=>""):this.messages[t.name]||this.defaultMessage}getSuccessTitle(t){return this._getTaskTitle(t).success(t.metadata)}getErrorMessage(t){return this._getTaskTitle(t).errors(t.metadata)[t.exception.code]||t.exception.detail}getErrorTitle(t){return this._getTaskTitle(t).failure(t.metadata)}getRunningTitle(t){return this._getTaskTitle(t).running(t.metadata)}getRunningText(t){return this._getTaskTitle(t).operation.running}}return t.ngInjectableDef=i["ɵɵdefineInjectable"]({factory:function(){return new t(i["ɵɵinject"](s.a))},token:t,providedIn:"root"}),t})()},"ut/Y":function(t,e,n){var a=n("ZCpW"),r=n("GDhZ"),i=n("zZ0H"),s=n("Z0cm"),o=n("+c4W");t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?s(t)?r(t[0],t[1]):a(t):o(t)}},uy83:function(t,e,n){var a=n("0Dky");t.exports=!a((function(){return Object.isExtensible(Object.preventExtensions({}))}))},uyHG:function(t,e){var n,a=/^\[object .+?Constructor\]$/,r="object"==typeof global&&global&&global.Object===Object&&global,i="object"==typeof self&&self&&self.Object===Object&&self,s=r||i||Function("return this")(),o=Array.prototype,u=Function.prototype,l=Object.prototype,d=s["__core-js_shared__"],c=(n=/[^.]+$/.exec(d&&d.keys&&d.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",f=u.toString,h=l.hasOwnProperty,g=l.toString,p=RegExp("^"+f.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),b=o.splice,m=w(s,"Map"),y=w(Object,"create");function v(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function x(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function _(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var a=t[e];this.set(a[0],a[1])}}function T(t,e){for(var n,a,r=t.length;r--;)if((n=t[r][0])===(a=e)||n!=n&&a!=a)return r;return-1}function O(t,e){var n,a,r=t.__data__;return("string"==(a=typeof(n=e))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function w(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return function(t){return!(!I(t)||(e=t,c&&c in e))&&(function(t){var e=I(t)?g.call(t):"";return"[object Function]"==e||"[object GeneratorFunction]"==e}(t)||function(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(n){}return e}(t)?p:a).test(function(t){if(null!=t){try{return f.call(t)}catch(e){}try{return t+""}catch(e){}}return""}(t));var e}(n)?n:void 0}function S(t,e){if("function"!=typeof t||e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=e?e.apply(this,a):a[0],i=n.cache;if(i.has(r))return i.get(r);var s=t.apply(this,a);return n.cache=i.set(r,s),s};return n.cache=new(S.Cache||_),n}function I(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}v.prototype.clear=function(){this.__data__=y?y(null):{}},v.prototype.delete=function(t){return this.has(t)&&delete this.__data__[t]},v.prototype.get=function(t){var e=this.__data__;if(y){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return h.call(e,t)?e[t]:void 0},v.prototype.has=function(t){var e=this.__data__;return y?void 0!==e[t]:h.call(e,t)},v.prototype.set=function(t,e){return this.__data__[t]=y&&void 0===e?"__lodash_hash_undefined__":e,this},x.prototype.clear=function(){this.__data__=[]},x.prototype.delete=function(t){var e=this.__data__,n=T(e,t);return!(n<0||(n==e.length-1?e.pop():b.call(e,n,1),0))},x.prototype.get=function(t){var e=this.__data__,n=T(e,t);return n<0?void 0:e[n][1]},x.prototype.has=function(t){return T(this.__data__,t)>-1},x.prototype.set=function(t,e){var n=this.__data__,a=T(n,t);return a<0?n.push([t,e]):n[a][1]=e,this},_.prototype.clear=function(){this.__data__={hash:new v,map:new(m||x),string:new v}},_.prototype.delete=function(t){return O(this,t).delete(t)},_.prototype.get=function(t){return O(this,t).get(t)},_.prototype.has=function(t){return O(this,t).has(t)},_.prototype.set=function(t,e){return O(this,t).set(t,e),this},S.Cache=_,t.exports=S},vCyI:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){this._selected=[],t&&(this._selected=t),this.update()}update(){this.hasSelection=this._selected.length>0,this.hasSingleSelection=1===this._selected.length,this.hasMultiSelection=this._selected.length>1}set selected(t){this._selected=t,this.update()}get selected(){return this._selected}add(t){this._selected.push(t),this.update()}first(){return this.hasSelection?this._selected[0]:null}}},vkgz:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("7o/Q"),r=n("KqfI"),i=n("n6bG");function s(t,e,n){return function(a){return a.lift(new o(t,e,n))}}class o{constructor(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}call(t,e){return e.subscribe(new u(t,this.nextOrObserver,this.error,this.complete))}}class u extends a.a{constructor(t,e,n,a){super(t),this._tapNext=r.a,this._tapError=r.a,this._tapComplete=r.a,this._tapError=n||r.a,this._tapComplete=a||r.a,Object(i.a)(e)?(this._context=this,this._tapNext=e):e&&(this._context=e,this._tapNext=e.next||r.a,this._tapError=e.error||r.a,this._tapComplete=e.complete||r.a)}_next(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)}_error(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)}_complete(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()}}},"w/wX":function(t,e,n){var a=n("QqLw"),r=n("ExA7");t.exports=function(t){return r(t)&&"[object Set]"==a(t)}},w9WL:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("XNiG"),i=n("xgIS"),s=n("2Vo4"),o=n("l7GE"),u=n("ZUHj");function l(t){return e=>e.lift(new d(t))}class d{constructor(t){this.notifier=t}call(t,e){const n=new c(t),a=Object(u.a)(n,this.notifier);return a&&!n.seenValue?(n.add(a),e.subscribe(n)):n}}class c extends o.a{constructor(t){super(t),this.seenValue=!1}notifyNext(t,e,n,a,r){this.seenValue=!0,this.complete()}notifyComplete(){}}var f=n("mrSG");n.d(e,"a",(function(){return p})),n.d(e,"b",(function(){return pt})),n.d(e,"c",(function(){return tt})),n.d(e,"d",(function(){return ht})),n.d(e,"e",(function(){return D})),n.d(e,"f",(function(){return lt})),n.d(e,"g",(function(){return b})),n.d(e,"h",(function(){return ut})),n.d(e,"i",(function(){return et})),n.d(e,"j",(function(){return dt})),n.d(e,"k",(function(){return gt})),n.d(e,"l",(function(){return mt})),n.d(e,"m",(function(){return xt})),n.d(e,"n",(function(){return ot})),n.d(e,"o",(function(){return q})),n.d(e,"p",(function(){return M})),n.d(e,"q",(function(){return P})),n.d(e,"r",(function(){return g})),n.d(e,"s",(function(){return y})),n.d(e,"t",(function(){return _})),n.d(e,"u",(function(){return _t})),n.d(e,"v",(function(){return x})),n.d(e,"w",(function(){return ct})),n.d(e,"x",(function(){return v})),n.d(e,"y",(function(){return h})),n.d(e,"z",(function(){return T})),n.d(e,"A",(function(){return it})),n.d(e,"B",(function(){return m})),n.d(e,"C",(function(){return w}));class h{constructor(t){this.document=t,this.width=this.getWidth()}getWidth(){const t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);const e=t.offsetWidth;t.style.overflow="scroll";const n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);const a=n.offsetWidth;return t.parentNode.removeChild(t),e-a}}class g{getDimensions(t){return t.getBoundingClientRect()}}class p{constructor(){this.columnInputChanges=new r.a}get columnInputChanges$(){return this.columnInputChanges.asObservable()}onInputChange(){this.columnInputChanges.next()}}class b{constructor(t){this.template=t}}class m{constructor(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new a.EventEmitter}ngOnInit(){this.runCheck()}ngOnDestroy(){clearTimeout(this.timeout)}onVisibilityChange(){this.zone.run(()=>{this.isVisible=!0,this.visible.emit(!0)})}runCheck(){const t=()=>{const{offsetHeight:e,offsetWidth:n}=this.element.nativeElement;e&&n?(clearTimeout(this.timeout),this.onVisibilityChange()):(clearTimeout(this.timeout),this.zone.runOutsideAngular(()=>{this.timeout=setTimeout(()=>t(),50)}))};this.timeout=setTimeout(()=>t())}}class y{constructor(t){this.dragX=!0,this.dragY=!0,this.dragStart=new a.EventEmitter,this.dragging=new a.EventEmitter,this.dragEnd=new a.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}ngOnChanges(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)}ngOnDestroy(){this._destroySubscription()}onMouseup(t){this.isDragging&&(this.isDragging=!1,this.element.classList.remove("dragging"),this.subscription&&(this._destroySubscription(),this.dragEnd.emit({event:t,element:this.element,model:this.dragModel})))}onMousedown(t){if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;const e={x:t.clientX,y:t.clientY},n=Object(i.a)(document,"mouseup");this.subscription=n.subscribe(t=>this.onMouseup(t));const a=Object(i.a)(document,"mousemove").pipe(l(n)).subscribe(t=>this.move(t,e));this.subscription.add(a),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}}move(t,e){if(!this.isDragging)return;const n=t.clientY-e.y;this.dragX&&(this.element.style.left=`${t.clientX-e.x}px`),this.dragY&&(this.element.style.top=`${n}px`),this.element.classList.add("dragging"),this.dragging.emit({event:t,element:this.element,model:this.dragModel})}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global,"undefined"!=typeof window&&window||global;class v{constructor(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new a.EventEmitter,this.resizing=!1,this.element=t.nativeElement}ngAfterViewInit(){const t=this.renderer;this.resizeHandle=t.createElement("span"),t.addClass(this.resizeHandle,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,this.resizeHandle)}ngOnDestroy(){this._destroySubscription(),this.renderer.destroyNode?this.renderer.destroyNode(this.resizeHandle):this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle),this.resizeHandle)}onMouseup(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))}onMousedown(t){const e=t.target.classList.contains("resize-handle"),n=this.element.clientWidth,a=t.screenX;if(e){t.stopPropagation(),this.resizing=!0;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup());const r=Object(i.a)(document,"mousemove").pipe(l(e)).subscribe(t=>this.move(t,n,a));this.subscription.add(r)}}move(t,e,n){const a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=`${a}px`)}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class x{constructor(t,e){this.document=e,this.reorder=new a.EventEmitter,this.targetChanged=new a.EventEmitter,this.differ=t.find({}).create()}ngAfterContentInit(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))}ngOnDestroy(){this.draggables.forEach(t=>{t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})}updateSubscriptions(){const t=this.differ.diff(this.createMapDiffs());if(t){const e=({currentValue:t,previousValue:e})=>{n({previousValue:e}),t&&(t.dragStart.subscribe(this.onDragStart.bind(this)),t.dragging.subscribe(this.onDragging.bind(this)),t.dragEnd.subscribe(this.onDragEnd.bind(this)))},n=({previousValue:t})=>{t&&(t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe())};t.forEachAddedItem(e),t.forEachRemovedItem(n)}}onDragStart(){this.positions={};let t=0;for(const e of this.draggables.toArray()){const n=e.element,a=parseInt(n.offsetLeft.toString(),0);this.positions[e.dragModel.prop]={left:a,right:a+parseInt(n.offsetWidth.toString(),0),index:t++,element:n}}}onDragging({model:t,event:e}){const n=this.positions[t.prop],a=this.isTarget(t,e);a?this.lastDraggingIndex!==a.i&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,newIndex:a.i,initialIndex:n.index}),this.lastDraggingIndex=a.i):this.lastDraggingIndex!==n.index&&(this.targetChanged.emit({prevIndex:this.lastDraggingIndex,initialIndex:n.index}),this.lastDraggingIndex=n.index)}onDragEnd({element:t,model:e,event:n}){const a=this.positions[e.prop],r=this.isTarget(e,n);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:e}),this.lastDraggingIndex=void 0,t.style.left="auto"}isTarget(t,e){let n=0;const a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY);for(const r in this.positions){const e=this.positions[r];if(t.prop!==r&&a.find(t=>t===e.element))return{pos:e,i:n};n++}}createMapDiffs(){return this.draggables.toArray().reduce((t,e)=>(t[e.dragModel.$$id]=e,t),{})}}class _{constructor(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new a.EventEmitter,this.longPressing=new a.EventEmitter,this.longPressEnd=new a.EventEmitter,this.mouseX=0,this.mouseY=0}get press(){return this.pressing}get isLongPress(){return this.isLongPressing}onMouseDown(t){if(1!==t.which||!this.pressEnabled)return;if(t.target.classList.contains("resize-handle"))return;this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;const e=Object(i.a)(document,"mouseup");this.subscription=e.subscribe(t=>this.onMouseup()),this.timeout=setTimeout(()=>{this.isLongPressing=!0,this.longPressStart.emit({event:t,model:this.pressModel}),this.subscription.add(Object(i.a)(document,"mousemove").pipe(l(e)).subscribe(t=>this.onMouseMove(t))),this.loop(t)},this.duration),this.loop(t)}onMouseMove(t){if(this.pressing&&!this.isLongPressing){const e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}}loop(t){this.isLongPressing&&(this.timeout=setTimeout(()=>{this.longPressing.emit({event:t,model:this.pressModel}),this.loop(t)},50))}endPress(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})}onMouseup(){this.endPress()}ngOnDestroy(){this._destroySubscription()}_destroySubscription(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)}}class T{constructor(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new a.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this._scrollEventListener=null,this.element=e.nativeElement}ngOnInit(){if(this.scrollbarV||this.scrollbarH){const t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this._scrollEventListener=this.onScrolled.bind(this),this.parentElement.addEventListener("scroll",this._scrollEventListener)}}ngOnDestroy(){this._scrollEventListener&&(this.parentElement.removeEventListener("scroll",this._scrollEventListener),this._scrollEventListener=null)}setOffset(t){this.parentElement&&(this.parentElement.scrollTop=t)}onScrolled(t){const e=t.currentTarget;requestAnimationFrame(()=>{this.scrollYPos=e.scrollTop,this.scrollXPos=e.scrollLeft,this.updateOffset()})}updateOffset(){let t;this.scrollYPos<this.prevScrollYPos?t="down":this.scrollYPos>this.prevScrollYPos&&(t="up"),this.scroll.emit({direction:t,scrollYPos:this.scrollYPos,scrollXPos:this.scrollXPos}),this.prevScrollYPos=this.scrollYPos,this.prevScrollXPos=this.scrollXPos}}function O(){return""}function w(t){return null==t?O:"number"==typeof t?S:-1!==t.indexOf(".")?N:I}function S(t,e){if(null==t)return"";if(!t||null==e)return t;const n=t[e];return null==n?"":n}function I(t,e){if(null==t)return"";if(!t||!e)return t;const n=t[e];return null==n?"":n}function N(t,e){if(null==t)return"";if(!t||!e)return t;let n=t[e];if(void 0!==n)return n;n=t;const a=e.split(".");if(a.length)for(let r=0;r<a.length;r++)if(n=n[a[r]],null==n)return"";return n}function C(t){return t&&(e=>w(t)(e,t))}function R(t,e,n){if(e&&n){const a={},r=t.length;let i=null;a[0]=new A;const s=t.reduce((t,e)=>{const a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]);for(let e=0;e<r;e++)a[n(t[e])]=new A(t[e]);for(let u=0;u<r;u++){i=a[n(t[u])];let r=0;const o=e(i.row);o&&s.indexOf(o)>-1&&(r=o),i.parent=a[r],i.row.level=i.parent.row.level+1,i.parent.children.push(i)}let o=[];return a[0].flatten((function(){o=[...o,this.row]}),!0),o}return t}class A{constructor(t=null){t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}flatten(t,e){if("expanded"===this.row.treeStatus)for(let n=0,a=this.children.length;n<a;n++){const a=this.children[n];t.apply(a,Array.prototype.slice.call(arguments,2)),e&&a.flatten.apply(a,arguments)}}}function k(t){return(t=(t=(t=t.replace(/[^a-zA-Z0-9 ]/g," ")).replace(/([a-z](?=[A-Z]))/g,"$1 ")).replace(/([^a-zA-Z0-9 ])|^[0-9]+/g,"").trim().toLowerCase()).replace(/([ 0-9]+)([a-zA-Z])/g,(function(t,e,n){return e.trim()+n.toUpperCase()}))}function E(t){if(!t)return;let e=!1;for(const n of t)n.$$id||(n.$$id=("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)),L(n.prop)&&n.name&&(n.prop=k(n.name)),n.$$valueGetter||(n.$$valueGetter=w(n.prop)),!L(n.prop)&&L(n.name)&&(n.name=String(n.prop).replace(/([A-Z])/g,t=>` ${t}`).replace(/^./,t=>t.toUpperCase())),L(n.prop)&&L(n.name)&&(n.name=""),n.hasOwnProperty("resizeable")||(n.resizeable=!0),n.hasOwnProperty("sortable")||(n.sortable=!0),n.hasOwnProperty("draggable")||(n.draggable=!0),n.hasOwnProperty("canAutoResize")||(n.canAutoResize=!0),n.hasOwnProperty("width")||(n.width=150),n.hasOwnProperty("isTreeColumn")&&n.isTreeColumn&&!e?e=!0:n.isTreeColumn=!1}function L(t){return null==t}class D{constructor(t){this.template=t}}class P{constructor(t){this.template=t}}class M{constructor(){this.rowHeight=0,this.toggle=new a.EventEmitter}get template(){return this._templateInput||this._templateQuery}toggleExpandRow(t){this.toggle.emit({type:"row",value:t})}expandAllRows(){this.toggle.emit({type:"all",value:!0})}collapseAllRows(){this.toggle.emit({type:"all",value:!1})}}class q{get template(){return this._templateInput||this._templateQuery}}function j(t){const e={left:[],center:[],right:[]};if(t)for(const n of t)n.frozenLeft?e.left.push(n):n.frozenRight?e.right.push(n):e.center.push(n);return e}function F(t,e){return{left:G(t.left),center:G(t.center),right:G(t.right),total:Math.floor(G(e))}}function G(t,e){let n=0;if(t)for(const a of t)n+=parseFloat(e&&a[e]?a[e]:a.width);return n}function V(t){const e=[],n=j(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}class z{constructor(){this.treeArray=[]}clearCache(){this.treeArray=[]}initCache(t){const{rows:e,rowHeight:n,detailRowHeight:a,externalVirtual:r,rowCount:i,rowIndexes:s,rowExpansions:o}=t,u="function"==typeof n,l="function"==typeof a;if(!u&&isNaN(n))throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n        valid number or function value: (${n}) when 'scrollbarV' is enabled.`);if(!l&&isNaN(a))throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n        valid number or function value: (${a}) when 'scrollbarV' is enabled.`);const d=r?i:e.length;this.treeArray=new Array(d);for(let c=0;c<d;++c)this.treeArray[c]=0;for(let c=0;c<d;++c){const t=e[c];let r=n;u&&(r=n(t));const i=o.has(t);t&&i&&(r+=l?a(t,s.get(t)):a),this.update(c,r)}}getRowIndex(t){return 0===t?0:this.calcRowIndex(t)}update(t,e){if(!this.treeArray.length)throw new Error(`Update at index ${t} with value ${e} failed:\n        Row Height cache not initialized.`);const n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1}query(t){if(!this.treeArray.length)throw new Error(`query at index ${t} failed: Fenwick tree array not initialized.`);let e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e}queryBetween(t,e){return this.query(e)-this.query(t-1)}calcRowIndex(t){if(!this.treeArray.length)return 0;let e=-1;const n=this.treeArray.length;for(let a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){const r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1}}const B={},Y="undefined"!=typeof document?document.createElement("div").style:void 0,H=function(){const t="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0,e=void 0!==t?Array.prototype.slice.call(t).join("").match(/-(moz|webkit|ms)-/):null,n=null!==e?e[1]:void 0,a=void 0!==n?"WebKit|Moz|MS|O".match(new RegExp("("+n+")","i"))[1]:void 0;return a?{dom:a,lowercase:n,css:`-${n}-`,js:n[0].toUpperCase()+n.substr(1)}:void 0}();function U(t){const e=k(t);return B[e]||(void 0!==H&&void 0!==Y[H.css+t]?B[e]=H.css+t:void 0!==Y[t]&&(B[e]=t)),B[e]}const W="undefined"!=typeof window?U("transform"):void 0,K="undefined"!=typeof window?U("backfaceVisibility"):void 0,$="undefined"!=typeof window?!!U("transform"):void 0,Z="undefined"!=typeof window?!!U("perspective"):void 0,J="undefined"!=typeof window?window.navigator.userAgent:"Chrome",Q=/Safari\//.test(J)&&!/Chrome\//.test(J);function X(t,e,n){void 0!==W&&$?!Q&&Z?(t[W]=`translate3d(${e}px, ${n}px, 0)`,t[K]="hidden"):t[k(W)]=`translate(${e}px, ${n}px)`:(t.top=`${n}px`,t.left=`${e}px`)}class tt{constructor(t){this.cd=t,this.selected=[],this.scroll=new a.EventEmitter,this.page=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.detailToggle=new a.EventEmitter,this.rowContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowHeightsCache=new z,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=[],this.getDetailRowHeight=(t,e)=>{if(!this.rowDetail)return 0;const n=this.rowDetail.rowHeight;return"function"==typeof n?n(t,e):n},this.rowTrackingFn=(t,e)=>{const n=this.getRowIndex(e);return this.trackByProp?e[this.trackByProp]:n}}set pageSize(t){this._pageSize=t,this.recalcLayout()}get pageSize(){return this._pageSize}set rows(t){this._rows=t,this.recalcLayout()}get rows(){return this._rows}set columns(t){this._columns=t;const e=j(t);this.columnGroupWidths=F(e,t)}get columns(){return this._columns}set offset(t){this._offset=t,(!this.scrollbarV||this.scrollbarV&&!this.virtualization)&&this.recalcLayout()}get offset(){return this._offset}set rowCount(t){this._rowCount=t,this.recalcLayout()}get rowCount(){return this._rowCount}get bodyWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}set bodyHeight(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()}get bodyHeight(){return this._bodyHeight}get selectEnabled(){return!!this.selectionType}get scrollHeight(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)}ngOnInit(){this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(({type:t,value:e})=>{"row"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(({type:t,value:e})=>{"group"===t&&this.toggleRowExpansion(e),"all"===t&&this.toggleAllRows(e),this.updateIndexes(),this.updateRows(),this.cd.markForCheck()}))}ngOnDestroy(){(this.rowDetail||this.groupHeader)&&this.listener.unsubscribe()}updateOffsetY(t){this.scroller&&(this.scrollbarV&&this.virtualization&&t?t=this.rowHeightsCache.query(this.pageSize*t-1):this.scrollbarV&&!this.virtualization&&(t=0),this.scroller.setOffset(t||0))}onBodyScroll(t){const e=t.scrollYPos,n=t.scrollXPos;this.offsetY===e&&this.offsetX===n||this.scroll.emit({offsetY:e,offsetX:n}),this.offsetY=e,this.offsetX=n,this.updateIndexes(),this.updatePage(t.direction),this.updateRows()}updatePage(t){let e=this.indexes.first/this.pageSize;"up"===t?e=Math.ceil(e):"down"===t&&(e=Math.floor(e)),void 0===t||isNaN(e)||this.page.emit({offset:e})}updateRows(){const{first:t,last:e}=this.indexes;let n=t,a=0;const r=[];if(this.rowIndexes.clear(),this.groupedRows){let t=3;for(1===this.groupedRows.length&&(t=this.groupedRows[0].value.length);n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++}else for(;n<e&&n<this.rowCount;){const t=this.rows[n];t&&(this.rowIndexes.set(t,n),r[a]=t),a++,n++}this.temp=r}getRowHeight(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight}getGroupHeight(t){let e=0;if(t.value)for(let n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e}getRowAndDetailHeight(t){let e=this.getRowHeight(t);return this.getRowExpanded(t)&&(e+=this.getDetailRowHeight(t)),e}getRowsStyles(t){const e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){let n=0;if(this.groupedRows){const e=t[t.length-1];n=e?this.getRowIndex(e):0}else n=this.getRowIndex(t);X(e,0,this.rowHeightsCache.query(n-1))}return e}getBottomSummaryRowStyles(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;const t={position:"absolute"};return X(t,0,this.rowHeightsCache.query(this.rows.length-1)),t}hideIndicator(){setTimeout(()=>this.loadingIndicator=!1,500)}updateIndexes(){let t=0,e=0;if(this.scrollbarV)if(this.virtualization){const n=parseInt(this.bodyHeight,0);t=this.rowHeightsCache.getRowIndex(this.offsetY),e=this.rowHeightsCache.getRowIndex(n+this.offsetY)+1}else t=0,e=this.rowCount;else this.externalPaging||(t=Math.max(this.offset*this.pageSize,0)),e=Math.min(t+this.pageSize,this.rowCount);this.indexes={first:t,last:e}}refreshRowHeightCache(){if(this.scrollbarV&&(!this.scrollbarV||this.virtualization)&&(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length)){const t=new Set;for(const e of this.rows)this.getRowExpanded(e)&&t.add(e);this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:t})}}getAdjustedViewPortIndex(){const t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t}toggleRowExpansion(t){const e=this.getAdjustedViewPortIndex(),n=this.getRowExpandedIdx(t,this.rowExpansions),a=n>-1;if(this.scrollbarV&&this.virtualization){const e=this.getDetailRowHeight(t)*(a?-1:1),n=this.getRowIndex(t);this.rowHeightsCache.update(n,e)}a?this.rowExpansions.splice(n,1):this.rowExpansions.push(t),this.detailToggle.emit({rows:[t],currentIndex:e})}toggleAllRows(t){this.rowExpansions=[];const e=this.getAdjustedViewPortIndex();if(t)for(const n of this.rows)this.rowExpansions.push(n);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:e})}recalcLayout(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()}columnTrackingFn(t,e){return e.$$id}stylesByGroup(t){const e=this.columnGroupWidths,n=this.offsetX,a={width:`${e[t]}px`};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n),0)}return a}getRowExpanded(t){if(0===this.rowExpansions.length&&this.groupExpansionDefault)for(const e of this.groupedRows)this.rowExpansions.push(e);return this.getRowExpandedIdx(t,this.rowExpansions)>-1}getRowExpandedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}getRowIndex(t){return this.rowIndexes.get(t)||0}onTreeAction(t){this.treeAction.emit({row:t})}}class et{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this._columnGroupWidths={total:100},this._styleByGroup={left:{},center:{},right:{}},this.destroyed=!1}set innerWidth(t){this._innerWidth=t,setTimeout(()=>{if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns),this.setStylesByGroup()}})}get innerWidth(){return this._innerWidth}set headerHeight(t){this._headerHeight="auto"!==t?`${t}px`:t}get headerHeight(){return this._headerHeight}set columns(t){this._columns=t;const e=j(t);this._columnsByPin=V(t),setTimeout(()=>{this._columnGroupWidths=F(e,t),this.setStylesByGroup()})}get columns(){return this._columns}set offsetX(t){this._offsetX=t,this.setStylesByGroup()}get offsetX(){return this._offsetX}ngOnDestroy(){this.destroyed=!0}onLongPressStart({event:t,model:e}){e.dragging=!0,this.dragEventTarget=t}onLongPressEnd({event:t,model:e}){this.dragEventTarget=t,setTimeout(()=>{const t=this._columns.find(t=>t.$$id===e.$$id);t&&(t.dragging=!1)},5)}get headerWidth(){return this.scrollbarH?this.innerWidth+"px":"100%"}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}onColumnResized(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})}onColumnReordered({prevIndex:t,newIndex:e,model:n}){const a=this.getColumn(e);a.isTarget=!1,a.targetMarkerContext=void 0,this.reorder.emit({column:n,prevValue:t,newValue:e})}onTargetChanged({prevIndex:t,newIndex:e,initialIndex:n}){if(t||0===t){const e=this.getColumn(t);e.isTarget=!1,e.targetMarkerContext=void 0}if(e||0===e){const t=this.getColumn(e);t.isTarget=!0,n!==e&&(t.targetMarkerContext={class:"targetMarker ".concat(n>e?"dragFromRight":"dragFromLeft")})}}getColumn(t){const e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];const n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]}onSort({column:t,prevValue:e,newValue:n}){if(t.dragging)return;const a=this.calcNewSorts(t,e,n);this.sort.emit({sorts:a,column:t,prevValue:e,newValue:n})}calcNewSorts(t,e,n){let a=0;this.sorts||(this.sorts=[]);const r=this.sorts.map((e,n)=>((e=Object.assign({},e)).prop===t.prop&&(a=n),e));return void 0===n?r.splice(a,1):e?r[a].dir=n:("single"===this.sortType&&r.splice(0,this.sorts.length),r.push({dir:n,prop:t.prop})),r}setStylesByGroup(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.destroyed||this.cd.detectChanges()}calcStylesByGroup(t){const e=this._columnGroupWidths,n={width:`${e[t]}px`};return"center"===t?X(n,-1*this.offsetX,0):"right"===t&&X(n,-1*(e.total-this.innerWidth),0),n}}function nt(t,e,n){let a,r,i;n=n||{};let s=null,o=0;function u(){o=!1===n.leading?0:+new Date,s=null,i=t.apply(a,r)}return function(){const l=+new Date;o||!1!==n.leading||(o=l);const d=e-(l-o);return a=this,r=arguments,d<=0?(clearTimeout(s),s=null,o=l,i=t.apply(a,r)):s||!1===n.trailing||(s=setTimeout(u,d)),i}}function at(t,e){for(const n of e){const e=t.indexOf(n);t.splice(e,1)}}function rt(t,e=300){let n=0;for(const a of t)n+=a.width||e;return n}const it={asc:"asc",desc:"desc"};function st(t,e){if(null==t&&(t=0),null==e&&(e=0),t instanceof Date&&e instanceof Date){if(t<e)return-1;if(t>e)return 1}else if(isNaN(parseFloat(t))||!isFinite(t)||isNaN(parseFloat(e))||!isFinite(e)){if(t=String(t),e=String(e),t.toLowerCase()<e.toLowerCase())return-1;if(t.toLowerCase()>e.toLowerCase())return 1}else{if(parseFloat(t)<parseFloat(e))return-1;if(parseFloat(t)>parseFloat(e))return 1}return 0}let ot=(()=>{class t{constructor(t,e,n,r,i,o,u){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=o,this.configuration=u,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode="standard",this.headerHeight=30,this.footerHeight=0,this.externalPaging=!1,this.externalSorting=!1,this.loadingIndicator=!1,this.reorderable=!0,this.swapColumns=!0,this.sortType="single",this.sorts=[],this.cssClasses={sortAscending:"datatable-icon-up",sortDescending:"datatable-icon-down",pagerLeftArrow:"datatable-icon-left",pagerRightArrow:"datatable-icon-right",pagerPrevious:"datatable-icon-prev",pagerNext:"datatable-icon-skip"},this.messages={emptyMessage:"No data to display",totalMessage:"total",selectedMessage:"selected"},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new a.EventEmitter,this.activate=new a.EventEmitter,this.select=new a.EventEmitter,this.sort=new a.EventEmitter,this.page=new a.EventEmitter,this.reorder=new a.EventEmitter,this.resize=new a.EventEmitter,this.tableContextmenu=new a.EventEmitter(!1),this.treeAction=new a.EventEmitter,this.rowCount=0,this._offsetX=new s.a(0),this._count=0,this._offset=0,this._subscriptions=[],this.rowIdentity=t=>this._groupRowsBy?t.key:t,this.element=r.nativeElement,this.rowDiffer=i.find({}).create(),this.configuration&&this.configuration.messages&&(this.messages=Object.assign({},this.configuration.messages))}set rows(t){this._rows=t,t&&(this._internalRows=[...t]),this.externalSorting||this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()}get rows(){return this._rows}set groupRowsBy(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))}get groupRowsBy(){return this._groupRowsBy}set columns(t){t&&(this._internalColumns=[...t],E(this._internalColumns),this.recalculateColumns()),this._columns=t}get columns(){return this._columns}set limit(t){this._limit=t,this.recalculate()}get limit(){return this._limit}set count(t){this._count=t,this.recalculate()}get count(){return this._count}set offset(t){this._offset=t}get offset(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)}get isFixedHeader(){const t=this.headerHeight;return"string"!=typeof t||"auto"!==t}get isFixedRow(){return"auto"!==this.rowHeight}get isVertScroll(){return this.scrollbarV}get isVirtualized(){return this.virtualization}get isHorScroll(){return this.scrollbarH}get isSelectable(){return void 0!==this.selectionType}get isCheckboxSelection(){return"checkbox"===this.selectionType}get isCellSelection(){return"cell"===this.selectionType}get isSingleSelection(){return"single"===this.selectionType}get isMultiSelection(){return"multi"===this.selectionType}get isMultiClickSelection(){return"multiClick"===this.selectionType}set columnTemplates(t){this._columnTemplates=t,this.translateColumns(t)}get columnTemplates(){return this._columnTemplates}get allRowsSelected(){let t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){const e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t}ngOnInit(){this.recalculate()}ngAfterViewInit(){this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(()=>{this.recalculate(),this.externalPaging&&this.scrollbarV&&this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:0})})}ngAfterContentInit(){this.columnTemplates.changes.subscribe(t=>this.translateColumns(t)),this.listenForColumnInputChanges()}translateColumns(t){if(t){const e=t.toArray();e.length&&(this._internalColumns=function(t){const e=[];for(const n of t){const t={},a=Object.getOwnPropertyNames(n);for(const e of a)t[e]=n[e];n.headerTemplate&&(t.headerTemplate=n.headerTemplate),n.cellTemplate&&(t.cellTemplate=n.cellTemplate),n.summaryFunc&&(t.summaryFunc=n.summaryFunc),n.summaryTemplate&&(t.summaryTemplate=n.summaryTemplate),e.push(t)}return e}(e),E(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}}groupArrayBy(t,e){const n=new Map;return t.forEach(t=>{const a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,t=>({key:t[0],value:t[1]}))}ngDoCheck(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=[...this.rows]:this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())}recalculate(){this.recalculateDims(),this.recalculateColumns()}onWindowResize(){this.recalculate()}recalculateColumns(t=this._internalColumns,e=-1,n=this.scrollbarH){if(!t)return;let a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),"force"===this.columnMode?function(t,e,n,a,r=300){const i=t.slice(n+1,t.length).filter(t=>!1!==t.canAutoResize);for(const c of i)c.$$oldWidth||(c.$$oldWidth=c.width);let s=0,o=!1,u=rt(t,r),l=e-u;const d=[];do{s=l/i.length,o=u>=e;for(const t of i){if(o&&a)t.width=t.$$oldWidth||t.width||r;else{const e=(t.width||r)+s;t.minWidth&&e<t.minWidth?(t.width=t.minWidth,d.push(t)):t.maxWidth&&e>t.maxWidth?(t.width=t.maxWidth,d.push(t)):t.width=e}t.width=Math.max(0,t.width)}u=rt(t),l=e-u,at(i,d)}while(l>1&&0!==i.length)}(t,a,e,n):"flex"===this.columnMode&&function(t,e){const n=function(t,e){let n=0;for(const a of t)n+=a.width;return n}(t),a=function(t){let e=0;for(const n of t)e+=n.flexGrow||0;return e}(t),r=j(t);n!==e&&function(t,e,n){for(const i in t)for(const a of t[i])a.canAutoResize?a.width=0:(e-=a.width,n-=a.flexGrow?a.flexGrow:0);const a={};let r=e;do{const e=r/n;r=0;for(const n in t)for(const i of t[n])if(i.canAutoResize&&!a[i.prop]){const t=i.width+i.flexGrow*e;void 0!==i.minWidth&&t<i.minWidth?(r+=t-i.minWidth,i.width=i.minWidth,a[i.prop]=!0):i.width=t}}while(0!==r)}(r,e,a)}(t,a),t}recalculateDims(){const t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){let e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()}recalculatePages(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()}onBodyPage({offset:t}){this.externalPaging&&!this.virtualization||(this.offset=t,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))}onBodyScroll(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()}onFooterPage(t){this.offset=t.page-1,this.bodyComponent.updateOffsetY(this.offset),this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}),this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected}))}calcPageSize(t=this.rows){if(this.scrollbarV&&this.virtualization){const t=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(t,0)}return void 0!==this.limit?this.limit:t?t.length:0}calcRowCount(t=this.rows){return this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0}onColumnContextmenu({event:t,column:e}){this.tableContextmenu.emit({event:t,type:"header",content:e})}onRowContextmenu({event:t,row:e}){this.tableContextmenu.emit({event:t,type:"body",content:e})}onColumnResize({column:t,newValue:e}){if(void 0===t)return;let n;const a=this._internalColumns.map((a,r)=>((a=Object.assign({},a)).$$id===t.$$id&&(n=r,a.width=e,a.$$oldWidth=e),a));this.recalculateColumns(a,n),this._internalColumns=a,this.resize.emit({column:t,newValue:e})}onColumnReorder({column:t,newValue:e,prevValue:n}){const a=this._internalColumns.map(t=>Object.assign({},t));if(this.swapColumns){const r=a[e];a[e]=t,a[n]=r}else if(e>n){const t=a[n];for(let r=n;r<e;r++)a[r]=a[r+1];a[e]=t}else{const t=a[n];for(let r=n;r>e;r--)a[r]=a[r-1];a[e]=t}this._internalColumns=a,this.reorder.emit({column:t,newValue:e,prevValue:n})}onColumnSort(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=R(this._internalRows,C(this.treeFromRelation),C(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)}onHeaderSelect(t){if(this.selectAllRowsOnPage){const t=this.bodyComponent.indexes.first,e=this.bodyComponent.indexes.last,n=this.selected.length===e-t;this.selected=[],n||this.selected.push(...this._internalRows.slice(t,e))}else{const t=this.selected.length===this.rows.length;this.selected=[],t||this.selected.push(...this.rows)}this.select.emit({selected:this.selected})}onBodySelect(t){this.select.emit(t)}onTreeAction(t){const e=t.row,n=this._rows.findIndex(e=>e[this.treeToRelation]===t.row[this.treeToRelation]);this.treeAction.emit({row:e,rowIndex:n})}ngOnDestroy(){this._subscriptions.forEach(t=>t.unsubscribe())}listenForColumnInputChanges(){this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(()=>{this.columnTemplates&&this.columnTemplates.notifyOnChanges()}))}sortInternalRows(){this._internalRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return[...t];const a=new Map;t.forEach((t,e)=>a.set(t,e));const r=[...t],i=e.reduce((t,e)=>(e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t),{}),s=n.map(t=>{const e=t.prop;return{prop:e,dir:t.dir,valueGetter:w(e),compareFn:i[e]||st}});return r.sort((function(t,e){for(const n of s){const{prop:a,valueGetter:r}=n,i=r(t,a),s=r(e,a),o=n.dir!==it.desc?n.compareFn(i,s,t,e,n.dir):-n.compareFn(i,s,t,e,n.dir);if(0!==o)return o}return a.has(t)&&a.has(e)?a.get(t)<a.get(e)?-1:1:0}))}(this._internalRows,this._internalColumns,this.sorts)}}return Object(f.__decorate)([function(t,e,n){return{configurable:!0,enumerable:n.enumerable,get:function(){return Object.defineProperty(this,e,{configurable:!0,enumerable:n.enumerable,value:nt(n.value,5,void 0)}),this[e]}}},Object(f.__metadata)("design:type",Function),Object(f.__metadata)("design:paramtypes",[]),Object(f.__metadata)("design:returntype",void 0)],t.prototype,"onWindowResize",null),t})();class ut{constructor(t){this.cd=t,this.sort=new a.EventEmitter,this.select=new a.EventEmitter,this.columnContextmenu=new a.EventEmitter(!1),this.sortFn=this.onSort.bind(this),this.selectFn=this.select.emit.bind(this.select),this.cellContext={column:this.column,sortDir:this.sortDir,sortFn:this.sortFn,allRowsSelected:this.allRowsSelected,selectFn:this.selectFn}}set allRowsSelected(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t}get allRowsSelected(){return this._allRowsSelected}set column(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()}get column(){return this._column}set sorts(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()}get sorts(){return this._sorts}get columnCssClasses(){let t="datatable-header-cell";if(this.column.sortable&&(t+=" sortable"),this.column.resizeable&&(t+=" resizeable"),this.column.headerClass)if("string"==typeof this.column.headerClass)t+=" "+this.column.headerClass;else if("function"==typeof this.column.headerClass){const e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=` ${a}`)}}const e=this.sortDir;return e&&(t+=` sort-active sort-${e}`),t}get name(){return void 0===this.column.headerTemplate?this.column.name:void 0}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get width(){return this.column.width}get isCheckboxable(){return this.column.checkboxable&&this.column.headerCheckboxable&&"checkbox"===this.selectionType}onContextmenu(t){this.columnContextmenu.emit({event:t,column:this.column})}calcSortDir(t){if(t&&this.column){const e=t.find(t=>t.prop===this.column.prop);if(e)return e.dir}}onSort(){if(!this.column.sortable)return;const t=(e=this.sortDir,"single"===this.sortType?e===it.asc?it.desc:it.asc:e?e===it.asc?it.desc:void 0:it.asc);var e;this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}calcSortClass(t){return t===it.asc?`sort-btn sort-asc ${this.sortAscendingIcon}`:t===it.desc?`sort-btn sort-desc ${this.sortDescendingIcon}`:"sort-btn"}}class lt{constructor(){this.selectedCount=0,this.page=new a.EventEmitter}get isVisible(){return this.rowCount/this.pageSize>1}get curPage(){return this.offset+1}}class dt{constructor(){this.change=new a.EventEmitter,this._count=0,this._page=1,this._size=0}set size(t){this._size=t,this.pages=this.calcPages()}get size(){return this._size}set count(t){this._count=t,this.pages=this.calcPages()}get count(){return this._count}set page(t){this._page=t,this.pages=this.calcPages()}get page(){return this._page}get totalPages(){const t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)}canPrevious(){return this.page>1}canNext(){return this.page<this.totalPages}prevPage(){this.selectPage(this.page-1)}nextPage(){this.selectPage(this.page+1)}selectPage(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))}calcPages(t){const e=[];let n=1,a=this.totalPages;t=t||this.page,5<this.totalPages&&(n=t-Math.floor(2.5),a=t+Math.floor(2.5),n<1?(n=1,a=Math.min(n+5-1,this.totalPages)):a>this.totalPages&&(n=Math.max(this.totalPages-5+1,1),a=this.totalPages));for(let r=n;r<=a;r++)e.push({number:r,text:r});return e}}class ct{}const ft=function(){var t={up:38,down:40,return:13,escape:27,left:37,right:39};return t[t.up]="up",t[t.down]="down",t[t.return]="return",t[t.escape]="escape",t[t.left]="left",t[t.right]="right",t}();class ht{constructor(t,e,n,r){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=r.nativeElement,this._rowDiffer=t.find({}).create()}set columns(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()}get columns(){return this._columns}set innerWidth(t){if(this._columns){const t=j(this._columns);this._columnGroupWidths=F(t,this._columns)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()}get innerWidth(){return this._innerWidth}set offsetX(t){this._offsetX=t,this.buildStylesByGroup()}get offsetX(){return this._offsetX}get cssClass(){let t="datatable-body-row";if(this.isSelected&&(t+=" active"),this.rowIndex%2!=0&&(t+=" datatable-row-odd"),this.rowIndex%2==0&&(t+=" datatable-row-even"),this.rowClass){const e=this.rowClass(this.row);if("string"==typeof e)t+=` ${e}`;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=` ${a}`)}}return t}get columnsTotalWidths(){return this._columnGroupWidths.total}ngDoCheck(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()}trackByGroups(t,e){return e.type}columnTrackingFn(t,e){return e.$$id}buildStylesByGroup(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()}calcStylesByGroup(t){const e=this._columnGroupWidths,n=this.offsetX,a={width:`${e[t]}px`};if("left"===t)X(a,n,0);else if("right"===t){const t=parseInt(this.innerWidth+"",0);X(a,-1*(e.total-t-n+this.scrollbarHelper.width),0)}return a}onActivate(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))}onMouseenter(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})}recalculateColumns(t=this.columns){this._columns=t;const e=j(this._columns);this._columnsByPin=V(this._columns),this._columnGroupWidths=F(e,this._columns)}onTreeAction(){this.treeAction.emit()}}class gt{constructor(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new a.EventEmitter(!1),this.groupContext={group:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this.rowContext={row:this.row,expanded:this.expanded,rowIndex:this.rowIndex},this._expanded=!1,this.rowDiffer=e.find({}).create()}set rowIndex(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set expanded(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}ngDoCheck(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())}onContextmenu(t){this.rowContextmenu.emit({event:t,row:this.row})}getGroupHeaderStyle(){const t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t}}class pt{constructor(t,e){this.cd=e,this.activate=new a.EventEmitter,this.treeAction=new a.EventEmitter,this.isFocused=!1,this.onCheckboxChangeFn=this.onCheckboxChange.bind(this),this.activateFn=this.activate.emit.bind(this.activate),this.cellContext={onCheckboxChangeFn:this.onCheckboxChangeFn,activateFn:this.activateFn,row:this.row,group:this.group,value:this.value,column:this.column,rowHeight:this.rowHeight,isSelected:this.isSelected,rowIndex:this.rowIndex,treeStatus:this.treeStatus,onTreeAction:this.onTreeAction.bind(this)},this._element=t.nativeElement}set group(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()}get group(){return this._group}set rowHeight(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowHeight(){return this._rowHeight}set isSelected(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()}get isSelected(){return this._isSelected}set expanded(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()}get expanded(){return this._expanded}set rowIndex(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()}get rowIndex(){return this._rowIndex}set column(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()}get column(){return this._column}set row(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()}get row(){return this._row}set sorts(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)}get sorts(){return this._sorts}set treeStatus(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()}get treeStatus(){return this._treeStatus}get columnCssClasses(){let t="datatable-body-cell";if(this.column.cellClass)if("string"==typeof this.column.cellClass)t+=" "+this.column.cellClass;else if("function"==typeof this.column.cellClass){const e=this.column.cellClass({row:this.row,group:this.group,column:this.column,value:this.value,rowHeight:this.rowHeight});if("string"==typeof e)t+=e;else if("object"==typeof e){const n=Object.keys(e);for(const a of n)!0===e[a]&&(t+=` ${a}`)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===it.asc&&(t+=" sort-asc"),this.sortDir===it.desc&&(t+=" sort-desc"),t}get width(){return this.column.width}get minWidth(){return this.column.minWidth}get maxWidth(){return this.column.maxWidth}get height(){const t=this.rowHeight;return isNaN(t)?t:t+"px"}ngDoCheck(){this.checkValueUpdates()}ngOnDestroy(){this.cellTemplate&&this.cellTemplate.clear()}checkValueUpdates(){let t="";if(this.row&&this.column){const e=this.column.$$valueGetter(this.row,this.column.prop),n=this.column.pipe;n?t=n.transform(e):void 0!==t&&(t=e)}else t="";this.value!==t&&(this.value=t,this.cellContext.value=t,this.sanitizedValue=null!=t?this.stripHtml(t):t,this.cd.markForCheck())}onFocus(){this.isFocused=!0}onBlur(){this.isFocused=!1}onClick(t){this.activate.emit({type:"click",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onDblClick(t){this.activate.emit({type:"dblclick",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element})}onKeyDown(t){const e=t.keyCode;(e===ft.return||e===ft.down||e===ft.up||e===ft.left||e===ft.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element}))}onCheckboxChange(t){this.activate.emit({type:"checkbox",event:t,row:this.row,group:this.group,rowHeight:this.rowHeight,column:this.column,value:this.value,cellElement:this._element,treeStatus:"collapsed"})}calcSortDir(t){if(!t)return;const e=t.find(t=>t.prop===this.column.prop);return e?e.dir:void 0}stripHtml(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t}onTreeAction(){this.treeAction.emit(this.row)}calcLeftMargin(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0}}function bt(t,e,n){const a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t}class mt{constructor(){this.activate=new a.EventEmitter,this.select=new a.EventEmitter}selectRow(t,e,n){if(!this.selectEnabled)return;const a="checkbox"===this.selectionType,r="multiClick"===this.selectionType;let i=[];i="multi"===this.selectionType||a||r?t.shiftKey?function(t,e,n,a,r){const i=n<a;for(let s=0;s<e.length;s++){const r=e[s],o=s>=a&&s<=n,u=s<=a&&s>=n;let l={start:0,end:0};l=i?{start:n,end:a}:{start:a,end:n+1},(i&&u||!i&&o)&&s>=l.start&&s<=l.end&&t.push(r)}return t}([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):bt(t.ctrlKey||t.metaKey||r||a?[...this.selected]:[],n,this.getRowSelectedIdx.bind(this)):bt([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(i=i.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),this.selected.push(...i),this.prevIndex=e,this.select.emit({selected:i})}onActivate(t,e){const{type:n,event:a,row:r}=t,i="checkbox"===this.selectionType;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===ft.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)}onKeyboardFocus(t){const{keyCode:e}=t.event;if(e===ft.up||e===ft.down||e===ft.right||e===ft.left){const n="cell"===this.selectionType;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}}focusRow(t,e){const n=this.getPrevNextRow(t,e);n&&n.focus()}getPrevNextRow(t,e){const n=t.parentElement;if(n){let t;if(e===ft.up?t=n.previousElementSibling:e===ft.down&&(t=n.nextElementSibling),t&&t.children.length)return t.children[0]}}focusCell(t,e,n,a){let r;if(n===ft.left)r=t.previousElementSibling;else if(n===ft.right)r=t.nextElementSibling;else if(n===ft.up||n===ft.down){const t=this.getPrevNextRow(e,n);if(t){const e=t.getElementsByClassName("datatable-body-cell");e.length&&(r=e[a])}}r&&r.focus()}getRowSelected(t){return this.getRowSelectedIdx(t,this.selected)>-1}getRowSelectedIdx(t,e){if(!e||!e.length)return-1;const n=this.rowIdentity(t);return e.findIndex(t=>this.rowIdentity(t)===n)}}function yt(t){const e=t.filter(t=>!!t);return e.length?e.some(t=>"number"!=typeof t)?null:e.reduce((t,e)=>t+e):null}function vt(t){return null}class xt{constructor(){this.summaryRow={}}ngOnChanges(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())}updateInternalColumns(){this._internalColumns=this.columns.map(t=>Object.assign({},t,{cellTemplate:t.summaryTemplate}))}updateValues(){this.summaryRow={},this.columns.filter(t=>!t.summaryTemplate).forEach(t=>{const e=this.rows.map(e=>e[t.prop]),n=this.getSummaryFunction(t);this.summaryRow[t.prop]=t.pipe?t.pipe.transform(n(e)):n(e)})}getSummaryFunction(t){return void 0===t.summaryFunc?yt:null===t.summaryFunc?vt:t.summaryFunc}}class _t{static forRoot(t){return{ngModule:_t,providers:[{provide:"configuration",useValue:t}]}}}"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=function(t,e){const n=[],a=[];let r,i,s;for(;(r=document.elementFromPoint(t,e))&&-1===n.indexOf(r)&&null!=r;)n.push(r),a.push({value:r.style.getPropertyValue("pointer-events"),priority:r.style.getPropertyPriority("pointer-events")}),r.style.setProperty("pointer-events","none","important");for(i=a.length;s=a[--i];)n[i].style.setProperty("pointer-events",s.value?s.value:"",s.priority);return n})},wE6v:function(t,e,n){var a=n("hh1v");t.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},"wF/u":function(t,e,n){var a=n("e5cp"),r=n("ExA7");t.exports=function t(e,n,i,s,o){return e===n||(null==e||null==n||!r(e)&&!r(n)?e!=e&&n!=n:a(e,n,i,s,t,o))}},wJg7:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var a=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==a||"symbol"!=a&&n.test(t))&&t>-1&&t%1==0&&t<e}},wQk9:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("wd/R"))},wclG:function(t,e,n){var a=n("pFRH"),r=n("88Gu")(a);t.exports=r},"wd/R":function(t,e,n){(function(t){t.exports=function(){"use strict";var e,a;function r(){return e.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function s(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){return void 0===t}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var n,a=[];for(n=0;n<t.length;++n)a.push(e(t[n],n));return a}function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function f(t,e){for(var n in e)c(e,n)&&(t[n]=e[n]);return c(e,"toString")&&(t.toString=e.toString),c(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,n,a){return Oe(t,e,n,a,!0).utc()}function g(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function p(t){if(null==t._isValid){var e=g(t),n=a.call(e.parsedDateParts,(function(t){return null!=t})),r=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(r=r&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return r;t._isValid=r}return t._isValid}function b(t){var e=h(NaN);return null!=t?f(g(e),t):g(e).userInvalidated=!0,e}a=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,a=0;a<n;a++)if(a in e&&t.call(this,e[a],a,e))return!0;return!1};var m=r.momentProperties=[];function y(t,e){var n,a,r;if(o(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),o(e._i)||(t._i=e._i),o(e._f)||(t._f=e._f),o(e._l)||(t._l=e._l),o(e._strict)||(t._strict=e._strict),o(e._tzm)||(t._tzm=e._tzm),o(e._isUTC)||(t._isUTC=e._isUTC),o(e._offset)||(t._offset=e._offset),o(e._pf)||(t._pf=g(e)),o(e._locale)||(t._locale=e._locale),m.length>0)for(n=0;n<m.length;n++)o(r=e[a=m[n]])||(t[a]=r);return t}var v=!1;function x(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function T(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function O(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=T(e)),n}function w(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),s=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&O(t[a])!==O(e[a]))&&s++;return s+i}function S(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function I(t,e){var n=!0;return f((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var a,i=[],s=0;s<arguments.length;s++){if(a="","object"==typeof arguments[s]){for(var o in a+="\n["+s+"] ",arguments[0])a+=o+": "+arguments[0][o]+", ";a=a.slice(0,-2)}else a=arguments[s];i.push(a)}S(t+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var N,C={};function R(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),C[t]||(S(e),C[t]=!0)}function A(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function k(t,e){var n,a=f({},t);for(n in e)c(e,n)&&(s(t[n])&&s(e[n])?(a[n]={},f(a[n],t[n]),f(a[n],e[n])):null!=e[n]?a[n]=e[n]:delete a[n]);for(n in t)c(t,n)&&!c(e,n)&&s(t[n])&&(a[n]=f({},a[n]));return a}function E(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,N=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)c(t,e)&&n.push(e);return n};var L={};function D(t,e){var n=t.toLowerCase();L[n]=L[n+"s"]=L[e]=t}function P(t){return"string"==typeof t?L[t]||L[t.toLowerCase()]:void 0}function M(t){var e,n,a={};for(n in t)c(t,n)&&(e=P(n))&&(a[e]=t[n]);return a}var q={};function j(t,e){q[t]=e}function F(t,e,n){var a=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}var G=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,V=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,z={},B={};function Y(t,e,n,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),t&&(B[t]=r),e&&(B[e[0]]=function(){return F(r.apply(this,arguments),e[1],e[2])}),n&&(B[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function H(t,e){return t.isValid()?(e=U(e,t.localeData()),z[e]=z[e]||function(t){var e,n,a,r=t.match(G);for(e=0,n=r.length;e<n;e++)r[e]=B[r[e]]?B[r[e]]:(a=r[e]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(e){var a,i="";for(a=0;a<n;a++)i+=A(r[a])?r[a].call(e,t):r[a];return i}}(e),z[e](t)):t.localeData().invalidDate()}function U(t,e){var n=5;function a(t){return e.longDateFormat(t)||t}for(V.lastIndex=0;n>=0&&V.test(t);)t=t.replace(V,a),V.lastIndex=0,n-=1;return t}var W=/\d/,K=/\d\d/,$=/\d{3}/,Z=/\d{4}/,J=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,at=/[+-]?\d{1,6}/,rt=/\d+/,it=/[+-]?\d+/,st=/Z|[+-]\d\d:?\d\d/gi,ot=/Z|[+-]\d\d(?::?\d\d)?/gi,ut=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,lt={};function dt(t,e,n){lt[t]=A(e)?e:function(t,a){return t&&n?n:e}}function ct(t,e){return c(lt,t)?lt[t](e._strict,e._locale):new RegExp(ft(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,a,r){return e||n||a||r}))))}function ft(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ht={};function gt(t,e){var n,a=e;for("string"==typeof t&&(t=[t]),u(e)&&(a=function(t,n){n[e]=O(t)}),n=0;n<t.length;n++)ht[t[n]]=a}function pt(t,e){gt(t,(function(t,n,a,r){a._w=a._w||{},e(t,a._w,a,r)}))}function bt(t,e,n){null!=e&&c(ht,t)&&ht[t](e,n._a,n,t)}function mt(t){return yt(t)?366:365}function yt(t){return t%4==0&&t%100!=0||t%400==0}Y("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),Y(0,["YY",2],0,(function(){return this.year()%100})),Y(0,["YYYY",4],0,"year"),Y(0,["YYYYY",5],0,"year"),Y(0,["YYYYYY",6,!0],0,"year"),D("year","y"),j("year",1),dt("Y",it),dt("YY",Q,K),dt("YYYY",nt,Z),dt("YYYYY",at,J),dt("YYYYYY",at,J),gt(["YYYYY","YYYYYY"],0),gt("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):O(t)})),gt("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),gt("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return O(t)+(O(t)>68?1900:2e3)};var vt,xt=_t("FullYear",!0);function _t(t,e){return function(n){return null!=n?(Ot(this,t,n),r.updateOffset(this,e),this):Tt(this,t)}}function Tt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Ot(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&yt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),wt(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function wt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?yt(t)?29:28:31-n%7%2}vt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},Y("M",["MM",2],"Mo",(function(){return this.month()+1})),Y("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),Y("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),D("month","M"),j("month",8),dt("M",Q),dt("MM",Q,K),dt("MMM",(function(t,e){return e.monthsShortRegex(t)})),dt("MMMM",(function(t,e){return e.monthsRegex(t)})),gt(["M","MM"],(function(t,e){e[1]=O(t)-1})),gt(["MMM","MMMM"],(function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);null!=r?e[1]=r:g(n).invalidMonth=t}));var St=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,It="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Nt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ct(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=h([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))?r:null:"MMM"===e?-1!==(r=vt.call(this._shortMonthsParse,s))?r:-1!==(r=vt.call(this._longMonthsParse,s))?r:null:-1!==(r=vt.call(this._longMonthsParse,s))?r:-1!==(r=vt.call(this._shortMonthsParse,s))?r:null}function Rt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=O(e);else if(!u(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),wt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function At(t){return null!=t?(Rt(this,t),r.updateOffset(this,!0),this):Tt(this,"Month")}var kt=ut,Et=ut;function Lt(){function t(t,e){return e.length-t.length}var e,n,a=[],r=[],i=[];for(e=0;e<12;e++)n=h([2e3,e]),a.push(this.monthsShort(n,"")),r.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(a.sort(t),r.sort(t),i.sort(t),e=0;e<12;e++)a[e]=ft(a[e]),r[e]=ft(r[e]);for(e=0;e<24;e++)i[e]=ft(i[e]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Dt(t,e,n,a,r,i,s){var o;return t<100&&t>=0?(o=new Date(t+400,e,n,a,r,i,s),isFinite(o.getFullYear())&&o.setFullYear(t)):o=new Date(t,e,n,a,r,i,s),o}function Pt(t){var e;if(t<100&&t>=0){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Mt(t,e,n){var a=7+e-n;return-(7+Pt(t,0,a).getUTCDay()-e)%7+a-1}function qt(t,e,n,a,r){var i,s,o=1+7*(e-1)+(7+n-a)%7+Mt(t,a,r);return o<=0?s=mt(i=t-1)+o:o>mt(t)?(i=t+1,s=o-mt(t)):(i=t,s=o),{year:i,dayOfYear:s}}function jt(t,e,n){var a,r,i=Mt(t.year(),e,n),s=Math.floor((t.dayOfYear()-i-1)/7)+1;return s<1?a=s+Ft(r=t.year()-1,e,n):s>Ft(t.year(),e,n)?(a=s-Ft(t.year(),e,n),r=t.year()+1):(r=t.year(),a=s),{week:a,year:r}}function Ft(t,e,n){var a=Mt(t,e,n),r=Mt(t+1,e,n);return(mt(t)-a+r)/7}function Gt(t,e){return t.slice(e,7).concat(t.slice(0,e))}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),j("week",5),j("isoWeek",5),dt("w",Q),dt("ww",Q,K),dt("W",Q),dt("WW",Q,K),pt(["w","ww","W","WW"],(function(t,e,n,a){e[a.substr(0,1)]=O(t)})),Y("d",0,"do","day"),Y("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),Y("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),Y("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),dt("d",Q),dt("e",Q),dt("E",Q),dt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),dt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),dt("dddd",(function(t,e){return e.weekdaysRegex(t)})),pt(["dd","ddd","dddd"],(function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);null!=r?e.d=r:g(n).invalidWeekday=t})),pt(["d","e","E"],(function(t,e,n,a){e[a]=O(t)}));var Vt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),zt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Bt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Yt(t,e,n){var a,r,i,s=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)i=h([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"dddd"===e?-1!==(r=vt.call(this._weekdaysParse,s))?r:-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:"ddd"===e?-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:-1!==(r=vt.call(this._weekdaysParse,s))?r:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:null:-1!==(r=vt.call(this._minWeekdaysParse,s))?r:-1!==(r=vt.call(this._weekdaysParse,s))?r:-1!==(r=vt.call(this._shortWeekdaysParse,s))?r:null}var Ht=ut,Ut=ut,Wt=ut;function Kt(){function t(t,e){return e.length-t.length}var e,n,a,r,i,s=[],o=[],u=[],l=[];for(e=0;e<7;e++)n=h([2e3,1]).day(e),a=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),i=this.weekdays(n,""),s.push(a),o.push(r),u.push(i),l.push(a),l.push(r),l.push(i);for(s.sort(t),o.sort(t),u.sort(t),l.sort(t),e=0;e<7;e++)o[e]=ft(o[e]),u[e]=ft(u[e]),l[e]=ft(l[e]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function $t(){return this.hours()%12||12}function Zt(t,e){Y(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Jt(t,e){return e._meridiemParse}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,$t),Y("k",["kk",2],0,(function(){return this.hours()||24})),Y("hmm",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)})),Y("hmmss",0,0,(function(){return""+$t.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)})),Y("Hmm",0,0,(function(){return""+this.hours()+F(this.minutes(),2)})),Y("Hmmss",0,0,(function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)})),Zt("a",!0),Zt("A",!1),D("hour","h"),j("hour",13),dt("a",Jt),dt("A",Jt),dt("H",Q),dt("h",Q),dt("k",Q),dt("HH",Q,K),dt("hh",Q,K),dt("kk",Q,K),dt("hmm",X),dt("hmmss",tt),dt("Hmm",X),dt("Hmmss",tt),gt(["H","HH"],3),gt(["k","kk"],(function(t,e,n){var a=O(t);e[3]=24===a?0:a})),gt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),gt(["h","hh"],(function(t,e,n){e[3]=O(t),g(n).bigHour=!0})),gt("hmm",(function(t,e,n){var a=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a)),g(n).bigHour=!0})),gt("hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a,2)),e[5]=O(t.substr(r)),g(n).bigHour=!0})),gt("Hmm",(function(t,e,n){var a=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a))})),gt("Hmmss",(function(t,e,n){var a=t.length-4,r=t.length-2;e[3]=O(t.substr(0,a)),e[4]=O(t.substr(a,2)),e[5]=O(t.substr(r))}));var Qt,Xt=_t("Hours",!0),te={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:It,monthsShort:Nt,week:{dow:0,doy:6},weekdays:Vt,weekdaysMin:Bt,weekdaysShort:zt,meridiemParse:/[ap]\.?m?\.?/i},ee={},ne={};function ae(t){return t?t.toLowerCase().replace("_","-"):t}function re(e){var a=null;if(!ee[e]&&void 0!==t&&t&&t.exports)try{a=Qt._abbr,n("RnhZ")("./"+e),ie(a)}catch(r){}return ee[e]}function ie(t,e){var n;return t&&((n=o(e)?oe(t):se(t,e))?Qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Qt._abbr}function se(t,e){if(null!==e){var n,a=te;if(e.abbr=t,null!=ee[t])R("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=ee[t]._config;else if(null!=e.parentLocale)if(null!=ee[e.parentLocale])a=ee[e.parentLocale]._config;else{if(null==(n=re(e.parentLocale)))return ne[e.parentLocale]||(ne[e.parentLocale]=[]),ne[e.parentLocale].push({name:t,config:e}),null;a=n._config}return ee[t]=new E(k(a,e)),ne[t]&&ne[t].forEach((function(t){se(t.name,t.config)})),ie(t),ee[t]}return delete ee[t],null}function oe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Qt;if(!i(t)){if(e=re(t))return e;t=[t]}return function(t){for(var e,n,a,r,i=0;i<t.length;){for(e=(r=ae(t[i]).split("-")).length,n=(n=ae(t[i+1]))?n.split("-"):null;e>0;){if(a=re(r.slice(0,e).join("-")))return a;if(n&&n.length>=e&&w(r,n,!0)>=e-1)break;e--}i++}return Qt}(t)}function ue(t){var e,n=t._a;return n&&-2===g(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>wt(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,g(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),g(t)._overflowWeeks&&-1===e&&(e=7),g(t)._overflowWeekday&&-1===e&&(e=8),g(t).overflow=e),t}function le(t,e,n){return null!=t?t:null!=e?e:n}function de(t){var e,n,a,i,s,o=[];if(!t._d){for(a=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,a,r,i,s,o,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,s=4,n=le(e.GG,t._a[0],jt(we(),1,4).year),a=le(e.W,1),((r=le(e.E,1))<1||r>7)&&(u=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;var l=jt(we(),i,s);n=le(e.gg,t._a[0],l.year),a=le(e.w,l.week),null!=e.d?((r=e.d)<0||r>6)&&(u=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>Ft(n,i,s)?g(t)._overflowWeeks=!0:null!=u?g(t)._overflowWeekday=!0:(o=qt(n,a,r,i,s),t._a[0]=o.year,t._dayOfYear=o.dayOfYear)}(t),null!=t._dayOfYear&&(s=le(t._a[0],a[0]),(t._dayOfYear>mt(s)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),n=Pt(s,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=a[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Pt:Dt).apply(null,o),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(g(t).weekdayMismatch=!0)}}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/Z|[+-]\d\d(?::?\d\d)?/,ge=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],be=/^\/?Date\((\-?\d+)/i;function me(t){var e,n,a,r,i,s,o=t._i,u=ce.exec(o)||fe.exec(o);if(u){for(g(t).iso=!0,e=0,n=ge.length;e<n;e++)if(ge[e][1].exec(u[1])){r=ge[e][0],a=!1!==ge[e][2];break}if(null==r)return void(t._isValid=!1);if(u[3]){for(e=0,n=pe.length;e<n;e++)if(pe[e][1].exec(u[3])){i=(u[2]||" ")+pe[e][0];break}if(null==i)return void(t._isValid=!1)}if(!a&&null!=i)return void(t._isValid=!1);if(u[4]){if(!he.exec(u[4]))return void(t._isValid=!1);s="Z"}t._f=r+(i||"")+(s||""),_e(t)}else t._isValid=!1}var ye=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ve={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function xe(t){var e,n,a,r,i,s,o,u,l=ye.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var d=(e=l[3],n=l[2],a=l[5],r=l[6],i=l[7],s=[(o=l[4],u=parseInt(o,10),u<=49?2e3+u:u<=999?1900+u:u),Nt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)],i&&s.push(parseInt(i,10)),s);if(!function(t,e,n){return!t||zt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(g(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],d,t))return;t._a=d,t._tzm=function(t,e,n){if(t)return ve[t];if(e)return 0;var a=parseInt(n,10),r=a%100;return(a-r)/100*60+r}(l[8],l[9],l[10]),t._d=Pt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function _e(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],g(t).empty=!0;var e,n,a,i,s,o=""+t._i,u=o.length,l=0;for(a=U(t._f,t._locale).match(G)||[],e=0;e<a.length;e++)(n=(o.match(ct(i=a[e],t))||[])[0])&&((s=o.substr(0,o.indexOf(n))).length>0&&g(t).unusedInput.push(s),o=o.slice(o.indexOf(n)+n.length),l+=n.length),B[i]?(n?g(t).empty=!1:g(t).unusedTokens.push(i),bt(i,n,t)):t._strict&&!n&&g(t).unusedTokens.push(i);g(t).charsLeftOver=u-l,o.length>0&&g(t).unusedInput.push(o),t._a[3]<=12&&!0===g(t).bigHour&&t._a[3]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var a;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((a=t.isPM(n))&&e<12&&(e+=12),a||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),de(t),ue(t)}else xe(t);else me(t)}function Te(t){var e=t._i,n=t._f;return t._locale=t._locale||oe(t._l),null===e||void 0===n&&""===e?b({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(ue(e)):(l(e)?t._d=e:i(n)?function(t){var e,n,a,r,i;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;r<t._f.length;r++)i=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[r],_e(e),p(e)&&(i+=g(e).charsLeftOver,i+=10*g(e).unusedTokens.length,g(e).score=i,(null==a||i<a)&&(a=i,n=e));f(t,n||e)}(t):n?_e(t):function(t){var e=t._i;o(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=be.exec(t._i);null===e?(me(t),!1===t._isValid&&(delete t._isValid,xe(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=d(e.slice(0),(function(t){return parseInt(t,10)})),de(t)):s(e)?function(t){if(!t._d){var e=M(t._i);t._a=d([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),de(t)}}(t):u(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),p(t)||(t._d=null),t))}function Oe(t,e,n,a,r){var o,u={};return!0!==n&&!1!==n||(a=n,n=void 0),(s(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||i(t)&&0===t.length)&&(t=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=r,u._l=n,u._i=t,u._f=e,u._strict=a,(o=new x(ue(Te(u))))._nextDay&&(o.add(1,"d"),o._nextDay=void 0),o}function we(t,e,n,a){return Oe(t,e,n,a,!1)}r.createFromInputFallback=I("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=we.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:b()})),Ie=I("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=we.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:b()}));function Ne(t,e){var n,a;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return we();for(n=e[0],a=1;a<e.length;++a)e[a].isValid()&&!e[a][t](n)||(n=e[a]);return n}var Ce=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Re(t){var e=M(t),n=e.year||0,a=e.quarter||0,r=e.month||0,i=e.week||e.isoWeek||0,s=e.day||0,o=e.hour||0,u=e.minute||0,l=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===vt.call(Ce,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,a=0;a<Ce.length;++a)if(t[Ce[a]]){if(n)return!1;parseFloat(t[Ce[a]])!==O(t[Ce[a]])&&(n=!0)}return!0}(e),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+s+7*i,this._months=+r+3*a+12*n,this._data={},this._locale=oe(),this._bubble()}function Ae(t){return t instanceof Re}function ke(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ee(t,e){Y(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+F(~~(t/60),2)+e+F(~~t%60,2)}))}Ee("Z",":"),Ee("ZZ",""),dt("Z",ot),dt("ZZ",ot),gt(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=De(ot,t)}));var Le=/([\+\-]|\d\d)/gi;function De(t,e){var n=(e||"").match(t);if(null===n)return null;var a=((n[n.length-1]||[])+"").match(Le)||["-",0,0],r=60*a[1]+O(a[2]);return 0===r?0:"+"===a[0]?r:-r}function Pe(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(_(t)||l(t)?t.valueOf():we(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):we(t).local()}function Me(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function qe(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Fe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ge(t,e){var n,a,r,i,s,o,l=t,d=null;return Ae(t)?l={ms:t._milliseconds,d:t._days,M:t._months}:u(t)?(l={},e?l[e]=t:l.milliseconds=t):(d=je.exec(t))?(n="-"===d[1]?-1:1,l={y:0,d:O(d[2])*n,h:O(d[3])*n,m:O(d[4])*n,s:O(d[5])*n,ms:O(ke(1e3*d[6]))*n}):(d=Fe.exec(t))?l={y:Ve(d[2],n="-"===d[1]?-1:1),M:Ve(d[3],n),w:Ve(d[4],n),d:Ve(d[5],n),h:Ve(d[6],n),m:Ve(d[7],n),s:Ve(d[8],n)}:null==l?l={}:"object"==typeof l&&("from"in l||"to"in l)&&(i=we(l.from),s=we(l.to),r=i.isValid()&&s.isValid()?(s=Pe(s,i),i.isBefore(s)?o=ze(i,s):((o=ze(s,i)).milliseconds=-o.milliseconds,o.months=-o.months),o):{milliseconds:0,months:0},(l={}).ms=r.milliseconds,l.M=r.months),a=new Re(l),Ae(t)&&c(t,"_locale")&&(a._locale=t._locale),a}function Ve(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function ze(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Be(t,e){return function(n,a){var r;return null===a||isNaN(+a)||(R(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=a,a=r),Ye(this,Ge(n="string"==typeof n?+n:n,a),t),this}}function Ye(t,e,n,a){var i=e._milliseconds,s=ke(e._days),o=ke(e._months);t.isValid()&&(a=null==a||a,o&&Rt(t,Tt(t,"Month")+o*n),s&&Ot(t,"Date",Tt(t,"Date")+s*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,s||o))}Ge.fn=Re.prototype,Ge.invalid=function(){return Ge(NaN)};var He=Be(1,"add"),Ue=Be(-1,"subtract");function We(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),a=t.clone().add(n,"months");return-(n+(e-a<0?(e-a)/(a-t.clone().add(n-1,"months")):(e-a)/(t.clone().add(n+1,"months")-a)))||0}function Ke(t){var e;return void 0===t?this._locale._abbr:(null!=(e=oe(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var $e=I("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function Ze(){return this._locale}function Je(t,e){return(t%e+e)%e}function Qe(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function Xe(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function tn(t,e){Y(0,[t,t.length],0,e)}function en(t,e,n,a,r){var i;return null==t?jt(this,a,r).year:(e>(i=Ft(t,a,r))&&(e=i),nn.call(this,t,e,n,a,r))}function nn(t,e,n,a,r){var i=qt(t,e,n,a,r),s=Pt(i.year,0,i.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}Y(0,["gg",2],0,(function(){return this.weekYear()%100})),Y(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),j("weekYear",1),j("isoWeekYear",1),dt("G",it),dt("g",it),dt("GG",Q,K),dt("gg",Q,K),dt("GGGG",nt,Z),dt("gggg",nt,Z),dt("GGGGG",at,J),dt("ggggg",at,J),pt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){e[a.substr(0,2)]=O(t)})),pt(["gg","GG"],(function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)})),Y("Q",0,"Qo","quarter"),D("quarter","Q"),j("quarter",7),dt("Q",W),gt("Q",(function(t,e){e[1]=3*(O(t)-1)})),Y("D",["DD",2],"Do","date"),D("date","D"),j("date",9),dt("D",Q),dt("DD",Q,K),dt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),gt(["D","DD"],2),gt("Do",(function(t,e){e[2]=O(t.match(Q)[0])}));var an=_t("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),j("dayOfYear",4),dt("DDD",et),dt("DDDD",$),gt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=O(t)})),Y("m",["mm",2],0,"minute"),D("minute","m"),j("minute",14),dt("m",Q),dt("mm",Q,K),gt(["m","mm"],4);var rn=_t("Minutes",!1);Y("s",["ss",2],0,"second"),D("second","s"),j("second",15),dt("s",Q),dt("ss",Q,K),gt(["s","ss"],5);var sn,on=_t("Seconds",!1);for(Y("S",0,0,(function(){return~~(this.millisecond()/100)})),Y(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),Y(0,["SSS",3],0,"millisecond"),Y(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),Y(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),Y(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),Y(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),Y(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),Y(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),D("millisecond","ms"),j("millisecond",16),dt("S",et,W),dt("SS",et,K),dt("SSS",et,$),sn="SSSS";sn.length<=9;sn+="S")dt(sn,rt);function un(t,e){e[6]=O(1e3*("0."+t))}for(sn="S";sn.length<=9;sn+="S")gt(sn,un);var ln=_t("Milliseconds",!1);Y("z",0,0,"zoneAbbr"),Y("zz",0,0,"zoneName");var dn=x.prototype;function cn(t){return t}dn.add=He,dn.calendar=function(t,e){var n=t||we(),a=Pe(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",s=e&&(A(e[i])?e[i].call(this,n):e[i]);return this.format(s||this.localeData().calendar(i,this,we(n)))},dn.clone=function(){return new x(this)},dn.diff=function(t,e,n){var a,r,i;if(!this.isValid())return NaN;if(!(a=Pe(t,this)).isValid())return NaN;switch(r=6e4*(a.utcOffset()-this.utcOffset()),e=P(e)){case"year":i=We(this,a)/12;break;case"month":i=We(this,a);break;case"quarter":i=We(this,a)/3;break;case"second":i=(this-a)/1e3;break;case"minute":i=(this-a)/6e4;break;case"hour":i=(this-a)/36e5;break;case"day":i=(this-a-r)/864e5;break;case"week":i=(this-a-r)/6048e5;break;default:i=this-a}return n?i:T(i)},dn.endOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-Je(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-Je(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},dn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=H(this,t);return this.localeData().postformat(e)},dn.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||we(t).isValid())?Ge({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dn.fromNow=function(t){return this.from(we(),t)},dn.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||we(t).isValid())?Ge({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dn.toNow=function(t){return this.to(we(),t)},dn.get=function(t){return A(this[t=P(t)])?this[t]():this},dn.invalidAt=function(){return g(this).overflow},dn.isAfter=function(t,e){var n=_(t)?t:we(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},dn.isBefore=function(t,e){var n=_(t)?t:we(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},dn.isBetween=function(t,e,n,a){var r=_(t)?t:we(t),i=_(e)?e:we(e);return!!(this.isValid()&&r.isValid()&&i.isValid())&&("("===(a=a||"()")[0]?this.isAfter(r,n):!this.isBefore(r,n))&&(")"===a[1]?this.isBefore(i,n):!this.isAfter(i,n))},dn.isSame=function(t,e){var n,a=_(t)?t:we(t);return!(!this.isValid()||!a.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()===a.valueOf():(n=a.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},dn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},dn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},dn.isValid=function(){return p(this)},dn.lang=$e,dn.locale=Ke,dn.localeData=Ze,dn.max=Ie,dn.min=Se,dn.parsingFlags=function(){return f({},g(this))},dn.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:q[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=M(t)),a=0;a<n.length;a++)this[n[a].unit](t[n[a].unit]);else if(A(this[t=P(t)]))return this[t](e);return this},dn.startOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Xe:Qe;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=Je(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=Je(e,6e4);break;case"second":e=this._d.valueOf(),e-=Je(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},dn.subtract=Ue,dn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},dn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},dn.toDate=function(){return new Date(this.valueOf())},dn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):A(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";return this.format(n+a+"-MM-DD[T]HH:mm:ss.SSS"+e+'[")]')},dn.toJSON=function(){return this.isValid()?this.toISOString():null},dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},dn.unix=function(){return Math.floor(this.valueOf()/1e3)},dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},dn.year=xt,dn.isLeapYear=function(){return yt(this.year())},dn.weekYear=function(t){return en.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},dn.isoWeekYear=function(t){return en.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},dn.quarter=dn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},dn.month=At,dn.daysInMonth=function(){return wt(this.year(),this.month())},dn.week=dn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},dn.isoWeek=dn.isoWeeks=function(t){var e=jt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},dn.weeksInYear=function(){var t=this.localeData()._week;return Ft(this.year(),t.dow,t.doy)},dn.isoWeeksInYear=function(){return Ft(this.year(),1,4)},dn.date=an,dn.day=dn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},dn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},dn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},dn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},dn.hour=dn.hours=Xt,dn.minute=dn.minutes=rn,dn.second=dn.seconds=on,dn.millisecond=dn.milliseconds=ln,dn.utcOffset=function(t,e,n){var a,i=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=De(ot,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=Me(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Ye(this,Ge(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Me(this)},dn.utc=function(t){return this.utcOffset(0,t)},dn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Me(this),"m")),this},dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=De(st,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},dn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?we(t).utcOffset():0,(this.utcOffset()-t)%60==0)},dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},dn.isUtc=qe,dn.isUTC=qe,dn.zoneAbbr=function(){return this._isUTC?"UTC":""},dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},dn.dates=I("dates accessor is deprecated. Use date instead.",an),dn.months=I("months accessor is deprecated. Use month instead",At),dn.years=I("years accessor is deprecated. Use year instead",xt),dn.zone=I("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),dn.isDSTShifted=I("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Te(t))._a){var e=t._isUTC?h(t._a):we(t._a);this._isDSTShifted=this.isValid()&&w(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var fn=E.prototype;function hn(t,e,n,a){var r=oe(),i=h().set(a,e);return r[n](i,t)}function gn(t,e,n){if(u(t)&&(e=t,t=void 0),t=t||"",null!=e)return hn(t,e,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=hn(t,a,n,"month");return r}function pn(t,e,n,a){"boolean"==typeof t?(u(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,u(e)&&(n=e,e=void 0),e=e||"");var r,i=oe(),s=t?i._week.dow:0;if(null!=n)return hn(e,(n+s)%7,a,"day");var o=[];for(r=0;r<7;r++)o[r]=hn(e,(r+s)%7,a,"day");return o}fn.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return A(a)?a.call(e,n):a},fn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},fn.invalidDate=function(){return this._invalidDate},fn.ordinal=function(t){return this._ordinal.replace("%d",t)},fn.preparse=cn,fn.postformat=cn,fn.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return A(r)?r(t,e,n,a):r.replace(/%d/i,t)},fn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return A(n)?n(e):n.replace(/%s/i,e)},fn.set=function(t){var e,n;for(n in t)A(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},fn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||St).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},fn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[St.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},fn.monthsParse=function(t,e,n){var a,r,i;if(this._monthsParseExact)return Ct.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=h([2e3,a]),n&&!this._longMonthsParse[a]&&(this._longMonthsParse[a]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[a]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),n||this._monthsParse[a]||(i="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[a]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[a].test(t))return a;if(n&&"MMM"===e&&this._shortMonthsParse[a].test(t))return a;if(!n&&this._monthsParse[a].test(t))return a}},fn.monthsRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Et),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},fn.monthsShortRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||Lt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=kt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},fn.week=function(t){return jt(t,this._week.dow,this._week.doy).week},fn.firstDayOfYear=function(){return this._week.doy},fn.firstDayOfWeek=function(){return this._week.dow},fn.weekdays=function(t,e){var n=i(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Gt(n,this._week.dow):t?n[t.day()]:n},fn.weekdaysMin=function(t){return!0===t?Gt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},fn.weekdaysShort=function(t){return!0===t?Gt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},fn.weekdaysParse=function(t,e,n){var a,r,i;if(this._weekdaysParseExact)return Yt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=h([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(i="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[a]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}},fn.weekdaysRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ht),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},fn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},fn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Kt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Wt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},fn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},fn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===O(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=I("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=I("moment.langData is deprecated. Use moment.localeData instead.",oe);var bn=Math.abs;function mn(t,e,n,a){var r=Ge(e,n);return t._milliseconds+=a*r._milliseconds,t._days+=a*r._days,t._months+=a*r._months,t._bubble()}function yn(t){return t<0?Math.floor(t):Math.ceil(t)}function vn(t){return 4800*t/146097}function xn(t){return 146097*t/4800}function _n(t){return function(){return this.as(t)}}var Tn=_n("ms"),On=_n("s"),wn=_n("m"),Sn=_n("h"),In=_n("d"),Nn=_n("w"),Cn=_n("M"),Rn=_n("Q"),An=_n("y");function kn(t){return function(){return this.isValid()?this._data[t]:NaN}}var En=kn("milliseconds"),Ln=kn("seconds"),Dn=kn("minutes"),Pn=kn("hours"),Mn=kn("days"),qn=kn("months"),jn=kn("years"),Fn=Math.round,Gn={ss:44,s:45,m:45,h:22,d:26,M:11};function Vn(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}var zn=Math.abs;function Bn(t){return(t>0)-(t<0)||+t}function Yn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=zn(this._milliseconds)/1e3,a=zn(this._days),r=zn(this._months);t=T(n/60),e=T(t/60),n%=60,t%=60;var i=T(r/12),s=r%=12,o=a,u=e,l=t,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var f=c<0?"-":"",h=Bn(this._months)!==Bn(c)?"-":"",g=Bn(this._days)!==Bn(c)?"-":"",p=Bn(this._milliseconds)!==Bn(c)?"-":"";return f+"P"+(i?h+i+"Y":"")+(s?h+s+"M":"")+(o?g+o+"D":"")+(u||l||d?"T":"")+(u?p+u+"H":"")+(l?p+l+"M":"")+(d?p+d+"S":"")}var Hn=Re.prototype;return Hn.isValid=function(){return this._isValid},Hn.abs=function(){var t=this._data;return this._milliseconds=bn(this._milliseconds),this._days=bn(this._days),this._months=bn(this._months),t.milliseconds=bn(t.milliseconds),t.seconds=bn(t.seconds),t.minutes=bn(t.minutes),t.hours=bn(t.hours),t.months=bn(t.months),t.years=bn(t.years),this},Hn.add=function(t,e){return mn(this,t,e,1)},Hn.subtract=function(t,e){return mn(this,t,e,-1)},Hn.as=function(t){if(!this.isValid())return NaN;var e,n,a=this._milliseconds;if("month"===(t=P(t))||"quarter"===t||"year"===t)switch(n=this._months+vn(e=this._days+a/864e5),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(xn(this._months)),t){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hour":return 24*e+a/36e5;case"minute":return 1440*e+a/6e4;case"second":return 86400*e+a/1e3;case"millisecond":return Math.floor(864e5*e)+a;default:throw new Error("Unknown unit "+t)}},Hn.asMilliseconds=Tn,Hn.asSeconds=On,Hn.asMinutes=wn,Hn.asHours=Sn,Hn.asDays=In,Hn.asWeeks=Nn,Hn.asMonths=Cn,Hn.asQuarters=Rn,Hn.asYears=An,Hn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*O(this._months/12):NaN},Hn._bubble=function(){var t,e,n,a,r,i=this._milliseconds,s=this._days,o=this._months,u=this._data;return i>=0&&s>=0&&o>=0||i<=0&&s<=0&&o<=0||(i+=864e5*yn(xn(o)+s),s=0,o=0),u.milliseconds=i%1e3,t=T(i/1e3),u.seconds=t%60,e=T(t/60),u.minutes=e%60,n=T(e/60),u.hours=n%24,s+=T(n/24),o+=r=T(vn(s)),s-=yn(xn(r)),a=T(o/12),o%=12,u.days=s,u.months=o,u.years=a,this},Hn.clone=function(){return Ge(this)},Hn.get=function(t){return t=P(t),this.isValid()?this[t+"s"]():NaN},Hn.milliseconds=En,Hn.seconds=Ln,Hn.minutes=Dn,Hn.hours=Pn,Hn.days=Mn,Hn.weeks=function(){return T(this.days()/7)},Hn.months=qn,Hn.years=jn,Hn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var a=Ge(t).abs(),r=Fn(a.as("s")),i=Fn(a.as("m")),s=Fn(a.as("h")),o=Fn(a.as("d")),u=Fn(a.as("M")),l=Fn(a.as("y")),d=r<=Gn.ss&&["s",r]||r<Gn.s&&["ss",r]||i<=1&&["m"]||i<Gn.m&&["mm",i]||s<=1&&["h"]||s<Gn.h&&["hh",s]||o<=1&&["d"]||o<Gn.d&&["dd",o]||u<=1&&["M"]||u<Gn.M&&["MM",u]||l<=1&&["y"]||["yy",l];return d[2]=e,d[3]=+t>0,d[4]=n,Vn.apply(null,d)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Hn.toISOString=Yn,Hn.toString=Yn,Hn.toJSON=Yn,Hn.locale=Ke,Hn.localeData=Ze,Hn.toIsoString=I("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Yn),Hn.lang=$e,Y("X",0,0,"unix"),Y("x",0,0,"valueOf"),dt("x",it),dt("X",/[+-]?\d+(\.\d{1,3})?/),gt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),gt("x",(function(t,e,n){n._d=new Date(O(t))})),r.version="2.24.0",e=we,r.fn=dn,r.min=function(){var t=[].slice.call(arguments,0);return Ne("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return Ne("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=h,r.unix=function(t){return we(1e3*t)},r.months=function(t,e){return gn(t,e,"months")},r.isDate=l,r.locale=ie,r.invalid=b,r.duration=Ge,r.isMoment=_,r.weekdays=function(t,e,n){return pn(t,e,n,"weekdays")},r.parseZone=function(){return we.apply(null,arguments).parseZone()},r.localeData=oe,r.isDuration=Ae,r.monthsShort=function(t,e){return gn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return pn(t,e,n,"weekdaysMin")},r.defineLocale=se,r.updateLocale=function(t,e){if(null!=e){var n,a,r=te;null!=(a=re(t))&&(r=a._config),(n=new E(e=k(r,e))).parentLocale=ee[t],ee[t]=n,ie(t)}else null!=ee[t]&&(null!=ee[t].parentLocale?ee[t]=ee[t].parentLocale:null!=ee[t]&&delete ee[t]);return ee[t]},r.locales=function(){return N(ee)},r.weekdaysShort=function(t,e,n){return pn(t,e,n,"weekdaysShort")},r.normalizeUnits=P,r.relativeTimeRounding=function(t){return void 0===t?Fn:"function"==typeof t&&(Fn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Gn[t]&&(void 0===e?Gn[t]:(Gn[t]=e,"s"===t&&(Gn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=dn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},wg0c:function(t,e,n){var a=n("2oRo"),r=n("WKiH").trim,i=n("WJkJ"),s=a.parseInt,o=/^[+-]?0[Xx]/,u=8!==s(i+"08")||22!==s(i+"0x16");t.exports=u?function(t,e){var n=r(String(t));return s(n,e>>>0||(o.test(n)?16:10))}:s},wig9:function(t,e){t.exports=function(t){for(var e=-1,n=null==t?0:t.length,a=0,r=[];++e<n;){var i=t[e];i&&(r[a++]=i)}return r}},wnGv:function(t,e,n){"use strict";n.d(e,"a",(function(){return d}));var a=n("8Y7J"),r=n("s7LF"),i=n("LvDl"),s=n("oxzT"),o=n("QFaf"),u=n("DNAf"),l=n("a96k");class d{constructor(t){this.i18n=t,this.data=[],this.options=[],this.messages=new u.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.Object=Object,this.filteredOptions=[],this.icons=s.a}ngOnInit(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=i.sortBy(this.options,["name"]),this.updateOptions()}initFilter(){this.filter=new r.i("",{validators:this.customBadgeValidators}),this.form=new o.a({filter:this.filter}),this.filteredOptions=[...this.options||[]]}initMissingOptions(){const t=this.options.map(t=>t.name);this.data.filter(e=>-1===t.indexOf(e)).forEach(t=>this.addOption(t)),this.forceOptionsToReflectData()}addOption(t){this.options.push(new l.a(!1,t,"")),this.options=i.sortBy(this.options,["name"]),this.triggerSelection(this.options.find(e=>e.name===t))}triggerSelection(t){!t||this.selectionLimit&&!t.selected&&this.data.length>=this.selectionLimit||(t.selected=!t.selected,this.updateOptions(),this.selection.emit({option:t}))}updateOptions(){this.data.splice(0,this.data.length),this.options.forEach(t=>{t.selected&&this.data.push(t.name)}),this.updateFilter()}updateFilter(){this.filteredOptions=this.options.filter(t=>t.name.includes(this.filter.value))}forceOptionsToReflectData(){this.options.forEach(t=>{-1!==this.data.indexOf(t.name)&&(t.selected=!0)})}ngOnChanges(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()}selectOption(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())}addCustomOption(){this.isCreatable()&&(this.addOption(this.filter.value),this.resetFilter())}isCreatable(){return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(t=>t.name!==this.filter.value)}resetFilter(){this.filter.setValue(""),this.updateFilter()}removeItem(t){this.triggerSelection(this.options.find(e=>e.name===t&&e.selected))}}},woSy:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("f95s"),i=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},s=function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=function(){function t(){}return t.prototype.onDrop=function(t){this.node.mouseAction("drop",t.event,{from:t.element,to:{parent:this.node,index:this.dropIndex}})},t.prototype.allowDrop=function(t,e){return this.node.options.allowDrop(t,{parent:this.node,index:this.dropIndex},e)},i([Object(a.Input)(),s("design:type",r.a)],t.prototype,"node",void 0),i([Object(a.Input)(),s("design:type",Number)],t.prototype,"dropIndex",void 0),i([Object(a.Component)({selector:"TreeNodeDropSlot, tree-node-drop-slot",encapsulation:a.ViewEncapsulation.None,styles:[],template:'\n    <div\n      class="node-drop-slot"\n      (treeDrop)="onDrop($event)"\n      [treeAllowDrop]="allowDrop.bind(this)"\n      [allowDragoverStyling]="true">\n    </div>\n  '})],t)}()},wrZu:function(t,e,n){var a=n("+K+b"),r=n("XYm9"),i=n("b2z7"),s=n("otv/"),o=n("yP5f");t.exports=function(t,e,n){var u=t.constructor;switch(e){case"[object ArrayBuffer]":return a(t);case"[object Boolean]":case"[object Date]":return new u(+t);case"[object DataView]":return r(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return o(t,n);case"[object Map]":return new u;case"[object Number]":case"[object String]":return new u(t);case"[object RegExp]":return i(t);case"[object Set]":return new u;case"[object Symbol]":return s(t)}}},x38r:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t.bold="bold",t.sparkline="sparkline",t.perSecond="perSecond",t.checkIcon="checkIcon",t.routerLink="routerLink",t.executing="executing",t.classAdding="classAdding",t.badge="badge",t.map="map",t.truncate="truncate",t}({})},x6pH:function(t,e,n){!function(t){"use strict";t.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(t){return 2===t?"שעתיים":t+" שעות"},d:"יום",dd:function(t){return 2===t?"יומיים":t+" ימים"},M:"חודש",MM:function(t){return 2===t?"חודשיים":t+" חודשים"},y:"שנה",yy:function(t){return 2===t?"שנתיים":t%10==0&&10!==t?t+" שנה":t+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(t){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(t)},meridiem:function(t,e,n){return t<5?"לפנות בוקר":t<10?"בבוקר":t<12?n?'לפנה"צ':"לפני הצהריים":t<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("wd/R"))},xDBR:function(t,e){t.exports=!1},xSw7:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("Fgil"),i=n("aXbf"),s=n("o4+5"),o=n("SVse"),u=n("978R"),l=n("z/SZ"),d=n("2uy1");n("GgAd"),n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return h}));var c=a["ɵcrt"]({encapsulation:0,styles:[[".bg-info[_ngcontent-%COMP%]{background-color:#2b99a8!important}.bg-freespace[_ngcontent-%COMP%]{background-color:#d1d1d1!important}.progress[_ngcontent-%COMP%]{height:20px;position:relative;margin-bottom:0}.progress[_ngcontent-%COMP%]   div.progress-bar[_ngcontent-%COMP%]{position:static}.progress[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{position:absolute;display:block;width:100%;color:#000;font-weight:400}"]],data:{}});function f(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,16,"table",[],null,null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](2,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Used: "])),(t()(),a["ɵeld"](4,0,null,null,4,"td",[["class","text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](5,0,null,null,3,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](6,null,[" ",""])),a["ɵppd"](7,1),a["ɵppd"](8,1),(t()(),a["ɵeld"](9,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["ɵeld"](10,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["ɵted"](-1,null,["Free: "])),(t()(),a["ɵeld"](12,0,null,null,4,"td",[["class","'text-right"]],null,null,null,null,null)),(t()(),a["ɵeld"](13,0,null,null,3,"strong",[],null,null,null,null,null)),(t()(),a["ɵted"](14,null,["",""])),a["ɵppd"](15,1),a["ɵppd"](16,1)],null,(function(t,e){var n=e.component,r=a["ɵunv"](e,6,0,n.isBinary?t(e,7,0,a["ɵnov"](e.parent,0),n.used):t(e,8,0,a["ɵnov"](e.parent,1),n.used));t(e,6,0,r);var i=a["ɵunv"](e,14,0,n.isBinary?t(e,15,0,a["ɵnov"](e.parent,0),n.total-n.used):t(e,16,0,a["ɵnov"](e.parent,1),n.total-n.used));t(e,14,0,i)}))}function h(t){return a["ɵvid"](0,[a["ɵpid"](0,r.a,[i.a]),a["ɵpid"](0,s.a,[i.a]),a["ɵpid"](0,o.DecimalPipe,[a.LOCALE_ID]),(t()(),a["ɵand"](0,[["usageTooltipTpl",2]],null,0,null,f)),(t()(),a["ɵeld"](4,16777216,null,null,6,"div",[["class","progress"],["data-placement","left"]],null,null,null,null,null)),a["ɵdid"](5,212992,null,0,u.c,[a.ViewContainerRef,l.a,u.a,a.ElementRef,a.Renderer2,d.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(t()(),a["ɵeld"](6,0,null,null,3,"div",[["class","progress-bar bg-info"],["role","progressbar"]],[[4,"width",null]],null,null,null,null)),(t()(),a["ɵeld"](7,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["ɵted"](8,null,["","%"])),a["ɵppd"](9,2),(t()(),a["ɵeld"](10,0,null,null,0,"div",[["class","progress-bar bg-freespace"],["role","progressbar"]],[[4,"width",null]],null,null,null,null))],(function(t,e){t(e,5,0,a["ɵnov"](e,3),"left")}),(function(t,e){var n=e.component;t(e,6,0,n.usedPercentage+"%");var r=a["ɵunv"](e,8,0,t(e,9,0,a["ɵnov"](e,2),n.usedPercentage,"1.0-"+n.decimals));t(e,8,0,r),t(e,10,0,n.freePercentage+"%")}))}},xTzq:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n("LvDl");function r(...t){switch(t.length){case 1:return s.apply(void 0,t);case 3:return o.apply(void 0,t);default:throw new Error}}function i(t,e,n){const a=`__ignore_${e}`;Array.isArray(t[a])?t[a].push(n):t[a]=[n]}function s(t){for(const e of Object.getOwnPropertyNames(t.prototype)){const n=Object.getOwnPropertyDescriptor(t.prototype,e),a="constructor"===e;n.value instanceof Function&&!a&&(o(t.prototype,e,n),Object.defineProperty(t.prototype,e,n))}}function o(t,e,n){void 0===n&&(n=Object.getOwnPropertyDescriptor(t,e));const r=n.value;n.value=function(){const n=`__ignore_${e}`,i=t[n]||[],s=[];for(let t=0;t<arguments.length;t++)s[t]=a.isString(arguments[t])&&-1===i.indexOf(t)?encodeURIComponent(arguments[t]):arguments[t];const o=r.apply(this,s);return o}}},xYSL:function(t,e){t.exports=function(t,e){return t.has(e)}},xbPD:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("7o/Q");function r(t=null){return e=>e.lift(new i(t))}class i{constructor(t){this.defaultValue=t}call(t,e){return e.subscribe(new s(t,this.defaultValue))}}class s extends a.a{constructor(t,e){super(t),this.defaultValue=e,this.isEmpty=!0}_next(t){this.isEmpty=!1,this.destination.next(t)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}},xgIS:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("HDdC"),r=n("DH7j"),i=n("n6bG"),s=n("lJxs");function o(t,e,n,u){return Object(i.a)(n)&&(u=n,n=void 0),u?o(t,e,n).pipe(Object(s.a)(t=>Object(r.a)(t)?u(...t):u(t))):new a.a(a=>{!function t(e,n,a,r,i){let s;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){const t=e;e.addEventListener(n,a,i),s=()=>t.removeEventListener(n,a,i)}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){const t=e;e.on(n,a),s=()=>t.off(n,a)}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){const t=e;e.addListener(n,a),s=()=>t.removeListener(n,a)}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(let s=0,o=e.length;s<o;s++)t(e[s],n,a,r,i)}r.add(s)}(t,e,(function(t){a.next(arguments.length>1?Array.prototype.slice.call(arguments):t)}),a,n)})}},"xj/R":function(t,e,n){"use strict";function a(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function r(t){return"string"==typeof t}function i(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function s(t){return t&&t.getTime&&!isNaN(t.getTime())}function o(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function f(t){return void 0===t}function h(t){const e=+t;let n=0;return 0!==e&&isFinite(e)&&(n=a(e)),n}n.d(e,"a",(function(){return $e})),n.d(e,"b",(function(){return Je})),n.d(e,"c",(function(){return Jt})),n.d(e,"d",(function(){return Tt})),n.d(e,"e",(function(){return nn})),n.d(e,"f",(function(){return xe})),n.d(e,"g",(function(){return an})),n.d(e,"h",(function(){return R})),n.d(e,"i",(function(){return L})),n.d(e,"j",(function(){return E})),n.d(e,"k",(function(){return Qt})),n.d(e,"l",(function(){return k})),n.d(e,"m",(function(){return rn})),n.d(e,"n",(function(){return Re})),n.d(e,"o",(function(){return l})),n.d(e,"p",(function(){return Ae})),n.d(e,"q",(function(){return i})),n.d(e,"r",(function(){return s})),n.d(e,"s",(function(){return ke})),n.d(e,"t",(function(){return D})),n.d(e,"u",(function(){return Ee})),n.d(e,"v",(function(){return q})),n.d(e,"w",(function(){return P})),n.d(e,"x",(function(){return M})),n.d(e,"y",(function(){return sn})),n.d(e,"z",(function(){return on})),n.d(e,"A",(function(){return un})),n.d(e,"B",(function(){return Ie})),n.d(e,"C",(function(){return hn})),n.d(e,"D",(function(){return gn})),n.d(e,"E",(function(){return bt})),n.d(e,"F",(function(){return pt})),n.d(e,"G",(function(){return _t})),n.d(e,"H",(function(){return Ne})),n.d(e,"I",(function(){return pn}));const g={},p={date:"day",hour:"hours",minute:"minutes",second:"seconds",millisecond:"milliseconds"};function b(t,e){const n=t.toLowerCase();let a=t;n in p&&(a=p[n]),g[n]=g[`${n}s`]=g[e]=a}function m(t){return r(t)?g[t]||g[t.toLowerCase()]:void 0}function y(t,e,n){const a=`${Math.abs(t)}`;return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-a.length)).toString().substr(1)+a}let v={},x={};const _=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;function T(t,e,n,a){t&&(x[t]=a),e&&(x[e[0]]=function(){return y(a.apply(null,arguments),e[1],e[2])}),n&&(x[n]=function(e,n){return n.locale.ordinal(a.apply(null,arguments),t)})}function O(t,e,n){const a=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(t),a}function w(t,e=0,n=1,a=0,r=0,i=0,s=0){const o=new Date(t,e,n,a,r,i,s);return t<100&&t>=0&&isFinite(o.getFullYear())&&o.setFullYear(t),o}function S(t,e=!1){return e?t.getUTCHours():t.getHours()}function I(t,e=!1){return e?t.getUTCMinutes():t.getMinutes()}function N(t,e=!1){return e?t.getUTCSeconds():t.getSeconds()}function C(t,e=!1){return e?t.getUTCMilliseconds():t.getMilliseconds()}function R(t,e=!1){return e?t.getUTCDay():t.getDay()}function A(t,e=!1){return e?t.getUTCDate():t.getDate()}function k(t,e=!1){return e?t.getUTCMonth():t.getMonth()}function E(t,e=!1){return e?t.getUTCFullYear():t.getFullYear()}function L(t){return w(t.getFullYear(),t.getMonth(),1,t.getHours(),t.getMinutes(),t.getSeconds())}function D(t,e){return t.getDay()===e}function P(t,e){return!(!t||!e)&&M(t,e)&&k(t)===k(e)}function M(t,e){return!(!t||!e)&&E(t)===E(e)}function q(t,e){return!(!t||!e)&&M(t,e)&&P(t,e)&&A(t)===A(e)}const j=/\d/,F=/\d\d/,G=/\d{3}/,V=/\d{4}/,z=/[+-]?\d{6}/,B=/\d\d?/,Y=/\d\d\d\d?/,H=/\d\d\d\d\d\d?/,U=/\d{1,3}/,W=/\d{1,4}/,K=/[+-]?\d{1,6}/,$=/\d+/,Z=/[+-]?\d+/,J=/Z|[+-]\d\d(?::?\d\d)?/gi,Q=/[+-]?\d+(\.\d{1,3})?/,X=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,tt={};function et(t,e,n){tt[t]=o(e)?e:function(t,a){return t&&n?n:e}}function nt(t,e){return d(tt,t)?tt[t](!1,e):new RegExp(at(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(t,e,n,a,r)=>e||n||a||r)))}function at(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}const rt={};function it(t,e){const n=r(t)?[t]:t;let a=e;if(u(e)&&(a=function(t,n,a){return n[e]=h(t),a}),l(n)&&o(a)){let t;for(t=0;t<n.length;t++)rt[n[t]]=a}}function st(t,e){it(t,(function(t,n,a,r){return a._w=a._w||{},e(t,a._w,a,r)}))}function ot(t,e,n){return null!=e&&d(rt,t)&&rt[t](e,n._a,n,t),n}function ut(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function lt(t,e){return E(t,e.isUTC).toString()}function dt(t){return h(t)+(h(t)>68?1900:2e3)}function ct(t){return ft(t)?366:365}function ft(t){return t%4==0&&t%100!=0||t%400==0}function ht(t,e){if(isNaN(t)||isNaN(e))return NaN;const n=(e%12+12)%12;return 1===n?ft(t+(e-n)/12)?29:28:31-n%7%2}const gt={year:0,month:0,day:0,hour:0,minute:0,seconds:0};function pt(t,e){const n=Object.assign({},gt,e),a=t.getFullYear()+(n.year||0),r=t.getMonth()+(n.month||0);let i=t.getDate()+(n.day||0);return n.month&&!n.day&&(i=Math.min(i,ht(a,r))),w(a,r,i,t.getHours()+(n.hour||0),t.getMinutes()+(n.minute||0),t.getSeconds()+(n.seconds||0))}function bt(t,e){return w(mt(t.getFullYear(),e.year),mt(t.getMonth(),e.month),1,mt(t.getHours(),e.hour),mt(t.getMinutes(),e.minute),mt(t.getSeconds(),e.seconds),mt(t.getMilliseconds(),e.milliseconds))}function mt(t,e){return u(e)?e:t}function yt(t,e,n){const a=Math.min(A(t),ht(E(t),e));return n?t.setUTCMonth(e,a):t.setMonth(e,a),t}function vt(t,e,n){return n?t.setUTCDate(e):t.setDate(e),t}function xt(t){return new Date(t.getTime())}function _t(t,e,n){const a=xt(t);switch(e){case"year":yt(a,0,n);case"quarter":case"month":vt(a,1,n);case"week":case"isoWeek":case"day":case"date":!function(t,e,n){n?t.setUTCHours(0):t.setHours(0)}(a,0,n);case"hours":!function(t,e,n){n?t.setUTCMinutes(0):t.setMinutes(0)}(a,0,n);case"minutes":!function(t,e,n){n?t.setUTCSeconds(0):t.setSeconds(0)}(a,0,n);case"seconds":!function(t,e,n){n?t.setUTCMilliseconds(0):t.setMilliseconds(0)}(a,0,n)}return"week"===e&&function(t,e,n={}){je(t,0-ze(t,n.locale,n.isUTC),"day")}(a,0,{isUTC:n}),"isoWeek"===e&&function(t,e,n={}){const a=function(t,e=Qt()){return r(t)?e.weekdaysParse(t)%7||7:u(t)&&isNaN(t)?null:t}(1,n.locale);Ge(t,Ve(t)%7?a:a-7)}(a),"quarter"===e&&yt(a,3*Math.floor(k(a,n)/3),n),a}function Tt(t,e,n){let a=e;return"date"===a&&(a="day"),function(t,e,n,a){return Fe(t,Pe(1,"milliseconds"),-1,a)}(je(_t(t,a,n),1,"isoWeek"===a?"week":a,n),0,0,n)}function Ot(t,e){const n=+_t(t,"day",e),a=+_t(t,"year",e);return Math.round((n-a)/864e5)+1}function wt(t,e,n){const a=e-n+7;return-(O(t,0,a).getUTCDay()-e+7)%7+a-1}function St(t,e,n,a){const r=wt(E(t,a),e,n),i=Math.floor((Ot(t,a)-r-1)/7)+1;let s,o;return i<1?(o=E(t,a)-1,s=i+It(o,e,n)):i>It(E(t,a),e,n)?(s=i-It(E(t,a),e,n),o=E(t,a)+1):(o=E(t,a),s=i),{week:s,year:o}}function It(t,e,n){const a=wt(t,e,n),r=wt(t+1,e,n);return(ct(t)-a+r)/7}const Nt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ct="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Rt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),kt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Et={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Lt=X,Dt=X;class Pt{constructor(t){t&&this.set(t)}set(t){let e;for(e in t){if(!t.hasOwnProperty(e))continue;const n=t[e];this[o(n)?e:`_${e}`]=n}this._config=t}calendar(t,e,n){const a=this._calendar[t]||this._calendar.sameElse;return o(a)?a.call(null,e,n):a}longDateFormat(t){const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])}get invalidDate(){return this._invalidDate}set invalidDate(t){this._invalidDate=t}ordinal(t,e){return this._ordinal.replace("%d",t.toString(10))}preparse(t){return t}preinput(t){return t}postvalue(t){return t}postformat(t){return t}relativeTime(t,e,n,a){const r=this._relativeTime[n];return o(r)?r(t,e,n,a):r.replace(/%d/i,t.toString(10))}pastFuture(t,e){const n=this._relativeTime[t>0?"future":"past"];return o(n)?n(e):n.replace(/%s/i,e)}months(t,e,n=!1){if(!t)return l(this._months)?this._months:this._months.standalone;if(l(this._months))return this._months[k(t,n)];const a=(this._months.isFormat||Nt).test(e)?"format":"standalone";return this._months[a][k(t,n)]}monthsShort(t,e,n=!1){if(!t)return l(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;if(l(this._monthsShort))return this._monthsShort[k(t,n)];const a=Nt.test(e)?"format":"standalone";return this._monthsShort[a][k(t,n)]}monthsParse(t,e,n){let a,r,i;if(this._monthsParseExact)return this.handleMonthStrictParse(t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=new Date(Date.UTC(2e3,i)),n&&!this._longMonthsParse[i]){const t=this.months(a,"",!0).replace(".",""),e=this.monthsShort(a,"",!0).replace(".","");this._longMonthsParse[i]=new RegExp(`^${t}$`,"i"),this._shortMonthsParse[i]=new RegExp(`^${e}$`,"i")}if(n||this._monthsParse[i]||(r=`^${this.months(a,"",!0)}|^${this.monthsShort(a,"",!0)}`,this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}}monthsRegex(t){return this._monthsParseExact?(d(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=Dt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)}monthsShortRegex(t){return this._monthsParseExact?(d(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Lt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)}week(t,e){return St(t,this._week.dow,this._week.doy,e).week}firstDayOfWeek(){return this._week.dow}firstDayOfYear(){return this._week.doy}weekdays(t,e,n){if(!t)return l(this._weekdays)?this._weekdays:this._weekdays.standalone;if(l(this._weekdays))return this._weekdays[R(t,n)];const a=this._weekdays.isFormat.test(e)?"format":"standalone";return this._weekdays[a][R(t,n)]}weekdaysMin(t,e,n){return t?this._weekdaysMin[R(t,n)]:this._weekdaysMin}weekdaysShort(t,e,n){return t?this._weekdaysShort[R(t,n)]:this._weekdaysShort}weekdaysParse(t,e,n){let a,r;if(this._weekdaysParseExact)return this.handleWeekStrictParse(t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){const i=Ge(new Date(Date.UTC(2e3,1)),a,null,!0);if(n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp(`^${this.weekdays(i,"",!0).replace(".",".?")}$`,"i"),this._shortWeekdaysParse[a]=new RegExp(`^${this.weekdaysShort(i,"",!0).replace(".",".?")}$`,"i"),this._minWeekdaysParse[a]=new RegExp(`^${this.weekdaysMin(i,"",!0).replace(".",".?")}$`,"i")),this._weekdaysParse[a]||(r=`^${this.weekdays(i,"",!0)}|^${this.weekdaysShort(i,"",!0)}|^${this.weekdaysMin(i,"",!0)}`,this._weekdaysParse[a]=new RegExp(r.replace(".",""),"i")),!(l(this._fullWeekdaysParse)&&l(this._shortWeekdaysParse)&&l(this._minWeekdaysParse)&&l(this._weekdaysParse)))return;if(n&&"dddd"===e&&this._fullWeekdaysParse[a].test(t))return a;if(n&&"ddd"===e&&this._shortWeekdaysParse[a].test(t))return a;if(n&&"dd"===e&&this._minWeekdaysParse[a].test(t))return a;if(!n&&this._weekdaysParse[a].test(t))return a}}weekdaysRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=X),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}weekdaysShortRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=X),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}weekdaysMinRegex(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=X),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}isPM(t){return"p"===t.toLowerCase().charAt(0)}meridiem(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}formatLongDate(t){this._longDateFormat=this._longDateFormat?this._longDateFormat:Et;const e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,t=>t.slice(1)),this._longDateFormat[t])}handleMonthStrictParse(t,e,n){const a=t.toLocaleLowerCase();let r,i,s;if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)s=new Date(2e3,r),this._shortMonthsParse[r]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(s,"").toLocaleLowerCase();return n?"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null):(i=this._longMonthsParse.indexOf(a),-1!==i?i:null):"MMM"===e?(i=this._shortMonthsParse.indexOf(a),-1!==i?i:(i=this._longMonthsParse.indexOf(a),-1!==i?i:null)):(i=this._longMonthsParse.indexOf(a),-1!==i?i:(i=this._shortMonthsParse.indexOf(a),-1!==i?i:null))}handleWeekStrictParse(t,e,n){let a;const r=t.toLocaleLowerCase();if(!this._weekdaysParse){let t;for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],t=0;t<7;++t){const e=Ge(new Date(Date.UTC(2e3,1)),t,null,!0);this._minWeekdaysParse[t]=this.weekdaysMin(e).toLocaleLowerCase(),this._shortWeekdaysParse[t]=this.weekdaysShort(e).toLocaleLowerCase(),this._weekdaysParse[t]=this.weekdays(e,"").toLocaleLowerCase()}}if(l(this._weekdaysParse)&&l(this._shortWeekdaysParse)&&l(this._minWeekdaysParse))return n?"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:null):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null):"dddd"===e?(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):"ddd"===e?(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:null))):(a=this._minWeekdaysParse.indexOf(r),-1!==a?a:(a=this._weekdaysParse.indexOf(r),-1!==a?a:(a=this._shortWeekdaysParse.indexOf(r),-1!==a?a:null)))}computeMonthsParse(){const t=[],e=[],n=[];let a,r;for(r=0;r<12;r++)a=new Date(2e3,r),t.push(this.monthsShort(a,"")),e.push(this.months(a,"")),n.push(this.months(a,"")),n.push(this.monthsShort(a,""));for(t.sort(Mt),e.sort(Mt),n.sort(Mt),r=0;r<12;r++)t[r]=at(t[r]),e[r]=at(e[r]);for(r=0;r<24;r++)n[r]=at(n[r]);this._monthsRegex=new RegExp(`^(${n.join("|")})`,"i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._monthsShortStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}computeWeekdaysParse(){const t=[],e=[],n=[],a=[];let r;for(r=0;r<7;r++){const i=Ge(new Date(Date.UTC(2e3,1)),r,null,!0),s=this.weekdaysMin(i),o=this.weekdaysShort(i),u=this.weekdays(i);t.push(s),e.push(o),n.push(u),a.push(s),a.push(o),a.push(u)}for(t.sort(Mt),e.sort(Mt),n.sort(Mt),a.sort(Mt),r=0;r<7;r++)e[r]=at(e[r]),n[r]=at(n[r]),a[r]=at(a[r]);this._weekdaysRegex=new RegExp(`^(${a.join("|")})`,"i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(`^(${n.join("|")})`,"i"),this._weekdaysShortStrictRegex=new RegExp(`^(${e.join("|")})`,"i"),this._weekdaysMinStrictRegex=new RegExp(`^(${t.join("|")})`,"i")}}function Mt(t,e){return e.length-t.length}const qt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:Et,invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ct,monthsShort:Rt,week:{dow:0,doy:6},weekdays:At,weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysShort:kt,meridiemParse:/[ap]\.?m?\.?/i};function jt(t,e,n){const a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length);let i,s=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&h(t[i])!==h(e[i]))&&s++;return s+r}function Ft(t,e){T(null,[t,t.length,!1],null,e)}function Gt(t,e){return zt(t,e.locale).toString()}function Vt(t){return Bt(t).toString()}function zt(t,e=Qt(),n){return St(t,e.firstDayOfWeek(),e.firstDayOfYear(),n).year}function Bt(t,e){return St(t,1,4,e).year}function Yt(t,e){T(t,null,null,(function(t,n){let a=function(t,e={}){return e._isUTC?e._offset||0:function(t){return 15*-Math.round(t.getTimezoneOffset()/15)}(t)}(t,{_isUTC:n.isUTC,_offset:n.offset}),r="+";return a<0&&(a=-a,r="-"),r+y(~~(a/60),2)+e+y(~~a%60,2)}))}const Ht=/([\+\-]|\d\d)/gi,Ut={},Wt={};let Kt;function $t(t){return t?t.toLowerCase().replace("_","-"):t}function Zt(t,e){let n;return t&&(f(e)?n=Qt(t):r(t)&&(n=Jt(t,e)),n&&(Kt=n)),Kt&&Kt._abbr}function Jt(t,e){if(null===e)return delete Ut[t],Kt=Qt("en"),null;if(!e)return;let n=qt;if(e.abbr=t,null!=e.parentLocale){if(null==Ut[e.parentLocale])return Wt[e.parentLocale]||(Wt[e.parentLocale]=[]),Wt[e.parentLocale].push({name:t,config:e}),null;n=Ut[e.parentLocale]._config}return Ut[t]=new Pt(function(t,e){const n=Object.assign({},t);for(const a in e)d(e,a)&&(c(t[a])&&c(e[a])?(n[a]={},Object.assign(n[a],t[a]),Object.assign(n[a],e[a])):null!=e[a]?n[a]=e[a]:delete n[a]);for(const a in t)d(t,a)&&!d(e,a)&&c(t[a])&&(n[a]=Object.assign({},n[a]));return n}(n,e)),Wt[t]&&Wt[t].forEach((function(t){Jt(t.name,t.config)})),Zt(t),Ut[t]}function Qt(t){return Ut.en||(Zt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal(t){const e=t%10;return t+(1===h(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),T("w",["ww",2,!1],"wo",(function(t,e){return function(t,e=Qt(),n){return e.week(t,void 0)}(t,e.locale).toString(10)})),T("W",["WW",2,!1],"Wo",(function(t){return function(t,e){return St(t,1,4,void 0).week}(t).toString(10)})),b("week","w"),b("isoWeek","W"),et("w",B),et("ww",B,F),et("W",B),et("WW",B,F),st(["w","ww","W","WW"],(function(t,e,n,a){return e[a.substr(0,1)]=h(t),n})),T(null,["gg",2,!1],null,(function(t,e){return(zt(t,e.locale)%100).toString()})),T(null,["GG",2,!1],null,(function(t){return(Bt(t)%100).toString()})),Ft("gggg",Gt),Ft("ggggg",Gt),Ft("GGGG",Vt),Ft("GGGGG",Vt),b("weekYear","gg"),b("isoWeekYear","GG"),et("G",Z),et("g",Z),et("GG",B,F),et("gg",B,F),et("GGGG",W,V),et("gggg",W,V),et("GGGGG",K,z),et("ggggg",K,z),st(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,a){return e[a.substr(0,2)]=h(t),n})),st(["gg","GG"],(function(t,e,n,a){return e[a]=dt(t),n})),T("Y",null,null,(function(t,e){const n=E(t,e.isUTC);return n<=9999?n.toString(10):`+${n}`})),T(null,["YY",2,!1],null,(function(t,e){return(E(t,e.isUTC)%100).toString(10)})),T(null,["YYYY",4,!1],null,lt),T(null,["YYYYY",5,!1],null,lt),T(null,["YYYYYY",6,!0],null,lt),b("year","y"),et("Y",Z),et("YY",B,F),et("YYYY",W,V),et("YYYYY",K,z),et("YYYYYY",K,z),it(["YYYYY","YYYYYY"],0),it("YYYY",(function(t,e,n){return e[0]=2===t.length?dt(t):h(t),n})),it("YY",(function(t,e,n){return e[0]=dt(t),n})),it("Y",(function(t,e,n){return e[0]=parseInt(t,10),n})),T("z",null,null,(function(t,e){return e.isUTC?"UTC":""})),T("zz",null,null,(function(t,e){return e.isUTC?"Coordinated Universal Time":""})),T("X",null,null,(function(t){return function(t){return Math.floor(t.valueOf()/1e3)}(t).toString(10)})),T("x",null,null,(function(t){return t.valueOf().toString(10)})),et("x",Z),et("X",Q),it("X",(function(t,e,n){return n._d=new Date(1e3*parseFloat(t)),n})),it("x",(function(t,e,n){return n._d=new Date(h(t)),n})),T("s",["ss",2,!1],null,(function(t,e){return N(t,e.isUTC).toString(10)})),b("second","s"),et("s",B),et("ss",B,F),it(["s","ss"],5),T("Q",null,"Qo",(function(t,e){return function(t,e=!1){return Math.ceil((k(t,e)+1)/3)}(t,e.isUTC).toString(10)})),b("quarter","Q"),et("Q",j),it("Q",(function(t,e,n){return e[1]=3*(h(t)-1),n})),Yt("Z",":"),Yt("ZZ",""),et("Z",J),et("ZZ",J),it(["Z","ZZ"],(function(t,e,n){return n._useUTC=!0,n._tzm=function(t,e){const n=(e||"").match(t);if(null===n)return null;const a=n[n.length-1].match(Ht)||["-","0","0"],r=60*parseInt(a[1],10)+h(a[2]);return 0===r?0:"+"===a[0]?r:-r}(J,t),n})),T("M",["MM",2,!1],"Mo",(function(t,e){return(k(t,e.isUTC)+1).toString(10)})),T("MMM",null,null,(function(t,e){return e.locale.monthsShort(t,e.format,e.isUTC)})),T("MMMM",null,null,(function(t,e){return e.locale.months(t,e.format,e.isUTC)})),b("month","M"),et("M",B),et("MM",B,F),et("MMM",(function(t,e){return e.monthsShortRegex(t)})),et("MMMM",(function(t,e){return e.monthsRegex(t)})),it(["M","MM"],(function(t,e,n){return e[1]=h(t)-1,n})),it(["MMM","MMMM"],(function(t,e,n,a){const r=n._locale.monthsParse(t,a,n._strict);return null!=r?e[1]=r:ut(n).invalidMonth=!!t,n})),T("m",["mm",2,!1],null,(function(t,e){return I(t,e.isUTC).toString(10)})),b("minute","m"),et("m",B),et("mm",B,F),it(["m","mm"],4),function(){let t;for(T("S",null,null,(function(t,e){return(~~(C(t,e.isUTC)/100)).toString(10)})),T(null,["SS",2,!1],null,(function(t,e){return(~~(C(t,e.isUTC)/10)).toString(10)})),T(null,["SSS",3,!1],null,(function(t,e){return C(t,e.isUTC).toString(10)})),T(null,["SSSS",4,!1],null,(function(t,e){return(10*C(t,e.isUTC)).toString(10)})),T(null,["SSSSS",5,!1],null,(function(t,e){return(100*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSS",6,!1],null,(function(t,e){return(1e3*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSS",7,!1],null,(function(t,e){return(1e4*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSS",8,!1],null,(function(t,e){return(1e5*C(t,e.isUTC)).toString(10)})),T(null,["SSSSSSSSS",9,!1],null,(function(t,e){return(1e6*C(t,e.isUTC)).toString(10)})),b("millisecond","ms"),et("S",U,j),et("SS",U,F),et("SSS",U,G),t="SSSS";t.length<=9;t+="S")et(t,$);function e(t,e,n){return e[6]=h(1e3*parseFloat(`0.${t}`)),n}for(t="S";t.length<=9;t+="S")it(t,e)}(),function(){function t(t,e){return S(t,e)%12||12}function e(t,e){T(t,null,null,(function(t,n){return n.locale.meridiem(S(t,n.isUTC),I(t,n.isUTC),e)}))}function n(t,e){return e._meridiemParse}T("H",["HH",2,!1],null,(function(t,e){return S(t,e.isUTC).toString(10)})),T("h",["hh",2,!1],null,(function(e,n){return t(e,n.isUTC).toString(10)})),T("k",["kk",2,!1],null,(function(t,e){return function(t,e){return S(t,e)||24}(t,e.isUTC).toString(10)})),T("hmm",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}`})),T("hmmss",null,null,(function(e,n){return`${t(e,n.isUTC)}${y(I(e,n.isUTC),2)}${y(N(e,n.isUTC),2)}`})),T("Hmm",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}`})),T("Hmmss",null,null,(function(t,e){return`${S(t,e.isUTC)}${y(I(t,e.isUTC),2)}${y(N(t,e.isUTC),2)}`})),e("a",!0),e("A",!1),b("hour","h"),et("a",n),et("A",n),et("H",B),et("h",B),et("k",B),et("HH",B,F),et("hh",B,F),et("kk",B,F),et("hmm",Y),et("hmmss",H),et("Hmm",Y),et("Hmmss",H),it(["H","HH"],3),it(["k","kk"],(function(t,e,n){const a=h(t);return e[3]=24===a?0:a,n})),it(["a","A"],(function(t,e,n){return n._isPm=n._locale.isPM(t),n._meridiem=t,n})),it(["h","hh"],(function(t,e,n){return e[3]=h(t),ut(n).bigHour=!0,n})),it("hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),ut(n).bigHour=!0,n})),it("hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),ut(n).bigHour=!0,n})),it("Hmm",(function(t,e,n){const a=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a)),n})),it("Hmmss",(function(t,e,n){const a=t.length-4,r=t.length-2;return e[3]=h(t.substr(0,a)),e[4]=h(t.substr(a,2)),e[5]=h(t.substr(r)),n}))}(),T("DDD",["DDDD",3,!1],"DDDo",(function(t){return Ot(t).toString(10)})),b("dayOfYear","DDD"),et("DDD",U),et("DDDD",G),it(["DDD","DDDD"],(function(t,e,n){return n._dayOfYear=h(t),n})),T("d",null,"do",(function(t,e){return R(t,e.isUTC).toString(10)})),T("dd",null,null,(function(t,e){return e.locale.weekdaysMin(t,e.format,e.isUTC)})),T("ddd",null,null,(function(t,e){return e.locale.weekdaysShort(t,e.format,e.isUTC)})),T("dddd",null,null,(function(t,e){return e.locale.weekdays(t,e.format,e.isUTC)})),T("e",null,null,(function(t,e){return ze(t,e.locale,e.isUTC).toString(10)})),T("E",null,null,(function(t,e){return function(t,e){return R(t,e)||7}(t,e.isUTC).toString(10)})),b("day","d"),b("weekday","e"),b("isoWeekday","E"),et("d",B),et("e",B),et("E",B),et("dd",(function(t,e){return e.weekdaysMinRegex(t)})),et("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),et("dddd",(function(t,e){return e.weekdaysRegex(t)})),st(["dd","ddd","dddd"],(function(t,e,n,a){const r=n._locale.weekdaysParse(t,a,n._strict);return null!=r?e.d=r:ut(n).invalidWeekday=!!t,n})),st(["d","e","E"],(function(t,e,n,a){return e[a]=h(t),n})),T("D",["DD",2,!1],"Do",(function(t,e){return A(t,e.isUTC).toString(10)})),b("date","D"),et("D",B),et("DD",B,F),et("Do",(function(t,e){return e._dayOfMonthOrdinalParse||e._ordinalParse})),it(["D","DD"],2),it("Do",(function(t,e,n){return e[2]=h(t.match(B)[0]),n}))),t?function(t){let e,n,a=0;for(;a<t.length;){const i=$t(t[a]).split("-");let s=i.length;for(e=$t(t[a+1]),e=e?e.split("-"):null;s>0;){if(r=i.slice(0,s).join("-"),Ut[r]||console.error(`Khronos locale error: please load locale "${r}" before using it`),n=Ut[r],n)return n;if(e&&e.length>=s&&jt(i,e,!0)>=s-1)break;s--}a++}var r;return null}(l(t)?t:[t]):Kt}const Xt=["year","quarter","month","week","day","hours","minutes","seconds","milliseconds"],te=Xt.reduce((t,e)=>(t[e]=!0,t),{});function ee(t){return t<0?Math.floor(t):Math.ceil(t)}function ne(t){return 4800*t/146097}function ae(t){return 146097*t/4800}let re=Math.round;function ie(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}class se{constructor(t,e={}){this._data={},this._locale=Qt(),this._locale=e&&e._locale||Qt();const n=t.year||0,r=t.quarter||0,i=t.month||0,s=t.week||0,o=t.day||0,u=t.hours||0,l=t.minutes||0,d=t.seconds||0,c=t.milliseconds||0;return this._isValid=function(t){if(Object.keys(t).some(e=>e in te&&null===t[e]||isNaN(t[e])))return!1;let e=!1;for(let n=0;n<Xt.length;++n)if(t[Xt[n]]){if(e)return!1;t[Xt[n]]!==h(t[Xt[n]])&&(e=!0)}return!0}(t),this._milliseconds=+c+1e3*d+60*l*1e3+1e3*u*60*60,this._days=+o+7*s,this._months=+i+3*r+12*n,function(t){let e=t._milliseconds,n=t._days,r=t._months;const i=t._data;e>=0&&n>=0&&r>=0||e<=0&&n<=0&&r<=0||(e+=864e5*ee(ae(r)+n),n=0,r=0),i.milliseconds=e%1e3;const s=a(e/1e3);i.seconds=s%60;const o=a(s/60);i.minutes=o%60;const u=a(o/60);i.hours=u%24,n+=a(u/24);const l=a(ne(n));r+=l,n-=ee(ae(l));const d=a(r/12);return r%=12,i.day=n,i.month=r,i.year=d,t}(this)}isValid(){return this._isValid}humanize(t){if(!this.isValid())return this.localeData().invalidDate;const e=this.localeData();let n=function(t,e,n){const a=Pe(t).abs(),r=re(a.as("s")),i=re(a.as("m")),s=re(a.as("h")),o=re(a.as("d")),u=re(a.as("M")),l=re(a.as("y")),d=r<=44&&["s",r]||r<45&&["ss",r]||i<=1&&["m"]||i<45&&["mm",i]||s<=1&&["h"]||s<22&&["hh",s]||o<=1&&["d"]||o<26&&["dd",o]||u<=1&&["M"]||u<11&&["MM",u]||l<=1&&["y"]||["yy",l];return ie.apply(null,[d[0],d[1],e,+t>0,n])}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}localeData(){return this._locale}locale(t){return t?(this._locale=Qt(t)||this._locale,this):this._locale._abbr}abs(){const t=Math.abs,e=this._data;return this._milliseconds=t(this._milliseconds),this._days=t(this._days),this._months=t(this._months),e.milliseconds=t(e.milliseconds),e.seconds=t(e.seconds),e.minutes=t(e.minutes),e.hours=t(e.hours),e.month=t(e.month),e.year=t(e.year),this}as(t){if(!this.isValid())return NaN;let e,n;const a=this._milliseconds,r=m(t);if("month"===r||"year"===r)return e=this._days+a/864e5,n=this._months+ne(e),"month"===r?n:n/12;switch(e=this._days+Math.round(ae(this._months)),r){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hours":return 24*e+a/36e5;case"minutes":return 1440*e+a/6e4;case"seconds":return 86400*e+a/1e3;case"milliseconds":return Math.floor(864e5*e)+a;default:throw new Error(`Unknown unit ${r}`)}}valueOf(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*h(this._months/12):NaN}}function oe(t){if(null==t._isValid){const e=ut(t),n=Array.prototype.some.call(e.parsedDateParts,(function(t){return null!=t}));let a=!isNaN(t._d&&t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function ue(t,e){return t._d=new Date(NaN),Object.assign(ut(t),e||{userInvalidated:!0}),t}const le=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,de=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/Z|[+-]\d\d(?::?\d\d)?/,fe=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/,!0],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/,!0],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/,!0],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/,!0],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/,!0],["YYYYMMDD",/\d{8}/,!0],["GGGG[W]WWE",/\d{4}W\d{3}/,!0],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/,!0]],he=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ge=/^\/?Date\((\-?\d+)/i,pe={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480},be=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function me(t){if(!r(t._i))return t;const e=t._i,n=le.exec(e)||de.exec(e);let a,i,s,o,u,l;if(!n)return t._isValid=!1,t;for(u=0,l=fe.length;u<l;u++)if(fe[u][1].exec(n[1])){i=fe[u][0],a=!1!==fe[u][2];break}if(null==i)return t._isValid=!1,t;if(n[3]){for(u=0,l=he.length;u<l;u++)if(he[u][1].exec(n[3])){s=(n[2]||" ")+he[u][0];break}if(null==s)return t._isValid=!1,t}if(!a&&null!=s)return t._isValid=!1,t;if(n[4]){if(!ce.exec(n[4]))return t._isValid=!1,t;o="Z"}return t._f=i+(s||"")+(o||""),Se(t)}function ye(t){const e=parseInt(t,10);return e<=49?e+2e3:e}function ve(t){if(!r(t._i))return t;const e=be.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(!e)return function(t){return t._isValid=!1,t}(t);const n=function(t,e,n,a,r,i){const s=[ye(t),Rt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)];return i&&s.push(parseInt(i,10)),s}(e[4],e[3],e[2],e[5],e[6],e[7]);return function(t,e,n){return!t||kt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(ut(n).weekdayMismatch=!0,n._isValid=!1,!1)}(e[1],n,t)?(t._a=n,t._tzm=function(t,e,n){if(t)return pe[t];if(e)return 0;{const t=parseInt(n,10),e=t%100;return(t-e)/100*60+e}}(e[8],e[9],e[10]),t._d=O.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),ut(t).rfc2822=!0,t):t}function xe(t,e,n,a,r=0){const i=Qt(n||"en");if(!i)throw new Error(`Locale "${n}" is not defined, please add it with "defineLocale(...)"`);const u=function(t,e,n,a,r=0){if(!s(t))return n.invalidDate;const i=_e(e,n);return v[i]=v[i]||function(t){const e=t.match(_),n=e.length,a=new Array(n);for(let i=0;i<n;i++)a[i]=x[e[i]]?x[e[i]]:(r=e[i]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");var r;return function(e,r,i,s=0){const u=r.postvalue(e);let l="";for(let d=0;d<n;d++)l+=o(a[d])?a[d].call(null,u,{format:t,locale:r,isUTC:i,offset:s}):a[d];return l}}(i),v[i](t,n,a,r)}(t,e||(a?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ssZ"),i,a,r);return u?i.postformat(u):u}function _e(t,e){let n=t,a=5;const r=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,i=t=>e.formatLongDate(t)||t;for(r.lastIndex=0;a>=0&&r.test(n);)n=n.replace(r,i),r.lastIndex=0,a-=1;return n}function Te(t,e,n){return null!=t?t:null!=e?e:n}function Oe(t){const e=[];let n,a,r,i,s;if(t._d)return t;for(r=function(t){const e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){let e,n,a,r,i,s,o,u;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)i=1,s=4,n=Te(e.GG,t._a[0],St(new Date,1,4).year),a=Te(e.W,1),r=Te(e.E,1),(r<1||r>7)&&(u=!0);else{i=t._locale._week.dow,s=t._locale._week.doy;const o=St(new Date,i,s);n=Te(e.gg,t._a[0],o.year),a=Te(e.w,o.week),null!=e.d?(r=e.d,(r<0||r>6)&&(u=!0)):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>It(n,i,s)?ut(t)._overflowWeeks=!0:null!=u?ut(t)._overflowWeekday=!0:(o=function(t,e,n,a,r){const i=1+7*(e-1)+(7+n-a)%7+wt(t,a,r);let s,o;return i<=0?(s=t-1,o=ct(s)+i):i>ct(t)?(s=t+1,o=i-ct(t)):(s=t,o=i),{year:s,dayOfYear:o}}(n,a,r,i,s),t._a[0]=o.year,t._dayOfYear=o.dayOfYear)}(t),null!=t._dayOfYear&&(s=Te(t._a[0],r[0]),(t._dayOfYear>ct(s)||0===t._dayOfYear)&&(ut(t)._overflowDayOfYear=!0),a=new Date(Date.UTC(s,0,t._dayOfYear)),t._a[1]=a.getUTCMonth(),t._a[2]=a.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=e[n]=r[n];for(;n<7;n++)t._a[n]=e[n]=null==t._a[n]?2===n?1:0:t._a[n];return 24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?O:w).apply(null,e),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(ut(t).weekdayMismatch=!0),t}function we(t){let e;const n=t._a;return n&&-2===ut(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>ht(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,ut(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),ut(t)._overflowWeeks&&-1===e&&(e=7),ut(t)._overflowWeekday&&-1===e&&(e=8),ut(t).overflow=e),t}function Se(t){if("ISO_8601"===t._f)return me(t);if("RFC_2822"===t._f)return ve(t);if(t._a=[],ut(t).empty=!0,l(t._f)||!t._i&&0!==t._i)return t;let e=t._i.toString(),n=0;const a=e.length,r=_e(t._f,t._locale).match(_)||[];let i,s,o,u;for(i=0;i<r.length;i++)s=r[i],o=(e.match(nt(s,t._locale))||[])[0],o&&(u=e.substr(0,e.indexOf(o)),u.length>0&&ut(t).unusedInput.push(u),e=e.slice(e.indexOf(o)+o.length),n+=o.length),x[s]?(o?ut(t).empty=!1:ut(t).unusedTokens.push(s),ot(s,o,t)):t._strict&&!o&&ut(t).unusedTokens.push(s);return ut(t).charsLeftOver=a-n,e.length>0&&ut(t).unusedInput.push(e),t._a[3]<=12&&!0===ut(t).bigHour&&t._a[3]>0&&(ut(t).bigHour=void 0),ut(t).parsedDateParts=t._a.slice(0),ut(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){let a=e;if(null==n)return a;if(null!=t.meridiemHour)return t.meridiemHour(a,n);if(null==t.isPM)return a;const r=t.isPM(n);return r&&a<12&&(a+=12),r||12!==a||(a=0),a}(t._locale,t._a[3],t._meridiem),Oe(t),we(t)}function Ie(t,e,n,a,s){return i(t)?t:function(t,e,n,a,s){const o={};let h=t;return(c(h)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;let e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(h)||l(h)&&0===h.length)&&(h=void 0),o._useUTC=o._isUTC=s,o._l=n,o._i=h,o._f=e,o._strict=a,function(t){const e=we(function(t){let e=t._i;const n=t._f;return t._locale=t._locale||Qt(t._l),null===e||void 0===n&&""===e?ue(t,{nullInput:!0}):(r(e)&&(t._i=e=t._locale.preparse(e)),i(e)?(t._d=xt(e),t):(l(n)?function(t){let e,n,a,r,i;if(!t._f||0===t._f.length)return ut(t).invalidFormat=!0,ue(t);for(i=0;i<t._f.length;i++)r=0,e=Object.assign({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],Se(e),oe(e)&&(r+=ut(e).charsLeftOver,r+=10*ut(e).unusedTokens.length,ut(e).score=r,(null==a||r<a)&&(a=r,n=e));Object.assign(t,n||e)}(t):n?Se(t):function(t){const e=t._i;if(f(e))t._d=new Date;else if(i(e))t._d=xt(e);else if(r(e))!function(t){if(!r(t._i))return t;const e=ge.exec(t._i);null!==e?t._d=new Date(+e[1]):(me(t),!1!==t._isValid||(delete t._isValid,ve(t),!1!==t._isValid||(delete t._isValid,ue(t))))}(t);else if(l(e)&&e.length){const n=e.slice(0);t._a=n.map(t=>r(t)?parseInt(t,10):t),Oe(t)}else if(c(e))!function(t){if(t._d)return t;const e=t._i;if(c(e)){const n=function(t){const e={};let n,a;for(a in t)d(t,a)&&(n=m(a),n&&(e[n]=t[a]));return e}(e);t._a=[n.year,n.month,n.day,n.hours,n.minutes,n.seconds,n.milliseconds].map(t=>r(t)?parseInt(t,10):t)}Oe(t)}(t);else{if(!u(e))return ue(t);t._d=new Date(e)}}(t),oe(t)||(t._d=null),t))}(t));return e._d=new Date(null!=e._d?e._d.getTime():NaN),oe(Object.assign({},e,{_isValid:null}))||(e._d=new Date(NaN)),e}(o)}(t,e,n,a,s)._d}function Ne(t){return t instanceof Date?new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()):null}function Ce(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Re(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()>e.valueOf():e.valueOf()<_t(t,n).valueOf())}function Ae(t,e,n="milliseconds"){return!(!t||!e)&&("milliseconds"===n?t.valueOf()<e.valueOf():Tt(t,n).valueOf()<e.valueOf())}function ke(t,e){return!(void 0===e||!e||!e.length)&&e.some(e=>e===t.getDay())}function Ee(t,e,n="milliseconds"){if(!t||!e)return!1;if("milliseconds"===n)return t.valueOf()===e.valueOf();const a=e.valueOf();return _t(t,n).valueOf()<=a&&a<=Tt(t,n).valueOf()}const Le=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,De=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Pe(t,e,n={}){const a=function(t,e){if(null==t)return{};if(t instanceof se)return{milliseconds:t._milliseconds,day:t._days,month:t._months};if(u(t))return e?{[e]:t}:{milliseconds:t};if(r(t)){let e=Le.exec(t);if(e){const t="-"===e[1]?-1:1;return{year:0,day:h(e[2])*t,hours:h(e[3])*t,minutes:h(e[4])*t,seconds:h(e[5])*t,milliseconds:h(Ce(1e3*h(e[6])))*t}}if(e=De.exec(t),e){const t="-"===e[1]?-1:1;return{year:Me(e[2],t),month:Me(e[3],t),week:Me(e[4],t),day:Me(e[5],t),hours:Me(e[6],t),minutes:Me(e[7],t),seconds:Me(e[8],t)}}}if(c(t)&&("from"in t||"to"in t)){const e=function(t,e){if(!s(t)||!s(e))return{milliseconds:0,months:0};let n;const a=function(t,e,n={}){if(!n._isUTC)return t;const a=xt(e),r=6e4*(n._offset||0),i=t.valueOf()-a.valueOf()+r;return a.setTime(a.valueOf()+i),a}(e,t,{_offset:t.getTimezoneOffset()});return Ae(t,a)?n=qe(t,a):(n=qe(a,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n}(Ie(t.from),Ie(t.to));return{milliseconds:e.milliseconds,month:e.months}}return t}(t,e);return new se(a,n)}function Me(t,e){const n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function qe(t,e){const n={milliseconds:0,months:0};return n.months=k(e)-k(t)+12*(E(e)-E(t)),Re(je(xt(t),n.months,"month"),e)&&--n.months,n.milliseconds=+e-+je(xt(t),n.months,"month"),n}function je(t,e,n,a){return Fe(t,Pe(e,n),1,a)}function Fe(t,e,n,a){const r=e._milliseconds,i=Ce(e._days),s=Ce(e._months);return s&&yt(t,k(t,a)+s*n,a),i&&vt(t,A(t,a)+i*n,a),r&&function(t,e){t.setTime(e)}(t,function(t){return t.getTime()}(t)+r*n),xt(t)}function Ge(t,e,n=Qt(),a){const i=R(t,a);return je(t,function(t,e){if(!r(t))return t;const n=parseInt(t,10);if(!isNaN(n))return n;const a=e.weekdaysParse(t);return u(a)?a:null}(e,n)-i,"day")}function Ve(t,e){return R(t,e)}function ze(t,e=Qt(),n){return(R(t,n)+7-e.firstDayOfWeek())%7}const Be="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),Ye="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");function He(t){return t>1&&t<5&&1!=~~(t/10)}function Ue(t,e,n,a){const r=t+" ";switch(n){case"s":return e||a?"pár sekund":"pár sekundami";case"ss":return e||a?r+(He(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(He(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(He(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(He(t)?"dny":"dní"):r+"dny";case"M":return e||a?"měsíc":"měsícem";case"MM":return e||a?r+(He(t)?"měsíce":"měsíců"):r+"měsíci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(He(t)?"roky":"let"):r+"lety"}}const We=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},Ke=function(t){let e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n},$e={abbr:"cs",months:Be,monthsShort:Ye,monthsParse:function(t,e){let n,a=[];for(n=0;n<12;n++)a[n]=new RegExp("^"+t[n]+"$|^"+e[n]+"$","i");return a}(Be,Ye),shortMonthsParse:We(Ye),longMonthsParse:Ke(Be),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek(t){switch(Ve(t)){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek(t){switch(Ve(t)){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:Ue,ss:Ue,m:Ue,mm:Ue,h:Ue,hh:Ue,d:Ue,dd:Ue,M:Ue,MM:Ue,y:Ue,yy:Ue},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};function Ze(t,e,n,a){const r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}const Je={abbr:"de",months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ze,mm:"%d Minuten",h:Ze,hh:"%d Stunden",d:Ze,dd:Ze,M:Ze,MM:Ze,y:Ze,yy:Ze},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};let Qe="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Xe="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),tn=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],en=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;const nn={abbr:"es",months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:(t,e,n)=>t?/-MMM-/.test(e)?Xe[k(t,n)]:Qe[k(t,n)]:Qe,monthsRegex:en,monthsShortRegex:en,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:tn,longMonthsParse:tn,shortMonthsParse:tn,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:t=>"[hoy a la"+(1!==S(t)?"s":"")+"] LT",nextDay:t=>"[mañana a la"+(1!==S(t)?"s":"")+"] LT",nextWeek:t=>"dddd [a la"+(1!==S(t)?"s":"")+"] LT",lastDay:t=>"[ayer a la"+(1!==S(t)?"s":"")+"] LT",lastWeek:t=>"[el] dddd [pasado a la"+(1!==S(t)?"s":"")+"] LT",sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},an={abbr:"fr",months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal(t,e){const n=Number(t);switch(e){case"D":return n+(1===n?"er":"");default:case"M":case"Q":case"DDD":case"d":return n+(1===n?"er":"e");case"w":case"W":return n+(1===n?"re":"e")}},week:{dow:1,doy:4}},rn={abbr:"id",months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:(t,e)=>(12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0),meridiem:(t,e,n)=>t<11?"pagi":t<15?"siang":t<19?"sore":"malam",calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}},sn={abbr:"it",months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek(t){switch(Ve(t)){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:t=>(/^[0-9].+$/.test(t.toString(10))?"tra":"in")+" "+t,past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}},on={abbr:"ja",months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日 HH:mm dddd"},meridiemParse:/午前|午後/i,isPM:t=>"午後"===t,meridiem:(t,e,n)=>t<12?"午前":"午後",calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";default:return t.toString(10)}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}},un={abbr:"ko",months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t.toString(10)}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}};let ln="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),dn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function cn(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function fn(t,e,n){let a=t+" ";switch(n){case"ss":return a+(cn(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return a+(cn(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return a+(cn(t)?"godziny":"godzin");case"MM":return a+(cn(t)?"miesiące":"miesięcy");case"yy":return a+(cn(t)?"lata":"lat")}}const hn={abbr:"pl",months:(t,e,n)=>t?""===e?"("+dn[k(t,n)]+"|"+ln[k(t,n)]+")":/D MMMM/.test(e)?dn[k(t,n)]:ln[k(t,n)]:ln,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek(t){switch(Ve(t)){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 5:return"[W piątek o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek(t){switch(Ve(t)){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 4:return"[W zeszłą czwartek o] LT";case 5:return"[W zeszłą piątek o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:fn,m:fn,mm:fn,h:fn,hh:fn,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:fn,y:"rok",yy:fn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},gn={abbr:"pt-br",months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:t=>0===Ve(t)||6===Ve(t)?"[Último] dddd [às] LT":"[Última] dddd [às] LT",sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"},pn={abbr:"zh-cn",months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:(t,e)=>(12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12),meridiem(t,e,n){let a=100*t+e;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal(t,e){const n=Number(t);switch(e){case"d":case"D":case"DDD":return n+"日";case"M":return n+"月";case"w":case"W":return n+"周";default:return n.toString()}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}}},xrYK:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"xs/l":function(t,e,n){var a=n("TYy9"),r=n("Ioao"),i=n("wclG");t.exports=function(t){return i(r(t,void 0,a),t+"")}},xs3f:function(t,e,n){var a=n("2oRo"),r=n("zk60"),i=a["__core-js_shared__"]||r("__core-js_shared__",{});t.exports=i},y1pI:function(t,e,n){var a=n("ljhN");t.exports=function(t,e){for(var n=t.length;n--;)if(a(t[n][0],e))return n;return-1}},yCtX:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n("HDdC"),r=n("ngJS"),i=n("jZKg");function s(t,e){return e?Object(i.a)(t,e):new a.a(Object(r.a)(t))}},yGOH:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{}},yGk4:function(t,e,n){var a=n("Cwc5")(n("Kz5y"),"Set");t.exports=a},yHx3:function(t,e){var n=Object.prototype.hasOwnProperty;t.exports=function(t){var e=t.length,a=new t.constructor(e);return e&&"string"==typeof t[0]&&n.call(t,"index")&&(a.index=t.index,a.input=t.input),a}},yJti:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var a=function(t){return t[t.ValueOk=0]="ValueOk",t[t.ValueStale=1]="ValueStale",t[t.ValueNone=2]="ValueNone",t[t.ValueException=3]="ValueException",t}({})},yP5f:function(t,e,n){var a=n("+K+b");t.exports=function(t,e){var n=e?a(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},yPMs:function(t,e,n){!function(t){"use strict";t.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(t){return"M"===t.charAt(0)},meridiem:function(t,e,n){return t<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},yT6U:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("LvDl");class r{transform(t,e=!1){let n=t;return(!a.isArray(t)||a.isArray(t)&&e)&&(n=[t]),n}}},yYhs:function(t,e,n){"use strict";var a=n("8Y7J"),r=n("SVse"),i=n("CoVI"),s=n("mfoh"),o=(n("CFvb"),n("MP8s"),n("f95s"),n("gk6K")),u=(n("dApe"),n("ZhuC")),l=n("fxL3"),d=n("TNUL"),c=n("rZud"),f=n("woSy"),h=n("jV1L"),g=n("pcHL"),p=n("WaXT"),b=n("OIDT"),m=n("HIU9"),y=n("uNpg"),v=n("Fwy9"),x=n("C523"),_=n("4Dmd");n("14R3"),n.d(e,"b",(function(){return T})),n.d(e,"a",(function(){return s.a}));var T=function(){function t(){}var e;return e=t,t.forRoot=function(){return{ngModule:e,providers:[o.a]}},e=function(t,e,n,a){var r,i=arguments.length,s=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,a);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(s=(i<3?r(s):i>3?r(e,n,s):r(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}([Object(a.NgModule)({declarations:[l.a,d.a,c.a,u.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],exports:[l.a,d.a,c.a,u.a,v.a,x.a,h.a,g.a,f.a,p.a,m.a,b.a,y.a,_.a,i.a],imports:[r.CommonModule],providers:[]})],t)}()},yoRg:function(t,e,n){var a=n("UTVS"),r=n("/GqU"),i=n("TWQb").indexOf,s=n("0BK2");t.exports=function(t,e){var n,o=r(t),u=0,l=[];for(n in o)!a(s,n)&&a(o,n)&&l.push(n);for(;e.length>u;)a(o,n=e[u++])&&(~i(l,n)||l.push(n));return l}},"yt+r":function(t,e,n){"use strict";n.r(e),e.default='<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">\n  <file original="ng2.template" datatype="plaintext" source-language="en-US" target-language="es-ES">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target>Alternar navegación</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>Consola</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>Clúster</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>Hosts</target>\n      </trans-unit>\n      <trans-unit id="2cc3ecb16e348fcf2f2fbfd2f997d4d22f37475b" datatype="html">\n        <source>Inventory</source>\n        <target>Inventory</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servicios</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSDs</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>Configuración</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>Mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Módulos de gestor</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Registros</target>\n      </trans-unit>\n      <trans-unit id="17fc3efe5f9fa4e0289c900cb6202265215a1a27" datatype="html">\n        <source>Monitoring</source>\n        <target>Monitoring</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>Repositorios</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>Bloque</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>Imágenes</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Duplicación</target>\n      </trans-unit>\n      <trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target>iSCSI</target>\n      </trans-unit>\n      <trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target>NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Daemons</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>Usuarios</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>Papeleras</target>\n      </trans-unit>\n      <trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </source>\n        <target>Retrieving data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>. Please wait...\n        </target>\n      </trans-unit>\n      <trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </source>\n        <target>Displaying previously cached data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  for \n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </source>\n        <target>Could not load data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> for\n          <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>\n          <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/>.\n  Please check the cluster health.\n        </target>\n      </trans-unit>\n      <trans-unit id="7e52e9143145e1db5146258de81eae018a407b31" datatype="html">\n        <source>Clear notifications</source>\n        <target>Clear notifications</target>\n      </trans-unit>\n      <trans-unit id="b0b07bb6b7ff21ede439dd04eaf8872d1ecb84d8" datatype="html">\n        <source>Remove notification</source>\n        <target>Remove notification</target>\n      </trans-unit>\n      <trans-unit id="e17a1d75189da843f541f7764f188f2b19a97df2" datatype="html">\n        <source>Duration:</source>\n        <target>Duration:</target>\n      </trans-unit>\n      <trans-unit id="0d4b37c6675c5b436a54c43d6716eec835e1aa7f" datatype="html">\n        <source>There are no notifications.</source>\n        <target>There are no notifications.</target>\n      </trans-unit>\n      <trans-unit id="0a23e992f6c6e169a38b2b7338b4e5e803b52e0d" datatype="html">\n        <source>Tasks and Notifications</source>\n        <target>Tasks and Notifications</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Seleccione un idioma</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Cargando datos del panel...</target>\n      </trans-unit>\n      <trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </source>\n        <target>Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the monitoring functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">\n        <source>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </source>\n        <target>Grafana Dashboard doesn\'t exist. Please refer to\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  add dashboards to Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Selector de hora de Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Restablecer ajustes</target>\n      </trans-unit>\n      <trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target>Refresh</target>\n      </trans-unit>\n      <trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">\n        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>\n        <target>Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n      </trans-unit>\n      <trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Atrás</target>\n      </trans-unit>\n      <trans-unit id="9ce641535be1ffa106c87724ba0637facaef5f61" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>less than 1\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day. Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="c2f34088c155e40ffb23770a465a65868ce772b2" datatype="html">\n        <source>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </source>\n        <target>Your password will expire in \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ expirationDays }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> day(s). Click\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>here\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> to change it now.\n        </target>\n      </trans-unit>\n      <trans-unit id="9b516f972c744779257310b73f6e97438b726707" datatype="html">\n        <source>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </source>\n        <target>Orchestrator is not available. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> on how to\n  configure and enable the functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Error al cargar los datos.</target>\n      </trans-unit>\n      <trans-unit id="1e5e23363e949f7dcbaf034bdb141a561132a10e" datatype="html">\n        <source>Clear filters</source>\n        <target>Clear filters</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>seleccionados</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>encontrados</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>total</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nombre</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descripción</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descripción larga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Opción por defecto</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Daemon por defecto</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valores</target>\n      </trans-unit>\n      <trans-unit id="5894f7158499fdb89527af50c9f1cf7d4c95cad6" datatype="html">\n        <source>-- Default --</source>\n        <target>-- Default --</target>\n      </trans-unit>\n      <trans-unit id="514f6e12d035a6d9b00de6b3e55c18b73488da07" datatype="html">\n        <source>true</source>\n        <target>true</target>\n      </trans-unit>\n      <trans-unit id="774f5e6a183dea08393789b6f72e86afad729419" datatype="html">\n        <source>false</source>\n        <target>false</target>\n      </trans-unit>\n      <trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>Guardar</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>Visor del mapa de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Cargando...</target>\n      </trans-unit>\n      <trans-unit id="formTitle" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form title</note>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nombre de host</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="1b3f5e5291541678f7afa49d28fad5ca848a8061" datatype="html">\n        <source>The chosen hostname is already in use.</source>\n        <target>The chosen hostname is already in use.</target>\n      </trans-unit>\n      <trans-unit id="formActionButton" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/>\n        </target>\n        <note>form action button</note>\n      </trans-unit>\n      <trans-unit id="6110699a3562eeb15371063c0cf7f6bfd88a0209" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemNames[0] }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="549859e511ba5af0ea03fcaa620c472f08038969" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected items?\n        </target>\n      </trans-unit>\n      <trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </source>\n        <target>Are you sure that you want to \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>Sí, seguro.</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="55a2f26b2e87886d9b8015a887e38e51ab2a866a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Cerrar</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de hosts</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Rendimiento general</target>\n      </trans-unit>\n      <trans-unit id="3e24569eca61d598c8b01defbbbb1fa8bd5222bc" datatype="html">\n        <source>Devices</source>\n        <target>Devices</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>No se encuentra ninguna entrada</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Registros del clúster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de auditoría</target>\n      </trans-unit>\n      <trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target>Priority:</target>\n      </trans-unit>\n      <trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target>Keyword:</target>\n      </trans-unit>\n      <trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target>Date:</target>\n      </trans-unit>\n      <trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target>Datepicker</target>\n      </trans-unit>\n      <trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target>Time range:</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Cargando configuración...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>No es posible cargar la configuración.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Módulo del gestor de edición</target>\n      </trans-unit>\n      <trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">\n        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>\n        <target>El valor introducido no es un UUID válido, por ejemplo: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n      </trans-unit>\n      <trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target>El valor introducido debe ser una dirección IP válida.</target>\n      </trans-unit>\n      <trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </source>\n        <target>The entered value is too high! It must be lower or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </source>\n        <target>The entered value is too low! It must be greater or equal to \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target>El valor introducido debe ser un número.</target>\n      </trans-unit>\n      <trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target>El valor introducido debe ser un número o un decimal.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Actualizar</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>ID de clúster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Mapa de supervisión modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>Época de mapa de supervisión</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>quórum de con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>quórum de mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>con requerido</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon requerido</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>Con quórum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Sin quórum</target>\n      </trans-unit>\n      <trans-unit id="4383e9662ea19839c7499b2128d43a195e564317" datatype="html">\n        <source>OSD creation preview</source>\n        <target>OSD creation preview</target>\n      </trans-unit>\n      <trans-unit id="366225c51e0b00bcb1c55795a0dc5e81c455f84e" datatype="html">\n        <source>DriveGroups</source>\n        <target>DriveGroups</target>\n      </trans-unit>\n      <trans-unit id="8edc89137d0d8c5667a2f03230beafae45e58429" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ deviceType }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="eba28e1805b18f7c8ae2e4bc15dcf063b10b3822" datatype="html">\n        <source>At least one of these filters must be applied in order to proceed:</source>\n        <target>At least one of these filters must be applied in order to proceed:</target>\n      </trans-unit>\n      <trans-unit id="93389aa2fe2bea50bf89554ee51b28f87ee2fb50" datatype="html">\n        <source>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </source>\n        <target>Number of devices: \n          <x id="INTERPOLATION" equiv-text="{{ filteredDevices.length }}"/>. Raw capacity:\n          <x id="INTERPOLATION_1" equiv-text="{{ capacity | dimlessBinary }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="ccb4f84edc0b4e76415bb3f9b73d725b06683af3" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ name }}"/> devices\n        </target>\n      </trans-unit>\n      <trans-unit id="60cb3d01e5ddf266ecb4271007a1c3d0f3efdc22" datatype="html">\n        <source>The primary storage devices. These devices contain all OSD data.</source>\n        <target>The primary storage devices. These devices contain all OSD data.</target>\n      </trans-unit>\n      <trans-unit id="b432e04886d0d1fd84f740477383051f85addcf2" datatype="html">\n        <source>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</source>\n        <target>Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device.</target>\n      </trans-unit>\n      <trans-unit id="b87e181ab9e8393aa5ed759dd3d53836e32c8ffe" datatype="html">\n        <source>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</source>\n        <target>DB devices can be used for storing BlueStore’s internal metadata.  It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD).</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Añadir</target>\n      </trans-unit>\n      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">\n        <source>Clear</source>\n        <target>Clear</target>\n      </trans-unit>\n      <trans-unit id="7e0fd3c7af0630f93befa6234a693a32a61084e0" datatype="html">\n        <source>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </source>\n        <target>Raw capacity: \n          <x id="INTERPOLATION" equiv-text="{{ capacity | dimlessBinary }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43ecf6bee2aebc07b0aad6dc1fe13e38d14687fa" datatype="html">\n        <source>Shared devices</source>\n        <target>Shared devices</target>\n      </trans-unit>\n      <trans-unit id="7a1c376f6f1b37de4c318ff2106255ba6c0f5b0b" datatype="html">\n        <source>WAL slots</source>\n        <target>WAL slots</target>\n      </trans-unit>\n      <trans-unit id="73811a6f37b63e6b0e491e221bfa21e9dea8a87a" datatype="html">\n        <source>How many OSDs per WAL device.</source>\n        <target>How many OSDs per WAL device.</target>\n      </trans-unit>\n      <trans-unit id="0c67a7ac4762ef1cc855056c6b4daab93e53a0a5" datatype="html">\n        <source>Specify 0 to let Orchestrator backend decide it.</source>\n        <target>Specify 0 to let Orchestrator backend decide it.</target>\n      </trans-unit>\n      <trans-unit id="7bda9362e06e6c67341b4a8425b0d29d6b84464b" datatype="html">\n        <source>Value should be greater than or equal to 0</source>\n        <target>Value should be greater than or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="324c2b10152b9dd908222bb0b71f61beb60a30c5" datatype="html">\n        <source>DB slots</source>\n        <target>DB slots</target>\n      </trans-unit>\n      <trans-unit id="c23cf12ef9c76f37fc7a4b7ae3e00fb0f68b6e26" datatype="html">\n        <source>How many OSDs per DB device.</source>\n        <target>How many OSDs per DB device.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Características</target>\n      </trans-unit>\n      <trans-unit id="3e2a583f531f7dd9f089f68a6968e444c372c3e8" datatype="html">\n        <source>Preview</source>\n        <target>Preview</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Indicadores OSD de todo el clúster</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzado...</target>\n      </trans-unit>\n      <trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target>Advanced configuration options</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridad de recuperación de OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Prioridad</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizar valores de prioridad</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Este campo es obligatorio.</target>\n      </trans-unit>\n      <trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </source>\n        <target>The entered value is too high! It must not be greater than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </source>\n        <target>The entered value is too low! It must not be lower than \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="5251a4355cece3075db43f15d69a24a0f8485707" datatype="html">\n        <source>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </source>\n        <target>Reweight OSD: \n          <x id="INTERPOLATION" equiv-text="{{ osdId }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target>El valor debe estar entre 0 y 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Reequilibrar peso</target>\n      </trans-unit>\n      <trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </source>\n        <target>OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, select, 1 {Profundo} }</target>\n      </trans-unit>\n      <trans-unit id="fd0a4b6eed32e3488eccdc9c13f9841f08cc275e" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n          the OSD(s): \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, select, 1 {profundo} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista de OSD</target>\n      </trans-unit>\n      <trans-unit id="d5707a32ba9c1138e6423498fb0b24e970ebd19f" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD(s) \n          <x id="INTERPOLATION" equiv-text="{{  getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be marked\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="d08c1e4f17dffc0ed1ac2e2e2875cb8b569eeb35" datatype="html">\n        <source>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </source>\n        <target>The \n          <x id="ICU" equiv-text="{selection.hasSingleSelection, select, 0 {...} 1 {...}}"/> not safe to be \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription }}"/>! \n          <x id="INTERPOLATION_1" equiv-text="{{ message }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="e776996dac651ef3819bfa767ccf2a0613759f47" datatype="html">\n        <source>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</source>\n        <target>{VAR_SELECT, select, 0 {OSDs are} 1 {OSD is} }</target>\n      </trans-unit>\n      <trans-unit id="5cd6a031937412c42e5efa1e6959cb72ac08c720" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </source>\n        <target>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ getSelectedOsdIds() | join }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> will be\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> if you proceed.\n        </target>\n      </trans-unit>\n      <trans-unit id="3eda19b44809820fffd5d3753bafb7243116f4b0" datatype="html">\n        <source>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To see all active Prometheus alerts, please\n      provide the URL to the API of Prometheus\' Alertmanager as described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="880ad4df5a2051a437321443d69c9a866699e5ad" datatype="html">\n        <source>Active Alerts</source>\n        <target>Active Alerts</target>\n      </trans-unit>\n      <trans-unit id="8e5e0e09a11990d343926ed693574213d703c38d" datatype="html">\n        <source>All Alerts</source>\n        <target>All Alerts</target>\n      </trans-unit>\n      <trans-unit id="526938c2b7945cb0d68328c24bd77730230cd455" datatype="html">\n        <source>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </source>\n        <target>To enable Silences, please provide the URL to the API of the Prometheus\' Alertmanager as\n      described in the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target>Silences</target>\n      </trans-unit>\n      <trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target>Matcher</target>\n      </trans-unit>\n      <trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target>-- Select an attribute to match against --</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</target>\n      </trans-unit>\n      <trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target>Use regular expression</target>\n      </trans-unit>\n      <trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target>{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Editar</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Suprimir</target>\n      </trans-unit>\n      <trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">\n        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>\n        <target>Editing a silence will expire the old silence and recreate it as a new silence</target>\n      </trans-unit>\n      <trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target>Creator</target>\n      </trans-unit>\n      <trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target>Comment</target>\n      </trans-unit>\n      <trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target>Start time</target>\n      </trans-unit>\n      <trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">\n        <source>If the start time lies in the past the creation time will be used</source>\n        <target>If the start time lies in the past the creation time will be used</target>\n      </trans-unit>\n      <trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target>Duration</target>\n      </trans-unit>\n      <trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target>End time</target>\n      </trans-unit>\n      <trans-unit id="992123459137d45c15df5548bc9682aad835c04b" datatype="html">\n        <source>Matchers</source>\n        <target>Matchers</target>\n      </trans-unit>\n      <trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target>A silence requires at least one matcher</target>\n      </trans-unit>\n      <trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target>Add matcher</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estadísticas</target>\n      </trans-unit>\n      <trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the NFS Ganesha management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>Clientes</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>Cualquier cliente puede acceder</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>Destinatarios</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo requerido</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>Debe contener uno o varios valores separados por comas</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Por ejemplo:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>Reducir privilegios</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>Añadir clientes</target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- No hay ningún clúster disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Seleccione el clúster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Añadir daemon</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Motor de almacenamiento</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- No hay ningún repositorio de datos disponible --</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Seleccione el motor de almacenamiento --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>Usuario de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- No hay ningún usuario disponible --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Seleccione el usuario de Object Gateway --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>ID de usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- No hay ningún cliente disponible --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- Seleccione el cliente de CephX --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>Nombre de CephFS</target>\n      </trans-unit>\n      <trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target>-- No CephFS filesystem available --</target>\n      </trans-unit>\n      <trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target>-- Select the CephFS filesystem --</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar etiqueta de seguridad</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Ruta de CephFS</target>\n      </trans-unit>\n      <trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target>La ruta debe empezar por "/" y puede ir seguida de una palabra</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Se creará un directorio nuevo</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Ruta</target>\n      </trans-unit>\n      <trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target>La ruta solo puede ser una "/" o una palabra</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Se creará una papelera nueva</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protocolo NFS</target>\n      </trans-unit>\n      <trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target>NFSv3</target>\n      </trans-unit>\n      <trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target>NFSv4</target>\n      </trans-unit>\n      <trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target>Etiqueta NFS</target>\n      </trans-unit>\n      <trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </source>\n        <target>Alternative access for \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> mounts (it must not have a leading /).\n        </target>\n      </trans-unit>\n      <trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">\n        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>\n        <target>Puede que los clientes no monten subdirectorios (es decir, si Etiqueta = foo, el cliente puede que no monte foo/baz).</target>\n      </trans-unit>\n      <trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Etiqueta, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>Pseudo</target>\n      </trans-unit>\n      <trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </source>\n        <target>The position that this \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFS v4\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> export occupies\n                in the \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>Pseudo FS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (it must be unique).\n        </target>\n      </trans-unit>\n      <trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target>Al usar distintas opciones de Pseudo, la misma Ruta se puede exportar varias veces.</target>\n      </trans-unit>\n      <trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">\n        <source>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>\n        <target>Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- No hay ningún tipo de acceso disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Seleccione el tipo de acceso --</target>\n      </trans-unit>\n      <trans-unit id="49850390a653cd05dc5843d74ef073a9122b54c9" datatype="html">\n        <source>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </source>\n        <target>The Object Gateway NFS backend has a number of\n              limitations which will seriously affect applications writing to\n              the share. Please consult the\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for details before enabling write access.\n        </target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No hay ninguna reducción de privilegios disponible --</target>\n      </trans-unit>\n      <trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protocolo de transporte</target>\n      </trans-unit>\n      <trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target>UDP</target>\n      </trans-unit>\n      <trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target>TCP</target>\n      </trans-unit>\n      <trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target>CephFS</target>\n      </trans-unit>\n      <trans-unit id="0eb15f32b2b92d7f3103ef3ff032621888a8dc32" datatype="html">\n        <source>Old password</source>\n        <target>Old password</target>\n      </trans-unit>\n      <trans-unit id="1cf42e491adc166a337a960eb84d03c0c3f677c8" datatype="html">\n        <source>The old and new passwords must be different.</source>\n        <target>The old and new passwords must be different.</target>\n      </trans-unit>\n      <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229" datatype="html">\n        <source>New password</source>\n        <target>New password</target>\n      </trans-unit>\n      <trans-unit id="ede41f01c781b168a783cfcefc6fb67d48780d9b" datatype="html">\n        <source>Confirm new password</source>\n        <target>Confirm new password</target>\n      </trans-unit>\n      <trans-unit id="90163a3d3746819aef42e829f4446331232f3b66" datatype="html">\n        <source>Password confirmation doesn\'t match the new password.</source>\n        <target>Password confirmation doesn\'t match the new password.</target>\n      </trans-unit>\n      <trans-unit id="d06ae77f9ec46a4cdd49e7e76c73a411aaf2ee38" datatype="html">\n        <source>Please set a new password.</source>\n        <target>Please set a new password.</target>\n      </trans-unit>\n      <trans-unit id="8b5b3566e88438f51bd5f6caf6c090ed565ba5ed" datatype="html">\n        <source>You will be redirected to the login page afterwards.</source>\n        <target>You will be redirected to the login page afterwards.</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>¡Bienvenidos a Ceph!</target>\n        <note>The welcome message on the login page</note>\n      </trans-unit>\n      <trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target>El nombre de usuario es obligatorio</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>La contraseña es obligatoria</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>Entrada</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Lo sentimos. El usuario no existe en Ceph.</target>\n      </trans-unit>\n      <trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </source>\n        <target>Return to \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Login Page\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. You\'ll be logged out from the Identity Provider when you retry logging in.\n        </target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Prohibido</target>\n      </trans-unit>\n      <trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target>Lo sentimos. No tiene permiso para ver lo que busca.</target>\n      </trans-unit>\n      <trans-unit id="2240b985f17293d84cc8532fe86994aa5f63667c" datatype="html">\n        <source>Sorry, we could not find what you were looking for.</source>\n        <target>Sorry, we could not find what you were looking for.</target>\n      </trans-unit>\n      <trans-unit id="ac54c18c1b520e948095c83a3a1025f02ce6dcc6" datatype="html">\n        <source>Neither hostname nor OSD ID given</source>\n        <target>Neither hostname nor OSD ID given</target>\n      </trans-unit>\n      <trans-unit id="4f635b3cb0600409a2ad44a5bd1863c699e6a01c" datatype="html">\n        <source>Failed to retrieve SMART data.</source>\n        <target>Failed to retrieve SMART data.</target>\n      </trans-unit>\n      <trans-unit id="d82a9af5b05e7cd17640f196f163771685ff8df6" datatype="html">\n        <source>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</source>\n        <target>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</target>\n      </trans-unit>\n      <trans-unit id="04f8a3c7e8ac610e6581960162cc15f55a16696a" datatype="html">\n        <source>No SMART data available.</source>\n        <target>No SMART data available.</target>\n      </trans-unit>\n      <trans-unit id="3a03d3c2e459f8f8fa7202c0fce465d6165f9e2b" datatype="html">\n        <source>passed</source>\n        <target>passed</target>\n      </trans-unit>\n      <trans-unit id="a185c9b97513b3882604ea9bab60edbfac945c15" datatype="html">\n        <source>SMART overall-health self-assessment test result</source>\n        <target>SMART overall-health self-assessment test result</target>\n      </trans-unit>\n      <trans-unit id="41435d5a5692c8e412c74deaee95d99dbd3617e1" datatype="html">\n        <source>failed</source>\n        <target>failed</target>\n      </trans-unit>\n      <trans-unit id="ddd5dd6d930030096ea617f62c82b648a0dd9484" datatype="html">\n        <source>Device Information</source>\n        <target>Device Information</target>\n      </trans-unit>\n      <trans-unit id="380295f37caea93701d071485a38ef0bdba57133" datatype="html">\n        <source>No SMART data available for this device.</source>\n        <target>No SMART data available for this device.</target>\n      </trans-unit>\n      <trans-unit id="20cb12827cbe559a7b1da6fdae96041b3b5c3c55" datatype="html">\n        <source>SMART</source>\n        <target>SMART</target>\n      </trans-unit>\n      <trans-unit id="5758c3f16f8749f0f4e2a787f02e8b4da246102f" datatype="html">\n        <source>SMART data is loading.</source>\n        <target>SMART data is loading.</target>\n      </trans-unit>\n      <trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source>[object Object]</source>\n        <target>[object Object]</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuración de RBD</target>\n      </trans-unit>\n      <trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">\n        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>\n        <target>Elimina el valor de configuración local. Se heredará y usará en su lugar el valor de configuración padre.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>El valor mínimo es 0</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Lista de repositorios</target>\n      </trans-unit>\n      <trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>El nombre solo puede tener caracteres alfanuméricos, guiones y guiones bajos.</target>\n      </trans-unit>\n      <trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target>El nombre del perfil de código de borrado que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="35a4206db3105ed03e0dd799e1642b75b78123e8" datatype="html">\n        <source>Root</source>\n        <target>Root</target>\n      </trans-unit>\n      <trans-unit id="cf425784c7073c7e7f7c1bb90c2c19db7e751db2" datatype="html">\n        <source>Failure domain type</source>\n        <target>Failure domain type</target>\n      </trans-unit>\n      <trans-unit id="72396a9565cf644d1fe1b21b790c4243ee270986" datatype="html">\n        <source>Device class</source>\n        <target>Device class</target>\n      </trans-unit>\n      <trans-unit id="72d80e0c07bfea1b693a33ef2245007de92a6780" datatype="html">\n        <source>Let Ceph decide</source>\n        <target>Let Ceph decide</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Complemento</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>Porciones de datos (k)</target>\n      </trans-unit>\n      <trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target>Debe ser igual o mayor que 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Porciones de código (m)</target>\n      </trans-unit>\n      <trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target>Debe ser igual o mayor que 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimador de durabilidad (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localización (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dominio de error de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localización de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>Ninguna</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>Técnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tamaño del paquete</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Raíz de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Clase de dispositivo de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>cualquiera</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Directorio</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>Nombre...</target>\n      </trans-unit>\n      <trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target>El nombre del repositorio de Ceph que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="c75b132bef7b29fa5171768303c4b96e34ccaf68" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>It\'s not possible to create an RBD pool with \'/\' in the name.\n              Please change the name or remove \'rbd\' from the applications list.</target>\n      </trans-unit>\n      <trans-unit id="171dc6d5c6bc4615d99778b0088cae80fd00bd10" datatype="html">\n        <source>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</source>\n        <target>Pool name can only contain letters, numbers, \'.\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Tipo de repositorio</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- Seleccione un tipo de repositorio --</target>\n      </trans-unit>\n      <trans-unit id="6abfbe47b630929d93c7343dc154599c2e59330a" datatype="html">\n        <source>PG Autoscale</source>\n        <target>PG Autoscale</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>Se necesita al menos un grupo de colocación.</target>\n      </trans-unit>\n      <trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">\n        <source>Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</source>\n        <target>El clúster no puede gestionar tantos grupos de colocación. Vuelva a calcular la cantidad que necesita.</target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ayuda para el cálculo</target>\n      </trans-unit>\n      <trans-unit id="fccbd60493df26705d957ed6c02a3c447894678f" datatype="html">\n        <source>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</source>\n        <target>The current PGs settings were calculated for you, you\n                should make sure the values suit your needs before submit.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tamaño replicado</target>\n      </trans-unit>\n      <trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </source>\n        <target>Minimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </source>\n        <target>Maximum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ab647b95bd2347ae6f4605576de5e0269fb893a" datatype="html">\n        <source>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </source>\n        <target>The size specified is out of range. A value from\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.\n        </target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>Indicadores</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>Sustituciones de códigos de borrado</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>Aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="fb9308b82fc183f710df60909f49cfc73aa5e076" datatype="html">\n        <source>CRUSH</source>\n        <target>CRUSH</target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- No hay ningún perfil de código de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Seleccione un perfil de código de borrado --</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="c69b0bcd4698aa845d32c4c4ad488492552cb469" datatype="html">\n        <source>A new crush ruleset will be implicitly created.</source>\n        <target>A new crush ruleset will be implicitly created.</target>\n      </trans-unit>\n      <trans-unit id="896e9987db5e9bb279e6deed5d2dff28c242ef66" datatype="html">\n        <source>There are no rules.</source>\n        <target>There are no rules.</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Seleccione una regla de CRUSH --</target>\n      </trans-unit>\n      <trans-unit id="ea91d648f92002bc9f96d9b26b735c83ca0b53c6" datatype="html">\n        <source>This rule can\'t be deleted as it is in use.</source>\n        <target>This rule can\'t be deleted as it is in use.</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Regla de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Pasos de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="fc5f5496a9e50fe69e1a09784f28d94944108294" datatype="html">\n        <source>Rule is not in use.</source>\n        <target>Rule is not in use.</target>\n      </trans-unit>\n      <trans-unit id="023d6f718770d2ea4ab8cabe26b0ec27ef967ec2" datatype="html">\n        <source>Used by pools</source>\n        <target>Used by pools</target>\n      </trans-unit>\n      <trans-unit id="104a0e6900d1d1b0c8cf9e5947e36edb352583fc" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>The rule can\'t be used in the current cluster as it has\n                  too few OSDs to meet the minimum required OSD by this rule.</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compresión</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>Modo</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>Algoritmo</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- No hay ningún algoritmo de compresión de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>p. ej. 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>El valor debe ser mayor que 0</target>\n      </trans-unit>\n      <trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target>Value should be less than the maximum blob size</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamaño de Blob máximo</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>p. ej. 512 KiB</target>\n      </trans-unit>\n      <trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target>El valor debe ser mayor que el tamaño de Blob mínimo</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Relación</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Relación de compresión</target>\n      </trans-unit>\n      <trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target>El valor debe estar entre 0,0 y 1,0</target>\n      </trans-unit>\n      <trans-unit id="8bb8293aa8161433778762ae025ffd5e7c85795e" datatype="html">\n        <source>Quotas</source>\n        <target>Quotas</target>\n      </trans-unit>\n      <trans-unit id="d99b34162c9c34f10d0ccd8dbae83d8569c2db77" datatype="html">\n        <source>Max bytes</source>\n        <target>Max bytes</target>\n      </trans-unit>\n      <trans-unit id="a1d14a18879c62f3f4ed705318b7164a1160e249" datatype="html">\n        <source>Leave it blank or specify 0 to disable this quota.</source>\n        <target>Leave it blank or specify 0 to disable this quota.</target>\n      </trans-unit>\n      <trans-unit id="7565b131562ff6c5f769fdbd239a772154abdd97" datatype="html">\n        <source>A valid quota should be greater than 0.</source>\n        <target>A valid quota should be greater than 0.</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ej.: 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="b8bf35b66f09a301eef92ffc3cb2fd259df67ce9" datatype="html">\n        <source>Max objects</source>\n        <target>Max objects</target>\n      </trans-unit>\n      <trans-unit id="95f348167622d832c5ae532b6944635c8e2ae5cb" datatype="html">\n        <source>The value should be greater or equal to 0</source>\n        <target>The value should be greater or equal to 0</target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Detalles</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalles de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalles de niveles de caché</target>\n      </trans-unit>\n      <trans-unit id="ecbc084370a732fc3cde1966a60af78d71424ab4" datatype="html">\n        <source>Create Bootstrap Token</source>\n        <target>Create Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="603e9cc3ef2aab57f2b0a00e465b23b9cabefd9c" datatype="html">\n        <source>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To create a bootstrap token which can be imported\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Generate\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="660f97cd3188f8a04bd03b79e703fec72c6df04c" datatype="html">\n        <source>Site Name</source>\n        <target>Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c2a1dc72cffaf7ab3dc5599bf77b0a7fcad2b20" datatype="html">\n        <source>At least one pool is required.</source>\n        <target>At least one pool is required.</target>\n      </trans-unit>\n      <trans-unit id="1b258b258b4cc475ceb2871305b61756b0134f4a" datatype="html">\n        <source>Generate</source>\n        <target>Generate</target>\n      </trans-unit>\n      <trans-unit id="1edc1fc6cfbbb22353050ad6788508b3ed584f53" datatype="html">\n        <source>Token</source>\n        <target>Token</target>\n      </trans-unit>\n      <trans-unit id="ff785f5596aef34a93b9b4d1023e95c62eef5740" datatype="html">\n        <source>Generated token...</source>\n        <target>Generated token...</target>\n      </trans-unit>\n      <trans-unit id="5467a6bb0e7fade6def7499400d5e2a7d8d3da20" datatype="html">\n        <source>Import Bootstrap Token</source>\n        <target>Import Bootstrap Token</target>\n      </trans-unit>\n      <trans-unit id="9bb7aee0dec5164f45c0aa2f35f2fb2149d2c1d2" datatype="html">\n        <source>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To import a bootstrap token which was created\n          by a peer site cluster, provide the local site\'s name, select\n          which pools will have mirroring enabled, provide the generated\n          token, and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Import\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9200e09686136a1d42adfb89c12fbfef2deea125" datatype="html">\n        <source>Direction</source>\n        <target>Direction</target>\n      </trans-unit>\n      <trans-unit id="9761484679958da8d12841a4efa5964d33fae575" datatype="html">\n        <source>The token is invalid.</source>\n        <target>The token is invalid.</target>\n      </trans-unit>\n      <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">\n        <source>Import</source>\n        <target>Import</target>\n      </trans-unit>\n      <trans-unit id="b87bd96249f8afc23f5301cddb57b1464a98e71a" datatype="html">\n        <source>Edit site name</source>\n        <target>Edit site name</target>\n      </trans-unit>\n      <trans-unit id="cfff72c667274c12eb1ff71eadc25871c10c42dc" datatype="html">\n        <source>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>Edit the site name and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="40b7acea5b43f45e0bbd1efeba5200af4687981d" datatype="html">\n        <source>Site Name:</source>\n        <target>Site Name:</target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Mover una imagen a la papelera</target>\n      </trans-unit>\n      <trans-unit id="7ad22c1d4aab3b8946603cea62de266d5129ca10" datatype="html">\n        <source>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</source>\n        <target>This image contains snapshot(s), which will prevent it\n            from being removed after moved to trash.</target>\n      </trans-unit>\n      <trans-unit id="b4b3ced4f8aad4c446f348b14c3d94be2e2c350c" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </source>\n        <target>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ imageSpecStr }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> to trash,\n          click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Move Image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optionally, you can pick an expiration date.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protección caduca a las</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target>Formato de fecha erróneo. Use el formato "AAAA-MM-DD HH:mm:ss".</target>\n      </trans-unit>\n      <trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target>La protección ya ha caducado. Seleccione una fecha del futuro o deje el campo vacío.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Mover imagen</target>\n      </trans-unit>\n      <trans-unit id="c9f1026c1235f4d76ace47449e806efd181ab332" datatype="html">\n        <source>Deleting this image will also delete all its snapshots.</source>\n        <target>Deleting this image will also delete all its snapshots.</target>\n      </trans-unit>\n      <trans-unit id="55f864597e84d9bf88769e1fbfda1d64452430c9" datatype="html">\n        <source>The following snapshots are currently protected and will be removed:</source>\n        <target>The following snapshots are currently protected and will be removed:</target>\n      </trans-unit>\n      <trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target>Gateways</target>\n      </trans-unit>\n      <trans-unit id="8835b9e49a3348b0a2f2162c21118af1f4bee45a" datatype="html">\n        <source>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </source>\n        <target>Must be greater than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'min\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="bbddac59563c8c126e3fe28691e4e247614fcbd1" datatype="html">\n        <source>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </source>\n        <target>Must be less than or equal to \n          <x id="INTERPOLATION" equiv-text="{{ limits[\'max\'] }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Resumen</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>Destinos</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticación de descubrimiento</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuario</target>\n      </trans-unit>\n      <trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Contraseña</target>\n      </trans-unit>\n      <trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usuario mutuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Contraseña mutua</target>\n      </trans-unit>\n      <trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    on how to configure and enable the iSCSI Targets management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Información disponible:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI no disponibles</target>\n      </trans-unit>\n      <trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target>Discovery authentication</target>\n      </trans-unit>\n      <trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </source>\n        <target>Only available for RBD images with \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>fast-diff\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> enabled\n        </target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Repositorio</target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Creados</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tamaño</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tamaño del objeto</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Aprovisionados</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>N/D</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Total aprovisionado</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Padre</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Prefijo de nombre de bloque</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Orden</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Instantáneas</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagen</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Este ajuste sustituye al valor global</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</target>\n      </trans-unit>\n      <trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">\n        <source>This is the global value. No value for this option has been set for this image.</source>\n        <target>Este es el valor global. No se ha definido ningún valor para esta opción para esta imagen.</target>\n      </trans-unit>\n      <trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from\n        </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>No se permiten los caracteres "/" ni "@".</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- No hay ningún repositorio RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Seleccione un repositorio --</target>\n      </trans-unit>\n      <trans-unit id="d649904466254d13df1fbf2d255f0bbc6553d213" datatype="html">\n        <source>-- No namespaces available --</source>\n        <target>-- No namespaces available --</target>\n      </trans-unit>\n      <trans-unit id="e22d7bb4d2d561e0832ee0b9a3da2468a080c4f0" datatype="html">\n        <source>-- Select a namespace --</source>\n        <target>-- Select a namespace --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Usar un repositorio dedicado para datos</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Repositorio de datos</target>\n      </trans-unit>\n      <trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target>Repositorio dedicado para almacenar los datos de objeto de RBD.</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Debe aumentar el tamaño.</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanzado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Repartición</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidad de repartición</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Seleccione la unidad de repartición --</target>\n      </trans-unit>\n      <trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido el recuento de repartición.</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>La unidad de repartición es mayor que el tamaño del objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Recuento de repartición</target>\n      </trans-unit>\n      <trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target>Este campo es obligatorio porque se ha definido la unidad de repartición.</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>El recuento de repartición debe ser mayor que 0.</target>\n      </trans-unit>\n      <trans-unit id="2c07d24bb422aa8e5e568df1c5709083f0a9c8f1" datatype="html">\n        <source>Create Namespace</source>\n        <target>Create Namespace</target>\n      </trans-unit>\n      <trans-unit id="0cca6c0485f96d3a9610d0339cb1275a5f2c3f46" datatype="html">\n        <source>Namespace already exists.</source>\n        <target>Namespace already exists.</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Se dispone a revertir</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vaciar papelera</target>\n      </trans-unit>\n      <trans-unit id="681501eecd7f44d4b7a2f619605b36676e04c5b6" datatype="html">\n        <source>To purge, select one or</source>\n        <target>To purge, select one or</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Todas</target>\n      </trans-unit>\n      <trans-unit id="ea5d338dcef50ff5c24439fd784f6a67b594c33f" datatype="html">\n        <source>pools and click</source>\n        <target>pools and click</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>Repositorio:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nombre del repositorio...</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar imágenes</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Para restaurar</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>escriba el nombre nuevo de la imagen y haga clic en</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nombre nuevo</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Caducó a las</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protección hasta</target>\n      </trans-unit>\n      <trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </source>\n        <target>This image is protected until \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>Topología iSCSI</target>\n      </trans-unit>\n      <trans-unit id="051dcc342cfa5c1eaf187a2001aaa162379a160c" datatype="html">\n        <source>Configure</source>\n        <target>Configure</target>\n      </trans-unit>\n      <trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target>Normalmente no es necesario cambiar los valores por defecto de estos parámetros.</target>\n      </trans-unit>\n      <trans-unit id="4e2591df099ddac796cda401c5f282da779d45f2" datatype="html">\n        <source>Identifier</source>\n        <target>Identifier</target>\n      </trans-unit>\n      <trans-unit id="62480a4859976427cf18fc8ef41d3a438eda0412" datatype="html">\n        <source>lun</source>\n        <target>lun</target>\n      </trans-unit>\n      <trans-unit id="8afc9eb4405e0aa554b2ba14140ef790cdecc040" datatype="html">\n        <source>wwn</source>\n        <target>wwn</target>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ajustes</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Almacén</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>Confirmar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Ajustes avanzados</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN de destino</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>El IQN tiene un patrón erróneo.</target>\n      </trans-unit>\n      <trans-unit id="050a7ff057d1e895357540406b6be5652b4d1c71" datatype="html">\n        <source>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>An IQN has the following notation\n                \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n      </trans-unit>\n      <trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target>Por ejemplo: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n      </trans-unit>\n      <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target>Más información</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>Este destino tiene ajustes avanzados modificados.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Portales</target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Añadir portal</target>\n      </trans-unit>\n      <trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </target>\n      </trans-unit>\n      <trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </source>\n        <target>Backstore: \n          <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. \n        </target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagen tiene ajustes modificados.</target>\n      </trans-unit>\n      <trans-unit id="1dff11e0820b6722ab240169f1232d70a54beaaa" datatype="html">\n        <source>Duplicated LUN numbers.</source>\n        <target>Duplicated LUN numbers.</target>\n      </trans-unit>\n      <trans-unit id="bf2dccf92ccff6e3b091792bf4205595406e1bfb" datatype="html">\n        <source>Duplicated WWN.</source>\n        <target>Duplicated WWN.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Añadir imagen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticación de ACL</target>\n      </trans-unit>\n      <trans-unit id="419c8b402609dcf49ae4932a5a4647dc8d79bbaf" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Usernames must have a length of 8 to 64 characters and\n                can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n      </trans-unit>\n      <trans-unit id="938050960d6653fddfcfd42425e18fb35a308262" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Iniciadores</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Iniciador</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>IQN del cliente</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>El IQN del iniciador debe ser exclusivo.</target>\n      </trans-unit>\n      <trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">\n        <source>Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</source>\n        <target>Los nombres de usuario deben tener entre 8 y 64 caracteres y\n                        solo pueden incluir letras y estos caracteres: ".", "@", "-", "_" o ":".</target>\n      </trans-unit>\n      <trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">\n        <source>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</source>\n        <target>Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>El iniciador pertenece a un grupo. Las imágenes se configurarán en el grupo.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>No se ha añadido ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Añadir iniciador</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>Grupos</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>Grupo</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Añadir grupo</target>\n      </trans-unit>\n      <trans-unit id="c3a7e364a88ea4673199dfa98bc73e6dbe09dfac" datatype="html">\n        <source>Namespaces</source>\n        <target>Namespaces</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Papelera</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Problemas</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>Sincronizando</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>Listo</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Editar modo de duplicación de repositorio</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>To edit the mirror mode for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>, select a new mode from the list and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Update\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target>Los clústeres de par deben eliminarse antes de inhabilitar la duplicación.</target>\n      </trans-unit>\n      <trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer\n        </target>\n      </trans-unit>\n      <trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target>{VAR_SELECT, select, edit {Editar} other {Añadir} }</target>\n      </trans-unit>\n      <trans-unit id="59ca65ece457429d90104ede4674965f62edbabe" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> and click\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Submit\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>Nombre del clúster</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>El nombre del clúster no es válido.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>ID de CephX</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>ID de CephX...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>El ID de CephX no es válido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Direcciones de monitores</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Direcciones delimitadas por comas...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>La dirección del monitor no es válida.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>Clave de CephX</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Clave con cifrado base64...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>La clave de CephX debe tener cifrado base64</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Los contadores de rendimiento no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </source>\n        <target>Please consult the \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  on how to configure and enable the Object Gateway management functionality.\n        </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de daemons</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Contadores de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Cargando datos de la papelera...</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>El valor no es válido.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>El nombre que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propietario</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Seleccione un usuario --</target>\n      </trans-unit>\n      <trans-unit id="a4aab1f837bc8ec222e4f25922465d1c5929a1fc" datatype="html">\n        <source>Placement target</source>\n        <target>Placement target</target>\n      </trans-unit>\n      <trans-unit id="6bae0a7fc2c9c1fde7d937a8a1a3c7e6825cf7d1" datatype="html">\n        <source>-- Select a placement target --</source>\n        <target>-- Select a placement target --</target>\n      </trans-unit>\n      <trans-unit id="efeade5060b3add63863c24871f0830fb16b7e6d" datatype="html">\n        <source>Versioning</source>\n        <target>Versioning</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Habilitado</target>\n      </trans-unit>\n      <trans-unit id="016d24e069e7d505a090fb8243e5cd43b35dc39b" datatype="html">\n        <source>Enables versioning for the objects in the bucket.</source>\n        <target>Enables versioning for the objects in the bucket.</target>\n      </trans-unit>\n      <trans-unit id="9e6775ffd06878aa145c07359f28557f01ede04f" datatype="html">\n        <source>Multi-Factor Authentication</source>\n        <target>Multi-Factor Authentication</target>\n      </trans-unit>\n      <trans-unit id="29e8a5d4fb767d4ad0c762c81c6264cec4c0ba97" datatype="html">\n        <source>Delete enabled</source>\n        <target>Delete enabled</target>\n      </trans-unit>\n      <trans-unit id="40fbc3ac8c1ea4ecfe62247e91f1f999ad5baf76" datatype="html">\n        <source>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</source>\n        <target>Enables MFA (multi-factor authentication) Delete, which requires additional authentication for changing the bucket versioning state.</target>\n      </trans-unit>\n      <trans-unit id="d24c93a8c13db46defa06ed7b5e026a3edb52b91" datatype="html">\n        <source>Token Serial Number</source>\n        <target>Token Serial Number</target>\n      </trans-unit>\n      <trans-unit id="e6d9536c2af2e5e9a228c3e3e1809dc1fefe0149" datatype="html">\n        <source>Token PIN</source>\n        <target>Token PIN</target>\n      </trans-unit>\n      <trans-unit id="7b84370895ab9eb44672f57146fa05c5947f1c0c" datatype="html">\n        <source>Locking</source>\n        <target>Locking</target>\n      </trans-unit>\n      <trans-unit id="f038d51ab1645f15b0cd58f195c72a7eeebd4729" datatype="html">\n        <source>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</source>\n        <target>Enables locking for the objects in the bucket. Locking can only be enabled while creating a bucket.</target>\n      </trans-unit>\n      <trans-unit id="9af1b4baa2dd8ed2bfc3cc756b12a2271c2dd793" datatype="html">\n        <source>Compliance</source>\n        <target>Compliance</target>\n      </trans-unit>\n      <trans-unit id="edd600fa489d1b4a4448dce694ed932e52ce8fda" datatype="html">\n        <source>Governance</source>\n        <target>Governance</target>\n      </trans-unit>\n      <trans-unit id="a5c3d9d2296f7886e8289b9f623323803deacfc6" datatype="html">\n        <source>Days</source>\n        <target>Days</target>\n      </trans-unit>\n      <trans-unit id="218c7d6d318c51e7105309aaeb0baec9d19e4efb" datatype="html">\n        <source>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of days that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="289b101ec12427b3ca819df9e43cc3b14fae2cc4" datatype="html">\n        <source>The entered value must be a positive integer.</source>\n        <target>The entered value must be a positive integer.</target>\n      </trans-unit>\n      <trans-unit id="def9fc628134d3a044b7c0ad2a83c846bdad56f1" datatype="html">\n        <source>Retention period requires either Days or Years.</source>\n        <target>Retention period requires either Days or Years.</target>\n      </trans-unit>\n      <trans-unit id="003c94fc143882ac8af6251a1595fe62978fe3e6" datatype="html">\n        <source>Years</source>\n        <target>Years</target>\n      </trans-unit>\n      <trans-unit id="14c6189ead0951f13049c7bf9af7642d0c41957a" datatype="html">\n        <source>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</source>\n        <target>The number of years that you want to specify for the default retention period that will be applied to new objects placed in this bucket.</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>Tipo de índice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regla de colocación</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Marcador</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Marcador máximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versión</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versión maestra</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hora de modificación</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Grupo de zona</target>\n      </trans-unit>\n      <trans-unit id="62a923f047ca49e7a4782629e91fea1ba32db68f" datatype="html">\n        <source>MFA Delete</source>\n        <target>MFA Delete</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Cuota de papelera</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamaño máximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Sin límite</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>Número máximo de objetos</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nombre de usuario</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Seleccione un nombre de usuario --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Autogenerar clave</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clave de acceso</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clave secreta</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Nombre completo</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>Dirección de correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendido</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Número máximo de papeleras</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusuarios</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacidades</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cuota de usuario</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Claves</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>Tipo</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- Seleccione un tipo --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>Permiso</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Seleccione un permiso --</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusuario</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>El ID de subusuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lectura, escritura</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>todos</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Clave Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Autogenerar secreto</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Cargando datos del usuario...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>No es posible cargar los datos del usuario.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>El ID de usuario que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Esta dirección no es válida.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>La dirección de correo electrónico que ha elegido ya está en uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Máx. papeleras</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Inhabilitado</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizar</target>\n      </trans-unit>\n      <trans-unit id="28872515cb81d197a3a1733fa546d3e0f0dd6c67" datatype="html">\n        <source>The entered value must be &gt;= 1.</source>\n        <target>The entered value must be &gt;= 1.</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clave S3</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>No hay ningún subusuario.</target>\n      </trans-unit>\n      <trans-unit id="7fd6dfb8ecb982dbc3affb2c2d5414c4f5b6abd2" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target>S3</target>\n      </trans-unit>\n      <trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target>No hay ninguna clave.</target>\n      </trans-unit>\n      <trans-unit id="fc1c1a7140ff6b815a95b65ee2780fdbe1b2b7a1" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>No hay ninguna capacidad</target>\n      </trans-unit>\n      <trans-unit id="043e2ec0036ceadd926fd5e3f93cd6f3565f3648" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f5a451c4ea65a4046f0b49d489a7013abf0b5861" datatype="html">\n        <source>All capabilities are already added.</source>\n        <target>All capabilities are already added.</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tamaño ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tamaño máx.</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Objetos ilimitados</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Objetos máx.</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>El valor introducido debe ser mayor o igual que 0.</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descripción...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permisos</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Funciones</target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar contraseña</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Las contraseñas no coinciden.</target>\n      </trans-unit>\n      <trans-unit id="96621f9ed2e4ae5204564e583d2c816bedead571" datatype="html">\n        <source>Password expiration date</source>\n        <target>Password expiration date</target>\n      </trans-unit>\n      <trans-unit id="48932db3801fe9d5d72a60a3e656bffd17c1c5d9" datatype="html">\n        <source>Password expiration date...</source>\n        <target>Password expiration date...</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Correo electrónico</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Correo electrónico no válido.</target>\n      </trans-unit>\n      <trans-unit id="8913c216dd506e20e412e144381d8d2a65a84359" datatype="html">\n        <source>User must change password at next logon</source>\n        <target>User must change password at next logon</target>\n      </trans-unit>\n      <trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Se dispone a eliminar los permisos "lectura/actualización de usuario" de su propio usuario.</target>\n      </trans-unit>\n      <trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">\n        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>\n        <target>Si continúa, no podrá añadir ni eliminar funciones en ningún usuario.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>¿Seguro que desea continuar?</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>Ayuda</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>Documentación</target>\n      </trans-unit>\n      <trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target>API</target>\n      </trans-unit>\n      <trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target>Acerca de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Ajustes de la consola</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Gestión del usuario</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usuario que ha entrado</target>\n      </trans-unit>\n      <trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </source>\n        <target>Signed in as\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ username }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9" datatype="html">\n        <source>Change password</source>\n        <target>Change password</target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Salir</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atributos (mapa de OSD)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Los metadatos no están disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>Metadatos</target>\n      </trans-unit>\n      <trans-unit id="deba10b7279a589d01e919ea11f43c79ca1773e3" datatype="html">\n        <source>Device health</source>\n        <target>Device health</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Contandor de rendimiento</target>\n      </trans-unit>\n      <trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </source>\n        <target>Histogram not available: \n          <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target>Escrituras</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lecturas</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>Histograma</target>\n      </trans-unit>\n      <trans-unit id="3d87fc20ea8e5f0f0500ba5d5061b345be78ec5e" datatype="html">\n        <source>No hostname found.</source>\n        <target>No hostname found.</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Valores actuales</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>Mín.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>Máx.</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>Origen</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>Nivel</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Se puede actualizar en el tiempo de ejecución (editable)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>Etiquetas</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Valores Enum</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Véase también</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Estado del clúster</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>Daemons de gestor</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Instancias de Object Gateway</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>Servidores de metadatos</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>Puertas de enlace iSCSI</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>IOPS de cliente</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>Rendimiento del cliente</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectura/escritura de cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Rendimiento de recuperación</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Depuración</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>Rendimiento</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Capacidad en bruto</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Grupos de colocación por OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Estado del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>Capacidad</target>\n      </trans-unit>\n      <trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </source>\n        <target>\n          <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>\n          <x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/> See \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Logs\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for more details.\n        </target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Clasificaciones</target>\n      </trans-unit>\n      <trans-unit id="2b24e0b0b1629d2e8a51b9da7c75d6e6379f4bc4" datatype="html">\n        <source>Standbys</source>\n        <target>Standbys</target>\n      </trans-unit>\n      <trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target>MDS performance counters</target>\n      </trans-unit>\n      <trans-unit id="6e213942c6354b9cbe7a650f0f1499bfc1000fb6" datatype="html">\n        <source>Directories</source>\n        <target>Directories</target>\n      </trans-unit>\n      <trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </source>\n        <target>Clients (\n          <x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>Actual</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Autenticación de descubrimiento actualizada</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>No hay ningún portal disponible.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>No hay ninguna imagen disponible.</target>\n      </trans-unit>\n      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">\n        <source>There are no images available. Please make sure you add an image to the target.</source>\n        <target>No hay ninguna imagen disponible. Asegúrese de añadir una imagen al destino.</target>\n      </trans-unit>\n      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">\n        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>\n        <target>No hay ningún iniciador disponible. Asegúrese de añadir un iniciador al destino.</target>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target>target</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destino</target>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target># Sessions</target>\n      </trans-unit>\n      <trans-unit id="2ea10b3668e04e057ba96ddcaf4c9b77089008ae" datatype="html">\n        <source>Unavailable gateway(s)</source>\n        <target>Unavailable gateway(s)</target>\n      </trans-unit>\n      <trans-unit id="c49e0dd71d551bd4928d967d78f0721dbf9f95e3" datatype="html">\n        <source>Target has active sessions</source>\n        <target>Target has active sessions</target>\n      </trans-unit>\n      <trans-unit id="a87acd72dfb68b45175270695209550a85adf50c" datatype="html">\n        <source>iSCSI target</source>\n        <target>iSCSI target</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</target>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target># Targets</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O desde</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>Instancia</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>Problema</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Progreso</target>\n      </trans-unit>\n      <trans-unit id="25b725dba712a7a020fd34a72297befae975a492" datatype="html">\n        <source>Edit Site Name</source>\n        <target>Edit Site Name</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Editar modo</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>Añadir par</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Editar par</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Suprimir par</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Líder</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>N.º locales</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N.º remotos</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>duplicar par</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Clave</target>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target>RBD</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Aplanamiento profundo</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>En capas</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>Bloqueo exclusivo</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa de objetos (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>En diario (requiere bloqueo exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target>Fast diff (interlocked with object-map)</target>\n      </trans-unit>\n      <trans-unit id="130fd872c78271a8f86b1ab16a76e823969c47d9" datatype="html">\n        <source>Namespace</source>\n        <target>Namespace</target>\n      </trans-unit>\n      <trans-unit id="14abc99daed542774633046c53b6ce8251331141" datatype="html">\n        <source>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</source>\n        <target>This RBD has cloned snapshots. Please delete related RBDs before deleting this RBD.</target>\n      </trans-unit>\n      <trans-unit id="51699f716cf34e6622ff7bfd84641480c045271a" datatype="html">\n        <source>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Created namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bf44b7d6379ce0198ed3d95a27642a224181bf1d" datatype="html">\n        <source>Total images</source>\n        <target>Total images</target>\n      </trans-unit>\n      <trans-unit id="371ce3ffe62548d15e391a248bc554d903bb03fc" datatype="html">\n        <source>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </source>\n        <target>Deleted namespace \'\n          <x id="INTERPOLATION" equiv-text="{{pool}}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{namespace}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="9d704fd00ca929f90c3119cefc581821ae58a73e" datatype="html">\n        <source>Namespace contains images</source>\n        <target>Namespace contains images</target>\n      </trans-unit>\n      <trans-unit id="c2017dc94b4f57a347ccb126e546e88942f4d7a6" datatype="html">\n        <source>RBD Snapshot</source>\n        <target>RBD Snapshot</target>\n      </trans-unit>\n      <trans-unit id="631fc50ec7c9bd81dc797a3c7e09eda1178ad999" datatype="html">\n        <source>Parent image must support Layering</source>\n        <target>Parent image must support Layering</target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTECTED</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>SIN PROTECCIÓN</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Reversión de instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revertir</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instantánea RBD</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Suprimido a las</target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>ID</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>tipo</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>estado</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>versión</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>Host</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>raíz</target>\n      </trans-unit>\n      <trans-unit id="d34feb369d308075b423d5c5fc431f9766bf7a11" datatype="html">\n        <source>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </source>\n        <target>Evicted client "\n          <x id="INTERPOLATION" equiv-text="{{clientId}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de reserva</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Clasificación</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Daemon</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>Actividad</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>Dentries</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>Inodos</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Uso</target>\n      </trans-unit>\n      <trans-unit id="950b5f04a2efd3f11c0f76418d5a4212381e792e" datatype="html">\n        <source>Origin</source>\n        <target>Origin</target>\n      </trans-unit>\n      <trans-unit id="2ea2ec95d93fd55d0db6e9d2b95b25e153d4cec2" datatype="html">\n        <source>Max size</source>\n        <target>Max size</target>\n      </trans-unit>\n      <trans-unit id="665dced3a61bca44924a0bde4be47390225a4898" datatype="html">\n        <source>Max files</source>\n        <target>Max files</target>\n      </trans-unit>\n      <trans-unit id="0ccf776baac60794b142526986f3af85848c7059" datatype="html">\n        <source>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </source>\n        <target>The inherited \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/> is the maximum value to be used.\n        </target>\n      </trans-unit>\n      <trans-unit id="b0e2ef28384f2de6674cac300c779f900929a89b" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/> CephFS \n          <x id="INTERPOLATION_1" equiv-text="{{quotaName}}"/> quota for \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="542ef638499635dec7641bdc2e499258094187cc" datatype="html">\n        <source>size</source>\n        <target>size</target>\n      </trans-unit>\n      <trans-unit id="ce90ff00c341d8eef96b0e7956bb85b8faba3839" datatype="html">\n        <source>files</source>\n        <target>files</target>\n      </trans-unit>\n      <trans-unit id="fbe8b9340c08c24aef62ffe81c83e2b46a4f1495" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{quotaName}}"/> quota \n          <x id="INTERPOLATION_1" equiv-text="{{value}}"/> from \'\n          <x id="INTERPOLATION_2" equiv-text="{{path}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="37c2c0a4a356465eef2edfb09ffffc6db5259975" datatype="html">\n        <source>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </source>\n        <target>Value has to be at least \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or more\n        </target>\n      </trans-unit>\n      <trans-unit id="73f8e64703a707e2cf98b9a10653cd3bbdd8cab1" datatype="html">\n        <source>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </source>\n        <target>Value has to be at most \n          <x id="INTERPOLATION" equiv-text="{{value}}"/> or less\n        </target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Actualizado</target>\n      </trans-unit>\n      <trans-unit id="b6a4cf4f302c7fcbec199ce0df42b8282d682b04" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{action}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{quotaValue}}"/>\n          <x id="INTERPOLATION_2" equiv-text="{{conclusion}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a40024afb071f68fec949094a71f832d5611bca5" datatype="html">\n        <source>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>in order to inherit \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c108ff588291e9c040adea2adf35e7236cf29925" datatype="html">\n        <source>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </source>\n        <target>which isn\'t used because of the inheritance of \n          <x id="INTERPOLATION" equiv-text="{{quotaValue}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d3785a64d1c72b03b2212855ce695b45ed0342d2" datatype="html">\n        <source>in order to have no quota on the directory</source>\n        <target>in order to have no quota on the directory</target>\n      </trans-unit>\n      <trans-unit id="c4d3a3446a7f36825291c5e76c4a6b7919f9bd2f" datatype="html">\n        <source>Create Snapshot</source>\n        <target>Create Snapshot</target>\n      </trans-unit>\n      <trans-unit id="e9af734e231b837d64df21008e2eb1fdff566a61" datatype="html">\n        <source>Please enter the name of the snapshot.</source>\n        <target>Please enter the name of the snapshot.</target>\n      </trans-unit>\n      <trans-unit id="8c4d3039e6a953b0d6f1b1313ffa60c5d2b35dc7" datatype="html">\n        <source>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Created snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="126ad894f74ee9a999825f3f4ac5a31fdfc093bf" datatype="html">\n        <source>CephFs Snapshot</source>\n        <target>CephFs Snapshot</target>\n      </trans-unit>\n      <trans-unit id="1e4d1c0865adc485260740c42ac5af68ce8feb13" datatype="html">\n        <source>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </source>\n        <target>Deleted snapshot "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>" for "\n          <x id="INTERPOLATION_1" equiv-text="{{path}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>El valor se puede actualizar en el tiempo de ejecución.</target>\n      </trans-unit>\n      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">\n        <source>Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via \'ceph config\n      set ...\'. This option should be configured via ceph.conf or via the\n      command line.</source>\n        <target>Los daemons/clientes no extraen este valor de la\n      base de datos de configuración del monitor. No se recomienda definir esta opción con "ceph config\n      set ...". Esta opción se debe configurar mediante ceph.conf o a través\n      de la línea de comandos.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>La opción solo surte efecto durante el inicio del daemon.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>La opción solo afecta a la creación del clúster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>La opción solo afecta a la creación del daemon.</target>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </source>\n        <target>Updated config option \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servicio</target>\n      </trans-unit>\n      <trans-unit id="6986e0df8092d822ac2c076520d83994c78834fc" datatype="html">\n        <source>Modified</source>\n        <target>Modified</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Valor actual</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Editable</target>\n      </trans-unit>\n      <trans-unit id="261c0af854e8684abc15f89dce6efb3e72344b18" datatype="html">\n        <source>host</source>\n        <target>host</target>\n      </trans-unit>\n      <trans-unit id="b1b381321d4cef04605d3e6e8847ea2b72a03799" datatype="html">\n        <source>Identify</source>\n        <target>Identify</target>\n      </trans-unit>\n      <trans-unit id="a5d5e407f8c4e1b152509c966c90f37edf68472e" datatype="html">\n        <source>Device path</source>\n        <target>Device path</target>\n      </trans-unit>\n      <trans-unit id="b7da3e3505cc80f9bf3cffc8444c53e8a9ec70a5" datatype="html">\n        <source>Available</source>\n        <target>Available</target>\n      </trans-unit>\n      <trans-unit id="396974120fc614fc930a27c8d15a094d82a3a9e4" datatype="html">\n        <source>Vendor</source>\n        <target>Vendor</target>\n      </trans-unit>\n      <trans-unit id="6ec98fa3d6504ba1fd03465194b53706c8263c99" datatype="html">\n        <source>Model</source>\n        <target>Model</target>\n      </trans-unit>\n      <trans-unit id="f2d785f5658c96c6a2f505cdd625108bcece84c3" datatype="html">\n        <source>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </source>\n        <target>Identify device \n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="c97ab45ca09248f8f1ba60328175741657fe39ce" datatype="html">\n        <source>Please enter the duration how long to blink the LED.</source>\n        <target>Please enter the duration how long to blink the LED.</target>\n      </trans-unit>\n      <trans-unit id="87e56ee5057023d7e8b59420b838bad112b043bc" datatype="html">\n        <source>1 minute</source>\n        <target>1 minute</target>\n      </trans-unit>\n      <trans-unit id="affa3b3bf1f36531e5ae65291f8a7cd1b06860ee" datatype="html">\n        <source>2 minutes</source>\n        <target>2 minutes</target>\n      </trans-unit>\n      <trans-unit id="878c6645b7fc26d85c7aee17a9d8c282a938dcf3" datatype="html">\n        <source>5 minutes</source>\n        <target>5 minutes</target>\n      </trans-unit>\n      <trans-unit id="aa0a76140961594b7176ade241e5025a7dbb5dce" datatype="html">\n        <source>10 minutes</source>\n        <target>10 minutes</target>\n      </trans-unit>\n      <trans-unit id="0a7f83a1f27750ef634a1f1f97263fac36113b1f" datatype="html">\n        <source>15 minutes</source>\n        <target>15 minutes</target>\n      </trans-unit>\n      <trans-unit id="699b690d686dbb8e00a1e95b89ba2fffb548da6e" datatype="html">\n        <source>Execute</source>\n        <target>Execute</target>\n      </trans-unit>\n      <trans-unit id="aa975a86dd49979a3ae90b9f3fc5b2c97311d422" datatype="html">\n        <source>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>Identifying \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' started on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="6bd47ff8707aa2e6a94a4a6e2566b86dc7956d5f" datatype="html">\n        <source>Always-On</source>\n        <target>Always-On</target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>Habilitar</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Inhabilitar</target>\n      </trans-unit>\n      <trans-unit id="340f2f312c2eb353e5cd69aee6bee7f5a73c34ac" datatype="html">\n        <source>This Manager module is always on.</source>\n        <target>This Manager module is always on.</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Conectando de nuevo. Espere...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Dirección pública</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sesiones abiertas</target>\n      </trans-unit>\n      <trans-unit id="34c6f45591d420b1101dcee53999d1de91c0e400" datatype="html">\n        <source>No available devices</source>\n        <target>No available devices</target>\n      </trans-unit>\n      <trans-unit id="dcfe8807a2a1d0d7074a02afe9b80645bd03b9ab" datatype="html">\n        <source>Please add primary devices first</source>\n        <target>Please add primary devices first</target>\n      </trans-unit>\n      <trans-unit id="05d024719e53f85f7f294b7e21dfd805709a0b06" datatype="html">\n        <source>Add devices by using filters</source>\n        <target>Add devices by using filters</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>No incluir</target>\n      </trans-unit>\n      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">\n        <source>OSDs that were previously marked out will not be marked back in when they start</source>\n        <target>Los OSD que se excluyeron anteriormente no se volverán a incluir cuando se inicien</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>No excluir</target>\n      </trans-unit>\n      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">\n        <source>OSDs will not automatically be marked out after the configured interval</source>\n        <target>Los OSD no se excluirán automáticamente después del intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>No activar</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>No se permite que los OSD se inicien</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>No desactivar</target>\n      </trans-unit>\n      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">\n        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>\n        <target>Se ignoran los informes de error de OSD, de forma que los monitores no desactivarán los OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>Pausa</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>Pone en pausa las lecturas y escrituras</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>No depurar</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>La depuración está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>No depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>La depuración profunda está inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>No reponer</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>La reposición de grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="df526de2b93c4099a30c200ef551608e39ee5256" datatype="html">\n        <source>No Rebalance</source>\n        <target>No Rebalance</target>\n      </trans-unit>\n      <trans-unit id="c5b70346245f8d52b58e5e7fe222ce82f12429ce" datatype="html">\n        <source>OSD will choose not to backfill unless PG is also degraded</source>\n        <target>OSD will choose not to backfill unless PG is also degraded</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>No recuperar</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La recuperación de los grupos de colocación se suspende</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar orden bit a bit</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Snapdir limpiados</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>Los OSD tienen snapset convertidos</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Supresiones de recuperación</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Supresiones realizadas durante la recuperación, en lugar de emparejamientos</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Límite estricto de registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>Establece un límite estricto para la longitud del registro del grupo de colocación</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Indicadores de OSD actualizados</target>\n      </trans-unit>\n      <trans-unit id="948758e1412bb2ecdb98e3a4f1cbb6d7458456f2" datatype="html">\n        <source>Encryption</source>\n        <target>Encryption</target>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>Incluir</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>desactivar</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Marcar</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD perdido</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>marcado como perdido</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Limpiar</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>limpiado</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>destruir</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>destruido</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>suprimir</target>\n      </trans-unit>\n      <trans-unit id="a5b387f5a15b95e339df10fc23526c659a2b6c6f" datatype="html">\n        <source>deleted</source>\n        <target>deleted</target>\n      </trans-unit>\n      <trans-unit id="107614b994f2b01abdc1ca179bf780b0cd933ec4" datatype="html">\n        <source>Recovery Priority</source>\n        <target>Recovery Priority</target>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target>PG scrub</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Grupos de colocación</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>Bytes de lectura</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operaciones de lectura</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operaciones de escritura</target>\n      </trans-unit>\n      <trans-unit id="b27d1dd31789610130b7cdbf88c4da552cffe936" datatype="html">\n        <source>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </source>\n        <target>Edit OSD: \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="986f1379580078e77666d10f8ddf4f839c6ca71d" datatype="html">\n        <source>Edit OSD</source>\n        <target>Edit OSD</target>\n      </trans-unit>\n      <trans-unit id="a4b09e2fa39c3e4f1a387f191fbae4eea3ce7bf5" datatype="html">\n        <source>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </source>\n        <target>Updated OSD "\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Mark \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target>PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target>Updated PG scrub options</target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>Número máximo de reposiciones</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>Máximo de recuperaciones activas</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>Máximo de recuperaciones de inicio único</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Reposo de recuperación</target>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ccf5f30798c03d2d8efd0e6eb508320c018b722d" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD(s): \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="3bc2d18913479965cb046ec75e2ac3f7b7a77ce5" datatype="html">\n        <source>Create Silence</source>\n        <target>Create Silence</target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>Trabajo</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Gravedad</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Iniciado</target>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target>URL</target>\n      </trans-unit>\n      <trans-unit id="d9f726c70aeba7fa6d3d68bff718abe78b1e50ac" datatype="html">\n        <source>Query</source>\n        <target>Query</target>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target>silence</target>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target>Attribute name</target>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target>Regular expression</target>\n      </trans-unit>\n      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">\n        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>\n        <target>Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target>Created by</target>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target>Ends</target>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target>Silence</target>\n      </trans-unit>\n      <trans-unit id="f2ea47d702c7f5e3e5fa751bf9959e21030b72e6" datatype="html">\n        <source>Daemon type</source>\n        <target>Daemon type</target>\n      </trans-unit>\n      <trans-unit id="6c131968e6ab730d86443e6fc11c5cc2a76d7bac" datatype="html">\n        <source>Daemon ID</source>\n        <target>Daemon ID</target>\n      </trans-unit>\n      <trans-unit id="5738f0ca7ddd9594058ce051b1d5d576e2782825" datatype="html">\n        <source>Container ID</source>\n        <target>Container ID</target>\n      </trans-unit>\n      <trans-unit id="78ebcf850cd440c5efc15e6a3a522ae75aeff669" datatype="html">\n        <source>Container Image name</source>\n        <target>Container Image name</target>\n      </trans-unit>\n      <trans-unit id="ea0c7ab9a7bdf646d494abf8c85fbf67d934d079" datatype="html">\n        <source>Container Image ID</source>\n        <target>Container Image ID</target>\n      </trans-unit>\n      <trans-unit id="bf2468fd965b8a59c135ad549b3a612aa9873abc" datatype="html">\n        <source>Status Description</source>\n        <target>Status Description</target>\n      </trans-unit>\n      <trans-unit id="19867330bdc84096f5a93ab087a1766476c8a074" datatype="html">\n        <source>Last Refreshed</source>\n        <target>Last Refreshed</target>\n      </trans-unit>\n      <trans-unit id="2349ee2027ab6ceb3e4b8834928562075b7e1ac7" datatype="html">\n        <source>Container image name</source>\n        <target>Container image name</target>\n      </trans-unit>\n      <trans-unit id="3c475503fb93338811af6b3d9ccacca1d7334609" datatype="html">\n        <source>Container image ID</source>\n        <target>Container image ID</target>\n      </trans-unit>\n      <trans-unit id="8dd15f6c73c05a8b0bd7b6d416487ab6570b88c8" datatype="html">\n        <source>Running</source>\n        <target>Running</target>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Usado</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dispon.</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Limpio</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>En curso</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Advertencia</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Desconocido</target>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target>Healthy</target>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target>Misplaced</target>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target>Degraded</target>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target>Unfound</target>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target>replicas</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>sin sistemas de archivos</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>activo</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>reserva</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>n/d</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>daemon activo</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>quórum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>El servicio NFS Ganesha no está configurado.</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>Transportar</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>Usuario de CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Sistemas de archivos CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(se hereda de la configuración global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>se hereda de la configuración global</target>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target>-- Seleccione el tipo de reducción de privilegios de ID de usuario que se va a realizar --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>No hay ningún daemon disponible.</target>\n      </trans-unit>\n      <trans-unit id="18ae8dc1264f06df7ea251175ada2ac1b8401018" datatype="html">\n        <source>NFS export</source>\n        <target>NFS export</target>\n      </trans-unit>\n      <trans-unit id="c56d51748965db5f3966cd1d06a1c9f4b5244931" datatype="html">\n        <source>Crush Rule</source>\n        <target>Crush Rule</target>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target>EC Profile</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de caché</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Antigüedad mínima de expulsión</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Antigüedad mínima de vaciado</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Número máximo de bytes de destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Número máximo de objetos de destino</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>No se ha añadido ninguna aplicación</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Se ha alcanzado el límite de aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">\n        <source>A pool can only have up to four applications definitions.</source>\n        <target>Un repositorio solo puede tener hasta cuatro definiciones de aplicaciones.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Caracteres permitidos: _, a-z, A-Z y 0-9</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>La longitud máxima es 128 caracteres</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrar o añadir aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Añadir aplicación</target>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target>pool</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="ae48e19a9a2acaca4b5ea594451bc9b0b01ec8d2" datatype="html">\n        <source>crush rule</source>\n        <target>crush rule</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamaño de réplica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Último cambio</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil de código de borrado</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Conjunto de reglas de CRUSH</target>\n      </trans-unit>\n      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">\n        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>\n        <target>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>papelera</target>\n      </trans-unit>\n      <trans-unit id="84fee774286ec4191311f1277075455c3ea5e2e2" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </source>\n        <target>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Created Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>papeleras</target>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target>capability</target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usuario</target>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target>subuser</target>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target>S3 Key</target>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Updated Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </source>\n        <target>Created Object Gateway user "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuarios</target>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target>Swift Key</target>\n      </trans-unit>\n      <trans-unit id="6462d8f12b427c29363f00b12f20f566be24937c" datatype="html">\n        <source>Device ID</source>\n        <target>Device ID</target>\n      </trans-unit>\n      <trans-unit id="82f12bf23db4bb82db89877bebe93954bc1c8fb0" datatype="html">\n        <source>State of Health</source>\n        <target>State of Health</target>\n      </trans-unit>\n      <trans-unit id="7bd34bd120146afef0e0d8fa168d9bdabd594b6a" datatype="html">\n        <source>Good</source>\n        <target>Good</target>\n      </trans-unit>\n      <trans-unit id="31c59dce114ec0a9d02552ef7b81920b3de36793" datatype="html">\n        <source>Bad</source>\n        <target>Bad</target>\n      </trans-unit>\n      <trans-unit id="2862af5284f66d4b06bdcf77a5519141723b6989" datatype="html">\n        <source>Stale</source>\n        <target>Stale</target>\n      </trans-unit>\n      <trans-unit id="8d8e819b52984a4fbdec75a99eb28d1ae4323bbc" datatype="html">\n        <source>Life Expectancy</source>\n        <target>Life Expectancy</target>\n      </trans-unit>\n      <trans-unit id="72d9b15be18ea063e78c4e855b9e8c0af95593ef" datatype="html">\n        <source>Prediction Creation Date</source>\n        <target>Prediction Creation Date</target>\n      </trans-unit>\n      <trans-unit id="a6b4ef85e5ff8bd192751c7bbebc54c46118d6d4" datatype="html">\n        <source>Device Name</source>\n        <target>Device Name</target>\n      </trans-unit>\n      <trans-unit id="d5fd840374ca1a6f394bcd81f390a6dca27f8224" datatype="html">\n        <source>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </source>\n        <target>An error with error code \n          <x id="INTERPOLATION" equiv-text="{{code}}"/> occurred.\n        </target>\n      </trans-unit>\n      <trans-unit id="a0b59d7139692bb8d8ed786b6eb6e9e70ce743f3" datatype="html">\n        <source>Raw</source>\n        <target>Raw</target>\n      </trans-unit>\n      <trans-unit id="2f3beddc8234b30fb26a7f63ba2f1ea74f2ed6f7" datatype="html">\n        <source>Threshold</source>\n        <target>Threshold</target>\n      </trans-unit>\n      <trans-unit id="4654b5a68af3c8bad29aa14ca85ccea1f3143c6b" datatype="html">\n        <source>When Failed</source>\n        <target>When Failed</target>\n      </trans-unit>\n      <trans-unit id="5b7f56d5be49fb8e8d8f40209d6746f8f72e9177" datatype="html">\n        <source>Worst</source>\n        <target>Worst</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>Ámbito</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>Lectura</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crear</target>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target>role</target>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Updated role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Función del sistema</target>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Deleted role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="bd15b8d5c0fa160161728eefbbb585710414d471" datatype="html">\n        <source>New name</source>\n        <target>New name</target>\n      </trans-unit>\n      <trans-unit id="6f126277f3dc22a3ab3609c4c198386c8744e11a" datatype="html">\n        <source>Clone Role</source>\n        <target>Clone Role</target>\n      </trans-unit>\n      <trans-unit id="d19d8320479854bc52877cdf0dc5ecfe34a36ec7" datatype="html">\n        <source>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </source>\n        <target>Cloned role \'\n          <x id="INTERPOLATION" equiv-text="{{dst_name}}"/>\' from \'\n          <x id="INTERPOLATION_1" equiv-text="{{src_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2e35d60a14ce0b470e8b54602864a867f7fcef40" datatype="html">\n        <source>There are no roles.</source>\n        <target>There are no roles.</target>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Created user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Actualizar usuario</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Continuar</target>\n      </trans-unit>\n      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">\n        <source>You were automatically logged out because your roles have been changed.</source>\n        <target>La sesión se ha cerrado automáticamente porque sus funciones han cambiado.</target>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Updated user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Deleted user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </source>\n        <target>Failed to delete user "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>"\n        </target>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </source>\n        <target>You are currently logged in as "\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>".\n        </target>\n      </trans-unit>\n      <trans-unit id="d8b81951d25439864e92f750f7c99d7426d6517c" datatype="html">\n        <source>password</source>\n        <target>password</target>\n      </trans-unit>\n      <trans-unit id="d361a9b5e1f7985a12c0433388f31626525a02b8" datatype="html">\n        <source>Updated user password"</source>\n        <target>Updated user password"</target>\n      </trans-unit>\n      <trans-unit id="c4e596a44ffc4718c1602600d6e4f029190eb031" datatype="html">\n        <source>The name of the node under which data should be placed.</source>\n        <target>The name of the node under which data should be placed.</target>\n      </trans-unit>\n      <trans-unit id="f24772ba1091155f8d7025332ca8456a204d1e28" datatype="html">\n        <source>The type of CRUSH nodes across which we should separate replicas.</source>\n        <target>The type of CRUSH nodes across which we should separate replicas.</target>\n      </trans-unit>\n      <trans-unit id="a3896042af461a80091c3f7a5fe3fff5ac40a3a0" datatype="html">\n        <source>The device class data should be placed on.</source>\n        <target>The device class data should be placed on.</target>\n      </trans-unit>\n      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">\n        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>\n        <target>Cada objeto se divide en porciones de datos, cada una almacenada en un OSD distinto.</target>\n      </trans-unit>\n      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">\n        <source>Compute coding chunks for each object and store them on different OSDs.\n      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>\n        <target>Calcula las porciones de código para cada objeto y las almacena en distintos OSD.\n      El número de porciones de código es también el número de OSD que pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">\n        <source>The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</source>\n        <target>El complemento jerasure es el más genérico y flexible,\n          y también el complemento por defecto para los repositorios de código de borrado de Ceph.</target>\n      </trans-unit>\n      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">\n        <source>The more flexible technique is reed_sol_van : it is enough to set k\n          and m. The cauchy_good technique can be faster but you need to chose the packetsize\n          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents\n          in the sense that they can only be configured with m=2.</source>\n        <target>La técnica más flexible es reed_sol_van: basta con definir k y m.\n          La técnica cauchy_good puede ser más rápida, pero hay que elegir con cuidado el tamaño\n          del paquete. reed_sol_r6_op, liberation, blaum_roth y liber8tion son todas equivalentes a RAID6\n          en el sentido de que solo se pueden configurar con m=2.</target>\n      </trans-unit>\n      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">\n        <source>The encoding will be done on packets of bytes size at a time.\n          Chosing the right packet size is difficult.\n          The jerasure documentation contains extensive information on this topic.</source>\n        <target>La codificación se realizará según el tamaño de los paquetes de bytes de uno en uno.\n          Elegir el tamaño correcto es difícil.\n          La documentación de jerasure incluye información completa sobre el tema.</target>\n      </trans-unit>\n      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">\n        <source>With the jerasure plugin, when an erasure coded object is stored on\n          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.\n          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading\n          from the eleven others to repair.\n\n          The lrc erasure code plugin creates local parity chunks to be able to recover using\n          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create\n          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be\n          recovered with only four OSDs instead of eleven.</source>\n        <target>Con el complemento jerasure, cuando un objeto de código de borrado se almacena\n          en varios OSD, para recuperarse de la pérdida de un OSD es necesario leer de todos los demás.\n          Por ejemplo, si jerasure está configurado con k=8 y m=4, cuando se pierde un OSD es necesario leer\n          de los otros once para repararlo.\n\n          El complemento de código de borrado lrc crea porciones de paridad local para poder realizar la recuperación con\n          menos OSDs. Por ejemplo, is lrc está configurado con k=8, m=4 y l=4, creará\n          una porción de paridad adicional para cada cuatro OSDs. Si se pierde un solo OSD, se puede recuperar\n          solo con cuatro OSD, en lugar de con once.</target>\n      </trans-unit>\n      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">\n        <source>Group the coding and data chunks into sets of size locality. For instance,\n          for k=4 and m=2, when locality=3 two groups of three are created. Each set can\n          be recovered without reading chunks from another set.</source>\n        <target>Agrupa las porciones de código y de datos en localizaciones de conjuntos de tamaño. Por ejemplo,\n          para k=4 y m=2, si locality=3, se crean dos grupos de tres. Cada conjunto\n          se puede recuperar sin leer porciones de otro conjunto.</target>\n      </trans-unit>\n      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">\n        <source>The type of the crush bucket in which each set of chunks defined\n          by l will be stored. For instance, if it is set to rack, each group of l chunks will be\n          placed in a different rack. It is used to create a CRUSH rule step such as step choose\n          rack. If it is not set, no such grouping is done.</source>\n        <target>El tipo de papelera de CRUSH en el que se almacenará cada\n          conjunto de porciones definido por l. Por ejemplo, si se define como bastidor, cada grupo de l porciones\n          se colocará en un bastidor distinto. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step choose\n          rack". Si no se define, no se realiza este tipo de agrupamiento.</target>\n      </trans-unit>\n      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">\n        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>\n        <target>El complemento isa encapsula la biblioteca ISA. Solo funciona en procesadores Intel.</target>\n      </trans-unit>\n      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">\n        <source>The ISA plugin comes in two Reed Solomon forms.\n          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>\n        <target>El complemento ISA viene en dos formatos de Reed Solomon.\n          Si se define reed_sol_van, se trata de Vandermonde; si se define cauchy, se trata de Cauchy.</target>\n      </trans-unit>\n      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">\n        <source>The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>\n        <target>El complemento shec encapsula las distintas bibliotecas SHEC.\n          Permite a Ceph recuperar datos de forma más eficiente que los códigos de Reed Solomon.</target>\n      </trans-unit>\n      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">\n        <source>The number of parity chunks each of which includes each data chunk in its\n          calculation range. The number is used as a durability estimator. For instance, if c=2,\n          2 OSDs can be down without losing data.</source>\n        <target>El número de porciones de paridad. Cada uno de ellas incluye cada porción de datos\n           en su intervalo de cálculo. El número se usa como estimador de durabilidad. Por ejemplo, si c=2,\n          2 OSD pueden estar inactivos sin que se pierdan datos.</target>\n      </trans-unit>\n      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">\n        <source>The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</source>\n        <target>El nombre de la papelera de CRUSH usado para el primer paso de la regla de CRUSH.\n      Por ejemplo, "step take default".</target>\n      </trans-unit>\n      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">\n        <source>Ensure that no two chunks are in a bucket with the same failure\n      domain. For instance, if the failure domain is host no two chunks will be stored on the same\n      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>\n        <target>Asegúrese de que no hay dos porciones en una papelera con el mismo\n      dominio de error. Por ejemplo, si el dominio de error es host, no debe haber dos porciones almacenadas en el mismo\n      host. Se usa para crear un paso de regla de CRUSH, por ejemplo, "step chooseleaf host".</target>\n      </trans-unit>\n      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">\n        <source>Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>\n        <target>Restringe la colocación a dispositivos de una clase concreta\n      (p.ej., ssd o hdd) usando los nombre de clase de dispositivo CRUSH en el mapa de CRUSH.</target>\n      </trans-unit>\n      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">\n        <source>Set the directory name from which the erasure code plugin is loaded.</source>\n        <target>Define el nombre de directorio del que se cargará el complemento de código de borrado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas las operaciones</target>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target>Permite solo las operaciones que no modifican el servidor</target>\n      </trans-unit>\n      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">\n        <source>Does not allow read or write operations, but allows any other operation</source>\n        <target>No permite operaciones de lectura o escritura, pero sí cualquier otra</target>\n      </trans-unit>\n      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">\n        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>\n        <target>No permite operaciones de lectura o escritura, ni ninguna otra que modifique los atributos del archivo o el contenido del directorio</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>No permite ningún tipo de acceso</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Seleccione la prioridad --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>Baja</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Alta</target>\n      </trans-unit>\n      <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">\n        <source>Error</source>\n        <target>Error</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Información</target>\n      </trans-unit>\n      <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba" datatype="html">\n        <source>Success</source>\n        <target>Success</target>\n      </trans-unit>\n      <trans-unit id="61fd1cffcb763cbfd5829071723cf9b647174bd9" datatype="html">\n        <source>An error occurred.</source>\n        <target>An error occurred.</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Últimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Últimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Últimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Última hora (opción por defecto)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Últimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Últimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Últimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Últimas 24 horas</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>Ayer</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>Hoy</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>Hoy hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>Anteayer</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Los últimos 2 días</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este día la semana pasada</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>La semana pasada</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Esta semana</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Esta semana hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Los últimos 7 días</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>El mes pasado</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este mes</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Este mes hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Los últimos 30 días</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Los últimos 90 días</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Los últimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>El último año</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>El año pasado</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este año</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Este año hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Los últimos 2 años</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Los últimos 5 años</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>No se ha seleccionado ningún elemento.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Deseleccione el elemento para volver a seleccionarlo</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Se ha alcanzado el límite de selección</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrar etiquetas</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Añadir insignia</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>No hay ningún elemento disponible.</target>\n      </trans-unit>\n      <trans-unit id="55dd9f44e64851bca3b7bfc9283a5ff36f030228" datatype="html">\n        <source>Set</source>\n        <target>Set</target>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target>Remove</target>\n      </trans-unit>\n      <trans-unit id="e168fe6c468b3ad632731395ef89860274242844" datatype="html">\n        <source>Unset</source>\n        <target>Unset</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Copiar</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Depuración profunda</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</target>\n      </trans-unit>\n      <trans-unit id="b4e94d529ff10db4d86f3f48900fa67ede3411fd" datatype="html">\n        <source>Evict</source>\n        <target>Evict</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplanar</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marcar para desactivar</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marcar para incluir</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Marcar como perdido</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar para excluir</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Renombrar</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Restaurar</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Mover a la papelera</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Desproteger</target>\n      </trans-unit>\n      <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">\n        <source>Change</source>\n        <target>Change</target>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target>Recreate</target>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target>Expire</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Suprimido</target>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target>Added</target>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target>Removed</target>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target>Edited</target>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target>Canceled</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</target>\n      </trans-unit>\n      <trans-unit id="5a13d3834133e09544ec93885662f181372dcf46" datatype="html">\n        <source>Deep Scrubbed</source>\n        <target>Deep Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="7c9efb91434a5c15e9579c0b31c8e184b8c8240d" datatype="html">\n        <source>Destroyed</source>\n        <target>Destroyed</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Aplanado</target>\n      </trans-unit>\n      <trans-unit id="8df71e952319eafa71c8e6ef6144b780af8813ff" datatype="html">\n        <source>Marked Down</source>\n        <target>Marked Down</target>\n      </trans-unit>\n      <trans-unit id="25658f5a080a1cab3b91e17b756b1d1dc46bb9b3" datatype="html">\n        <source>Marked In</source>\n        <target>Marked In</target>\n      </trans-unit>\n      <trans-unit id="ebcf306036a6c5579df9448f77eca98d491db245" datatype="html">\n        <source>Marked Lost</source>\n        <target>Marked Lost</target>\n      </trans-unit>\n      <trans-unit id="3a8803369ac18be3ad762384b9fda095fe2a6dcc" datatype="html">\n        <source>Marked Out</source>\n        <target>Marked Out</target>\n      </trans-unit>\n      <trans-unit id="0fe2a62ea7c609fa8326ee6d38060bc5ba8bf34f" datatype="html">\n        <source>Protected</source>\n        <target>Protected</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Limpiado</target>\n      </trans-unit>\n      <trans-unit id="d53de1a61bd51c815dc374c7f97e4ee69230e412" datatype="html">\n        <source>Renamed</source>\n        <target>Renamed</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</target>\n      </trans-unit>\n      <trans-unit id="e87dd0fd35460cb743046db918dfce2137b5977a" datatype="html">\n        <source>Reweighted</source>\n        <target>Reweighted</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Revertido</target>\n      </trans-unit>\n      <trans-unit id="15dec4c2d73a516c10aef90aeeea3364fa794615" datatype="html">\n        <source>Scrubbed</source>\n        <target>Scrubbed</target>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target>Showed</target>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target>Moved to Trash</target>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target>Unprotected</target>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target>Recreated</target>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target>Expired</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>Sí</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>No</target>\n      </trans-unit>\n      <trans-unit id="baf918eed9d4050cdad2acebc0f27b6eaf8e3fcd" datatype="html">\n        <source>Required rules for passwords:</source>\n        <target>Required rules for passwords:</target>\n      </trans-unit>\n      <trans-unit id="40f61909e1f017c4652e64b055089beef19cf871" datatype="html">\n        <source>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </source>\n        <target>Must contain at least \n          <x id="INTERPOLATION" equiv-text="{{length}}"/> characters\n        </target>\n      </trans-unit>\n      <trans-unit id="f4f5dbb3a05b5f38dab47ef38dad88a4574a765a" datatype="html">\n        <source>Must not be the same as the previous one</source>\n        <target>Must not be the same as the previous one</target>\n      </trans-unit>\n      <trans-unit id="607370e07b50087c196a5fcea9184e3d693226b2" datatype="html">\n        <source>Cannot contain the username</source>\n        <target>Cannot contain the username</target>\n      </trans-unit>\n      <trans-unit id="e6e355eab2596251aaa42623b41e6026d5c03e3b" datatype="html">\n        <source>Cannot contain any configured keyword</source>\n        <target>Cannot contain any configured keyword</target>\n      </trans-unit>\n      <trans-unit id="394bcd6d5e4da75b720c4d28f94f2aef7bb38355" datatype="html">\n        <source>Cannot contain any repetitive characters e.g. "aaa"</source>\n        <target>Cannot contain any repetitive characters e.g. "aaa"</target>\n      </trans-unit>\n      <trans-unit id="030e61e0bcf2536fb047645db6182d43e9fca9e9" datatype="html">\n        <source>Cannot contain any sequential characters e.g. "abc"</source>\n        <target>Cannot contain any sequential characters e.g. "abc"</target>\n      </trans-unit>\n      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">\n        <source>Your matcher seems to match no currently defined rule or active alert.</source>\n        <target>Your matcher seems to match no currently defined rule or active alert.</target>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target>no active alerts</target>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target>1 active alert</target>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts\n        </target>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target>Matches 1 rule</target>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </source>\n        <target>Matches \n          <x id="INTERPOLATION" equiv-text="{{n}}"/> rules\n        </target>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rules}}"/> with \n          <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Calidad del servicio</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>Límite de BPS</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>El límite deseado de bytes de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>Límite de IOPS</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>El límite deseado de operaciones de E/S por segundo.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Límite de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>El límite deseado de bytes de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Límite de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>El límite deseado de operaciones de lectura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Límite de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>El límite deseado de bytes de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Límite de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>El límite deseado de operaciones de escritura por segundo.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Ráfaga de BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de E/S.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Ráfaga de IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de E/S.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Ráfaga de BPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de lectura.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Ráfaga de IOPS de lectura</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de lectura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Ráfaga de BPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>El límite deseado de ráfaga de bytes de escritura.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Ráfaga de IOPS de escritura</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>El límite deseado de ráfaga de operaciones de escritura.</target>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </source>\n        <target>Failed to \n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>Ejecutando</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ejecutar</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ejecutado</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>tarea desconocida</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Creando</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>crear</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>Actualizando</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>actualizar</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Suprimiendo</target>\n      </trans-unit>\n      <trans-unit id="d07a282afc7fbdb39cea6e1c9b544882a7260a86" datatype="html">\n        <source>Adding</source>\n        <target>Adding</target>\n      </trans-unit>\n      <trans-unit id="a11ec4e640f241329943237d2a3cceaa4823658e" datatype="html">\n        <source>add</source>\n        <target>add</target>\n      </trans-unit>\n      <trans-unit id="ea1c70b874904216cc5af24bd7cb3dab2d074d42" datatype="html">\n        <source>Removing</source>\n        <target>Removing</target>\n      </trans-unit>\n      <trans-unit id="4da487aec5a29ce4372e7b512227cd665b01fe6f" datatype="html">\n        <source>remove</source>\n        <target>remove</target>\n      </trans-unit>\n      <trans-unit id="0e21237afdc84ec360c374fa678d9b1cfaa334f9" datatype="html">\n        <source>Importing</source>\n        <target>Importing</target>\n      </trans-unit>\n      <trans-unit id="c6b4128c006f4cc0564137e1a1482b5c432aa347" datatype="html">\n        <source>import</source>\n        <target>import</target>\n      </trans-unit>\n      <trans-unit id="3b9f4138abbca0fd66db1f7332f4b54e2a6d916d" datatype="html">\n        <source>Imported</source>\n        <target>Imported</target>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>RBD snapshot \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="2bf18ddf3785f7afb4f01dcf63d3d8c40f4bfba5" datatype="html">\n        <source>mirroring site name</source>\n        <target>mirroring site name</target>\n      </trans-unit>\n      <trans-unit id="167b73bb24b4695614ce0fc567b7a45080457a44" datatype="html">\n        <source>bootstrap token</source>\n        <target>bootstrap token</target>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>mirror peer for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target>all dashboards</target>\n      </trans-unit>\n      <trans-unit id="6c19652df9249c60827044ed6274933cab180c63" datatype="html">\n        <source>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </source>\n        <target>OSDs (DriveGroups: \n          <x id="INTERPOLATION" equiv-text="{{tracking_id}}"/>)\n        </target>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="460f07780389d24c6a540c007c7367a56afad585" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> is busy.\n        </target>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>Clonando</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>clonar</target>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </source>\n        <target>Snapshot of \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Copiando</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>copiar</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Aplanando</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>aplanar</target>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </source>\n        <target>Name is already used by \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </source>\n        <target>Cannot unprotect \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.\n        </target>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </source>\n        <target>Cannot delete \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Revirtiendo</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>revertir</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>Moviendo</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>mover</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>Movido</target>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>No se encuentra la imagen.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>Restaurando</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>restaurar</target>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </source>\n        <target>Image name \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.\n        </target>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>Limpiando</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>limpiar</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>todos los repositorios</target>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </source>\n        <target>images from \n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target>No es posible inhabilitar la duplicación porque contiene un par</target>\n      </trans-unit>\n      <trans-unit id="5c4525a1b76ca54d1aadeaecfdb83aedc2eec6e0" datatype="html">\n        <source>Identifying</source>\n        <target>Identifying</target>\n      </trans-unit>\n      <trans-unit id="ffd067e54a061d1f27cb35f0cf67ef7f29e19111" datatype="html">\n        <source>identify</source>\n        <target>identify</target>\n      </trans-unit>\n      <trans-unit id="7c921f339274688c22ba1acac7af6b097ad3599d" datatype="html">\n        <source>Identified</source>\n        <target>Identified</target>\n      </trans-unit>\n      <trans-unit id="3307492c27c2150cd26c514030444e11fd61089f" datatype="html">\n        <source>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>device \'\n          <x id="INTERPOLATION" equiv-text="{{device}}"/>\' on host \'\n          <x id="INTERPOLATION_1" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="f123ae1fc3b000e5d08e766dd78bff162afe709d" datatype="html">\n        <source>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </source>\n        <target>host \'\n          <x id="INTERPOLATION" equiv-text="{{hostname}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="c1af76189dcefd094da2bc1a4a63968f3bab5789" datatype="html">\n        <source>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </source>\n        <target>OSD \'\n          <x id="INTERPOLATION" equiv-text="{{svc_id}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </source>\n        <target>pool \'\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>erasure code profile \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="79052d6c47258dc19ada12dbb2563761102b6f1d" datatype="html">\n        <source>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </source>\n        <target>crush rule \'\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </source>\n        <target>target \'\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'\n        </target>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </source>\n        <target>NFS \n          <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/>\n        </target>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>'},"z+Ro":function(t,e,n){"use strict";function a(t){return t&&"function"==typeof t.schedule}n.d(e,"a",(function(){return a}))},"z/SZ":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n("8Y7J"),r=n("hpHm");class i{constructor(t,e,n){this.nodes=t,this.viewRef=e,this.componentRef=n}}class s{constructor(t,e,n,r,i,s,o,u){this._viewContainerRef=t,this._renderer=e,this._elementRef=n,this._injector=r,this._componentFactoryResolver=i,this._ngZone=s,this._applicationRef=o,this._posService=u,this.onBeforeShow=new a.EventEmitter,this.onShown=new a.EventEmitter,this.onBeforeHide=new a.EventEmitter,this.onHidden=new a.EventEmitter,this._providers=[],this._isHiding=!1,this.containerDefaultSelector="body",this._listenOpts={},this._globalListener=Function.prototype}get isShown(){return!this._isHiding&&!!this._componentRef}attach(t){return this._componentFactory=this._componentFactoryResolver.resolveComponentFactory(t),this}to(t){return this.container=t||this.container,this}position(t){return this.attachment=t.attachment||this.attachment,this._elementRef=t.target||this._elementRef,this}provide(t){return this._providers.push(t),this}show(t={}){if(this._subscribePositioning(),this._innerComponent=null,!this._componentRef){this.onBeforeShow.emit(),this._contentRef=this._getContentRef(t.content,t.context,t.initialState);const e=a.Injector.create({providers:this._providers,parent:this._injector});this._componentRef=this._componentFactory.create(e,this._contentRef.nodes),this._applicationRef.attachView(this._componentRef.hostView),this.instance=this._componentRef.instance,Object.assign(this._componentRef.instance,t),this.container instanceof a.ElementRef&&this.container.nativeElement.appendChild(this._componentRef.location.nativeElement),"string"==typeof this.container&&"undefined"!=typeof document&&(document.querySelector(this.container)||document.querySelector(this.containerDefaultSelector)).appendChild(this._componentRef.location.nativeElement),!this.container&&this._elementRef&&this._elementRef.nativeElement.parentElement&&this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement),this._contentRef.componentRef&&(this._innerComponent=this._contentRef.componentRef.instance,this._contentRef.componentRef.changeDetectorRef.markForCheck(),this._contentRef.componentRef.changeDetectorRef.detectChanges()),this._componentRef.changeDetectorRef.markForCheck(),this._componentRef.changeDetectorRef.detectChanges(),this.onShown.emit(this._componentRef.instance)}return this._registerOutsideClick(),this._componentRef}hide(){if(!this._componentRef)return this;this._posService.deletePositionElement(this._componentRef.location),this.onBeforeHide.emit(this._componentRef.instance);const t=this._componentRef.location.nativeElement;return t.parentNode.removeChild(t),this._contentRef.componentRef&&this._contentRef.componentRef.destroy(),this._componentRef.destroy(),this._viewContainerRef&&this._contentRef.viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef)),this._contentRef.viewRef&&this._contentRef.viewRef.destroy(),this._contentRef=null,this._componentRef=null,this._removeGlobalListener(),this.onHidden.emit(),this}toggle(){this.isShown?this.hide():this.show()}dispose(){this.isShown&&this.hide(),this._unsubscribePositioning(),this._unregisterListenersFn&&this._unregisterListenersFn()}listen(t){this.triggers=t.triggers||this.triggers,this._listenOpts.outsideClick=t.outsideClick,this._listenOpts.outsideEsc=t.outsideEsc,t.target=t.target||this._elementRef.nativeElement;const e=this._listenOpts.hide=()=>t.hide?t.hide():void this.hide(),n=this._listenOpts.show=e=>{t.show?t.show(e):this.show(e),e()};return this._unregisterListenersFn=Object(r.e)(this._renderer,{target:t.target,triggers:t.triggers,show:n,hide:e,toggle:t=>{this.isShown?e():n(t)}}),this}_removeGlobalListener(){this._globalListener&&(this._globalListener(),this._globalListener=null)}attachInline(t,e){return this._inlineViewRef=t.createEmbeddedView(e),this}_registerOutsideClick(){if(this._componentRef&&this._componentRef.location){if(this._listenOpts.outsideClick){const t=this._componentRef.location.nativeElement;setTimeout(()=>{this._globalListener=Object(r.h)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideClick:this._listenOpts.outsideClick,hide:()=>this._listenOpts.hide()})})}if(this._listenOpts.outsideEsc){const t=this._componentRef.location.nativeElement;this._globalListener=Object(r.g)(this._renderer,{targets:[t,this._elementRef.nativeElement],outsideEsc:this._listenOpts.outsideEsc,hide:()=>this._listenOpts.hide()})}}}getInnerComponent(){return this._innerComponent}_subscribePositioning(){!this._zoneSubscription&&this.attachment&&(this.onShown.subscribe(()=>{this._posService.position({element:this._componentRef.location,target:this._elementRef,attachment:this.attachment,appendToBody:"body"===this.container})}),this._zoneSubscription=this._ngZone.onStable.subscribe(()=>{this._componentRef&&this._posService.calcPosition()}))}_unsubscribePositioning(){this._zoneSubscription&&(this._zoneSubscription.unsubscribe(),this._zoneSubscription=null)}_getContentRef(t,e,n){if(!t)return new i([]);if(t instanceof a.TemplateRef){if(this._viewContainerRef){const n=this._viewContainerRef.createEmbeddedView(t,e);return n.markForCheck(),new i([n.rootNodes],n)}const n=t.createEmbeddedView({});return this._applicationRef.attachView(n),new i([n.rootNodes],n)}if("function"==typeof t){const e=this._componentFactoryResolver.resolveComponentFactory(t),r=a.Injector.create({providers:this._providers,parent:this._injector}),s=e.create(r);return Object.assign(s.instance,n),this._applicationRef.attachView(s.hostView),new i([[s.location.nativeElement]],s.hostView,s)}return new i([[this._renderer.createText(`${t}`)]])}}class o{constructor(t,e,n,a,r){this._componentFactoryResolver=t,this._ngZone=e,this._injector=n,this._posService=a,this._applicationRef=r}createLoader(t,e,n){return new s(e,n,t,this._injector,this._componentFactoryResolver,this._ngZone,this._applicationRef,this._posService)}}},z1FC:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["viensas secunds","'iensas secunds"],ss:[t+" secunds",t+" secunds"],m:["'n míut","'iens míut"],mm:[t+" míuts",t+" míuts"],h:["'n þora","'iensa þora"],hh:[t+" þoras",t+" þoras"],d:["'n ziua","'iensa ziua"],dd:[t+" ziuas",t+" ziuas"],M:["'n mes","'iens mes"],MM:[t+" mesen",t+" mesen"],y:["'n ar","'iens ar"],yy:[t+" ars",t+" ars"]};return a?r[n][0]:e?r[n][0]:r[n][1]}t.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(t){return"d'o"===t.toLowerCase()},meridiem:function(t,e,n){return t>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z3Vd:function(t,e,n){!function(t){"use strict";var e="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(t,n,a,r){var i=function(t){var n=Math.floor(t%1e3/100),a=Math.floor(t%100/10),r=t%10,i="";return n>0&&(i+=e[n]+"vatlh"),a>0&&(i+=(""!==i?" ":"")+e[a]+"maH"),r>0&&(i+=(""!==i?" ":"")+e[r]),""===i?"pagh":i}(t);switch(a){case"ss":return i+" lup";case"mm":return i+" tup";case"hh":return i+" rep";case"dd":return i+" jaj";case"MM":return i+" jar";case"yy":return i+" DIS"}}t.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==t.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==t.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"},past:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==t.indexOf("jar")?e.slice(0,-3)+"wen":-1!==t.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z5nN:function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return f}));var a=n("8Y7J"),r=n("LqlI"),i=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,2,"div",[["role","document"]],[[8,"className",0]],null,null,null,null)),(t()(),a["ɵeld"](1,0,null,null,1,"div",[["class","modal-content"]],null,null,null,null,null)),a["ɵncd"](null,0)],null,(function(t,e){var n=e.component;t(e,0,0,"modal-dialog"+(n.config.class?" "+n.config.class:""))}))}function o(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"modal-container",[["class","modal"],["role","dialog"],["tabindex","-1"]],[[1,"aria-modal",0]],[[null,"mousedown"],[null,"mouseup"],["window","keydown.esc"]],(function(t,e,n){var r=!0;return"mousedown"===e&&(r=!1!==a["ɵnov"](t,1).onClickStarted(n)&&r),"mouseup"===e&&(r=!1!==a["ɵnov"](t,1).onClickStop(n)&&r),"window:keydown.esc"===e&&(r=!1!==a["ɵnov"](t,1).onEsc(n)&&r),r}),s,i)),a["ɵdid"](1,245760,null,0,r.d,[r.f,a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),(function(t,e){t(e,0,0,!0)}))}var u=a["ɵccf"]("modal-container",r.d,o,{},{},["*"]),l=a["ɵcrt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["ɵvid"](0,[],null,null)}function c(t){return a["ɵvid"](0,[(t()(),a["ɵeld"](0,0,null,null,1,"bs-modal-backdrop",[["class","modal-backdrop"]],null,null,null,d,l)),a["ɵdid"](1,114688,null,0,r.c,[a.ElementRef,a.Renderer2],null,null)],(function(t,e){t(e,1,0)}),null)}var f=a["ɵccf"]("bs-modal-backdrop",r.c,c,{},{},[])},z6cu:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n("HDdC");function r(t,e){return new a.a(e?n=>e.schedule(i,0,{error:t,subscriber:n}):e=>e.error(t))}function i({error:t,subscriber:e}){e.error(t)}},zBJ4:function(t,e,n){var a=n("2oRo"),r=n("hh1v"),i=a.document,s=r(i)&&r(i.createElement);t.exports=function(t){return s?i.createElement(t):{}}},zEVN:function(t,e,n){var a=n("Gi0A"),r=n("sEf8"),i=n("mdPL"),s=i&&i.isMap,o=s?r(s):a;t.exports=o},zKZe:function(t,e,n){var a=n("I+eb"),r=n("YNrV");a({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},zUnb:function(t,e,n){"use strict";n.r(e);var a=n("tAZD"),r=n.n(a),i=n("SVse"),s=n("8Y7J");function o(){return localStorage.getItem("access_token")}const u=t=>{t=t||"en-US";try{return n("F+uO")(`./messages.${t}.xlf`).default}catch(e){return[]}};class l{}class d{constructor(){}}var c=n("EApP"),f=s["ɵcrt"]({encapsulation:2,styles:[],data:{animation:[{type:7,name:"flyInOut",definitions:[{type:0,name:"inactive",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:0,name:"active",styles:{type:6,styles:{opacity:1},offset:null},options:void 0},{type:0,name:"removed",styles:{type:6,styles:{opacity:0},offset:null},options:void 0},{type:1,expr:"inactive => active",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null},{type:1,expr:"active => removed",animation:{type:4,styles:null,timings:"{{ easeTime }}ms {{ easing }}"},options:null}],options:{}}]}});function h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"button",[["aria-label","Close"],["class","toast-close-button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.remove()&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"]))],null,null)}function g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](1,null,["[","]"]))],null,(function(t,e){t(e,1,0,e.component.duplicatesCount+1)}))}function p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,g)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.duplicatesCount)}),(function(t,e){var n=e.component;t(e,0,0,n.options.titleClass,n.title),t(e,1,0,n.title)}))}function b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message)}))}function m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,n.options.messageClass,n.message),t(e,1,0,n.message)}))}function y(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","toast-progress"]],[[4,"width",null]],null,null,null,null))],null,(function(t,e){t(e,1,0,e.component.width+"%")}))}function v(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,h)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,p)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,b)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,m)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,y)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.options.closeButton),t(e,3,0,n.title),t(e,5,0,n.message&&n.options.enableHtml),t(e,7,0,n.message&&!n.options.enableHtml),t(e,9,0,n.options.progressBar)}),null)}function x(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["toast-component",""]],[[8,"className",0],[40,"@flyInOut",0],[4,"display",null]],[[null,"click"],[null,"mouseenter"],[null,"mouseleave"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).tapToast()&&a),"mouseenter"===e&&(a=!1!==s["ɵnov"](t,1).stickAround()&&a),"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).delayedHideToast()&&a),a}),v,f)),s["ɵdid"](1,180224,null,0,c.c,[c.j,c.g,s.NgZone],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).toastClasses,s["ɵnov"](e,1).state,s["ɵnov"](e,1).displayStyle)}))}var _=s["ɵccf"]("[toast-component]",c.c,x,{},{},[]),T=n("pMnS"),O=n("jtHE");let w=(()=>{class t{}return t.START="start",t.STOP="stop",t.UPDATE="update",t.RESET="reset",t.UNSUBSCRIBE="unsubscribe",t})();class S{constructor(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new O.a,this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}getSettings(){return this.blockUISettings}updateSettings(t={}){this.blockUISettings=Object.assign({},this.blockUISettings,t)}decorate(t="block-ui-main"){const e={name:t,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,w.START,t),update:this.dispatch(this.blockUISubject,w.UPDATE,t),stop:this.dispatch(this.blockUISubject,w.STOP,t),reset:this.dispatch(this.blockUISubject,w.RESET,t),unsubscribe:this.dispatch(this.blockUISubject,w.UNSUBSCRIBE,t)};return this.blockUIInstances[t]=this.blockUIInstances[t]||e,e}observe(){return this.blockUIObservable}blockUIMiddleware({action:t,name:e}){let n=null;switch(t){case w.START:n=!0;break;case w.STOP:case w.RESET:n=!1}null!==n&&(this.blockUIInstances[e].isActive=n)}dispatch(t,e,n="block-ui-main"){return a=>{t.next({name:n,action:e,message:a})}}}class I{constructor(t){this.blockUI=t}ngOnInit(){this.name=this.name||"block-ui-main",this.template=this.template||this.blockUI.blockUISettings.template}}class N{constructor(t,e,n){this.blockUI=t,this.resolver=e,this.changeDetectionRef=n,this.name="block-ui-main",this.delayStart=0,this.delayStop=0,this.state={startTimeout:null,stopTimeout:null,blockCount:0},this.active=!1}ngOnInit(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())}ngAfterViewInit(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof s.TemplateRef)this.templateOutlet.createEmbeddedView(this.templateCmp);else{const t=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(t),this.updateBlockTemplate(this.message)}}catch(t){console.error("ng-block-ui:",t)}}ngAfterViewChecked(){this.detectChanges()}subscribeToBlockUI(t){return t.subscribe(t=>this.onDispatchedEvent(t))}onDispatchedEvent(t){switch(t.action){case w.START:this.onStart(t);break;case w.STOP:this.onStop(t);break;case w.UPDATE:this.onUpdate(t);break;case w.RESET:this.onReset();break;case w.UNSUBSCRIBE:this.onStop(t),this.onUnsubscribe(t.name)}}onStart({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;null===this.state.startTimeout&&(0===t?this.showBlock(e):this.state.startTimeout=setTimeout(()=>{this.showBlock(e)},t)),this.state.blockCount++,this.updateInstanceBlockCount()}}onStop({name:t}){if(t===this.name){const t=this.delayStop||this.settings.delayStop||0;this.state.blockCount>1?this.state.blockCount--:this.active?null===this.state.stopTimeout&&(0===t?this.hideBlock():this.state.stopTimeout=setTimeout(()=>{this.hideBlock()},t)):this.clearState(),this.updateInstanceBlockCount()}}onReset(){this.hideBlock()}onUpdate({name:t,message:e}){if(t===this.name){const t=this.delayStart||this.settings.delayStart||0;0===t?this.updateMessage(e):setTimeout(()=>{this.updateMessage(e)},t)}}updateMessage(t){this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}showBlock(t){this.active=!0,this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.detectChanges()}hideBlock(){this.clearState(),this.active=!1,this.detectChanges()}clearState(){null!=this.state.startTimeout&&clearTimeout(this.state.startTimeout),null!=this.state.stopTimeout&&clearTimeout(this.state.stopTimeout),this.state.blockCount=0,this.state.startTimeout=null,this.state.stopTimeout=null,this.updateInstanceBlockCount()}updateBlockTemplate(t){this.templateCompRef&&this.templateCompRef instanceof s.ComponentRef&&(this.templateCompRef.instance.message=t)}onUnsubscribe(t){this.blockUISubscription&&t===this.name&&this.blockUISubscription.unsubscribe()}updateInstanceBlockCount(){this.blockUI.blockUIInstances[this.name]&&(this.blockUI.blockUIInstances[this.name].blockCount=this.state.blockCount)}detectChanges(){this.changeDetectionRef.destroyed||this.changeDetectionRef.detectChanges()}ngOnDestroy(){this.onUnsubscribe(this.name)}}class C{constructor(t){this.blockUIInstance=t}start(t,e){this.dispatch(t,w.START,e)}stop(t){this.dispatch(t,w.STOP)}reset(t){this.dispatch(t,w.RESET)}unsubscribe(t){this.dispatch(t,w.UNSUBSCRIBE)}isActive(t=null){const e=t?this.toArray(t):null,n=this.blockUIInstance.blockUIInstances;return Object.keys(n).some(t=>e?e.indexOf(n[t].name)>=0&&n[t].isActive:n[t].isActive)}dispatch(t=[],e,n){this.toArray(t).forEach(t=>this.blockUIInstance.decorate(t)[e](n))}toArray(t=[]){return"string"==typeof t?[t]:t}}const R=new S,A=new s.InjectionToken("BlockUIModuleSettings");function k(t){return R.updateSettings(t),R}class E{static forRoot(t={}){return{ngModule:E,providers:[{provide:A,useValue:t},{provide:S,useFactory:k,deps:[A]},C]}}}function L(t){return function(e,n,a){e[n]=R.decorate(t)}}var D=s["ɵcrt"]({encapsulation:2,styles:[],data:{}});function P(t){return s["ɵvid"](0,[s["ɵncd"](null,0),(t()(),s["ɵeld"](1,0,null,null,1,"block-ui-content",[],null,null,null,B,j)),s["ɵdid"](2,12828672,null,0,N,[S,s.ComponentFactoryResolver,s.ChangeDetectorRef],{name:[0,"name"],delayStart:[1,"delayStart"],delayStop:[2,"delayStop"],defaultMessage:[3,"defaultMessage"],templateCmp:[4,"templateCmp"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.name,n.delayStart,n.delayStop,n.message,n.template)}),null)}function M(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui",[],null,null,null,P,D)),s["ɵdid"](1,114688,null,0,I,[S],null,null)],(function(t,e){t(e,1,0)}),null)}var q=s["ɵccf"]("block-ui",I,M,{name:"name",message:"message",delayStart:"delayStart",delayStop:"delayStop",template:"template"},{},["*"]),j=s["ɵcrt"]({encapsulation:2,styles:["\n.block-ui-wrapper {\n  display: none;\n  position: fixed;\n  height: 100%;\n  width: 100%;\n  top: 0;\n  left: 0;\n  background: rgba(0, 0, 0, 0.70);\n  z-index: 30000;\n  cursor: wait;\n}\n\n.block-ui-wrapper.block-ui-wrapper--element {\n  position: absolute;\n}\n\n.block-ui-wrapper.active {\n  display: block;\n}\n\n.block-ui-wrapper.block-ui-main {\n  position: fixed;\n}\n\n.block-ui-spinner,\n.block-ui-template {\n  position: absolute;\n  top: 40%;\n  margin: 0 auto;\n  left: 0;\n  right: 0;\n  transform: translateY(-50%);\n}\n\n.block-ui-spinner > .message {\n  font-size: 1.3em;\n  text-align: center;\n  color: #fff;\n}\n\n.block-ui__element {\n  position: relative;\n}\n\n.loader,\n.loader:after {\n  border-radius: 50%;\n  width: 10em;\n  height: 10em;\n}\n.loader {\n  margin: 7px auto;\n  font-size: 5px;\n  position: relative;\n  text-indent: -9999em;\n  border-top: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-right: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);\n  border-left: 1.1em solid #ffffff;\n  -webkit-transform: translateZ(0);\n  -ms-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-animation: load8 1.1s infinite linear;\n  animation: load8 1.1s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes load8 {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n"],data:{}});function F(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.message||n.defaultMessage)}))}function G(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","block-ui-spinner"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"div",[["class","loader"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,F)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.message||n.defaultMessage)}),null)}function V(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function z(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,[[1,3],["templateOutlet",2]],null,0,null,V)),(t()(),s["ɵand"](0,null,null,0))],null,null)}function B(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{templateOutlet:0}),(t()(),s["ɵeld"](1,0,null,null,7,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](4,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,G)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,z)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component,a=s["ɵinlineInterpolate"](2,"block-ui-wrapper ",n.name," ",n.className,""),r=t(e,4,0,n.active);t(e,3,0,a,r),t(e,6,0,!n.templateCmp),t(e,8,0,n.templateCmp)}),null)}function Y(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"block-ui-content",[],null,null,null,B,j)),s["ɵdid"](1,12828672,null,0,N,[S,s.ComponentFactoryResolver,s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}var H=s["ɵccf"]("block-ui-content",N,Y,{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:"message",templateCmp:"template"},{},[]),U=n("FE24"),W=n("z/SZ"),K=n("GS7A"),$=n("s7LF"),Z=n("+gVj"),J=n("LvDl"),Q=n("xj/R"),X=n("IheW");let tt=(()=>{class t{constructor(t,e){this.http=t,this.localeId=e}getLocale(){return this.localeId||"en-US"}setLocale(t){document.cookie=`cd-lang=${t}`}getLanguages(){return this.http.get("ui-api/langs")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](s.LOCALE_ID))},token:t,providedIn:"root"}),t})();var et=function(t){return t.cs="Čeština",t["de-DE"]="Deutsch",t["en-US"]="English",t["es-ES"]="Español",t["fr-FR"]="Français",t["id-ID"]="Bahasa Indonesia",t["it-IT"]="Italiano",t["ja-JP"]="日本語",t["ko-KR"]="한국어",t["pl-PL"]="Polski",t["pt-BR"]="Português (brasileiro)",t["zh-CN"]="中文 (简体)",t["zh-TW"]="中文 (繁體)",t}({});let nt={cs:Q.a,de:Q.b,es:Q.e,fr:Q.g,id:Q.m,it:Q.y,ja:Q.z,ko:Q.A,pl:Q.C,pt:Q.D,zh:Q.I};class at{constructor(t,e){this.localeService=t,this.languageService=e,this.isDropdown=!0,this.supportedLanguages=et}ngOnInit(){this.selectedLanguage=this.languageService.getLocale(),this.defineUsedLanguage(),this.languageService.getLanguages().subscribe(t=>{this.supportedLanguages=J.pick(this.supportedLanguages,t)})}defineUsedLanguage(){const t=this.selectedLanguage.slice(0,2);t in nt&&(Object(Q.c)(t,nt[t]),this.localeService.use(t))}reloadWindow(){window.location.reload()}changeLanguage(t){this.languageService.setLocale(t),this.reloadWindow()}}var rt=n("ienR"),it=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function st(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.changeLanguage(t.context.$implicit.key)&&a),a}),null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.value)}))}function ot(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,st)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,2,0,s["ɵunv"](e,2,0,s["ɵnov"](e,3).transform(n.supportedLanguages)))}),null)}function ut(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,7,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](2,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Select a Language"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,ot)),s["ɵdid"](7,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,2,0)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen),t(e,5,0,n.supportedLanguages[n.selectedLanguage])}))}function lt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.key),t(e,2,0,e.context.$implicit.key)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function dt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"change"===e&&(a=!1!==r.changeLanguage(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedLanguage=n)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](3,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,2,null,lt)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,3,0,n.selectedLanguage),t(e,8,0,s["ɵunv"](e,8,0,s["ɵnov"](e,9).transform(n.supportedLanguages)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function ct(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ut)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dt)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.isDropdown),t(e,3,0,!n.isDropdown)}),null)}var ft=n("quSY"),ht=n("oxzT"),gt=n("9nlD"),pt=n("mSOc");class bt{constructor(t,e){this.notificationService=t,this.summaryService=e,this.icons=ht.a,this.hasRunningTasks=!1,this.subs=new ft.a}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.hasRunningTasks=t.executing_tasks.length>0}))}ngOnDestroy(){this.subs.unsubscribe()}toggleSidebar(){this.notificationService.toggleSidebar()}}var mt=s["ɵcrt"]({encapsulation:0,styles:[[".running[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{color:#2b99a8}.running[_ngcontent-%COMP%]:hover   i[_ngcontent-%COMP%]{color:#fff}"]],data:{}});function yt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"a",[["title","Tasks and Notifications"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSidebar()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{running:0}),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"]))],(function(t,e){var n=e.component,a=t(e,3,0,n.hasRunningTasks);t(e,2,0,a);var r=t(e,7,0,n.icons.bell);t(e,6,0,r)}),null)}var vt=n("aexS"),xt=n("tz6c"),_t=function(t,e,n){this.name=t,this.version=e,this.os=n,this.type="browser"},Tt=function(t){this.version=t,this.type="node",this.name="node",this.os=process.platform},Ot=function(t,e,n,a){this.name=t,this.version=e,this.os=n,this.bot=a,this.type="bot-device"},wt=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},St=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,It=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["vivaldi",/Vivaldi\/([0-9\.]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/Edg\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],Nt=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Ct(t){var e=function(t){return""!==t&&It.reduce((function(e,n){var a=n[0];if(e)return e;var r=n[1].exec(t);return!!r&&[a,r]}),!1)}(t);if(!e)return null;var n=e[0],a=e[1];if("searchbot"===n)return new wt;var r=a[1]&&a[1].split(/[._]/).slice(0,3);r?r.length<3&&(r=function(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var a=Array(t),r=0;for(e=0;e<n;e++)for(var i=arguments[e],s=0,o=i.length;s<o;s++,r++)a[r]=i[s];return a}(r,function(t){for(var e=[],n=0;n<t;n++)e.push("0");return e}(3-r.length))):r=[];var i=r.join("."),s=function(t){for(var e=0,n=Nt.length;e<n;e++){var a=Nt[e],r=a[0];if(a[1].exec(t))return r}return null}(t),o=St.exec(t);return o&&o[1]?new Ot(n,i,s,o[1]):new _t(n,r.join("."),s)}var Rt=n("Mxhz"),At=n("sne2");class kt{constructor(t,e,n,a){this.modalRef=t,this.summaryService=e,this.userService=n,this.authStorageService=a,this.userPermission=this.authStorageService.getPermissions().user}ngOnInit(){this.copyright="Copyright(c) 2020 Ceph contributors.",this.projectConstants=At.c,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(t=>{const e=t.version.replace("ceph version ","").split(" ");this.hostAddr=t.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),this.versionNumber=e[0],this.versionHash=e[1],this.versionName=e.slice(2,e.length).join(" ")})}ngOnDestroy(){this.subs.unsubscribe()}setVariables(){const t={};t.user=localStorage.getItem("dashboard_username"),t.role="user",this.userPermission.read&&this.userService.get(t.user).subscribe(e=>{t.role=e.roles});const e="undefined"!=typeof navigator?Ct(navigator.userAgent):"undefined"!=typeof process&&process.version?new Tt(process.version.slice(1)):null;return t.browserName=e&&e.name?e.name:"Not detected",t.browserVersion=e&&e.version?e.version:"Not detected",t.browserOS=e&&e.os?e.os:"Not detected",t}}class Et{constructor(t,e,n){this.modalService=t,this.authStorageService=e,this.docService=n,this.icons=ht.a}ngOnInit(){this.docService.subscribeOnce("dashboard",t=>{this.docsUrl=t})}openAboutModal(){this.modalRef=this.modalService.show(kt),this.modalRef.setClass("modal-lg")}goToApiDocs(){this.docsFormElement.nativeElement.children[0].value=this.authStorageService.getToken(),this.docsFormElement.nativeElement.submit()}}var Lt=n("LqlI"),Dt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Pt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"a",[["class","dropdown-item text-capitalize"],["target","_blank"]],[[8,"href",4]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](5,{disabled:0}),(t()(),s["ɵted"](-1,null,["documentation"])),(t()(),s["ɵeld"](7,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.goToApiDocs()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["API"])),(t()(),s["ɵeld"](10,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.openAboutModal()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["About"]))],(function(t,e){var n=t(e,5,0,!e.component.docsUrl);t(e,4,0,"dropdown-item text-capitalize",n)}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.component.docsUrl,""))}))}function Mt(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{docsFormElement:0}),(t()(),s["ɵeld"](1,0,[[1,0],["docsForm",1]],null,1,"form",[["action","/docs"],["method","post"],["target","_blank"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"input",[["name","token"],["type","hidden"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](5,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](6,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Help"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,7).onClick()&&a),a}),null,null)),s["ɵdid"](7,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,1),(t()(),s["ɵeld"](12,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Help"])),(t()(),s["ɵand"](16777216,null,null,1,null,Pt)),s["ɵdid"](15,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,5,0);var a=t(e,11,0,n.icons.questionCircle);t(e,10,0,a)}),(function(t,e){t(e,3,0,s["ɵnov"](e,5).dropup,s["ɵnov"](e,5).isOpen,s["ɵnov"](e,5).isOpen&&s["ɵnov"](e,5).isBs4),t(e,6,0,!0,s["ɵnov"](e,7).isDisabled,s["ɵnov"](e,7).isOpen)}))}var qt=n("iInd");class jt{constructor(t){this.authStorageService=t,this.icons=ht.a;const e=this.authStorageService.getPermissions();this.userPermission=e.user,this.configOptPermission=e.configOpt}ngOnInit(){}}var Ft=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Gt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/user-management"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["User management"]))],(function(t,e){t(e,2,0,"/user-management")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function Vt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/telemetry"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Telemetry configuration"]))],(function(t,e){t(e,2,0,"/telemetry")}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function zt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Gt)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vt)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.userPermission.read),t(e,4,0,n.configOptPermission.read)}),null)}function Bt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](2,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Dashboard Settings"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard Settings"])),(t()(),s["ɵand"](16777216,null,null,1,null,zt)),s["ɵdid"](12,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.deepCheck);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}function Yt(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Bt)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.userPermission.read)}),null)}var Ht=n("DSvg");class Ut{constructor(t,e){this.authStorageService=t,this.authService=e,this.icons=ht.a}ngOnInit(){this.username=this.authStorageService.getUsername(),this.sso=this.authStorageService.isSSO()}logout(){this.authService.logout()}}var Wt=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Kt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"a",[["class","dropdown-item"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](2,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](3,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](5,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](6,1),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Change password"]))],(function(t,e){var n=e.component;t(e,2,0,"/user-profile/edit");var a=t(e,6,0,n.icons.lock);t(e,5,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).target,s["ɵnov"](e,2).href)}))}function $t(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"li",[["class","disabled"],["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"a",[["class","dropdown-item disabled"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Signed in as "])),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,0,"li",[["class","dropdown-divider"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Kt)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,null,7,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,6,"a",[["class","dropdown-item"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.logout()&&a),a}),null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](13,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](14,1),(t()(),s["ɵeld"](15,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sign out"]))],(function(t,e){var n=e.component;t(e,8,0,!n.sso);var a=t(e,14,0,n.icons.signOut);t(e,13,0,a)}),(function(t,e){t(e,5,0,e.component.username)}))}function Zt(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,12,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),s["ɵprd"](512,null,U.f,U.f,[]),s["ɵdid"](2,212992,null,0,U.c,[s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,U.f,U.a,K.b],null,null),(t()(),s["ɵeld"](3,0,null,null,7,"a",[["class","dropdown-toggle"],["dropdownToggle",""],["title","Logged in user"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,4).onClick()&&a),a}),null,null)),s["ɵdid"](4,147456,null,0,U.g,[s.ChangeDetectorRef,U.c,s.ElementRef,s.Renderer2,U.f],null,null),(t()(),s["ɵeld"](5,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1),(t()(),s["ɵeld"](9,0,null,null,1,"span",[["class","d-md-none"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Logged in user"])),(t()(),s["ɵand"](16777216,null,null,1,null,$t)),s["ɵdid"](12,16384,null,0,U.d,[U.f,s.ViewContainerRef,s.TemplateRef],null,null)],(function(t,e){var n=e.component;t(e,2,0);var a=t(e,8,0,n.icons.user);t(e,7,0,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,2).dropup,s["ɵnov"](e,2).isOpen,s["ɵnov"](e,2).isOpen&&s["ɵnov"](e,2).isBs4),t(e,3,0,!0,s["ɵnov"](e,4).isDisabled,s["ɵnov"](e,4).isOpen)}))}const Jt=[Object(K.h)({height:0,visibility:"hidden"}),Object(K.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(K.h)({height:"*",visibility:"visible"}))],Qt=[Object(K.h)({height:"*",visibility:"visible"}),Object(K.e)("400ms cubic-bezier(0.4,0.0,0.2,1)",Object(K.h)({height:0,visibility:"hidden"}))];class Xt{constructor(t,e,n){this._el=t,this._renderer=e,this.collapsed=new s.EventEmitter,this.collapses=new s.EventEmitter,this.expanded=new s.EventEmitter,this.expands=new s.EventEmitter,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapse=!0,this.isCollapsing=!1,this.isAnimated=!1,this._display="block",this._stylesLoaded=!1,this._COLLAPSE_ACTION_NAME="collapse",this._EXPAND_ACTION_NAME="expand",this._factoryCollapseAnimation=n.build(Qt),this._factoryExpandAnimation=n.build(Jt)}set display(t){this.isAnimated?(this._display=t,"none"!==t?this.show():this.hide()):this._renderer.setStyle(this._el.nativeElement,"display",t)}set collapse(t){this._player&&!this._isAnimationDone||(this.isExpanded=t,this.toggle())}get collapse(){return this.isExpanded}ngAfterViewChecked(){this._stylesLoaded=!0,this._player&&this._isAnimationDone&&(this._player.reset(),this._renderer.setStyle(this._el.nativeElement,"height","*"))}toggle(){this.isExpanded?this.hide():this.show()}hide(){this.isCollapsing=!0,this.isExpanded=!1,this.isCollapsed=!0,this.isCollapsing=!1,this.collapses.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._COLLAPSE_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.collapsed.emit(this),this._renderer.setStyle(this._el.nativeElement,"display","none")})}show(){this._renderer.setStyle(this._el.nativeElement,"display",this._display),this.isCollapsing=!0,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapsing=!1,this.expands.emit(this),this._isAnimationDone=!1,this.animationRun(this.isAnimated,this._EXPAND_ACTION_NAME)(()=>{this._isAnimationDone=!0,this.expanded.emit(this)})}animationRun(t,e){if(!t||!this._stylesLoaded)return t=>t();this._renderer.setStyle(this._el.nativeElement,"overflow","hidden"),this._renderer.addClass(this._el.nativeElement,"collapse");const n=e===this._EXPAND_ACTION_NAME?this._factoryExpandAnimation:this._factoryCollapseAnimation;return this._player&&this._player.destroy(),this._player=n.create(this._el.nativeElement),this._player.play(),t=>this._player.onDone(t)}}class te{static forRoot(){return{ngModule:te,providers:[]}}}class ee{transform(t){return"HEALTH_OK"===t?{color:"#00bb00"}:"HEALTH_WARN"===t?{color:"#ffa500"}:"HEALTH_ERR"===t?{color:"#ff0000"}:null}}var ne=n("MdoF"),ae=n("CNMR"),re=n("20UP"),ie=n("oMSZ");class se{constructor(t,e){this.settingsService=t,this.authStorageService=e,this.displayNotification=!1}ngOnInit(){this.settingsService.getStandardSettings().subscribe(t=>{this.pwdExpirationSettings=new ie.a(t);const e=this.authStorageService.getPwdExpirationDate();e&&(this.expirationDays=this.getExpirationDays(e),this.alertType=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning2?"danger":"warning",this.displayNotification=this.expirationDays<=this.pwdExpirationSettings.pwdExpirationWarning1,this.authStorageService.isPwdDisplayedSource.next(this.displayNotification))})}ngOnDestroy(){this.authStorageService.isPwdDisplayedSource.next(!1)}getExpirationDays(t){const e=new Date,n=new Date(1e3*t);return Math.floor((n.valueOf()-e.valueOf())/864e5)}close(){this.authStorageService.isPwdDisplayedSource.next(!1),this.displayNotification=!1}}var oe=s["ɵcrt"]({encapsulation:0,styles:[[".no-margin-bottom .alert{margin-bottom:0}"]],data:{}});function ue(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["less than 1"])),(t()(),s["ɵted"](-1,null,[" day. Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function le(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Your password will expire in "])),(t()(),s["ɵeld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),(t()(),s["ɵted"](-1,null,[" day(s). Click "])),(t()(),s["ɵeld"](5,0,null,null,2,"a",[["class","alert-link"],["routerLink","/user-profile/edit"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to change it now."]))],(function(t,e){t(e,6,0,"/user-profile/edit")}),(function(t,e){t(e,3,0,e.component.expirationDays),t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function de(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"alert",[["class","no-margin-bottom"]],null,[[null,"onClose"]],(function(t,e,n){var a=!0;return"onClose"===e&&(a=!1!==t.component.close(n)&&a),a}),ne.c,ne.b)),s["ɵdid"](1,114688,null,0,ae.a,[ae.b,s.ChangeDetectorRef],{type:[0,"type"],dismissible:[1,"dismissible"]},{onClose:"onClose"}),(t()(),s["ɵand"](16777216,null,0,1,null,ue)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,le)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,s["ɵinlineInterpolate"](1,"",n.alertType,""),!0),t(e,3,0,0===n.expirationDays),t(e,5,0,n.expirationDays>0)}),null)}function ce(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,de)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.displayNotification)}),null)}var fe=n("pL04");let he=(()=>{class t{constructor(t){this.http=t,this.url="api/mgr/module"}list(){return this.http.get(`${this.url}`)}getConfig(t){return this.http.get(`${this.url}/${t}`)}updateConfig(t,e){return this.http.put(`${this.url}/${t}`,{config:e})}enable(t){return this.http.post(`${this.url}/${t}/enable`,null)}disable(t){return this.http.post(`${this.url}/${t}/disable`,null)}getOptions(t){return this.http.get(`${this.url}/${t}/options`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})();var ge=n("mtw6");let pe=(()=>{class t{constructor(){this.visible=!1,this.update=new s.EventEmitter}setVisibility(t){this.visible=t,this.update.emit(t)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();class be{constructor(t,e,n,a,r,i){this.mgrModuleService=t,this.authStorageService=e,this.userService=n,this.notificationService=a,this.telemetryNotificationService=r,this.i18n=i,this.displayNotification=!1}ngOnInit(){if(this.telemetryNotificationService.update.subscribe(t=>{this.displayNotification=t}),!this.isNotificationHidden()){const t=this.authStorageService.getUsername();this.userService.get(t).subscribe(t=>{t.roles.includes("administrator")&&this.mgrModuleService.getConfig("telemetry").subscribe(t=>{t.enabled||this.telemetryNotificationService.setVisibility(!0)})})}}ngOnDestroy(){this.telemetryNotificationService.setVisibility(!1)}isNotificationHidden(){return"true"===localStorage.getItem("telemetry_notification_hidden")}close(){this.telemetryNotificationService.setVisibility(!1),localStorage.setItem("telemetry_notification_hidden","true"),this.notificationService.show(ge.a.success,this.i18n("Telemetry activation reminder muted"),this.i18n("You can activate the module on the Telemetry configuration page (<b>Dashboard Settings</b> -> <b>Telemetry configuration</b>) at any time."))}}var me=n("GiVz"),ye=s["ɵcrt"]({encapsulation:0,styles:[[".no-margin-bottom{margin-bottom:0}"]],data:{}});function ve(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"alert",[["class","no-margin-bottom"],["type","warning"]],null,[[null,"onClose"]],(function(t,e,n){var a=!0;return"onClose"===e&&(a=!1!==t.component.close(n)&&a),a}),ne.c,ne.b)),s["ɵdid"](1,114688,null,0,ae.a,[ae.b,s.ChangeDetectorRef],{type:[0,"type"],dismissible:[1,"dismissible"]},{onClose:"onClose"}),(t()(),s["ɵeld"](2,0,null,0,5,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The Telemetry module is not submitting telemetry data at the moment. Click "])),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","alert-link"],["routerLink","/telemetry"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["here"])),(t()(),s["ɵted"](-1,null,[" to activate it now."]))],(function(t,e){t(e,1,0,"warning",!0),t(e,5,0,"/telemetry")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function xe(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ve)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.displayNotification)}),null)}var _e=n("7qid"),Te=n("38Bd"),Oe=n("wd/R");class we{transform(t,e=!1){return e?Oe(t).fromNow():this._forHumans(t)}_forHumans(t){const e=[[`${Math.floor(t/31536e3)}`,"years"],[`${Math.floor(t%31536e3/86400)}`,"days"],[`${Math.floor(t%86400/3600)}`,"hours"],[`${Math.floor(t%3600/60)}`,"minutes"],[`${Math.floor(t%60)}`,"seconds"]];let n="";for(let a=0,r=e.length;a<r;a++)"0"!==e[a][0]&&(n+=" "+e[a][0]+" "+("1"===e[a][0]?e[a][1].substr(0,e[a][1].length-1):e[a][1]));return n.trim()||"1 second"}}var Se=n("a0VL"),Ie=n("moLw"),Ne=n("WF9J"),Ce=s["ɵcrt"]({encapsulation:2,styles:["[data-simplebar]{position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;flex-wrap:wrap;-webkit-box-pack:start;justify-content:flex-start;align-content:flex-start;-webkit-box-align:start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;visibility:visible;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;-webkit-box-flex:inherit;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;-webkit-transition:opacity linear;transition:opacity linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}","ngx-simplebar{display:block}"],data:{}});function Re(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","simplebar-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","simplebar-height-auto-observer-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"div",[["class","simplebar-height-auto-observer"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","simplebar-mask"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","simplebar-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","simplebar-content-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"div",[["class","simplebar-content"]],null,null,null,null,null)),s["ɵncd"](null,0),(t()(),s["ɵeld"](8,0,null,null,0,"div",[["class","simplebar-placeholder"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"div",[["class","simplebar-track simplebar-horizontal"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"div",[["class","simplebar-track simplebar-vertical"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,0,"div",[["class","simplebar-scrollbar"]],null,null,null,null,null))],null,null)}var Ae=n("O9Tv"),ke=n("G1I9"),Ee=n("lJxs");let Le=(()=>{class t{constructor(t,e){this.http=t,this.settingsService=e,this.baseURL="api/prometheus",this.settingsKey={alertmanager:"api/settings/alertmanager-api-host",prometheus:"api/settings/prometheus-api-host"}}ifAlertmanagerConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,t,e)}disableAlertmanagerConfig(){this.settingsService.disableSetting(this.settingsKey.alertmanager)}ifPrometheusConfigured(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,t,e)}disablePrometheusConfig(){this.settingsService.disableSetting(this.settingsKey.prometheus)}getAlerts(t={}){return this.http.get(this.baseURL,{params:t})}getSilences(t={}){return this.http.get(`${this.baseURL}/silences`,{params:t})}getRules(t="all"){return this.http.get(`${this.baseURL}/rules`).pipe(Object(Ee.a)(e=>(["alerting","rewrites"].includes(t)&&e.groups.map(e=>{e.rules=e.rules.filter(e=>e.type===t)}),e)))}setSilence(t){return this.http.post(`${this.baseURL}/silence`,t,{observe:"response"})}expireSilence(t){return this.http.delete(`${this.baseURL}/silence/${t}`,{observe:"response"})}getNotifications(t){return this.http.get(`${this.baseURL}/notifications?from=${t&&t.id?t.id:"last"}`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](re.a))},token:t,providedIn:fe.a}),t})(),De=(()=>{class t{constructor(t){this.notificationService=t}sendNotifications(t){t.forEach(t=>this.notificationService.show(t))}convertToCustomAlerts(t){return J.uniqWith(t.map(t=>({status:J.isObject(t.status)?t.status.state:this.getPrometheusNotificationStatus(t),name:t.labels.alertname,url:t.generatorURL,summary:t.annotations.summary,fingerprint:J.isObject(t.status)&&t.fingerprint})),J.isEqual)}getPrometheusNotificationStatus(t){const e=t.status;return"firing"===e?"active":e}convertAlertToNotification(t){return new ke.b(this.formatType(t.status),`${t.name} (${t.status})`,this.appendSourceLink(t,t.summary),void 0,"Prometheus")}formatType(t){return ge.a[J.findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},e=>e.includes(t))]}appendSourceLink(t,e){return`${e} <a href="${t.url}" target="_blank"><i class="${ht.a.lineChart}"></i></a>`}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](gt.a))},token:t,providedIn:"root"}),t})(),Pe=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.canAlertsBeNotified=!1,this.alerts=[],this.rules=[]}getAlerts(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getAlerts().subscribe(t=>this.handleAlerts(t),t=>{[404,504].includes(t.status)&&this.prometheusService.disableAlertmanagerConfig()})})}getRules(){this.prometheusService.ifPrometheusConfigured(()=>{this.prometheusService.getRules("alerting").subscribe(t=>{this.rules=t.groups.reduce((t,e)=>t.concat(e.rules.map(t=>(t.group=e.name,t))),[])})})}refresh(){this.getAlerts(),this.getRules()}handleAlerts(t){this.canAlertsBeNotified&&this.notifyOnAlertChanges(t,this.alerts),this.alerts=t,this.canAlertsBeNotified=!0}notifyOnAlertChanges(t,e){const n=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(t),this.alertFormatter.convertToCustomAlerts(e)).map(t=>this.alertFormatter.convertAlertToNotification(t));this.alertFormatter.sendNotifications(n)}getChangedAlerts(t,e){return J.differenceWith(t,e,J.isEqual).concat(this.getVanishedAlerts(t,e))}getVanishedAlerts(t,e){return J.differenceWith(e,t,(t,e)=>t.fingerprint===e.fingerprint).map(t=>(t.status="resolved",t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](De),s["ɵɵinject"](Le))},token:t,providedIn:"root"}),t})(),Me=(()=>{class t{constructor(t,e){this.alertFormatter=t,this.prometheusService=e,this.backendFailure=!1,this.notifications=[]}refresh(){this.backendFailure||this.prometheusService.getNotifications(J.last(this.notifications)).subscribe(t=>this.handleNotifications(t),()=>this.backendFailure=!0)}handleNotifications(t){0!==t.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(J.flatten(t.map(t=>this.formatNotification(t)))),this.notifications=this.notifications.concat(t))}formatNotification(t){return this.alertFormatter.convertToCustomAlerts(t.alerts).map(t=>this.alertFormatter.convertAlertToNotification(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](De),s["ɵɵinject"](Le))},token:t,providedIn:"root"}),t})();var qe=n("ufoC");class je{constructor(t,e,n,a,r,i,s,o){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.prometheusNotificationService=a,this.authStorageService=r,this.prometheusAlertService=i,this.ngZone=s,this.cdRef=o,this.isSidebarOpened=!1,this.executingTasks=[],this.subs=new ft.a,this.icons=ht.a,this.last_task="",this.mutex=new Ae.Mutex,this.simplebar={autoHide:!1},this.notifications=[]}ngOnDestroy(){window.clearInterval(this.interval),window.clearTimeout(this.timeout),this.subs.unsubscribe()}ngOnInit(){this.last_task=window.localStorage.getItem("last_task");const t=this.authStorageService.getPermissions();t.prometheus.read&&t.configOpt.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.triggerPrometheusAlerts()})},5e3)})),this.subs.add(this.notificationService.data$.subscribe(t=>{this.notifications=J.orderBy(t,["timestamp"],["desc"]),this.cdRef.detectChanges()})),this.subs.add(this.notificationService.sidebarSubject.subscribe(t=>{this.isSidebarOpened=!t&&!this.isSidebarOpened,window.clearTimeout(this.timeout),this.timeout=window.setTimeout(()=>{this.cdRef.detectChanges()},0)})),this.subs.add(this.summaryService.subscribe(t=>{this._handleTasks(t.executing_tasks),this.mutex.acquire().then(e=>{J.filter(t.finished_tasks,t=>!this.last_task||Oe(t.end_time).isAfter(this.last_task)).forEach(t=>{const e=this.notificationService.finishedTaskToNotification(t,t.success),n=new ke.a(e);n.timestamp=t.end_time,n.duration=t.duration,this.last_task&&!Oe(t.end_time).isAfter(this.last_task)||(this.last_task=t.end_time,window.localStorage.setItem("last_task",this.last_task)),this.notificationService.save(n)}),this.cdRef.detectChanges(),e()})}))}_handleTasks(t){for(const e of t)e.description=this.taskMessageService.getRunningTitle(e);this.executingTasks=t}triggerPrometheusAlerts(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()}removeAll(){this.notificationService.removeAll()}remove(t){this.notificationService.remove(t)}closeSidebar(){this.isSidebarOpened=!1}trackByFn(t){return t}}var Fe=s["ɵcrt"]({encapsulation:0,styles:[["[_nghost-%COMP%]{position:fixed;top:53px;bottom:10px;right:-350px;width:350px;max-width:90vw;z-index:9;transition:all .6s}.active[_nghost-%COMP%]{right:20px}.card[_ngcontent-%COMP%]{height:100%}ngx-simplebar[_ngcontent-%COMP%]{height:calc(100% - 42.2px)}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.btn-link[_ngcontent-%COMP%]   .fa-trash-o[_ngcontent-%COMP%]{color:#000}table[_ngcontent-%COMP%]{width:100%}.row[_ngcontent-%COMP%]{margin-left:0;margin-right:0}"]],data:{}});function Ge(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,27,"div",[["class","card tc_task border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,26,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[["class","text-info"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](7,2),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,4),(t()(),s["ɵeld"](16,0,null,null,12,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](19,null,["",""])),(t()(),s["ɵeld"](20,0,null,null,2,"div",[["class","progress mb-1"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,1,"progressbar",[["class","progress-striped active"],["max","100"]],[[1,"max",0],[2,"progress",null]],null,null,_e.b,_e.a)),s["ɵdid"](22,49152,null,0,Te.b,[Te.c],{animate:[0,"animate"],striped:[1,"striped"],value:[2,"value"],max:[3,"max"]},null),(t()(),s["ɵeld"](23,0,null,null,5,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,2,"small",[["class","date float-left"]],null,null,null,null,null)),(t()(),s["ɵted"](25,null,[" "," "])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"span",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵted"](28,null,[" "," % "])),(t()(),s["ɵeld"](29,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x);t(e,6,0,"text-info",a);var r=t(e,11,0,n.icons.stack2x,n.icons.circle);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.spinner,n.icons.spin,n.icons.inverse);t(e,14,0,i),t(e,22,0,!0,!0,e.context.$implicit.progress,"100")}),(function(t,e){t(e,19,0,e.context.$implicit.description),t(e,21,0,s["ɵnov"](e,22).max,s["ɵnov"](e,22).addClass);var n=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit.begin_time));t(e,25,0,n),t(e,28,0,e.context.$implicit.progress||0)}))}function Ve(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ge)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,n.executingTasks,n.trackByFn)}),null)}function ze(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"small",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration:"])),(t()(),s["ɵted"](4,null,[" "," "])),s["ɵpid"](0,we,[]),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(e.parent.context.$implicit.duration)))}))}function Be(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,37,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,35,"div",[["class","card tc_notification border-0 mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,34,"div",[["class","row no-gutters"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,12,"div",[["class","col-md-3 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,11,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,3),(t()(),s["ɵeld"](8,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](11,2),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,3),(t()(),s["ɵeld"](16,0,null,null,20,"div",[["class","col-md-9"]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,19,"div",[["class","card-body p-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,4,"button",[["class","btn btn-link float-right mt-0 pt-0"],["title","Remove notification"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.remove(t.context.index),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](21,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"h6",[["class","card-title bold"]],null,null,null,null,null)),(t()(),s["ɵted"](24,null,["",""])),(t()(),s["ɵeld"](25,0,null,null,0,"p",[["class","card-text"]],[[8,"innerHTML",1]],null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,10,"p",[["class","card-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ze)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](29,0,null,null,3,"small",[["class","date"]],[[8,"title",0]],null,null,null,null)),s["ɵppd"](30,1),(t()(),s["ɵted"](31,null,["",""])),s["ɵpid"](0,we,[]),(t()(),s["ɵeld"](33,0,null,null,3,"i",[["class","float-right custom-icon"]],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](35,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](36,1),(t()(),s["ɵeld"](37,0,null,null,0,"hr",[],null,null,null,null,null))],(function(t,e){var n=e.component,a=t(e,7,0,n.icons.stack,n.icons.large2x,e.context.$implicit.textClass);t(e,6,0,a);var r=t(e,11,0,n.icons.circle,n.icons.stack2x);t(e,10,0,r);var i=t(e,15,0,n.icons.stack1x,n.icons.inverse,e.context.$implicit.iconClass);t(e,14,0,i);var s=t(e,22,0,n.icons.trash);t(e,21,0,s),t(e,28,0,e.context.$implicit.duration);var o=t(e,36,0,e.context.$implicit.applicationClass);t(e,35,0,"float-right custom-icon",o)}),(function(t,e){t(e,24,0,e.context.$implicit.title),t(e,25,0,e.context.$implicit.message);var n=s["ɵunv"](e,29,0,t(e,30,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.timestamp));t(e,29,0,n),t(e,31,0,s["ɵunv"](e,31,0,s["ɵnov"](e,32).transform(e.context.$implicit.timestamp,!0))),t(e,33,0,e.context.$implicit.application)}))}function Ye(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"button",[["class","btn btn-light btn-block"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.removeAll(),a=!1!==n.stopPropagation()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,["   "])),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear notifications"])),(t()(),s["ɵeld"](9,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Be)),s["ɵdid"](11,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=t(e,5,0,n.icons.trash);t(e,4,0,a),t(e,11,0,n.notifications)}),null)}function He(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ye)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.notifications.length>0)}),null)}function Ue(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"div",[["class","message text-center"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["There are no notifications."]))],null,null)}function We(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ue)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,0===n.notifications.length&&0===n.executingTasks.length)}),null)}function Ke(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function $e(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ze(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Je(t){return s["ɵvid"](2,[s["ɵpid"](0,Se.a,[i.DatePipe]),(t()(),s["ɵand"](0,[["tasksTpl",2]],null,0,null,Ve)),(t()(),s["ɵand"](0,[["notificationsTpl",2]],null,0,null,He)),(t()(),s["ɵand"](0,[["emptyTpl",2]],null,0,null,We)),(t()(),s["ɵeld"](4,0,null,null,16,"div",[["class","card"]],null,[[null,"clickOutside"]],(function(t,e,n){var a=!0;return"clickOutside"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),s["ɵdid"](5,737280,null,0,Ie.ClickOutsideDirective,[s.ElementRef,s.NgZone,s.PLATFORM_ID],{clickOutsideEnabled:[0,"clickOutsideEnabled"]},{clickOutside:"clickOutside"}),(t()(),s["ɵeld"](6,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tasks and Notifications"])),(t()(),s["ɵeld"](9,0,null,null,2,"button",[["class","close float-right"],["tabindex","-1"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.closeSidebar()&&a),a}),null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](12,0,null,null,8,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,Re,Ce)),s["ɵdid"](13,4440064,null,0,Ne.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](14,0,null,0,6,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ke)),s["ɵdid"](16,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$e)),s["ɵdid"](18,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ze)),s["ɵdid"](20,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.isSidebarOpened),t(e,13,0,n.simplebar),t(e,16,0,s["ɵnov"](e,1)),t(e,18,0,s["ɵnov"](e,2)),t(e,20,0,s["ɵnov"](e,3))}),null)}var Qe=n("ej+x");class Xe{constructor(t,e,n,a,r){this.authStorageService=t,this.summaryService=e,this.featureToggles=n,this.telemetryNotificationService=a,this.prometheusAlertService=r,this.notifications=[],this.icons=ht.a,this.isCollapsed=!0,this.showMenuSidebar=!0,this.displayedSubMenu="",this.simplebar={autoHide:!1},this.subs=new ft.a,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}get class(){return"top-notification-"+this.notifications.length}ngOnInit(){this.subs.add(this.summaryService.subscribe(t=>{this.summaryData=t})),this.subs.add(this.authStorageService.isPwdDisplayed$.subscribe(t=>{this.showTopNotification("isPwdDisplayed",t)})),this.subs.add(this.telemetryNotificationService.update.subscribe(t=>{this.showTopNotification("telemetryNotificationEnabled",t)}))}ngOnDestroy(){this.subs.unsubscribe()}blockHealthColor(){if(this.summaryData&&this.summaryData.rbd_mirroring){if(this.summaryData.rbd_mirroring.errors>0)return{color:"#d9534f"};if(this.summaryData.rbd_mirroring.warnings>0)return{color:"#f0ad4e"}}}toggleSubMenu(t){this.displayedSubMenu=this.displayedSubMenu===t?"":t}showTopNotification(t,e){if(e)this.notifications.includes(t)||this.notifications.push(t);else{const e=this.notifications.indexOf(t);e>=0&&this.notifications.splice(e,1)}}}var tn=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";  .cd-navbar-top .cd-navbar-brand{background:#374249;border-top:4px solid #2b99a8}  .cd-navbar-top .cd-navbar-brand.isPwdDisplayed{top:37.6px}  .cd-navbar-top .cd-navbar-brand .navbar-brand,   .cd-navbar-top .cd-navbar-brand .navbar-brand:hover{color:#eee;height:auto;padding:0}  .cd-navbar-top .cd-navbar-brand .navbar-brand>img{height:25px}  .cd-navbar-top .cd-navbar-brand .navbar-toggler{border:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler:focus,   .cd-navbar-top .cd-navbar-brand .navbar-toggler:hover{outline:0}  .cd-navbar-top .cd-navbar-brand .navbar-toggler .fa-navicon{color:#eee}  .cd-navbar-top .cd-navbar-brand .navbar-collapse{padding:0}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>.active>a{color:#eee;background-color:#2b99a8}  .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:focus,   .cd-navbar-top .cd-navbar-brand .cd-navbar-utility>li>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}  .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a,   .cd-navbar-top .navbar-nav>li>a{color:#eee;line-height:1;padding:13.5px 18px!important;position:relative;display:block;text-decoration:none}  .cd-navbar-top .navbar-nav .nav-link,   .cd-navbar-top .navbar-nav .nav-link:hover{color:#eee}  .cd-navbar-top .navbar-nav>li:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown].open>a,   .cd-navbar-top .navbar-nav>li>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>li>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>[dropdown]>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:focus,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>a:hover,   .cd-navbar-top .navbar-nav>.open>.cd-navbar>li>a:focus,   .cd-navbar-top .navbar-nav>.open>a,   .cd-navbar-top .navbar-nav>.open>a:focus,   .cd-navbar-top .navbar-nav>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}@media (min-width:768px){  .cd-navbar-top .cd-navbar-utility{border-bottom:0;position:absolute;right:0;top:0;font-size:1.1rem}}@media (max-width:calc(768px - 1px)){  .cd-navbar-top .navbar-nav{margin:0}  .cd-navbar-top .navbar-nav .fa{margin-right:.5em}  .cd-navbar-top .navbar-nav .open .dropdown-menu{border:0;padding-top:0;padding-bottom:0;background-color:#2b99a8}  .cd-navbar-top .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 35px;color:#eee}  .cd-navbar-top .navbar-nav .open .dropdown-menu>.active>a{background-color:#2b99a8}  .cd-navbar-top .navbar-nav>li>a:hover{background-color:#2b99a8}}.cd-navbar-primary[_ngcontent-%COMP%]   .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:focus, .cd-navbar-primary[_ngcontent-%COMP%] > .active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]:hover{color:#eee!important;background-color:#2b99a8!important;border:0!important}.wrapper[_ngcontent-%COMP%]{display:flex;width:100%}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]{width:200px;top:43px;background:#374249;overflow-y:auto;position:fixed;bottom:0;left:0;z-index:999;color:#fff;transition:all .3s}.wrapper[_ngcontent-%COMP%]   #sidebar.active[_ngcontent-%COMP%]{margin-left:-200px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul.component[_ngcontent-%COMP%]{padding:20px 0;margin:0}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{color:#fff;padding:10px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{padding:10px;font-size:1.1em;display:block;color:#fff;text-decoration:none}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{color:#fff;background:#2b99a8}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%] > .badge[_ngcontent-%COMP%]{margin-left:5px}.wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li.active[_ngcontent-%COMP%] > a[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]   #sidebar[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]   a[aria-expanded=true][_ngcontent-%COMP%]{color:#fff}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]{position:relative}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[_ngcontent-%COMP%]::after{position:absolute;right:20px;content:"";font-family:ForkAwesome;border:0;font-size:1rem;transition:transform .3s ease-in-out}.wrapper[_ngcontent-%COMP%]   a.dropdown-toggle[aria-expanded=true][_ngcontent-%COMP%]::after{transform:rotate(90deg)}.wrapper[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{font-size:.9em!important;padding-left:30px!important;background:#4d5c66}.wrapper[_ngcontent-%COMP%]   .cd-navbar-primary[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:focus{outline:0}.wrapper[_ngcontent-%COMP%]   ngx-simplebar[_ngcontent-%COMP%]{height:100%}#content[_ngcontent-%COMP%]{width:calc(100% - 200px);transition:all .3s;position:absolute;top:43px;bottom:0;right:0}#content.active[_ngcontent-%COMP%]{width:100vw}.top-notification-1[_nghost-%COMP%]   .cd-navbar-top[_ngcontent-%COMP%]   .cd-navbar-brand[_ngcontent-%COMP%]{top:37.6px}.top-notification-1[_nghost-%COMP%]   #sidebar[_ngcontent-%COMP%]{top:80.6px}.top-notification-1[_nghost-%COMP%]   #content[_ngcontent-%COMP%]{top:80.6px}.top-notification-1[_nghost-%COMP%]   cd-notifications-sidebar[_ngcontent-%COMP%]{top:90.6px}.top-notification-2[_nghost-%COMP%]   .cd-navbar-top[_ngcontent-%COMP%]   .cd-navbar-brand[_ngcontent-%COMP%]{top:75.2px}.top-notification-2[_nghost-%COMP%]   #sidebar[_ngcontent-%COMP%]{top:118.2px}.top-notification-2[_nghost-%COMP%]   #content[_ngcontent-%COMP%]{top:118.2px}.top-notification-2[_nghost-%COMP%]   cd-notifications-sidebar[_ngcontent-%COMP%]{top:128.2px}']],data:{}});function en(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function nn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function an(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-language-selector",[["class","cd-navbar"]],null,null,null,ct,it)),s["ɵdid"](2,114688,null,0,at,[rt.l,tt],null,null),(t()(),s["ɵeld"](3,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"cd-notifications",[["class","cd-navbar"]],null,null,null,yt,mt)),s["ɵdid"](5,245760,null,0,bt,[gt.a,pt.a],null,null),(t()(),s["ɵeld"](6,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"cd-dashboard-help",[["class","cd-navbar"]],null,null,null,Mt,Dt)),s["ɵdid"](8,114688,null,0,Et,[Lt.b,vt.a,xt.a],null,null),(t()(),s["ɵeld"](9,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,1,"cd-administration",[["class","cd-navbar"]],null,null,null,Yt,Ft)),s["ɵdid"](11,114688,null,0,jt,[vt.a],null,null),(t()(),s["ɵeld"](12,0,null,null,2,"li",[["class","nav-item "]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"cd-identity",[["class","cd-navbar"]],null,null,null,Zt,Wt)),s["ɵdid"](14,114688,null,0,Ut,[vt.a,Ht.a],null,null)],(function(t,e){t(e,2,0),t(e,5,0),t(e,8,0),t(e,11,0),t(e,14,0)}),null)}function rn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,5,{links:1}),s["ɵqud"](603979776,6,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/hosts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[6,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Hosts"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/hosts")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function sn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_inventory"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,7,{links:1}),s["ɵqud"](603979776,8,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/inventory"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[8,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Inventory"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/inventory")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function on(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_monitor"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,9,{links:1}),s["ɵqud"](603979776,10,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/monitor/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[10,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Monitors"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/monitor/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function un(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_services"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,11,{links:1}),s["ɵqud"](603979776,12,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/services/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[12,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Services"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/services/")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function ln(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_osds"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,13,{links:1}),s["ɵqud"](603979776,14,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/osd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[14,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["OSDs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/osd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function dn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_configuration"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,15,{links:1}),s["ɵqud"](603979776,16,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/configuration"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[16,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Configuration"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/configuration")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function cn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_crush"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,17,{links:1}),s["ɵqud"](603979776,18,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/crush-map"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[18,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["CRUSH map"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/crush-map")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function fn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_modules"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,19,{links:1}),s["ɵqud"](603979776,20,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/mgr-modules"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[20,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Manager modules"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/mgr-modules")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function hn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_log"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,21,{links:1}),s["ɵqud"](603979776,22,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[22,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/logs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function gn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.component.prometheusAlertService.alerts.length)}))}function pn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"li",[["class","tc_submenuitem tc_submenuitem_monitoring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,23,{links:1}),s["ɵqud"](603979776,24,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,5,"a",[["routerLink","/monitoring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[24,4],[4,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Monitoring"])),(t()(),s["ɵand"](16777216,null,null,1,null,gn)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/monitoring"),t(e,9,0,n.prometheusAlertService.alerts.length>0)}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function bn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,"li",[["class","nav-item tc_menuitem_cluster"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,3,{links:1}),s["ɵqud"](603979776,4,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("cluster")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](7,0,null,null,21,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rn)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sn)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,on)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,un)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ln)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dn)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cn)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fn)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hn)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pn)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"cluster"!==n.displayedSubMenu),t(e,10,0,n.permissions.hosts.read),t(e,12,0,n.permissions.hosts.read),t(e,14,0,n.permissions.monitor.read),t(e,16,0,n.permissions.hosts.read),t(e,18,0,n.permissions.osd.read),t(e,20,0,n.permissions.configOpt.read),t(e,22,0,n.permissions.osd.read),t(e,24,0,n.permissions.configOpt.read),t(e,26,0,n.permissions.log.read),t(e,28,0,n.permissions.prometheus.read)}),(function(t,e){t(e,4,0,"cluster"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing)}))}function mn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_pool"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,25,{links:1}),s["ɵqud"](603979776,26,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/pool"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[26,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Pools"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/pool")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function yn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_images"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,29,{links:1}),s["ɵqud"](603979776,30,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/rbd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[30,4],[28,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Images"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/rbd")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function vn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)}))}function xn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"small",[["class","badge badge-danger"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors)}))}function _n(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"li",[["class","tc_submenuitem tc_submenuitem_block_mirroring"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,31,{links:1}),s["ɵqud"](603979776,32,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,7,"a",[["routerLink","/block/mirroring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[32,4],[28,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Mirroring"])),(t()(),s["ɵand"](16777216,null,null,1,null,vn)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xn)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,5,0,"/block/mirroring"),t(e,9,0,0!==(null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)),t(e,11,0,0!==(null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors))}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Tn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_block_iscsi"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,33,{links:1}),s["ɵqud"](603979776,34,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["routerLink","/block/iscsi"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[34,4],[28,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["iSCSI"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/iscsi")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function On(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"li",[["class","nav-item tc_menuitem_block"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,27,{links:1}),s["ɵqud"](603979776,28,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,4,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("block")&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),(t()(),s["ɵeld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Block"])),(t()(),s["ɵeld"](9,0,null,null,7,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](10,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yn)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_n)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tn)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,6,0,n.blockHealthColor()),t(e,10,0,!0,"block"!==n.displayedSubMenu),t(e,12,0,n.permissions.rbdImage.read&&e.parent.context.ngIf.rbd),t(e,14,0,n.permissions.rbdMirroring.read&&e.parent.context.ngIf.mirroring),t(e,16,0,n.permissions.iscsi.read&&e.parent.context.ngIf.iscsi)}),(function(t,e){t(e,4,0,"block"==e.component.displayedSubMenu),t(e,9,0,s["ɵnov"](e,10).isCollapse,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isExpanded,s["ɵnov"](e,10).isCollapsed,s["ɵnov"](e,10).isCollapsing)}))}function wn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_nfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,35,{links:1}),s["ɵqud"](603979776,36,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/nfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[36,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["NFS"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/nfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function Sn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[["class","nav-item tc_menuitem_cephfs"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,37,{links:1}),s["ɵqud"](603979776,38,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["class","nav-link"],["routerLink","/cephfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](5,671744,[[38,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Filesystems"]))],(function(t,e){t(e,1,0,"active"),t(e,5,0,"/cephfs")}),(function(t,e){t(e,4,0,s["ɵnov"](e,5).target,s["ɵnov"](e,5).href)}))}function In(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"li",[["class","nav-item tc_menuitem_rgw"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](1,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,39,{links:1}),s["ɵqud"](603979776,40,{linksWithHrefs:1}),(t()(),s["ɵeld"](4,0,null,null,2,"a",[["aria-controls","collapseBasic"],["class","nav-link dropdown-toggle"]],[[1,"aria-expanded",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleSubMenu("rgw")&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"])),(t()(),s["ɵeld"](7,0,null,null,22,"ul",[["class","list-unstyled"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](8,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{isAnimated:[0,"isAnimated"],collapse:[1,"collapse"]},null),(t()(),s["ɵeld"](9,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_daemons"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](10,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,41,{links:1}),s["ɵqud"](603979776,42,{linksWithHrefs:1}),(t()(),s["ɵeld"](13,0,null,null,2,"a",[["routerLink","/rgw/daemon"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,14).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](14,671744,[[42,4],[40,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](16,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_users"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](17,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,43,{links:1}),s["ɵqud"](603979776,44,{linksWithHrefs:1}),(t()(),s["ɵeld"](20,0,null,null,2,"a",[["routerLink","/rgw/user"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](21,671744,[[44,4],[40,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Users"])),(t()(),s["ɵeld"](23,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_buckets"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](24,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,45,{links:1}),s["ɵqud"](603979776,46,{linksWithHrefs:1}),(t()(),s["ɵeld"](27,0,null,null,2,"a",[["routerLink","/rgw/bucket"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,28).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](28,671744,[[46,4],[40,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Buckets"]))],(function(t,e){var n=e.component;t(e,1,0,"active"),t(e,8,0,!0,"rgw"!==n.displayedSubMenu),t(e,10,0,"active"),t(e,14,0,"/rgw/daemon"),t(e,17,0,"active"),t(e,21,0,"/rgw/user"),t(e,24,0,"active"),t(e,28,0,"/rgw/bucket")}),(function(t,e){t(e,4,0,"rgw"==e.component.displayedSubMenu),t(e,7,0,s["ɵnov"](e,8).isCollapse,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isExpanded,s["ɵnov"](e,8).isCollapsed,s["ɵnov"](e,8).isCollapsing),t(e,13,0,s["ɵnov"](e,14).target,s["ɵnov"](e,14).href),t(e,20,0,s["ɵnov"](e,21).target,s["ɵnov"](e,21).href),t(e,27,0,s["ɵnov"](e,28).target,s["ɵnov"](e,28).href)}))}function Nn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,15,"li",[["class","nav-item tc_menuitem_dashboard"],["routerLinkActive","active"]],null,null,null,null,null)),s["ɵdid"](2,1720320,null,2,qt.o,[qt.m,s.ElementRef,s.Renderer2,[2,qt.n],[2,qt.p]],{routerLinkActive:[0,"routerLinkActive"]},null),s["ɵqud"](603979776,1,{links:1}),s["ɵqud"](603979776,2,{linksWithHrefs:1}),(t()(),s["ɵeld"](5,0,null,null,11,"a",[["class","nav-link"],["routerLink","/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](6,671744,[[2,4]],0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Dashboard"])),(t()(),s["ɵted"](-1,null,["  "])),(t()(),s["ɵeld"](10,0,null,null,6,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](12,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](13,1),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](15,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](16,1),(t()(),s["ɵand"](16777216,null,null,1,null,bn)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mn)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,On)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wn)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sn)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,In)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"active"),t(e,6,0,"/dashboard");var a=t(e,13,0,n.icons.health);t(e,12,0,a);var r=s["ɵunv"](e,15,0,t(e,16,0,s["ɵnov"](e.parent.parent,0),null==n.summaryData?null:n.summaryData.health_status));t(e,15,0,r),t(e,18,0,n.permissions.hosts.read||n.permissions.monitor.read||n.permissions.osd.read||n.permissions.configOpt.read||n.permissions.log.read||n.permissions.prometheus.read),t(e,20,0,n.permissions.pool.read),t(e,22,0,(n.permissions.rbdImage.read||n.permissions.rbdMirroring.read||n.permissions.iscsi.read)&&(e.context.ngIf.rbd||e.context.ngIf.mirroring||e.context.ngIf.iscsi)),t(e,24,0,n.permissions.nfs.read&&e.context.ngIf.nfs),t(e,26,0,n.permissions.cephfs.read&&e.context.ngIf.cephfs),t(e,28,0,n.permissions.rgw.read&&e.context.ngIf.rgw)}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).target,s["ɵnov"](e,6).href)}))}function Cn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,2,null,Nn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef]),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,1,0,s["ɵunv"](e,1,0,s["ɵnov"](e,2).transform(n.enabledFeature$)))}),null)}function Rn(t){return s["ɵvid"](0,[s["ɵpid"](0,ee,[]),(t()(),s["ɵeld"](1,0,null,null,1,"cd-pwd-expiration-notification",[],null,null,null,ce,oe)),s["ɵdid"](2,245760,null,0,se,[re.a,vt.a],null,null),(t()(),s["ɵeld"](3,0,null,null,1,"cd-telemetry-notification",[],null,null,null,xe,ye)),s["ɵdid"](4,245760,null,0,be,[he,vt.a,Rt.a,gt.a,pe,me.a],null,null),(t()(),s["ɵeld"](5,0,null,null,1,"cd-notifications-sidebar",[],[[2,"active",null]],null,null,Je,Fe)),s["ɵdid"](6,245760,null,0,je,[gt.a,pt.a,qe.a,Me,vt.a,Pe,s.NgZone,s.ChangeDetectorRef],null,null),(t()(),s["ɵeld"](7,0,null,null,15,"div",[["class","cd-navbar-top"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,14,"nav",[["class","navbar fixed-top navbar-expand-md navbar-dark cd-navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"button",[["class","btn btn-link py-0"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.showMenuSidebar=!r.showMenuSidebar)&&a),a}),null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-bars fa-2x"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","navbar-brand ml-2"],["href","#"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,0,"img",[["alt","Ceph"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,4,"button",[["class","navbar-toggler"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.isCollapsed=!r.isCollapsed)&&a),a}),null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Toggle navigation"])),(t()(),s["ɵeld"](16,0,null,null,1,"span",[["class",""]],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,0,"i",[["class","fa fa-navicon fa-lg"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,4,"div",[["class","collapse navbar-collapse"]],[[2,"collapse",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),s["ɵdid"](19,8404992,null,0,Xt,[s.ElementRef,s.Renderer2,K.b],{collapse:[0,"collapse"]},null),(t()(),s["ɵeld"](20,0,null,null,2,"ul",[["class","nav navbar-nav cd-navbar-utility my-2 my-md-0"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,en)),s["ɵdid"](22,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](23,0,null,null,14,"div",[["class","wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,8,"nav",[["id","sidebar"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](26,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](27,{active:0}),(t()(),s["ɵeld"](28,0,null,null,4,"ngx-simplebar",[["data-simplebar","init"]],null,null,null,Re,Ce)),s["ɵdid"](29,4440064,null,0,Ne.a,[s.ElementRef],{options:[0,"options"]},null),(t()(),s["ɵeld"](30,0,null,0,2,"ul",[["class","list-unstyled components cd-navbar-primary"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,nn)),s["ɵdid"](32,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](33,0,null,null,4,"div",[["id","content"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](35,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](36,{active:0}),s["ɵncd"](null,0),(t()(),s["ɵand"](0,[["cd_utilities",2]],null,0,null,an)),(t()(),s["ɵand"](0,[["cd_menu",2]],null,0,null,Cn))],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0),t(e,6,0),t(e,19,0,n.isCollapsed),t(e,22,0,s["ɵnov"](e,38));var a=t(e,27,0,!n.showMenuSidebar);t(e,26,0,a),t(e,29,0,n.simplebar),t(e,32,0,s["ɵnov"](e,39));var r=t(e,36,0,!n.showMenuSidebar);t(e,35,0,r)}),(function(t,e){t(e,5,0,s["ɵnov"](e,6).isSidebarOpened),t(e,18,0,s["ɵnov"](e,19).isCollapse,s["ɵnov"](e,19).isExpanded,s["ɵnov"](e,19).isExpanded,s["ɵnov"](e,19).isExpanded,s["ɵnov"](e,19).isCollapsed,s["ɵnov"](e,19).isCollapsing)}))}var An=n("LRne"),kn=n("HDdC"),En=n("Cfvw"),Ln=n("pLZG"),Dn=n("5+tZ"),Pn=n("l7GE"),Mn=n("ZUHj");class qn{constructor(t,e){this.keySelector=t,this.flushes=e}call(t,e){return e.subscribe(new jn(t,this.keySelector,this.flushes))}}class jn extends Pn.a{constructor(t,e,n){super(t),this.keySelector=e,this.values=new Set,n&&this.add(Object(Mn.a)(this,n))}notifyNext(t,e,n,a,r){this.values.clear()}notifyError(t,e){this._error(t)}_next(t){this.keySelector?this._useKeySelector(t):this._finalizeNext(t,t)}_useKeySelector(t){let e;const{destination:n}=this;try{e=this.keySelector(t)}catch(a){return void n.error(a)}this._finalizeNext(e,t)}_finalizeNext(t,e){const{values:n}=this;n.has(t)||(n.add(t),this.destination.next(e))}}var Fn=n("128B");function Gn(t,e,n){return 0===n?[e]:(t.push(e),t)}function Vn(){return Object(Fn.a)(Gn,[])}var zn=n("SxV6"),Bn=n("GyhO");class Yn{resolve(t){const e=t.routeConfig.data,n=null===e.path?null:this.getFullPath(t),a=[{text:"string"==typeof e.breadcrumbs?e.breadcrumbs:e.breadcrumbs.text||e.text||n,path:n}];return Object(An.a)(a)}getFullPath(t){return t.pathFromRoot.reduce((t,e)=>t+e.url.reduce((t,e)=>t+"/"+e.path,""),"")}}class Hn{constructor(t,e){this.router=t,this.injector=e,this.crumbs=[],this.finished=!1,this.defaultResolver=new Yn,this.subscription=this.router.events.pipe(Object(Ln.a)(t=>t instanceof qt.e)).subscribe(()=>{this.finished=!1}),this.subscription=this.router.events.pipe(Object(Ln.a)(t=>t instanceof qt.d)).subscribe(()=>{var e;this._resolveCrumbs(t.routerState.snapshot.root).pipe(Object(Dn.a)(t=>t),(e=t=>t.text,t=>t.lift(new qn(e,void 0))),Vn(),Object(Dn.a)(t=>{const e=this.postProcess(t);return this.wrapIntoObservable(e).pipe(Object(zn.a)())})).subscribe(t=>{this.finished=!0,this.crumbs=t})})}ngOnDestroy(){this.subscription.unsubscribe()}_resolveCrumbs(t){let e;const n=t.routeConfig&&t.routeConfig.data;if(n&&n.breadcrumbs){let a;a=n.breadcrumbs.prototype instanceof Yn?this.injector.get(n.breadcrumbs):this.defaultResolver;const r=a.resolve(t);e=this.wrapIntoObservable(r).pipe(Object(zn.a)())}else e=Object(An.a)([]);return t.firstChild&&(e=e.pipe(function(...t){return e=>e.lift.call(Object(Bn.a)(e,...t))}(this._resolveCrumbs(t.firstChild)))),e}postProcess(t){const e=[];return t.forEach(t=>{const n=t.text.split("/");if(n.length>1){t.text=n[n.length-1];for(let t=0;t<n.length-1;t++)e.push({text:n[t],path:null})}e.push(t)}),e}isPromise(t){return t&&"function"==typeof t.then}wrapIntoObservable(t){return t instanceof kn.a?t:this.isPromise(t)?Object(En.a)(Promise.resolve(t)):Object(An.a)(t)}}var Un=s["ɵcrt"]({encapsulation:0,styles:[['@charset "UTF-8";.breadcrumb[_ngcontent-%COMP%]{padding:8px 0;background-color:transparent;border-radius:0;margin-top:8px}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{padding:0 5px 0 7px;color:#474544;font-family:ForkAwesome;content:""}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:#474544}']],data:{}});function Wn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[["preserveFragment",""]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{preserveFragment:[0,"preserveFragment"],routerLink:[1,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,"",e.parent.context.$implicit.path)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,e.parent.context.$implicit.text)}))}function Kn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.text)}))}function $n(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"li",[["class","breadcrumb-item"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](3,{active:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Wn)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kn)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=t(e,3,0,e.context.last&&e.component.finished);t(e,2,0,"breadcrumb-item",n),t(e,5,0,!e.context.last&&null!==e.context.$implicit.path),t(e,7,0,e.context.last||null===e.context.$implicit.path)}),null)}function Zn(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"ol",[["class","breadcrumb"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,$n)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.crumbs)}),null)}function Jn(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Zn)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.crumbs.length)}),null)}var Qn=n("978R"),Xn=n("VXsX");const ta=()=>Object.assign(new Qn.a,{container:"body"});class ea{constructor(t,e,n){this.router=t,this.summaryService=e,this.taskManagerService=n,this.subs=new ft.a}ngOnInit(){this.subs.add(this.summaryService.startPolling()),this.subs.add(this.taskManagerService.init(this.summaryService))}ngOnDestroy(){this.subs.unsubscribe()}isDashboardPage(){return"/dashboard"===this.router.url}}var na=s["ɵcrt"]({encapsulation:0,styles:[[".dashboard[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;padding:0}.container-fluid[_ngcontent-%COMP%]{overflow:auto}  #toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function aa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"block-ui",[],null,null,null,P,D)),s["ɵdid"](1,114688,null,0,I,[S],null,null),(t()(),s["ɵeld"](2,0,null,0,9,"cd-navigation",[],[[8,"className",0]],null,null,Rn,tn)),s["ɵdid"](3,245760,null,0,Xe,[vt.a,pt.a,Qe.a,pe,Pe],null,null),(t()(),s["ɵeld"](4,0,null,0,7,"div",[["class","container-fluid h-100"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{dashboard:0}),(t()(),s["ɵeld"](8,0,null,null,1,"cd-breadcrumbs",[],null,null,null,Jn,Un)),s["ɵdid"](9,180224,null,0,Hn,[qt.m,s.Injector],null,null),(t()(),s["ɵeld"](10,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](11,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){var n=e.component;t(e,1,0),t(e,3,0);var a=t(e,7,0,n.isDashboardPage());t(e,6,0,"container-fluid h-100",a),t(e,11,0)}),(function(t,e){t(e,2,0,s["ɵnov"](e,3).class)}))}function ra(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-workbench-layout",[],null,null,null,aa,na)),s["ɵprd"](5120,null,Qn.a,ta,[]),s["ɵdid"](2,245760,null,0,ea,[qt.m,pt.a,Xn.a],null,null)],(function(t,e){t(e,2,0)}),null)}var ia=s["ɵccf"]("cd-workbench-layout",ea,ra,{},{},[]),sa=n("pKUh"),oa=n("2ZVE"),ua=n("KOzp"),la=n("2uy1");class da{constructor(){this.cardClass=""}}var ca=s["ɵcrt"]({encapsulation:0,styles:[[".card[_ngcontent-%COMP%]{height:100%;border:.5px solid #ddd;border-radius:3px;box-shadow:0 1px 1px rgba(3,3,3,.175);font-size:12px}@media screen and (min-width:320px){.card[_ngcontent-%COMP%]{font-size:calc(12px + 9 * ((100vw - 320px)/ 1728))}}@media screen and (min-width:2048px){.card[_ngcontent-%COMP%]{font-size:21px}}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]{padding-top:40px!important}.card[_ngcontent-%COMP%]   .card-body[_ngcontent-%COMP%]   .card-title[_ngcontent-%COMP%]{position:absolute;left:0;top:0}.no-center[_ngcontent-%COMP%]{position:unset;top:unset;left:unset;transform:unset}.content-highlight[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function fa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](2,null,["",""]))],(function(t,e){t(e,1,0,e.component.link)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,2,0,n.cardTitle)}))}function ha(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" "," "]))],null,(function(t,e){t(e,0,0,e.component.cardTitle)}))}function ga(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵeld"](3,0,null,null,8,"div",[["class","card-body d-flex align-items-center justify-content-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"h5",[["class","card-title m-4"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,fa)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noLinkTitle",2]],null,0,null,ha)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-text text-center"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](10,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵncd"](null,0)],(function(t,e){var n=e.component;t(e,2,0,"card",n.cardClass),t(e,6,0,n.link,s["ɵnov"](e,7)),t(e,10,0,"card-text text-center",n.contentClass)}),null)}class pa{}var ba=s["ɵcrt"]({encapsulation:0,styles:[[".info-group-title[_ngcontent-%COMP%]{margin:0 0 .5vw .5vw;font-size:21px}"]],data:{}});function ma(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","info-group-title"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"div",[["class","row"]],null,null,null,null,null)),s["ɵncd"](null,0)],null,(function(t,e){t(e,2,0,e.component.groupTitle)}))}var ya=n("hrfs"),va=n("MO+k"),xa=n("NEZu"),_a=n("Fgil"),Ta=n("o4+5"),Oa=function(t){return t.DEFAULT_RED="#ff7592",t.DEFAULT_BLUE="#1d699d",t.DEFAULT_ORANGE="#ffa500",t.DEFAULT_MAGENTA="#564d65",t.DEFAULT_GREEN="#00bb00",t}({});class wa{constructor(t,e){this.dimlessBinary=t,this.dimless=e,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new s.EventEmitter,this.chartConfig={chartType:"pie",dataset:[{label:null,borderWidth:0}],options:{legend:{display:!0,position:"right",labels:{usePointStyle:!0},onClick:(t,e)=>{this.onLegendClick(t,e)}},animation:{duration:0},tooltips:{enabled:!1},title:{display:!1}}},this.hiddenSlices=[]}ngOnInit(){va.pluginService.register({beforeDraw:function(t){if(!t.options.center_text)return;const e=t.chart.width,n=t.chart.height,a=t.chart.ctx;a.restore();const r=(n/114).toFixed(2);a.font=r+"em sans-serif",a.textBaseline="middle";const i=t.options.center_text,s=Math.round((e-a.measureText(i).width)/2);a.fillText(i,s,n/2),a.save()}});const t=new xa.a(this.chartCanvasRef,this.chartTooltipRef,(t,e)=>e+t.caretX+"px",(t,e)=>e+t.caretY-t.height-10+"px");t.getBody=t=>this.getChartTooltipBody(t),this.chartConfig.options.tooltips.custom=e=>{t.customTooltips(e)},this.chartConfig.colors=[{backgroundColor:[Oa.DEFAULT_RED,Oa.DEFAULT_BLUE,Oa.DEFAULT_ORANGE,Oa.DEFAULT_GREEN,Oa.DEFAULT_MAGENTA]}],J.merge(this.chartConfig,this.config),this.prepareFn.emit([this.chartConfig,this.data])}ngOnChanges(){this.prepareFn.emit([this.chartConfig,this.data]),this.hideSlices(),this.setChartSliceBorderWidth()}getChartTooltipBody(t){const e=t[0].split(": ");return this.showLabelAsTooltip?e[0]:(e[1]=this.isBytesData?this.dimlessBinary.transform(e[1]):this.dimless.transform(e[1]),e.join(": "))}setChartSliceBorderWidth(){let t=0;J.forEach(this.chartConfig.dataset[0].data,(function(e){e>0&&(t+=1)})),this.chartConfig.dataset[0].borderWidth=t>1?1:0}onLegendClick(t,e){t.stopPropagation(),this.hiddenSlices[e.index]=!e.hidden,this.ngOnChanges()}hideSlices(){J.forEach(this.chartConfig.dataset[0].data,(t,e)=>{this.hiddenSlices[e]&&(this.chartConfig.dataset[0].data[e]=void 0)})}}var Sa=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto;cursor:pointer;overflow:visible;position:unset;width:100%;height:100%}.chart-canvas[_ngcontent-%COMP%]{position:unset;width:100%;height:100%;margin-left:auto;margin-right:auto;max-width:100%;max-height:100%}']],data:{}});function Ia(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvasRef:0}),s["ɵqud"](402653184,2,{chartTooltipRef:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""],["class","chart-canvas"]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,ya.a,[s.ElementRef,ya.c],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chartConfig.dataset,n.chartConfig.labels,n.chartConfig.options,n.chartConfig.chartType,n.chartConfig.colors)}),null)}class Na{constructor(t){this.i18n=t}transform(t){return t?`${t.monmap.mons.length.toString()} (${this.i18n("quorum")} ${t.quorum.join(", ")})`:""}}class Ca{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=0,n=0;J.each(t.osds,t=>{t.in&&e++,t.up&&n++});const a=[{content:`${t.osds.length} ${this.i18n("total")}`,class:""}];a.push({content:"",class:"card-text-line-break"}),a.push({content:`${n} ${this.i18n("up")}, ${e} ${this.i18n("in")}`,class:""});const r=t.osds.length-n,i=n-e;if(r>0||i>0){a.push({content:"",class:"card-text-line-break"});const t=r>0?`${r} ${this.i18n("down")}`:"",e=r>0&&i>0?", ":"",n=i>0?`${i} ${this.i18n("out")}`:"";a.push({content:`${t}${e}${n}`,class:"card-text-error"})}return a}}class Ra{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e=this.i18n("n/a");const n=J.isUndefined(t.active_name)?"":`${this.i18n("active daemon")}: ${t.active_name}`;n.length>0&&(e="1");const a=t.standbys.map(t=>t.name).join(", "),r=a?`${this.i18n("standby daemons")}: ${a}`:"",i=t.standbys.length,s=[{content:`${e} ${this.i18n("active")}`,class:"popover-info",titleText:n}];return s.push({content:"",class:"card-text-line-break",titleText:""}),s.push({content:`${i} ${this.i18n("standby")}`,class:"popover-info",titleText:r}),s}}class Aa{constructor(t){this.i18n=t}transform(t){if(!t)return"";let e="",n="",a=0,r=0,i=0;J.each(t.standbys,()=>{a+=1}),t.standbys&&!t.filesystems?(e=`${a} ${this.i18n("up")}`,n=this.i18n("no filesystems")):0===t.filesystems.length?e=this.i18n("no filesystems"):(J.each(t.filesystems,t=>{J.each(t.mdsmap.info,t=>{"up:standby-replay"===t.state?i+=1:r+=1})}),e=`${r} ${this.i18n("active")}`,n=`${a+i} ${this.i18n("standby")}`);const s=t.standbys.map(t=>t.name).join(", "),o=s?`${this.i18n("standby daemons")}: ${s}`:"",u=t.filesystems?t.filesystems.length:0,l=Object.values(u>0?t.filesystems[0].mdsmap.info:{}).map(t=>t.name).join(", ");let d=l?`${this.i18n("active daemon")}: ${l}`:"";!r&&u>0&&(d=`${i} ${this.i18n("standbyReplay")}`);const c=[{content:e,class:"popover-info",titleText:d}];return n&&(c.push({content:"",class:"card-text-line-break",titleText:""}),c.push({content:n,class:"popover-info",titleText:o})),c}}class ka{transform(t,e){return J.round(t,e)}}var Ea=n("aXbf");let La=(()=>{class t{constructor(t){this.http=t}getFullHealth(){return this.http.get("api/health/full")}getMinimalHealth(){return this.http.get("api/health/minimal")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})();var Da=n("2Vo4"),Pa=n("D0XW"),Ma=n("Y7HM");function qa(t){const{subscriber:e,counter:n,period:a}=t;e.next(n),this.schedule({subscriber:e,counter:n+1,period:a},a)}let ja=(()=>{class t{constructor(t){this.ngZone=t,this.intervalDataSource=new Da.a(null),this.intervalData$=this.intervalDataSource.asObservable();const e=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(e)}setRefreshInterval(t){this.intervalTime=t,sessionStorage.setItem("dashboard_interval",t.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.ngZone.runOutsideAngular(()=>{this.intervalSubscription=function(t=0,e=Pa.a){return(!Object(Ma.a)(t)||t<0)&&(t=0),e&&"function"==typeof e.schedule||(e=Pa.a),new kn.a(n=>(n.add(e.schedule(qa,t,{subscriber:n,counter:0,period:t})),n))}(this.intervalTime).subscribe(()=>this.ngZone.run(()=>{this.intervalDataSource.next(this.intervalTime)}))})}getRefreshInterval(){return this.intervalTime}ngOnDestroy(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](s.NgZone))},token:t,providedIn:"root"}),t})();var Fa=n("d+Og");class Ga{constructor(t,e,n,a,r,i,s,o){this.healthService=t,this.i18n=e,this.authStorageService=n,this.pgCategoryService=a,this.featureToggles=r,this.refreshIntervalService=i,this.dimlessBinary=s,this.dimless=o,this.interval=new ft.a,this.icons=ht.a,this.rawCapacityChartConfig={options:{title:{display:!0,position:"bottom"}}},this.objectsChartConfig={options:{title:{display:!0,position:"bottom"}},colors:[{backgroundColor:[Oa.DEFAULT_GREEN,Oa.DEFAULT_MAGENTA,Oa.DEFAULT_ORANGE,Oa.DEFAULT_RED]}]},this.pgStatusChartConfig={colors:[{backgroundColor:[Oa.DEFAULT_GREEN,Oa.DEFAULT_BLUE,Oa.DEFAULT_ORANGE,Oa.DEFAULT_RED]}]},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}ngOnInit(){this.getHealth(),this.interval=this.refreshIntervalService.intervalData$.subscribe(()=>{this.getHealth()})}ngOnDestroy(){this.interval.unsubscribe()}getHealth(){this.healthService.getMinimalHealth().subscribe(t=>{this.healthData=t})}prepareReadWriteRatio(t){const e=[],n=[],a=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;e.push(`${this.i18n("Writes")} (${this.calcPercentage(this.healthData.client_perf.write_op_per_sec,a)}%)`),n.push(this.healthData.client_perf.write_op_per_sec),e.push(`${this.i18n("Reads")} (${this.calcPercentage(this.healthData.client_perf.read_op_per_sec,a)}%)`),n.push(this.healthData.client_perf.read_op_per_sec),t.dataset[0].data=n,t.labels=e}prepareRawUsage(t,e){const n=this.calcPercentage(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes),a=this.calcPercentage(e.df.stats.total_used_raw_bytes,e.df.stats.total_bytes);t.dataset[0].data=[e.df.stats.total_used_raw_bytes,e.df.stats.total_avail_bytes],t.labels=[`${this.dimlessBinary.transform(e.df.stats.total_used_raw_bytes)} ${this.i18n("Used")} (${a}%)`,`${this.dimlessBinary.transform(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes)} ${this.i18n("Avail.")} (${n}%)`],t.options.title.text=`${this.dimlessBinary.transform(e.df.stats.total_bytes)} ${this.i18n("total")}`}preparePgStatus(t,e){const n={};let a=0;J.forEach(e.pg_info.statuses,(t,e)=>{const r=this.pgCategoryService.getTypeByStates(e);J.isUndefined(n[r])&&(n[r]=0),n[r]+=t,a+=t}),t.dataset[0].data=this.pgCategoryService.getAllTypes().map(t=>n[t]),t.labels=[`${this.i18n("Clean")} (${this.calcPercentage(n.clean,a)}%)`,`${this.i18n("Working")} (${this.calcPercentage(n.working,a)}%)`,`${this.i18n("Warning")} (${this.calcPercentage(n.warning,a)}%)`,`${this.i18n("Unknown")} (${this.calcPercentage(n.unknown,a)}%)`]}prepareObjects(t,e){const n=e.pg_info.object_stats.num_object_copies,a=n-e.pg_info.object_stats.num_objects_misplaced-e.pg_info.object_stats.num_objects_degraded-e.pg_info.object_stats.num_objects_unfound;t.labels=[`${this.i18n("Healthy")} (${this.calcPercentage(a,n)}%)`,`${this.i18n("Misplaced")} (${this.calcPercentage(e.pg_info.object_stats.num_objects_misplaced,n)}%)`,`${this.i18n("Degraded")} (${this.calcPercentage(e.pg_info.object_stats.num_objects_degraded,n)}%)`,`${this.i18n("Unfound")} (${this.calcPercentage(e.pg_info.object_stats.num_objects_unfound,n)}%)`],t.dataset[0].data=[a,e.pg_info.object_stats.num_objects_misplaced,e.pg_info.object_stats.num_objects_degraded,e.pg_info.object_stats.num_objects_unfound],t.options.title.text=`${this.dimless.transform(e.pg_info.object_stats.num_objects)} ${this.i18n("total")} (${this.dimless.transform(n)} ${this.i18n("replicas")})`,t.options.maintainAspectRatio=window.innerWidth>=375}isClientReadWriteChartShowable(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0}calcPercentage(t,e){return J.isNumber(t)&&J.isNumber(e)&&0!==e?Math.round(t/e*100):0}}var Va=s["ɵcrt"]({encapsulation:0,styles:[['cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}  .pg-status-popover-wrapper{position:relative}  .pg-status-popover-wrapper .popover{position:absolute;width:116%;max-height:20vh;min-width:unset!important;max-width:unset!important}  .pg-status-popover-wrapper .popover .popover-body{max-width:100%;max-height:19vh;font-size:12px}.logs-link[_ngcontent-%COMP%]{text-align:center}.card-text-error[_ngcontent-%COMP%]{display:inline;color:red}.card-text-line-break[_ngcontent-%COMP%]:after{content:"\\a";white-space:pre}.popover-info[_ngcontent-%COMP%]:hover{cursor:pointer}']],data:{}});function za(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ba(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"li",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵted"](6,null,[": "," "]))],(function(t,e){var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent.parent.parent,0),e.context.$implicit.severity));t(e,3,0,n)}),(function(t,e){t(e,5,0,e.context.$implicit.type),t(e,6,0,e.context.$implicit.summary.message)}))}function Ya(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,za)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ba)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent.parent,7)),t(e,4,0,n.healthData.health.checks)}),null)}function Ha(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵand"](0,[["healthChecks",2]],null,0,null,Ya)),(t()(),s["ɵeld"](2,16777216,null,null,5,"div",[["class","info-card-content-clickable"],["container","body"],["containerClass","info-card-popover-cluster-status"],["placement","bottom"],["triggers",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,6).toggle()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](5,1),s["ɵdid"](6,212992,[["healthChecksTarget",4]],0,ua.c,[ua.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,la.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"],container:[3,"container"],containerClass:[4,"containerClass"]},null),(t()(),s["ɵted"](7,null,[" "," "])),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component,a=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,4,0,a),t(e,6,0,s["ɵnov"](e,1),"bottom","","body","info-card-popover-cluster-status")}),(function(t,e){t(e,7,0,e.component.healthData.health.status)}))}function Ua(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null),s["ɵppd"](4,1),(t()(),s["ɵted"](5,null,[" "," "]))],(function(t,e){var n=e.component,a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,3,0,a)}),(function(t,e){t(e,5,0,e.component.healthData.health.status)}))}function Wa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Cluster Status"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ha)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ua)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Cluster Status","content-highlight"),t(e,3,0,(null==n.healthData.health?null:null==n.healthData.health.checks?null:n.healthData.health.checks.length)>0),t(e,5,0,!(null!=n.healthData.health&&null!=n.healthData.health.checks&&n.healthData.health.checks.length))}),null)}function Ka(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Monitors"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/monitor"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Monitors","/monitor","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,1),n.healthData.mon_status));t(e,2,0,a)}))}function $a(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,3,0,e.context.$implicit.content)}))}function Za(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","OSDs"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/osd"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,$a)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"OSDs","/osd","content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function Ja(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function Qa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-info-card",[["cardTitle","Manager Daemons"],["class","cd-status-card"],["contentClass","content-highlight"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,Ja)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵppd"](4,1)],(function(t,e){var n=e.component;t(e,1,0,"Manager Daemons","content-highlight");var a=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent.parent,3),n.healthData.mgr_map));t(e,3,0,a)}),null)}function Xa(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Hosts"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/hosts"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Hosts","/hosts","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.hosts)}))}function tr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Object Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/rgw/daemon"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "]))],(function(t,e){t(e,1,0,"Object Gateways","/rgw/daemon","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.rgw)}))}function er(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,e.context.$implicit.class)}),(function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,3,0,e.context.$implicit.content)}))}function nr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Metadata Servers"],["class","cd-status-card"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,er)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,1,0,"Metadata Servers",(e.context.ngIf.length>1?"text-area-size-2":"")+" content-highlight"),t(e,3,0,e.context.ngIf)}),null)}function ar(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"cd-info-card",[["cardTitle","iSCSI Gateways"],["class","cd-status-card"],["contentClass","content-highlight"],["link","/block/iscsi"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," total "])),(t()(),s["ɵeld"](3,0,null,0,0,"span",[["class","card-text-line-break"]],null,null,null,null,null)),(t()(),s["ɵted"](4,0,[" "," up, "])),(t()(),s["ɵeld"](5,0,null,0,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{"card-text-error":0}),(t()(),s["ɵted"](9,null,[""," down"]))],(function(t,e){var n=e.component;t(e,1,0,"iSCSI Gateways","/block/iscsi","content-highlight");var a=t(e,8,0,n.healthData.iscsi_daemons.down>0);t(e,7,0,a)}),(function(t,e){var n=e.component;t(e,2,0,n.healthData.iscsi_daemons.up+n.healthData.iscsi_daemons.down),t(e,4,0,n.healthData.iscsi_daemons.up),t(e,9,0,n.healthData.iscsi_daemons.down)}))}function rr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,19,"cd-info-group",[["groupTitle","Status"]],null,null,null,ma,ba)),s["ɵdid"](1,49152,null,0,pa,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Wa)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ka)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,Za)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](8,1),(t()(),s["ɵand"](16777216,null,0,1,null,Qa)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Xa)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,tr)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,nr)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵppd"](17,1),(t()(),s["ɵand"](16777216,null,0,1,null,ar)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Status"),t(e,3,0,null==n.healthData.health?null:n.healthData.health.status),t(e,5,0,n.healthData.mon_status);var a=s["ɵunv"](e,7,0,t(e,8,0,s["ɵnov"](e.parent.parent,2),n.healthData.osd_map));t(e,7,0,a),t(e,10,0,n.healthData.mgr_map),t(e,12,0,null!=n.healthData.hosts),t(e,14,0,e.parent.context.ngIf.rgw&&null!=n.healthData.rgw);var r=s["ɵunv"](e,16,0,t(e,17,0,s["ɵnov"](e.parent.parent,4),e.parent.context.ngIf.cephfs&&n.healthData.fs_map));t(e,16,0,r),t(e,19,0,e.parent.context.ngIf.iscsi&&null!=n.healthData.iscsi_daemons)}),null)}function ir(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client IOPS"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,2)],(function(t,e){t(e,1,0,"Client IOPS","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,5),n.healthData.client_perf.read_op_per_sec+n.healthData.client_perf.write_op_per_sec,1));t(e,2,0,a)}))}function sr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Client Throughput"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Client Throughput","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,6),n.healthData.client_perf.read_bytes_sec+n.healthData.client_perf.write_bytes_sec))+"/s";t(e,2,0,a)}))}function or(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareReadWriteRatio(n[0],n[1])&&a),a}),Ia,Sa)),s["ɵdid"](1,638976,null,0,wa,[_a.a,Ta.a],{data:[0,"data"]},{prepareFn:"prepareFn"})],(function(t,e){t(e,1,0,e.component.healthData)}),null)}function ur(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" N/A "]))],null,null)}function lr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Client Read/Write"],["class","cd-performance-card"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,or)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ur)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Client Read/Write",n.isClientReadWriteChartShowable()?"content-chart":"content-highlight"),t(e,3,0,n.isClientReadWriteChartShowable()),t(e,5,0,!n.isClientReadWriteChartShowable())}),null)}function dr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Recovery Throughput"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"Recovery Throughput","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,6),n.healthData.client_perf.recovering_bytes_per_sec))+"/s";t(e,2,0,a)}))}function cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Scrub"],["class","cd-performance-card"],["contentClass","content-highlight"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Scrub","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.scrub_status)}))}function fr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"cd-info-group",[["groupTitle","Performance"]],null,null,null,ma,ba)),s["ɵdid"](1,49152,null,0,pa,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ir)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,sr)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,lr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,dr)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,cr)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance"),t(e,3,0,n.healthData.client_perf),t(e,5,0,n.healthData.client_perf),t(e,7,0,n.healthData.client_perf),t(e,9,0,n.healthData.client_perf),t(e,11,0,n.healthData.scrub_status)}),null)}function hr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Pools"],["class","cd-capacity-card order-md-1 order-lg-4 order-xl-1"],["contentClass","content-highlight"],["link","/pool"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "]))],(function(t,e){t(e,1,0,"Pools","/pool","content-highlight")}),(function(t,e){t(e,2,0,e.component.healthData.pools.length)}))}function gr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Raw Capacity"],["class","cd-capacity-card order-md-3 order-lg-1 order-xl-2"],["contentClass","content-chart"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareRawUsage(n[0],n[1])&&a),a}),Ia,Sa)),s["ɵdid"](3,638976,null,0,wa,[_a.a,Ta.a],{data:[0,"data"],config:[1,"config"],isBytesData:[2,"isBytesData"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Raw Capacity","content-chart"),t(e,3,0,n.healthData,n.rawCapacityChartConfig,!0)}),null)}function pr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Objects"],["class","cd-capacity-card order-md-4 order-lg-2 order-xl-3"],["contentClass","content-chart"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵeld"](2,0,null,0,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.prepareObjects(n[0],n[1])&&a),a}),Ia,Sa)),s["ɵdid"](3,638976,null,0,wa,[_a.a,Ta.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"Objects","content-chart"),t(e,3,0,n.healthData,n.objectsChartConfig)}),null)}function br(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-info-card",[["cardTitle","PGs per OSD"],["class","cd-capacity-card order-md-2 order-lg-5 order-xl-4"],["contentClass","content-highlight"]],null,null,null,ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],(function(t,e){t(e,1,0,"PGs per OSD","content-highlight")}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,7),n.healthData.pg_info.pgs_per_osd));t(e,2,0,a)}))}function mr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function yr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit.key,e.context.$implicit.value)}))}function vr(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,mr)),s["ɵdid"](1,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"ul",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,yr)),s["ɵdid"](4,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers])],(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e.parent.parent.parent,7)),t(e,4,0,s["ɵunv"](e,4,0,s["ɵnov"](e,5).transform(n.healthData.pg_info.statuses)))}),null)}function xr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"cd-info-card",[["cardTitle","PG Status"],["class","cd-capacity-card order-md-5 order-lg-3 order-xl-5"],["contentClass","content-chart"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,5).toggle()&&a),a}),ga,ca)),s["ɵdid"](1,49152,null,0,da,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),s["ɵand"](0,[["pgStatus",2]],0,0,null,vr)),(t()(),s["ɵeld"](3,0,null,0,4,"div",[["class","pg-status-popover-wrapper"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,3,"div",[["placement","bottom"],["triggers",""]],null,null,null,null,null)),s["ɵdid"](5,212992,[["pgStatusTarget",4]],0,ua.c,[ua.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a,la.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"]},null),(t()(),s["ɵeld"](6,0,null,null,1,"cd-health-pie",[],null,[[null,"prepareFn"]],(function(t,e,n){var a=!0;return"prepareFn"===e&&(a=!1!==t.component.preparePgStatus(n[0],n[1])&&a),a}),Ia,Sa)),s["ɵdid"](7,638976,null,0,wa,[_a.a,Ta.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],(function(t,e){var n=e.component;t(e,1,0,"PG Status","content-chart"),t(e,5,0,s["ɵnov"](e,2),"bottom",""),t(e,7,0,n.healthData,n.pgStatusChartConfig)}),null)}function _r(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,"cd-info-group",[["groupTitle","Capacity"]],null,null,null,ma,ba)),s["ɵdid"](1,49152,null,0,pa,[],{groupTitle:[0,"groupTitle"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,hr)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,gr)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,pr)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,br)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,xr)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Capacity"),t(e,3,0,n.healthData.pools),t(e,5,0,n.healthData.df),t(e,7,0,null!=(null==n.healthData.pg_info?null:null==n.healthData.pg_info.object_stats?null:n.healthData.pg_info.object_stats.num_objects)),t(e,9,0,n.healthData.pg_info),t(e,11,0,n.healthData.pg_info)}),null)}function Tr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"p",[["class","logs-link"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵted"](-1,null,[" See "])),(t()(),s["ɵeld"](7,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](8,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Logs"])),(t()(),s["ɵted"](-1,null,[" for more details."]))],(function(t,e){var n=t(e,5,0,e.component.icons.infoCircle);t(e,4,0,n),t(e,8,0,"/logs")}),(function(t,e){t(e,7,0,s["ɵnov"](e,8).target,s["ɵnov"](e,8).href)}))}function Or(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Tr)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.permissions.log.read)}),null)}function wr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"div",[["class","container-fluid"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,rr)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fr)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_r)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logsLink",2]],null,0,null,Or))],(function(t,e){var n=e.component;t(e,2,0,(null==n.healthData.health?null:n.healthData.health.status)||n.healthData.mon_status||n.healthData.osd_map||n.healthData.mgr_map||null!=n.healthData.hosts||null!=n.healthData.rgw||n.healthData.fs_map||null!=n.healthData.iscsi_daemons),t(e,4,0,n.healthData.client_perf||n.healthData.scrub_status),t(e,6,0,n.healthData.pools||n.healthData.df||n.healthData.pg_info)}),null)}function Sr(t){return s["ɵvid"](0,[s["ɵpid"](0,ee,[]),s["ɵpid"](0,Na,[me.a]),s["ɵpid"](0,Ca,[me.a]),s["ɵpid"](0,Ra,[me.a]),s["ɵpid"](0,Aa,[me.a]),s["ɵpid"](0,ka,[]),s["ɵpid"](0,_a.a,[Ea.a]),s["ɵpid"](0,Ta.a,[Ea.a]),(t()(),s["ɵand"](16777216,null,null,2,null,wr)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](131072,i.AsyncPipe,[s.ChangeDetectorRef])],(function(t,e){var n=e.component;t(e,9,0,s["ɵunv"](e,9,0,s["ɵnov"](e,10).transform(n.healthData&&n.enabledFeature$)))}),null)}class Ir{constructor(t){this.refreshIntervalService=t,this.intervalList={"5 s":5e3,"10 s":1e4,"15 s":15e3,"30 s":3e4,"1 min":6e4,"3 min":18e4,"5 min":3e5},this.intervalKeys=Object.keys(this.intervalList)}ngOnInit(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3}changeRefreshInterval(t){this.refreshIntervalService.setRefreshInterval(t)}}var Nr=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Cr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){var n=e.component;t(e,1,0,n.intervalList[e.context.$implicit]),t(e,2,0,n.intervalList[e.context.$implicit])}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Rr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,12,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,11,"div",[["class","float-right d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"label",[["class","col-form-label my-0 mx-2"],["for","refreshInterval"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Refresh"])),(t()(),s["ɵeld"](5,0,null,null,8,"select",[["class","form-control custom-select"],["id","refreshInterval"],["name","refreshInterval"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,6).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,6).onTouched()&&a),"change"===e&&(a=!1!==r.changeRefreshInterval(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedInterval=n)&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](8,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](10,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](11,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Cr)),s["ɵdid"](13,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,8,0,"refreshInterval",n.selectedInterval),t(e,13,0,n.intervalKeys)}),(function(t,e){t(e,5,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending,s["ɵnov"](e,11).validClass,s["ɵnov"](e,11).invalidClass)}))}class Ar{constructor(){this.hasGrafana=!1}ngOnInit(){}}var kr=s["ɵcrt"]({encapsulation:0,styles:[["div[_ngcontent-%COMP%]{padding-top:20px}"]],data:{}});function Er(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-health",[],null,null,null,Sr,Va)),s["ɵdid"](5,245760,null,0,Ga,[La,me.a,vt.a,Fa.a,Qe.a,ja,_a.a,Ta.a],null,null),(t()(),s["ɵeld"](6,0,null,0,1,"tab",[["heading","Statistics"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null)],(function(t,e){t(e,3,0,"Health"),t(e,5,0),t(e,7,0,"Statistics")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function Lr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-health",[],null,null,null,Sr,Va)),s["ɵdid"](1,245760,null,0,Ga,[La,me.a,vt.a,Fa.a,Qe.a,ja,_a.a,Ta.a],null,null)],(function(t,e){t(e,1,0)}),null)}function Dr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"cd-refresh-selector",[],null,null,null,Rr,Nr)),s["ɵdid"](2,114688,null,0,Ir,[ja],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Er)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lr)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0),t(e,4,0,n.hasGrafana),t(e,6,0,!n.hasGrafana)}),null)}function Pr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-dashboard",[],null,null,null,Dr,kr)),s["ɵdid"](1,114688,null,0,Ar,[],null,null)],(function(t,e){t(e,1,0)}),null)}var Mr=s["ɵccf"]("cd-dashboard",Ar,Pr,{},{},[]),qr=n("a278"),jr=n("insk"),Fr=n("cUpR"),Gr=n("25BL"),Vr=n("uIqm"),zr=n("NUGo"),Br=n("S7zO"),Yr=n("DqMs"),Hr=n("/NlG"),Ur=n("i4WA"),Wr=n("6qls");class Kr{}var $r=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Zr(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Orchestrator is not available. Please consult the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","orch"]],null,null,null,Ur.b,Ur.a)),s["ɵdid"](4,114688,null,0,Wr.a,[xt.a,me.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,[" on how to configure and enable the functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"orch")}),null)}let Jr=(()=>{class t{constructor(t){this.http=t,this.url="api/orchestrator"}status(){return this.http.get(`${this.url}/status`)}identifyDevice(t,e,n){return this.http.post(`${this.url}/identify_device`,{hostname:t,device:e,duration:n})}inventoryList(t){const e=t?{params:(new X.h).set("hostname",t)}:{};return this.http.get(`${this.url}/inventory`,e)}inventoryDeviceList(t){return this.inventoryList(t).pipe(Object(Dn.a)(t=>{const e=J.flatMap(t,t=>t.devices.map(e=>(e.hostname=t.name,e.uid=e.device_id?e.device_id:`${e.hostname}-${e.path}`,e)));return Object(An.a)(e)}))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})();var Qr=n("Rf2I"),Xr=n("x38r"),ti=n("vCyI");class ei{constructor(t,e,n,a,r,i){this.authStorageService=t,this.dimlessBinary=e,this.i18n=n,this.modalService=a,this.notificationService=r,this.orchService=i,this.devices=[],this.hiddenColumns=[],this.filterColumns=["hostname","human_readable_type","available","sys_api.vendor","sys_api.model","sys_api.size"],this.selectionType=void 0,this.filterChange=new s.EventEmitter,this.fetchInventory=new s.EventEmitter,this.icons=ht.a,this.columns=[],this.selection=new ti.a}ngOnInit(){this.permission=this.authStorageService.getPermissions().osd,this.tableActions=[{permission:"update",icon:ht.a.show,click:()=>this.identifyDevice(),name:this.i18n("Identify"),disable:()=>!this.selection.hasSingleSelection,canBePrimary:t=>!t.hasSingleSelection,visible:()=>J.isString(this.selectionType)}];const t=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Device path"),prop:"path",flexGrow:1},{name:this.i18n("Type"),prop:"human_readable_type",flexGrow:1,cellTransformation:Xr.a.badge,customTemplateConfig:{map:{hdd:{value:"HDD",class:"badge-hdd"},ssd:{value:"SSD",class:"badge-ssd"}}}},{name:this.i18n("Available"),prop:"available",flexGrow:1,cellClass:"text-center",cellTransformation:Xr.a.checkIcon},{name:this.i18n("Vendor"),prop:"sys_api.vendor",flexGrow:1},{name:this.i18n("Model"),prop:"sys_api.model",flexGrow:1},{name:this.i18n("Size"),prop:"sys_api.size",flexGrow:1,pipe:this.dimlessBinary},{name:this.i18n("OSDs"),prop:"osd_ids",flexGrow:1,cellTransformation:Xr.a.badge,customTemplateConfig:{class:"badge-dark",prefix:"osd."}}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),J.forEach(this.filterColumns,t=>{const e=J.find(this.columns,{prop:t});e&&(e.filterable=!0)}),this.fetchInventory.observers.length>0&&(this.fetchInventorySub=this.table.fetchData.subscribe(()=>{this.fetchInventory.emit()}))}ngOnDestroy(){this.fetchInventorySub&&this.fetchInventorySub.unsubscribe()}onColumnFiltersChanged(t){this.filterChange.emit(t)}updateSelection(t){this.selection=t}identifyDevice(){const t=this.selection.first(),e=t.hostname,n=t.path||t.device_id;this.modalService.show(Qr.a,{initialState:{titleText:this.i18n("Identify device {{device}}",{device:n}),message:this.i18n("Please enter the duration how long to blink the LED."),fields:[{type:"select",name:"duration",value:300,required:!0,typeConfig:{options:[{text:this.i18n("1 minute"),value:60},{text:this.i18n("2 minutes"),value:120},{text:this.i18n("5 minutes"),value:300},{text:this.i18n("10 minutes"),value:600},{text:this.i18n("15 minutes"),value:900}]}}],submitButtonText:this.i18n("Execute"),onSubmit:t=>{this.orchService.identifyDevice(e,n,t.duration).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n("Identifying '{{device}}' started on host '{{hostname}}'",{hostname:e,device:n}))})}}})}}var ni=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}"]],data:{}});function ai(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","uid"]],null,[[null,"updateSelection"],[null,"columnFiltersChanged"]],(function(t,e,n){var a=!0,r=t.component;return"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"columnFiltersChanged"===e&&(a=!1!==r.onColumnFiltersChanged(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](2,2867200,[[1,4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],searchField:[3,"searchField"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{updateSelection:"updateSelection",columnFiltersChanged:"columnFiltersChanged"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](4,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.devices,n.columns,"flex",!1,!1,"uid",!0,n.selectionType),t(e,4,0,n.permission,n.selection,n.tableActions)}),null)}class ri{constructor(t){this.orchService=t,this.icons=ht.a,this.hasOrchestrator=!1,this.devices=[]}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,t.available&&this.getInventory()})}ngOnChanges(){this.hasOrchestrator&&(this.devices=[],this.getInventory())}getInventory(){""!==this.hostname&&this.orchService.inventoryDeviceList(this.hostname).subscribe(t=>{this.devices=t},()=>{this.devices=[]})}refresh(){this.getInventory()}}var ii=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function si(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,Zr,$r)),s["ɵdid"](1,49152,null,0,Kr,[],null,null)],null,null)}function oi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Devices"])),(t()(),s["ɵeld"](3,0,null,null,4,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"cd-inventory-devices",[["selectionType","single"]],null,[[null,"fetchInventory"]],(function(t,e,n){var a=!0;return"fetchInventory"===e&&(a=!1!==t.component.refresh()&&a),a}),ai,ni)),s["ɵdid"](6,245760,null,0,ei,[vt.a,_a.a,me.a,Lt.b,gt.a,Jr],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],selectionType:[2,"selectionType"]},{fetchInventory:"fetchInventory"}),s["ɵpad"](7,1)],(function(t,e){var n=e.component,a=n.devices,r=void 0===n.hostname?s["ɵEMPTY_ARRAY"]:t(e,7,0,"hostname");t(e,6,0,a,r,"single")}),null)}function ui(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,si)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,oi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,!n.hasOrchestrator),t(e,3,0,n.hasOrchestrator)}),null)}function li(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-inventory",[],null,null,null,ui,ii)),s["ɵdid"](1,638976,null,0,ri,[Jr],null,null)],(function(t,e){t(e,1,0)}),null)}var di=s["ɵccf"]("cd-inventory",ri,li,{hostname:"hostname"},{},[]);let ci=(()=>{class t{constructor(t){this.http=t,this.url="api/service"}list(t){const e=t?{params:(new X.h).set("service_name",t)}:{};return this.http.get(this.url,e)}getDaemons(t){return this.http.get(`${this.url}/${t}/daemons`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})(),fi=(()=>{class t{constructor(){}calculateAdditionalData(t){if(!t.life_expectancy_min||!t.life_expectancy_max)return t.state="unknown",t;const e=t=>!!Number.parseFloat(t),n=(t,n)=>t&&n&&e(t)&&e(n)?Oe.duration(Oe(t).diff(Oe(n))).asWeeks():null,a=Oe.duration(Oe(Oe.now()).diff(Oe(t.life_expectancy_stamp))).asWeeks(),r=n(t.life_expectancy_max,t.life_expectancy_stamp),i=n(t.life_expectancy_min,t.life_expectancy_stamp);return t.state=a>1?"stale":null!==r&&r<=2?"bad":null!==i&&i<=4?"warning":"good",t.life_expectancy_weeks={max:null!==r?Math.round(r):null,min:null!==i?Math.round(i):null},t}readable(t){return t.readableDaemons=t.daemons.join(" "),t}prepareDevice(t){return this.readable(this.calculateAdditionalData(t))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})(),hi=(()=>{class t{constructor(t,e){this.http=t,this.deviceService=e,this.baseURL="api/host"}list(){return this.http.get(this.baseURL)}create(t){return this.http.post(this.baseURL,{hostname:t},{observe:"response"})}delete(t){return this.http.delete(`${this.baseURL}/${t}`,{observe:"response"})}getDevices(t){return this.http.get(`${this.baseURL}/${t}/devices`).pipe(Object(Ee.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}getSmartData(t){return this.http.get(`${this.baseURL}/${t}/smart`)}getDaemons(t){return this.http.get(`${this.baseURL}/${t}/daemons`)}getLabels(){return this.http.get("ui-api/host/labels")}update(t,e){return this.http.put(`${this.baseURL}/${t}`,{labels:e})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](fi))},token:t,providedIn:fe.a}),t})();class gi{constructor(t,e,n,a){this.i18n=t,this.hostService=e,this.cephServiceService=n,this.orchService=a,this.daemons=[],this.columns=[],this.hasOrchestrator=!1}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1,filterable:!0},{name:this.i18n("Daemon type"),prop:"daemon_type",flexGrow:1,filterable:!0},{name:this.i18n("Daemon ID"),prop:"daemon_id",flexGrow:1,filterable:!0},{name:this.i18n("Container ID"),prop:"container_id",flexGrow:3,filterable:!0,cellTransformation:Xr.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Container Image name"),prop:"container_image_name",flexGrow:3,filterable:!0},{name:this.i18n("Container Image ID"),prop:"container_image_id",flexGrow:3,filterable:!0,cellTransformation:Xr.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Version"),prop:"version",flexGrow:1,filterable:!0},{name:this.i18n("Status"),prop:"status_desc",flexGrow:1,filterable:!0,cellTemplate:this.statusTpl},{name:this.i18n("Last Refreshed"),prop:"last_refresh",flexGrow:2}],this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available})}ngOnChanges(){J.isUndefined(this.daemonsTable)||this.daemonsTable.reloadData()}ngAfterViewInit(){this.daemonsTableTplsSub=this.daemonsTableTpls.changes.subscribe(t=>{this.daemonsTable=t.first})}ngOnDestroy(){this.daemonsTableTplsSub&&this.daemonsTableTplsSub.unsubscribe()}getStatusClass(t){return J.get({"-1":"badge-danger",0:"badge-warning",1:"badge-success"},t,"badge-dark")}getDaemons(t){let e;if(this.hostname)e=this.hostService.getDaemons(this.hostname);else{if(!this.serviceName)return void(this.daemons=[]);e=this.cephServiceService.getDaemons(this.serviceName)}e.subscribe(t=>{this.daemons=t},()=>{this.daemons=[],t.error()})}}var pi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function bi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,Zr,$r)),s["ɵdid"](1,49152,null,0,Kr,[],null,null)],null,null)}function mi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.getDaemons(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](1,2867200,[[2,4],["daemonsTable",4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,1,0,n.daemons,n.columns,"flex",6e4)}),null)}function yi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,2,0,"badge",e.component.getStatusClass(e.context.row.status))}),(function(t,e){t(e,3,0,e.context.row.status_desc)}))}function vi(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{statusTpl:0}),s["ɵqud"](671088640,2,{daemonsTableTpls:1}),(t()(),s["ɵand"](16777216,null,null,1,null,bi)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["statusTpl",2]],null,0,null,yi))],(function(t,e){var n=e.component;t(e,3,0,!n.hasOrchestrator),t(e,5,0,n.hasOrchestrator)}),null)}var xi=n("sLuX"),_i=n("FSuO"),Ti=n("QC43"),Oi=n("XFyV");let wi=(()=>{class t{constructor(t,e,n){this.http=t,this.i18n=e,this.deviceService=n,this.path="api/osd",this.osdRecvSpeedModalPriorities={KNOWN_PRIORITIES:[{name:null,text:this.i18n("-- Select the priority --"),values:{osd_max_backfills:null,osd_recovery_max_active:null,osd_recovery_max_single_start:null,osd_recovery_sleep:null}},{name:"low",text:this.i18n("Low"),values:{osd_max_backfills:1,osd_recovery_max_active:1,osd_recovery_max_single_start:1,osd_recovery_sleep:.5}},{name:"default",text:this.i18n("Default"),values:{osd_max_backfills:1,osd_recovery_max_active:3,osd_recovery_max_single_start:1,osd_recovery_sleep:0}},{name:"high",text:this.i18n("High"),values:{osd_max_backfills:4,osd_recovery_max_active:4,osd_recovery_max_single_start:4,osd_recovery_sleep:0}}]}}create(t){const e={method:"drive_groups",data:t,tracking_id:J.join(J.map(t,"service_id"),", ")};return this.http.post(this.path,e,{observe:"response"})}getList(){return this.http.get(`${this.path}`)}getDetails(t){return this.http.get(`${this.path}/${t}`)}getSmartData(t){return this.http.get(`${this.path}/${t}/smart`)}scrub(t,e){return this.http.post(`${this.path}/${t}/scrub?deep=${e}`,null)}getFlags(){return this.http.get(`${this.path}/flags`)}updateFlags(t){return this.http.put(`${this.path}/flags`,{flags:t})}markOut(t){return this.http.post(`${this.path}/${t}/mark_out`,null)}markIn(t){return this.http.post(`${this.path}/${t}/mark_in`,null)}markDown(t){return this.http.post(`${this.path}/${t}/mark_down`,null)}reweight(t,e){return this.http.post(`${this.path}/${t}/reweight`,{weight:e})}update(t,e){return this.http.put(`${this.path}/${t}`,{device_class:e})}markLost(t){return this.http.post(`${this.path}/${t}/mark_lost`,null)}purge(t){return this.http.post(`${this.path}/${t}/purge`,null)}destroy(t){return this.http.post(`${this.path}/${t}/destroy`,null)}delete(t,e,n){return this.http.delete(`${this.path}/${t}`,{observe:"response",params:{preserve_id:e?"true":"false",force:n?"true":"false"}})}safeToDestroy(t){return this.http.get(`${this.path}/safe_to_destroy?ids=${t}`)}safeToDelete(t){return this.http.get(`${this.path}/safe_to_delete?svc_ids=${t}`)}getDevices(t){return this.http.get(`${this.path}/${t}/devices`).pipe(Object(Ee.a)(t=>t.map(t=>this.deviceService.prepareDevice(t))))}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](me.a),s["ɵɵinject"](fi))},token:t,providedIn:fe.a}),t})();class Si{constructor(t,e,n){this.i18n=t,this.osdService=e,this.hostService=n,this.osdId=null,this.hostname=null,this.loading=!1,this.incompatible=!1,this.error=!1,this.data={}}isSmartError(t){return void 0!==J.get(t,"error")}isNvmeSmartData(t){return"nvme"===J.get(t,"device.protocol","").toLowerCase()}isHddSmartData(t){return"ata"===J.get(t,"device.protocol","").toLowerCase()}fetchData(t){const e={};J.each(t,(t,n)=>{if(this.isSmartError(t)){let a="";return a=this.i18n(-22===t.smartctl_error_code?"Smartctl has received an unknown argument (error code {{code}}). You may be using an incompatible version of smartmontools. Version >= 7.0 of smartmontools is required to successfully retrieve data.":"An error with error code {{code}} occurred.",{code:t.smartctl_error_code}),void(e[n]={error:t.error,smartctl_error_code:t.smartctl_error_code,smartctl_output:t.smartctl_output,userMessage:a,device:t.dev,identifier:t.nvme_vendor})}1!==t.json_format_version[0]?this.incompatible=!0:this.isHddSmartData(t)?e[n]=this.extractHddData(t):this.isNvmeSmartData(t)&&(e[n]=this.extractNvmeData(t))}),this.data=e,this.loading=!1}extractNvmeData(t){return{info:J.omitBy(t,(t,e)=>["nvme_smart_health_information_log"].includes(e)),smart:{nvmeData:t.nvme_smart_health_information_log},device:t.device.name,identifier:t.serial_number}}extractHddData(t){const e=J.omitBy(t,(t,e)=>["ata_smart_attributes","ata_smart_selective_self_test_log","ata_smart_data"].includes(e));return{info:e,smart:{attributes:t.ata_smart_attributes,data:t.ata_smart_data},device:e.device.name,identifier:e.serial_number}}updateData(){this.loading=!0,null!==this.osdId?this.osdService.getSmartData(this.osdId).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1}):null!==this.hostname&&this.hostService.getSmartData(this.hostname).subscribe(this.fetchData.bind(this),t=>{t.preventDefault(),this.error=t,this.loading=!1})}ngOnInit(){this.smartDataColumns=[{prop:"id",name:this.i18n("ID")},{prop:"name",name:this.i18n("Name")},{prop:"raw.value",name:this.i18n("Raw")},{prop:"thresh",name:this.i18n("Threshold")},{prop:"value",name:this.i18n("Value")},{prop:"when_failed",name:this.i18n("When Failed")},{prop:"worst",name:this.i18n("Worst")}]}ngOnChanges(t){this.data={},t.osdId?this.osdId=t.osdId.currentValue:t.hostname&&(this.hostname=t.hostname.currentValue),this.updateData()}}var Ii=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ni(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Failed to retrieve SMART data."]))],(function(t,e){t(e,1,0,"error")}),null)}function Ci(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The data received has the JSON format version 2.x and is currently incompatible with the dashboard."]))],(function(t,e){t(e,1,0,"warning")}),null)}function Ri(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available."]))],(function(t,e){t(e,1,0,"info")}),null)}function Ai(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-error"],["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](2,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](3,0,["",""]))],(function(t,e){t(e,2,0,"warning")}),(function(t,e){t(e,3,0,e.parent.context.$implicit.value.userMessage)}))}function ki(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-passed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](2,114688,null,0,Hr.a,[me.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["passed"]))],(function(t,e){t(e,2,0,"SMART overall-health self-assessment test result","info","slim")}),null)}function Ei(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["id","alert-self-test-failed"],["size","slim"],["title","SMART overall-health self-assessment test result"],["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{title:[0,"title"],type:[1,"type"],size:[2,"size"]},null),(t()(),s["ɵted"](-1,0,["failed"]))],(function(t,e){t(e,1,0,"SMART overall-health self-assessment test result","warning","slim")}),null)}function Li(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[["updateSelectionOnRefresh","never"]],null,null,null,Gr.b,Gr.a)),s["ɵdid"](1,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],updateSelectionOnRefresh:[2,"updateSelectionOnRefresh"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.attributes.table,e.component.smartDataColumns,"never")}),null)}function Di(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["updateSelectionOnRefresh","never"]],null,null,null,xi.b,xi.a)),s["ɵdid"](1,638976,null,0,_i.a,[Se.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null)],(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.smart.nvmeData,!0)}),null)}function Pi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No SMART data available for this device."]))],(function(t,e){t(e,1,0,"info")}),null)}function Mi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,ki)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["selfTestFailed",2]],null,0,null,Ei)),(t()(),s["ɵeld"](3,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](4,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](5,0,null,0,3,"tab",[["heading","Device Information"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](6,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"cd-table-key-value",[],null,null,null,xi.b,xi.a)),s["ɵdid"](8,638976,null,0,_i.a,[Se.a],{data:[0,"data"],renderObjects:[1,"renderObjects"]},null),(t()(),s["ɵeld"](9,0,null,0,7,"tab",[["heading","SMART"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](10,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Li)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Di)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pi)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.parent.context.$implicit.value.info.smart_status.passed,s["ɵnov"](e,2)),t(e,6,0,"Device Information"),t(e,8,0,e.parent.context.$implicit.value.info,!0),t(e,10,0,"SMART"),t(e,12,0,e.parent.context.$implicit.value.smart.attributes),t(e,14,0,e.parent.context.$implicit.value.smart.nvmeData),t(e,16,0,!e.parent.context.$implicit.value.smart.attributes&&!e.parent.context.$implicit.value.smart.nvmeData)}),(function(t,e){t(e,3,0,s["ɵnov"](e,4).clazz),t(e,5,0,s["ɵnov"](e,6).id,s["ɵnov"](e,6).active,s["ɵnov"](e,6).addClass,s["ɵnov"](e,6).role,s["ɵnov"](e,6).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby)}))}function qi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,4,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ai)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noError",2]],null,0,null,Mi))],(function(t,e){t(e,3,0,e.context.$implicit.value.device+" ("+e.context.$implicit.value.identifier+")"),t(e,5,0,e.context.$implicit.value.error,s["ɵnov"](e,6))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function ji(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Ri)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵand"](16777216,null,null,2,null,qi)),s["ɵdid"](5,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,!s["ɵunv"](e,2,0,s["ɵnov"](e,3).transform(n.data)).length),t(e,5,0,s["ɵunv"](e,5,0,s["ɵnov"](e,6).transform(n.data)))}),null)}function Fi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ni)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ci)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ji)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.error),t(e,4,0,n.incompatible),t(e,6,0,!n.error&&!n.incompatible)}),null)}function Gi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ti.b,Ti.a)),s["ɵdid"](1,49152,null,0,Oi.a,[],null,null),(t()(),s["ɵted"](-1,0,["SMART data is loading."]))],null,null)}function Vi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Fi)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["isLoading",2]],null,0,null,Gi))],(function(t,e){t(e,1,0,!e.component.loading,s["ɵnov"](e,2))}),null)}class zi{constructor(t,e,n,a){this.hostService=t,this.i18n=e,this.datePipe=n,this.osdService=a,this.hostname="",this.osdId=null,this.devices=null,this.columns=[],this.translationMapping={"=1":"# week",other:"# weeks"}}ngOnInit(){this.columns=[{prop:"devid",name:this.i18n("Device ID"),minWidth:200},{prop:"state",name:this.i18n("State of Health"),flexGrow:1,cellTransformation:Xr.a.badge,customTemplateConfig:{map:{good:{value:this.i18n("Good"),class:"badge-success"},warning:{value:this.i18n("Warning"),class:"badge-warning"},bad:{value:this.i18n("Bad"),class:"badge-danger"},stale:{value:this.i18n("Stale"),class:"badge-info"},unknown:{value:this.i18n("Unknown"),class:"badge-dark"}}}},{prop:"life_expectancy_weeks",name:this.i18n("Life Expectancy"),cellTemplate:this.lifeExpectancyTemplate},{prop:"life_expectancy_stamp",name:this.i18n("Prediction Creation Date"),cellTemplate:this.lifeExpectancyTimestampTemplate,pipe:this.datePipe,isHidden:!0},{prop:"location",name:this.i18n("Device Name"),cellTemplate:this.locationTemplate},{prop:"readableDaemons",name:this.i18n("Daemons")}]}ngOnChanges(){const t=t=>this.devices=t;this.hostname?this.hostService.getDevices(this.hostname).subscribe(t):null!==this.osdId&&this.osdService.getDevices(this.osdId).subscribe(t)}}var Bi=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Yi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table",[],null,null,null,Gr.b,Gr.a)),s["ɵdid"](1,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.devices,n.columns)}),null)}function Hi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Neither hostname nor OSD ID given"]))],(function(t,e){t(e,1,0,"warning")}),null)}function Ui(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.$implicit.dev)}))}function Wi(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ui)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Ki(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["> ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.min,n.translationMapping));t(e,1,0,a)}))}function $i(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["< ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,1,0,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a)}))}function Zi(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[""," to ",""])),s["ɵppd"](2,2)],null,(function(t,e){var n=e.component,a=e.parent.context.value.min,r=s["ɵunv"](e,1,1,t(e,2,0,s["ɵnov"](e.parent.parent,0),e.parent.context.value.max,n.translationMapping));t(e,1,0,a,r)}))}function Ji(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ki)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$i)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value.min&&!e.context.value.max),t(e,3,0,e.context.value.max&&!e.context.value.min),t(e,5,0,e.context.value.max&&e.context.value.min)}),null)}function Qi(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ","\n"]))],null,(function(t,e){t(e,0,0,e.context.value)}))}function Xi(t){return s["ɵvid"](0,[s["ɵpid"](0,i.I18nPluralPipe,[i.NgLocalization]),s["ɵqud"](402653184,1,{locationTemplate:0}),s["ɵqud"](402653184,2,{lifeExpectancyTemplate:0}),s["ɵqud"](402653184,3,{lifeExpectancyTimestampTemplate:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Yi)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hi)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["deviceLocation",2]],null,0,null,Wi)),(t()(),s["ɵand"](0,[[2,2],["lifeExpectancy",2]],null,0,null,Ji)),(t()(),s["ɵand"](0,[[3,2],["lifeExpectancyTimestamp",2]],null,0,null,Qi))],(function(t,e){var n=e.component;t(e,5,0,n.hostname||null!==n.osdId),t(e,7,0,""===n.hostname&&null===n.osdId)}),null)}n("jKX/");class ts{get selectedHostname(){return void 0!==this.selection?this.selection.hostname:null}constructor(){}}var es=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ns(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Inventory"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-inventory",[],null,null,null,ui,ii)),s["ɵdid"](3,638976,null,0,ri,[Jr],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Inventory"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function as(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-service-daemon-list",[],null,null,null,vi,pi)),s["ɵdid"](3,4964352,null,0,gi,[me.a,hi,ci,Jr],{hostname:[0,"hostname"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Daemons"),t(e,3,0,n.selectedHostname)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function rs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","rtOg0AiWz"]],null,null,null,qr.b,qr.a)),s["ɵdid"](3,638976,null,0,jr.a,[Fr.b,re.a,me.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"host-details?var-ceph_hosts="+n.selectedHostname,"three","rtOg0AiWz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function is(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-smart-list",[],null,null,null,Vi,Ii)),s["ɵdid"](1,638976,null,0,Si,[me.a,wi,hi],{hostname:[0,"hostname"]},null)],(function(t,e){t(e,1,0,e.component.selectedHostname)}),null)}function ss(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,[[1,4]],0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-device-list",[],null,null,null,Xi,Bi)),s["ɵdid"](5,638976,null,0,zi,[hi,me.a,i.DatePipe,wi],{hostname:[0,"hostname"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ns)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,as)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,rs)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](13,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,is)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,n.selection.hostname),t(e,7,0,n.permissions.hosts.read),t(e,9,0,n.permissions.hosts.read),t(e,11,0,n.permissions.grafana.read),t(e,13,0,"Device health"),t(e,15,0,n.selectedHostname,s["ɵnov"](e.parent,3))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function os(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["No hostname found."]))],(function(t,e){t(e,1,0,"error")}),null)}function us(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,ss)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["noHostname",2]],null,0,null,os))],(function(t,e){t(e,2,0,e.component.selection)}),null)}var ls=n("EgGo"),ds=n("+fVR"),cs=n("0+/T"),fs=n("DNAf"),hs=n("kvvV"),gs=n("85J/"),ps=n("FFMq");class bs{constructor(t){this.bsModalRef=t}ngOnInit(){}onSubmit(){this.bsModalRef.hide()}}let ms=(()=>{class t{constructor(t,e){this.orchService=t,this.modalService=e}checkOrchestratorOrModal(t,e,n){this.orchService.status().subscribe(a=>{a.available?n():this.modalService.show(bs,{initialState:{actionDescription:t,itemDescription:e}})})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](Jr),s["ɵɵinject"](Lt.b))},token:t,providedIn:"root"}),t})();var ys=n("kn/O");const vs=new ls.a("hosts");class xs extends ds.a{constructor(t,e,n,a,r,i,s,o,u,l,d,c){super(),this.authStorageService=t,this.hostService=e,this.cephShortVersionPipe=n,this.joinPipe=a,this.i18n=r,this.urlBuilder=i,this.actionLabels=s,this.modalService=o,this.taskWrapper=u,this.router=l,this.depCheckerService=d,this.notificationService=c,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new ti.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:ht.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("Host"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})}},{name:this.actionLabels.EDIT,permission:"update",icon:ht.a.edit,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.EDIT,this.i18n("Host"),()=>this.editAction())},disable:t=>!t.hasSingleSelection||!t.first().sources.orchestrator,disableDesc:this.getEditDisableDesc.bind(this)},{name:this.actionLabels.DELETE,permission:"delete",icon:ht.a.destroy,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("Host"),()=>this.deleteAction())},disable:()=>!this.selection.hasSelection}]}ngOnInit(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Services"),prop:"services",flexGrow:3,cellTemplate:this.servicesTpl},{name:this.i18n("Labels"),prop:"labels",flexGrow:1,pipe:this.joinPipe},{name:this.i18n("Version"),prop:"ceph_version",flexGrow:1,pipe:this.cephShortVersionPipe}]}updateSelection(t){this.selection=t}editAction(){this.hostService.getLabels().subscribe(t=>{const e=this.selection.first(),n=t.map(t=>({enabled:!0,name:t}));this.modalService.show(Qr.a,{initialState:{titleText:this.i18n("Edit Host: {{hostname}}",e),fields:[{type:"select-badges",name:"labels",value:e.labels,label:this.i18n("Labels"),typeConfig:{customBadges:!0,options:n,messages:new fs.a({empty:this.i18n("There are no labels."),filter:this.i18n("Filter or add labels"),add:this.i18n("Add label")},this.i18n)}}],submitButtonText:this.i18n("Edit Host"),onSubmit:t=>{this.hostService.update(e.hostname,t.labels).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n('Updated Host "{{hostname}}"',e)),this.table.refreshBtn()})}}})})}getEditDisableDesc(t){if(t&&t.hasSingleSelection&&!t.first().sources.orchestrator)return this.i18n("Host editing is disabled because the host is not managed by Orchestrator.")}deleteAction(){const t=this.selection.first().hostname;this.modalRef=this.modalService.show(cs.a,{initialState:{itemDescription:"Host",itemNames:[t],actionDescription:"delete",submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new hs.a("host/delete",{hostname:t}),call:this.hostService.delete(t)})}})}getHosts(t){if(this.isLoadingHosts)return;const e={mds:"cephfs",mon:"monitor",osd:"osd",rgw:"rgw","rbd-mirror":"rbdMirroring",mgr:"manager","tcmu-runner":"iscsi"};this.isLoadingHosts=!0,this.hostService.list().subscribe(t=>{t.map(t=>(t.services.map(t=>{t.cdLink=`/perf_counters/${t.type}/${encodeURIComponent(t.id)}`;const n=this.permissions[e[t.type]];return t.canRead=!!n&&n.read,t}),t)),this.hosts=t,this.isLoadingHosts=!1},()=>{this.isLoadingHosts=!1,t.error()})}}var _s=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ts(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"a",[["class","service-link"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a}),null,null)),s["ɵdid"](1,671744,null,0,qt.p,[qt.m,qt.a,i.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),s["ɵpad"](2,1),(t()(),s["ɵted"](3,null,["",".",""]))],(function(t,e){var n=e.component.cdParams,a=t(e,2,0,e.parent.context.$implicit.cdLink);t(e,1,0,n,a)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).target,s["ɵnov"](e,1).href),t(e,3,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function Os(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ","."," "]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)}))}function ws(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[", "]))],null,null)}function Ss(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ts)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Os)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ws)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit.canRead),t(e,4,0,!e.context.$implicit.canRead),t(e,6,0,!e.context.last)}),null)}function Is(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Ss)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Ns(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","y0KGL0iZz"]],null,null,null,qr.b,qr.a)),s["ɵdid"](3,638976,null,0,jr.a,[Fr.b,re.a,me.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"host-overview?","two","y0KGL0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Cs(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),s["ɵqud"](402653184,2,{servicesTpl:0}),(t()(),s["ɵeld"](2,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](3,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](4,0,null,0,9,"tab",[["heading","Hosts List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](5,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](6,0,null,null,7,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getHosts(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](7,2867200,[[1,4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](8,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","host-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](10,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](0,[[2,2],["servicesTpl",2]],null,0,null,Is)),(t()(),s["ɵeld"](12,0,null,3,1,"cd-host-details",[["cdTableDetail",""]],null,null,null,us,es)),s["ɵdid"](13,49152,null,0,ts,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,Ns)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,"Hosts List"),t(e,7,0,n.hosts,n.columns,"flex",!0,"single"),t(e,10,0,n.permissions.hosts,n.selection,n.tableActions),t(e,13,0,n.permissions,n.expandedRow),t(e,15,0,n.permissions.grafana.read)}),(function(t,e){t(e,2,0,s["ɵnov"](e,3).clazz),t(e,4,0,s["ɵnov"](e,5).id,s["ɵnov"](e,5).active,s["ɵnov"](e,5).addClass,s["ɵnov"](e,5).role,s["ɵnov"](e,5).ariaLabelledby)}))}function Rs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-hosts",[],null,null,null,Cs,_s)),s["ɵprd"](256,null,ls.a,vs,[]),s["ɵdid"](2,114688,null,0,xs,[vt.a,hi,gs.a,ps.a,me.a,ls.a,At.b,Lt.b,ys.a,qt.m,ms,gt.a],null,null)],(function(t,e){t(e,2,0)}),null)}var As=s["ɵccf"]("cd-hosts",xs,Rs,{},{},[]),ks=n("mXUL"),Es=n("IZUe"),Ls=n("gp3X"),Ds=n("sb0X"),Ps=n("KVJa"),Ms=n("Z21x"),qs=n("8xTl"),js=n("QFaf"),Fs=n("1Ni5");class Gs{constructor(t,e,n,a,r){this.router=t,this.i18n=e,this.actionLabels=n,this.hostService=a,this.taskWrapper=r,this.loading=!0,this.resource=this.i18n("host"),this.action=this.actionLabels.CREATE,this.createForm()}ngOnInit(){this.hostService.list().subscribe(t=>{this.hostnames=t.map(t=>t.hostname),this.loading=!1})}createForm(){this.hostForm=new js.a({hostname:new $.i("",{validators:[$.B.required,Fs.a.custom("uniqueName",t=>this.hostnames&&-1!==this.hostnames.indexOf(t))]})})}submit(){const t=this.hostForm.get("hostname").value;this.taskWrapper.wrapTaskAroundCall({task:new hs.a("host/"+At.e.CREATE,{hostname:t}),call:this.hostService.create(t)}).subscribe(void 0,()=>{this.hostForm.setErrors({cdSubmitButton:!0})},()=>{this.router.navigate(["/hosts"])})}}var Vs=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function zs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ti.b,Ti.a)),s["ɵdid"](1,49152,null,0,Oi.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading..."]))],null,null)}function Bs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ys(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The chosen hostname is already in use."]))],null,null)}function Hs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,39,"form",[["name","hostForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,2).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,2).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.G,[],null,null),s["ɵdid"](2,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](4,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](5,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](6,0,null,null,33,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[""," ",""])),s["ɵppd"](9,1),s["ɵppd"](10,1),(t()(),s["ɵeld"](11,0,null,null,19,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](13,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","hostname"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Hostname"])),(t()(),s["ɵeld"](18,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,7,"input",[["autofocus",""],["class","form-control"],["formControlName","hostname"],["id","hostname"],["name","hostname"],["placeholder","mon-123"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,4210688,null,0,Es.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](23,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](25,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](26,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bs)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ys)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](31,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](34,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](35,0,[""," ",""])),s["ɵppd"](36,1),s["ɵppd"](37,1),(t()(),s["ɵeld"](38,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](39,49152,null,0,Ms.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,2,0,n.hostForm),t(e,5,0,n.hostForm),t(e,13,0),t(e,20,0,""),t(e,23,0,"hostname"),t(e,26,0,"hostname"),t(e,28,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"required")),t(e,30,0,n.hostForm.showError("hostname",s["ɵnov"](e,2),"uniqueName")),t(e,34,0,s["ɵnov"](e,2))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,8,0,t(e,9,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,8,1,t(e,10,0,s["ɵnov"](e.parent,1),n.resource));t(e,8,0,a,r),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass);var i=s["ɵunv"](e,35,0,t(e,36,0,s["ɵnov"](e.parent,0),n.action)),o=s["ɵunv"](e,35,1,t(e,37,0,s["ɵnov"](e.parent,1),n.resource));t(e,35,0,i,o)}))}function Us(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,qs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,zs)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Hs)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.loading),t(e,6,0,!n.loading)}),null)}function Ws(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-host-form",[],null,null,null,Us,Vs)),s["ɵdid"](1,114688,null,0,Gs,[qt.m,me.a,At.b,hi,ys.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Ks=s["ɵccf"]("cd-host-form",Gs,Ws,{},{},[]);let $s=(()=>{class t{constructor(t){this.http=t}getMonitor(){return this.http.get("api/monitor")}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})();class Zs{constructor(t,e){this.monitorService=t,this.i18n=e,this.inQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:Xr.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")},{prop:"cdOpenSessions",name:this.i18n("Open Sessions"),cellTransformation:Xr.a.sparkline,comparator:(t,e)=>{const n=J.last(t),a=J.last(e);return n&&a&&n!==a?n>a?1:-1:0}}]},this.notInQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:Xr.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")}]}}refresh(){this.monitorService.getMonitor().subscribe(t=>{t.in_quorum.map(t=>(t.cdOpenSessions=t.stats.num_sessions.map(t=>t[1]),t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),t.out_quorum.map(t=>(t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t)),this.inQuorum.data=[...t.in_quorum],this.notInQuorum.data=[...t.out_quorum],this.mon_status=t.mon_status})}}var Js=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Qs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,35,"table",[["class","table table-striped"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster ID"])),(t()(),s["ɵeld"](4,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap modified"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["monmap epoch"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum con"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["quorum mon"])),(t()(),s["ɵeld"](24,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](25,null,["",""])),(t()(),s["ɵeld"](26,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required con"])),(t()(),s["ɵeld"](29,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["required mon"])),(t()(),s["ɵeld"](34,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](35,null,["",""]))],null,(function(t,e){var n=e.component;t(e,5,0,n.mon_status.monmap.fsid),t(e,10,0,n.mon_status.monmap.modified),t(e,15,0,n.mon_status.monmap.epoch),t(e,20,0,n.mon_status.features.quorum_con),t(e,25,0,n.mon_status.features.quorum_mon),t(e,30,0,n.mon_status.features.required_con),t(e,35,0,n.mon_status.features.required_mon)}))}function Xs(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"div",[["class","col-lg-4"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Status"])),(t()(),s["ɵand"](16777216,null,null,1,null,Qs)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,8,"div",[["class","col-lg-8"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["In Quorum"])),(t()(),s["ɵeld"](10,0,null,null,1,"cd-table",[],null,null,null,Gr.b,Gr.a)),s["ɵdid"](11,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(t()(),s["ɵeld"](12,0,null,null,1,"legend",[["class","in-quorum cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Not In Quorum"])),(t()(),s["ɵeld"](14,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),Gr.b,Gr.a)),s["ɵdid"](15,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,6,0,n.mon_status),t(e,11,0,n.inQuorum.data,n.inQuorum.columns),t(e,15,0,n.notInQuorum.data,n.notInQuorum.columns)}),null)}function to(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitor",[],null,null,null,Xs,Js)),s["ɵdid"](1,49152,null,0,Zs,[$s,me.a],null,null)],null,null)}var eo=s["ɵccf"]("cd-monitor",Zs,to,{},{},[]);class no{constructor(){}ngOnInit(){}}var ao=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ro(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,[[1,4]],0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Daemons"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-service-daemon-list",[],null,null,null,vi,pi)),s["ɵdid"](5,4964352,null,0,gi,[me.a,hi,ci,Jr],{serviceName:[0,"serviceName"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Daemons"),t(e,5,0,n.selection.service_name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function io(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tabsetChild:0}),(t()(),s["ɵand"](16777216,null,null,1,null,ro)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,e.component.selection)}),null)}class so extends ds.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.i18n=e,this.orchService=n,this.cephServiceService=a,this.hiddenColumns=[],this.checkingOrchestrator=!0,this.hasOrchestrator=!1,this.columns=[],this.services=[],this.isLoadingServices=!1,this.selection=new ti.a,this.permissions=this.authStorageService.getPermissions()}ngOnInit(){const t=[{name:this.i18n("Service"),prop:"service_name",flexGrow:1},{name:this.i18n("Container image name"),prop:"status.container_image_name",flexGrow:3},{name:this.i18n("Container image ID"),prop:"status.container_image_id",flexGrow:3,cellTransformation:Xr.a.truncate,customTemplateConfig:{length:12}},{name:this.i18n("Running"),prop:"status.running",flexGrow:1,cellClass:"text-center",cellTransformation:Xr.a.checkIcon},{name:this.i18n("Size"),prop:"status.size",flexGrow:1},{name:this.i18n("Last Refreshed"),prop:"status.last_refresh",flexGrow:1}];this.columns=t.filter(t=>!this.hiddenColumns.includes(t.prop)),this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available})}ngOnChanges(){this.hasOrchestrator&&(this.services=[],this.table.reloadData())}getServices(t){this.isLoadingServices||(this.isLoadingServices=!0,this.cephServiceService.list().subscribe(t=>{this.services=t,this.isLoadingServices=!1},()=>{this.isLoadingServices=!1,this.services=[],t.error()}))}}var oo=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function uo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,Zr,$r)),s["ɵdid"](1,49152,null,0,Kr,[],null,null)],null,null)}function lo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","service_name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getServices(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](2,2867200,[[1,4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],forceIdentifier:[6,"forceIdentifier"],selectionType:[7,"selectionType"]},{fetchData:"fetchData",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,3,1,"cd-service-details",[["cdTableDetail",""]],null,null,null,io,ao)),s["ɵdid"](4,114688,null,0,no,[],{permissions:[0,"permissions"],selection:[1,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.services,n.columns,"flex",!0,6e4,"service_name","true","single"),t(e,4,0,n.permissions,n.expandedRow)}),null)}function co(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{table:0}),(t()(),s["ɵand"](16777216,null,null,1,null,uo)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lo)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,!n.hasOrchestrator),t(e,4,0,n.hasOrchestrator)}),null)}function fo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-services",[],null,null,null,co,oo)),s["ɵdid"](1,638976,null,0,so,[vt.a,me.a,Jr,ci],null,null)],(function(t,e){t(e,1,0)}),null)}var ho=s["ɵccf"]("cd-services",so,fo,{hostname:"hostname",hiddenColumns:"hiddenColumns"},{},[]),go=n("xSw7"),po=n("GgAd"),bo=n("j8L6"),mo=n("b5OY"),yo=n("pxLl");class vo{constructor(){this.last={}}ngOnChanges(){this.render()}hexdigits(t){const e=Math.floor(255*t).toString(16);return 1===e.length?"0"+e:e}hexcolor(t,e,n){return"#"+this.hexdigits(t)+this.hexdigits(e)+this.hexdigits(n)}render(){if(!this.histogram)return;let t=0;J.each(this.histogram.values,(e,n)=>{J.each(e,(e,a)=>{let r;r=this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e,t=Math.max(t,r)})}),this.valuesStyle=this.histogram.values.map((e,n)=>e.map((e,a)=>{const r=t?(this.last&&this.last[n]&&this.last[n][a]?e-this.last[n][a]:e)/t:0;return{backgroundColor:this.hexcolor(1-r,r,0)}})),this.last=this.histogram.values}}var xo=s["ɵcrt"]({encapsulation:0,styles:[["table[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{height:10px}table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{width:10px;height:10px}"]],data:{}});function _o(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgStyleImpl"],i["ɵNgStyleR2Impl"],[s.ElementRef,s.KeyValueDiffers,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgStyle,[i["ɵNgStyleImpl"]],{ngStyle:[0,"ngStyle"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function To(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_o)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.context.$implicit)}),null)}function Oo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"table",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,To)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.valuesStyle)}),null)}class wo{constructor(t,e){this.osdService=t,this.authStorageService=e,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){J.get(this,"osd.id")!==J.get(this,"selection.id")&&(this.osd=this.selection),J.isNumber(J.get(this,"osd.id"))&&this.refresh()}refresh(){this.osdService.getDetails(this.osd.id).subscribe(t=>{this.osd.details=t,this.osd.histogram_failed="",J.isObject(t.histogram)||(this.osd.histogram_failed=t.histogram,this.osd.details.histogram=void 0)})}}var So=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Io(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],(function(t,e,n){var a=!0;return"fetchData"===e&&(a=!1!==t.component.refresh()&&a),a}),xi.b,xi.a)),s["ɵdid"](1,638976,null,0,_i.a,[Se.a],{data:[0,"data"]},{fetchData:"fetchData"})],(function(t,e){var n=e.component;t(e,1,0,null==n.osd?null:null==n.osd.details?null:n.osd.details.osd_metadata)}),null)}function No(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["Metadata not available"]))],(function(t,e){t(e,1,0,"warning")}),null)}function Co(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-performance-counter",[["serviceType","osd"]],null,null,null,bo.b,bo.a)),s["ɵdid"](1,114688,null,0,mo.a,[yo.a,me.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){var n=e.component;t(e,1,0,"osd",null==n.osd?null:n.osd.id)}),null)}function Ro(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,["Histogram not available: ",""]))],(function(t,e){t(e,1,0,"warning")}),(function(t,e){t(e,2,0,e.component.osd.histogram_failed)}))}function Ao(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Writes"])),(t()(),s["ɵeld"](4,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,Oo,xo)),s["ɵdid"](5,573440,null,0,vo,[],{histogram:[0,"histogram"]},null),(t()(),s["ɵeld"](6,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Reads"])),(t()(),s["ɵeld"](9,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,Oo,xo)),s["ɵdid"](10,573440,null,0,vo,[],{histogram:[0,"histogram"]},null)],(function(t,e){var n=e.component;t(e,5,0,null==n.osd?null:null==n.osd.details?null:null==n.osd.details.histogram?null:null==n.osd.details.histogram.osd?null:n.osd.details.histogram.osd.op_w_latency_in_bytes_histogram),t(e,10,0,null==n.osd?null:null==n.osd.details?null:null==n.osd.details.histogram?null:null==n.osd.details.histogram.osd?null:n.osd.details.histogram.osd.op_r_latency_out_bytes_histogram)}),null)}function ko(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","GrafanaStyles.two"],["uid","CrAHE0iZz"]],null,null,null,qr.b,qr.a)),s["ɵdid"](3,638976,null,0,jr.a,[Fr.b,re.a,me.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"osd-device-details?var-osd=osd."+n.osd.id,"GrafanaStyles.two","CrAHE0iZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Eo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"tabset",[["id","tabset-osd-details"]],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Devices"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-device-list",[],null,null,null,Xi,Bi)),s["ɵdid"](5,638976,null,0,zi,[hi,me.a,i.DatePipe,wi],{osdId:[0,"osdId"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[["heading","Attributes (OSD map)"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table-key-value",[],null,null,null,xi.b,xi.a)),s["ɵdid"](9,638976,null,0,_i.a,[Se.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](10,0,null,0,4,"tab",[["heading","Metadata"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](11,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Io)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["noMetaData",2]],null,0,null,No)),(t()(),s["ɵeld"](15,0,null,0,3,"tab",[["heading","Device health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](16,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](17,0,null,null,1,"cd-smart-list",[],null,null,null,Vi,Ii)),s["ɵdid"](18,638976,null,0,Si,[me.a,wi,hi],{osdId:[0,"osdId"]},null),(t()(),s["ɵeld"](19,0,null,0,3,"tab",[["heading","Performance counter"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](20,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Co)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,0,5,"tab",[["heading","Histogram"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](24,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ro)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ao)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ko)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Devices"),t(e,5,0,null==n.osd?null:n.osd.id),t(e,7,0,"Attributes (OSD map)"),t(e,9,0,null==n.osd?null:null==n.osd.details?null:n.osd.details.osd_map),t(e,11,0,"Metadata"),t(e,13,0,null==n.osd?null:null==n.osd.details?null:n.osd.details.osd_metadata,s["ɵnov"](e,14)),t(e,16,0,"Device health"),t(e,18,0,null==n.osd?null:n.osd.id),t(e,20,0,"Performance counter"),t(e,22,0,null==n.osd?null:n.osd.details),t(e,24,0,"Histogram"),t(e,26,0,null==n.osd?null:n.osd.histogram_failed),t(e,28,0,null==n.osd?null:null==n.osd.details?null:n.osd.details.histogram),t(e,30,0,n.grafanaPermission.read)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,10,0,s["ɵnov"](e,11).id,s["ɵnov"](e,11).active,s["ɵnov"](e,11).addClass,s["ɵnov"](e,11).role,s["ɵnov"](e,11).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby),t(e,19,0,s["ɵnov"](e,20).id,s["ɵnov"](e,20).active,s["ɵnov"](e,20).addClass,s["ɵnov"](e,20).role,s["ɵnov"](e,20).ariaLabelledby),t(e,23,0,s["ɵnov"](e,24).id,s["ɵnov"](e,24).active,s["ɵnov"](e,24).addClass,s["ɵnov"](e,24).role,s["ɵnov"](e,24).ariaLabelledby)}))}function Lo(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Eo)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}function Do(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-details",[],null,null,null,Lo,So)),s["ɵdid"](1,573440,null,0,wo,[wi,vt.a],null,null)],null,null)}var Po=s["ɵccf"]("cd-osd-details",wo,Do,{selection:"selection"},{},[]),Mo=n("cp0P"),qo=n("OLbh");class jo{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.osdFlagsForm=new $.k({}),this.allFlags={noin:{code:"noin",name:this.i18n("No In"),value:!1,description:this.i18n("OSDs that were previously marked out will not be marked back in when they start")},noout:{code:"noout",name:this.i18n("No Out"),value:!1,description:this.i18n("OSDs will not automatically be marked out after the configured interval")},noup:{code:"noup",name:this.i18n("No Up"),value:!1,description:this.i18n("OSDs are not allowed to start")},nodown:{code:"nodown",name:this.i18n("No Down"),value:!1,description:this.i18n("OSD failure reports are being ignored, such that the monitors will not mark OSDs down")},pause:{code:"pause",name:this.i18n("Pause"),value:!1,description:this.i18n("Pauses reads and writes")},noscrub:{code:"noscrub",name:this.i18n("No Scrub"),value:!1,description:this.i18n("Scrubbing is disabled")},"nodeep-scrub":{code:"nodeep-scrub",name:this.i18n("No Deep Scrub"),value:!1,description:this.i18n("Deep Scrubbing is disabled")},nobackfill:{code:"nobackfill",name:this.i18n("No Backfill"),value:!1,description:this.i18n("Backfilling of PGs is suspended")},norebalance:{code:"norebalance",name:this.i18n("No Rebalance"),value:!1,description:this.i18n("OSD will choose not to backfill unless PG is also degraded")},norecover:{code:"norecover",name:this.i18n("No Recover"),value:!1,description:this.i18n("Recovery of PGs is suspended")},sortbitwise:{code:"sortbitwise",name:this.i18n("Bitwise Sort"),value:!1,description:this.i18n("Use bitwise sort"),disabled:!0},purged_snapdirs:{code:"purged_snapdirs",name:this.i18n("Purged Snapdirs"),value:!1,description:this.i18n("OSDs have converted snapsets"),disabled:!0},recovery_deletes:{code:"recovery_deletes",name:this.i18n("Recovery Deletes"),value:!1,description:this.i18n("Deletes performed during recovery instead of peering"),disabled:!0},pglog_hardlimit:{code:"pglog_hardlimit",name:this.i18n("PG Log Hard Limit"),value:!1,description:this.i18n("Puts a hard limit on pg log length"),disabled:!0}},this.unknownFlags=[],this.permissions=this.authStorageService.getPermissions()}ngOnInit(){this.osdService.getFlags().subscribe(t=>{t.forEach(t=>{this.allFlags[t]?this.allFlags[t].value=!0:this.unknownFlags.push(t)}),this.flags=J.toArray(this.allFlags)})}submitAction(){const t=this.flags.filter(t=>t.value).map(t=>t.code).concat(this.unknownFlags);this.osdService.updateFlags(t).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n("Updated OSD Flags")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}var Fo=n("MuvH");let Go=(()=>{class t{static getType(t){const e=J.find(this.knownTypes,e=>e.name===t);if(void 0!==e)return e;throw new Error('Found unknown type "'+t+'" for config option.')}static getTypeValidators(e){const n=t.getType(e.type);if("bool"===n.name||"str"===n.name)return;const a={validators:[],patternHelpText:n.patternHelpText};return n.isNumberType?(e.max&&""!==e.max&&(a.max=e.max,a.validators.push($.B.max(e.max))),e.min&&""!==e.min?(a.min=e.min,a.validators.push($.B.min(e.min))):"defaultMin"in n&&(a.min=n.defaultMin,a.validators.push($.B.min(n.defaultMin))),a.validators.push("float"===e.type?Fs.a.decimalNumber():Fs.a.number(n.allowsNegative))):"addr"===e.type?a.validators=[Fs.a.ip()]:"uuid"===e.type&&(a.validators=[Fs.a.uuid()]),a}static getTypeStep(t,e){if(["uint","int","size","secs"].includes(t))return 1;if("float"===t){if(null!==e&&-1!==e.toString().indexOf(".")){const t=e.toString().split(".");return Math.pow(10,-t[1].length)}return.1}}}return t.knownTypes=[{name:"uint",inputType:"number",humanReadable:"Unsigned integer value",defaultMin:0,patternHelpText:"The entered value needs to be an unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"int",inputType:"number",humanReadable:"Integer value",patternHelpText:"The entered value needs to be a number.",isNumberType:!0,allowsNegative:!0},{name:"size",inputType:"number",humanReadable:"Unsigned integer value (>=16bit)",defaultMin:0,patternHelpText:"The entered value needs to be a unsigned number.",isNumberType:!0,allowsNegative:!1},{name:"secs",inputType:"number",humanReadable:"Number of seconds",defaultMin:1,patternHelpText:"The entered value needs to be a number >= 1.",isNumberType:!0,allowsNegative:!1},{name:"float",inputType:"number",humanReadable:"Double value",patternHelpText:"The entered value needs to be a number or decimal.",isNumberType:!0,allowsNegative:!0},{name:"str",inputType:"text",humanReadable:"Text",isNumberType:!1},{name:"addr",inputType:"text",humanReadable:"IPv4 or IPv6 address",patternHelpText:"The entered value needs to be a valid IP address.",isNumberType:!1},{name:"uuid",inputType:"text",humanReadable:"UUID",patternHelpText:"The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8",isNumberType:!1},{name:"bool",inputType:"checkbox",humanReadable:"Boolean value",isNumberType:!1}],t})();class Vo{constructor(t){this.configService=t,this.optionNames=[],this.optionsForm=new js.a({}),this.optionsFormDir=new $.t([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.icons=ht.a,this.options=[],this.optionsFormGroup=new js.a({})}static optionNameToText(t){const e=["mon","mgr","osd","mds","client"];return t.split("_").filter((t,n)=>0!==n||!e.includes(t)).map(t=>t.charAt(0).toUpperCase()+t.substring(1)).join(" ")}ngOnInit(){this.createForm(),this.loadStoredData()}createForm(){this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(t=>{this.optionsFormGroup.addControl(t,new $.i(null))})}getStep(t,e){return Go.getTypeStep(t,e)}loadStoredData(){this.configService.filter(this.optionNames).subscribe(t=>{this.options=t.map(t=>{const e=this.optionsForm.get(t.name),n=Go.getTypeValidators(t);return t.additionalTypeInfo=Go.getType(t.type),t.text=Vo.optionNameToText(t.name),t.value=J.find(t.value,t=>"osd"===t.section),t.value&&e.setValue("bool"===t.additionalTypeInfo.name?"true"===t.value.value:t.value.value),n&&(t.patternHelpText=n.patternHelpText,"max"in n&&""!==n.max&&(t.maxValue=n.max),"min"in n&&""!==n.min&&(t.minValue=n.min),e.setValidators(n.validators)),t})})}saveValues(){const t={};return this.optionNames.forEach(e=>{const n=this.optionsForm.getValue(e);null!==n&&""!==n&&(t[e]={section:"osd",value:n})}),this.configService.bulkCreate({options:t})}resetValue(t){this.configService.delete(t,"osd").subscribe(()=>{this.optionsForm.get(t).reset()})}}let zo=(()=>{class t{}return t.basicOptions=["osd_scrub_during_recovery","osd_scrub_begin_hour","osd_scrub_end_hour","osd_scrub_begin_week_day","osd_scrub_end_week_day","osd_scrub_min_interval","osd_scrub_max_interval","osd_deep_scrub_interval","osd_scrub_auto_repair","osd_max_scrubs","osd_scrub_priority","osd_scrub_sleep"],t.advancedOptions=["osd_scrub_auto_repair_num_errors","osd_debug_deep_scrub_sleep","osd_deep_scrub_keys","osd_deep_scrub_large_omap_object_key_threshold","osd_deep_scrub_large_omap_object_value_sum_threshold","osd_deep_scrub_randomize_ratio","osd_deep_scrub_stride","osd_deep_scrub_update_digest_min_age","osd_requested_scrub_priority","osd_scrub_backoff_ratio","osd_scrub_chunk_max","osd_scrub_chunk_min","osd_scrub_cost","osd_scrub_interval_randomize_ratio","osd_scrub_invalid_stats","osd_scrub_load_threshold","osd_scrub_max_preemptions"],t})();class Bo{constructor(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.notificationService=n,this.i18n=a,this.actionLabels=r,this.basicOptions=zo.basicOptions,this.advancedOptions=zo.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new js.a({}),this.resource=this.i18n("PG scrub options"),this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}submitAction(){const t=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&t.push(this.advancedOptionsValues.saveValues()),Object(Mo.a)(t).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n("Updated PG scrub options")),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}class Yo{constructor(t,e,n,a,r,i){this.bsModalRef=t,this.authStorageService=e,this.configService=n,this.notificationService=a,this.i18n=r,this.osdService=i,this.priorities=[],this.priorityAttrs={},this.permissions=this.authStorageService.getPermissions(),this.priorities=this.osdService.osdRecvSpeedModalPriorities.KNOWN_PRIORITIES,this.osdRecvSpeedForm=new js.a({priority:new $.i(null,{validators:[$.B.required]}),customizePriority:new $.i(!1)}),this.priorityAttrs={osd_max_backfills:{text:this.i18n("Max Backfills"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_active:{text:this.i18n("Recovery Max Active"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_max_single_start:{text:this.i18n("Recovery Max Single Start"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0},osd_recovery_sleep:{text:this.i18n("Recovery Sleep"),desc:"",patternHelpText:"",maxValue:void 0,minValue:void 0}},Object.keys(this.priorityAttrs).forEach(t=>{this.osdRecvSpeedForm.addControl(t,new $.i(null,{validators:[$.B.required]}))})}ngOnInit(){this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(t=>{const e=this.getCurrentValues(t);this.detectPriority(e.values,t=>{this.setPriority(t)}),this.setDescription(e.configOptions),this.setValidators(e.configOptions)})}detectPriority(t,e){const n=J.find(this.priorities,e=>J.isEqual(e.values,t));return this.osdRecvSpeedForm.controls.customizePriority.setValue(!1),n?e(n):4===Object.entries(t).length?(this.osdRecvSpeedForm.controls.customizePriority.setValue(!0),e(Object({name:"custom",text:this.i18n("Custom"),values:t}))):e(this.priorities[0])}getCurrentValues(t){const e={values:{},configOptions:[]};return t.forEach(t=>{e.configOptions.push(t),"value"in t?t.value.forEach(n=>{"osd"===n.section&&(e.values[t.name]=Number(n.value))}):"default"in t&&null!==t.default&&(e.values[t.name]=Number(t.default))}),e}setDescription(t){t.forEach(t=>{""!==t.desc&&(this.priorityAttrs[t.name].desc=t.desc)})}setPriority(t){const e=J.find(this.priorities,t=>"custom"===t.name);"custom"===t.name?e||this.priorities.push(t):e&&this.priorities.splice(this.priorities.indexOf(e),1),this.osdRecvSpeedForm.controls.priority.setValue(t.name),Object.entries(t.values).forEach(([t,e])=>{this.osdRecvSpeedForm.controls[t].setValue(e)})}setValidators(t){t.forEach(t=>{const e=Go.getTypeValidators(t);e?(e.validators.push($.B.required),"max"in e&&""!==e.max&&(this.priorityAttrs[t.name].maxValue=e.max),"min"in e&&""!==e.min&&(this.priorityAttrs[t.name].minValue=e.min),this.priorityAttrs[t.name].patternHelpText=e.patternHelpText,this.osdRecvSpeedForm.controls[t.name].setValidators(e.validators)):this.osdRecvSpeedForm.controls[t.name].setValidators($.B.required)})}onCustomizePriorityChange(){const t={};if(Object.keys(this.priorityAttrs).forEach(e=>{t[e]=this.osdRecvSpeedForm.getValue(e)}),this.osdRecvSpeedForm.getValue("customizePriority")){const e={name:"custom",text:this.i18n("Custom"),values:t};this.setPriority(e)}else this.detectPriority(t,t=>{this.setPriority(t)})}onPriorityChange(t){const e=J.find(this.priorities,e=>e.name===t)||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(e)}submitAction(){const t={};Object.keys(this.priorityAttrs).forEach(e=>{t[e]={section:"osd",value:this.osdRecvSpeedForm.getValue(e)}}),this.configService.bulkCreate({options:t}).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n('Updated OSD recovery speed priority "{{value}}"',{value:this.osdRecvSpeedForm.getValue("priority")})),this.bsModalRef.hide()},()=>{this.bsModalRef.hide()})}}var Ho=n("2EZI");class Uo{constructor(t,e,n){this.bsModalRef=t,this.osdService=e,this.fb=n,this.currentWeight=1}get weight(){return this.reweightForm.get("weight")}ngOnInit(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[$.B.required,$.B.max(1),$.B.min(0)])})}reweight(){this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(()=>this.bsModalRef.hide())}}class Wo{constructor(t,e,n,a,r){this.bsModalRef=t,this.osdService=e,this.notificationService=n,this.i18n=a,this.joinPipe=r,this.selected=[]}ngOnInit(){this.scrubForm=new $.k({})}scrub(){Object(Mo.a)(this.selected.map(t=>this.osdService.scrub(t,this.deep))).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n("{{operation}} was initialized in the following OSD(s): {{id}}",{operation:this.deep?"Deep scrub":"Scrub",id:this.joinPipe.transform(this.selected)})),this.bsModalRef.hide()},()=>this.bsModalRef.hide())}}const Ko=new ls.a("osd");class $o extends ds.a{constructor(t,e,n,a,r,i,s,o,u,l,d){super(),this.authStorageService=t,this.osdService=e,this.dimlessBinaryPipe=n,this.modalService=a,this.i18n=r,this.urlBuilder=i,this.router=s,this.depCheckerService=o,this.taskWrapper=u,this.actionLabels=l,this.notificationService=d,this.icons=ht.a,this.selection=new ti.a,this.osds=[],this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.CREATE,permission:"create",icon:ht.a.add,click:()=>{this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.CREATE,this.i18n("OSD"),()=>{this.router.navigate([this.urlBuilder.getCreate()])})},canBePrimary:t=>!t.hasSelection},{name:this.actionLabels.EDIT,permission:"update",icon:ht.a.edit,click:()=>this.editAction()},{name:this.actionLabels.SCRUB,permission:"update",icon:ht.a.analyse,click:()=>this.scrubAction(!1),disable:()=>!this.hasOsdSelected,canBePrimary:t=>t.hasSelection},{name:this.actionLabels.DEEP_SCRUB,permission:"update",icon:ht.a.deepCheck,click:()=>this.scrubAction(!0),disable:()=>!this.hasOsdSelected},{name:this.actionLabels.REWEIGHT,permission:"update",click:()=>this.reweight(),disable:()=>!this.hasOsdSelected||!this.selection.hasSingleSelection,icon:ht.a.reweight},{name:this.actionLabels.MARK_OUT,permission:"update",click:()=>this.showConfirmationModal(this.i18n("out"),this.osdService.markOut),disable:()=>this.isNotSelectedOrInState("out"),icon:ht.a.left},{name:this.actionLabels.MARK_IN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("in"),this.osdService.markIn),disable:()=>this.isNotSelectedOrInState("in"),icon:ht.a.right},{name:this.actionLabels.MARK_DOWN,permission:"update",click:()=>this.showConfirmationModal(this.i18n("down"),this.osdService.markDown),disable:()=>this.isNotSelectedOrInState("down"),icon:ht.a.down},{name:this.actionLabels.MARK_LOST,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Mark"),this.i18n("OSD lost"),this.i18n("marked lost"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",this.osdService.markLost),disable:()=>this.isNotSelectedOrInState("up"),icon:ht.a.flatten},{name:this.actionLabels.PURGE,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("Purge"),this.i18n("OSD"),this.i18n("purged"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new ti.a,this.osdService.purge(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:ht.a.erase},{name:this.actionLabels.DESTROY,permission:"delete",click:()=>this.showCriticalConfirmationModal(this.i18n("destroy"),this.i18n("OSD"),this.i18n("destroyed"),t=>this.osdService.safeToDestroy(JSON.stringify(t)),"is_safe_to_destroy",t=>(this.selection=new ti.a,this.osdService.destroy(t))),disable:()=>this.isNotSelectedOrInState("up"),icon:ht.a.destroyCircle},{name:this.actionLabels.DELETE,permission:"delete",click:()=>this.delete(),disable:()=>!this.hasOsdSelected,icon:ht.a.destroy}]}static collectStates(t){const e=[t.in?"in":"out"];return t.up?e.push("up"):t.state.includes("destroyed")?e.push("destroyed"):e.push("down"),e}ngOnInit(){this.clusterWideActions=[{name:this.i18n("Flags"),icon:ht.a.flag,click:()=>this.configureFlagsAction(),permission:"read",visible:()=>this.permissions.osd.read},{name:this.i18n("Recovery Priority"),icon:ht.a.deepCheck,click:()=>this.configureQosParamsAction(),permission:"read",visible:()=>this.permissions.configOpt.read},{name:this.i18n("PG scrub"),icon:ht.a.analyse,click:()=>this.configurePgScrubAction(),permission:"read",visible:()=>this.permissions.configOpt.read}],this.columns=[{prop:"host.name",name:this.i18n("Host")},{prop:"id",name:this.i18n("ID"),flexGrow:1,cellTransformation:Xr.a.bold},{prop:"collectedStates",name:this.i18n("Status"),flexGrow:1,cellTransformation:Xr.a.badge,customTemplateConfig:{map:{in:{class:"badge-success"},up:{class:"badge-success"},down:{class:"badge-danger"},out:{class:"badge-danger"},destroyed:{class:"badge-danger"}}}},{prop:"tree.device_class",name:this.i18n("Device class"),flexGrow:1,cellTransformation:Xr.a.badge,customTemplateConfig:{map:{hdd:{class:"badge-hdd"},ssd:{class:"badge-ssd"}}}},{prop:"stats.numpg",name:this.i18n("PGs"),flexGrow:1},{prop:"stats.stat_bytes",name:this.i18n("Size"),flexGrow:1,pipe:this.dimlessBinaryPipe},{prop:"stats.usage",name:this.i18n("Usage"),cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:this.i18n("Read bytes"),cellTransformation:Xr.a.sparkline},{prop:"stats_history.in_bytes",name:this.i18n("Write bytes"),cellTransformation:Xr.a.sparkline},{prop:"stats.op_r",name:this.i18n("Read ops"),cellTransformation:Xr.a.perSecond},{prop:"stats.op_w",name:this.i18n("Write ops"),cellTransformation:Xr.a.perSecond}]}getSelectedOsdIds(){const t=this.osds.map(t=>t.id);return this.selection.selected.map(t=>t.id).filter(e=>t.includes(e))}getSelectedOsds(){return this.osds.filter(t=>!J.isUndefined(t)&&this.getSelectedOsdIds().includes(t.id))}get hasOsdSelected(){return this.getSelectedOsdIds().length>0}updateSelection(t){this.selection=t}isNotSelectedOrInState(t){const e=this.getSelectedOsds();if(0===e.length)return!0;switch(t){case"in":return e.some(t=>1===t.in);case"out":return e.some(t=>1!==t.in);case"down":return e.some(t=>1!==t.up);case"up":return e.some(t=>1===t.up)}}getOsdList(){this.osdService.getList().subscribe(t=>{this.osds=t.map(t=>(t.collectedStates=$o.collectStates(t),t.stats_history.out_bytes=t.stats_history.op_out_bytes.map(t=>t[1]),t.stats_history.in_bytes=t.stats_history.op_in_bytes.map(t=>t[1]),t.stats.usage=t.stats.stat_bytes_used/t.stats.stat_bytes,t.cdIsBinary=!0,t))})}editAction(){const t=J.filter(this.osds,["id",this.selection.first().id]).pop();this.modalService.show(Qr.a,{initialState:{titleText:this.i18n("Edit OSD: {{id}}",{id:t.id}),fields:[{type:"text",name:"deviceClass",value:t.tree.device_class,label:this.i18n("Device class"),required:!0}],submitButtonText:this.i18n("Edit OSD"),onSubmit:e=>{this.osdService.update(t.id,e.deviceClass).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n('Updated OSD "{{id}}"',{id:t.id})),this.getOsdList()})}}})}scrubAction(t){if(!this.hasOsdSelected)return;const e={selected:this.getSelectedOsdIds(),deep:t};this.bsModalRef=this.modalService.show(Wo,{initialState:e})}configureFlagsAction(){this.bsModalRef=this.modalService.show(jo,{})}showConfirmationModal(t,e){this.bsModalRef=this.modalService.show(qo.a,{initialState:{titleText:this.i18n("Mark OSD {{markAction}}",{markAction:t}),buttonText:this.i18n("Mark {{markAction}}",{markAction:t}),bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:t},onSubmit:()=>{Object(Mo.a)(this.getSelectedOsdIds().map(t=>e.call(this.osdService,t))).subscribe(()=>this.bsModalRef.hide())}}})}reweight(){const t=this.osds.filter(t=>t.id===this.selection.first().id).pop();this.modalService.show(Uo,{initialState:{currentWeight:t.weight,osdId:t.id}})}delete(){const t=new js.a({preserve:new $.i(!1)});this.depCheckerService.checkOrchestratorOrModal(this.actionLabels.DELETE,this.i18n("OSD"),()=>{this.showCriticalConfirmationModal(this.i18n("delete"),this.i18n("OSD"),this.i18n("deleted"),t=>this.osdService.safeToDelete(JSON.stringify(t)),"is_safe_to_delete",e=>(this.selection=new ti.a,this.taskWrapper.wrapTaskAroundCall({task:new hs.a("osd/"+At.e.DELETE,{svc_id:e}),call:this.osdService.delete(e,t.value.preserve,!0)})),!0,t,this.deleteOsdExtraTpl)})}showCriticalConfirmationModal(t,e,n,a,r,i,s=!1,o,u){a(this.getSelectedOsdIds()).subscribe(a=>{const l=this.modalService.show(cs.a,{initialState:{actionDescription:t,itemDescription:e,bodyTemplate:this.criticalConfirmationTpl,bodyContext:{safeToPerform:a[r],message:a.message,actionDescription:n,osdIds:this.getSelectedOsdIds()},childFormGroup:o,childFormGroupTemplate:u,submitAction:()=>{const t=Object(Mo.a)(this.getSelectedOsdIds().map(t=>i.call(this.osdService,t)));s?t.subscribe(void 0,()=>{this.getOsdList(),l.hide()},()=>l.hide()):t.subscribe(()=>{this.getOsdList(),l.hide()},()=>l.hide())}}})})}configureQosParamsAction(){this.bsModalRef=this.modalService.show(Yo,{})}configurePgScrubAction(){this.bsModalRef=this.modalService.show(Bo,{class:"modal-lg"})}}var Zo=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Jo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,go.b,go.a)),s["ɵdid"](1,573440,null,0,po.a,[],{total:[0,"total"],used:[1,"used"]},null)],(function(t,e){t(e,1,0,e.context.row.stats.stat_bytes,e.context.row.stats.stat_bytes_used)}),null)}function Qo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","lo02I1Aiz"]],null,null,null,qr.b,qr.a)),s["ɵdid"](3,638976,null,0,jr.a,[Fr.b,re.a,me.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){t(e,1,0,"Overall Performance"),t(e,3,0,"osd-overview?","three","lo02I1Aiz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function Xo(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["OSD(s) ",""])),s["ɵppd"](3,1),(t()(),s["ɵted"](-1,null,[" will be marked\n"])),(t()(),s["ɵeld"](5,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.getSelectedOsdIds()));t(e,2,0,a),t(e,6,0,e.context.markActionDescription)}))}function tu(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSD is"]))],null,null)}function eu(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["OSDs are"]))],null,null)}function nu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","danger"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"cd-alert-panel",[["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](2,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The "])),(t()(),s["ɵeld"](4,0,null,0,5,null,null,null,null,null,null,null)),s["ɵdid"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tu)),s["ɵdid"](7,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,eu)),s["ɵdid"](9,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](10,0,[" not safe to be ","! ",""]))],(function(t,e){var n=e.component;t(e,2,0,"warning"),t(e,5,0,n.selection.hasSingleSelection),t(e,7,0,"true"),t(e,9,0,"false")}),(function(t,e){t(e,10,0,e.parent.context.actionDescription,e.parent.context.message)}))}function au(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,nu)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](4,null,["OSD ",""])),s["ɵppd"](5,1),(t()(),s["ɵted"](-1,null,[" will be "])),(t()(),s["ɵeld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""])),(t()(),s["ɵted"](-1,null,[" if you proceed."]))],(function(t,e){t(e,1,0,!e.context.safeToPerform)}),(function(t,e){var n=s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent,0),e.context.osdIds));t(e,4,0,n),t(e,8,0,e.context.actionDescription)}))}function ru(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,null,null,null,null,(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,1).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,4).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,540672,null,0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](3,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](4,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](5,0,null,null,17,null,null,null,null,null,null,null)),s["ɵdid"](6,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](8,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](9,0,null,null,13,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](10,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,8,{FormControlNames:1}),s["ɵqud"](603979776,9,{messagesBlock:0}),(t()(),s["ɵeld"](13,0,null,0,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","preserve"],["id","preserve"],["name","preserve"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](17,671744,[[8,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](19,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](20,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](21,0,null,null,1,"label",[["class","custom-control-label"],["for","preserve"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Preserve OSD ID(s) for replacement."]))],(function(t,e){t(e,1,0,e.context.form),t(e,4,0,e.context.form),t(e,6,0,"child"),t(e,10,0),t(e,17,0,"preserve"),t(e,20,0,"preserve")}),(function(t,e){t(e,9,0,s["ɵnov"](e,10).hasErrors,s["ɵnov"](e,10).hasSuccess),t(e,14,0,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,20).validClass,s["ɵnov"](e,20).invalidClass)}))}function iu(t){return s["ɵvid"](0,[s["ɵpid"](0,ps.a,[]),s["ɵqud"](402653184,1,{osdUsageTpl:0}),s["ɵqud"](402653184,2,{markOsdConfirmationTpl:0}),s["ɵqud"](402653184,3,{criticalConfirmationTpl:0}),s["ɵqud"](402653184,4,{tableComponent:0}),s["ɵqud"](671088640,5,{reweightBodyTpl:0}),s["ɵqud"](671088640,6,{safeToDestroyBodyTpl:0}),s["ɵqud"](671088640,7,{deleteOsdExtraTpl:0}),(t()(),s["ɵeld"](8,0,null,null,16,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](9,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](10,0,null,0,12,"tab",[["heading","OSDs List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](11,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](12,0,null,null,9,"cd-table",[["selectionType","multiClick"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getOsdList()&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](13,2867200,[[4,4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"],updateSelectionOnRefresh:[4,"updateSelectionOnRefresh"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](14,0,null,1,5,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,1,"cd-table-actions",[["class","btn-group"],["id","osd-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](16,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](17,0,null,null,2,"cd-table-actions",[["btnColor","light"],["class","btn-group"],["dropDownOnly","Cluster-wide configuration"],["id","cluster-wide-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](18,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"],btnColor:[3,"btnColor"],dropDownOnly:[4,"dropDownOnly"]},null),s["ɵpod"](19,{read:0}),(t()(),s["ɵeld"](20,0,null,3,1,"cd-osd-details",[["cdTableDetail",""]],null,null,null,Lo,So)),s["ɵdid"](21,573440,null,0,wo,[wi,vt.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["osdUsageTpl",2]],null,0,null,Jo)),(t()(),s["ɵand"](16777216,null,0,1,null,Qo)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["markOsdConfirmationTpl",2]],null,0,null,Xo)),(t()(),s["ɵand"](0,[[3,2],["criticalConfirmationTpl",2]],null,0,null,au)),(t()(),s["ɵand"](0,[[7,2],["deleteOsdExtraTpl",2]],null,0,null,ru))],(function(t,e){var n=e.component;t(e,11,0,"OSDs List"),t(e,13,0,n.osds,n.columns,!0,"multiClick","never"),t(e,16,0,n.permissions.osd,n.selection,n.tableActions);var a=t(e,19,0,!0);t(e,18,0,a,n.selection,n.clusterWideActions,"light","Cluster-wide configuration"),t(e,21,0,n.expandedRow),t(e,24,0,n.permissions.grafana.read)}),(function(t,e){t(e,8,0,s["ɵnov"](e,9).clazz),t(e,10,0,s["ɵnov"](e,11).id,s["ɵnov"](e,11).active,s["ɵnov"](e,11).addClass,s["ɵnov"](e,11).role,s["ɵnov"](e,11).ariaLabelledby)}))}function su(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-osd-list",[],null,null,null,iu,Zo)),s["ɵprd"](256,null,ls.a,Ko,[]),s["ɵdid"](2,114688,null,0,$o,[vt.a,wi,_a.a,Lt.b,me.a,ls.a,qt.m,ms,ys.a,At.b,gt.a],null,null)],(function(t,e){t(e,2,0)}),null)}var ou=s["ɵccf"]("cd-osd-list",$o,su,{},{},[]),uu=n("4HWh"),lu=n("p4Cf");class du{constructor(t,e,n){this.formBuilder=t,this.bsModalRef=e,this.actionLabels=n,this.submitAction=new s.EventEmitter,this.icons=ht.a,this.filterColumns=[],this.devices=[],this.filteredDevices=[],this.capacity=0,this.canSubmit=!1,this.requiredFilters=[],this.action=n.ADD,this.createForm()}ngAfterViewInit(){const t=J.filter(this.inventoryDevices.columns,t=>this.filterColumns.includes(t.prop)&&"hostname"!==t.prop);this.requiredFilters=J.map(t,"name")}createForm(){this.formGroup=this.formBuilder.group({})}onFilterChange(t){if(this.capacity=0,this.canSubmit=!1,J.isEmpty(t.filters))this.filteredDevices=[],this.event=void 0;else{const e=t.filters.filter(t=>"hostname"!==t.prop);this.canSubmit=!J.isEmpty(e),this.filteredDevices=t.data,this.capacity=J.sumBy(this.filteredDevices,"sys_api.size"),this.event=t}}onSubmit(){this.submitAction.emit(this.event),this.bsModalRef.hide()}}class cu{constructor(t,e){this.bsModalService=t,this.i18n=e,this.selected=new s.EventEmitter,this.cleared=new s.EventEmitter,this.icons=ht.a,this.devices=[],this.capacity=0,this.appliedFilters=[],this.tooltips={noAvailDevices:this.i18n("No available devices"),addPrimaryFirst:this.i18n("Please add primary devices first"),addByFilters:this.i18n("Add devices by using filters")}}ngOnInit(){this.updateAddButtonTooltip()}ngOnChanges(){this.updateAddButtonTooltip()}showSelectionModal(){let t=["human_readable_type","sys_api.vendor","sys_api.model","sys_api.size"];"data"===this.type&&(t=["hostname",...t]),this.bsModalService.show(du,{class:"modal-xl",initialState:{hostname:this.hostname,deviceType:this.name,devices:this.availDevices,filterColumns:t}}).content.submitAction.subscribe(t=>{this.devices=t.data,this.capacity=J.sumBy(this.devices,"sys_api.size"),this.appliedFilters=t.filters;const e=J.assign({type:this.type},t);this.selected.emit(e)})}updateAddButtonTooltip(){this.addButtonTooltip="data"===this.type&&0===this.availDevices.length?this.tooltips.noAvailDevices:this.canSelect?0===this.availDevices.length?this.tooltips.noAvailDevices:this.tooltips.addByFilters:this.tooltips.addPrimaryFirst}clearDevices(){const t={type:this.type,clearedDevices:[...this.devices]};this.devices=[],this.cleared.emit(t)}}var fu=s["ɵcrt"]({encapsulation:0,styles:[[".tc_clearSelections[_ngcontent-%COMP%]{text-decoration:none}"]],data:{}});function hu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The primary storage devices. These devices contain all OSD data."]))],null,null)}function gu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Write-Ahead-Log devices. These devices are used for BlueStore’s internal journal. It is only useful to use a WAL device if the device is faster than the primary device (e.g. NVME devices or SSDs). If there is only a small amount of fast storage available (e.g., less than a gigabyte), we recommend using it as a WAL device."]))],null,null)}function pu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB devices can be used for storing BlueStore’s internal metadata. It is only helpful to provision a DB device if it is faster than the primary device (e.g. NVME devices or SSD)."]))],null,null)}function bu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"button",[["class","btn btn-light"],["data-toggle","tooltip"],["type","button"]],[[8,"title",0],[8,"disabled",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showSelectionModal()&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add"]))],(function(t,e){var n=t(e,5,0,e.component.icons.add);t(e,4,0,n)}),(function(t,e){var n=e.component;t(e,1,0,n.addButtonTooltip,0===n.availDevices.length||!n.canSelect)}))}function mu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",": ",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit.name,e.context.$implicit.value.formatted)}))}function yu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["Raw capacity: ",""])),s["ɵppd"](3,1)],null,(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent,0),n.capacity));t(e,2,0,a)}))}function vu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","pb-2 my-2 border-bottom"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,mu)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,6,"a",[["class","tc_clearSelections"],["href",""]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(t.component.clearDevices(),a=!1),a}),null,null)),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clear"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,2,"cd-inventory-devices",[],null,null,null,ai,ni)),s["ɵdid"](12,245760,null,0,ei,[vt.a,_a.a,me.a,Lt.b,gt.a,Jr],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},null),s["ɵpad"](13,2),(t()(),s["ɵand"](16777216,null,null,1,null,yu)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,n.appliedFilters);var a=t(e,7,0,n.icons.clearFilters);t(e,6,0,a);var r=n.devices,i=t(e,13,0,"available","osd_ids");t(e,12,0,r,i,s["ɵEMPTY_ARRAY"]),t(e,15,0,"data"===n.type)}),null)}function xu(t){return s["ɵvid"](0,[s["ɵpid"](0,_a.a,[Ea.a]),(t()(),s["ɵeld"](1,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](2,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,10,"label",[["class","cd-col-form-label"],["for","createDeleteButton"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," devices"])),(t()(),s["ɵeld"](8,0,null,null,7,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](9,49152,null,0,lu.a,[],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,hu)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,gu)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,pu)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](16,0,null,0,3,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,bu)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),s["ɵand"](0,[["blockClearDevices",2]],null,0,null,vu))],(function(t,e){var n=e.component;t(e,2,0),t(e,11,0,"data"===n.type),t(e,13,0,"wal"===n.type),t(e,15,0,"db"===n.type),t(e,18,0,0===n.devices.length,s["ɵnov"](e,19))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,n.name)}))}class _u{constructor(t,e,n,a,r){this.bsModalRef=t,this.actionLabels=e,this.formBuilder=n,this.osdService=a,this.taskWrapper=r,this.driveGroups=[],this.submitAction=new s.EventEmitter,this.action=e.CREATE,this.createForm()}ngOnInit(){}createForm(){this.formGroup=this.formBuilder.group({})}onSubmit(){this.taskWrapper.wrapTaskAroundCall({task:new hs.a("osd/"+At.e.CREATE,{tracking_id:J.join(J.map(this.driveGroups,"service_id"),", ")}),call:this.osdService.create(this.driveGroups)}).subscribe(void 0,()=>{this.formGroup.setErrors({cdSubmitButton:!0})},()=>{this.submitAction.emit(),this.bsModalRef.hide()})}}class Tu{constructor(){this.reset(),this.formatterService=new Ea.a,this.deviceSelectionAttrs={"sys_api.vendor":{name:"vendor"},"sys_api.model":{name:"model"},device_id:{name:"device_id"},human_readable_type:{name:"rotational",formatter:t=>"hdd"===t.toLowerCase()},"sys_api.size":{name:"size",formatter:t=>this.formatterService.format_number(t,1024,["B","KB","MB","GB","TB","PB"]).replace(" ","")}}}reset(){this.spec={service_type:"osd",service_id:`dashboard-${J.now()}`}}setName(t){this.spec.service_id=t}setHostPattern(t){this.spec.host_pattern=t}setDeviceSelection(t,e){const n=`${t}_devices`;this.spec[n]={},e.forEach(t=>{const e=this.deviceSelectionAttrs[t.prop];e&&(this.spec[n][e.name]=e.formatter?e.formatter(t.value.raw):t.value.raw)})}clearDeviceSelection(t){delete this.spec[`${t}_devices`]}setSlots(t,e){const n=`${t}_slots`;0===e?delete this.spec[n]:this.spec[n]=e}setFeature(t,e){e?this.spec[t]=!0:delete this.spec[t]}}class Ou{constructor(t,e,n,a,r,i){this.actionLabels=t,this.authStorageService=e,this.i18n=n,this.orchService=a,this.router=r,this.bsModalService=i,this.icons=ht.a,this.columns=[],this.loading=!1,this.allDevices=[],this.availDevices=[],this.dataDeviceFilters=[],this.dbDeviceFilters=[],this.walDeviceFilters=[],this.hostname="",this.driveGroup=new Tu,this.featureList=[],this.hasOrchestrator=!1,this.resource=this.i18n("OSDs"),this.action=this.actionLabels.CREATE,this.features={encrypted:{key:"encrypted",desc:this.i18n("Encryption")}},this.featureList=J.map(this.features,(t,e)=>Object.assign(t,{key:e})),this.createForm()}ngOnInit(){this.orchService.status().subscribe(t=>{this.hasOrchestrator=t.available,this.hasOrchestrator&&this.getDataDevices()}),this.form.get("walSlots").valueChanges.subscribe(t=>this.setSlots("wal",t)),this.form.get("dbSlots").valueChanges.subscribe(t=>this.setSlots("db",t)),J.each(this.features,t=>{this.form.get("features").get(t.key).valueChanges.subscribe(e=>this.featureFormUpdate(t.key,e))})}createForm(){this.form=new js.a({walSlots:new $.i(0,{validators:[$.B.min(0)]}),dbSlots:new $.i(0,{validators:[$.B.min(0)]}),features:new js.a(this.featureList.reduce((t,e)=>(t[e.key]=new $.i({value:!1,disabled:!0}),t),{}))})}getDataDevices(){this.loading||(this.loading=!0,this.orchService.inventoryDeviceList().subscribe(t=>{this.allDevices=J.filter(t,"available"),this.availDevices=[...this.allDevices],this.loading=!1},()=>{this.allDevices=[],this.availDevices=[],this.loading=!1}))}setSlots(t,e){"number"==typeof e&&e>=0&&this.driveGroup.setSlots(t,e)}featureFormUpdate(t,e){this.driveGroup.setFeature(t,e)}enableFeatures(){this.featureList.forEach(t=>{this.form.get(t.key).enable({emitEvent:!1})})}disableFeatures(){this.featureList.forEach(t=>{const e=this.form.get(t.key);e.disable({emitEvent:!1}),e.setValue(!1,{emitEvent:!1})})}onDevicesSelected(t){if(this.availDevices=t.dataOut,"data"===t.type){const e=J.find(t.filters,{prop:"hostname"});e?(this.hostname=e.value.raw,this.availDevices=t.dataOut.filter(t=>t.hostname===this.hostname),this.driveGroup.setHostPattern(this.hostname)):this.driveGroup.setHostPattern("*"),this.enableFeatures()}this.driveGroup.setDeviceSelection(t.type,t.filters)}onDevicesCleared(t){"data"===t.type?(this.availDevices=[...this.allDevices],this.walDeviceSelectionGroups.devices=[],this.dbDeviceSelectionGroups.devices=[],this.disableFeatures(),this.driveGroup.reset(),this.form.get("walSlots").setValue(0,{emitEvent:!1}),this.form.get("dbSlots").setValue(0,{emitEvent:!1})):(this.availDevices=[...this.availDevices,...t.clearedDevices],this.driveGroup.clearDeviceSelection(t.type),this.form.get(`${t.type}Slots`).setValue(0,{emitEvent:!1}))}submit(){const t=this.authStorageService.getUsername();this.driveGroup.setName(`dashboard-${t}-${J.now()}`),this.bsModalService.show(_u,{initialState:{driveGroups:[this.driveGroup.spec]}}).content.submitAction.subscribe(()=>{this.router.navigate(["/osd"])}),this.previewButton.loading=!1}}var wu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Su(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,Zr,$r)),s["ɵdid"](1,49152,null,0,Kr,[],null,null)],null,null)}function Iu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function Nu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","walSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["WAL slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](8,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per WAL device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"input",[["class","form-control"],["formControlName","walSlots"],["id","walSlots"],["min","0"],["name","walSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,16)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,16)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,16)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),a}),null,null)),s["ɵdid"](16,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](17,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](19,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](21,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](22,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Iu)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,19,0,"walSlots"),t(e,22,0,"walSlots"),t(e,24,0,n.form.showError("walSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,21).ngClassUntouched,s["ɵnov"](e,21).ngClassTouched,s["ɵnov"](e,21).ngClassPristine,s["ɵnov"](e,21).ngClassDirty,s["ɵnov"](e,21).ngClassValid,s["ɵnov"](e,21).ngClassInvalid,s["ɵnov"](e,21).ngClassPending,s["ɵnov"](e,22).validClass,s["ɵnov"](e,22).invalidClass)}))}function Cu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value should be greater than or equal to 0"]))],null,null)}function Ru(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,9,"label",[["class","cd-col-form-label"],["for","dbSlots"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DB slots"])),(t()(),s["ɵeld"](7,0,null,null,6,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](8,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["How many OSDs per DB device."])),(t()(),s["ɵeld"](11,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Specify 0 to let Orchestrator backend decide it."])),(t()(),s["ɵeld"](14,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"input",[["class","form-control"],["formControlName","dbSlots"],["id","dbSlots"],["min","0"],["name","dbSlots"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,16)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,16).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,16)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,16)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,17).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),a}),null,null)),s["ɵdid"](16,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](17,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](19,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](21,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](22,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cu)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,19,0,"dbSlots"),t(e,22,0,"dbSlots"),t(e,24,0,n.form.showError("dbSlots",s["ɵnov"](e.parent,3),"min"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,15,0,s["ɵnov"](e,21).ngClassUntouched,s["ɵnov"](e,21).ngClassTouched,s["ɵnov"](e,21).ngClassPristine,s["ɵnov"](e,21).ngClassDirty,s["ɵnov"](e,21).ngClassValid,s["ɵnov"](e,21).ngClassInvalid,s["ɵnov"](e,21).ngClassPending,s["ɵnov"](e,22).validClass,s["ɵnov"](e,22).invalidClass)}))}function Au(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[8,"name",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,2).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](4,671744,[[9,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](6,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](7,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](9,null,["",""]))],(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,7,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,""),s["ɵnov"](e,6).ngClassUntouched,s["ɵnov"](e,6).ngClassTouched,s["ɵnov"](e,6).ngClassPristine,s["ɵnov"](e,6).ngClassDirty,s["ɵnov"](e,6).ngClassValid,s["ɵnov"](e,6).ngClassInvalid,s["ɵnov"](e,6).ngClassPending,s["ɵnov"](e,7).validClass,s["ɵnov"](e,7).invalidClass]),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.key,"")),t(e,9,0,e.context.$implicit.desc)}))}function ku(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,48,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,41,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[""," ",""])),s["ɵppd"](10,1),s["ɵppd"](11,1),(t()(),s["ɵeld"](12,0,null,null,29,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,2,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"cd-osd-devices-selection-groups",[["name","Primary"],["type","data"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),xu,fu)),s["ɵdid"](15,638976,[[1,4],["dataDeviceSelectionGroups",4]],0,cu,[Lt.b,me.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵeld"](16,0,null,null,10,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Shared devices"])),(t()(),s["ɵeld"](19,0,null,null,1,"cd-osd-devices-selection-groups",[["name","WAL"],["type","wal"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),xu,fu)),s["ɵdid"](20,638976,[[2,4],["walDeviceSelectionGroups",4]],0,cu,[Lt.b,me.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,Nu)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](23,0,null,null,1,"cd-osd-devices-selection-groups",[["name","DB"],["type","db"]],null,[[null,"selected"],[null,"cleared"]],(function(t,e,n){var a=!0,r=t.component;return"selected"===e&&(a=!1!==r.onDevicesSelected(n)&&a),"cleared"===e&&(a=!1!==r.onDevicesCleared(n)&&a),a}),xu,fu)),s["ɵdid"](24,638976,[[3,4],["dbDeviceSelectionGroups",4]],0,cu,[Lt.b,me.a],{type:[0,"type"],name:[1,"name"],availDevices:[2,"availDevices"],canSelect:[3,"canSelect"]},{selected:"selected",cleared:"cleared"}),(t()(),s["ɵand"](16777216,null,null,1,null,Ru)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](27,0,null,null,14,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Configuration"])),(t()(),s["ɵeld"](30,0,null,null,11,"div",[["class","form-group row"],["formGroupName","features"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](31,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](33,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](34,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](37,0,null,0,1,"label",[["class","cd-col-form-label"],["for","features"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Features"])),(t()(),s["ɵeld"](39,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Au)),s["ɵdid"](41,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](42,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](45,114688,[[4,4],["previewButton",4]],0,Ds.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Preview"])),(t()(),s["ɵeld"](47,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](48,49152,null,0,Ms.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.form),t(e,6,0,n.form),t(e,15,0,"data","Primary",n.availDevices,0!==n.availDevices.length),t(e,20,0,"wal","WAL",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,22,0,0!==s["ɵnov"](e,20).devices.length),t(e,24,0,"db","DB",n.availDevices,0!==s["ɵnov"](e,15).devices.length),t(e,26,0,0!==s["ɵnov"](e,24).devices.length),t(e,31,0,"features"),t(e,34,0),t(e,41,0,n.featureList),t(e,45,0,s["ɵnov"](e,3),0===s["ɵnov"](e,15).devices.length)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending);var a=s["ɵunv"](e,9,0,t(e,10,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,9,1,t(e,11,0,s["ɵnov"](e.parent,1),n.resource));t(e,9,0,a,r),t(e,30,0,s["ɵnov"](e,33).ngClassUntouched,s["ɵnov"](e,33).ngClassTouched,s["ɵnov"](e,33).ngClassPristine,s["ɵnov"](e,33).ngClassDirty,s["ɵnov"](e,33).ngClassValid,s["ɵnov"](e,33).ngClassInvalid,s["ɵnov"](e,33).ngClassPending,s["ɵnov"](e,34).hasErrors,s["ɵnov"](e,34).hasSuccess)}))}function Eu(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,qs.a,[]),s["ɵqud"](671088640,1,{dataDeviceSelectionGroups:0}),s["ɵqud"](671088640,2,{walDeviceSelectionGroups:0}),s["ɵqud"](671088640,3,{dbDeviceSelectionGroups:0}),s["ɵqud"](671088640,4,{previewButton:0}),(t()(),s["ɵand"](16777216,null,null,1,null,Su)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ku)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,!n.hasOrchestrator),t(e,9,0,!n.loading&&n.hasOrchestrator)}),null)}function Lu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-form",[],null,null,null,Eu,wu)),s["ɵdid"](1,114688,null,0,Ou,[At.b,vt.a,me.a,Jr,qt.m,Lt.b],null,null)],(function(t,e){t(e,1,0)}),null)}var Du=s["ɵccf"]("cd-osd-form",Ou,Lu,{},{},[]),Pu=n("iExv");class Mu{constructor(t){this.i18n=t,this.flags={runtime:this.i18n("The value can be updated at runtime."),no_mon_update:this.i18n("Daemons/clients do not pull this value from the\n      monitor config database. We disallow setting this option via 'ceph config\n      set ...'. This option should be configured via ceph.conf or via the\n      command line."),startup:this.i18n("Option takes effect only during daemon startup."),cluster_create:this.i18n("Option only affects cluster creation."),create:this.i18n("Option only affects daemon creation.")}}ngOnChanges(){this.selection&&(this.selection.services=J.split(this.selection.services,","))}}var qu=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ju(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function Fu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""])),s["ɵppd"](4,1)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.component.flags[e.context.$implicit],""));var n=s["ɵunv"](e,3,0,t(e,4,0,s["ɵnov"](e.parent.parent,0),e.context.$implicit));t(e,3,0,n)}))}function Gu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark mr-2"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function Vu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,94,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,92,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,90,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,89,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"td",[["class","bold w-25"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](9,0,null,null,1,"td",[["class","w-75"]],null,null,null,null,null)),(t()(),s["ɵted"](10,null,["",""])),(t()(),s["ɵeld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](14,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](15,null,["",""])),(t()(),s["ɵeld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](17,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](19,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](20,null,["",""])),(t()(),s["ɵeld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Current values"])),(t()(),s["ɵeld"](24,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ju)),s["ɵdid"](26,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](30,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](31,null,["",""])),(t()(),s["ɵeld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](33,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](35,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](36,null,["",""])),(t()(),s["ɵeld"](37,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type"])),(t()(),s["ɵeld"](40,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](41,null,["",""])),(t()(),s["ɵeld"](42,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Min"])),(t()(),s["ɵeld"](45,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](46,null,["",""])),(t()(),s["ɵeld"](47,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Max"])),(t()(),s["ɵeld"](50,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](51,null,["",""])),(t()(),s["ɵeld"](52,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Flags"])),(t()(),s["ɵeld"](55,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Fu)),s["ɵdid"](57,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](58,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](61,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Gu)),s["ɵdid"](63,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](65,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Source"])),(t()(),s["ɵeld"](67,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](68,null,["",""])),(t()(),s["ɵeld"](69,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](70,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Level"])),(t()(),s["ɵeld"](72,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](73,null,["",""])),(t()(),s["ɵeld"](74,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Can be updated at runtime (editable)"])),(t()(),s["ɵeld"](77,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](78,null,["",""])),s["ɵppd"](79,1),(t()(),s["ɵeld"](80,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](81,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Tags"])),(t()(),s["ɵeld"](83,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](84,null,["",""])),(t()(),s["ɵeld"](85,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enum values"])),(t()(),s["ɵeld"](88,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](89,null,["",""])),(t()(),s["ɵeld"](90,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](91,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["See also"])),(t()(),s["ɵeld"](93,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](94,null,["",""]))],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,26,0,n.selection.value),t(e,57,0,n.selection.flags),t(e,63,0,n.selection.services)}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,10,0,n.selection.name),t(e,15,0,n.selection.desc),t(e,20,0,n.selection.long_desc),t(e,31,0,n.selection.default),t(e,36,0,n.selection.daemon_default),t(e,41,0,n.selection.type),t(e,46,0,n.selection.min),t(e,51,0,n.selection.max),t(e,68,0,n.selection.source),t(e,73,0,n.selection.level);var a=s["ɵunv"](e,78,0,t(e,79,0,s["ɵnov"](e.parent,1),n.selection.can_update_at_runtime));t(e,78,0,a),t(e,84,0,n.selection.tags),t(e,89,0,n.selection.enum_values),t(e,94,0,n.selection.see_also)}))}function zu(t){return s["ɵvid"](0,[s["ɵpid"](0,i.UpperCasePipe,[]),s["ɵpid"](0,Pu.a,[me.a]),(t()(),s["ɵand"](16777216,null,null,1,null,Vu)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,3,0,e.component.selection)}),null)}class Bu extends ds.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.configurationService=e,this.i18n=n,this.actionLabels=a,this.data=[],this.icons=ht.a,this.selection=new ti.a,this.filters=[{name:this.i18n("Level"),prop:"level",filterOptions:["basic","advanced","dev"],filterInitValue:"basic",filterPredicate:(t,e)=>{let n;return function(t){t[t.basic=0]="basic",t[t.advanced=1]="advanced",t[t.dev=2]="dev"}(n||(n={})),n[t.level]<=n[e]}},{name:this.i18n("Service"),prop:"services",filterOptions:["mon","mgr","osd","mds","common","mds_client","rgw"],filterPredicate:(t,e)=>t.services.includes(e)},{name:this.i18n("Source"),prop:"source",filterOptions:["mon"],filterPredicate:(t,e)=>!!t.hasOwnProperty("source")&&t.source.includes(e)},{name:this.i18n("Modified"),prop:"modified",filterOptions:["yes","no"],filterPredicate:(t,e)=>!("yes"!==e||!t.hasOwnProperty("value"))||"no"===e&&!t.hasOwnProperty("value")}],this.permission=this.authStorageService.getPermissions().configOpt;const r=()=>this.selection.first()&&`${encodeURIComponent(this.selection.first().name)}`;this.tableActions=[{permission:"update",icon:ht.a.edit,routerLink:()=>`/configuration/edit/${r()}`,name:this.actionLabels.EDIT,disable:()=>!this.isEditable(this.selection)}]}ngOnInit(){this.columns=[{canAutoResize:!0,prop:"name",name:this.i18n("Name")},{prop:"desc",name:this.i18n("Description"),cellClass:"wrap"},{prop:"value",name:this.i18n("Current value"),cellClass:"wrap",cellTemplate:this.confValTpl},{prop:"default",name:this.i18n("Default"),cellClass:"wrap"},{prop:"can_update_at_runtime",name:this.i18n("Editable"),cellTransformation:Xr.a.checkIcon,flexGrow:.4,cellClass:"text-center"}]}updateSelection(t){this.selection=t}getConfigurationList(t){this.configurationService.getConfigData().subscribe(t=>{this.data=t},()=>{t.error()})}isEditable(t){return 1===t.selected.length&&t.selected[0].can_update_at_runtime}}var Yu=s["ɵcrt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}.fa-stack[_ngcontent-%COMP%]{font-size:.79rem}.fa-stack[_ngcontent-%COMP%]   .fa-stack-1x[_ngcontent-%COMP%]{margin-left:8px;margin-top:5px}  datatable-body-cell.wrap{word-break:break-all}"]],data:{}});function Hu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",": ","",""])),(t()(),s["ɵeld"](2,0,null,null,0,"br",[],null,null,null,null,null))],null,(function(t,e){t(e,1,0,e.context.$implicit.section,e.context.$implicit.value,e.context.last?"":",")}))}function Uu(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Hu)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.parent.context.value)}),null)}function Wu(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Uu)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.context.value)}),null)}function Ku(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{confValTpl:0}),s["ɵqud"](671088640,2,{confFlagTpl:0}),(t()(),s["ɵeld"](2,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getConfigurationList(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](3,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"],extraFilterableColumns:[4,"extraFilterableColumns"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](5,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](6,0,null,3,1,"cd-configuration-details",[["cdTableDetail",""]],null,null,null,zu,qu)),s["ɵdid"](7,573440,null,0,Mu,[me.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[1,2],["confValTpl",2]],null,0,null,Wu))],(function(t,e){var n=e.component;t(e,3,0,n.data,n.columns,!0,"single",n.filters),t(e,5,0,n.permission,n.selection,n.tableActions),t(e,7,0,n.expandedRow)}),null)}function $u(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration",[],null,null,null,Ku,Yu)),s["ɵdid"](1,114688,null,0,Bu,[vt.a,Fo.a,me.a,At.b],null,null)],(function(t,e){t(e,1,0)}),null)}var Zu=s["ɵccf"]("cd-configuration",Bu,$u,{},{},[]);class Ju{constructor(){this.value=[]}}class Qu{constructor(t,e,n,a,r){this.route=t,this.router=e,this.configService=n,this.notificationService=a,this.i18n=r,this.availSections=["global","mon","mgr","osd","mds","client"],this.createForm()}createForm(){const t={name:new $.i({value:null}),desc:new $.i({value:null}),long_desc:new $.i({value:null}),values:new $.k({}),default:new $.i({value:null}),daemon_default:new $.i({value:null}),services:new $.i([])};this.availSections.forEach(e=>{t.values.addControl(e,new $.i(null))}),this.configForm=new js.a(t)}ngOnInit(){this.route.params.subscribe(t=>{this.configService.get(t.name).subscribe(t=>{this.setResponse(t)})})}getValidators(t){const e=Go.getTypeValidators(t);if(e)return this.patternHelpText=e.patternHelpText,"max"in e&&""!==e.max&&(this.maxValue=e.max),"min"in e&&""!==e.min&&(this.minValue=e.min),e.validators}getStep(t,e){return Go.getTypeStep(t,e)}setResponse(t){this.response=t;const e=this.getValidators(t);this.configForm.get("name").setValue(t.name),this.configForm.get("desc").setValue(t.desc),this.configForm.get("long_desc").setValue(t.long_desc),this.configForm.get("default").setValue(t.default),this.configForm.get("daemon_default").setValue(t.daemon_default),this.configForm.get("services").setValue(t.services),this.response.value&&this.response.value.forEach(t=>{let e=null;e="true"===t.value||"false"!==t.value&&t.value,this.configForm.get("values").get(t.section).setValue(e)}),this.availSections.forEach(t=>{this.configForm.get("values").get(t).setValidators(e)});const n=Go.getType(t.type);this.type=n.name,this.inputType=n.inputType,this.humanReadableType=n.humanReadable}createRequest(){const t=[];if(this.availSections.forEach(e=>{const n=this.configForm.getValue(e);null!==n&&""!==n&&t.push({section:e,value:n})}),!J.isEqual(this.response.value,t)){const e=new Ju;return e.name=this.configForm.getValue("name"),e.value=t,e}return null}submit(){const t=this.createRequest();t&&this.configService.create(t).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n("Updated config option {{name}}",{name:t.name})),this.router.navigate(["/configuration"])},()=>{this.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])}}var Xu=s["ɵcrt"]({encapsulation:0,styles:[[".form-component-badge[_ngcontent-%COMP%]{height:34px;display:block}.form-component-badge[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{margin-top:7px}.resize-vertical[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function tl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","desc"],["id","desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"desc"),t(e,13,0,"desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function el(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Long description"])),(t()(),s["ɵeld"](6,0,null,0,8,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,7,"textarea",[["class","form-control resize-vertical"],["formControlName","long_desc"],["id","long_desc"],["readonly",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "]))],(function(t,e){t(e,1,0),t(e,10,0,"long_desc"),t(e,13,0,"long_desc")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function nl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Default"])),(t()(),s["ɵeld"](6,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","default"],["id","default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,10,0,"default"),t(e,13,0,"default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function al(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemon default"])),(t()(),s["ɵeld"](6,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,6,"input",[["class","form-control"],["formControlName","daemon_default"],["id","daemon_default"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[9,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,10,0,"daemon_default"),t(e,13,0,"daemon_default")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function rl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","form-component-badge"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","badge badge-dark"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""]))],null,(function(t,e){t(e,2,0,e.context.$implicit)}))}function il(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Services"])),(t()(),s["ɵeld"](6,0,null,0,2,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,rl)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,8,0,n.configForm.getValue("services"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess)}))}function sl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,19,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,18,"select",[["class","form-control custom-select"],["id","pool"],["name","pool"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[13,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](14,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](15,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](16,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Default --"])),(t()(),s["ɵeld"](18,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](19,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](20,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["true"])),(t()(),s["ɵeld"](22,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](23,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](24,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["false"]))],(function(t,e){t(e,1,0),t(e,10,0,e.parent.context.$implicit),t(e,13,0,e.parent.context.$implicit),t(e,15,0,null),t(e,16,0,null),t(e,19,0,!0),t(e,20,0,!0),t(e,23,0,!1),t(e,24,0,!1)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function ol(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function ul(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.patternHelpText)}))}function ll(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.component.maxValue)}))}function dl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.component.minValue)}))}function cl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,6,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[15,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ol)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ul)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ll)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dl)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,e.parent.context.$implicit),t(e,13,0,e.parent.context.$implicit),t(e,15,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"pattern")),t(e,17,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,19,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"max")),t(e,21,0,n.configForm.showError(e.parent.context.$implicit,s["ɵnov"](e.parent.parent,3),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit),t(e,5,0,e.parent.context.$implicit),t(e,7,1,[n.inputType,e.parent.context.$implicit,n.humanReadableType,n.getStep(n.type,n.configForm.getValue(e.parent.context.$implicit)),s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass])}))}function fl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,sl)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cl)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.component;t(e,2,0,"bool"===n.type),t(e,4,0,"bool"!==n.type)}),null)}function hl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,52,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,51,"form",[["name","configForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,45,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit"])),(t()(),s["ɵted"](11,null,[" "," "])),(t()(),s["ɵeld"](12,0,null,null,32,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](14,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](19,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,6,"input",[["class","form-control"],["formControlName","name"],["id","name"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](23,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](25,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](26,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tl)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,el)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,nl)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,al)),s["ɵdid"](34,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,il)),s["ɵdid"](36,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](37,0,null,null,7,"div",[["formGroupName","values"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](38,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](40,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](41,0,null,null,1,"h2",[["class","cd-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Values"])),(t()(),s["ɵand"](16777216,null,null,1,null,fl)),s["ɵdid"](44,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](45,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](47,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](48,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](49,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](51,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](52,49152,null,0,Ms.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,14,0),t(e,23,0,"name"),t(e,26,0,"name"),t(e,28,0,n.configForm.getValue("desc")),t(e,30,0,n.configForm.getValue("long_desc")),t(e,32,0,""!==n.configForm.getValue("default")),t(e,34,0,""!==n.configForm.getValue("daemon_default")),t(e,36,0,n.configForm.getValue("services").length>0),t(e,38,0,"values"),t(e,44,0,n.availSections),t(e,48,0,s["ɵnov"](e,3))}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,11,0,n.configForm.getValue("name")),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,20,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass),t(e,37,0,s["ɵnov"](e,40).ngClassUntouched,s["ɵnov"](e,40).ngClassTouched,s["ɵnov"](e,40).ngClassPristine,s["ɵnov"](e,40).ngClassDirty,s["ɵnov"](e,40).ngClassValid,s["ɵnov"](e,40).ngClassInvalid,s["ɵnov"](e,40).ngClassPending)}))}function gl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-configuration-form",[],null,null,null,hl,Xu)),s["ɵdid"](1,114688,null,0,Qu,[qt.a,qt.m,Fo.a,gt.a,me.a],null,null)],(function(t,e){t(e,1,0)}),null)}var pl=s["ɵccf"]("cd-configuration-form",Qu,gl,{},{},[]),bl=n("LOMR"),ml=n("MP8s"),yl=n("fxL3"),vl=n("gk6K"),xl=n("mrSG"),_l=n("yYhs");class Tl{constructor(t){this.healthService=t,this.icons=ht.a,this.loadingIndicator=!0,this.nodes=[],this.treeOptions={useVirtualScroll:!0,actionMapping:{mouse:{click:this.onNodeSelected.bind(this)}}},this.metadataKeyMap={}}ngOnInit(){this.healthService.getFullHealth().subscribe(t=>{this.loadingIndicator=!1,this.nodes=this.abstractTreeData(t)})}abstractTreeData(t){const e=t.osd_map.tree.nodes||[],n={};if(0===e.length)return[{name:"No nodes!"}];const a=[];return e.reverse().forEach(t=>{"root"===t.type&&a.push(t.id),n[t.id]=this.generateTreeLeaf(t,n)}),a.map(t=>n[t])}generateTreeLeaf(t,e){const n=t.id;this.metadataKeyMap[n]=t;const a=[],r={name:t.name+" ("+t.type+")",status:t.status,cdId:n,type:t.type};return t.children&&(t.children.sort().forEach(t=>{a.push(e[t])}),r.children=a),r}onNodeSelected(t,e){if(_l.a.ACTIVATE(t,e,!0),void 0!==e.data.cdId){const t=this.metadataKeyMap[e.data.cdId],{name:n,type:a}=t,r=xl.__rest(t,["name","type","status"]);this.metadata=r,this.metadataTitle=n+" ("+a+")"}else delete this.metadata,delete this.metadataTitle}onUpdateData(){this.tree.treeModel.expandAll()}}var Ol=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function wl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,3)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.large,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function Sl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[["class","badge"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpad"](3,2),s["ɵpad"](4,3),s["ɵpod"](5,{"badge-success":0,"badge-danger":1}),(t()(),s["ɵted"](6,null,[" "," "]))],(function(t,e){var n=t(e,5,0,t(e,3,0,"in","up").includes(e.parent.context.$implicit.data.status),t(e,4,0,"down","out","destroyed").includes(e.parent.context.$implicit.data.status));t(e,2,0,"badge",n)}),(function(t,e){t(e,6,0,e.parent.context.$implicit.data.status)}))}function Il(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Sl)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "])),(t()(),s["ɵeld"](4,0,null,null,3,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{"type-osd":0})],(function(t,e){t(e,1,0,e.context.$implicit.data.status);var n=t(e,7,0,"osd"===e.context.$implicit.data.type);t(e,6,0,"node-name",n)}),(function(t,e){t(e,4,0,e.context.$implicit.data.name)}))}function Nl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-table-key-value",[],null,null,null,xi.b,xi.a)),s["ɵdid"](4,638976,null,0,_i.a,[Se.a],{data:[0,"data"]},null)],(function(t,e){t(e,4,0,e.component.metadata)}),(function(t,e){t(e,2,0,e.component.metadataTitle)}))}function Cl(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{tree:0}),(t()(),s["ɵeld"](1,0,null,null,19,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,18,"div",[["class","col-sm-12 col-lg-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,17,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CRUSH map viewer"])),(t()(),s["ɵeld"](6,0,null,null,14,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,10,"div",[["class","col-sm-6 col-lg-6"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,wl)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,null,7,"tree-root",[],null,[[null,"updateData"],["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0,r=t.component;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,13).onMousedown(n)&&a),"updateData"===e&&(a=!1!==r.onUpdateData()&&a),a}),bl.b,bl.a)),s["ɵprd"](131584,null,ml.a,ml.a,[]),s["ɵdid"](13,573440,[[1,4],["tree",4]],4,yl.a,[ml.a,vl.a],{nodes:[0,"nodes"],options:[1,"options"]},{updateData:"updateData"}),s["ɵqud"](603979776,2,{loadingTemplate:0}),s["ɵqud"](603979776,3,{treeNodeTemplate:0}),s["ɵqud"](603979776,4,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,5,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["treeNodeTemplate",2]],null,0,null,Il)),(t()(),s["ɵand"](16777216,null,null,1,null,Nl)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,10,0,n.loadingIndicator),t(e,13,0,n.nodes,n.treeOptions),t(e,20,0,n.metadata)}),null)}function Rl(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-crushmap",[],null,null,null,Cl,Ol)),s["ɵdid"](1,114688,null,0,Tl,[La],null,null)],(function(t,e){t(e,1,0)}),null)}var Al=s["ɵccf"]("cd-crushmap",Tl,Rl,{},{},[]),kl=n("AfCQ");let El=(()=>{class t{writeValue(e){return{type:t.WRITE_VALUE,payload:e}}changeHours(e){return{type:t.CHANGE_HOURS,payload:e}}changeMinutes(e){return{type:t.CHANGE_MINUTES,payload:e}}changeSeconds(e){return{type:t.CHANGE_SECONDS,payload:e}}setTime(e){return{type:t.SET_TIME_UNIT,payload:e}}updateControls(e){return{type:t.UPDATE_CONTROLS,payload:e}}}return t.WRITE_VALUE="[timepicker] write value from ng model",t.CHANGE_HOURS="[timepicker] change hours",t.CHANGE_MINUTES="[timepicker] change minutes",t.CHANGE_SECONDS="[timepicker] change seconds",t.SET_TIME_UNIT="[timepicker] set time unit",t.UPDATE_CONTROLS="[timepicker] update controls",t})();function Ll(t){return!!t&&!(t instanceof Date&&isNaN(t.getHours()))&&("string"!=typeof t||Ll(new Date(t)))}function Dl(t,e){return!(t.min&&e<t.min||t.max&&e>t.max)}function Pl(t){return"number"==typeof t?t:parseInt(t,10)}function Ml(t,e=!1){const n=Pl(t);return isNaN(n)||n<0||n>(e?12:24)?NaN:n}function ql(t){const e=Pl(t);return isNaN(e)||e<0||e>60?NaN:e}function jl(t){const e=Pl(t);return isNaN(e)||e<0||e>60?NaN:e}function Fl(t){return"string"==typeof t?new Date(t):t}function Gl(t,e){if(!t)return Gl(zl(new Date,0,0,0),e);let n=t.getHours(),a=t.getMinutes(),r=t.getSeconds();return e.hour&&(n+=Pl(e.hour)),e.minute&&(a+=Pl(e.minute)),e.seconds&&(r+=Pl(e.seconds)),zl(t,n,a,r)}function Vl(t,e){let n=Ml(e.hour);const a=ql(e.minute),r=jl(e.seconds)||0;return e.isPM&&12!==n&&(n+=12),t?isNaN(n)||isNaN(a)?t:zl(t,n,a,r):isNaN(n)||isNaN(a)?t:zl(new Date,n,a,r)}function zl(t,e,n,a){const r=new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,n,a,t.getMilliseconds());return r.setFullYear(t.getFullYear()),r.setMonth(t.getMonth()),r.setDate(t.getDate()),r}function Bl(t){const e=t.toString();return e.length>1?e:`0${e}`}function Yl(t,e){return!isNaN(Ml(t,e))}function Hl(t){return!isNaN(ql(t))}function Ul(t){return!isNaN(jl(t))}function Wl(t,e="0",n="0",a){return Yl(t,a)&&Hl(e)&&Ul(n)}function Kl(t,e){if(t.readonlyInput||t.disabled)return!1;if(e){if("wheel"===e.source&&!t.mousewheel)return!1;if("key"===e.source&&!t.arrowkeys)return!1}return!0}function $l(t){const{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:o,showSpinners:u,showMeridian:l,showSeconds:d,meridians:c,min:f,max:h}=t;return{hourStep:e,minuteStep:n,secondsStep:a,readonlyInput:r,disabled:i,mousewheel:s,arrowkeys:o,showSpinners:u,showMeridian:l,showSeconds:d,meridians:c,min:f,max:h}}class Zl{constructor(){this.hourStep=1,this.minuteStep=5,this.secondsStep=10,this.showMeridian=!0,this.meridians=["AM","PM"],this.readonlyInput=!1,this.disabled=!1,this.mousewheel=!0,this.arrowkeys=!0,this.showSpinners=!0,this.showSeconds=!1,this.showMinutes=!0,this.hoursPlaceholder="HH",this.minutesPlaceholder="MM",this.secondsPlaceholder="SS",this.ariaLabelHours="hours",this.ariaLabelMinutes="minutes",this.ariaLabelSeconds="seconds"}}const Jl={value:null,config:new Zl,controls:{canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0}};function Ql(t=Jl,e){switch(e.type){case El.WRITE_VALUE:return Object.assign({},t,{value:e.payload});case El.CHANGE_HOURS:{if(!Kl(t.config,e.payload)||(a=t.controls,!(n=e.payload).step||n.step>0&&!a.canIncrementHours||n.step<0&&!a.canDecrementHours))return t;const r=Gl(t.value,{hour:e.payload.step});return!t.config.max&&!t.config.min||Dl(t.config,r)?Object.assign({},t,{value:r}):t}case El.CHANGE_MINUTES:{if(!Kl(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementMinutes||t.step<0&&!e.canDecrementMinutes)}(e.payload,t.controls))return t;const n=Gl(t.value,{minute:e.payload.step});return!t.config.max&&!t.config.min||Dl(t.config,n)?Object.assign({},t,{value:n}):t}case El.CHANGE_SECONDS:{if(!Kl(t.config,e.payload)||!function(t,e){return!(!t.step||t.step>0&&!e.canIncrementSeconds||t.step<0&&!e.canDecrementSeconds)}(e.payload,t.controls))return t;const n=Gl(t.value,{seconds:e.payload.step});return!t.config.max&&!t.config.min||Dl(t.config,n)?Object.assign({},t,{value:n}):t}case El.SET_TIME_UNIT:{if(!Kl(t.config))return t;const n=Vl(t.value,e.payload);return Object.assign({},t,{value:n})}case El.UPDATE_CONTROLS:{const n=function(t,e){const{min:n,max:a,hourStep:r,minuteStep:i,secondsStep:s,showSeconds:o}=e,u={canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0};if(!t)return u;if(a){const e=Gl(t,{hour:r});if(u.canIncrementHours=a>e,!u.canIncrementHours){const e=Gl(t,{minute:i});u.canIncrementMinutes=o?a>e:a>=e}if(!u.canIncrementMinutes){const e=Gl(t,{seconds:s});u.canIncrementSeconds=a>=e}t.getHours()<12&&(u.canToggleMeridian=Gl(t,{hour:12})<a)}if(n){const e=Gl(t,{hour:-r});if(u.canDecrementHours=n<e,!u.canDecrementHours){const e=Gl(t,{minute:-i});u.canDecrementMinutes=o?n<e:n<=e}if(!u.canDecrementMinutes){const e=Gl(t,{seconds:-s});u.canDecrementSeconds=n<=e}t.getHours()>=12&&(u.canToggleMeridian=Gl(t,{hour:-12})>n)}return u}(t.value,e.payload),a={value:t.value,config:e.payload,controls:n};return t.config.showMeridian!==a.config.showMeridian&&t.value&&(a.value=new Date(t.value)),Object.assign({},t,a)}default:return t}var n,a}class Xl extends kl.b{constructor(){const t=new Da.a({type:"[mini-ngrx] dispatcher init"});super(t,Ql,new kl.a(Jl,t,Ql))}}class td{constructor(t,e,n,a){this._cd=e,this._store=n,this._timepickerActions=a,this.isValid=new s.EventEmitter,this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1,this.onChange=Function.prototype,this.onTouched=Function.prototype,Object.assign(this,t),this.timepickerSub=n.select(t=>t.value).subscribe(t=>{this._renderTime(t),this.onChange(t),this._store.dispatch(this._timepickerActions.updateControls($l(this)))}),n.select(t=>t.controls).subscribe(t=>{this.isValid.emit(Wl(this.hours,this.minutes,this.seconds,this.isPM())),Object.assign(this,t),e.markForCheck()})}get isSpinnersVisible(){return this.showSpinners&&!this.readonlyInput}get isEditable(){return!(this.readonlyInput||this.disabled)}resetValidation(){this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1}isPM(){return this.showMeridian&&this.meridian===this.meridians[1]}prevDef(t){t.preventDefault()}wheelSign(t){return-1*Math.sign(t.deltaY)}ngOnChanges(t){this._store.dispatch(this._timepickerActions.updateControls($l(this)))}changeHours(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeHours({step:t,source:e}))}changeMinutes(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeMinutes({step:t,source:e}))}changeSeconds(t,e=""){this.resetValidation(),this._store.dispatch(this._timepickerActions.changeSeconds({step:t,source:e}))}updateHours(t){if(this.resetValidation(),this.hours=t,!Yl(this.hours,this.isPM())||!this.isValidLimit())return this.invalidHours=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateMinutes(t){if(this.resetValidation(),this.minutes=t,!Hl(this.minutes)||!this.isValidLimit())return this.invalidMinutes=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}updateSeconds(t){if(this.resetValidation(),this.seconds=t,!Ul(this.seconds)||!this.isValidLimit())return this.invalidSeconds=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()}isValidLimit(){return function(t,e,n){const a=Vl(new Date,t);return!(e&&a>e||n&&a<n)}({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()},this.max,this.min)}_updateTime(){if(!Wl(this.hours,this.showMinutes?this.minutes:void 0,this.showSeconds?this.seconds:void 0,this.isPM()))return this.isValid.emit(!1),void this.onChange(null);this._store.dispatch(this._timepickerActions.setTime({hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()}))}toggleMeridian(){this.showMeridian&&this.isEditable&&this._store.dispatch(this._timepickerActions.changeHours({step:12,source:""}))}writeValue(t){Ll(t)?this._store.dispatch(this._timepickerActions.writeValue(Fl(t))):null==t&&this._store.dispatch(this._timepickerActions.writeValue(null))}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.disabled=t,this._cd.markForCheck()}ngOnDestroy(){this.timepickerSub.unsubscribe()}_renderTime(t){if(!Ll(t))return this.hours="",this.minutes="",this.seconds="",void(this.meridian=this.meridians[0]);const e=Fl(t);let n=e.getHours();this.showMeridian&&(this.meridian=this.meridians[n>=12?1:0],n%=12,0===n&&(n=12)),this.hours=Bl(n),this.minutes=Bl(e.getMinutes()),this.seconds=Bl(e.getUTCSeconds())}}class ed{static forRoot(){return{ngModule:ed,providers:[Zl,El,Xl]}}}var nd=s["ɵcrt"]({encapsulation:2,styles:["\n    .bs-chevron {\n      border-style: solid;\n      display: block;\n      width: 9px;\n      height: 9px;\n      position: relative;\n      border-width: 3px 0px 0 3px;\n    }\n\n    .bs-chevron-up {\n      -webkit-transform: rotate(45deg);\n      transform: rotate(45deg);\n      top: 2px;\n    }\n\n    .bs-chevron-down {\n      -webkit-transform: rotate(-135deg);\n      transform: rotate(-135deg);\n      top: -2px;\n    }\n\n    .bs-timepicker-field {\n      width: 50px;\n      padding: .375rem .55rem;\n    }\n  "],data:{}});function ad(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function rd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementMinutes||!n.isEditable)}))}function id(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function sd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canIncrementSeconds||!n.isEditable)}))}function od(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function ud(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function ld(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function dd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeMinutes(r.minuteStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeMinutes(r.minuteStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep,"key")&&a),"change"===e&&(a=!1!==r.updateMinutes(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidMinutes),t(e,1,0,n.invalidMinutes,n.minutesPlaceholder,n.readonlyInput,n.disabled,n.minutes,n.labelMinutes)}))}function cd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" : "]))],null,null)}function fd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeSeconds(r.secondsStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeSeconds(r.secondsStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep,"key")&&a),"change"===e&&(a=!1!==r.updateSeconds(n.target.value)&&a),a}),null,null))],null,(function(t,e){var n=e.component;t(e,0,0,n.invalidSeconds),t(e,1,0,n.invalidSeconds,n.secondsPlaceholder,n.readonlyInput,n.disabled,n.seconds,n.labelSeconds)}))}function hd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function gd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"button",[["class","btn btn-default text-center"],["type","button"]],[[8,"disabled",0],[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.toggleMeridian()&&a),a}),null,null)),(t()(),s["ɵted"](2,null,[""," "]))],null,(function(t,e){var n=e.component;t(e,1,0,!n.isEditable||!n.canToggleMeridian,!n.isEditable||!n.canToggleMeridian),t(e,2,0,n.meridian)}))}function pd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function bd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeMinutes(0-r.minuteStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementMinutes||!n.isEditable)}))}function md(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" "]))],null,null)}function yd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeSeconds(0-r.secondsStep)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null))],null,(function(t,e){var n=e.component;t(e,1,0,!n.canDecrementSeconds||!n.isEditable)}))}function vd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["   "]))],null,null)}function xd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function _d(t){return s["ɵvid"](2,[(t()(),s["ɵeld"](0,0,null,null,48,"table",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,47,"tbody",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ad)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rd)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,id)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sd)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,od)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ud)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,14,"tr",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["type","text"]],[[2,"is-invalid",null],[8,"placeholder",0],[8,"readOnly",0],[8,"disabled",0],[8,"value",0],[1,"aria-label",0]],[[null,"wheel"],[null,"keydown.ArrowUp"],[null,"keydown.ArrowDown"],[null,"change"]],(function(t,e,n){var a=!0,r=t.component;return"wheel"===e&&(r.prevDef(n),a=!1!==r.changeHours(r.hourStep*r.wheelSign(n),"wheel")&&a),"keydown.ArrowUp"===e&&(a=!1!==r.changeHours(r.hourStep,"key")&&a),"keydown.ArrowDown"===e&&(a=!1!==r.changeHours(0-r.hourStep,"key")&&a),"change"===e&&(a=!1!==r.updateHours(n.target.value)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ld)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,dd)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cd)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fd)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hd)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gd)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](33,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),s["ɵeld"](34,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,"a",[["class","btn btn-link"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.changeHours(0-r.hourStep)&&a),a}),null,null)),(t()(),s["ɵeld"](36,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,pd)),s["ɵdid"](38,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bd)),s["ɵdid"](40,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,md)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yd)),s["ɵdid"](44,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vd)),s["ɵdid"](46,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xd)),s["ɵdid"](48,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,7,0,n.showMinutes),t(e,9,0,n.showMinutes),t(e,11,0,n.showSeconds),t(e,13,0,n.showSeconds),t(e,15,0,n.showMeridian),t(e,17,0,n.showMeridian),t(e,22,0,n.showMinutes),t(e,24,0,n.showMinutes),t(e,26,0,n.showSeconds),t(e,28,0,n.showSeconds),t(e,30,0,n.showMeridian),t(e,32,0,n.showMeridian),t(e,38,0,n.showMinutes),t(e,40,0,n.showMinutes),t(e,42,0,n.showSeconds),t(e,44,0,n.showSeconds),t(e,46,0,n.showMeridian),t(e,48,0,n.showMeridian)}),(function(t,e){var n=e.component;t(e,2,0,!n.showSpinners),t(e,4,0,!n.canIncrementHours||!n.isEditable),t(e,19,0,n.invalidHours),t(e,20,0,n.invalidHours,n.hoursPlaceholder,n.readonlyInput,n.disabled,n.hours,n.labelHours),t(e,33,0,!n.showSpinners),t(e,35,0,!n.canDecrementHours||!n.isEditable)}))}var Td=n("E2fk");let Od=(()=>{class t{constructor(t){this.http=t}getLogs(){return this.http.get("api/logs/all")}validateDashboardUrl(t){return this.http.get(`api/grafana/validation/${t}`)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})();class wd{constructor(t,e,n){this.logsService=t,this.datePipe=e,this.ngZone=n,this.icons=ht.a,this.bsConfig={dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default"},this.prioritys=[{name:"Info",value:"[INF]"},{name:"Warning",value:"[WRN]"},{name:"Error",value:"[ERR]"},{name:"All",value:"All"}],this.priority="All",this.search="",this.startTime=new Date,this.endTime=new Date,this.startTime.setHours(0,0),this.endTime.setHours(23,59)}ngOnInit(){this.getInfo(),this.ngZone.runOutsideAngular(()=>{this.interval=window.setInterval(()=>{this.ngZone.run(()=>{this.getInfo()})},5e3)})}ngOnDestroy(){clearInterval(this.interval)}getInfo(){this.logsService.getLogs().subscribe(t=>{this.contentData=t,this.filterLogs()})}abstractfilters(){const t=this.priority,e=this.search.toLowerCase().replace(/,/g,"");let n;if(this.selectedDate){const t=this.selectedDate.getMonth()+1,e=this.selectedDate.getDate();n=`${this.selectedDate.getFullYear().toString()}-${t<=9?`0${t}`:`${t}`}-${e<=9?`0${e}`:`${e}`}`}else n="";return{priority:t,key:e,yearMonthDay:n,sTime:60*(this.startTime?this.startTime.getHours():0)+(this.startTime?this.startTime.getMinutes():0),eTime:60*(this.endTime?this.endTime.getHours():23)+(this.endTime?this.endTime.getMinutes():59)}}filterExecutor(t,e){return t.filter(t=>{const n=this.datePipe.transform(t.stamp,"mediumTime"),a=parseInt(n.split(":")[0],10),r=parseInt(n.split(":")[1],10);let i,s,o;return i="All"===e.priority?t.priority:e.priority,s=e.yearMonthDay?e.yearMonthDay:t.stamp,o=60*a+r,t.priority===i&&-1!==t.message.toLowerCase().indexOf(e.key)&&-1!==t.stamp.indexOf(s)&&o>=e.sTime&&o<=e.eTime})}filterLogs(){const t=this.abstractfilters();this.clog=this.filterExecutor(this.contentData.clog,t),this.audit_log=this.filterExecutor(this.contentData.audit_log,t)}clearSearchKey(){this.search="",this.filterLogs()}clearDate(){this.selectedDate=null,this.filterLogs()}}var Sd=s["ɵcrt"]({encapsulation:0,styles:[["p[_ngcontent-%COMP%]{font-family:monospace}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:flex}.card[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.card[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{font-weight:700;flex-shrink:0}.card[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.card[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.card[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#a94442}.card[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.card[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}  timepicker table tbody tr td input.bs-timepicker-field{width:3.5rem!important;font-size:1rem;padding:4px 6px}.middle[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function Id(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Nd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function Cd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function Rd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Nd)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cd)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.clog),t(e,5,0,0===n.contentData.clog.length)}),null)}function Ad(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),s["ɵted"](2,null,["",""])),s["ɵppd"](3,1),(t()(),s["ɵeld"](4,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),s["ɵppd"](5,1),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""]))],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.context.$implicit.stamp));t(e,2,0,n);var a=s["ɵinlineInterpolate"](1,"priority ",s["ɵunv"](e,4,0,t(e,5,0,s["ɵnov"](e.parent.parent.parent,1),e.context.$implicit.priority)),"");t(e,4,0,a),t(e,6,0,e.context.$implicit.priority),t(e,8,0,e.context.$implicit.message)}))}function kd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["No entries found"]))],null,null)}function Ed(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","card bg-light mb-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Ad)),s["ɵdid"](3,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kd)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.audit_log),t(e,5,0,0===n.contentData.audit_log.length)}),null)}function Ld(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Id)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),s["ɵeld"](3,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](4,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](5,0,null,0,3,"tab",[["heading","Cluster Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](6,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rd)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,3,"tab",[["heading","Audit Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](10,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ed)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,s["ɵnov"](e.parent,4)),t(e,6,0,"Cluster Logs"),t(e,8,0,n.clog),t(e,10,0,"Audit Logs"),t(e,12,0,n.audit_log)}),(function(t,e){t(e,3,0,s["ɵnov"](e,4).clazz),t(e,5,0,s["ɵnov"](e,6).id,s["ɵnov"](e,6).active,s["ɵnov"](e,6).addClass,s["ɵnov"](e,6).role,s["ɵnov"](e,6).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby)}))}function Dd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function Pd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,81,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,14,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](2,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority:"])),(t()(),s["ɵeld"](7,0,null,0,8,"select",[["class","form-control custom-select"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"ngModelChange"===e&&(a=!1!==(r.priority=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Dd)),s["ɵdid"](15,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](16,0,null,null,22,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](17,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](20,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Keyword:"])),(t()(),s["ɵeld"](22,0,null,0,16,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,5,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](24,0,null,null,4,"span",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](25,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](27,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](28,1),(t()(),s["ɵeld"](29,0,null,null,6,"input",[["class","form-control"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"keyup"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,30)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,30).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,30)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,30)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.search=n)&&a),"keyup"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](30,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](32,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](34,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](35,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵeld"](36,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearSearchKey()&&a),a}),null,null)),(t()(),s["ɵeld"](38,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](39,0,null,null,19,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](40,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](43,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Date:"])),(t()(),s["ɵeld"](45,0,null,0,13,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["placeholder","Datepicker"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,47)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,47).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,47)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,47)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,49).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,49).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,49).onBlur()&&a),"ngModelChange"===e&&(a=!1!==(r.selectedDate=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),null,null)),s["ɵdid"](47,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](48,737280,null,0,rt.c,[rt.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](49,16384,null,0,rt.f,[rt.c,rt.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[rt.f]),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,rt.f]),s["ɵdid"](52,671744,null,0,$.u,[[8,null],[6,$.o],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](54,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](55,16384,null,0,Z.h,[[8,null],Z.a],null,null),(t()(),s["ɵeld"](56,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](57,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.clearDate()&&a),a}),null,null)),(t()(),s["ɵeld"](58,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,22,"div",[["class","form-group"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](60,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](63,0,null,0,1,"label",[["class","col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Time range:"])),(t()(),s["ɵeld"](65,0,null,0,16,"div",[["class","d-inline-flex"]],null,null,null,null,null)),(t()(),s["ɵeld"](66,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.startTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),_d,nd)),s["ɵprd"](512,null,Xl,Xl,[]),s["ɵdid"](68,704512,null,0,td,[Zl,s.ChangeDetectorRef,Xl,El],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[td]),s["ɵdid"](70,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](72,16384,null,0,$.r,[[4,$.q]],null,null),(t()(),s["ɵeld"](73,0,null,null,1,"span",[["class","middle"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" — "])),(t()(),s["ɵeld"](75,0,null,null,6,"timepicker",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngModelChange"]],(function(t,e,n){var a=!0,r=t.component;return"ngModelChange"===e&&(a=!1!==(r.endTime=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a}),_d,nd)),s["ɵprd"](512,null,Xl,Xl,[]),s["ɵdid"](77,704512,null,0,td,[Zl,s.ChangeDetectorRef,Xl,El],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[td]),s["ɵdid"](79,671744,null,0,$.u,[[8,null],[8,null],[8,null],[6,$.p]],{model:[0,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](81,16384,null,0,$.r,[[4,$.q]],null,null)],(function(t,e){var n=e.component;t(e,2,0),t(e,10,0,n.priority),t(e,15,0,n.prioritys),t(e,17,0);var a=t(e,28,0,n.icons.search);t(e,27,0,a),t(e,32,0,n.search),t(e,40,0),t(e,48,0,n.bsConfig),t(e,52,0,n.selectedDate),t(e,60,0),t(e,68,0,1,!1,!1),t(e,70,0,n.startTime),t(e,77,0,1,!1,!1),t(e,79,0,n.endTime)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass),t(e,16,0,s["ɵnov"](e,17).hasErrors,s["ɵnov"](e,17).hasSuccess),t(e,29,0,s["ɵnov"](e,34).ngClassUntouched,s["ɵnov"](e,34).ngClassTouched,s["ɵnov"](e,34).ngClassPristine,s["ɵnov"](e,34).ngClassDirty,s["ɵnov"](e,34).ngClassValid,s["ɵnov"](e,34).ngClassInvalid,s["ɵnov"](e,34).ngClassPending,s["ɵnov"](e,35).validClass,s["ɵnov"](e,35).invalidClass),t(e,38,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,39,0,s["ɵnov"](e,40).hasErrors,s["ɵnov"](e,40).hasSuccess),t(e,46,0,s["ɵnov"](e,54).ngClassUntouched,s["ɵnov"](e,54).ngClassTouched,s["ɵnov"](e,54).ngClassPristine,s["ɵnov"](e,54).ngClassDirty,s["ɵnov"](e,54).ngClassValid,s["ɵnov"](e,54).ngClassInvalid,s["ɵnov"](e,54).ngClassPending,s["ɵnov"](e,55).validClass,s["ɵnov"](e,55).invalidClass),t(e,58,0,s["ɵinlineInterpolate"](1,"icon-prepend ",n.icons.destroy,"")),t(e,59,0,s["ɵnov"](e,60).hasErrors,s["ɵnov"](e,60).hasSuccess),t(e,66,0,s["ɵnov"](e,72).ngClassUntouched,s["ɵnov"](e,72).ngClassTouched,s["ɵnov"](e,72).ngClassPristine,s["ɵnov"](e,72).ngClassDirty,s["ɵnov"](e,72).ngClassValid,s["ɵnov"](e,72).ngClassInvalid,s["ɵnov"](e,72).ngClassPending),t(e,75,0,s["ɵnov"](e,81).ngClassUntouched,s["ɵnov"](e,81).ngClassTouched,s["ɵnov"](e,81).ngClassPristine,s["ɵnov"](e,81).ngClassDirty,s["ɵnov"](e,81).ngClassValid,s["ɵnov"](e,81).ngClassInvalid,s["ɵnov"](e,81).ngClassPending)}))}function Md(t){return s["ɵvid"](0,[s["ɵpid"](0,Se.a,[i.DatePipe]),s["ɵpid"](0,Td.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,Ld)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[["logFiltersTpl",2]],null,0,null,Pd))],(function(t,e){t(e,3,0,e.component.contentData)}),null)}function qd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-logs",[],null,null,null,Md,Sd)),s["ɵdid"](1,245760,null,0,wd,[Od,i.DatePipe,s.NgZone],null,null)],(function(t,e){t(e,1,0)}),null)}var jd=s["ɵccf"]("cd-logs",wd,qd,{},{},[]),Fd=n("OcYo");let Gd=(()=>{class t{constructor(t,e,n,a,r,i,s,o){this.formBuilder=t,this.mgrModuleService=e,this.notificationService=n,this.router=a,this.telemetryService=r,this.i18n=i,this.textToDownloadService=s,this.telemetryNotificationService=o,this.error=!1,this.licenseAgrmt=!1,this.loading=!1,this.options={},this.requiredFields=["channel_basic","channel_crash","channel_device","channel_ident","interval","proxy","contact","description"],this.report=void 0,this.reportId=void 0,this.sendToUrl="",this.sendToDeviceUrl="",this.step=1}ngOnInit(){this.loading=!0;const t=[this.mgrModuleService.getOptions("telemetry"),this.mgrModuleService.getConfig("telemetry")];Object(Mo.a)(t).subscribe(t=>{const e=t[1];this.moduleEnabled=e.enabled,this.sendToUrl=e.url,this.sendToDeviceUrl=e.device_url,this.options=J.pick(t[0],this.requiredFields);const n=J.pick(e,this.requiredFields);this.createConfigForm(),this.configForm.setValue(n),this.loading=!1},t=>{this.error=!0})}createConfigForm(){const t={};J.forEach(Object.values(this.options),e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.configForm=this.formBuilder.group(t)}createPreviewForm(){const t={report:JSON.stringify(this.report,null,2),reportId:this.reportId,licenseAgrmt:[this.licenseAgrmt,$.B.requiredTrue]};this.previewForm=this.formBuilder.group(t)}getValidators(t){const e=[];switch(t.type){case"int":e.push(Fs.a.number()),e.push($.B.required),J.isNumber(t.min)&&e.push($.B.min(t.min)),J.isNumber(t.max)&&e.push($.B.max(t.max));break;case"str":J.isNumber(t.min)&&e.push($.B.minLength(t.min)),J.isNumber(t.max)&&e.push($.B.maxLength(t.max))}return e}getReport(){this.loading=!0,this.telemetryService.getReport().subscribe(t=>{this.report=t,this.reportId=t.report.report_id,this.createPreviewForm(),this.loading=!1,this.step++},t=>{this.error=!0})}updateConfig(){const t={};J.forEach(Object.values(this.options),e=>{const n=this.configForm.get(e.name);n.dirty&&n.valid&&(t[e.name]=n.value)}),this.mgrModuleService.updateConfig("telemetry",t).subscribe(()=>{this.disableModule(this.i18n("Your settings have been applied successfully. Due to privacy/legal reasons the Telemetry module is now disabled until you complete the next step and accept the license."),()=>{this.getReport()})},()=>{this.configForm.setErrors({cdSubmitButton:!0})})}download(t,e){this.textToDownloadService.download(JSON.stringify(t,null,2),e)}disableModule(t=null,e=null){this.telemetryService.enable(!1).subscribe(()=>{this.telemetryNotificationService.setVisibility(!0),t&&this.notificationService.show(ge.a.success,t),e?e():this.router.navigate([""])})}next(){this.configForm.pristine?this.getReport():this.updateConfig()}back(){this.step--}onSubmit(){this.telemetryService.enable().subscribe(()=>{this.telemetryNotificationService.setVisibility(!1),this.notificationService.show(ge.a.success,this.i18n("The Telemetry module has been configured and activated successfully.")),this.router.navigate([""])})}}return xl.__decorate([L(),xl.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})(),Vd=(()=>{class t{constructor(t){this.http=t,this.url="api/telemetry"}getReport(){return this.http.get(`${this.url}/report`)}enable(t=!0){const e={enable:t};return t&&(e.license_name="sharing-1-0"),this.http.put(`${this.url}`,e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})();var zd=n("Iab2");let Bd=(()=>{class t{constructor(){}download(t,e){Object(zd.saveAs)(new Blob([t]),e)}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();var Yd=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Hd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ti.b,Ti.a)),s["ɵdid"](1,49152,null,0,Oi.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function Ud(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function Wd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The plugin is already "])),(t()(),s["ɵeld"](2,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["enabled"])),(t()(),s["ɵted"](-1,null,[". Click "])),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"])),(t()(),s["ɵted"](-1,null,[" to disable it.  "])),(t()(),s["ɵeld"](8,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.disableModule("The Telemetry module has been disabled successfully.")&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Deactivate"]))],null,null)}function Kd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is too low! It must be greater or equal to 8."]))],null,null)}function $d(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,224,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,223,"form",[["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,217,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report configuration"])),(t()(),s["ɵeld"](10,0,null,null,209,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,12,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The telemetry module sends anonymous data about this Ceph cluster back to the Ceph developers to help understand how Ceph is used and what problems users may be experiencing."])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" This data is visualized on "])),(t()(),s["ɵeld"](15,0,null,null,1,"a",[["href","https://telemetry-public.ceph.com/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["public dashboards"])),(t()(),s["ɵted"](-1,null,[" that allow the community to quickly see summary statistics on how many clusters are reporting, their total capacity and OSD count, and version distribution trends."])),(t()(),s["ɵeld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[" The data being reported does "])),(t()(),s["ɵeld"](21,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["not"])),(t()(),s["ɵted"](23,null,[" contain any sensitive data like pool names, object names, object contents, hostnames, or device serial numbers. It contains counters and statistics on how the cluster has been deployed, the version of Ceph, the distribution of the hosts and other parameters which help the project to gain a better understanding of the way Ceph is used. The data is sent secured to "," and "," (device report)."])),(t()(),s["ɵand"](16777216,null,null,1,null,Wd)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Channels"])),(t()(),s["ɵeld"](28,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,['The telemetry report is broken down into several "channels", each with a different type of information that can be configured below.'])),(t()(),s["ɵeld"](30,0,null,null,31,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](31,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,17,"label",[["class","cd-col-form-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Basic"])),(t()(),s["ɵeld"](37,0,null,null,14,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](38,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](39,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes basic information about the cluster:"])),(t()(),s["ɵeld"](41,0,null,0,10,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](42,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Capacity of the cluster"])),(t()(),s["ɵeld"](44,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number of monitors, managers, OSDs, MDSs, object gateways, or other daemons"])),(t()(),s["ɵeld"](46,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Software version currently being used"])),(t()(),s["ɵeld"](48,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Number and types of RADOS pools and CephFS file systems"])),(t()(),s["ɵeld"](50,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Names of configuration options that have been changed from their default (but not their values)"])),(t()(),s["ɵeld"](52,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](54,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_basic"],["id","channel_basic"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,55).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,55).onTouched()&&a),a}),null,null)),s["ɵdid"](55,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](57,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](59,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](60,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](61,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_basic"]],null,null,null,null,null)),(t()(),s["ɵeld"](62,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](63,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](66,0,null,0,15,"label",[["class","cd-col-form-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](67,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Crash"])),(t()(),s["ɵeld"](69,0,null,null,12,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](70,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](71,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes information about daemon crashes:"])),(t()(),s["ɵeld"](73,0,null,0,8,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](74,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Type of daemon"])),(t()(),s["ɵeld"](76,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version of the daemon"])),(t()(),s["ɵeld"](78,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Operating system (OS distribution, kernel version)"])),(t()(),s["ɵeld"](80,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Stack trace identifying where in the Ceph code the crash occurred"])),(t()(),s["ɵeld"](82,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](83,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](84,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_crash"],["id","channel_crash"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,85).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,85).onTouched()&&a),a}),null,null)),s["ɵdid"](85,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](87,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](89,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](90,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](91,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_crash"]],null,null,null,null,null)),(t()(),s["ɵeld"](92,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](93,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](96,0,null,0,4,"label",[["class","cd-col-form-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](97,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Device"])),(t()(),s["ɵeld"](99,0,null,null,1,"cd-helper",[["html","Includes information about device metrics like anonymized SMART metrics."]],null,null,null,uu.b,uu.a)),s["ɵdid"](100,49152,null,0,lu.a,[],{html:[0,"html"]},null),(t()(),s["ɵeld"](101,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](102,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](103,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_device"],["id","channel_device"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,104).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,104).onTouched()&&a),a}),null,null)),s["ɵdid"](104,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](106,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](108,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](109,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](110,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_device"]],null,null,null,null,null)),(t()(),s["ɵeld"](111,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](112,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](115,0,null,0,11,"label",[["class","cd-col-form-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵeld"](116,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ident"])),(t()(),s["ɵeld"](118,0,null,null,8,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](119,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](120,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Includes user-provided identifying information about the cluster:"])),(t()(),s["ɵeld"](122,0,null,0,4,"ul",[],null,null,null,null,null)),(t()(),s["ɵeld"](123,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster description"])),(t()(),s["ɵeld"](125,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact email address"])),(t()(),s["ɵeld"](127,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](128,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](129,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","channel_ident"],["id","channel_ident"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,130).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,130).onTouched()&&a),a}),null,null)),s["ɵdid"](130,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](132,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](134,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](135,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](136,0,null,null,0,"label",[["class","custom-control-label"],["for","channel_ident"]],null,null,null,null,null)),(t()(),s["ɵeld"](137,0,null,null,5,"legend",[],null,null,null,null,null)),(t()(),s["ɵeld"](138,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact Information"])),(t()(),s["ɵeld"](140,0,null,null,2,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](141,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](-1,0,["Submitting any contact information is completely optional and disabled by default."])),(t()(),s["ɵeld"](143,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](144,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](147,0,null,0,1,"label",[["class","cd-col-form-label"],["for","contact"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Contact"])),(t()(),s["ɵeld"](149,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](150,0,null,null,6,"input",[["class","form-control"],["formControlName","contact"],["id","contact"],["placeholder","Example User <user@example.com>"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,151)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,151).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,151)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,151)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](151,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](153,671744,[[9,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](155,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](156,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](157,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](158,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,11,{FormControlNames:1}),s["ɵqud"](603979776,12,{messagesBlock:0}),(t()(),s["ɵeld"](161,0,null,0,1,"label",[["class","cd-col-form-label"],["for","description"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Description"])),(t()(),s["ɵeld"](163,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](164,0,null,null,6,"input",[["class","form-control"],["formControlName","description"],["id","description"],["placeholder","My first Ceph cluster"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,165)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,165).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,165)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,165)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](165,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](167,671744,[[11,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](169,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](170,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](171,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced Settings"])),(t()(),s["ɵeld"](173,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](174,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,13,{FormControlNames:1}),s["ɵqud"](603979776,14,{messagesBlock:0}),(t()(),s["ɵeld"](177,0,null,0,5,"label",[["class","cd-col-form-label"],["for","interval"]],null,null,null,null,null)),(t()(),s["ɵeld"](178,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Interval"])),(t()(),s["ɵeld"](180,0,null,null,2,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](181,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](-1,0,["The module compiles and sends a new report every 24 hours by default. You can adjust this interval by setting a different number of hours."])),(t()(),s["ɵeld"](183,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](184,0,null,null,7,"input",[["class","form-control"],["formControlName","interval"],["id","interval"],["type","number"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,185)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,185).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,185)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,185)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,186).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,186).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,186).onTouched()&&a),a}),null,null)),s["ɵdid"](185,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](186,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](188,671744,[[13,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](190,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](191,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kd)),s["ɵdid"](193,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](194,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](195,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,15,{FormControlNames:1}),s["ɵqud"](603979776,16,{messagesBlock:0}),(t()(),s["ɵeld"](198,0,null,0,8,"label",[["class","cd-col-form-label"],["for","proxy"]],null,null,null,null,null)),(t()(),s["ɵeld"](199,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Proxy"])),(t()(),s["ɵeld"](201,0,null,null,5,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](202,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](203,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["If the cluster cannot directly connect to the configured telemetry endpoint (default telemetry.ceph.com), you can configure a HTTP/HTTPS proxy server by e.g. adding https://10.0.0.1:8080"])),(t()(),s["ɵeld"](205,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You can also include a user:pass if needed e.g. https://ceph:telemetry@10.0.0.1:8080"])),(t()(),s["ɵeld"](207,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](208,0,null,null,6,"input",[["class","form-control"],["formControlName","proxy"],["id","proxy"],["placeholder","https://10.0.0.1:8080"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,209)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,209).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,209)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,209)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](209,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](211,671744,[[15,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](213,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](214,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](215,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](216,0,null,null,3,"p",[],null,null,null,null,null)),(t()(),s["ɵeld"](217,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Note:"])),(t()(),s["ɵted"](-1,null,[" By clicking 'Next' you will first see a preview of the report content before you can activate the automatic submission of your data."])),(t()(),s["ɵeld"](220,0,null,null,4,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](221,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](222,0,null,null,2,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.next()&&a),a}),null,null)),(t()(),s["ɵeld"](223,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Next"]))],(function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,6,0,n.configForm),t(e,25,0,n.moduleEnabled),t(e,31,0),t(e,57,0,"channel_basic"),t(e,60,0,"channel_basic"),t(e,63,0),t(e,87,0,"channel_crash"),t(e,90,0,"channel_crash"),t(e,93,0),t(e,100,0,"Includes information about device metrics like anonymized SMART metrics."),t(e,106,0,"channel_device"),t(e,109,0,"channel_device"),t(e,112,0),t(e,132,0,"channel_ident"),t(e,135,0,"channel_ident"),t(e,144,0),t(e,153,0,"contact"),t(e,156,0,"contact"),t(e,158,0),t(e,167,0,"description"),t(e,170,0,"description"),t(e,174,0),t(e,188,0,"interval"),t(e,191,0,"interval"),t(e,193,0,n.configForm.showError("interval",s["ɵnov"](e,3),"min")),t(e,195,0),t(e,211,0,"proxy"),t(e,214,0,"proxy")}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,23,0,n.sendToUrl,n.sendToDeviceUrl),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,54,0,s["ɵnov"](e,59).ngClassUntouched,s["ɵnov"](e,59).ngClassTouched,s["ɵnov"](e,59).ngClassPristine,s["ɵnov"](e,59).ngClassDirty,s["ɵnov"](e,59).ngClassValid,s["ɵnov"](e,59).ngClassInvalid,s["ɵnov"](e,59).ngClassPending,s["ɵnov"](e,60).validClass,s["ɵnov"](e,60).invalidClass),t(e,62,0,s["ɵnov"](e,63).hasErrors,s["ɵnov"](e,63).hasSuccess),t(e,84,0,s["ɵnov"](e,89).ngClassUntouched,s["ɵnov"](e,89).ngClassTouched,s["ɵnov"](e,89).ngClassPristine,s["ɵnov"](e,89).ngClassDirty,s["ɵnov"](e,89).ngClassValid,s["ɵnov"](e,89).ngClassInvalid,s["ɵnov"](e,89).ngClassPending,s["ɵnov"](e,90).validClass,s["ɵnov"](e,90).invalidClass),t(e,92,0,s["ɵnov"](e,93).hasErrors,s["ɵnov"](e,93).hasSuccess),t(e,103,0,s["ɵnov"](e,108).ngClassUntouched,s["ɵnov"](e,108).ngClassTouched,s["ɵnov"](e,108).ngClassPristine,s["ɵnov"](e,108).ngClassDirty,s["ɵnov"](e,108).ngClassValid,s["ɵnov"](e,108).ngClassInvalid,s["ɵnov"](e,108).ngClassPending,s["ɵnov"](e,109).validClass,s["ɵnov"](e,109).invalidClass),t(e,111,0,s["ɵnov"](e,112).hasErrors,s["ɵnov"](e,112).hasSuccess),t(e,129,0,s["ɵnov"](e,134).ngClassUntouched,s["ɵnov"](e,134).ngClassTouched,s["ɵnov"](e,134).ngClassPristine,s["ɵnov"](e,134).ngClassDirty,s["ɵnov"](e,134).ngClassValid,s["ɵnov"](e,134).ngClassInvalid,s["ɵnov"](e,134).ngClassPending,s["ɵnov"](e,135).validClass,s["ɵnov"](e,135).invalidClass),t(e,143,0,s["ɵnov"](e,144).hasErrors,s["ɵnov"](e,144).hasSuccess),t(e,150,0,s["ɵnov"](e,155).ngClassUntouched,s["ɵnov"](e,155).ngClassTouched,s["ɵnov"](e,155).ngClassPristine,s["ɵnov"](e,155).ngClassDirty,s["ɵnov"](e,155).ngClassValid,s["ɵnov"](e,155).ngClassInvalid,s["ɵnov"](e,155).ngClassPending,s["ɵnov"](e,156).validClass,s["ɵnov"](e,156).invalidClass),t(e,157,0,s["ɵnov"](e,158).hasErrors,s["ɵnov"](e,158).hasSuccess),t(e,164,0,s["ɵnov"](e,169).ngClassUntouched,s["ɵnov"](e,169).ngClassTouched,s["ɵnov"](e,169).ngClassPristine,s["ɵnov"](e,169).ngClassDirty,s["ɵnov"](e,169).ngClassValid,s["ɵnov"](e,169).ngClassInvalid,s["ɵnov"](e,169).ngClassPending,s["ɵnov"](e,170).validClass,s["ɵnov"](e,170).invalidClass),t(e,173,0,s["ɵnov"](e,174).hasErrors,s["ɵnov"](e,174).hasSuccess),t(e,184,0,s["ɵnov"](e,190).ngClassUntouched,s["ɵnov"](e,190).ngClassTouched,s["ɵnov"](e,190).ngClassPristine,s["ɵnov"](e,190).ngClassDirty,s["ɵnov"](e,190).ngClassValid,s["ɵnov"](e,190).ngClassInvalid,s["ɵnov"](e,190).ngClassPending,s["ɵnov"](e,191).validClass,s["ɵnov"](e,191).invalidClass),t(e,194,0,s["ɵnov"](e,195).hasErrors,s["ɵnov"](e,195).hasSuccess),t(e,208,0,s["ɵnov"](e,213).ngClassUntouched,s["ɵnov"](e,213).ngClassTouched,s["ɵnov"](e,213).ngClassPristine,s["ɵnov"](e,213).ngClassDirty,s["ɵnov"](e,213).ngClassValid,s["ɵnov"](e,213).ngClassInvalid,s["ɵnov"](e,213).ngClassPending,s["ɵnov"](e,214).validClass,s["ɵnov"](e,214).invalidClass)}))}function Zd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,73,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,72,"form",[["name","previewForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,66,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["Step "," of 2: Telemetry report preview"])),(t()(),s["ɵeld"](10,0,null,null,55,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](12,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,17,{FormControlNames:1}),s["ɵqud"](603979776,18,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,1,"label",[["class","cd-col-form-label"],["for","reportId"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report ID"])),(t()(),s["ɵeld"](17,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,6,"input",[["class","form-control"],["formControlName","reportId"],["id","reportId"],["readonly",""],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](21,671744,[[17,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](23,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](24,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](25,0,null,null,13,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](26,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,19,{FormControlNames:1}),s["ɵqud"](603979776,20,{messagesBlock:0}),(t()(),s["ɵeld"](29,0,null,0,1,"label",[["class","cd-col-form-label"],["for","report"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Report preview"])),(t()(),s["ɵeld"](31,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,6,"textarea",[["class","form-control"],["formControlName","report"],["id","report"],["readonly",""],["rows","15"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,33)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,33).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,33)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,33)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](33,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](35,671744,[[19,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](37,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](38,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](39,0,null,null,8,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](40,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,21,{FormControlNames:1}),s["ɵqud"](603979776,22,{messagesBlock:0}),(t()(),s["ɵeld"](43,0,null,0,4,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"button",[["class","btn btn-light mr-2"],["title","Download"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.download(r.report,"telemetry_report.json")&&a),a}),null,null)),(t()(),s["ɵeld"](45,0,null,null,0,"i",[["class","fa fa-download"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,1,"button",[["cdCopy2ClipboardButton","report"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,47).onClick()&&a),a}),null,null)),s["ɵdid"](47,81920,null,0,Fd.a,[s.ElementRef,s.Renderer2,c.j,me.a],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(t()(),s["ɵeld"](48,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](49,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,23,{FormControlNames:1}),s["ɵqud"](603979776,24,{messagesBlock:0}),(t()(),s["ɵeld"](52,0,null,0,13,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](53,0,null,null,12,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](54,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","licenseAgrmt"],["id","licenseAgrmt"],["name","licenseAgrmt"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,55).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,55).onTouched()&&a),a}),null,null)),s["ɵdid"](55,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](57,671744,[[23,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](59,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](60,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](61,0,null,null,4,"label",[["class","custom-control-label"],["for","licenseAgrmt"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["I agree to my telemetry data being submitted under the Community Data License Agreement - Sharing - Version 1.0 ("])),(t()(),s["ɵeld"](63,0,null,null,1,"a",[["href","https://cdla.io/sharing-1-0/"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["https://cdla.io/sharing-1-0/"])),(t()(),s["ɵted"](-1,null,[")"])),(t()(),s["ɵeld"](66,0,null,null,7,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](67,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](68,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](69,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](70,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Save"])),(t()(),s["ɵeld"](72,0,null,null,1,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.back()&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.previewForm),t(e,6,0,n.previewForm),t(e,12,0),t(e,21,0,"reportId"),t(e,24,0,"reportId"),t(e,26,0),t(e,35,0,"report"),t(e,38,0,"report"),t(e,40,0),t(e,47,0,"report"),t(e,49,0),t(e,57,0,"licenseAgrmt"),t(e,60,0,"licenseAgrmt"),t(e,69,0,n.previewForm)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,9,0,n.step),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,24).validClass,s["ɵnov"](e,24).invalidClass),t(e,25,0,s["ɵnov"](e,26).hasErrors,s["ɵnov"](e,26).hasSuccess),t(e,32,0,s["ɵnov"](e,37).ngClassUntouched,s["ɵnov"](e,37).ngClassTouched,s["ɵnov"](e,37).ngClassPristine,s["ɵnov"](e,37).ngClassDirty,s["ɵnov"](e,37).ngClassValid,s["ɵnov"](e,37).ngClassInvalid,s["ɵnov"](e,37).ngClassPending,s["ɵnov"](e,38).validClass,s["ɵnov"](e,38).invalidClass),t(e,39,0,s["ɵnov"](e,40).hasErrors,s["ɵnov"](e,40).hasSuccess),t(e,48,0,s["ɵnov"](e,49).hasErrors,s["ɵnov"](e,49).hasSuccess),t(e,54,0,s["ɵnov"](e,59).ngClassUntouched,s["ɵnov"](e,59).ngClassTouched,s["ɵnov"](e,59).ngClassPristine,s["ɵnov"](e,59).ngClassDirty,s["ɵnov"](e,59).ngClassValid,s["ɵnov"](e,59).ngClassInvalid,s["ɵnov"](e,59).ngClassPending,s["ɵnov"](e,60).validClass,s["ɵnov"](e,60).invalidClass)}))}function Jd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](2,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$d)),s["ɵdid"](4,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zd)),s["ɵdid"](6,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],(function(t,e){t(e,2,0,e.component.step),t(e,4,0,1),t(e,6,0,2)}),null)}function Qd(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Hd)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ud)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jd)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.loading&&!n.error),t(e,3,0,n.loading&&n.error),t(e,5,0,!n.loading&&!n.error)}),null)}function Xd(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-telemetry",[],null,null,null,Qd,Yd)),s["ɵdid"](1,114688,null,0,Gd,[Ho.a,he,gt.a,qt.m,Vd,me.a,Bd,pe],null,null)],(function(t,e){t(e,1,0)}),null)}var tc=s["ɵccf"]("cd-telemetry",Gd,Xd,{},{},[]);const ec=new ls.a("silence");class nc extends ds.a{constructor(t,e,n,a,r){super(),this.authStorageService=t,this.prometheusAlertService=e,this.urlBuilder=n,this.i18n=a,this.cdDatePipe=r,this.selection=new ti.a,this.icons=ht.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"unprocessed","badge badge-info":"suppressed"},this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:t=>t.hasSingleSelection,disable:t=>!t.hasSingleSelection||t.first().cdExecuting,icon:ht.a.add,routerLink:()=>"/monitoring"+this.urlBuilder.getCreateFrom(this.selection.first().fingerprint),name:this.i18n("Create Silence")}]}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"labels.alertname",flexGrow:2},{name:this.i18n("Job"),prop:"labels.job",flexGrow:2},{name:this.i18n("Severity"),prop:"labels.severity"},{name:this.i18n("State"),prop:"status.state",cellTransformation:Xr.a.classAdding},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("URL"),prop:"generatorURL",sortable:!1,cellTemplate:this.externalLinkTpl}]}updateSelection(t){this.selection=t}}var ac=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function rc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,xi.b,xi.a)),s["ɵdid"](1,638976,null,0,_i.a,[Se.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function ic(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](3,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](4,1),(t()(),s["ɵted"](-1,null,[" Source"]))],(function(t,e){var n=t(e,4,0,e.component.icons.lineChart);t(e,3,0,n)}),(function(t,e){t(e,0,0,e.context.value)}))}function sc(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{externalLinkTpl:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["identifier","fingerprint"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](2,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](4,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,rc)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[1,2],["externalLinkTpl",2]],null,0,null,ic))],(function(t,e){var n=e.component;t(e,2,0,n.prometheusAlertService.alerts,n.columns,!0,"fingerprint",!0,"single",n.customCss),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}class oc extends ds.a{constructor(t){super(),this.i18n=t,this.hideKeys=["alerts","type"]}ngOnInit(){this.columns=[{prop:"name",name:this.i18n("Name")},{prop:"labels.severity",name:this.i18n("Severity")},{prop:"group",name:this.i18n("Group")},{prop:"duration",name:this.i18n("Duration"),pipe:new we},{prop:"query",name:this.i18n("Query"),isHidden:!0},{prop:"annotations.description",name:this.i18n("Description")}]}}var uc=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function lc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,xi.b,xi.a)),s["ɵdid"](5,638976,null,0,_i.a,[Se.a],{data:[0,"data"],renderObjects:[1,"renderObjects"],hideKeys:[2,"hideKeys"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.expandedRow,!0,n.hideKeys)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function dc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.setExpandedRow(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](1,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],hasDetails:[2,"hasDetails"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵand"](16777216,null,3,1,null,lc)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.data,n.columns,!0,"single"),t(e,3,0,n.expandedRow)}),null)}var cc=n("w9WL");const fc=new ls.a("monitoring/silence");class hc extends ds.a{constructor(t,e,n,a,r,i,s,o,u){super(),this.authStorageService=t,this.i18n=e,this.cdDatePipe=n,this.prometheusService=a,this.modalService=r,this.notificationService=i,this.urlBuilder=s,this.actionLabels=o,this.succeededLabels=u,this.silences=[],this.selection=new ti.a,this.customCss={"badge badge-danger":"active","badge badge-warning":"pending","badge badge-default":"expired"},this.sorts=[{prop:"endsAt",dir:cc.A.desc}],this.permission=this.authStorageService.getPermissions().prometheus;const l=t=>t.first()&&t.first().status&&"expired"===t.first().status.state;this.tableActions=[{permission:"create",icon:ht.a.add,routerLink:()=>this.urlBuilder.getCreate(),preserveFragment:!0,canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"create",canBePrimary:t=>t.hasSingleSelection&&l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&l(t)||!l(t),icon:ht.a.copy,routerLink:()=>this.urlBuilder.getRecreate(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.RECREATE},{permission:"update",icon:ht.a.edit,canBePrimary:t=>t.hasSingleSelection&&!l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&!l(t)||l(t),routerLink:()=>this.urlBuilder.getEdit(this.selection.first().id),preserveFragment:!0,name:this.actionLabels.EDIT},{permission:"delete",icon:ht.a.trash,canBePrimary:t=>t.hasSingleSelection&&!l(t),disable:t=>!t.hasSingleSelection||t.first().cdExecuting||l(t),click:()=>this.expireSilence(),name:this.actionLabels.EXPIRE}],this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:3},{name:this.i18n("Created by"),prop:"createdBy",flexGrow:2},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("Updated"),prop:"updatedAt",pipe:this.cdDatePipe},{name:this.i18n("Ends"),prop:"endsAt",pipe:this.cdDatePipe},{name:this.i18n("Status"),prop:"status.state",cellTransformation:Xr.a.classAdding}]}refresh(){this.prometheusService.ifAlertmanagerConfigured(()=>{this.prometheusService.getSilences().subscribe(t=>{this.silences=t},()=>{this.prometheusService.disableAlertmanagerConfig()})})}updateSelection(t){this.selection=t}expireSilence(){const t=this.selection.first().id,e=this.i18n("Silence");this.modalRef=this.modalService.show(cs.a,{initialState:{itemDescription:e,itemNames:[t],actionDescription:this.actionLabels.EXPIRE,submitActionObservable:()=>new kn.a(n=>{this.prometheusService.expireSilence(t).subscribe(()=>{this.notificationService.show(ge.a.success,`${this.succeededLabels.EXPIRED} ${e} ${t}`,void 0,void 0,"Prometheus")},t=>{t.application="Prometheus",n.error(t)},()=>{n.complete(),this.refresh()})})}})}}var gc=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function pc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-table-key-value",[["cdTableDetail",""]],null,null,null,xi.b,xi.a)),s["ɵdid"](1,638976,null,0,_i.a,[Se.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"],appendParentKey:[3,"appendParentKey"],hideEmpty:[4,"hideEmpty"],customCss:[5,"customCss"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.expandedRow,!1,!0,!1,!0,n.customCss)}),null)}function bc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"fetchData"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"fetchData"===e&&(a=!1!==r.refresh()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](1,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],sorts:[2,"sorts"],hasDetails:[3,"hasDetails"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"],customCss:[6,"customCss"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](3,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵand"](16777216,null,3,1,null,pc)),s["ɵdid"](5,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.silences,n.columns,n.sorts,!0,!0,"single",n.customCss),t(e,3,0,n.permission,n.selection,n.tableActions),t(e,5,0,n.expandedRow)}),null)}class mc{constructor(t,e,n,a){this.prometheusAlertService=t,this.prometheusService=e,this.route=n,this.router=a,this.isPrometheusConfigured=!1,this.isAlertmanagerConfigured=!1}ngOnInit(){if(this.prometheusService.ifAlertmanagerConfigured(()=>{this.isAlertmanagerConfigured=!0}),this.prometheusService.ifPrometheusConfigured(()=>{this.isPrometheusConfigured=!0}),this.route.snapshot.fragment){const t=this.tabs.tabs.find(t=>t.elementRef.nativeElement.id===this.route.snapshot.fragment);t&&(t.active=!0),this.router.navigate([],{fragment:this.route.snapshot.fragment})}}setFragment(t){this.router.navigate([],{fragment:t.id})}}var yc=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function vc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-active-alert-list",[],null,null,null,sc,ac)),s["ɵprd"](256,null,ls.a,ec,[]),s["ɵdid"](2,114688,null,0,nc,[vt.a,Pe,ls.a,me.a,Se.a],null,null)],(function(t,e){t(e,2,0)}),null)}function xc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all active Prometheus alerts, please provide the URL to the API of Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,Ur.b,Ur.a)),s["ɵdid"](4,114688,null,0,Wr.a,[xt.a,me.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function _c(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-rules-list",[],null,null,null,dc,uc)),s["ɵdid"](1,114688,null,0,oc,[me.a],{data:[0,"data"]},null)],(function(t,e){t(e,1,0,e.component.prometheusAlertService.rules)}),null)}function Tc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To see all configured Prometheus alerts, please provide the URL to the API of Prometheus as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,Ur.b,Ur.a)),s["ɵdid"](4,114688,null,0,Wr.a,[xt.a,me.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function Oc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-silences-list",[],null,null,null,bc,gc)),s["ɵprd"](256,null,ls.a,fc,[]),s["ɵdid"](2,49152,null,0,hc,[vt.a,me.a,Se.a,Le,Lt.b,gt.a,ls.a,At.b,At.d],null,null)],null,null)}function wc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["To enable Silences, please provide the URL to the API of the Prometheus' Alertmanager as described in the "])),(t()(),s["ɵeld"](3,0,null,0,1,"cd-doc",[["section","prometheus"]],null,null,null,Ur.b,Ur.a)),s["ɵdid"](4,114688,null,0,Wr.a,[xt.a,me.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,0,["."]))],(function(t,e){t(e,1,0,"info"),t(e,4,0,"prometheus")}),null)}function Sc(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{tabs:0}),(t()(),s["ɵeld"](1,0,null,null,19,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](2,180224,[[1,4],["tabs",4]],0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](3,0,null,0,5,"tab",[["heading","Active Alerts"],["id","active-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](4,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,vc)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xc)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](9,0,null,0,5,"tab",[["heading","All Alerts"],["id","all-alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](10,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,_c)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tc)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](15,0,null,0,5,"tab",[["heading","Silences"],["id","silences"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.setFragment(n)&&a),a}),null,null)),s["ɵdid"](16,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"],id:[1,"id"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,Oc)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wc)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,4,0,"Active Alerts","active-alerts"),t(e,6,0,n.isAlertmanagerConfigured),t(e,8,0,!n.isAlertmanagerConfigured),t(e,10,0,"All Alerts","all-alerts"),t(e,12,0,n.isPrometheusConfigured),t(e,14,0,!n.isPrometheusConfigured),t(e,16,0,"Silences","silences"),t(e,18,0,n.isAlertmanagerConfigured),t(e,20,0,!n.isAlertmanagerConfigured)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).clazz),t(e,3,0,s["ɵnov"](e,4).id,s["ɵnov"](e,4).active,s["ɵnov"](e,4).addClass,s["ɵnov"](e,4).role,s["ɵnov"](e,4).ariaLabelledby),t(e,9,0,s["ɵnov"](e,10).id,s["ɵnov"](e,10).active,s["ɵnov"](e,10).addClass,s["ɵnov"](e,10).role,s["ɵnov"](e,10).ariaLabelledby),t(e,15,0,s["ɵnov"](e,16).id,s["ɵnov"](e,16).active,s["ɵnov"](e,16).addClass,s["ɵnov"](e,16).role,s["ɵnov"](e,16).ariaLabelledby)}))}function Ic(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-monitoring-list",[],null,null,null,Sc,yc)),s["ɵdid"](1,114688,null,0,mc,[Pe,Le,qt.a,qt.m],null,null)],(function(t,e){t(e,1,0)}),null)}var Nc=s["ɵccf"]("cd-monitoring-list",mc,Ic,{},{},[]);let Cc=(()=>{class t{constructor(t){this.i18n=t,this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}singleMatch(t,e){return this.multiMatch([t],e)}multiMatch(t,e){if(!t.some(t=>t.isRegex))return t.forEach(t=>{e=this.getMatchedRules(t,e)}),this.describeMatch(e)}getMatchedRules(t,e){const n=this.getAttributePath(t.name);return e.filter(e=>J.get(e,n)===t.value)}describeMatch(t){let e=0;return t.forEach(t=>e+=t.alerts.length),{status:this.getMatchText(t.length,e),cssClass:e?"has-success":"has-warning"}}getAttributePath(t){return this.valueAttributePath[t]}getMatchText(t,e){const n={noRule:this.i18n("Your matcher seems to match no currently defined rule or active alert."),noAlerts:this.i18n("no active alerts"),alert:this.i18n("1 active alert"),alerts:this.i18n("{{n}} active alerts",{n:e}),rule:this.i18n("Matches 1 rule"),rules:this.i18n("Matches {{n}} rules",{n:t})};return t?this.i18n("{{rules}} with {{alerts}}.",{rules:t>1?n.rules:n.rule,alerts:e?e>1?n.alerts:n.alert:n.noAlerts}):n.noRule}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](me.a))},token:t,providedIn:"root"}),t})(),Rc=(()=>{class t{constructor(){}calculateDuration(t,e){const n=+t,a=+e,r=this.getDuration(Math.abs(n-a));return n>a?"-"+r:r}getDuration(t){const e=new Date(t),n=e.getUTCHours(),a=e.getUTCMinutes(),r=(t,e)=>t?t+e:t;return[r(Math.floor(t/864e5),"d"),r(n,"h"),r(a,"m")].filter(t=>t).join(" ")}calculateDate(t,e,n){const a=+t;if(J.isNaN(a))return;const r=this.getDurationMs(e)*(n?-1:1);return new Date(a+r)}getDurationMs(t){return 6e4*(60*(24*this.getNumbersFromString(t,"d")+this.getNumbersFromString(t,"h"))+this.getNumbersFromString(t,"m"))}getNumbersFromString(t,e){const n=t.match(new RegExp(`[0-9 ]+${e}`,"i"));return n?parseInt(n[0],10):0}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t},token:t,providedIn:"root"}),t})();class Ac{constructor(t,e,n){this.formBuilder=t,this.silenceMatcher=e,this.bsModalRef=n,this.submitAction=new s.EventEmitter,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.createForm(),this.subscribeToChanges()}createForm(){this.form=this.formBuilder.group({name:[null,[$.B.required]],value:[{value:null,disabled:!0},[$.B.required]],isRegex:new $.i(!1)})}subscribeToChanges(){this.form.get("name").valueChanges.subscribe(t=>{null!==t?(this.setPossibleValues(t),this.form.get("value").enable()):this.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(t=>{const e=this.form.value;e.value=t,this.matcherMatch=this.silenceMatcher.singleMatch(e,this.rules)})}setPossibleValues(t){this.possibleValues=J.sortedUniq(this.rules.map(e=>J.get(e,this.silenceMatcher.getAttributePath(t))).filter(t=>t))}preFillControls(t){this.form.setValue(t)}onSubmit(){this.submitAction.emit(this.form.value),this.bsModalRef.hide()}}class kc{constructor(t,e,n,a,r,i,s,o,u,l,d,c){this.i18n=t,this.router=e,this.authStorageService=n,this.formBuilder=a,this.prometheusService=r,this.notificationService=i,this.route=s,this.timeDiff=o,this.bsModalService=u,this.silenceMatcher=l,this.actionLabels=d,this.succeededLabels=c,this.icons=ht.a,this.bsConfig={dateInputFormat:"YYYY-MM-DDT HH:mm"},this.recreate=!1,this.edit=!1,this.resource=this.i18n("silence"),this.matchers=[],this.matcherMatch=void 0,this.matcherConfig=[{tooltip:this.i18n("Attribute name"),icon:this.icons.paragraph,attribute:"name"},{tooltip:this.i18n("Value"),icon:this.icons.terminal,attribute:"value"},{tooltip:this.i18n("Regular expression"),icon:this.icons.magic,attribute:"isRegex"}],this.init()}init(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()}chooseMode(){this.edit=this.router.url.startsWith("/monitoring/silence/edit"),this.recreate=this.router.url.startsWith("/monitoring/silence/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE}authenticate(){this.permission=this.authStorageService.getPermissions().prometheus,this.permission.read&&(this.edit?this.permission.update:this.permission.create)||this.router.navigate(["/404"])}createForm(){this.form=this.formBuilder.group({startsAt:[null,[$.B.required]],duration:["2h",[$.B.min(1)]],endsAt:[null,[$.B.required]],createdBy:[this.authStorageService.getUsername(),[$.B.required]],comment:[null,[$.B.required]]},{validators:Fs.a.custom("matcherRequired",()=>0===this.matchers.length)})}setupDates(){const t=new Date;t.setSeconds(0,0),this.form.silentSet("startsAt",t),this.updateDate(),this.subscribeDateChanges()}updateDate(t){const e=this.timeDiff.calculateDate(this.form.getValue(t?"endsAt":"startsAt"),this.form.getValue("duration"),t);e&&this.form.silentSet(t?"startsAt":"endsAt",e)}subscribeDateChanges(){this.form.get("startsAt").valueChanges.subscribe(()=>{this.onDateChange()}),this.form.get("duration").valueChanges.subscribe(()=>{this.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(()=>{this.onDateChange(!0)})}onDateChange(t){this.form.getValue("startsAt")<this.form.getValue("endsAt")?this.updateDuration():this.updateDate(t)}updateDuration(){this.form.silentSet("duration",this.timeDiff.calculateDuration(this.form.getValue("startsAt"),this.form.getValue("endsAt")))}getData(){this.getRules(),this.getModeSpecificData()}getRules(){this.prometheusService.ifPrometheusConfigured(()=>this.prometheusService.getRules().subscribe(t=>{this.rules=t.groups.reduce((t,e)=>J.concat(t,e.rules),[])},()=>{this.prometheusService.disablePrometheusConfig(),this.rules=[]}),()=>{this.rules=[],this.notificationService.show(ge.a.info,this.i18n("Please add your Prometheus host to the dashboard configuration and refresh the page"),void 0,void 0,"Prometheus")})}getModeSpecificData(){this.route.params.subscribe(t=>{t.id&&(this.edit||this.recreate?this.prometheusService.getSilences(t).subscribe(t=>{this.fillFormWithSilence(t[0])}):this.prometheusService.getAlerts(t).subscribe(t=>{this.fillFormByAlert(t[0])}))})}fillFormWithSilence(t){this.id=t.id,this.edit&&(["startsAt","endsAt"].forEach(e=>this.form.silentSet(e,new Date(t[e]))),this.updateDuration()),["createdBy","comment"].forEach(e=>this.form.silentSet(e,t[e])),this.matchers=t.matchers,this.validateMatchers()}validateMatchers(){this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(()=>this.validateMatchers(),100)}fillFormByAlert(t){const e=t.labels;Object.keys(e).forEach(t=>this.setMatcher({name:t,value:e[t],isRegex:!1}))}setMatcher(t,e){J.isNumber(e)?this.matchers[e]=t:this.matchers.push(t),this.validateMatchers()}showMatcherModal(t){const e=this.bsModalService.show(Ac),n=e.content;n.rules=this.rules,J.isNumber(t)&&(n.editMode=!0,n.preFillControls(this.matchers[t])),e.content.submitAction.subscribe(e=>{this.setMatcher(e,t)})}deleteMatcher(t){this.matchers.splice(t,1),this.validateMatchers()}submit(){this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(t=>{this.router.navigate(["/monitoring"],{fragment:"silences"}),this.notificationService.show(ge.a.success,this.getNotificationTile(t.body.silenceId),void 0,void 0,"Prometheus")},()=>this.form.setErrors({cdSubmitButton:!0}))}getSubmitData(){const t=this.form.value;return delete t.duration,t.startsAt=t.startsAt.toISOString(),t.endsAt=t.endsAt.toISOString(),t.matchers=this.matchers,this.edit&&(t.id=this.id),t}getNotificationTile(t){let e;return e=this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED,`${e} ${this.resource} ${t}`}}var Ec=s["ɵcrt"]({encapsulation:0,styles:[["textarea[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function Lc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"input",[["class","form-control"],["disabled",""],["readonly",""],["type","text"]],[[8,"id",0],[8,"value",0],[2,"is-valid",null],[2,"is-invalid",null]],null,null,null,null)),s["ɵdid"](2,16384,null,0,Z.h,[[8,null],Z.a],null,null)],null,(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute],s["ɵnov"](e,2).validClass,s["ɵnov"](e,2).invalidClass)}))}function Dc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"div",[["class","input-group-text"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,0,"input",[["disabled",""],["readonly",""],["type","checkbox"]],[[8,"id",0],[8,"checked",0]],null,null,null,null))],null,(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])}))}function Pc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,11,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,6,"div",[["class","input-group-prepend"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,16777216,null,null,5,"span",[["class","input-group-text"]],null,null,null,null,null)),s["ɵdid"](3,212992,null,0,Qn.c,[s.ViewContainerRef,W.a,Qn.a,s.ElementRef,s.Renderer2,la.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](4,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](7,1),(t()(),s["ɵand"](16777216,null,null,1,null,Lc)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dc)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,3,0,e.context.$implicit.tooltip);var n=t(e,7,0,e.context.$implicit.icon);t(e,6,0,n),t(e,9,0,"isRegex"!==e.context.$implicit.attribute),t(e,11,0,"isRegex"===e.context.$implicit.attribute)}),null)}function Mc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,15,"div",[["class","input-group my-2"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Pc)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](3,0,null,null,12,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Edit"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal(t.context.index)&&a),a}),null,null)),s["ɵdid"](5,212992,null,0,Qn.c,[s.ViewContainerRef,W.a,Qn.a,s.ElementRef,s.Renderer2,la.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](6,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](8,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](9,1),(t()(),s["ɵeld"](10,16777216,null,null,5,"button",[["class","btn btn-light"],["tooltip","Delete"],["type","button"]],[[8,"id",0]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.deleteMatcher(t.context.index)&&a),a}),null,null)),s["ɵdid"](11,212992,null,0,Qn.c,[s.ViewContainerRef,W.a,Qn.a,s.ElementRef,s.Renderer2,la.a],{tooltip:[0,"tooltip"]},null),(t()(),s["ɵeld"](12,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](14,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](15,1),(t()(),s["ɵeld"](16,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,2,0,n.matcherConfig),t(e,5,0,"Edit");var a=t(e,9,0,n.icons.edit);t(e,8,0,a),t(e,11,0,"Delete");var r=t(e,15,0,n.icons.trash);t(e,14,0,r)}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"matcher-edit-",e.context.index,"")),t(e,10,0,s["ɵinlineInterpolate"](1,"matcher-delete-",e.context.index,""))}))}function qc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](1,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](-1,0,["Editing a silence will expire the old silence and recreate it as a new silence"]))],null,null)}function jc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Fc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Gc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Vc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function zc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Bc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"h5",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](3,{"text-warning":0,"text-danger":1}),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["A silence requires at least one matcher"]))],(function(t,e){var n=t(e,3,0,!s["ɵnov"](e.parent,6).submitted,s["ɵnov"](e.parent,6).submitted);t(e,2,0,n)}),null)}function Yc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Hc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Yc)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{index:0,matcher:1})],(function(t,e){var n=t(e,3,0,e.context.index,e.context.$implicit);t(e,2,0,n,s["ɵnov"](e.parent,2))}),null)}function Uc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function Wc(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,qs.a,[]),(t()(),s["ɵand"](0,[["matcherTpl",2]],null,0,null,Mc)),(t()(),s["ɵeld"](3,0,null,null,137,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,136,"form",[["class","form"],["name","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,$.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](8,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](9,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,130,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](13,null,[" "," "," "])),s["ɵppd"](14,1),s["ɵppd"](15,1),(t()(),s["ɵand"](16777216,null,null,1,null,qc)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,113,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](20,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](23,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","created-by"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Creator"])),(t()(),s["ɵeld"](25,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](26,0,null,null,6,"input",[["class","form-control"],["formControlName","createdBy"],["id","created-by"],["name","created-by"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,27)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,27).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,27)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,27)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](27,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](29,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](31,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](32,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jc)),s["ɵdid"](34,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](35,0,null,null,16,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](36,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](39,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","comment"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Comment"])),(t()(),s["ɵeld"](41,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](42,0,null,null,7,"textarea",[["class","form-control"],["formControlName","comment"],["id","comment"],["name","comment"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,43)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,43).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,43)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,43)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](43,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](45,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](47,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](48,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵted"](-1,null,["            "])),(t()(),s["ɵand"](16777216,null,null,1,null,Fc)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](52,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](53,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](56,0,null,0,5,"label",[["class","cd-col-form-label"],["for","starts-at"]],null,null,null,null,null)),(t()(),s["ɵeld"](57,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Start time"])),(t()(),s["ɵeld"](59,0,null,null,2,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](60,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](-1,0,["If the start time lies in the past the creation time will be used"])),(t()(),s["ɵeld"](62,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](63,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","startsAt"],["id","starts-at"],["name","starts-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,64)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,64).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,64)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,64)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,66).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,66).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,66).onBlur()&&a),a}),null,null)),s["ɵdid"](64,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](65,737280,null,0,rt.c,[rt.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](66,16384,null,0,rt.f,[rt.c,rt.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[rt.f]),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,rt.f]),s["ɵdid"](69,671744,[[5,4]],0,$.j,[[3,$.d],[6,$.o],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](71,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](72,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Gc)),s["ɵdid"](74,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](75,0,null,null,15,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](76,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](79,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","duration"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Duration"])),(t()(),s["ɵeld"](81,0,null,0,9,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](82,0,null,null,6,"input",[["class","form-control"],["formControlName","duration"],["id","duration"],["name","duration"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,83)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,83).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,83)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,83)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](83,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](85,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](87,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](88,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vc)),s["ɵdid"](90,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](91,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](92,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,9,{FormControlNames:1}),s["ɵqud"](603979776,10,{messagesBlock:0}),(t()(),s["ɵeld"](95,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","ends-at"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["End time"])),(t()(),s["ɵeld"](97,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](98,16777216,null,null,9,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","endsAt"],["id","ends-at"],["name","ends-at"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,99)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,99).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,99)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,99)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,101).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==s["ɵnov"](t,101).hide()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,101).onBlur()&&a),a}),null,null)),s["ɵdid"](99,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](100,737280,null,0,rt.c,[rt.a,s.ElementRef,s.Renderer2,s.ViewContainerRef,W.a],{bsConfig:[0,"bsConfig"]},null),s["ɵdid"](101,16384,null,0,rt.f,[rt.c,rt.l,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[rt.f]),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,rt.f]),s["ɵdid"](104,671744,[[9,4]],0,$.j,[[3,$.d],[6,$.o],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](106,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](107,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zc)),s["ɵdid"](109,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](110,0,null,null,21,"fieldset",[],null,null,null,null,null)),(t()(),s["ɵeld"](111,0,null,null,1,"legend",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matchers"])),(t()(),s["ɵeld"](113,0,null,null,16,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Bc)),s["ɵdid"](115,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hc)),s["ɵdid"](117,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](118,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](119,0,null,null,10,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](120,0,null,null,9,"button",[["class","btn btn-light float-right my-3"],["id","add-matcher"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showMatcherModal()&&a),a}),null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](122,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](123,{"btn-warning":0}),(t()(),s["ɵeld"](124,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](126,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](127,1),(t()(),s["ɵeld"](128,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add matcher"])),(t()(),s["ɵand"](16777216,null,null,1,null,Uc)),s["ɵdid"](131,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](132,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](133,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](134,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](135,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](136,0,[" "," "," "])),s["ɵppd"](137,1),s["ɵppd"](138,1),(t()(),s["ɵeld"](139,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](140,49152,null,0,Ms.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.form),t(e,9,0,n.form),t(e,17,0,n.edit),t(e,20,0),t(e,29,0,"createdBy"),t(e,32,0,"createdBy"),t(e,34,0,n.form.showError("createdBy",s["ɵnov"](e,6),"required")),t(e,36,0),t(e,45,0,"comment"),t(e,48,0,"comment"),t(e,51,0,n.form.showError("comment",s["ɵnov"](e,6),"required")),t(e,53,0),t(e,65,0,n.bsConfig),t(e,69,0,"startsAt"),t(e,72,0,"startsAt"),t(e,74,0,n.form.showError("startsAt",s["ɵnov"](e,6),"required")),t(e,76,0),t(e,85,0,"duration"),t(e,88,0,"duration"),t(e,90,0,n.form.showError("duration",s["ɵnov"](e,6),"required")),t(e,92,0),t(e,100,0,n.bsConfig),t(e,104,0,"endsAt"),t(e,107,0,"endsAt"),t(e,109,0,n.form.showError("endsAt",s["ɵnov"](e,6),"required")),t(e,115,0,0===n.matchers.length),t(e,117,0,n.matchers);var a=t(e,123,0,s["ɵnov"](e,6).submitted&&0===n.matchers.length);t(e,122,0,"btn btn-light float-right my-3",a);var r=t(e,127,0,n.icons.add);t(e,126,0,r),t(e,131,0,n.matchers.length&&n.matcherMatch),t(e,135,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,13,0,t(e,14,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,13,1,t(e,15,0,s["ɵnov"](e,1),n.resource));t(e,13,0,a,r),t(e,19,0,s["ɵnov"](e,20).hasErrors,s["ɵnov"](e,20).hasSuccess),t(e,26,0,s["ɵnov"](e,31).ngClassUntouched,s["ɵnov"](e,31).ngClassTouched,s["ɵnov"](e,31).ngClassPristine,s["ɵnov"](e,31).ngClassDirty,s["ɵnov"](e,31).ngClassValid,s["ɵnov"](e,31).ngClassInvalid,s["ɵnov"](e,31).ngClassPending,s["ɵnov"](e,32).validClass,s["ɵnov"](e,32).invalidClass),t(e,35,0,s["ɵnov"](e,36).hasErrors,s["ɵnov"](e,36).hasSuccess),t(e,42,0,s["ɵnov"](e,47).ngClassUntouched,s["ɵnov"](e,47).ngClassTouched,s["ɵnov"](e,47).ngClassPristine,s["ɵnov"](e,47).ngClassDirty,s["ɵnov"](e,47).ngClassValid,s["ɵnov"](e,47).ngClassInvalid,s["ɵnov"](e,47).ngClassPending,s["ɵnov"](e,48).validClass,s["ɵnov"](e,48).invalidClass),t(e,52,0,s["ɵnov"](e,53).hasErrors,s["ɵnov"](e,53).hasSuccess),t(e,63,0,s["ɵnov"](e,71).ngClassUntouched,s["ɵnov"](e,71).ngClassTouched,s["ɵnov"](e,71).ngClassPristine,s["ɵnov"](e,71).ngClassDirty,s["ɵnov"](e,71).ngClassValid,s["ɵnov"](e,71).ngClassInvalid,s["ɵnov"](e,71).ngClassPending,s["ɵnov"](e,72).validClass,s["ɵnov"](e,72).invalidClass),t(e,75,0,s["ɵnov"](e,76).hasErrors,s["ɵnov"](e,76).hasSuccess),t(e,82,0,s["ɵnov"](e,87).ngClassUntouched,s["ɵnov"](e,87).ngClassTouched,s["ɵnov"](e,87).ngClassPristine,s["ɵnov"](e,87).ngClassDirty,s["ɵnov"](e,87).ngClassValid,s["ɵnov"](e,87).ngClassInvalid,s["ɵnov"](e,87).ngClassPending,s["ɵnov"](e,88).validClass,s["ɵnov"](e,88).invalidClass),t(e,91,0,s["ɵnov"](e,92).hasErrors,s["ɵnov"](e,92).hasSuccess),t(e,98,0,s["ɵnov"](e,106).ngClassUntouched,s["ɵnov"](e,106).ngClassTouched,s["ɵnov"](e,106).ngClassPristine,s["ɵnov"](e,106).ngClassDirty,s["ɵnov"](e,106).ngClassValid,s["ɵnov"](e,106).ngClassInvalid,s["ɵnov"](e,106).ngClassPending,s["ɵnov"](e,107).validClass,s["ɵnov"](e,107).invalidClass);var i=s["ɵunv"](e,136,0,t(e,137,0,s["ɵnov"](e,0),n.action)),o=s["ɵunv"](e,136,1,t(e,138,0,s["ɵnov"](e,1),n.resource));t(e,136,0,i,o)}))}function Kc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-prometheus-form",[],null,null,null,Wc,Ec)),s["ɵdid"](1,49152,null,0,kc,[me.a,qt.m,vt.a,Ho.a,Le,gt.a,qt.a,Rc,Lt.b,Cc,At.b,At.d],null,null)],null,null)}var $c=s["ɵccf"]("cd-prometheus-form",kc,Kc,{},{},[]);let Zc=(()=>{class t{constructor(e){this.route=e,this.route.queryParams.subscribe(e=>{this.fromLink=e.fromLink||t.defaultFromLink}),this.route.params.subscribe(t=>{this.serviceId=decodeURIComponent(t.id),this.serviceType=t.type})}}return t.defaultFromLink="/hosts",t})();var Jc=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Qc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",".",""])),(t()(),s["ɵeld"](2,0,null,null,1,"cd-table-performance-counter",[],null,null,null,bo.b,bo.a)),s["ɵdid"](3,114688,null,0,mo.a,[yo.a,me.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],(function(t,e){var n=e.component;t(e,3,0,n.serviceType,n.serviceId)}),(function(t,e){var n=e.component;t(e,1,0,n.serviceType,n.serviceId)}))}function Xc(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-performance-counter",[],null,null,null,Qc,Jc)),s["ɵdid"](1,49152,null,0,Zc,[qt.a],null,null)],null,null)}var tf=s["ɵccf"]("cd-performance-counter",Zc,Xc,{},{},[]);class ef{constructor(t){this.mgrModuleService=t}ngOnChanges(){this.selection&&this.mgrModuleService.getConfig(this.selection.name).subscribe(t=>{this.module_config=t})}}var nf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function af(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,xi.b,xi.a)),s["ɵdid"](5,638976,null,0,_i.a,[Se.a],{data:[0,"data"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.module_config)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby)}))}function rf(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,af)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}var sf=n("PqYM");let of=(()=>{class t extends ds.a{constructor(t,e,n,a){super(),this.authStorageService=t,this.mgrModuleService=e,this.notificationService=n,this.i18n=a,this.columns=[],this.modules=[],this.selection=new ti.a,this.permission=this.authStorageService.getPermissions().configOpt,this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Enabled"),prop:"enabled",flexGrow:1,cellClass:"text-center",cellTransformation:Xr.a.checkIcon},{name:this.i18n("Always-On"),prop:"always_on",isHidden:!0,flexGrow:1,cellClass:"text-center",cellTransformation:Xr.a.checkIcon}];const r=()=>this.selection.first()&&encodeURIComponent(this.selection.first().name);this.tableActions=[{name:this.i18n("Edit"),permission:"update",disable:()=>!this.selection.hasSelection||0===Object.values(this.selection.first().options).length,routerLink:()=>`/mgr-modules/edit/${r()}`,icon:ht.a.edit},{name:this.i18n("Enable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("enabled"),icon:ht.a.start},{name:this.i18n("Disable"),permission:"update",click:()=>this.updateModuleState(),disable:()=>this.isTableActionDisabled("disabled"),disableDesc:()=>this.getTableActionDisabledDesc(),icon:ht.a.stop}]}getModuleList(t){this.mgrModuleService.list().subscribe(t=>{this.modules=t},()=>{t.error()})}updateSelection(t){this.selection=t}isTableActionDisabled(t){if(!this.selection.hasSelection)return!0;const e=this.selection.first();if("dashboard"===e.name)return!0;if(e.always_on)return!0;switch(t){case"enabled":return e.enabled;case"disabled":return!e.enabled}}getTableActionDisabledDesc(){if(this.selection.hasSelection&&this.selection.first().always_on)return this.i18n("This Manager module is always on.")}updateModuleState(){if(!this.selection.hasSelection)return;let t;const e=()=>{Object(sf.a)(2e3).subscribe(()=>{this.mgrModuleService.list().subscribe(()=>{this.notificationService.suspendToasties(!1),this.blockUI.stop(),this.table.refreshBtn()},()=>{e()})})},n=this.selection.first();t=n.enabled?this.mgrModuleService.disable(n.name):this.mgrModuleService.enable(n.name),t.subscribe(()=>{},()=>{this.notificationService.suspendToasties(!0),this.blockUI.start(this.i18n("Reconnecting, please wait ...")),e()})}}return xl.__decorate([L(),xl.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t})();var uf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function lf(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{table:0}),(t()(),s["ɵeld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","module"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"],[null,"fetchData"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"fetchData"===e&&(a=!1!==r.getModuleList(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](2,2867200,[[1,4],["table",4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],autoReload:[4,"autoReload"],identifier:[5,"identifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](3,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](4,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](5,0,null,3,1,"cd-mgr-module-details",[["cdTableDetail",""]],null,null,null,rf,nf)),s["ɵdid"](6,573440,null,0,ef,[he],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.modules,n.columns,"flex",!0,!1,"module","single"),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.expandedRow)}),null)}function df(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-list",[],null,null,null,lf,uf)),s["ɵdid"](1,49152,null,0,of,[vt.a,he,gt.a,me.a],null,null)],null,null)}var cf=s["ɵccf"]("cd-mgr-module-list",of,df,{},{},[]);class ff{constructor(t,e,n,a,r,i){this.route=t,this.router=e,this.formBuilder=n,this.mgrModuleService=a,this.notificationService=r,this.i18n=i,this.error=!1,this.loading=!1,this.moduleName="",this.moduleOptions=[]}ngOnInit(){this.route.params.subscribe(t=>{this.moduleName=decodeURIComponent(t.name),this.loading=!0;const e=[this.mgrModuleService.getOptions(this.moduleName),this.mgrModuleService.getConfig(this.moduleName)];Object(Mo.a)(e).subscribe(t=>{this.loading=!1,this.moduleOptions=t[0],this.createForm(),this.mgrModuleForm.setValue(t[1])},t=>{this.error=!0})})}getValidators(t){const e=[];switch(t.type){case"addr":e.push(Fs.a.ip());break;case"uint":case"int":case"size":case"secs":e.push(Fs.a.number()),e.push($.B.required),J.isNumber(t.min)&&e.push($.B.min(t.min)),J.isNumber(t.max)&&e.push($.B.max(t.max));break;case"str":J.isNumber(t.min)&&e.push($.B.minLength(t.min)),J.isNumber(t.max)&&e.push($.B.maxLength(t.max));break;case"float":e.push($.B.required),e.push(Fs.a.decimalNumber());break;case"uuid":e.push(Fs.a.uuid())}return e}createForm(){const t={};J.forEach(this.moduleOptions,e=>{t[e.name]=[e.default_value,this.getValidators(e)]}),this.mgrModuleForm=this.formBuilder.group(t)}goToListView(){this.router.navigate(["/mgr-modules"])}onSubmit(){if(this.mgrModuleForm.pristine)return void this.goToListView();const t={};J.forEach(this.moduleOptions,e=>{const n=this.mgrModuleForm.get(e.name);n.dirty&&n.valid&&(t[e.name]=n.value)}),this.mgrModuleService.updateConfig(this.moduleName,t).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n('Updated options for module "{{name}}".',{name:this.moduleName})),this.goToListView()},()=>{this.mgrModuleForm.setErrors({cdSubmitButton:!0})})}}var hf=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function gf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,Ti.b,Ti.a)),s["ɵdid"](1,49152,null,0,Oi.a,[],null,null),(t()(),s["ɵted"](-1,0,["Loading configuration..."]))],null,null)}function pf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-alert-panel",[["type","error"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](-1,0,["The configuration could not be loaded."]))],(function(t,e){t(e,1,0,"error")}),null)}function bf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](1,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](2,0,[" "," "])),s["ɵppd"](3,1)],null,(function(t,e){var n=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent.parent.parent,0),e.parent.context.$implicit.value.long_desc||e.parent.context.$implicit.value.desc));t(e,2,0,n)}))}function mf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](3,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](5,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](7,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](8,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](9,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,2,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass),t(e,9,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))}))}function yf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["type","text"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](3,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,6,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""))}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function vf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function xf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"select",[["class","form-control custom-select"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](3,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vf)),s["ɵdid"](8,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,3,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,6,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,8,0,e.parent.parent.context.$implicit.value.enum_allowed)}),(function(t,e){t(e,0,0,s["ɵinlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function _f(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8"]))],null,null)}function Tf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a valid IP address."]))],null,null)}function Of(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,yf)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xf)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,_f)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tf)),s["ɵdid"](8,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,0===e.parent.context.$implicit.value.enum_allowed.length),t(e,4,0,e.parent.context.$implicit.value.enum_allowed.length>0),t(e,6,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"invalidUuid")),t(e,8,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),null)}function wf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Sf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must be lower or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.max)}))}function If(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must be greater or equal to ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.value.min)}))}function Nf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number."]))],null,null)}function Cf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,16,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"min",0],[8,"max",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](3,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](5,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](7,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](8,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wf)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sf)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,If)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nf)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,10,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,12,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"max")),t(e,14,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"min")),t(e,16,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,1,[s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.min,""),s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.max,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass])}))}function Rf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Af(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The entered value needs to be a number or decimal."]))],null,null)}function kf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,3).onTouched()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](3,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](5,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](7,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](8,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rf)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Af)),s["ɵdid"](12,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,5,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,8,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,10,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"required")),t(e,12,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,s["ɵnov"](e.parent.parent,3),"pattern"))}),(function(t,e){t(e,1,0,s["ɵinlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending,s["ɵnov"](e,8).validClass,s["ɵnov"](e,8).invalidClass)}))}function Ef(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,3,"label",[["class","col-form-label col-sm-5"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,bf)),s["ɵdid"](7,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,mf)),s["ɵdid"](9,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,2,null,Of)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](12,3),(t()(),s["ɵand"](16777216,null,0,2,null,Cf)),s["ɵdid"](14,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),s["ɵpad"](15,4),(t()(),s["ɵand"](16777216,null,0,1,null,kf)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0),t(e,7,0,e.context.$implicit.value.long_desc||e.context.$implicit.value.desc),t(e,9,0,"bool"===e.context.$implicit.value.type);var n=t(e,12,0,"addr","str","uuid").includes(e.context.$implicit.value.type);t(e,11,0,n);var a=t(e,15,0,"uint","int","size","secs").includes(e.context.$implicit.value.type);t(e,14,0,a),t(e,17,0,"float"===e.context.$implicit.value.type)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,s["ɵinlineInterpolate"](1,"",e.context.$implicit.value.name,"")),t(e,5,0,e.context.$implicit.value.name)}))}function Lf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,22,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,21,"form",[["name","mgrModuleForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](6,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](7,0,null,null,15,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Edit Manager module"])),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Ef)),s["ɵdid"](12,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](14,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](17,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](18,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Update"])),(t()(),s["ɵeld"](20,0,null,null,2,"button",[["class","btn btn-light"],["routerLink","/mgr-modules"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,21).onClick()&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,qt.n,[qt.m,qt.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){var n=e.component;t(e,3,0,n.mgrModuleForm),t(e,6,0,n.mgrModuleForm),t(e,12,0,s["ɵunv"](e,12,0,s["ɵnov"](e,13).transform(n.moduleOptions))),t(e,17,0,n.mgrModuleForm),t(e,21,0,"/mgr-modules")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending)}))}function Df(t){return s["ɵvid"](0,[s["ɵpid"](0,qs.a,[]),(t()(),s["ɵand"](16777216,null,null,1,null,gf)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pf)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lf)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.loading&&!n.error),t(e,4,0,n.loading&&n.error),t(e,6,0,!n.loading&&!n.error)}),null)}function Pf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-mgr-module-form",[],null,null,null,Df,hf)),s["ɵdid"](1,114688,null,0,ff,[qt.a,qt.m,Ho.a,he,gt.a,me.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Mf=s["ɵccf"]("cd-mgr-module-form",ff,Pf,{},{},[]),qf=n("xTzq");let jf=(()=>{let t=class{constructor(t){this.http=t,this.baseURL="api/cephfs",this.baseUiURL="ui-api/cephfs"}list(){return this.http.get(`${this.baseURL}`)}lsDir(t,e){let n=`${this.baseUiURL}/${t}/ls_dir?depth=2`;return e&&(n+=`&path=${encodeURIComponent(e)}`),this.http.get(n)}getCephfs(t){return this.http.get(`${this.baseURL}/${t}`)}getTabs(t){return this.http.get(`ui-api/cephfs/${t}/tabs`)}getClients(t){return this.http.get(`${this.baseURL}/${t}/clients`)}evictClient(t,e){return this.http.delete(`${this.baseURL}/${t}/client/${e}`)}getMdsCounters(t){return this.http.get(`${this.baseURL}/${t}/mds_counters`)}mkSnapshot(t,e,n){let a=new X.h;return a=a.append("path",e),J.isUndefined(n)||(a=a.append("name",n)),this.http.post(`${this.baseURL}/${t}/mk_snapshot`,null,{params:a})}rmSnapshot(t,e,n){let a=new X.h;return a=a.append("path",e),a=a.append("name",n),this.http.post(`${this.baseURL}/${t}/rm_snapshot`,null,{params:a})}updateQuota(t,e,n){let a=new X.h;return a=a.append("path",e),this.http.post(`${this.baseURL}/${t}/set_quotas`,n,{observe:"response",params:a})}};return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t=xl.__decorate([qf.a,xl.__metadata("design:paramtypes",[X.c])],t),t})();class Ff{constructor(t,e,n,a,r,i,s,o){this.authStorageService=t,this.modalService=e,this.cephfsService=n,this.cdDatePipe=a,this.i18n=r,this.actionLabels=i,this.notificationService=s,this.dimlessBinaryPipe=o,this.icons=ht.a,this.loadingIndicator=!1,this.loading={},this.treeOptions={useVirtualScroll:!0,getChildren:t=>this.updateDirectory(t.id),actionMapping:{mouse:{click:this.selectAndShowNode.bind(this),expanderClick:this.selectAndShowNode.bind(this)}}}}selectAndShowNode(t,e,n){_l.a.TOGGLE_EXPANDED(t,e,n),this.selectNode(e)}selectNode(t){_l.a.TOGGLE_ACTIVE(void 0,t,void 0),this.selectedDir=this.getDirectory(t),"/"!==t.id&&this.setSettings(t)}ngOnInit(){this.permission=this.authStorageService.getPermissions().cephfs,this.setUpQuotaTable(),this.setUpSnapshotTable()}setUpQuotaTable(){this.quota={columns:[{prop:"row.name",name:this.i18n("Name"),flexGrow:1},{prop:"row.value",name:this.i18n("Value"),sortable:!1,flexGrow:1},{prop:"row.originPath",name:this.i18n("Origin"),sortable:!1,cellTemplate:this.originTmpl,flexGrow:1}],selection:new ti.a,updateSelection:t=>{this.quota.selection=t},tableActions:[{name:this.actionLabels.SET,icon:ht.a.edit,permission:"update",visible:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UPDATE,icon:ht.a.edit,permission:"update",visible:t=>t.first()&&t.first().dirValue>0,click:()=>this.updateQuotaModal()},{name:this.actionLabels.UNSET,icon:ht.a.destroy,permission:"update",disable:t=>!t.hasSelection||t.first()&&0===t.first().dirValue,click:()=>this.unsetQuotaModal()}]}}setUpSnapshotTable(){this.snapshot={columns:[{prop:"name",name:this.i18n("Name"),flexGrow:1},{prop:"path",name:this.i18n("Path"),isHidden:!0,flexGrow:2},{prop:"created",name:this.i18n("Created"),flexGrow:1,pipe:this.cdDatePipe}],selection:new ti.a,updateSelection:t=>{this.snapshot.selection=t},tableActions:[{name:this.actionLabels.CREATE,icon:ht.a.add,permission:"create",canBePrimary:t=>!t.hasSelection,click:()=>this.createSnapshot()},{name:this.actionLabels.DELETE,icon:ht.a.destroy,permission:"delete",click:()=>this.deleteSnapshotModal(),canBePrimary:t=>t.hasSelection,disable:t=>!t.hasSelection}]}}ngOnChanges(){this.selectedDir=void 0,this.dirs=[],this.requestedPaths=[],this.nodeIds={},this.id&&(this.setRootNode(),this.firstCall())}setRootNode(){this.nodes=[{name:"/",id:"/",isExpanded:!0}]}firstCall(){setTimeout(()=>{this.getNode("/").loadNodeChildren()},10)}updateDirectory(t){if(this.unsetLoadingIndicator(),this.requestedPaths.includes(t)){if(!0===this.loading[t])return}else this.requestedPaths.push(t);return new Promise(e=>{this.setLoadingIndicator(t,!0),this.cephfsService.lsDir(this.id,t).subscribe(n=>{this.updateTreeStructure(n),this.updateQuotaTable(),this.updateTree(),e(this.getChildren(t)),this.setLoadingIndicator(t,!1)})})}setLoadingIndicator(t,e){this.loading[t]=e,this.unsetLoadingIndicator()}getSubDirectories(t,e=this.dirs){return e.filter(e=>e.parent===t)}getChildren(t){const e=this.getSubTree(t);return J.sortBy(this.getSubDirectories(t),"path").map(t=>this.createNode(t,e))}createNode(t,e){return this.nodeIds[t.path]=t,e||this.getSubTree(t.parent),{name:t.name,id:t.path,hasChildren:this.getSubDirectories(t.path,e).length>0}}getSubTree(t){return this.dirs.filter(e=>e.parent&&e.parent.startsWith(t))}setSettings(t){const e=(t,e)=>t?e?e(t):t:"";this.settings=[this.getQuota(t,"max_files",e),this.getQuota(t,"max_bytes",t=>e(t,t=>this.dimlessBinaryPipe.transform(t)))]}getQuota(t,e,n){const a=t.id;t=this.getOrigin(t,e);const r=this.getDirectory(t),i=r.quotas[e];let s=i,o=r.path;if(t.id===a)if("/"===t.parent.id)s=0;else{const n=this.getDirectory(this.getOrigin(t.parent,e));s=n.quotas[e],o=n.path}return{row:{name:this.i18n("max_bytes"===e?"Max size":"Max files"),value:n(i),originPath:i?r.path:""},quotaKey:e,dirValue:this.nodeIds[a].quotas[e],nextTreeMaximum:{value:s,path:s?o:""}}}getOrigin(t,e){if(t.parent&&"/"!==t.parent.id){const n=this.getQuotaFromTree(t,e),a=this.getOrigin(t.parent,e),r=this.getQuotaFromTree(a,e);return 0===n||0!==r&&r<n?a:t}return t}getQuotaFromTree(t,e){return this.getDirectory(t).quotas[e]}getDirectory(t){return this.nodeIds[t.id]}selectOrigin(t){this.selectNode(this.getNode(t))}getNode(t){return this.treeComponent.treeModel.getNodeById(t)}updateQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.nextTreeMaximum,a=e.quotaKey,r=e.dirValue;this.modalService.show(Qr.a,{initialState:{titleText:this.getModalQuotaTitle(0===r?this.actionLabels.SET:this.actionLabels.UPDATE,t),message:n.value?this.i18n("The inherited {{quotaValue}} is the maximum value to be used.",{quotaValue:this.getQuotaValueFromPathMsg(n.value,n.path)}):void 0,fields:[this.getQuotaFormField(e.row.name,a,r,n.value)],submitButtonText:this.i18n("Save"),onSubmit:t=>this.updateQuota(t)}})}getModalQuotaTitle(t,e){return this.i18n("{{action}} CephFS {{quotaName}} quota for '{{path}}'",{action:t,quotaName:this.getQuotaName(),path:e})}getQuotaName(){return this.isBytesQuotaSelected()?this.i18n("size"):this.i18n("files")}isBytesQuotaSelected(){return"max_bytes"===this.quota.selection.first().quotaKey}getQuotaValueFromPathMsg(t,e){return this.i18n("{{quotaName}} quota {{value}} from '{{path}}'",{value:this.isBytesQuotaSelected()?this.dimlessBinaryPipe.transform(t):t,quotaName:this.getQuotaName(),path:e})}getQuotaFormField(t,e,n,a){const r="max_bytes"===e,i=[r?Fs.a.binaryMin(0):$.B.min(0)];a&&i.push(r?Fs.a.binaryMax(a):$.B.max(a));const s={type:r?"binary":"number",label:t,name:e,value:n,validators:i,required:!0};return r||(s.errors={min:this.i18n("Value has to be at least {{value}} or more",{value:0}),max:this.i18n("Value has to be at most {{value}} or less",{value:a})}),s}updateQuota(t,e){const n=this.selectedDir.path,a=this.quota.selection.first().quotaKey,r=0===this.selectedDir.quotas[a]?this.actionLabels.SET:0===t[a]?this.actionLabels.UNSET:this.i18n("Updated");this.cephfsService.updateQuota(this.id,n,t).subscribe(()=>{e&&e(),this.notificationService.show(ge.a.success,this.getModalQuotaTitle(r,n)),this.forceDirRefresh()})}unsetQuotaModal(){const t=this.selectedDir.path,e=this.quota.selection.first(),n=e.quotaKey,a=e.nextTreeMaximum,r=e.dirValue;this.modalRef=this.modalService.show(qo.a,{initialState:{titleText:this.getModalQuotaTitle(this.actionLabels.UNSET,t),buttonText:this.actionLabels.UNSET,description:this.i18n("{{action}} {{quotaValue}} {{conclusion}}.",{action:this.actionLabels.UNSET,quotaValue:this.getQuotaValueFromPathMsg(r,t),conclusion:a.value>0?this.i18n(a.value>r?"in order to inherit {{quotaValue}}":"which isn't used because of the inheritance of {{quotaValue}}",{quotaValue:this.getQuotaValueFromPathMsg(a.value,a.path)}):this.i18n("in order to have no quota on the directory")}),onSubmit:()=>this.updateQuota({[n]:0},()=>this.modalRef.hide())}})}createSnapshot(){const t=this.selectedDir.path;this.modalService.show(Qr.a,{initialState:{titleText:this.i18n("Create Snapshot"),message:this.i18n("Please enter the name of the snapshot."),fields:[{type:"text",name:"name",value:`${Oe().toISOString(!0)}`,required:!0}],submitButtonText:this.i18n("Create Snapshot"),onSubmit:e=>{this.cephfsService.mkSnapshot(this.id,t,e.name).subscribe(e=>{this.notificationService.show(ge.a.success,this.i18n('Created snapshot "{{name}}" for "{{path}}"',{name:e,path:t})),this.forceDirRefresh()})}}})}forceDirRefresh(t){if(!t){const e=this.selectedDir;if(!e)throw new Error("This function can only be called without path if an selection was made");t=e.parent?e.parent:e.path}this.getNode(t).loadNodeChildren()}updateTreeStructure(t){const e=(t,e)=>{const n=t.filter(t=>t.parent===e),a=n.map(t=>t.path);return{children:n,paths:a}};J.uniq(t.map(t=>t.parent).sort()).forEach(n=>{const a=e(t,n),r=e(this.dirs,n);r.children.forEach(t=>{a.paths.includes(t.path)||this.removeOldDirectory(t)}),a.children.forEach(t=>{r.paths.includes(t.path)?this.updateExistingDirectory(r.children,t):this.addNewDirectory(t)})})}removeOldDirectory(t){const e=t.path;J.remove(this.dirs,t=>t.path===e),delete this.nodeIds[e],this.updateDirectoriesParentNode(t)}updateDirectoriesParentNode(t){const e=t.parent;if(!e)return;const n=this.getNode(e);if(!n)return;const a=this.getChildren(e);n.data.children=a,n.data.hasChildren=a.length>0,this.treeComponent.treeModel.update()}addNewDirectory(t){this.dirs.push(t),this.nodeIds[t.path]=t,this.updateDirectoriesParentNode(t)}updateExistingDirectory(t,e){const n=t.find(t=>t.path===e.path);Object.assign(n,e)}updateQuotaTable(){const t=this.selectedDir?this.getNode(this.selectedDir.path):void 0;t&&"/"!==t.id&&this.setSettings(t)}updateTree(t=!1){this.loadingIndicator&&!t||(this.treeComponent.treeModel.update(),this.nodes=[...this.nodes],this.treeComponent.sizeChanged())}deleteSnapshotModal(){this.modalRef=this.modalService.show(cs.a,{initialState:{itemDescription:this.i18n("CephFs Snapshot"),itemNames:this.snapshot.selection.selected.map(t=>t.name),submitAction:()=>this.deleteSnapshot()}})}deleteSnapshot(){const t=this.selectedDir.path;this.snapshot.selection.selected.forEach(e=>{const n=e.name;this.cephfsService.rmSnapshot(this.id,t,n).subscribe(()=>{this.notificationService.show(ge.a.success,this.i18n('Deleted snapshot "{{name}}" for "{{path}}"',{name:n,path:t}))})}),this.modalRef.hide(),this.forceDirRefresh()}refreshAllDirectories(){this.loadingIndicator=!0,this.requestedPaths.map(t=>this.forceDirRefresh(t));const t=setInterval(()=>{this.updateTree(!0),this.loadingIndicator||clearInterval(t)},3e3)}unsetLoadingIndicator(){this.loadingIndicator&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=setTimeout(()=>{if(Object.values(this.loading).some(t=>t))return this.unsetLoadingIndicator();this.loadingIndicator=!1,this.updateTree()},3e3))}}var Gf=s["ɵcrt"]({encapsulation:0,styles:[["tree-root .tree-children{overflow:inherit}.quota-origin[_ngcontent-%COMP%]{cursor:pointer;color:#2b99a8}.quota-origin[_ngcontent-%COMP%]:hover{color:#212121}"]],data:{}});function Vf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](2,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](3,2)],(function(t,e){var n=e.component,a=t(e,3,0,n.icons.spinner,n.icons.spin);t(e,2,0,a)}),null)}function zf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,7,"tree-root",[],null,[["body","keydown"],["body","mousedown"]],(function(t,e,n){var a=!0;return"body:keydown"===e&&(a=!1!==s["ɵnov"](t,2).onKeydown(n)&&a),"body:mousedown"===e&&(a=!1!==s["ɵnov"](t,2).onMousedown(n)&&a),a}),bl.b,bl.a)),s["ɵprd"](131584,null,ml.a,ml.a,[]),s["ɵdid"](2,573440,[[1,4]],4,yl.a,[ml.a,vl.a],{nodes:[0,"nodes"],options:[1,"options"]},null),s["ɵqud"](603979776,3,{loadingTemplate:0}),s["ɵqud"](603979776,4,{treeNodeTemplate:0}),s["ɵqud"](603979776,5,{treeNodeWrapperTemplate:0}),s["ɵqud"](603979776,6,{treeNodeFullTemplate:0}),(t()(),s["ɵand"](0,[[3,2],["loadingTemplate",2]],null,0,null,Vf))],(function(t,e){var n=e.component;t(e,2,0,n.nodes,n.treeOptions)}),null)}function Bf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Quotas"])),(t()(),s["ɵeld"](3,0,null,null,3,"cd-table",[["identifier","quotaKey"],["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.quota.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](4,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],onlyActionHeader:[2,"onlyActionHeader"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],identifier:[6,"identifier"],forceIdentifier:[7,"forceIdentifier"],selectionType:[8,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](5,0,null,0,1,"cd-table-actions",[["class","only-table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](6,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.settings,n.quota.columns,!0,!1,!1,0,"quotaKey",!0,"single"),t(e,6,0,n.permission,n.quota.selection,n.quota.tableActions)}),null)}function Yf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,12,"div",[["class","col-sm-8 metadata"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,11,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,[" "," "])),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Bf)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](7,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Snapshots"])),(t()(),s["ɵeld"](9,0,null,null,3,"cd-table",[["forceIdentifier","true"],["identifier","name"],["selectionType","multiClick"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.snapshot.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](10,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](11,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](12,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,6,0,"/"!==n.selectedDir.path),t(e,10,0,n.selectedDir.snapshots,n.snapshot.columns,"name","true","multiClick"),t(e,12,0,n.permission,n.snapshot.selection,n.snapshot.tableActions)}),(function(t,e){t(e,3,0,e.component.selectedDir.path)}))}function Hf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","quota-origin"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectOrigin(t.context.value)&&a),a}),null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.context.value)}))}function Uf(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{treeComponent:0}),s["ɵqud"](402653184,2,{originTmpl:0}),(t()(),s["ɵeld"](2,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,10,"div",[["class","col-sm-4 pr-0"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,9,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,5,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,4,"button",[["class","btn btn-light pull-right"],["type","button"]],[[2,"disabled",null]],[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshAllDirectories()&&a),a}),null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"i",[],[[2,"fa-spin",null]],null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](9,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](10,2),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,zf)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yf)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,[[2,2],["origin",2]],null,0,null,Hf))],(function(t,e){var n=e.component,a=t(e,10,0,n.icons.large,n.icons.refresh);t(e,9,0,a),t(e,13,0,n.nodes),t(e,15,0,n.selectedDir)}),(function(t,e){var n=e.component;t(e,6,0,n.loadingIndicator),t(e,7,0,n.loadingIndicator)}))}class Wf{constructor(){this.lhsCounter="mds_mem.ino",this.rhsCounter="mds_server.handle_client_request",this.chart={datasets:[{label:this.lhsCounter,yAxisID:"LHS",data:[],lineTension:.1},{label:this.rhsCounter,yAxisID:"RHS",data:[],lineTension:.1}],options:{title:{text:"",display:!0},responsive:!0,maintainAspectRatio:!1,legend:{position:"top"},scales:{xAxes:[{position:"top",type:"time",time:{displayFormats:{quarter:"MMM YYYY"}},ticks:{maxRotation:0}}],yAxes:[{id:"LHS",type:"linear",position:"left"},{id:"RHS",type:"linear",position:"right"}]},tooltips:{enabled:!1,mode:"index",intersect:!1,position:"nearest",callbacks:{title:(t,e)=>{let n=0;if(t.length>0){const a=t[0];n=e.datasets[a.datasetIndex].data[a.index].x}return n.toString()}}}},chartType:"line"}}ngOnInit(){J.isUndefined(this.mdsCounter)||(this.setChartTooltip(),this.updateChart())}ngOnChanges(){J.isUndefined(this.mdsCounter)||this.updateChart()}setChartTooltip(){const t=new xa.a(this.chartCanvas,this.chartTooltip,t=>t.caretX+"px",t=>t.caretY-t.height-23+"px");t.getTitle=t=>Oe(t,"x").format("LTS"),t.checkOffset=!0,J.merge(this.chart,{options:{title:{text:this.mdsCounter.name},tooltips:{custom:e=>t.customTooltips(e)}}})}updateChart(){const t=[{data:this.convertTimeSeries(this.mdsCounter[this.lhsCounter])},{data:this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])}];J.merge(this.chart,{datasets:t}),this.chart.datasets=[...this.chart.datasets]}convertTimeSeries(t){const e=[];return J.each(t,t=>{e.push({x:1e3*t[0],y:t[1]})}),e.shift(),e}deltaTimeSeries(t){let e,n=t[0];const a=[];for(e=1;e<t.length;e++){const r=t[e];a.push({x:1e3*r[0],y:r[1]-n[1]}),n=r}return a}}var Kf=s["ɵcrt"]({encapsulation:0,styles:[['canvas[_ngcontent-%COMP%]{-moz-user-select:none;user-select:none}.chartjs-tooltip[_ngcontent-%COMP%]{opacity:0;position:absolute;background:rgba(0,0,0,.7);color:#fff;border-radius:3px;transition:all .1s ease;pointer-events:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{transform:translate(-90%,0)}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]::after{left:90%}.chartjs-tooltip[_ngcontent-%COMP%]::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#000 transparent transparent}  .chartjs-tooltip-key{display:inline-block;width:10px;height:10px;margin-right:10px}.chart-container[_ngcontent-%COMP%]{margin:auto auto 20px;cursor:pointer;overflow:visible;position:relative;height:500px;width:100%}']],data:{}});function $f(t){return s["ɵvid"](0,[s["ɵqud"](402653184,1,{chartCanvas:0}),s["ɵqud"](402653184,2,{chartTooltip:0}),(t()(),s["ɵeld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),s["ɵdid"](4,999424,null,0,ya.a,[s.ElementRef,ya.c],{datasets:[0,"datasets"],options:[1,"options"],chartType:[2,"chartType"]},null),(t()(),s["ɵeld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"table",[],null,null,null,null,null))],(function(t,e){var n=e.component;t(e,4,0,n.chart.datasets,n.chart.options,n.chart.chartType)}),null)}class Zf{constructor(t,e,n){this.dimlessBinary=t,this.dimless=e,this.i18n=n,this.standbys=[],this.objectValues=Object.values}ngOnChanges(){this.setStandbys()}setStandbys(){this.standbys=[{key:this.i18n("Standby daemons"),value:this.data.standbys}]}ngOnInit(){this.columns={ranks:[{prop:"rank",name:this.i18n("Rank")},{prop:"state",name:this.i18n("State")},{prop:"mds",name:this.i18n("Daemon")},{prop:"activity",name:this.i18n("Activity"),cellTemplate:this.activityTmpl},{prop:"dns",name:this.i18n("Dentries"),pipe:this.dimless},{prop:"inos",name:this.i18n("Inodes"),pipe:this.dimless}],pools:[{prop:"pool",name:this.i18n("Pool")},{prop:"type",name:this.i18n("Type")},{prop:"size",name:this.i18n("Size"),pipe:this.dimlessBinary},{name:this.i18n("Usage"),cellTemplate:this.poolUsageTpl,comparator:(t,e,n,a)=>{const r=n.used/n.avail,i=a.used/a.avail;return r===i?0:r>i?1:-1}}]}}trackByFn(t,e){return e.name}}var Jf=s["ɵcrt"]({encapsulation:0,styles:[[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]],data:{}});function Qf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,2,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"cd-cephfs-chart",[],null,null,null,$f,Kf)),s["ɵdid"](3,638976,null,0,Wf,[],{mdsCounter:[0,"mdsCounter"]},null)],(function(t,e){t(e,3,0,e.context.$implicit)}),null)}function Xf(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,go.b,go.a)),s["ɵdid"](1,573440,null,0,po.a,[],{total:[0,"total"],used:[1,"used"]},null)],(function(t,e){t(e,1,0,e.context.row.size,e.context.row.used)}),null)}function th(t){return s["ɵvid"](0,[(t()(),s["ɵted"](0,null,[" ",": "," /s\n"])),s["ɵppd"](1,1)],null,(function(t,e){var n="standby-replay"===e.context.row.state?"Evts":"Reqs",a=s["ɵunv"](e,0,1,t(e,1,0,s["ɵnov"](e.parent,0),e.context.value));t(e,0,0,n,a)}))}function eh(t){return s["ɵvid"](0,[s["ɵpid"](0,Ta.a,[Ea.a]),s["ɵqud"](402653184,1,{poolUsageTpl:0}),s["ɵqud"](402653184,2,{activityTmpl:0}),(t()(),s["ɵeld"](3,0,null,null,14,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,8,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ranks"])),(t()(),s["ɵeld"](7,0,null,null,1,"cd-table",[],null,null,null,Gr.b,Gr.a)),s["ɵdid"](8,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](9,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Standbys"])),(t()(),s["ɵeld"](11,0,null,null,1,"cd-table-key-value",[],null,null,null,xi.b,xi.a)),s["ɵdid"](12,638976,null,0,_i.a,[Se.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](13,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pools"])),(t()(),s["ɵeld"](16,0,null,null,1,"cd-table",[],null,null,null,Gr.b,Gr.a)),s["ɵdid"](17,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["MDS performance counters"])),(t()(),s["ɵand"](16777216,null,null,1,null,Qf)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵand"](0,[[1,2],["poolUsageTpl",2]],null,0,null,Xf)),(t()(),s["ɵand"](0,[[2,2],["activityTmpl",2]],null,0,null,th))],(function(t,e){var n=e.component;t(e,8,0,n.data.ranks,n.columns.ranks,!1),t(e,12,0,n.standbys),t(e,17,0,n.data.pools,n.columns.pools,!1),t(e,21,0,n.objectValues(n.data.mdsCounters),n.trackByFn)}),null)}var nh=n("C6Ij"),ah=n("AWcq");class rh{constructor(t,e,n,a,r,i){this.cephfsService=t,this.modalService=e,this.notificationService=n,this.authStorageService=a,this.i18n=r,this.actionLabels=i,this.triggerApiUpdate=new s.EventEmitter,this.selection=new ti.a,this.permission=this.authStorageService.getPermissions().cephfs,this.tableActions=[{permission:"update",icon:ht.a.signOut,click:()=>this.evictClientModal(),name:this.actionLabels.EVICT}]}ngOnInit(){this.columns=[{prop:"id",name:this.i18n("id")},{prop:"type",name:this.i18n("type")},{prop:"state",name:this.i18n("state")},{prop:"version",name:this.i18n("version")},{prop:"hostname",name:this.i18n("Host")},{prop:"root",name:this.i18n("root")}]}updateSelection(t){this.selection=t}evictClient(t){this.cephfsService.evictClient(this.id,t).subscribe(()=>{this.triggerApiUpdate.emit(),this.modalRef.hide(),this.notificationService.show(ge.a.success,this.i18n('Evicted client "{{clientId}}"',{clientId:t}))},()=>{this.modalRef.content.stopLoadingSpinner()})}evictClientModal(){const t=this.selection.first().id;this.modalRef=this.modalService.show(cs.a,{initialState:{itemDescription:"client",itemNames:[t],actionDescription:"evict",submitAction:()=>this.evictClient(t)}})}}var ih=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function sh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,nh.b,nh.a)),s["ɵdid"](1,114688,null,0,ah.a,[],{status:[0,"status"]},null),(t()(),s["ɵeld"](2,0,null,null,3,"cd-table",[["selectionType","single"]],null,[[null,"updateSelection"]],(function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](3,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),s["ɵeld"](4,0,null,1,1,"cd-table-actions",[["class","table-actions"]],null,null,null,zr.b,zr.a)),s["ɵdid"](5,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.clients.status),t(e,3,0,n.clients.data,n.columns,"single"),t(e,5,0,n.permission,n.selection,n.tableActions)}),null)}var oh=n("yJti");class uh{constructor(t,e,n){this.ngZone=t,this.authStorageService=e,this.cephfsService=n,this.clients={data:[],status:oh.a.ValueNone},this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.directoriesSelected=!1,this.grafanaPermission=this.authStorageService.getPermissions().grafana}ngOnChanges(){this.selection?this.selection.id!==this.id&&this.setupSelected(this.selection.id,this.selection.mdsmap.info):this.unsubscribeInterval()}setupSelected(t,e){this.id=t;const n=J.first(Object.values(e));this.grafanaId=n&&n.name,this.details={standbys:"",pools:[],ranks:[],mdsCounters:{},name:""},this.clients={data:[],status:oh.a.ValueNone},this.updateInterval()}updateInterval(){this.unsubscribeInterval(),this.subscribeInterval()}unsubscribeInterval(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe()}subscribeInterval(){this.ngZone.runOutsideAngular(()=>this.reloadSubscriber=Object(sf.a)(0,5e3).subscribe(()=>this.ngZone.run(()=>this.refresh())))}refresh(){this.cephfsService.getTabs(this.id).subscribe(t=>{this.data=t,this.softRefresh()},()=>{this.clients.status=oh.a.ValueException})}softRefresh(){const t=J.cloneDeep(this.data);this.clients=t.clients,this.details={standbys:t.standbys,pools:t.pools,ranks:t.ranks,mdsCounters:t.mds_counters,name:t.name}}ngOnDestroy(){this.unsubscribeInterval()}}var lh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function dh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](2,0,null,null,1,"span",[["class","badge badge-pill badge-tab ml-1"]],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["",""]))],null,(function(t,e){t(e,3,0,e.component.clients.data.length)}))}function ch(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-directories",[],null,null,null,Uf,Gf)),s["ɵdid"](1,638976,null,0,Ff,[vt.a,Lt.b,jf,Se.a,me.a,At.b,gt.a,_a.a],{id:[0,"id"]},null)],(function(t,e){t(e,1,0,e.component.id)}),null)}function fh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](1,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","tbO9LAiZz"]],null,null,null,qr.b,qr.a)),s["ɵdid"](3,638976,null,0,jr.a,[Fr.b,re.a,me.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],(function(t,e){var n=e.component;t(e,1,0,"Performance Details"),t(e,3,0,"mds-performance?var-mds_servers=mds."+n.grafanaId,"one","tbO9LAiZz")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).id,s["ɵnov"](e,1).active,s["ɵnov"](e,1).addClass,s["ɵnov"](e,1).role,s["ɵnov"](e,1).ariaLabelledby)}))}function hh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵeld"](4,0,null,null,1,"cd-cephfs-detail",[],null,null,null,eh,Jf)),s["ɵdid"](5,638976,null,0,Zf,[_a.a,Ta.a,me.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,5,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=!1!==t.component.softRefresh()&&a),a}),null,null)),s["ɵdid"](7,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],null,{selectTab:"selectTab"}),(t()(),s["ɵand"](0,null,null,1,null,dh)),s["ɵdid"](9,16384,null,0,oa.c,[s.TemplateRef,oa.b],null,null),(t()(),s["ɵeld"](10,0,null,null,1,"cd-cephfs-clients",[],null,[[null,"triggerApiUpdate"]],(function(t,e,n){var a=!0;return"triggerApiUpdate"===e&&(a=!1!==t.component.refresh()&&a),a}),sh,ih)),s["ɵdid"](11,114688,null,0,rh,[jf,Lt.b,gt.a,vt.a,me.a,At.b],{id:[0,"id"],clients:[1,"clients"]},{triggerApiUpdate:"triggerApiUpdate"}),(t()(),s["ɵeld"](12,0,null,0,3,"tab",[["heading","Directories"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],[[null,"selectTab"]],(function(t,e,n){var a=!0;return"selectTab"===e&&(a=0!=(t.component.directoriesSelected=!0)&&a),a}),null,null)),s["ɵdid"](13,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},{selectTab:"selectTab"}),(t()(),s["ɵand"](16777216,null,null,1,null,ch)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,fh)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.details),t(e,7,0),t(e,11,0,n.id,n.clients),t(e,13,0,"Directories"),t(e,15,0,n.directoriesSelected),t(e,17,0,n.grafanaPermission.read&&n.grafanaId)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby),t(e,12,0,s["ɵnov"](e,13).id,s["ɵnov"](e,13).active,s["ɵnov"](e,13).addClass,s["ɵnov"](e,13).role,s["ɵnov"](e,13).ariaLabelledby)}))}function gh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,hh)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}class ph extends ds.a{constructor(t,e,n){super(),this.cephfsService=t,this.cdDatePipe=e,this.i18n=n,this.filesystems=[],this.selection=new ti.a}ngOnInit(){this.columns=[{name:this.i18n("Name"),prop:"mdsmap.fs_name",flexGrow:2},{name:this.i18n("Created"),prop:"mdsmap.created",flexGrow:2,pipe:this.cdDatePipe},{name:this.i18n("Enabled"),prop:"mdsmap.enabled",flexGrow:1,cellTransformation:Xr.a.checkIcon}]}loadFilesystems(t){this.cephfsService.list().subscribe(t=>{this.filesystems=t},()=>{t.error()})}updateSelection(t){this.selection=t}}var bh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function mh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.loadFilesystems(n)&&a),"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](1,2867200,null,0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](2,0,null,3,1,"cd-cephfs-tabs",[["cdTableDetail",""]],null,null,null,gh,lh)),s["ɵdid"](3,704512,null,0,uh,[s.NgZone,vt.a,jf],{selection:[0,"selection"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.filesystems,n.columns,"flex",!0,"id","true","single"),t(e,3,0,n.expandedRow)}),null)}function yh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-cephfs-list",[],null,null,null,mh,bh)),s["ɵdid"](1,114688,null,0,ph,[jf,Se.a,me.a],null,null)],(function(t,e){t(e,1,0)}),null)}var vh=s["ɵccf"]("cd-cephfs-list",ph,yh,{},{},[]),xh=n("D4zM"),_h=n("1nQr");class Th{constructor(t,e,n,a,r,i,s,o){this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=o,this.passwordPolicyHelpText="",this.icons=ht.a,this.action=this.actionLabels.CHANGE,this.resource=this.i18n("password"),this.createForm()}createForm(){this.passwordPolicyService.getHelpText().subscribe(t=>{this.passwordPolicyHelpText=t}),this.userForm=this.formBuilder.group({oldpassword:[null,[$.B.required,Fs.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("newpassword")===this.userForm.getValue("oldpassword"))]],newpassword:[null,[$.B.required,Fs.a.custom("notmatch",()=>this.userForm&&this.userForm.getValue("oldpassword")===this.userForm.getValue("newpassword"))],[Fs.a.passwordPolicy(this.userService,()=>this.authStorageService.getUsername(),(t,e,n)=>{this.passwordStrengthLevelClass=this.passwordPolicyService.mapCreditsToCssClass(e),this.passwordValuation=J.defaultTo(n,"")})]],confirmnewpassword:[null,[$.B.required]]},{validators:[Fs.a.match("newpassword","confirmnewpassword")]})}onSubmit(){if(this.userForm.pristine)return;const t=this.authStorageService.getUsername(),e=this.userForm.getValue("oldpassword"),n=this.userForm.getValue("newpassword");this.userService.changePassword(t,e,n).subscribe(()=>this.onPasswordChange(),()=>{this.userForm.setErrors({cdSubmitButton:!0})})}onPasswordChange(){this.notificationService.show(ge.a.success,this.i18n('Updated user password"')),this.router.navigate(["/login"])}}var Oh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function wh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Sh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function Ih(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-helper",[["class","text-pre"]],null,null,null,uu.b,uu.a)),s["ɵdid"](1,49152,null,0,lu.a,[],{class:[0,"class"],html:[1,"html"]},null)],(function(t,e){t(e,1,0,"text-pre",s["ɵinlineInterpolate"](1,"",e.component.passwordPolicyHelpText,""))}),null)}function Nh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ch(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function Rh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function Ah(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function kh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function Eh(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,qs.a,[]),(t()(),s["ɵeld"](2,0,null,null,93,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,92,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,5).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,5).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit()&&a),a}),null,null)),s["ɵdid"](4,16384,null,0,$.G,[],null,null),s["ɵdid"](5,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](7,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](8,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](9,0,null,null,86,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](11,null,[""," ",""])),s["ɵppd"](12,1),s["ɵppd"](13,1),(t()(),s["ɵeld"](14,0,null,null,74,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,22,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](16,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](19,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","oldpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Old password"])),(t()(),s["ɵeld"](21,0,null,0,16,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,7,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,24)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,24).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,24)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,24)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](24,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](26,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](28,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](29,4210688,null,0,Es.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](30,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](31,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](32,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,33).onClick()&&a),a}),null,null)),s["ɵdid"](33,81920,null,0,xh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wh)),s["ɵdid"](35,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sh)),s["ɵdid"](37,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](38,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](39,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](42,0,null,0,4,"label",[["class","cd-col-form-label"],["for","newpassword"]],null,null,null,null,null)),(t()(),s["ɵeld"](43,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New password"])),(t()(),s["ɵand"](16777216,null,null,1,null,Ih)),s["ɵdid"](46,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](47,0,null,0,19,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](48,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","Password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,50)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,50).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,50)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,50)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](50,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](52,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](54,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](55,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](56,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](57,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,58).onClick()&&a),a}),null,null)),s["ɵdid"](58,81920,null,0,xh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](59,0,null,null,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](60,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Nh)),s["ɵdid"](62,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ch)),s["ɵdid"](64,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rh)),s["ɵdid"](66,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](67,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](68,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](71,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","confirmnewpassword"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Confirm new password"])),(t()(),s["ɵeld"](73,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](74,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](75,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,76)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,76).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,76)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,76)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](76,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](78,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](80,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](81,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](82,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](83,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,84).onClick()&&a),a}),null,null)),s["ɵdid"](84,81920,null,0,xh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ah)),s["ɵdid"](86,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kh)),s["ɵdid"](88,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](89,0,null,null,6,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](90,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](91,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](92,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](93,0,[" "," "," "])),s["ɵppd"](94,1),s["ɵppd"](95,1)],(function(t,e){var n=e.component;t(e,5,0,n.userForm),t(e,8,0,n.userForm),t(e,16,0),t(e,26,0,"oldpassword"),t(e,29,0,""),t(e,30,0,"oldpassword"),t(e,33,0,"oldpassword"),t(e,35,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"required")),t(e,37,0,n.userForm.showError("oldpassword",s["ɵnov"](e,5),"notmatch")),t(e,39,0),t(e,46,0,n.passwordPolicyHelpText.length>0),t(e,52,0,"newpassword"),t(e,55,0,"newpassword"),t(e,58,0,"newpassword"),t(e,62,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"required")),t(e,64,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"notmatch")),t(e,66,0,n.userForm.showError("newpassword",s["ɵnov"](e,5),"passwordPolicy")),t(e,68,0),t(e,78,0,"confirmnewpassword"),t(e,81,0,"confirmnewpassword"),t(e,84,0,"confirmnewpassword"),t(e,86,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"required")),t(e,88,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,5),"match")),t(e,92,0,n.userForm)}),(function(t,e){var n=e.component;t(e,3,0,s["ɵnov"](e,7).ngClassUntouched,s["ɵnov"](e,7).ngClassTouched,s["ɵnov"](e,7).ngClassPristine,s["ɵnov"](e,7).ngClassDirty,s["ɵnov"](e,7).ngClassValid,s["ɵnov"](e,7).ngClassInvalid,s["ɵnov"](e,7).ngClassPending);var a=s["ɵunv"](e,11,0,t(e,12,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,11,1,t(e,13,0,s["ɵnov"](e,1),n.resource));t(e,11,0,a,r),t(e,15,0,s["ɵnov"](e,16).hasErrors,s["ɵnov"](e,16).hasSuccess),t(e,23,0,s["ɵnov"](e,28).ngClassUntouched,s["ɵnov"](e,28).ngClassTouched,s["ɵnov"](e,28).ngClassPristine,s["ɵnov"](e,28).ngClassDirty,s["ɵnov"](e,28).ngClassValid,s["ɵnov"](e,28).ngClassInvalid,s["ɵnov"](e,28).ngClassPending,s["ɵnov"](e,30).validClass,s["ɵnov"](e,30).invalidClass),t(e,38,0,s["ɵnov"](e,39).hasErrors,s["ɵnov"](e,39).hasSuccess),t(e,49,0,s["ɵnov"](e,54).ngClassUntouched,s["ɵnov"](e,54).ngClassTouched,s["ɵnov"](e,54).ngClassPristine,s["ɵnov"](e,54).ngClassDirty,s["ɵnov"](e,54).ngClassValid,s["ɵnov"](e,54).ngClassInvalid,s["ɵnov"](e,54).ngClassPending,s["ɵnov"](e,55).validClass,s["ɵnov"](e,55).invalidClass),t(e,60,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,67,0,s["ɵnov"](e,68).hasErrors,s["ɵnov"](e,68).hasSuccess),t(e,75,0,s["ɵnov"](e,80).ngClassUntouched,s["ɵnov"](e,80).ngClassTouched,s["ɵnov"](e,80).ngClassPristine,s["ɵnov"](e,80).ngClassDirty,s["ɵnov"](e,80).ngClassValid,s["ɵnov"](e,80).ngClassInvalid,s["ɵnov"](e,80).ngClassPending,s["ɵnov"](e,81).validClass,s["ɵnov"](e,81).invalidClass);var i=s["ɵunv"](e,93,0,t(e,94,0,s["ɵnov"](e,0),n.action)),o=s["ɵunv"](e,93,1,t(e,95,0,s["ɵnov"](e,1),n.resource));t(e,93,0,i,o)}))}function Lh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-user-password-form",[],null,null,null,Eh,Oh)),s["ɵdid"](1,49152,null,0,Th,[me.a,At.b,gt.a,Rt.a,vt.a,Ho.a,qt.m,_h.a],null,null)],null,null)}var Dh=s["ɵccf"]("cd-user-password-form",Th,Lh,{},{},[]);class Ph{constructor(t,e){this.route=t,this.i18n=e,this.message=this.i18n("The NFS Ganesha service is not configured.")}ngOnInit(){this.routeParamsSubscribe=this.route.params.subscribe(t=>{this.message=t.message})}ngOnDestroy(){this.routeParamsSubscribe.unsubscribe()}}var Mh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function qh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,"cd-alert-panel",[["type","info"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"]},null),(t()(),s["ɵted"](2,0,[" ",""])),(t()(),s["ɵeld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,0,4,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please consult the "])),(t()(),s["ɵeld"](6,0,null,null,1,"cd-doc",[["section","nfs-ganesha"]],null,null,null,Ur.b,Ur.a)),s["ɵdid"](7,114688,null,0,Wr.a,[xt.a,me.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,null,[" on how to configure and enable the NFS Ganesha management functionality."]))],(function(t,e){t(e,1,0,"info"),t(e,7,0,"nfs-ganesha")}),(function(t,e){t(e,2,0,e.component.message)}))}function jh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-501",[],null,null,null,qh,Mh)),s["ɵdid"](1,245760,null,0,Ph,[qt.a,me.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Fh=s["ɵccf"]("cd-nfs-501",Ph,jh,{},{},[]);class Gh{constructor(t){this.i18n=t,this.clients=[],this.clientsColumns=[{name:this.i18n("Addresses"),prop:"addresses",flexGrow:2},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:1},{name:this.i18n("Squash"),prop:"squash",flexGrow:1}]}ngOnChanges(){this.selection&&(this.selectedItem=this.selection,this.clients=this.selectedItem.clients,this.data={},this.data[this.i18n("Cluster")]=this.selectedItem.cluster_id,this.data[this.i18n("Daemons")]=this.selectedItem.daemons,this.data[this.i18n("NFS Protocol")]=this.selectedItem.protocols.map(t=>"NFSv"+t),this.data[this.i18n("Pseudo")]=this.selectedItem.pseudo,this.data[this.i18n("Access Type")]=this.selectedItem.access_type,this.data[this.i18n("Squash")]=this.selectedItem.squash,this.data[this.i18n("Transport")]=this.selectedItem.transports,this.data[this.i18n("Path")]=this.selectedItem.path,"CEPH"===this.selectedItem.fsal.name?(this.data[this.i18n("Storage Backend")]=this.i18n("CephFS"),this.data[this.i18n("CephFS User")]=this.selectedItem.fsal.user_id,this.data[this.i18n("CephFS Filesystem")]=this.selectedItem.fsal.fs_name,this.data[this.i18n("Security Label")]=this.selectedItem.fsal.sec_label_xattr):(this.data[this.i18n("Storage Backend")]=this.i18n("Object Gateway"),this.data[this.i18n("Object Gateway User")]=this.selectedItem.fsal.rgw_user_id))}}var Vh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function zh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,sa.b,sa.a)),s["ɵdid"](1,180224,null,0,oa.e,[oa.f,s.Renderer2,s.ElementRef],null,null),(t()(),s["ɵeld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](3,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,xi.b,xi.a)),s["ɵdid"](5,638976,null,0,_i.a,[Se.a],{data:[0,"data"]},null),(t()(),s["ɵeld"](6,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null],[1,"role",0],[1,"aria-labelledby",0]],null,null,null,null)),s["ɵdid"](7,212992,null,0,oa.b,[oa.e,s.ElementRef,s.Renderer2],{heading:[0,"heading"]},null),(t()(),s["ɵeld"](8,0,null,null,1,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","addresses"],["selectionType",""]],null,null,null,Gr.b,Gr.a)),s["ɵdid"](9,2867200,[["table",4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},null)],(function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,5,0,n.data),t(e,7,0,s["ɵinlineInterpolate"](1,"Clients (",n.clients.length,")")),t(e,9,0,n.clients,n.clientsColumns,"flex","addresses","true","")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).clazz),t(e,2,0,s["ɵnov"](e,3).id,s["ɵnov"](e,3).active,s["ɵnov"](e,3).addClass,s["ɵnov"](e,3).role,s["ɵnov"](e,3).ariaLabelledby),t(e,6,0,s["ɵnov"](e,7).id,s["ɵnov"](e,7).active,s["ɵnov"](e,7).addClass,s["ɵnov"](e,7).role,s["ɵnov"](e,7).ariaLabelledby)}))}function Bh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,zh)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.selection)}),null)}var Yh=n("VTlA");let Hh=(()=>{class t{constructor(t,e){this.http=t,this.i18n=e,this.apiPath="api/nfs-ganesha",this.uiApiPath="ui-api/nfs-ganesha",this.nfsAccessType=[{value:"RW",help:this.i18n("Allows all operations")},{value:"RO",help:this.i18n("Allows only operations that do not modify the server")},{value:"MDONLY",help:this.i18n("Does not allow read or write operations, but allows any other operation")},{value:"MDONLY_RO",help:this.i18n("Does not allow read, write, or any operation that modifies file        attributes or directory content")},{value:"NONE",help:this.i18n("Allows no access at all")}],this.nfsFsal=[{value:"CEPH",descr:this.i18n("CephFS")},{value:"RGW",descr:this.i18n("Object Gateway")}],this.nfsSquash=["no_root_squash","root_id_squash","root_squash","all_squash"]}list(){return this.http.get(`${this.apiPath}/export`)}get(t,e){return this.http.get(`${this.apiPath}/export/${t}/${e}`)}create(t){return this.http.post(`${this.apiPath}/export`,t,{observe:"response"})}update(t,e,n){return this.http.put(`${this.apiPath}/export/${t}/${e}`,n,{observe:"response"})}delete(t,e){return this.http.delete(`${this.apiPath}/export/${t}/${e}`,{observe:"response"})}lsDir(t){return this.http.get(`${this.uiApiPath}/lsdir?root_dir=${t}`)}buckets(t){return this.http.get(`${this.uiApiPath}/rgw/buckets?user_id=${t}`)}clients(){return this.http.get(`${this.uiApiPath}/cephx/clients`)}fsals(){return this.http.get(`${this.uiApiPath}/fsals`)}filesystems(){return this.http.get(`${this.uiApiPath}/cephfs/filesystems`)}daemon(){return this.http.get(`${this.apiPath}/daemon`)}start(t){return this.http.put(`${this.apiPath}/service/${t}/start`,null,{observe:"response"})}stop(t){return this.http.put(`${this.apiPath}/service/${t}/stop`,null,{observe:"response"})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](me.a))},token:t,providedIn:fe.a}),t})();class Uh extends ds.a{constructor(t,e,n,a,r,i,s){super(),this.authStorageService=t,this.i18n=e,this.modalService=n,this.nfsService=a,this.taskListService=r,this.taskWrapper=i,this.actionLabels=s,this.selection=new ti.a,this.isDefaultCluster=!1,this.builders={"nfs/create":t=>({path:t.path,cluster_id:t.cluster_id,fsal:t.fsal})},this.permission=this.authStorageService.getPermissions().nfs;const o=()=>this.selection.first()&&`${encodeURI(this.selection.first().cluster_id)}/${encodeURI(this.selection.first().export_id)}`;this.tableActions=[{permission:"create",icon:ht.a.add,routerLink:()=>"/nfs/create",canBePrimary:t=>!t.hasSingleSelection,name:this.actionLabels.CREATE},{permission:"update",icon:ht.a.edit,routerLink:()=>`/nfs/edit/${o()}`,name:this.actionLabels.EDIT},{permission:"delete",icon:ht.a.destroy,click:()=>this.deleteNfsModal(),name:this.actionLabels.DELETE}]}ngOnInit(){this.columns=[{name:this.i18n("Path"),prop:"path",flexGrow:2,cellTransformation:Xr.a.executing},{name:this.i18n("Pseudo"),prop:"pseudo",flexGrow:2},{name:this.i18n("Cluster"),prop:"cluster_id",flexGrow:2},{name:this.i18n("Daemons"),prop:"daemons",flexGrow:2},{name:this.i18n("Storage Backend"),prop:"fsal",flexGrow:2,cellTemplate:this.nfsFsal},{name:this.i18n("Access Type"),prop:"access_type",flexGrow:2}],this.nfsService.daemon().subscribe(t=>{const e=J(t).map(t=>t.cluster_id).uniq().value();this.isDefaultCluster=1===e.length&&"_default_"===e[0],this.columns[2].isHidden=this.isDefaultCluster,this.table&&this.table.updateColumns(),this.taskListService.init(()=>this.nfsService.list(),t=>this.prepareResponse(t),t=>this.exports=t,()=>this.onFetchError(),this.taskFilter,this.itemFilter,this.builders)},()=>{this.onFetchError()})}ngOnDestroy(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()}prepareResponse(t){let e=[];return t.forEach(t=>{t.id=`${t.cluster_id}:${t.export_id}`,t.state="LOADING",e=e.concat(t)}),e}onFetchError(){this.table.reset(),this.viewCacheStatus={status:oh.a.ValueException}}itemFilter(t,e){return t.cluster_id===e.metadata.cluster_id&&t.export_id===e.metadata.export_id}taskFilter(t){return["nfs/create","nfs/delete","nfs/edit"].includes(t.name)}updateSelection(t){this.selection=t}deleteNfsModal(){const t=this.selection.first().cluster_id,e=this.selection.first().export_id;this.modalRef=this.modalService.show(cs.a,{initialState:{itemDescription:this.i18n("NFS export"),itemNames:[`${t}:${e}`],submitActionObservable:()=>this.taskWrapper.wrapTaskAroundCall({task:new hs.a("nfs/delete",{cluster_id:t,export_id:e}),call:this.nfsService.delete(t,e)})}})}}var Wh=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Kh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS"]))],null,null)}function $h(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway"]))],null,null)}function Zh(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Kh)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$h)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,"CEPH"===e.context.value.name),t(e,3,0,"RGW"===e.context.value.name)}),null)}function Jh(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{nfsState:0}),s["ɵqud"](402653184,2,{nfsFsal:0}),s["ɵqud"](402653184,3,{table:0}),(t()(),s["ɵeld"](3,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"setExpandedRow"],[null,"updateSelection"]],(function(t,e,n){var a=!0,r=t.component;return"setExpandedRow"===e&&(a=!1!==r.setExpandedRow(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a}),Gr.b,Gr.a)),s["ɵdid"](4,2867200,[[3,4],["table",4]],0,Vr.a,[s.NgZone,s.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],hasDetails:[3,"hasDetails"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{updateSelection:"updateSelection",setExpandedRow:"setExpandedRow"}),(t()(),s["ɵeld"](5,0,null,1,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,zr.b,zr.a)),s["ɵdid"](7,114688,null,0,Br.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),s["ɵeld"](8,0,null,3,1,"cd-nfs-details",[["cdTableDetail",""]],null,null,null,Bh,Vh)),s["ɵdid"](9,573440,null,0,Gh,[me.a],{selection:[0,"selection"]},null),(t()(),s["ɵand"](0,[[2,2],["nfsFsal",2]],null,0,null,Zh))],(function(t,e){var n=e.component;t(e,4,0,n.exports,n.columns,"flex",!0,"id","true","single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,9,0,n.expandedRow)}),null)}function Qh(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-nfs-list",[],null,null,null,Jh,Wh)),s["ɵprd"](131584,null,Yh.a,Yh.a,[qe.a,pt.a]),s["ɵdid"](2,245760,null,0,Uh,[vt.a,me.a,Lt.b,Hh,Yh.a,ys.a,At.b],null,null)],(function(t,e){t(e,2,0)}),null)}var Xh=s["ɵccf"]("cd-nfs-list",Uh,Qh,{},{},[]),tg=n("hpHm");function eg(t){return!!t&&(t instanceof kn.a||"function"==typeof t.lift&&"function"==typeof t.subscribe)}var ng=n("7o/Q");function ag(t,e=Pa.a){return n=>n.lift(new rg(t,e))}class rg{constructor(t,e){this.dueTime=t,this.scheduler=e}call(t,e){return e.subscribe(new ig(t,this.dueTime,this.scheduler))}}class ig extends ng.a{constructor(t,e,n){super(t),this.dueTime=e,this.scheduler=n,this.debouncedSubscription=null,this.lastValue=null,this.hasValue=!1}_next(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(sg,this.dueTime,this))}_complete(){this.debouncedNext(),this.destination.complete()}debouncedNext(){if(this.clearDebounce(),this.hasValue){const{lastValue:t}=this;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}}clearDebounce(){const t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)}}function sg(t){t.debouncedNext()}var og=n("eIep");const ug={"Á":"A","Ă":"A","Ắ":"A","Ặ":"A","Ằ":"A","Ẳ":"A","Ẵ":"A","Ǎ":"A","Â":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ä":"A","Ǟ":"A","Ȧ":"A","Ǡ":"A","Ạ":"A","Ȁ":"A","À":"A","Ả":"A","Ȃ":"A","Ā":"A","Ą":"A","Å":"A","Ǻ":"A","Ḁ":"A","Ⱥ":"A","Ã":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ɓ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ć":"C","Č":"C","Ç":"C","Ḉ":"C","Ĉ":"C","Ċ":"C","Ƈ":"C","Ȼ":"C","Ď":"D","Ḑ":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","Ɗ":"D","Ḏ":"D","Dz":"D","Dž":"D","Đ":"D","Ƌ":"D","DZ":"DZ","DŽ":"DZ","É":"E","Ĕ":"E","Ě":"E","Ȩ":"E","Ḝ":"E","Ê":"E","Ế":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","Ḙ":"E","Ë":"E","Ė":"E","Ẹ":"E","Ȅ":"E","È":"E","Ẻ":"E","Ȇ":"E","Ē":"E","Ḗ":"E","Ḕ":"E","Ę":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ƒ":"F","Ǵ":"G","Ğ":"G","Ǧ":"G","Ģ":"G","Ĝ":"G","Ġ":"G","Ɠ":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Ȟ":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","Í":"I","Ĭ":"I","Ǐ":"I","Î":"I","Ï":"I","Ḯ":"I","İ":"I","Ị":"I","Ȉ":"I","Ì":"I","Ỉ":"I","Ȋ":"I","Ī":"I","Į":"I","Ɨ":"I","Ĩ":"I","Ḭ":"I","Ꝺ":"D","Ꝼ":"F","Ᵹ":"G","Ꞃ":"R","Ꞅ":"S","Ꞇ":"T","Ꝭ":"IS","Ĵ":"J","Ɉ":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","Ꝃ":"K","Ḳ":"K","Ƙ":"K","Ḵ":"K","Ꝁ":"K","Ꝅ":"K","Ĺ":"L","Ƚ":"L","Ľ":"L","Ļ":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","Ⱡ":"L","Ꝉ":"L","Ḻ":"L","Ŀ":"L","Ɫ":"L","Lj":"L","Ł":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ń":"N","Ň":"N","Ņ":"N","Ṋ":"N","Ṅ":"N","Ṇ":"N","Ǹ":"N","Ɲ":"N","Ṉ":"N","Ƞ":"N","Nj":"N","Ñ":"N","NJ":"NJ","Ó":"O","Ŏ":"O","Ǒ":"O","Ô":"O","Ố":"O","Ộ":"O","Ồ":"O","Ổ":"O","Ỗ":"O","Ö":"O","Ȫ":"O","Ȯ":"O","Ȱ":"O","Ọ":"O","Ő":"O","Ȍ":"O","Ò":"O","Ỏ":"O","Ơ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ȏ":"O","Ꝋ":"O","Ꝍ":"O","Ō":"O","Ṓ":"O","Ṑ":"O","Ɵ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Õ":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ɛ":"E","Ɔ":"O","Ȣ":"OU","Ṕ":"P","Ṗ":"P","Ꝓ":"P","Ƥ":"P","Ꝕ":"P","Ᵽ":"P","Ꝑ":"P","Ꝙ":"Q","Ꝗ":"Q","Ŕ":"R","Ř":"R","Ŗ":"R","Ṙ":"R","Ṛ":"R","Ṝ":"R","Ȑ":"R","Ȓ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꜿ":"C","Ǝ":"E","Ś":"S","Ṥ":"S","Š":"S","Ṧ":"S","Ş":"S","Ŝ":"S","Ș":"S","Ṡ":"S","Ṣ":"S","Ṩ":"S","Ť":"T","Ţ":"T","Ṱ":"T","Ț":"T","Ⱦ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","Ṯ":"T","Ʈ":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ɯ":"M","Ʌ":"V","Ꜩ":"TZ","Ú":"U","Ŭ":"U","Ǔ":"U","Û":"U","Ṷ":"U","Ü":"U","Ǘ":"U","Ǚ":"U","Ǜ":"U","Ǖ":"U","Ṳ":"U","Ụ":"U","Ű":"U","Ȕ":"U","Ù":"U","Ủ":"U","Ư":"U","Ứ":"U","Ự":"U","Ừ":"U","Ử":"U","Ữ":"U","Ȗ":"U","Ū":"U","Ṻ":"U","Ų":"U","Ů":"U","Ũ":"U","Ṹ":"U","Ṵ":"U","Ꝟ":"V","Ṿ":"V","Ʋ":"V","Ṽ":"V","Ꝡ":"VY","Ẃ":"W","Ŵ":"W","Ẅ":"W","Ẇ":"W","Ẉ":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ý":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","Ỵ":"Y","Ỳ":"Y","Ƴ":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","Ɏ":"Y","Ỹ":"Y","Ź":"Z","Ž":"Z","Ẑ":"Z","Ⱬ":"Z","Ż":"Z","Ẓ":"Z","Ȥ":"Z","Ẕ":"Z","Ƶ":"Z","IJ":"IJ","Œ":"OE","ᴀ":"A","ᴁ":"AE","ʙ":"B","ᴃ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʛ":"G","ʜ":"H","ɪ":"I","ʁ":"R","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴌ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ɶ":"OE","ᴐ":"O","ᴕ":"OU","ᴘ":"P","ʀ":"R","ᴎ":"N","ᴙ":"R","ꜱ":"S","ᴛ":"T","ⱻ":"E","ᴚ":"R","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z","á":"a","ă":"a","ắ":"a","ặ":"a","ằ":"a","ẳ":"a","ẵ":"a","ǎ":"a","â":"a","ấ":"a","ậ":"a","ầ":"a","ẩ":"a","ẫ":"a","ä":"a","ǟ":"a","ȧ":"a","ǡ":"a","ạ":"a","ȁ":"a","à":"a","ả":"a","ȃ":"a","ā":"a","ą":"a","ᶏ":"a","ẚ":"a","å":"a","ǻ":"a","ḁ":"a","ⱥ":"a","ã":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ḃ":"b","ḅ":"b","ɓ":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","ƀ":"b","ƃ":"b","ɵ":"o","ć":"c","č":"c","ç":"c","ḉ":"c","ĉ":"c","ɕ":"c","ċ":"c","ƈ":"c","ȼ":"c","ď":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","ɗ":"d","ᶑ":"d","ḏ":"d","ᵭ":"d","ᶁ":"d","đ":"d","ɖ":"d","ƌ":"d","ı":"i","ȷ":"j","ɟ":"j","ʄ":"j","dz":"dz","dž":"dz","é":"e","ĕ":"e","ě":"e","ȩ":"e","ḝ":"e","ê":"e","ế":"e","ệ":"e","ề":"e","ể":"e","ễ":"e","ḙ":"e","ë":"e","ė":"e","ẹ":"e","ȅ":"e","è":"e","ẻ":"e","ȇ":"e","ē":"e","ḗ":"e","ḕ":"e","ⱸ":"e","ę":"e","ᶒ":"e","ɇ":"e","ẽ":"e","ḛ":"e","ꝫ":"et","ḟ":"f","ƒ":"f","ᵮ":"f","ᶂ":"f","ǵ":"g","ğ":"g","ǧ":"g","ģ":"g","ĝ":"g","ġ":"g","ɠ":"g","ḡ":"g","ᶃ":"g","ǥ":"g","ḫ":"h","ȟ":"h","ḩ":"h","ĥ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","ẖ":"h","ħ":"h","ƕ":"hv","í":"i","ĭ":"i","ǐ":"i","î":"i","ï":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","ȋ":"i","ī":"i","į":"i","ᶖ":"i","ɨ":"i","ĩ":"i","ḭ":"i","ꝺ":"d","ꝼ":"f","ᵹ":"g","ꞃ":"r","ꞅ":"s","ꞇ":"t","ꝭ":"is","ǰ":"j","ĵ":"j","ʝ":"j","ɉ":"j","ḱ":"k","ǩ":"k","ķ":"k","ⱪ":"k","ꝃ":"k","ḳ":"k","ƙ":"k","ḵ":"k","ᶄ":"k","ꝁ":"k","ꝅ":"k","ĺ":"l","ƚ":"l","ɬ":"l","ľ":"l","ļ":"l","ḽ":"l","ȴ":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","ŀ":"l","ɫ":"l","ᶅ":"l","ɭ":"l","ł":"l","lj":"lj","ſ":"s","ẜ":"s","ẛ":"s","ẝ":"s","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","ń":"n","ň":"n","ņ":"n","ṋ":"n","ȵ":"n","ṅ":"n","ṇ":"n","ǹ":"n","ɲ":"n","ṉ":"n","ƞ":"n","ᵰ":"n","ᶇ":"n","ɳ":"n","ñ":"n","nj":"nj","ó":"o","ŏ":"o","ǒ":"o","ô":"o","ố":"o","ộ":"o","ồ":"o","ổ":"o","ỗ":"o","ö":"o","ȫ":"o","ȯ":"o","ȱ":"o","ọ":"o","ő":"o","ȍ":"o","ò":"o","ỏ":"o","ơ":"o","ớ":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ȏ":"o","ꝋ":"o","ꝍ":"o","ⱺ":"o","ō":"o","ṓ":"o","ṑ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","õ":"o","ṍ":"o","ṏ":"o","ȭ":"o","ƣ":"oi","ꝏ":"oo","ɛ":"e","ᶓ":"e","ɔ":"o","ᶗ":"o","ȣ":"ou","ṕ":"p","ṗ":"p","ꝓ":"p","ƥ":"p","ᵱ":"p","ᶈ":"p","ꝕ":"p","ᵽ":"p","ꝑ":"p","ꝙ":"q","ʠ":"q","ɋ":"q","ꝗ":"q","ŕ":"r","ř":"r","ŗ":"r","ṙ":"r","ṛ":"r","ṝ":"r","ȑ":"r","ɾ":"r","ᵳ":"r","ȓ":"r","ṟ":"r","ɼ":"r","ᵲ":"r","ᶉ":"r","ɍ":"r","ɽ":"r","ↄ":"c","ꜿ":"c","ɘ":"e","ɿ":"r","ś":"s","ṥ":"s","š":"s","ṧ":"s","ş":"s","ŝ":"s","ș":"s","ṡ":"s","ṣ":"s","ṩ":"s","ʂ":"s","ᵴ":"s","ᶊ":"s","ȿ":"s","ɡ":"g","ᴑ":"o","ᴓ":"o","ᴝ":"u","ť":"t","ţ":"t","ṱ":"t","ț":"t","ȶ":"t","ẗ":"t","ⱦ":"t","ṫ":"t","ṭ":"t","ƭ":"t","ṯ":"t","ᵵ":"t","ƫ":"t","ʈ":"t","ŧ":"t","ᵺ":"th","ɐ":"a","ᴂ":"ae","ǝ":"e","ᵷ":"g","ɥ":"h","ʮ":"h","ʯ":"h","ᴉ":"i","ʞ":"k","ꞁ":"l","ɯ":"m","ɰ":"m","ᴔ":"oe","ɹ":"r","ɻ":"r","ɺ":"r","ⱹ":"r","ʇ":"t","ʌ":"v","ʍ":"w","ʎ":"y","ꜩ":"tz","ú":"u","ŭ":"u","ǔ":"u","û":"u","ṷ":"u","ü":"u","ǘ":"u","ǚ":"u","ǜ":"u","ǖ":"u","ṳ":"u","ụ":"u","ű":"u","ȕ":"u","ù":"u","ủ":"u","ư":"u","ứ":"u","ự":"u","ừ":"u","ử":"u","ữ":"u","ȗ":"u","ū":"u","ṻ":"u","ų":"u","ᶙ":"u","ů":"u","ũ":"u","ṹ":"u","ṵ":"u","ᵫ":"ue","ꝸ":"um","ⱴ":"v","ꝟ":"v","ṿ":"v","ʋ":"v","ᶌ":"v","ⱱ":"v","ṽ":"v","ꝡ":"vy","ẃ":"w","ŵ":"w","ẅ":"w","ẇ":"w","ẉ":"w","ẁ":"w","ⱳ":"w","ẘ":"w","ẍ":"x","ẋ":"x","ᶍ":"x","ý":"y","ŷ":"y","ÿ":"y","ẏ":"y","ỵ":"y","ỳ":"y","ƴ":"y","ỷ":"y","ỿ":"y","ȳ":"y","ẙ":"y","ɏ":"y","ỹ":"y","ź":"z","ž":"z","ẑ":"z","ʑ":"z","ⱬ":"z","ż":"z","ẓ":"z","ȥ":"z","ẕ":"z","ᵶ":"z","ᶎ":"z","ʐ":"z","ƶ":"z","ɀ":"z","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ij":"ij","œ":"oe","st":"st","ₐ":"a","ₑ":"e","ᵢ":"i","ⱼ":"j","ₒ":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","ₓ":"x"};class lg{constructor(t,e=t,n=!1){this.item=t,this.value=e,this.header=n}isHeader(){return this.header}toString(){return this.value}}function dg(t){return t?t.replace(/[^A-Za-z0-9\[\] ]/g,(function(t){return ug[t]||t})):""}function cg(t,e=" ",n=""){const a=t.split(new RegExp(`(?:[${n}])([^${n}]+)`+`(?:[${n}])|([^${e}]+)`,"g")),r=[],i=a.length;let s;const o=new RegExp(`[${n}]+`,"g");for(let u=0;u<i;u+=1)s=a[u],s&&s.length&&s!==e&&r.push(s.replace(o,""));return r}function fg(t,e){if(!e||"object"!=typeof t)return t.toString();if(e.endsWith("()"))return t[e.slice(0,e.length-2)]().toString();const n=e.replace(/\[(\w+)\]/g,".$1").replace(/^\./,"").split(".");for(const a of n)a in t&&(t=t[a]);return t?t.toString():""}class hg{constructor(t,e,n,a){this.positionService=t,this.renderer=e,this.element=n,this.changeDetectorRef=a,this.isFocused=!1,this.height=0,this._matches=[],this.isScrolledIntoView=function(t){const e=this.ulElement.nativeElement.scrollTop,n=e+Number(this.ulElement.nativeElement.offsetHeight),a=t.offsetTop;return a+t.offsetHeight<=n&&a>=e},this.positionServiceSubscription=this.positionService.event$.subscribe(()=>{if(this.isAnimated)return this.animationState=this.isTopPosition?"animated-up":"animated-down",void this.changeDetectorRef.detectChanges();this.animationState="unanimated",this.changeDetectorRef.detectChanges()})}get isBs4(){return!Object(tg.d)()}get active(){return this._active}get matches(){return this._matches}set matches(t){if(this.positionService.setOptions({modifiers:{flip:{enabled:this.adaptivePosition}},allowedPositions:["top","bottom"]}),this._matches=t,this.needScrollbar=this.typeaheadScrollable&&this.typeaheadOptionsInScrollableView<this.matches.length,this.typeaheadScrollable&&setTimeout(()=>{this.setScrollableMode()}),this.typeaheadIsFirstItemActive&&this._matches.length>0&&(this._active=this._matches[0],this._active.isHeader()&&this.nextActiveMatch()),this._active&&!this.typeaheadIsFirstItemActive){const t=this._matches.find(t=>t.value===this._active.value);if(t)return void this.selectActive(t);this._active=null}}get isTopPosition(){return this.element.nativeElement.classList.contains("top")}get optionsListTemplate(){return this.parent?this.parent.optionsListTemplate:void 0}get isAnimated(){return!!this.parent&&this.parent.isAnimated}get adaptivePosition(){return!!this.parent&&this.parent.adaptivePosition}get typeaheadScrollable(){return!!this.parent&&this.parent.typeaheadScrollable}get typeaheadOptionsInScrollableView(){return this.parent?this.parent.typeaheadOptionsInScrollableView:5}get typeaheadIsFirstItemActive(){return!this.parent||this.parent.typeaheadIsFirstItemActive}get itemTemplate(){return this.parent?this.parent.typeaheadItemTemplate:void 0}selectActiveMatch(t){this._active&&this.parent.typeaheadSelectFirstItem&&this.selectMatch(this._active),!this.parent.typeaheadSelectFirstItem&&t&&this.selectMatch(this._active)}prevActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t-1<0?this.matches.length-1:t-1],this._active.isHeader()&&this.prevActiveMatch(),this.typeaheadScrollable&&this.scrollPrevious(t)}nextActiveMatch(){const t=this.matches.indexOf(this._active);this._active=this.matches[t+1>this.matches.length-1?0:t+1],this._active.isHeader()&&this.nextActiveMatch(),this.typeaheadScrollable&&this.scrollNext(t)}selectActive(t){this.isFocused=!0,this._active=t}highlight(t,e){let n,a,r=t.value,i=(this.parent&&this.parent.typeaheadLatinize?dg(r):r).toLowerCase();if("object"==typeof e){const t=e.length;for(let s=0;s<t;s+=1)n=i.indexOf(e[s]),a=e[s].length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+`${r.substring(n+a)}`,i=`${i.substring(0,n)}        ${" ".repeat(a)}         `+`${i.substring(n+a)}`)}else e&&(n=i.indexOf(e),a=e.length,n>=0&&a>0&&(r=`${r.substring(0,n)}<strong>${r.substring(n,n+a)}</strong>`+`${r.substring(n+a)}`));return r}focusLost(){this.isFocused=!1}isActive(t){return this._active===t}selectMatch(t,e){return e&&(e.stopPropagation(),e.preventDefault()),this.parent.changeModel(t),setTimeout(()=>this.parent.typeaheadOnSelect.emit(t),0),!1}setScrollableMode(){if(this.ulElement||(this.ulElement=this.element),this.liElements.first){const t=tg.b.getStyles(this.ulElement.nativeElement),e=tg.b.getStyles(this.liElements.first.nativeElement),n=parseFloat((t["padding-bottom"]?t["padding-bottom"]:"").replace("px","")),a=parseFloat((t["padding-top"]?t["padding-top"]:"0").replace("px","")),r=parseFloat((e.height?e.height:"0").replace("px",""));this.guiHeight=`${this.typeaheadOptionsInScrollableView*r+a+n}px`}this.renderer.setStyle(this.element.nativeElement,"visibility","visible")}scrollPrevious(t){if(0!==t){if(this.liElements){const e=this.liElements.toArray()[t-1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop)}}else this.scrollToBottom()}scrollNext(t){if(t+1>this.matches.length-1)this.scrollToTop();else if(this.liElements){const e=this.liElements.toArray()[t+1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop-Number(this.ulElement.nativeElement.offsetHeight)+Number(e.nativeElement.offsetHeight))}}ngOnDestroy(){this.positionServiceSubscription.unsubscribe()}scrollToBottom(){this.ulElement.nativeElement.scrollTop=this.ulElement.nativeElement.scrollHeight}scrollToTop(){this.ulElement.nativeElement.scrollTop=0}}class gg{constructor(){this.adaptivePosition=!1,this.isAnimated=!1,this.hideResultsOnBlur=!0,this.selectFirstItem=!0,this.isFirstItemActive=!0,this.minLength=1}}class pg{constructor(t,e,n,a,r,i,o){this.changeDetection=n,this.element=a,this.ngControl=r,this.renderer=i,this.typeaheadMinLength=void 0,this.isAnimated=!1,this.typeaheadAsync=void 0,this.typeaheadLatinize=!0,this.typeaheadSingleWords=!0,this.typeaheadWordDelimiters=" ",this.typeaheadPhraseDelimiters="'\"",this.typeaheadScrollable=!1,this.typeaheadOptionsInScrollableView=5,this.typeaheadSelectFirstItem=!0,this.typeaheadIsFirstItemActive=!0,this.typeaheadLoading=new s.EventEmitter,this.typeaheadNoResults=new s.EventEmitter,this.typeaheadOnSelect=new s.EventEmitter,this.typeaheadOnBlur=new s.EventEmitter,this.dropup=!1,this.isActiveItemChanged=!1,this.isTypeaheadOptionsListActive=!1,this.keyUpEventEmitter=new s.EventEmitter,this.placement="bottom-left",this._subscriptions=[],this._typeahead=t.createLoader(a,o,i).provide({provide:gg,useValue:e}),Object.assign(this,{typeaheadHideResultsOnBlur:e.hideResultsOnBlur,typeaheadSelectFirstItem:e.selectFirstItem,typeaheadIsFirstItemActive:e.isFirstItemActive,typeaheadMinLength:e.minLength,adaptivePosition:e.adaptivePosition,isAnimated:e.isAnimated})}ngOnInit(){this.typeaheadOptionsLimit=this.typeaheadOptionsLimit||20,this.typeaheadMinLength=void 0===this.typeaheadMinLength?1:this.typeaheadMinLength,this.typeaheadWaitMs=this.typeaheadWaitMs||0,void 0!==this.typeaheadAsync||eg(this.typeahead)||(this.typeaheadAsync=!1),eg(this.typeahead)&&(this.typeaheadAsync=!0),this.typeaheadAsync?this.asyncActions():this.syncActions()}onInput(t){const e=void 0!==t.target.value?t.target.value:void 0!==t.target.textContent?t.target.textContent:t.target.innerText;null!=e&&e.trim().length>=this.typeaheadMinLength?(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(t.target.value)):(this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!1),this.hide())}onChange(t){if(this._container){if(27===t.keyCode||"Escape"===t.key)return void this.hide();if(38===t.keyCode||"ArrowUp"===t.key)return this.isActiveItemChanged=!0,void this._container.prevActiveMatch();if(40===t.keyCode||"ArrowDown"===t.key)return this.isActiveItemChanged=!0,void this._container.nextActiveMatch();if(13===t.keyCode||"Enter"===t.key)return void this._container.selectActiveMatch()}}onFocus(){0===this.typeaheadMinLength&&(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(this.element.nativeElement.value||""))}onBlur(){this._container&&!this._container.isFocused&&this.typeaheadOnBlur.emit(this._container.active)}onKeydown(t){if(this._container&&(9===t.keyCode||"Tab"===t.key||13===t.keyCode||"Enter"===t.key)){if(t.preventDefault(),this.typeaheadSelectFirstItem)return void this._container.selectActiveMatch();this.typeaheadSelectFirstItem||(this._container.selectActiveMatch(this.isActiveItemChanged),this.isActiveItemChanged=!1,this.hide())}}changeModel(t){const e=t.value;this.ngControl.viewToModelUpdate(e),this.ngControl.control.setValue(e),this.changeDetection.markForCheck(),this.hide()}get matches(){return this._matches}show(){this._typeahead.attach(hg).to(this.container).position({attachment:`${this.dropup?"top":"bottom"} start`}).show({typeaheadRef:this,placement:this.placement,animation:!1,dropup:this.dropup}),this._outsideClickListener=this.renderer.listen("document","click",t=>{0===this.typeaheadMinLength&&this.element.nativeElement.contains(t.target)||this.typeaheadHideResultsOnBlur&&!this.element.nativeElement.contains(t.target)&&this.onOutsideClick()}),this._container=this._typeahead.instance,this._container.parent=this;const t=(this.typeaheadLatinize?dg(this.ngControl.control.value):this.ngControl.control.value).toString().toLowerCase();this._container.query=this.typeaheadSingleWords?cg(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches,this.element.nativeElement.focus()}hide(){this._typeahead.isShown&&(this._typeahead.hide(),this._outsideClickListener(),this._container=null)}onOutsideClick(){this._container&&!this._container.isFocused&&this.hide()}ngOnDestroy(){for(const t of this._subscriptions)t.unsubscribe();this._typeahead.dispose()}asyncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(ag(this.typeaheadWaitMs),Object(og.a)(t=>this.typeahead.pipe(Object(Ee.a)(e=>{const n=this.normalizeQuery(t);return e.filter(t=>t&&this.testMatch(this.normalizeOption(t),n))})))).subscribe(t=>{this.finalizeAsyncCall(t)}))}syncActions(){this._subscriptions.push(this.keyUpEventEmitter.pipe(ag(this.typeaheadWaitMs),Object(Dn.a)(t=>{const e=this.normalizeQuery(t);return Object(En.a)(this.typeahead).pipe(Object(Ln.a)(t=>t&&this.testMatch(this.normalizeOption(t),e)),Vn())})).subscribe(t=>{this.finalizeAsyncCall(t)}))}normalizeOption(t){const e=fg(t,this.typeaheadOptionField);return(this.typeaheadLatinize?dg(e):e).toLowerCase()}normalizeQuery(t){let e=(this.typeaheadLatinize?dg(t):t).toString().toLowerCase();return e=this.typeaheadSingleWords?cg(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,e}testMatch(t,e){let n;if("object"==typeof e){n=e.length;for(let a=0;a<n;a+=1)if(e[a].length>0&&t.indexOf(e[a])<0)return!1;return!0}return t.indexOf(e)>=0}finalizeAsyncCall(t){if(this.prepareMatches(t||[]),this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!this.hasMatches()),this.hasMatches())if(this._container){const t=((this.typeaheadLatinize?dg(this.ngControl.control.value):this.ngControl.control.value)||"").toString().toLowerCase();this._container.query=this.typeaheadSingleWords?cg(t,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):t,this._container.matches=this._matches}else this.show();else this.hide()}prepareMatches(t){const e=t.slice(0,this.typeaheadOptionsLimit);if(this.typeaheadGroupField){let t=[];e.map(t=>fg(t,this.typeaheadGroupField)).filter((t,e,n)=>n.indexOf(t)===e).forEach(n=>{t.push(new lg(n,n,!0)),t=t.concat(e.filter(t=>fg(t,this.typeaheadGroupField)===n).map(t=>new lg(t,fg(t,this.typeaheadOptionField))))}),this._matches=t}else this._matches=e.map(t=>new lg(t,fg(t,this.typeaheadOptionField)))}hasMatches(){return this._matches.length>0}}class bg{static forRoot(){return{ngModule:bg,providers:[W.a,la.a,gg]}}}var mg=n("WiuZ"),yg=n("wnGv"),vg=n("TYzs");class xg{constructor(t,e){this.nfsService=t,this.i18n=e,this.nfsSquash=this.nfsService.nfsSquash,this.nfsAccessType=this.nfsService.nfsAccessType,this.icons=ht.a}getNoAccessTypeDescr(){return this.form.getValue("access_type")?`${this.form.getValue("access_type")} ${this.i18n("(inherited from global config)")}`:this.i18n("-- Select the access type --")}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>this.getValue(t,"access_type")===e.value);return J.isObjectLike(e)?e.help:""}getNoSquashDescr(){return this.form.getValue("squash")?`${this.form.getValue("squash")} (${this.i18n("inherited from global config")})`:this.i18n("-- Select what kind of user id squashing is performed --")}addClient(){const t=this.form.get("clients"),e="(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)",n=new js.a({addresses:new $.i("",{validators:[$.B.required,$.B.pattern(`${e}([ ,]{1,2}${e})*`)]}),access_type:new $.i(""),squash:new $.i("")});return t.push(n),n}removeClient(t){this.form.get("clients").removeAt(t)}showError(t,e,n,a){return this.form.controls.clients.controls[t].showError(e,n,a)}getValue(t,e){return this.form.get("clients").at(t).getValue(e)}resolveModel(t){J.forEach(t,t=>{this.addClient().patchValue(t)})}trackByFn(t){return t}}var _g=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Tg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"span",[["class","no-border text-muted"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Any client can access"]))],null,null)}function Og(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function wg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Must contain one or more comma-separated values"])),(t()(),s["ɵeld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["For example:"])),(t()(),s["ɵted"](-1,null,[" 192.168.0.10, 192.168.1.0/8 "]))],null,null)}function Sg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function Ig(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.getAccessTypeHelp(e.parent.context.index))}))}function Ng(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Cg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,71,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,70,"div",[["class","card"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](2,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](4,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](5,0,null,null,4,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](6,null,[" "," "])),s["ɵppd"](7,1),(t()(),s["ɵeld"](8,0,null,null,1,"span",[["class","float-right clickable"],["tooltip","Remove"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeClient(t.context.index)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](10,0,null,null,61,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](12,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](15,0,null,0,1,"label",[["class","cd-col-form-label"],["for","addresses"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Addresses"])),(t()(),s["ɵeld"](17,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,6,"input",[["class","form-control"],["formControlName","addresses"],["id","addresses"],["name","addresses"],["placeholder","192.168.0.10, 192.168.1.0/8"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](21,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](23,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](24,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](25,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Og)),s["ɵdid"](27,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wg)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](30,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](31,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,1,"label",[["class","cd-col-form-label"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](36,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](37,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,38).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,38).onTouched()&&a),a}),null,null)),s["ɵdid"](38,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](40,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](42,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](43,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](44,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](45,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](46,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](47,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Sg)),s["ɵdid"](49,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ig)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](52,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](53,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,7,{FormControlNames:1}),s["ɵqud"](603979776,8,{messagesBlock:0}),(t()(),s["ɵeld"](56,0,null,0,1,"label",[["class","cd-col-form-label"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](58,0,null,0,13,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,12,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,60).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,60).onTouched()&&a),a}),null,null)),s["ɵdid"](60,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](62,671744,[[7,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](64,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](65,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](66,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](67,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](68,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](69,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,Ng)),s["ɵdid"](71,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,2,0,e.context.index),t(e,12,0),t(e,21,0,"addresses"),t(e,24,0,"addresses"),t(e,27,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"required")),t(e,29,0,n.showError(e.context.index,"addresses",s["ɵnov"](e.parent,8),"pattern")),t(e,31,0),t(e,40,0,"access_type"),t(e,43,0,"access_type"),t(e,45,0,""),t(e,46,0,""),t(e,49,0,n.nfsAccessType),t(e,51,0,n.getValue(e.context.index,"access_type")),t(e,53,0),t(e,62,0,"squash"),t(e,65,0,"squash"),t(e,67,0,""),t(e,68,0,""),t(e,71,0,n.nfsSquash)}),(function(t,e){var n=e.component;t(e,1,0,s["ɵnov"](e,4).ngClassUntouched,s["ɵnov"](e,4).ngClassTouched,s["ɵnov"](e,4).ngClassPristine,s["ɵnov"](e,4).ngClassDirty,s["ɵnov"](e,4).ngClassValid,s["ɵnov"](e,4).ngClassInvalid,s["ɵnov"](e,4).ngClassPending);var a=s["ɵunv"](e,6,0,t(e,7,0,s["ɵnov"](e.parent,0),e.context.index+1));t(e,6,0,a),t(e,11,0,s["ɵnov"](e,12).hasErrors,s["ɵnov"](e,12).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,24).validClass,s["ɵnov"](e,24).invalidClass),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,37,0,s["ɵnov"](e,42).ngClassUntouched,s["ɵnov"](e,42).ngClassTouched,s["ɵnov"](e,42).ngClassPristine,s["ɵnov"](e,42).ngClassDirty,s["ɵnov"](e,42).ngClassValid,s["ɵnov"](e,42).ngClassInvalid,s["ɵnov"](e,42).ngClassPending,s["ɵnov"](e,43).validClass,s["ɵnov"](e,43).invalidClass),t(e,47,0,n.getNoAccessTypeDescr()),t(e,52,0,s["ɵnov"](e,53).hasErrors,s["ɵnov"](e,53).hasSuccess),t(e,59,0,s["ɵnov"](e,64).ngClassUntouched,s["ɵnov"](e,64).ngClassTouched,s["ɵnov"](e,64).ngClassPristine,s["ɵnov"](e,64).ngClassDirty,s["ɵnov"](e,64).ngClassValid,s["ɵnov"](e,64).ngClassInvalid,s["ɵnov"](e,64).ngClassPending,s["ɵnov"](e,65).validClass,s["ɵnov"](e,65).invalidClass),t(e,69,0,n.getNoSquashDescr())}))}function Rg(t){return s["ɵvid"](0,[s["ɵpid"](0,vg.a,[]),(t()(),s["ɵeld"](1,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](2,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](5,0,null,0,1,"label",[["class","cd-col-form-label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients"])),(t()(),s["ɵeld"](7,0,null,0,22,"div",[["class","cd-col-form-input"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](10,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](11,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tg)),s["ɵdid"](13,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](14,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](15,212992,null,0,$.g,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.g]),s["ɵdid"](17,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Cg)),s["ɵdid"](19,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),s["ɵeld"](20,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,8,"div",[["class","col-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](22,0,null,null,7,"div",[["class","float-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,6,"button",[["class","btn btn-light "]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addClient()&&a),a}),null,null)),(t()(),s["ɵeld"](24,0,null,null,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](26,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](27,1),(t()(),s["ɵeld"](28,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add clients"]))],(function(t,e){var n=e.component;t(e,2,0),t(e,8,0,n.form),t(e,11,0,n.form),t(e,13,0,0===n.form.get("clients").value.length),t(e,15,0,"clients"),t(e,19,0,n.form.get("clients").value,n.trackByFn);var a=t(e,27,0,n.icons.add);t(e,26,0,a)}),(function(t,e){t(e,1,0,s["ɵnov"](e,2).hasErrors,s["ɵnov"](e,2).hasSuccess),t(e,7,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending)}))}var Ag=n("P8lu"),kg=n("a96k");class Eg{constructor(t,e,n,a,r,i,s,o,u,l){this.authStorageService=t,this.nfsService=e,this.route=n,this.router=a,this.rgwUserService=r,this.formBuilder=i,this.taskWrapper=s,this.cdRef=o,this.i18n=u,this.actionLabels=l,this.isEdit=!1,this.cluster_id=null,this.export_id=null,this.isNewDirectory=!1,this.isNewBucket=!1,this.isDefaultCluster=!1,this.allClusters=null,this.allDaemons={},this.icons=ht.a,this.allFsals=[],this.allRgwUsers=[],this.allCephxClients=null,this.allFsNames=null,this.defaultAccessType={RGW:"RO"},this.nfsAccessType=this.nfsService.nfsAccessType,this.nfsSquash=this.nfsService.nfsSquash,this.daemonsSelections=[],this.daemonsMessages=new fs.a({noOptions:this.i18n("There are no daemons available.")},this.i18n),this.pathDataSource=kn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(Dn.a)(t=>this.getPathTypeahead(t)),Object(Ee.a)(t=>t.paths)),this.bucketDataSource=kn.a.create(t=>{t.next(this.nfsForm.getValue("path"))}).pipe(Object(Dn.a)(t=>this.getBucketTypeahead(t))),this.permission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("NFS export"),this.createForm()}ngOnInit(){const t=[this.nfsService.daemon(),this.nfsService.fsals(),this.nfsService.clients(),this.nfsService.filesystems()];this.router.url.startsWith("/nfs/edit")&&(this.isEdit=!0),this.isEdit?(this.action=this.actionLabels.EDIT,this.route.params.subscribe(e=>{this.cluster_id=decodeURIComponent(e.cluster_id),this.export_id=decodeURIComponent(e.export_id),t.push(this.nfsService.get(this.cluster_id,this.export_id)),this.getData(t)})):(this.action=this.actionLabels.CREATE,this.getData(t))}getData(t){Object(Mo.a)(t).subscribe(t=>{this.resolveDaemons(t[0]),this.resolvefsals(t[1]),this.resolveClients(t[2]),this.resolveFilesystems(t[3]),t[4]&&this.resolveModel(t[4])})}createForm(){this.nfsForm=new js.a({cluster_id:new $.i("",{validators:[$.B.required]}),daemons:new $.i([]),fsal:new js.a({name:new $.i("",{validators:[$.B.required]}),user_id:new $.i("",{validators:[Fs.a.requiredIf({name:"CEPH"})]}),fs_name:new $.i("",{validators:[Fs.a.requiredIf({name:"CEPH"})]}),rgw_user_id:new $.i("",{validators:[Fs.a.requiredIf({name:"RGW"})]})}),path:new $.i(""),protocolNfsv3:new $.i(!0,{validators:[Fs.a.requiredIf({protocolNfsv4:!1},t=>!t)]}),protocolNfsv4:new $.i(!0,{validators:[Fs.a.requiredIf({protocolNfsv3:!1},t=>!t)]}),tag:new $.i(""),pseudo:new $.i("",{validators:[Fs.a.requiredIf({protocolNfsv4:!0}),$.B.pattern("^/[^><|&()]*$")]}),access_type:new $.i("RW",{validators:[$.B.required]}),squash:new $.i("",{validators:[$.B.required]}),transportUDP:new $.i(!0,{validators:[Fs.a.requiredIf({transportTCP:!1},t=>!t)]}),transportTCP:new $.i(!0,{validators:[Fs.a.requiredIf({transportUDP:!1},t=>!t)]}),clients:this.formBuilder.array([]),security_label:new $.i(!1),sec_label_xattr:new $.i("security.selinux",Fs.a.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})}resolveModel(t){"CEPH"===t.fsal.name&&(t.sec_label_xattr=t.fsal.sec_label_xattr),this.daemonsSelections=J.map(this.allDaemons[t.cluster_id],e=>new kg.a(-1!==t.daemons.indexOf(e),e,"")),this.daemonsSelections=[...this.daemonsSelections],t.protocolNfsv3=-1!==t.protocols.indexOf(3),t.protocolNfsv4=-1!==t.protocols.indexOf(4),delete t.protocols,t.transportTCP=-1!==t.transports.indexOf("TCP"),t.transportUDP=-1!==t.transports.indexOf("UDP"),delete t.transports,t.clients.forEach(t=>{let e="";t.addresses.forEach(t=>{e+=t+", "}),e.length>=2&&(e=e.substring(0,e.length-2)),t.addresses=e}),this.nfsForm.patchValue(t),this.setPathValidation(),this.nfsClients.resolveModel(t.clients)}resolveDaemons(t){t=J.sortBy(t,["daemon_id"]),this.allClusters=J(t).map(t=>t.cluster_id).sortedUniq().value(),J.forEach(this.allClusters,t=>{this.allDaemons[t]=[]}),J.forEach(t,t=>{this.allDaemons[t.cluster_id].push(t.daemon_id)});const e=J.isArray(this.allClusters)&&1===this.allClusters.length;this.isDefaultCluster=e&&"_default_"===this.allClusters[0],e&&(this.nfsForm.patchValue({cluster_id:this.allClusters[0]}),this.onClusterChange())}resolvefsals(t){t.forEach(t=>{const e=this.nfsService.nfsFsal.find(e=>t===e.value);J.isObjectLike(e)&&(this.allFsals.push(e),"RGW"===e.value&&this.rgwUserService.list().subscribe(t=>{t.forEach(t=>{0===t.suspended&&t.keys.length>0&&this.allRgwUsers.push(t.user_id)})}))}),1===this.allFsals.length&&J.isUndefined(this.nfsForm.getValue("fsal"))&&this.nfsForm.patchValue({fsal:this.allFsals[0]})}resolveClients(t){this.allCephxClients=t}resolveFilesystems(t){this.allFsNames=t,1===t.length&&this.nfsForm.patchValue({fsal:{fs_name:t[0].name}})}fsalChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo(),access_type:this._updateAccessType()}),this.setPathValidation(),this.cdRef.detectChanges()}accessTypeChangeHandler(){const t=this.nfsForm.getValue("name"),e=this.nfsForm.getValue("access_type");this.defaultAccessType[t]=e}setPathValidation(){"RGW"===this.nfsForm.getValue("name")?this.nfsForm.get("path").setValidators([$.B.required,$.B.pattern("^(/|[^/><|&()#?]+)$")]):this.nfsForm.get("path").setValidators([$.B.required,$.B.pattern("^/[^><|&()?]*$")])}rgwUserIdChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()})}getAccessTypeHelp(t){const e=this.nfsAccessType.find(e=>{if(t===e.value)return e});return J.isObjectLike(e)?e.help:""}getId(){return J.isString(this.nfsForm.getValue("cluster_id"))&&J.isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""}getPathTypeahead(t){return J.isString(t)&&"/"!==t?this.nfsService.lsDir(t):Object(An.a)([])}pathChangeHandler(){this.nfsForm.patchValue({pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getPathTypeahead(t).subscribe(e=>{this.isNewDirectory="/"!==t&&-1===e.paths.indexOf(t)})}bucketChangeHandler(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo()});const t=this.nfsForm.getValue("path");this.getBucketTypeahead(t).subscribe(e=>{this.isNewBucket=""!==t&&-1===e.indexOf(t)})}getBucketTypeahead(t){const e=this.nfsForm.getValue("rgw_user_id");return J.isString(e)&&J.isString(t)&&"/"!==t&&""!==t?this.nfsService.buckets(e):Object(An.a)([])}_generateTag(){let t=this.nfsForm.getValue("tag");return this.nfsForm.get("tag").dirty||(t=void 0,"RGW"===this.nfsForm.getValue("fsal")&&(t=this.nfsForm.getValue("path"))),t}_generatePseudo(){let t=this.nfsForm.getValue("pseudo");return this.nfsForm.get("pseudo")&&!this.nfsForm.get("pseudo").dirty&&(t=void 0,"CEPH"===this.nfsForm.getValue("fsal")?(t="/cephfs",J.isString(this.nfsForm.getValue("path"))&&(t+=this.nfsForm.getValue("path"))):"RGW"===this.nfsForm.getValue("fsal")&&J.isString(this.nfsForm.getValue("rgw_user_id"))&&(t="/"+this.nfsForm.getValue("rgw_user_id"),J.isString(this.nfsForm.getValue("path"))&&(t+="/"+this.nfsForm.getValue("path")))),t}_updateAccessType(){const t=this.nfsForm.getValue("name");let e=this.defaultAccessType[t];return e||(e="RW"),e}onClusterChange(){const t=this.nfsForm.getValue("cluster_id");this.daemonsSelections=J.map(this.allDaemons[t],t=>new kg.a(!1,t,"")),this.daemonsSelections=[...this.daemonsSelections],this.nfsForm.patchValue({daemons:[]})}removeDaemon(t,e){this.daemonsSelections.forEach(t=>{t.name===e&&(t.selected=!1)});const n=this.nfsForm.get("daemons");return n.value.splice(t,1),n.setValue(n.value),!1}onDaemonSelection(){this.nfsForm.get("daemons").setValue(this.nfsForm.getValue("daemons"))}submitAction(){let t;const e=this._buildRequest();t=this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new hs.a("nfs/edit",{cluster_id:this.cluster_id,export_id:this.export_id}),call:this.nfsService.update(this.cluster_id,this.export_id,e)}:{task:new hs.a("nfs/create",{path:e.path,fsal:e.fsal,cluster_id:e.cluster_id}),call:this.nfsService.create(e)}),t.subscribe(void 0,()=>this.nfsForm.setErrors({cdSubmitButton:!0}),()=>this.router.navigate(["/nfs"]))}_buildRequest(){const t=J.cloneDeep(this.nfsForm.value);return(J.isUndefined(t.tag)||""===t.tag)&&(t.tag=null),this.isEdit&&(t.export_id=this.export_id),"CEPH"===t.fsal.name?delete t.fsal.rgw_user_id:(delete t.fsal.fs_name,delete t.fsal.user_id),t.protocols=[],t.protocolNfsv3?t.protocols.push(3):t.tag=null,delete t.protocolNfsv3,t.protocolNfsv4?t.protocols.push(4):t.pseudo=null,delete t.protocolNfsv4,t.transports=[],t.transportTCP&&t.transports.push("TCP"),delete t.transportTCP,t.transportUDP&&t.transports.push("UDP"),delete t.transportUDP,t.clients.forEach(e=>{e.addresses=J.isString(e.addresses)?J(e.addresses).split(/[ ,]+/).uniq().filter(t=>""!==t).value():[],e.squash||(e.squash=t.squash),e.access_type||(e.access_type=t.access_type)}),t.fsal.sec_label_xattr=!1===t.security_label||"RGW"===t.fsal.name?null:t.sec_label_xattr,delete t.sec_label_xattr,t}}var Lg=s["ɵcrt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function Dg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Pg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No cluster available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Mg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cluster --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function qg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function jg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Fg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,2,{FormControlNames:1}),s["ɵqud"](603979776,3,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","cluster_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","cluster_id"],["id","cluster_id"],["name","cluster_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.onClusterChange()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[2,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mg)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qg)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jg)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"cluster_id"),t(e,13,0,"cluster_id"),t(e,15,0,null===n.allClusters),t(e,17,0,null!==n.allClusters&&0===n.allClusters.length),t(e,19,0,null!==n.allClusters&&n.allClusters.length>0),t(e,21,0,n.allClusters),t(e,23,0,n.nfsForm.showError("cluster_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Gg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,8,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,7,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,0,"input",[["class","cd-form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,5,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,4,"button",[["class","btn btn-light"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeDaemon(t.context.index,t.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](5,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](8,1)],(function(t,e){var n=t(e,8,0,e.component.icons.destroy);t(e,7,0,n)}),(function(t,e){t(e,2,0,e.context.$implicit)}))}function Vg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function zg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No data pools available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Bg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the storage backend --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Yg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.descr)}))}function Hg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Ug(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Wg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No users available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Kg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the object gateway user --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function $g(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function Zg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Jg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,8,{FormControlNames:1}),s["ɵqud"](603979776,9,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","rgw_user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Object Gateway User"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","rgw_user_id"],["id","rgw_user_id"],["name","rgw_user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[8,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ug)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Kg)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$g)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zg)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"rgw_user_id"),t(e,13,0,"rgw_user_id"),t(e,15,0,null===n.allRgwUsers),t(e,17,0,null!==n.allRgwUsers&&0===n.allRgwUsers.length),t(e,19,0,null!==n.allRgwUsers&&n.allRgwUsers.length>0),t(e,21,0,n.allRgwUsers),t(e,23,0,n.nfsForm.showError("rgw_user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function Qg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Xg(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No clients available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function tp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the cephx client --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function ep(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function np(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function ap(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,10,{FormControlNames:1}),s["ɵqud"](603979776,11,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","user_id"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS User ID"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","user_id"],["id","user_id"],["name","user_id"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[10,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qg)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,tp)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ep)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,np)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"user_id"),t(e,13,0,"user_id"),t(e,15,0,null===n.allCephxClients),t(e,17,0,null!==n.allCephxClients&&0===n.allCephxClients.length),t(e,19,0,null!==n.allCephxClients&&n.allCephxClients.length>0),t(e,21,0,n.allCephxClients),t(e,23,0,n.nfsForm.showError("user_id",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function rp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function ip(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No CephFS filesystem available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function sp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the CephFS filesystem --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function op(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.name)}))}function up(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function lp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,12,{FormControlNames:1}),s["ɵqud"](603979776,13,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","fs_name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Name"])),(t()(),s["ɵeld"](6,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","fs_name"],["id","fs_name"],["name","fs_name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,8).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](10,671744,[[12,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,rp)),s["ɵdid"](15,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ip)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,sp)),s["ɵdid"](19,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,op)),s["ɵdid"](21,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,up)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"fs_name"),t(e,13,0,"fs_name"),t(e,15,0,null===n.allFsNames),t(e,17,0,null!==n.allFsNames&&0===n.allFsNames.length),t(e,19,0,null!==n.allFsNames&&n.allFsNames.length>0),t(e,21,0,n.allFsNames),t(e,23,0,n.nfsForm.showError("fs_name",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,13).validClass,s["ɵnov"](e,13).invalidClass)}))}function dp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"input",[["class","form-control"],["formControlName","sec_label_xattr"],["id","sec_label_xattr"],["name","sec_label_xattr"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,1)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](1,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](3,671744,[[14,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](5,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](6,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,3,0,"sec_label_xattr"),t(e,6,0,"sec_label_xattr")}),(function(t,e){t(e,0,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending,s["ɵnov"](e,6).validClass,s["ɵnov"](e,6).invalidClass)}))}function cp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function fp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,24,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,14,{FormControlNames:1}),s["ɵqud"](603979776,15,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,4,"label",[["class","cd-col-form-label"],["for","security_label"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](6,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),s["ɵpod"](7,{required:0}),(t()(),s["ɵted"](-1,null,["Security Label"])),(t()(),s["ɵeld"](9,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","security_label"],["id","security_label"],["name","security_label"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,12).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,12).onTouched()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](14,671744,[[14,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](16,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](17,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"label",[["class","custom-control-label"],["for","security_label"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Enable security label"])),(t()(),s["ɵeld"](20,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,dp)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cp)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,7,0,n.nfsForm.getValue("security_label"));t(e,6,0,"cd-col-form-label",a),t(e,14,0,"security_label"),t(e,17,0,"security_label"),t(e,22,0,n.nfsForm.getValue("security_label")),t(e,24,0,n.nfsForm.showError("sec_label_xattr",s["ɵnov"](e.parent,6),"required"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,11,0,s["ɵnov"](e,16).ngClassUntouched,s["ɵnov"](e,16).ngClassTouched,s["ɵnov"](e,16).ngClassPristine,s["ɵnov"](e,16).ngClassDirty,s["ɵnov"](e,16).ngClassValid,s["ɵnov"](e,16).ngClassInvalid,s["ɵnov"](e,16).ngClassPending,s["ɵnov"](e,17).validClass,s["ɵnov"](e,17).invalidClass)}))}function hp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function gp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path need to start with a '/' and can be followed by a word"]))],null,null)}function pp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New directory will be created"]))],null,null)}function bp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,16,{FormControlNames:1}),s["ɵqud"](603979776,17,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CephFS Path"])),(t()(),s["ɵeld"](6,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,7,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,13).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,13).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.pathChangeHandler()&&a),"blur"===e&&(a=!1!==r.pathChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[16,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,212992,null,0,pg,[W.a,gg,s.ChangeDetectorRef,s.ElementRef,$.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](14,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,hp)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gp)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,pp)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,13,0,n.pathDataSource),t(e,14,0,"path"),t(e,16,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,18,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,20,0,n.isNewDirectory&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function mp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function yp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path can only be a single '/' or a word"]))],null,null)}function vp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["New bucket will be created"]))],null,null)}function xp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,20,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,18,{FormControlNames:1}),s["ɵqud"](603979776,19,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","path"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Path"])),(t()(),s["ɵeld"](6,0,null,0,14,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](7,16777216,null,null,7,"input",[["class","form-control"],["formControlName","path"],["id","path"],["name","path"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,8)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,8).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,8)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,8)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,13).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,13).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,13).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,13).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.bucketChangeHandler()&&a),"blur"===e&&(a=!1!==r.bucketChangeHandler()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](10,671744,[[18,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](12,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](13,212992,null,0,pg,[W.a,gg,s.ChangeDetectorRef,s.ElementRef,$.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),s["ɵdid"](14,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,mp)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,yp)),s["ɵdid"](18,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,vp)),s["ɵdid"](20,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,"path"),t(e,13,0,n.bucketDataSource),t(e,14,0,"path"),t(e,16,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"required")),t(e,18,0,n.nfsForm.showError("path",s["ɵnov"](e.parent,6),"pattern")),t(e,20,0,n.isNewBucket&&!n.nfsForm.showError("path",s["ɵnov"](e.parent,6)))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,7,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending,s["ɵnov"](e,14).validClass,s["ɵnov"](e,14).invalidClass)}))}function _p(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Tp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,25,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,22,{FormControlNames:1}),s["ɵqud"](603979776,23,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,13,"label",[["class","cd-col-form-label"],["for","tag"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Tag"])),(t()(),s["ɵeld"](7,0,null,null,10,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](8,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,4,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Alternative access for "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v3"])),(t()(),s["ɵted"](-1,null,[" mounts (it must not have a leading /)."])),(t()(),s["ɵeld"](14,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz)."])),(t()(),s["ɵeld"](16,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Tag options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](18,0,null,0,7,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,6,"input",[["class","form-control"],["formControlName","tag"],["id","tag"],["name","tag"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,20)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,20)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,20)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](22,671744,[[22,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](24,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null)],(function(t,e){t(e,1,0),t(e,22,0,"tag"),t(e,25,0,"tag")}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass)}))}function Op(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function wp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or )."]))],null,null)}function Sp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,30,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,24,{FormControlNames:1}),s["ɵqud"](603979776,25,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,14,"label",[["class","cd-col-form-label"],["for","pseudo"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo"])),(t()(),s["ɵeld"](7,0,null,null,11,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](8,49152,null,0,lu.a,[],null,null),(t()(),s["ɵeld"](9,0,null,0,7,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The position that this "])),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS v4"])),(t()(),s["ɵted"](-1,null,[" export occupies in the "])),(t()(),s["ɵeld"](14,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Pseudo FS"])),(t()(),s["ɵted"](-1,null,[" (it must be unique)."])),(t()(),s["ɵeld"](17,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["By using different Pseudo options, the same Path may be exported multiple times."])),(t()(),s["ɵeld"](19,0,null,0,11,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](20,0,null,null,6,"input",[["class","form-control"],["formControlName","pseudo"],["id","pseudo"],["name","pseudo"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,21)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](21,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](23,671744,[[24,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](25,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](26,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Op)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wp)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,23,0,"pseudo"),t(e,26,0,"pseudo"),t(e,28,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"required")),t(e,30,0,n.nfsForm.showError("pseudo",s["ɵnov"](e.parent,6),"pattern"))}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,20,0,s["ɵnov"](e,25).ngClassUntouched,s["ɵnov"](e,25).ngClassTouched,s["ɵnov"](e,25).ngClassPristine,s["ɵnov"](e,25).ngClassDirty,s["ɵnov"](e,25).ngClassValid,s["ɵnov"](e,25).ngClassInvalid,s["ɵnov"](e,25).ngClassPending,s["ɵnov"](e,26).validClass,s["ɵnov"](e,26).invalidClass)}))}function Ip(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Np(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No access type available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Cp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- Select the access type --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Rp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit.value),t(e,2,0,e.context.$implicit.value)}),(function(t,e){t(e,3,0,e.context.$implicit.value)}))}function Ap(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,1,0,n.getAccessTypeHelp(n.nfsForm.getValue("access_type")))}))}function kp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","form-text text-warning"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The Object Gateway NFS backend has a number of limitations which will seriously affect applications writing to the share. Please consult the "])),(t()(),s["ɵeld"](2,0,null,null,1,"cd-doc",[["section","rgw-nfs"]],null,null,null,Ur.b,Ur.a)),s["ɵdid"](3,114688,null,0,Wr.a,[xt.a,me.a],{section:[0,"section"]},null),(t()(),s["ɵted"](-1,null,[" for details before enabling write access."]))],(function(t,e){t(e,3,0,"rgw-nfs")}),null)}function Ep(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Lp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["Loading..."]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Dp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["-- No squash available --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Pp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](-1,null,["--Select what kind of user id squashing is performed --"]))],(function(t,e){t(e,1,0,""),t(e,2,0,"")}),null)}function Mp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,["",""]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function qp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function jp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Fp(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,qs.a,[]),s["ɵqud"](402653184,1,{nfsClients:0}),(t()(),s["ɵeld"](3,0,null,null,200,"div",[["class","cd-col-form"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,199,"form",[["name","nfsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,6).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit()&&a),a}),null,null)),s["ɵdid"](5,16384,null,0,$.G,[],null,null),s["ɵdid"](6,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](8,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](9,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](10,0,null,null,193,"div",[["class","card"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,3,"div",[["class","card-header"]],null,null,null,null,null)),(t()(),s["ɵted"](12,null,[""," ",""])),s["ɵppd"](13,1),s["ɵppd"](14,1),(t()(),s["ɵeld"](15,0,null,null,179,"div",[["class","card-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Fg)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,19,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](19,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,4,{FormControlNames:1}),s["ɵqud"](603979776,5,{messagesBlock:0}),(t()(),s["ɵeld"](22,0,null,0,2,"label",[["class","cd-col-form-label"],["for","daemons"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Daemons"])),(t()(),s["ɵeld"](25,0,null,0,12,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Gg)),s["ɵdid"](27,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](28,0,null,null,9,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](29,0,null,null,8,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,7,"cd-select",[["elemClass","btn btn-light float-right"]],null,[[null,"selection"]],(function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.onDaemonSelection()&&a),a}),mg.b,mg.a)),s["ɵdid"](31,638976,null,0,yg.a,[me.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(t()(),s["ɵeld"](32,0,null,0,3,"i",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](34,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](35,1),(t()(),s["ɵeld"](36,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Add daemon"])),(t()(),s["ɵeld"](38,0,null,null,33,"div",[["formGroupName","fsal"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],null,null,null,null)),s["ɵdid"](39,212992,null,0,$.m,[[3,$.d],[8,null],[8,null]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.d,null,[$.m]),s["ɵdid"](41,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](42,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](43,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,6,{FormControlNames:1}),s["ɵqud"](603979776,7,{messagesBlock:0}),(t()(),s["ɵeld"](46,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Storage Backend"])),(t()(),s["ɵeld"](48,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,50).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,50).onTouched()&&a),"change"===e&&(a=!1!==r.fsalChangeHandler()&&a),a}),null,null)),s["ɵdid"](50,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](52,671744,[[6,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](54,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](55,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Vg)),s["ɵdid"](57,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,zg)),s["ɵdid"](59,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Bg)),s["ɵdid"](61,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Yg)),s["ɵdid"](63,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Hg)),s["ɵdid"](65,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jg)),s["ɵdid"](67,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ap)),s["ɵdid"](69,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,lp)),s["ɵdid"](71,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fp)),s["ɵdid"](73,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,bp)),s["ɵdid"](75,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,xp)),s["ɵdid"](77,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](78,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](79,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,20,{FormControlNames:1}),s["ɵqud"](603979776,21,{messagesBlock:0}),(t()(),s["ɵeld"](82,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","protocols"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFS Protocol"])),(t()(),s["ɵeld"](84,0,null,0,22,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](85,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](86,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","protocolNfsv3"],["id","protocolNfsv3"],["name","protocolNfsv3"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,87).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,87).onTouched()&&a),a}),null,null)),s["ɵdid"](87,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](89,671744,[[20,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](91,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](92,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](93,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv3"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv3"])),(t()(),s["ɵeld"](95,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](96,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","protocolNfsv4"],["id","protocolNfsv4"],["name","protocolNfsv4"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,97).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,97).onTouched()&&a),a}),null,null)),s["ɵdid"](97,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](99,671744,[[20,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](101,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](102,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](103,0,null,null,1,"label",[["class","custom-control-label"],["for","protocolNfsv4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["NFSv4"])),(t()(),s["ɵand"](16777216,null,null,1,null,_p)),s["ɵdid"](106,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Tp)),s["ɵdid"](108,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sp)),s["ɵdid"](110,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](111,0,null,null,27,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](112,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,26,{FormControlNames:1}),s["ɵqud"](603979776,27,{messagesBlock:0}),(t()(),s["ɵeld"](115,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","access_type"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Access Type"])),(t()(),s["ɵeld"](117,0,null,0,21,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](118,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","access_type"],["id","access_type"],["name","access_type"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,119).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,119).onTouched()&&a),"change"===e&&(a=!1!==r.accessTypeChangeHandler()&&a),a}),null,null)),s["ɵdid"](119,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](121,671744,[[26,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](123,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](124,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ip)),s["ɵdid"](126,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Np)),s["ɵdid"](128,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cp)),s["ɵdid"](130,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rp)),s["ɵdid"](132,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ap)),s["ɵdid"](134,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,kp)),s["ɵdid"](136,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Ep)),s["ɵdid"](138,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](139,0,null,null,23,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](140,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,28,{FormControlNames:1}),s["ɵqud"](603979776,29,{messagesBlock:0}),(t()(),s["ɵeld"](143,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","squash"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Squash"])),(t()(),s["ɵeld"](145,0,null,0,17,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](146,0,null,null,14,"select",[["class","form-control custom-select"],["formControlName","squash"],["id","squash"],["name","squash"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,147).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,147).onTouched()&&a),a}),null,null)),s["ɵdid"](147,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](149,671744,[[28,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](151,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](152,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Lp)),s["ɵdid"](154,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Dp)),s["ɵdid"](156,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Pp)),s["ɵdid"](158,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Mp)),s["ɵdid"](160,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,qp)),s["ɵdid"](162,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](163,0,null,null,29,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](164,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,30,{FormControlNames:1}),s["ɵqud"](603979776,31,{messagesBlock:0}),(t()(),s["ɵeld"](167,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","transports"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Transport Protocol"])),(t()(),s["ɵeld"](169,0,null,0,23,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](170,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](171,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","transportUDP"],["id","transportUDP"],["name","transportUDP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,172).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,172).onTouched()&&a),a}),null,null)),s["ɵdid"](172,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](174,671744,[[30,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](176,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](177,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](178,0,null,null,1,"label",[["class","custom-control-label"],["for","transportUDP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["UDP"])),(t()(),s["ɵeld"](180,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](181,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","transportTCP"],["id","transportTCP"],["name","transportTCP"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,182).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,182).onTouched()&&a),a}),null,null)),s["ɵdid"](182,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](184,671744,[[30,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](186,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](187,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](188,0,null,null,1,"label",[["class","custom-control-label"],["for","transportTCP"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["TCP"])),(t()(),s["ɵand"](16777216,null,null,1,null,jp)),s["ɵdid"](191,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](192,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),s["ɵeld"](193,0,null,null,1,"cd-nfs-form-client",[],null,null,null,Rg,_g)),s["ɵdid"](194,49152,[[1,4],["nfsClients",4]],0,xg,[Hh,me.a],{form:[0,"form"]},null),(t()(),s["ɵeld"](195,0,null,null,8,"div",[["class","card-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](196,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵeld"](197,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](198,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](199,0,[""," ",""])),s["ɵppd"](200,1),s["ɵppd"](201,1),(t()(),s["ɵeld"](202,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](203,49152,null,0,Ms.a,[i.Location,At.b],null,null)],(function(t,e){var n=e.component;t(e,6,0,n.nfsForm),t(e,9,0,n.nfsForm),t(e,17,0,!n.isDefaultCluster),t(e,19,0),t(e,27,0,n.nfsForm.getValue("daemons")),t(e,31,0,"btn btn-light float-right",n.nfsForm.get("daemons").value,n.daemonsSelections,n.daemonsMessages);var a=t(e,35,0,n.icons.add);t(e,34,0,a),t(e,39,0,"fsal"),t(e,43,0),t(e,52,0,"name"),t(e,55,0,"name"),t(e,57,0,null===n.allFsals),t(e,59,0,null!==n.allFsals&&0===n.allFsals.length),t(e,61,0,null!==n.allFsals&&n.allFsals.length>0),t(e,63,0,n.allFsals),t(e,65,0,n.nfsForm.showError("name",s["ɵnov"](e,6),"required")),t(e,67,0,"RGW"===n.nfsForm.getValue("name")),t(e,69,0,"CEPH"===n.nfsForm.getValue("name")),t(e,71,0,"CEPH"===n.nfsForm.getValue("name")),t(e,73,0,"CEPH"===n.nfsForm.getValue("name")),t(e,75,0,"CEPH"===n.nfsForm.getValue("name")),t(e,77,0,"RGW"===n.nfsForm.getValue("name")),t(e,79,0),t(e,89,0,"protocolNfsv3"),t(e,92,0,"protocolNfsv3"),t(e,99,0,"protocolNfsv4"),t(e,102,0,"protocolNfsv4"),t(e,106,0,n.nfsForm.showError("protocolNfsv3",s["ɵnov"](e,6),"required")||n.nfsForm.showError("protocolNfsv4",s["ɵnov"](e,6),"required")),t(e,108,0,n.nfsForm.getValue("protocolNfsv3")),t(e,110,0,n.nfsForm.getValue("protocolNfsv4")),t(e,112,0),t(e,121,0,"access_type"),t(e,124,0,"access_type"),t(e,126,0,null===n.nfsAccessType),t(e,128,0,null!==n.nfsAccessType&&0===n.nfsAccessType.length),t(e,130,0,null!==n.nfsAccessType&&n.nfsAccessType.length>0),t(e,132,0,n.nfsAccessType),t(e,134,0,n.nfsForm.getValue("access_type")),t(e,136,0,"RW"===n.nfsForm.getValue("access_type")&&"RGW"===n.nfsForm.getValue("name")),t(e,138,0,n.nfsForm.showError("access_type",s["ɵnov"](e,6),"required")),t(e,140,0),t(e,149,0,"squash"),t(e,152,0,"squash"),t(e,154,0,null===n.nfsSquash),t(e,156,0,null!==n.nfsSquash&&0===n.nfsSquash.length),t(e,158,0,null!==n.nfsSquash&&n.nfsSquash.length>0),t(e,160,0,n.nfsSquash),t(e,162,0,n.nfsForm.showError("squash",s["ɵnov"](e,6),"required")),t(e,164,0),t(e,174,0,"transportUDP"),t(e,177,0,"transportUDP"),t(e,184,0,"transportTCP"),t(e,187,0,"transportTCP"),t(e,191,0,n.nfsForm.showError("transportUDP",s["ɵnov"](e,6),"required")||n.nfsForm.showError("transportTCP",s["ɵnov"](e,6),"required")),t(e,194,0,n.nfsForm),t(e,198,0,s["ɵnov"](e,6))}),(function(t,e){var n=e.component;t(e,4,0,s["ɵnov"](e,8).ngClassUntouched,s["ɵnov"](e,8).ngClassTouched,s["ɵnov"](e,8).ngClassPristine,s["ɵnov"](e,8).ngClassDirty,s["ɵnov"](e,8).ngClassValid,s["ɵnov"](e,8).ngClassInvalid,s["ɵnov"](e,8).ngClassPending);var a=s["ɵunv"](e,12,0,t(e,13,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,12,1,t(e,14,0,s["ɵnov"](e,1),n.resource));t(e,12,0,a,r),t(e,18,0,s["ɵnov"](e,19).hasErrors,s["ɵnov"](e,19).hasSuccess),t(e,38,0,s["ɵnov"](e,41).ngClassUntouched,s["ɵnov"](e,41).ngClassTouched,s["ɵnov"](e,41).ngClassPristine,s["ɵnov"](e,41).ngClassDirty,s["ɵnov"](e,41).ngClassValid,s["ɵnov"](e,41).ngClassInvalid,s["ɵnov"](e,41).ngClassPending),t(e,42,0,s["ɵnov"](e,43).hasErrors,s["ɵnov"](e,43).hasSuccess),t(e,49,0,s["ɵnov"](e,54).ngClassUntouched,s["ɵnov"](e,54).ngClassTouched,s["ɵnov"](e,54).ngClassPristine,s["ɵnov"](e,54).ngClassDirty,s["ɵnov"](e,54).ngClassValid,s["ɵnov"](e,54).ngClassInvalid,s["ɵnov"](e,54).ngClassPending,s["ɵnov"](e,55).validClass,s["ɵnov"](e,55).invalidClass),t(e,78,0,s["ɵnov"](e,79).hasErrors,s["ɵnov"](e,79).hasSuccess),t(e,86,0,s["ɵnov"](e,91).ngClassUntouched,s["ɵnov"](e,91).ngClassTouched,s["ɵnov"](e,91).ngClassPristine,s["ɵnov"](e,91).ngClassDirty,s["ɵnov"](e,91).ngClassValid,s["ɵnov"](e,91).ngClassInvalid,s["ɵnov"](e,91).ngClassPending,s["ɵnov"](e,92).validClass,s["ɵnov"](e,92).invalidClass),t(e,96,0,s["ɵnov"](e,101).ngClassUntouched,s["ɵnov"](e,101).ngClassTouched,s["ɵnov"](e,101).ngClassPristine,s["ɵnov"](e,101).ngClassDirty,s["ɵnov"](e,101).ngClassValid,s["ɵnov"](e,101).ngClassInvalid,s["ɵnov"](e,101).ngClassPending,s["ɵnov"](e,102).validClass,s["ɵnov"](e,102).invalidClass),t(e,111,0,s["ɵnov"](e,112).hasErrors,s["ɵnov"](e,112).hasSuccess),t(e,118,0,s["ɵnov"](e,123).ngClassUntouched,s["ɵnov"](e,123).ngClassTouched,s["ɵnov"](e,123).ngClassPristine,s["ɵnov"](e,123).ngClassDirty,s["ɵnov"](e,123).ngClassValid,s["ɵnov"](e,123).ngClassInvalid,s["ɵnov"](e,123).ngClassPending,s["ɵnov"](e,124).validClass,s["ɵnov"](e,124).invalidClass),t(e,139,0,s["ɵnov"](e,140).hasErrors,s["ɵnov"](e,140).hasSuccess),t(e,146,0,s["ɵnov"](e,151).ngClassUntouched,s["ɵnov"](e,151).ngClassTouched,s["ɵnov"](e,151).ngClassPristine,s["ɵnov"](e,151).ngClassDirty,s["ɵnov"](e,151).ngClassValid,s["ɵnov"](e,151).ngClassInvalid,s["ɵnov"](e,151).ngClassPending,s["ɵnov"](e,152).validClass,s["ɵnov"](e,152).invalidClass),t(e,163,0,s["ɵnov"](e,164).hasErrors,s["ɵnov"](e,164).hasSuccess),t(e,171,0,s["ɵnov"](e,176).ngClassUntouched,s["ɵnov"](e,176).ngClassTouched,s["ɵnov"](e,176).ngClassPristine,s["ɵnov"](e,176).ngClassDirty,s["ɵnov"](e,176).ngClassValid,s["ɵnov"](e,176).ngClassInvalid,s["ɵnov"](e,176).ngClassPending,s["ɵnov"](e,177).validClass,s["ɵnov"](e,177).invalidClass),t(e,181,0,s["ɵnov"](e,186).ngClassUntouched,s["ɵnov"](e,186).ngClassTouched,s["ɵnov"](e,186).ngClassPristine,s["ɵnov"](e,186).ngClassDirty,s["ɵnov"](e,186).ngClassValid,s["ɵnov"](e,186).ngClassInvalid,s["ɵnov"](e,186).ngClassPending,s["ɵnov"](e,187).validClass,s["ɵnov"](e,187).invalidClass);var i=s["ɵunv"](e,199,0,t(e,200,0,s["ɵnov"](e,0),n.action)),o=s["ɵunv"](e,199,1,t(e,201,0,s["ɵnov"](e,1),n.resource));t(e,199,0,i,o)}))}function Gp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-nfs-form",[],null,null,null,Fp,Lg)),s["ɵdid"](1,114688,null,0,Eg,[vt.a,Hh,qt.a,qt.m,Ag.a,Ho.a,ys.a,s.ChangeDetectorRef,me.a,At.b],null,null)],(function(t,e){t(e,1,0)}),null)}var Vp=s["ɵccf"]("cd-nfs-form",Eg,Gp,{},{},[]);class zp{}var Bp=s["ɵcrt"]({encapsulation:0,styles:[[".login{color:#fff;background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat}  .login header{position:absolute;width:100vw}  .login header .navbar{padding:1rem 2rem}  .login header .navbar .dropdown-menu{margin-top:.2rem}  .login header .navbar .dropdown-menu li a:hover{background-color:#2b99a8}  .login section{display:inline-flex;width:100vw;min-height:100vh}"]],data:{}});function Yp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,13,"main",[["class","login full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,5,"header",[],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,4,"nav",[["class","navbar"]],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,0,"a",[["class","navbar-brand"]],null,null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,2,"div",[["class","form-inline"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"cd-language-selector",[],null,null,null,ct,it)),s["ɵdid"](6,114688,null,0,at,[rt.l,tt],null,null),(t()(),s["ɵeld"](7,0,null,null,6,"section",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,5,"div",[["class","container"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,4,"div",[["class","row full-height vertical-align"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,3,"div",[["class","col-sm-12 col-md-6 d-sm-block"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,0,"img",[["alt","Ceph"],["class","img-fluid mb-5"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](13,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,6,0),t(e,13,0)}),null)}function Hp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-layout",[],null,null,null,Yp,Bp)),s["ɵdid"](1,49152,null,0,zp,[],null,null)],null,null)}var Up=s["ɵccf"]("cd-login-layout",zp,Hp,{},{},[]);class Wp{}class Kp{constructor(t,e,n,a,r){this.authService=t,this.authStorageService=e,this.bsModalService=n,this.route=a,this.router=r,this.model=new Wp,this.isLoginActive=!1}ngOnInit(){if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{const t=this.bsModalService.getModalsCount();for(let n=1;n<=t;n++)this.bsModalService.hide(n);let e=null;if(-1!==window.location.hash.indexOf("access_token=")){e=window.location.hash.split("access_token=")[1];const t=window.location.toString();window.history.replaceState({},document.title,t.split("?")[0])}this.authService.check(e).subscribe(t=>{t.login_url?"#/login"===t.login_url?this.isLoginActive=!0:window.location.replace(t.login_url):(this.authStorageService.set(t.username,e,t.permissions,t.sso,t.pwdExpirationDate),this.router.navigate([""]))})}}login(){this.authService.login(this.model).subscribe(()=>{const t=J.get(this.route.snapshot.queryParams,"returnUrl","/");this.router.navigate([t])})}}var $p=s["ɵcrt"]({encapsulation:0,styles:[["cd-login h1{margin:0 0 30px}  cd-login .form-group{border-left:4px solid #fff;background-color:#333e46;height:auto;margin-bottom:2rem}  cd-login .form-group:focus-within{border-left:4px solid #ef5c55}  cd-login .form-group .invalid-feedback{display:inline}  cd-login .btn-password,   cd-login .btn-password:focus,   cd-login .form-control,   cd-login .form-control:focus{border:none;outline:0;box-shadow:none;color:#fff;background-color:#333e46;filter:none}  cd-login .placeholder{color:#90949c}  cd-login .btn-password:focus{outline-color:#2b99a8}@keyframes autofill{to{color:#fff;background-color:#333e46}}input[_ngcontent-%COMP%]:-webkit-autofill{animation-name:autofill;animation-fill-mode:both;box-shadow:0 0 0 1000px #333e46 inset;-webkit-text-fill-color:#fff;transition-property:none;border-radius:0}"]],data:{}});function Zp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username is required"]))],null,null)}function Jp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"div",[["class","invalid-feedback pl-4"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password is required"]))],null,null)}function Qp(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,46,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,45,"form",[["name","loginForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"ngSubmit"],[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0,r=t.component;return"submit"===e&&(a=!1!==s["ɵnov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,3).onReset()&&a),"ngSubmit"===e&&(a=!1!==r.login()&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,$.G,[],null,null),s["ɵdid"](3,4210688,[["loginForm",4]],0,$.t,[[8,null],[8,null]],null,{ngSubmit:"ngSubmit"}),s["ɵprd"](2048,null,$.d,null,[$.t]),s["ɵdid"](5,16384,null,0,$.s,[[4,$.d]],null,null),(t()(),s["ɵeld"](6,0,null,null,17,"div",[["class","form-group has-feedback d-flex flex-column py-3"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](7,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](10,0,null,0,1,"label",[["class","placeholder pl-4"],["for","username"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Username"])),(t()(),s["ɵeld"](12,0,null,0,9,"input",[["aria-labelledby","username"],["autofocus",""],["class","form-control pl-4"],["id","username"],["name","username"],["required",""],["type","text"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,13)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,13).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,13)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,13)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.username=n)&&a),a}),null,null)),s["ɵdid"](13,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](14,16384,null,0,$.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[$.z]),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](17,671744,[["username",4]],0,$.u,[[2,$.d],[6,$.o],[8,null],[6,$.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](19,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](20,4210688,null,0,Es.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](21,16384,null,0,Z.h,[[3,$.d],Z.a],null,null),(t()(),s["ɵand"](16777216,null,0,1,null,Zp)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](24,0,null,null,21,"div",[["class","form-group has-feedback"],["id","password-div"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](25,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](28,0,null,0,17,"div",[["class","input-group d-flex flex-nowrap"]],null,null,null,null,null)),(t()(),s["ɵeld"](29,0,null,null,13,"div",[["class","d-flex flex-column flex-grow-1 py-3"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,1,"label",[["class","placeholder pl-4"],["for","password"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password"])),(t()(),s["ɵeld"](32,0,null,null,8,"input",[["aria-labelledby","password"],["class","form-control pl-4"],["id","password"],["name","password"],["required",""],["type","password"]],[[1,"aria-invalid",0],[1,"required",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0,r=t.component;return"input"===e&&(a=!1!==s["ɵnov"](t,33)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,33).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,33)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,33)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.password=n)&&a),a}),null,null)),s["ɵdid"](33,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](34,16384,null,0,$.z,[],{required:[0,"required"]},null),s["ɵprd"](1024,null,$.o,(function(t){return[t]}),[$.z]),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](37,671744,[["password",4]],0,$.u,[[2,$.d],[6,$.o],[8,null],[6,$.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),s["ɵprd"](2048,null,$.q,null,[$.u]),s["ɵdid"](39,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](40,16384,null,0,Z.h,[[3,$.d],Z.a],null,null),(t()(),s["ɵand"](16777216,null,null,1,null,Jp)),s["ɵdid"](42,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](43,0,null,null,2,"span",[["class","form-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-outline-light btn-password h-100 px-4"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,45).onClick()&&a),a}),null,null)),s["ɵdid"](45,81920,null,0,xh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](46,0,null,null,0,"input",[["class","btn btn-secondary px-5 py-2"],["type","submit"],["value","Login"]],[[8,"disabled",0]],null,null,null,null))],(function(t,e){var n=e.component;t(e,7,0),t(e,14,0,""),t(e,17,0,"username",n.model.username),t(e,20,0,""),t(e,23,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,17).dirty)&&s["ɵnov"](e,17).invalid),t(e,25,0),t(e,34,0,""),t(e,37,0,"password",n.model.password),t(e,42,0,(s["ɵnov"](e,3).submitted||s["ɵnov"](e,37).dirty)&&s["ɵnov"](e,37).invalid),t(e,45,0,"password")}),(function(t,e){t(e,1,0,s["ɵnov"](e,5).ngClassUntouched,s["ɵnov"](e,5).ngClassTouched,s["ɵnov"](e,5).ngClassPristine,s["ɵnov"](e,5).ngClassDirty,s["ɵnov"](e,5).ngClassValid,s["ɵnov"](e,5).ngClassInvalid,s["ɵnov"](e,5).ngClassPending),t(e,6,0,s["ɵnov"](e,7).hasErrors,s["ɵnov"](e,7).hasSuccess),t(e,12,1,[s["ɵnov"](e,17).invalid,s["ɵnov"](e,14).required?"":null,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,21).validClass,s["ɵnov"](e,21).invalidClass]),t(e,24,0,s["ɵnov"](e,25).hasErrors,s["ɵnov"](e,25).hasSuccess),t(e,32,1,[s["ɵnov"](e,37).invalid,s["ɵnov"](e,34).required?"":null,s["ɵnov"](e,39).ngClassUntouched,s["ɵnov"](e,39).ngClassTouched,s["ɵnov"](e,39).ngClassPristine,s["ɵnov"](e,39).ngClassDirty,s["ɵnov"](e,39).ngClassValid,s["ɵnov"](e,39).ngClassInvalid,s["ɵnov"](e,39).ngClassPending,s["ɵnov"](e,40).validClass,s["ɵnov"](e,40).invalidClass]),t(e,46,0,s["ɵnov"](e,3).invalid)}))}function Xp(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Qp)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,1,0,e.component.isLoginActive)}),null)}function tb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login",[],null,null,null,Xp,$p)),s["ɵdid"](1,114688,null,0,Kp,[Ht.a,vt.a,Lt.b,qt.a,qt.m],null,null)],(function(t,e){t(e,1,0)}),null)}var eb=s["ɵccf"]("cd-login",Kp,tb,{},{},[]);class nb extends Th{constructor(t,e,n,a,r,i,s,o,u){super(t,e,n,a,r,i,s,o),this.i18n=t,this.actionLabels=e,this.notificationService=n,this.userService=a,this.authStorageService=r,this.formBuilder=i,this.router=s,this.passwordPolicyService=o,this.authService=u}onPasswordChange(){this.authService.logout()}onCancel(){this.authService.logout()}}var ab=s["ɵcrt"]({encapsulation:0,styles:[["cd-login-password-form h4{margin:0 0 30px}  cd-login-password-form .btn-password,   cd-login-password-form .btn-password:focus,   cd-login-password-form .form-control,   cd-login-password-form .form-control:focus{color:#fff;background-color:#333e46}  cd-login-password-form .form-control::placeholder{color:#90949c}  cd-login-password-form .btn-password:focus{outline-color:#2b99a8}  cd-login-password-form button.btn:not(:first-child){margin-left:5px}"]],data:{}});function rb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function ib(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function sb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function ob(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The old and new passwords must be different."]))],null,null)}function ub(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.component.passwordValuation)}))}function lb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function db(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Password confirmation doesn't match the new password."]))],null,null)}function cb(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,qs.a,[]),(t()(),s["ɵeld"](2,0,null,null,81,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Please set a new password."])),(t()(),s["ɵeld"](5,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You will be redirected to the login page afterwards."])),(t()(),s["ɵeld"](7,0,null,null,67,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,9).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,9).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,12).onSubmit()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,$.G,[],null,null),s["ɵdid"](9,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](11,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](12,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](13,0,null,null,19,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](14,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](17,0,null,0,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,7,"input",[["autocomplete","new-password"],["autofocus",""],["class","form-control"],["formControlName","oldpassword"],["id","oldpassword"],["placeholder","Old password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,19)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](19,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](21,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](23,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](24,4210688,null,0,Es.a,[s.ElementRef],{autofocus:[0,"autofocus"]},null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](26,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,1,"button",[["cdPasswordButton","oldpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,28).onClick()&&a),a}),null,null)),s["ɵdid"](28,81920,null,0,xh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,rb)),s["ɵdid"](30,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ib)),s["ɵdid"](32,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](33,0,null,null,22,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](34,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](37,0,null,0,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](38,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","newpassword"],["id","newpassword"],["placeholder","New password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,39)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,39).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,39)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,39)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](39,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](41,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](43,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](44,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](45,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](46,0,null,null,1,"button",[["cdPasswordButton","newpassword"],["class","btn btn-outline-light btn-password"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,47).onClick()&&a),a}),null,null)),s["ɵdid"](47,81920,null,0,xh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵeld"](48,0,null,0,1,"div",[["class","password-strength-level"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,0,"div",[["data-toggle","tooltip"]],[[8,"className",0],[8,"title",0]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,0,1,null,sb)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ob)),s["ɵdid"](53,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,ub)),s["ɵdid"](55,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](56,0,null,null,18,"div",[["class","form-group has-feedback"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](57,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](60,0,null,0,10,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](61,0,null,null,6,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","confirmnewpassword"],["id","confirmnewpassword"],["placeholder","Confirm new password..."],["type","password"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,62)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,62).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,62)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,62)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](62,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](64,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](66,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](67,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](68,0,null,null,2,"span",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,1,"button",[["cdPasswordButton","confirmnewpassword"],["class","btn btn-outline-light btn-password"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,70).onClick()&&a),a}),null,null)),s["ɵdid"](70,81920,null,0,xh.a,[s.ElementRef,s.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,lb)),s["ɵdid"](72,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,db)),s["ɵdid"](74,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](75,0,null,null,8,"div",[["class","form-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](76,0,null,null,4,"cd-submit-button",[["btnClass","btn-block"],["class","full-width"]],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](77,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"],btnClass:[1,"btnClass"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](78,0,[" "," "," "])),s["ɵppd"](79,1),s["ɵppd"](80,1),(t()(),s["ɵeld"](81,0,null,null,2,"button",[["class","btn btn-light"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onCancel()&&a),a}),null,null)),(t()(),s["ɵeld"](82,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cancel"]))],(function(t,e){var n=e.component;t(e,9,0,n.userForm),t(e,12,0,n.userForm),t(e,14,0),t(e,21,0,"oldpassword"),t(e,24,0,""),t(e,25,0,"oldpassword"),t(e,28,0,"oldpassword"),t(e,30,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"required")),t(e,32,0,n.userForm.showError("oldpassword",s["ɵnov"](e,9),"notmatch")),t(e,34,0),t(e,41,0,"newpassword"),t(e,44,0,"newpassword"),t(e,47,0,"newpassword"),t(e,51,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"required")),t(e,53,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"notmatch")),t(e,55,0,n.userForm.showError("newpassword",s["ɵnov"](e,9),"passwordPolicy")),t(e,57,0),t(e,64,0,"confirmnewpassword"),t(e,67,0,"confirmnewpassword"),t(e,70,0,"confirmnewpassword"),t(e,72,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"required")),t(e,74,0,n.userForm.showError("confirmnewpassword",s["ɵnov"](e,9),"match")),t(e,77,0,n.userForm,"btn-block")}),(function(t,e){var n=e.component;t(e,7,0,s["ɵnov"](e,11).ngClassUntouched,s["ɵnov"](e,11).ngClassTouched,s["ɵnov"](e,11).ngClassPristine,s["ɵnov"](e,11).ngClassDirty,s["ɵnov"](e,11).ngClassValid,s["ɵnov"](e,11).ngClassInvalid,s["ɵnov"](e,11).ngClassPending),t(e,13,0,s["ɵnov"](e,14).hasErrors,s["ɵnov"](e,14).hasSuccess),t(e,18,0,s["ɵnov"](e,23).ngClassUntouched,s["ɵnov"](e,23).ngClassTouched,s["ɵnov"](e,23).ngClassPristine,s["ɵnov"](e,23).ngClassDirty,s["ɵnov"](e,23).ngClassValid,s["ɵnov"](e,23).ngClassInvalid,s["ɵnov"](e,23).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,33,0,s["ɵnov"](e,34).hasErrors,s["ɵnov"](e,34).hasSuccess),t(e,38,0,s["ɵnov"](e,43).ngClassUntouched,s["ɵnov"](e,43).ngClassTouched,s["ɵnov"](e,43).ngClassPristine,s["ɵnov"](e,43).ngClassDirty,s["ɵnov"](e,43).ngClassValid,s["ɵnov"](e,43).ngClassInvalid,s["ɵnov"](e,43).ngClassPending,s["ɵnov"](e,44).validClass,s["ɵnov"](e,44).invalidClass),t(e,49,0,s["ɵinlineInterpolate"](1,"",n.passwordStrengthLevelClass,""),s["ɵinlineInterpolate"](1,"",n.passwordValuation,"")),t(e,56,0,s["ɵnov"](e,57).hasErrors,s["ɵnov"](e,57).hasSuccess),t(e,61,0,s["ɵnov"](e,66).ngClassUntouched,s["ɵnov"](e,66).ngClassTouched,s["ɵnov"](e,66).ngClassPristine,s["ɵnov"](e,66).ngClassDirty,s["ɵnov"](e,66).ngClassValid,s["ɵnov"](e,66).ngClassInvalid,s["ɵnov"](e,66).ngClassPending,s["ɵnov"](e,67).validClass,s["ɵnov"](e,67).invalidClass);var a=s["ɵunv"](e,78,0,t(e,79,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,78,1,t(e,80,0,s["ɵnov"](e,1),n.resource));t(e,78,0,a,r)}))}function fb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-login-password-form",[],null,null,null,cb,ab)),s["ɵdid"](1,49152,null,0,nb,[me.a,At.b,gt.a,Rt.a,vt.a,Ho.a,qt.m,_h.a,Ht.a],null,null)],null,null)}var hb=s["ɵccf"]("cd-login-password-form",nb,fb,{},{},[]);class gb{constructor(){}}var pb=s["ɵcrt"]({encapsulation:0,styles:[["#toast-container{margin-top:2vw}@media (max-width:1600px){  #toast-container{margin-top:2.5vw}}@media (max-width:calc(992px - 1px)){  #toast-container{margin-top:9vw}}@media (max-width:900px){  #toast-container{margin-top:10vw}}@media (max-width:319px){  #toast-container{margin-top:11vw}}@media (max-width:260px){  #toast-container{margin-top:14vw}}"]],data:{}});function bb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function mb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-blank-layout",[],null,null,null,bb,pb)),s["ɵdid"](1,49152,null,0,gb,[],null,null)],null,null)}var yb=s["ɵccf"]("cd-blank-layout",gb,mb,{},{},[]);class vb{constructor(){this.logoutUrl=`${window.location.origin}/auth/saml2/slo`}}var xb=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function _b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, the user does not exist in Ceph."])),(t()(),s["ɵeld"](4,0,null,null,4,"h4",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Return to "])),(t()(),s["ɵeld"](6,0,null,null,1,"a",[["class","sso-logout"]],[[8,"href",4]],null,null,null,null)),(t()(),s["ɵted"](-1,null,["Login Page"])),(t()(),s["ɵted"](-1,null,[". You'll be logged out from the Identity Provider when you retry logging in."])),(t()(),s["ɵeld"](9,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](10,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](13,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Nautilus Octopus"])),(t()(),s["ɵted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),s["ɵeld"](16,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 2.0"]))],null,(function(t,e){t(e,6,0,e.component.logoutUrl)}))}function Tb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-sso-not-found",[],null,null,null,_b,xb)),s["ɵdid"](1,49152,null,0,vb,[],null,null)],null,null)}var Ob=s["ɵccf"]("cd-sso-not-found",vb,Tb,{},{},[]);class wb{constructor(){this.icons=ht.a}}var Sb=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}h2[_ngcontent-%COMP%]{font-size:xx-large;font-family:monospace}i[_ngcontent-%COMP%]{font-size:200px}"]],data:{}});function Ib(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,9,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Forbidden"])),(t()(),s["ɵeld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, you are not allowed to see what you were looking for."])),(t()(),s["ɵeld"](7,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,8).onClick()&&a),a}),null,null)),s["ɵdid"](8,16384,null,0,qt.n,[qt.m,qt.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,8,0,"/login")}),(function(t,e){t(e,4,0,s["ɵinlineInterpolate"](1,"",e.component.icons.lock," text-danger"))}))}function Nb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-forbidden",[],null,null,null,Ib,Sb)),s["ɵdid"](1,49152,null,0,wb,[],null,null)],null,null)}var Cb=s["ɵccf"]("cd-forbidden",wb,Nb,{},{},[]);class Rb{constructor(){}}var Ab=s["ɵcrt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large;font-family:monospace}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function kb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,17,"div",[["class","horizontal-align vertical-align full-height"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,16,"div",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Sorry, we could not find what you were looking for."])),(t()(),s["ɵeld"](4,0,null,null,0,"img",[["class","img-fluid mx-auto rounded"],["src","assets/1500px-Southern_Keeled_Octopus.jpg"]],null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,[' "'])),(t()(),s["ɵeld"](8,0,null,null,1,"a",[["href","https://collections.museumvictoria.com.au/species/8696"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Southern Keeled Octopus, Octopus berrima"])),(t()(),s["ɵted"](-1,null,['" by Museums Victoria (Photographer: Julian Finn) is licensed under '])),(t()(),s["ɵeld"](11,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/4.0"],["rel","nofollow"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["CC BY 4.0"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,3,"button",[["class","btn btn-primary"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==s["ɵnov"](t,15).onClick()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,qt.n,[qt.m,qt.a,[8,null],s.Renderer2,s.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),s["ɵeld"](16,0,null,null,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Back"]))],(function(t,e){t(e,15,0,"/login")}),null)}function Eb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-not-found",[],null,null,null,kb,Ab)),s["ɵdid"](1,49152,null,0,Rb,[],null,null)],null,null)}var Lb=s["ɵccf"]("cd-not-found",Rb,Eb,{},{},[]),Db=n("ES0t"),Pb=n("Xg1U"),Mb=n("z5nN"),qb=n("iutN"),jb=n("EEJc"),Fb=n("PEr+"),Gb=n("a40w"),Vb=n("hfeG"),zb=n("atuK"),Bb=s["ɵcrt"]({encapsulation:0,styles:[[".about-container[_ngcontent-%COMP%]{background-color:#374249;background-image:url(ceph_background.7c127240f022e7baf57d.gif);background-position:right bottom;background-repeat:no-repeat;color:#fff;text-shadow:1px 1px #374249}.product-versions[_ngcontent-%COMP%]{margin-top:30px}.product-versions[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{margin-right:10px}.modal-header[_ngcontent-%COMP%]{border-bottom:none}.modal-header[_ngcontent-%COMP%]   .close[_ngcontent-%COMP%]{color:#fff;font-size:2em}.modal-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.ceph-logo[_ngcontent-%COMP%]{width:25%;margin-bottom:30px;object-position:-20px 0}.modal-footer[_ngcontent-%COMP%]{display:block;border-top:none;padding:15px 80px 35px}"]],data:{}});function Yb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,45,"div",[["class","about-container"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"button",[["aria-label","Close"],["class","close float-right"],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.modalRef.hide()&&a),a}),null,null)),(t()(),s["ɵeld"](3,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["×"])),(t()(),s["ɵeld"](5,0,null,null,37,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,0,"img",[["class","ceph-logo"],["src","assets/Ceph_Logo_Standard_RGB_Reversed_120411_fa.png"]],[[8,"alt",0]],null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,2,"h3",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](9,null,["",""])),(t()(),s["ɵeld"](10,0,null,null,6,"div",[["class","product-versions"]],null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Version"])),(t()(),s["ɵeld"](13,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](14,null,[" "," "," "])),(t()(),s["ɵeld"](15,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,[" "," "])),(t()(),s["ɵeld"](17,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,24,"dl",[],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Ceph Manager"])),(t()(),s["ɵeld"](21,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](22,null,["",""])),(t()(),s["ɵeld"](23,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User"])),(t()(),s["ɵeld"](25,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),(t()(),s["ɵeld"](27,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["User Role"])),(t()(),s["ɵeld"](29,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](30,null,["",""])),(t()(),s["ɵeld"](31,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser"])),(t()(),s["ɵeld"](33,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](34,null,["",""])),(t()(),s["ɵeld"](35,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser Version"])),(t()(),s["ɵeld"](37,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](38,null,["",""])),(t()(),s["ɵeld"](39,0,null,null,1,"dt",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Browser OS"])),(t()(),s["ɵeld"](41,0,null,null,1,"dd",[],null,null,null,null,null)),(t()(),s["ɵted"](42,null,["",""])),(t()(),s["ɵeld"](43,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](44,0,null,null,1,"div",[["class","text-left"]],null,null,null,null,null)),(t()(),s["ɵted"](45,null,[" "," "," "]))],null,(function(t,e){var n=e.component;t(e,6,0,s["ɵinlineInterpolate"](1,"",n.projectConstants.organization,"")),t(e,9,0,n.projectConstants.projectName),t(e,14,0,n.versionNumber,n.versionHash),t(e,16,0,n.versionName),t(e,22,0,n.hostAddr),t(e,26,0,n.modalVariables.user),t(e,30,0,n.modalVariables.role),t(e,34,0,n.modalVariables.browserName),t(e,38,0,n.modalVariables.browserVersion),t(e,42,0,n.modalVariables.browserOS),t(e,45,0,n.copyright,n.projectConstants.license)}))}function Hb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-about",[],null,null,null,Yb,Bb)),s["ɵdid"](1,245760,null,0,kt,[Lt.a,pt.a,Rt.a,vt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Ub=s["ɵccf"]("cd-about",kt,Hb,{},{},[]),Wb=s["ɵcrt"]({encapsulation:0,styles:[".dropdown[_nghost-%COMP%] {\n      z-index: 1000;\n    }\n\n    .dropdown-menu[_nghost-%COMP%], .dropdown-menu[_ngcontent-%COMP%] {\n      overflow-y: auto;\n      height: 100px;\n    }"],data:{animation:[{type:7,name:"typeaheadAnimation",definitions:[{type:0,name:"animated-down",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-down",animation:[{type:6,styles:{height:0,overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:0,name:"animated-up",styles:{type:6,styles:{height:"*",overflow:"hidden"},offset:null},options:void 0},{type:1,expr:"* => animated-up",animation:[{type:6,styles:{height:"*",overflow:"hidden"},offset:null},{type:4,styles:null,timings:"220ms cubic-bezier(0, 0, 0.2, 1)"}],options:null},{type:1,expr:"* => unanimated",animation:{type:4,styles:null,timings:"0s"},options:null}],options:{}}]}});function Kb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function $b(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"span",[],[[8,"innerHTML",1]],null,null,null,null))],null,(function(t,e){t(e,0,0,e.component.highlight(e.context.match,e.context.query))}))}function Zb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,1,"li",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function Jb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function Qb(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,4,"li",[],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"mouseenter"]],(function(t,e,n){var a=!0;return"mouseenter"===e&&(a=!1!==t.component.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"a",[["href","#"],["tabindex","-1"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.selectMatch(t.parent.context.$implicit,n)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,Jb)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,4,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,3,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function Xb(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,Zb)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qb)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function tm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[1,0],["ulElement",1]],null,2,"ul",[["class","dropdown-menu"]],[[4,"overflow-y",null],[4,"height",null]],null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Xb)),s["ɵdid"](2,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){t(e,2,0,e.component.matches)}),(function(t,e){var n=e.component;t(e,0,0,n.needScrollbar?"scroll":"auto",n.needScrollbar?n.guiHeight:"auto")}))}function em(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"h6",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit)}))}function nm(t){return s["ɵvid"](0,[(t()(),s["ɵand"](0,null,null,0))],null,null)}function am(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,[[2,0],["liElements",1]],null,3,"button",[["class","dropdown-item"]],[[24,"@typeaheadAnimation",0],[2,"active",null]],[[null,"click"],[null,"mouseenter"]],(function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.selectMatch(t.parent.context.$implicit,n)&&a),"mouseenter"===e&&(a=!1!==r.selectActive(t.parent.context.$implicit)&&a),a}),null,null)),(t()(),s["ɵand"](16777216,null,null,2,null,nm)),s["ɵdid"](2,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](3,{item:0,index:1,match:2,query:3})],(function(t,e){var n=e.component,a=t(e,3,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,2,0,a,n.itemTemplate||s["ɵnov"](e.parent.parent.parent,5))}),(function(t,e){var n=e.component;t(e,0,0,n.animationState,n.isActive(e.parent.context.$implicit))}))}function rm(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,em)),s["ɵdid"](1,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,am)),s["ɵdid"](3,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){var n=e.context.$implicit.isHeader();t(e,1,0,n);var a=!e.context.$implicit.isHeader();t(e,3,0,a)}),null)}function im(t){return s["ɵvid"](0,[(t()(),s["ɵand"](16777216,null,null,1,null,rm)),s["ɵdid"](1,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](0,null,null,0))],(function(t,e){t(e,1,0,e.component.matches)}),null)}function sm(t){return s["ɵvid"](0,[s["ɵqud"](671088640,1,{ulElement:0}),s["ɵqud"](671088640,2,{liElements:1}),(t()(),s["ɵand"](16777216,null,null,2,null,Kb)),s["ɵdid"](3,540672,null,0,i.NgTemplateOutlet,[s.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),s["ɵpod"](4,{matches:0,itemTemplate:1,query:2}),(t()(),s["ɵand"](0,[["bsItemTemplate",2]],null,0,null,$b)),(t()(),s["ɵand"](0,[["bs3Template",2]],null,0,null,tm)),(t()(),s["ɵand"](0,[["bs4Template",2]],null,0,null,im))],(function(t,e){var n=e.component,a=t(e,4,0,n.matches,n.itemTemplate,n.query);t(e,3,0,a,n.optionsListTemplate||s["ɵnov"](e,n.isBs4?7:6))}),null)}function om(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"typeahead-container",[["class","dropdown open bottom"],["style","position: absolute;display: block;"]],[[2,"dropdown-menu",null],[4,"height",null],[4,"visibility",null],[2,"dropup",null]],[[null,"mouseleave"],[null,"blur"]],(function(t,e,n){var a=!0;return"mouseleave"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,1).focusLost()&&a),a}),sm,Wb)),s["ɵdid"](1,180224,null,0,hg,[la.a,s.Renderer2,s.ElementRef,s.ChangeDetectorRef],null,null)],null,(function(t,e){t(e,0,0,s["ɵnov"](e,1).isBs4,s["ɵnov"](e,1).isBs4&&s["ɵnov"](e,1).needScrollbar?s["ɵnov"](e,1).guiHeight:"auto","inherit",s["ɵnov"](e,1).dropup)}))}var um=s["ɵccf"]("typeahead-container",hg,om,{},{},[]),lm=n("ajRT"),dm=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function cm(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Deep "]))],null,null)}function fm(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["deep "]))],null,null)}function hm(t){return s["ɵvid"](0,[s["ɵpid"](0,ps.a,[]),(t()(),s["ɵeld"](1,0,null,null,33,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](2,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSDs "])),(t()(),s["ɵeld"](5,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](6,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cm)),s["ɵdid"](8,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["Scrub"])),(t()(),s["ɵeld"](10,0,null,1,24,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,23,"form",[["name","scrubForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,13).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,16).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,$.G,[],null,null),s["ɵdid"](13,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](15,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](16,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](17,0,null,null,11,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,10,"p",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["You are about to apply a "])),(t()(),s["ɵeld"](20,0,null,null,3,null,null,null,null,null,null,null)),s["ɵdid"](21,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fm)),s["ɵdid"](23,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵted"](-1,null,["scrub to the OSD(s): "])),(t()(),s["ɵeld"](25,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](26,null,["",""])),s["ɵppd"](27,1),(t()(),s["ɵted"](-1,null,["."])),(t()(),s["ɵeld"](29,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](30,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.scrub()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](31,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"])),(t()(),s["ɵeld"](33,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Ps.b,Ps.a)),s["ɵdid"](34,49152,null,0,Ms.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,6,0,n.deep),t(e,8,0,"1"),t(e,13,0,n.scrubForm),t(e,16,0,n.scrubForm),t(e,21,0,n.deep),t(e,23,0,"1"),t(e,31,0,n.scrubForm),t(e,34,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,11,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending);var a=s["ɵunv"](e,26,0,t(e,27,0,s["ɵnov"](e,0),n.selected));t(e,26,0,a)}))}function gm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-scrub-modal",[],null,null,null,hm,dm)),s["ɵdid"](1,114688,null,0,Wo,[Lt.a,wi,gt.a,me.a,ps.a],null,null)],(function(t,e){t(e,1,0)}),null)}var pm=s["ɵccf"]("cd-osd-scrub-modal",Wo,gm,{},{},[]),bm=s["ɵcrt"]({encapsulation:0,styles:[[".osd-modal[_ngcontent-%COMP%]   .oa-hr-small[_ngcontent-%COMP%]{margin:5px}"]],data:{}});function mm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","oa-hr-small"]],null,null,null,null,null))],null,null)}function ym(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"checked",0],[8,"name",0],[8,"id",0],[8,"disabled",0],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"]],(function(t,e,n){var a=!0;return"change"===e&&(a=0!=(t.context.$implicit.value=!t.context.$implicit.value)&&a),a}),null,null)),s["ɵdid"](2,16384,null,0,Z.h,[[3,$.d],Z.a],null,null),(t()(),s["ɵeld"](3,0,null,null,5,"label",[["class","custom-control-label"],["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),s["ɵted"](5,null,["",""])),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,1,"span",[["class","form-text text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,["",""])),(t()(),s["ɵand"](16777216,null,null,1,null,mm)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,10,0,!e.context.last)}),(function(t,e){t(e,1,0,e.context.$implicit.value,e.context.$implicit.code,e.context.$implicit.code,e.context.$implicit.disabled,s["ɵnov"](e,2).validClass,s["ɵnov"](e,2).invalidClass),t(e,3,0,e.context.$implicit.code),t(e,5,0,e.context.$implicit.name),t(e,8,0,e.context.$implicit.description)}))}function vm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](1,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdFlagsForm)}),null)}function xm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,19,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](1,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Cluster-wide OSD Flags"])),(t()(),s["ɵeld"](4,0,null,1,15,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,14,"form",[["name","osdFlagsForm"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ym)),s["ɵdid"](13,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵeld"](14,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](15,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,vm)),s["ɵdid"](17,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](18,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Ps.b,Ps.a)),s["ɵdid"](19,49152,null,0,Ms.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.osdFlagsForm),t(e,10,0,n.osdFlagsForm),t(e,13,0,n.flags),t(e,17,0,n.permissions.osd.update),t(e,19,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending)}))}function _m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-flags-modal",[],null,null,null,xm,bm)),s["ɵdid"](1,114688,null,0,jo,[Lt.a,vt.a,wi,gt.a,me.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Tm=s["ɵccf"]("cd-osd-flags-modal",jo,_m,{},{},[]),Om=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function wm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit.name),t(e,2,0,e.context.$implicit.name)}),(function(t,e){t(e,3,0,e.context.$implicit.text)}))}function Sm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function Im(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](1,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](2,0,["",""]))],null,(function(t,e){t(e,2,0,e.parent.context.$implicit.value.desc)}))}function Nm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function Cm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["",""]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.patternHelpText)}))}function Rm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.maxValue)}))}function Am(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.context.$implicit.value.minValue)}))}function km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,28,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-sm-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,4,"span",[],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](7,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpod"](8,{required:0}),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,Im)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,16,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,7,"input",[["class","form-control"],["type","number"]],[[8,"id",0],[8,"readOnly",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,14)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,14)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,14)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),a}),null,null)),s["ɵdid"](14,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](15,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](17,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](19,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](20,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Nm)),s["ɵdid"](22,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Cm)),s["ɵdid"](24,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Rm)),s["ɵdid"](26,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Am)),s["ɵdid"](28,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0);var a=t(e,8,0,n.osdRecvSpeedForm.getValue("customizePriority"));t(e,7,0,a),t(e,11,0,e.context.$implicit.value.desc),t(e,17,0,e.context.$implicit.key),t(e,20,0,e.context.$implicit.key),t(e,22,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"required")),t(e,24,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"pattern")),t(e,26,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"max")),t(e,28,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,s["ɵnov"](e.parent,7),"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.context.$implicit.key),t(e,9,0,e.context.$implicit.value.text),t(e,13,1,[e.context.$implicit.key,!n.osdRecvSpeedForm.getValue("customizePriority"),s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,20).validClass,s["ɵnov"](e,20).invalidClass])}))}function Em(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](1,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Submit"]))],(function(t,e){t(e,1,0,e.component.osdRecvSpeedForm)}),null)}function Lm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,53,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](1,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD Recovery Priority"])),(t()(),s["ɵeld"](4,0,null,1,49,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,48,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,36,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,17,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](13,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","col-form-label col-sm-6 required"],["for","priority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Priority"])),(t()(),s["ɵeld"](18,0,null,0,11,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,8,"select",[["class","form-control custom-select"],["formControlName","priority"],["id","priority"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,20).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),"change"===e&&(a=!1!==r.onPriorityChange(n.target.value)&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](22,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](24,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,wm)),s["ɵdid"](27,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Sm)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](30,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](31,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](34,0,null,0,10,"div",[["class","offset-sm-6 col-sm-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](35,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](36,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","customizePriority"],["id","customizePriority"],["name","customizePriority"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==s["ɵnov"](t,37).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,37).onTouched()&&a),"change"===e&&(a=!1!==r.onCustomizePriorityChange()&&a),a}),null,null)),s["ɵdid"](37,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](39,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](41,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](42,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](43,0,null,null,1,"label",[["class","custom-control-label"],["for","customizePriority"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Customize priority values"])),(t()(),s["ɵand"](16777216,null,null,2,null,km)),s["ɵdid"](46,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),s["ɵpid"](0,i.KeyValuePipe,[s.KeyValueDiffers]),(t()(),s["ɵeld"](48,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](49,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Em)),s["ɵdid"](51,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](52,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Ps.b,Ps.a)),s["ɵdid"](53,49152,null,0,Ms.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.osdRecvSpeedForm),t(e,10,0,n.osdRecvSpeedForm),t(e,13,0),t(e,22,0,"priority"),t(e,25,0,"priority"),t(e,27,0,n.priorities),t(e,29,0,n.osdRecvSpeedForm.showError("priority",s["ɵnov"](e,7),"required")),t(e,31,0),t(e,39,0,"customizePriority"),t(e,42,0,"customizePriority"),t(e,46,0,s["ɵunv"](e,46,0,s["ɵnov"](e,47).transform(n.priorityAttrs))),t(e,51,0,n.permissions.configOpt.update),t(e,53,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,30,0,s["ɵnov"](e,31).hasErrors,s["ɵnov"](e,31).hasSuccess),t(e,36,0,s["ɵnov"](e,41).ngClassUntouched,s["ɵnov"](e,41).ngClassTouched,s["ɵnov"](e,41).ngClassPristine,s["ɵnov"](e,41).ngClassDirty,s["ɵnov"](e,41).ngClassValid,s["ɵnov"](e,41).ngClassInvalid,s["ɵnov"](e,41).ngClassPending,s["ɵnov"](e,42).validClass,s["ɵnov"](e,42).invalidClass)}))}function Dm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-recv-speed-modal",[],null,null,null,Lm,Om)),s["ɵdid"](1,114688,null,0,Yo,[Lt.a,vt.a,Fo.a,gt.a,me.a,wi],null,null)],(function(t,e){t(e,1,0)}),null)}var Pm=s["ɵccf"]("cd-osd-recv-speed-modal",Yo,Dm,{},{},[]),Mm=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function qm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required."]))],null,null)}function jm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["The value needs to be between 0 and 1."]))],null,null)}function Fm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,qm)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,jm)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,2,0,null==n.weight.errors?null:n.weight.errors.required),t(e,4,0,(null==n.weight.errors?null:n.weight.errors.max)||(null==n.weight.errors?null:n.weight.errors.min))}),null)}function Gm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,31,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](1,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Reweight OSD: ",""])),(t()(),s["ɵeld"](4,0,null,1,27,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,26,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,null,0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,14,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"label",[["class","col-sm-2 col-form-label"],["for","weight"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Weight"])),(t()(),s["ɵeld"](15,0,null,null,10,"div",[["class","col-sm-10"]],null,null,null,null,null)),(t()(),s["ɵeld"](16,0,null,null,7,"input",[["class","form-control"],["formControlName","weight"],["id","weight"],["max","1"],["min","0"],["step","0.1"],["type","number"]],[[8,"value",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,17)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,17).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,17)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,17)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,18).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,18).onTouched()&&a),a}),null,null)),s["ɵdid"](17,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵdid"](18,16384,null,0,$.w,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t,e){return[t,e]}),[$.e,$.w]),s["ɵdid"](20,671744,null,0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](22,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](23,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Fm)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.reweight()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](28,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](-1,0,["Reweight"])),(t()(),s["ɵeld"](30,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Ps.b,Ps.a)),s["ɵdid"](31,49152,null,0,Ms.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.reweightForm),t(e,10,0,n.reweightForm),t(e,20,0,"weight"),t(e,23,0,"weight"),t(e,25,0,n.weight.errors),t(e,28,0,n.reweightForm,n.reweightForm.invalid),t(e,31,0,"Cancel",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.osdId),t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,16,0,n.currentWeight,s["ɵnov"](e,22).ngClassUntouched,s["ɵnov"](e,22).ngClassTouched,s["ɵnov"](e,22).ngClassPristine,s["ɵnov"](e,22).ngClassDirty,s["ɵnov"](e,22).ngClassValid,s["ɵnov"](e,22).ngClassInvalid,s["ɵnov"](e,22).ngClassPending,s["ɵnov"](e,23).validClass,s["ɵnov"](e,23).invalidClass)}))}function Vm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-reweight-modal",[],null,null,null,Gm,Mm)),s["ɵdid"](1,114688,null,0,Uo,[Lt.a,wi,Ho.a],null,null)],(function(t,e){t(e,1,0)}),null)}var zm=s["ɵccf"]("cd-osd-reweight-modal",Uo,Vm,{},{},[]),Bm=s["ɵcrt"]({encapsulation:0,styles:[[".custom-checkbox[_ngcontent-%COMP%]   input[_ngcontent-%COMP%], .custom-checkbox[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{cursor:pointer}.col-form-label[_ngcontent-%COMP%]{text-align:left}"]],data:{}});function Ym(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](1,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function Hm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,21,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,7,"label",[["class","col-form-label col-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,1,"b",[],null,null,null,null,null)),(t()(),s["ɵted"](6,null,["",""])),(t()(),s["ɵeld"](7,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](9,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,Ym)),s["ɵdid"](11,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](12,0,null,0,9,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,8,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](14,0,null,null,6,"input",[["class","custom-control-input"],["type","checkbox"]],[[8,"id",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,15).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,15).onTouched()&&a),a}),null,null)),s["ɵdid"](15,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](17,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](19,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](20,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](21,0,null,null,0,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null))],(function(t,e){t(e,1,0),t(e,11,0,e.parent.context.$implicit.long_desc),t(e,17,0,e.parent.context.$implicit.name),t(e,20,0,e.parent.context.$implicit.name)}),(function(t,e){t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,6,0,e.parent.context.$implicit.text),t(e,9,0,e.parent.context.$implicit.desc),t(e,14,0,e.parent.context.$implicit.name,s["ɵnov"](e,19).ngClassUntouched,s["ɵnov"](e,19).ngClassTouched,s["ɵnov"](e,19).ngClassPristine,s["ɵnov"](e,19).ngClassDirty,s["ɵnov"](e,19).ngClassValid,s["ɵnov"](e,19).ngClassInvalid,s["ɵnov"](e,19).ngClassPending,s["ɵnov"](e,20).validClass,s["ɵnov"](e,20).invalidClass),t(e,21,0,e.parent.context.$implicit.name)}))}function Um(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"cd-helper",[],null,null,null,uu.b,uu.a)),s["ɵdid"](1,49152,null,0,lu.a,[],null,null),(t()(),s["ɵted"](2,0,[" ",""]))],null,(function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)}))}function Wm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"div",[["class","input-group-append"]],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,4,"button",[["class","btn btn-light"],["data-toggle","button"],["title","Remove the custom configuration value. The default configuration will be inherited and used instead."],["type","button"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetValue(t.parent.parent.context.$implicit.name)&&a),a}),null,null)),(t()(),s["ɵeld"](2,0,null,null,3,"i",[["aria-hidden","true"]],null,null,null,null,null)),s["ɵprd"](512,null,i["ɵNgClassImpl"],i["ɵNgClassR2Impl"],[s.IterableDiffers,s.KeyValueDiffers,s.ElementRef,s.Renderer2]),s["ɵdid"](4,278528,null,0,i.NgClass,[i["ɵNgClassImpl"]],{ngClass:[0,"ngClass"]},null),s["ɵpad"](5,1)],(function(t,e){var n=t(e,5,0,e.component.icons.erase);t(e,4,0,n)}),null)}function Km(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function $m(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" ",""]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)}))}function Zm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too high! It must not be greater than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.maxValue)}))}function Jm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,["The entered value is too low! It must not be lower than ","."]))],null,(function(t,e){t(e,1,0,e.parent.parent.context.$implicit.minValue)}))}function Qm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,29,"div",[["class","form-group row pt-2"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](1,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](4,0,null,0,6,"label",[["class","col-6 col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),s["ɵted"](5,null,[""," "])),(t()(),s["ɵeld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),s["ɵeld"](7,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),s["ɵted"](8,null,[" "," "])),(t()(),s["ɵand"](16777216,null,null,1,null,Um)),s["ɵdid"](10,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](11,0,null,0,18,"div",[["class","col-6"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,6,"input",[["class","form-control"]],[[8,"type",0],[8,"id",0],[8,"placeholder",0],[8,"step",0],[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,14)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,14).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,14)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,14)._compositionEnd(n.target.value)&&a),a}),null,null)),s["ɵdid"](14,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](16,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](18,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](19,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Wm)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Km)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,$m)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Zm)),s["ɵdid"](27,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Jm)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){var n=e.component;t(e,1,0),t(e,10,0,e.parent.context.$implicit.long_desc),t(e,16,0,e.parent.context.$implicit.name),t(e,19,0,e.parent.context.$implicit.name),t(e,21,0,n.optionsFormShowReset),t(e,23,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"pattern")),t(e,25,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"invalidUuid")),t(e,27,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"max")),t(e,29,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"min"))}),(function(t,e){var n=e.component;t(e,0,0,s["ɵnov"](e,1).hasErrors,s["ɵnov"](e,1).hasSuccess),t(e,4,0,e.parent.context.$implicit.name),t(e,5,0,e.parent.context.$implicit.text),t(e,8,0,e.parent.context.$implicit.desc),t(e,13,1,[e.parent.context.$implicit.additionalTypeInfo.inputType,e.parent.context.$implicit.name,e.parent.context.$implicit.additionalTypeInfo.humanReadable,n.getStep(e.parent.context.$implicit.type,n.optionsForm.getValue(e.parent.context.$implicit.name)),s["ɵnov"](e,18).ngClassUntouched,s["ɵnov"](e,18).ngClassTouched,s["ɵnov"](e,18).ngClassPristine,s["ɵnov"](e,18).ngClassDirty,s["ɵnov"](e,18).ngClassValid,s["ɵnov"](e,18).ngClassInvalid,s["ɵnov"](e,18).ngClassPending,s["ɵnov"](e,19).validClass,s["ɵnov"](e,19).invalidClass])}))}function Xm(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,0,"hr",[["class","my-2"]],null,null,null,null,null))],null,null)}function ty(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,Hm)),s["ɵdid"](2,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Qm)),s["ɵdid"](4,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,Xm)),s["ɵdid"](6,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null)],(function(t,e){t(e,2,0,"bool"===e.context.$implicit.type),t(e,4,0,"bool"!==e.context.$implicit.type),t(e,6,0,!e.context.last)}),null)}function ey(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,6,"div",[],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,1).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,4).onSubmit()&&a),a}),null,null)),s["ɵdid"](1,540672,null,0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](3,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](4,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ty)),s["ɵdid"](6,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.optionsFormGroup),t(e,4,0,n.optionsFormGroup),t(e,6,0,n.options)}),(function(t,e){t(e,0,0,s["ɵnov"](e,3).ngClassUntouched,s["ɵnov"](e,3).ngClassTouched,s["ɵnov"](e,3).ngClassPristine,s["ɵnov"](e,3).ngClassDirty,s["ɵnov"](e,3).ngClassValid,s["ɵnov"](e,3).ngClassInvalid,s["ɵnov"](e,3).ngClassPending)}))}var ny=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ay(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"a",[["class","pull-right margin-right-md"]],null,[[null,"click"]],(function(t,e,n){var a=!0;return"click"===e&&(a=0!=(t.component.advancedEnabled=!0)&&a),a}),null,null)),(t()(),s["ɵted"](-1,null,["Advanced..."]))],null,null)}function ry(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Advanced configuration options"])),(t()(),s["ɵeld"](3,0,null,null,1,"cd-config-option",[],null,null,null,ey,Bm)),s["ɵdid"](4,114688,[[2,4],["advancedOptionsValues",4]],0,Vo,[Fo.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.advancedOptions,n.osdPgScrubForm,s["ɵnov"](e.parent,13),"advancedFormGroup")}),null)}function iy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](1,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](2,0,[""," ",""])),s["ɵppd"](3,1),s["ɵppd"](4,1)],(function(t,e){t(e,1,0,e.component.osdPgScrubForm)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,2,0,t(e,3,0,s["ɵnov"](e.parent,0),n.action)),r=s["ɵunv"](e,2,1,t(e,4,0,s["ɵnov"](e.parent,1),n.resource));t(e,2,0,a,r)}))}function sy(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵpid"](0,qs.a,[]),s["ɵqud"](402653184,1,{basicOptionsValues:0}),s["ɵqud"](671088640,2,{advancedOptionsValues:0}),(t()(),s["ɵeld"](4,0,null,null,27,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](5,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](6,0,null,0,3,null,null,null,null,null,null,null)),(t()(),s["ɵted"](7,null,[""," ",""])),s["ɵppd"](8,1),s["ɵppd"](9,1),(t()(),s["ɵeld"](10,0,null,1,21,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](11,0,null,null,20,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,13).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,16).onSubmit()&&a),a}),null,null)),s["ɵdid"](12,16384,null,0,$.G,[],null,null),s["ɵdid"](13,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](15,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](16,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](17,0,null,null,8,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),s["ɵeld"](18,0,null,null,1,"cd-config-option",[],null,null,null,ey,Bm)),s["ɵdid"](19,114688,[[1,4],["basicOptionsValues",4]],0,Vo,[Fo.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null),(t()(),s["ɵeld"](20,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),s["ɵeld"](21,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,ay)),s["ɵdid"](23,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,ry)),s["ɵdid"](25,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](26,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](27,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,iy)),s["ɵdid"](29,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](30,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](31,49152,null,0,Ms.a,[i.Location,At.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,5,0,n.bsModalRef),t(e,13,0,n.osdPgScrubForm),t(e,16,0,n.osdPgScrubForm),t(e,19,0,n.basicOptions,n.osdPgScrubForm,s["ɵnov"](e,13),"basicFormGroup"),t(e,23,0,!n.advancedEnabled),t(e,25,0,n.advancedEnabled),t(e,29,0,n.permissions.configOpt.update),t(e,31,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component,a=s["ɵunv"](e,7,0,t(e,8,0,s["ɵnov"](e,0),n.action)),r=s["ɵunv"](e,7,1,t(e,9,0,s["ɵnov"](e,1),n.resource));t(e,7,0,a,r),t(e,11,0,s["ɵnov"](e,15).ngClassUntouched,s["ɵnov"](e,15).ngClassTouched,s["ɵnov"](e,15).ngClassPristine,s["ɵnov"](e,15).ngClassDirty,s["ɵnov"](e,15).ngClassValid,s["ɵnov"](e,15).ngClassInvalid,s["ɵnov"](e,15).ngClassPending)}))}function oy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-pg-scrub-modal",[],null,null,null,sy,ny)),s["ɵdid"](1,49152,null,0,Bo,[Lt.a,vt.a,gt.a,me.a,At.b],null,null)],null,null)}var uy=s["ɵccf"]("cd-osd-pg-scrub-modal",Bo,oy,{},{},[]),ly=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function dy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](1,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{value:[0,"value"]},null),s["ɵdid"](2,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),s["ɵted"](3,null,[" "," "]))],(function(t,e){t(e,1,0,e.context.$implicit),t(e,2,0,e.context.$implicit)}),(function(t,e){t(e,3,0,e.context.$implicit)}))}function cy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function fy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["This field is required!"]))],null,null)}function hy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),s["ɵted"](2,null,[" "," "]))],null,(function(t,e){var n=e.component;t(e,0,0,s["ɵinlineInterpolate"](1,"cd-col-form-offset ",n.matcherMatch.cssClass,"")),t(e,1,0,s["ɵinlineInterpolate"](1,"text-muted ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)}))}function gy(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Update"]))],null,null)}function py(t){return s["ɵvid"](0,[(t()(),s["ɵted"](-1,null,["Add"]))],null,null)}function by(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,79,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](1,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Matcher"])),(t()(),s["ɵeld"](4,0,null,1,75,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,74,"form",[["class","form"],["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,7).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit()&&a),a}),null,null)),s["ɵdid"](6,16384,null,0,$.G,[],null,null),s["ɵdid"](7,540672,[["formDir",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](9,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](10,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](11,0,null,null,56,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](12,0,null,null,21,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](13,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,1,{FormControlNames:1}),s["ɵqud"](603979776,2,{messagesBlock:0}),(t()(),s["ɵeld"](16,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","name"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Name"])),(t()(),s["ɵeld"](18,0,null,0,15,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,12,"select",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,20).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,20).onTouched()&&a),a}),null,null)),s["ɵdid"](20,16384,null,0,$.A,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.A]),s["ɵdid"](22,671744,[[1,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](24,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](25,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](26,0,null,null,3,"option",[],null,null,null,null,null)),s["ɵdid"](27,147456,null,0,$.v,[s.ElementRef,s.Renderer2,[2,$.A]],{ngValue:[0,"ngValue"]},null),s["ɵdid"](28,147456,null,0,$.F,[s.ElementRef,s.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),s["ɵted"](-1,null,["-- Select an attribute to match against --"])),(t()(),s["ɵand"](16777216,null,null,1,null,dy)),s["ɵdid"](31,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,cy)),s["ɵdid"](33,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](34,0,null,null,18,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](35,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,3,{FormControlNames:1}),s["ɵqud"](603979776,4,{messagesBlock:0}),(t()(),s["ɵeld"](38,0,null,0,1,"label",[["class","cd-col-form-label required"],["for","value"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Value"])),(t()(),s["ɵeld"](40,0,null,0,10,"div",[["class","cd-col-form-input"]],null,null,null,null,null)),(t()(),s["ɵeld"](41,16777216,null,null,7,"input",[["class","form-control"],["formControlName","value"],["id","value"],["type","text"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],(function(t,e,n){var a=!0;return"input"===e&&(a=!1!==s["ɵnov"](t,42)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,42).onTouched()&&a),"compositionstart"===e&&(a=!1!==s["ɵnov"](t,42)._compositionStart()&&a),"compositionend"===e&&(a=!1!==s["ɵnov"](t,42)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==s["ɵnov"](t,47).onInput(n)&&a),"keyup"===e&&(a=!1!==s["ɵnov"](t,47).onChange(n)&&a),"click"===e&&(a=!1!==s["ɵnov"](t,47).onFocus()&&a),"focus"===e&&(a=!1!==s["ɵnov"](t,47).onFocus()&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,47).onBlur()&&a),"keydown"===e&&(a=!1!==s["ɵnov"](t,47).onKeydown(n)&&a),a}),null,null)),s["ɵdid"](42,16384,null,0,$.e,[s.Renderer2,s.ElementRef,[2,$.b]],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.e]),s["ɵdid"](44,671744,[[3,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](46,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](47,212992,null,0,pg,[W.a,gg,s.ChangeDetectorRef,s.ElementRef,$.q,s.Renderer2,s.ViewContainerRef],{typeahead:[0,"typeahead"],typeaheadMinLength:[1,"typeaheadMinLength"]},null),s["ɵdid"](48,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,fy)),s["ɵdid"](50,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵand"](16777216,null,0,1,null,hy)),s["ɵdid"](52,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](53,0,null,null,14,"div",[["class","form-group row"]],[[2,"has-error",null],[2,"has-success",null]],null,null,ks.b,ks.a)),s["ɵdid"](54,1163264,null,2,Z.c,[s.ElementRef,Z.g],null,null),s["ɵqud"](603979776,5,{FormControlNames:1}),s["ɵqud"](603979776,6,{messagesBlock:0}),(t()(),s["ɵeld"](57,0,null,0,10,"div",[["class","cd-col-form-offset"]],null,null,null,null,null)),(t()(),s["ɵeld"](58,0,null,null,9,"div",[["class","custom-control custom-checkbox"]],null,null,null,null,null)),(t()(),s["ɵeld"](59,0,null,null,6,"input",[["class","custom-control-input"],["formControlName","isRegex"],["id","is-regex"],["name","is-regex"],["type","checkbox"]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null],[2,"is-valid",null],[2,"is-invalid",null]],[[null,"change"],[null,"blur"]],(function(t,e,n){var a=!0;return"change"===e&&(a=!1!==s["ɵnov"](t,60).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==s["ɵnov"](t,60).onTouched()&&a),a}),null,null)),s["ɵdid"](60,16384,null,0,$.c,[s.Renderer2,s.ElementRef],null,null),s["ɵprd"](1024,null,$.p,(function(t){return[t]}),[$.c]),s["ɵdid"](62,671744,[[5,4]],0,$.j,[[3,$.d],[8,null],[8,null],[6,$.p],[2,$.E]],{name:[0,"name"]},null),s["ɵprd"](2048,null,$.q,null,[$.j]),s["ɵdid"](64,16384,null,0,$.r,[[4,$.q]],null,null),s["ɵdid"](65,16384,null,0,Z.h,[[3,$.d],Z.a],{formControlName:[0,"formControlName"]},null),(t()(),s["ɵeld"](66,0,null,null,1,"label",[["class","custom-control-label"],["for","is-regex"]],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["Use regular expression"])),(t()(),s["ɵeld"](68,0,null,null,11,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](69,0,null,null,8,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](70,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵeld"](71,0,null,0,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](72,0,null,null,5,null,null,null,null,null,null,null)),s["ɵdid"](73,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,gy)),s["ɵdid"](75,278528,null,0,i.NgSwitchCase,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),s["ɵand"](16777216,null,null,1,null,py)),s["ɵdid"](77,16384,null,0,i.NgSwitchDefault,[s.ViewContainerRef,s.TemplateRef,i.NgSwitch],null,null),(t()(),s["ɵeld"](78,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,Ps.b,Ps.a)),s["ɵdid"](79,49152,null,0,Ms.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,7,0,n.form),t(e,10,0,n.form),t(e,13,0),t(e,22,0,"name"),t(e,25,0,"name"),t(e,27,0,null),t(e,28,0,null),t(e,31,0,n.nameAttributes),t(e,33,0,n.form.showError("name",s["ɵnov"](e,7),"required")),t(e,35,0),t(e,44,0,"value"),t(e,47,0,n.possibleValues,0),t(e,48,0,"value"),t(e,50,0,n.form.showError("value",s["ɵnov"](e,7),"required")),t(e,52,0,n.form.getValue("value")&&!n.form.getValue("isRegex")&&n.matcherMatch),t(e,54,0),t(e,62,0,"isRegex"),t(e,65,0,"isRegex"),t(e,70,0,n.form),t(e,73,0,n.editMode),t(e,75,0,"1"),t(e,79,0,"Close",n.bsModalRef.hide)}),(function(t,e){t(e,5,0,s["ɵnov"](e,9).ngClassUntouched,s["ɵnov"](e,9).ngClassTouched,s["ɵnov"](e,9).ngClassPristine,s["ɵnov"](e,9).ngClassDirty,s["ɵnov"](e,9).ngClassValid,s["ɵnov"](e,9).ngClassInvalid,s["ɵnov"](e,9).ngClassPending),t(e,12,0,s["ɵnov"](e,13).hasErrors,s["ɵnov"](e,13).hasSuccess),t(e,19,0,s["ɵnov"](e,24).ngClassUntouched,s["ɵnov"](e,24).ngClassTouched,s["ɵnov"](e,24).ngClassPristine,s["ɵnov"](e,24).ngClassDirty,s["ɵnov"](e,24).ngClassValid,s["ɵnov"](e,24).ngClassInvalid,s["ɵnov"](e,24).ngClassPending,s["ɵnov"](e,25).validClass,s["ɵnov"](e,25).invalidClass),t(e,34,0,s["ɵnov"](e,35).hasErrors,s["ɵnov"](e,35).hasSuccess),t(e,41,0,s["ɵnov"](e,46).ngClassUntouched,s["ɵnov"](e,46).ngClassTouched,s["ɵnov"](e,46).ngClassPristine,s["ɵnov"](e,46).ngClassDirty,s["ɵnov"](e,46).ngClassValid,s["ɵnov"](e,46).ngClassInvalid,s["ɵnov"](e,46).ngClassPending,s["ɵnov"](e,48).validClass,s["ɵnov"](e,48).invalidClass),t(e,53,0,s["ɵnov"](e,54).hasErrors,s["ɵnov"](e,54).hasSuccess),t(e,59,0,s["ɵnov"](e,64).ngClassUntouched,s["ɵnov"](e,64).ngClassTouched,s["ɵnov"](e,64).ngClassPristine,s["ɵnov"](e,64).ngClassDirty,s["ɵnov"](e,64).ngClassValid,s["ɵnov"](e,64).ngClassInvalid,s["ɵnov"](e,64).ngClassPending,s["ɵnov"](e,65).validClass,s["ɵnov"](e,65).invalidClass)}))}function my(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-silence-matcher-modal",[],null,null,null,by,ly)),s["ɵdid"](1,49152,null,0,Ac,[Ho.a,Cc,Lt.a],null,null)],null,null)}var yy=s["ɵccf"]("cd-silence-matcher-modal",Ac,my,{},{submitAction:"submitAction"},[]),vy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function xy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"span",[["class","badge badge-dark ml-2"]],null,null,null,null,null)),(t()(),s["ɵted"](1,null,[" "," "]))],null,(function(t,e){t(e,1,0,e.context.$implicit)}))}function _y(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,5,"cd-alert-panel",[["size","slim"],["type","warning"]],null,null,null,Yr.b,Yr.a)),s["ɵdid"](1,114688,null,0,Hr.a,[me.a],{type:[0,"type"],size:[1,"size"],showTitle:[2,"showTitle"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["At least one of these filters must be applied in order to proceed:"])),(t()(),s["ɵand"](16777216,null,0,1,null,xy)),s["ɵdid"](5,278528,null,0,i.NgForOf,[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],(function(t,e){var n=e.component;t(e,1,0,"warning","slim",!1),t(e,5,0,n.requiredFilters)}),null)}function Ty(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),s["ɵeld"](1,0,null,null,3,"p",[["class","text-center"]],null,null,null,null,null)),(t()(),s["ɵeld"](2,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),s["ɵted"](3,null,["Number of devices: ",". Raw capacity: ","."])),s["ɵppd"](4,1)],null,(function(t,e){var n=e.component,a=n.filteredDevices.length,r=s["ɵunv"](e,3,1,t(e,4,0,s["ɵnov"](e.parent,0),n.capacity));t(e,3,0,a,r)}))}function Oy(t){return s["ɵvid"](0,[s["ɵpid"](0,_a.a,[Ea.a]),s["ɵpid"](0,i.TitleCasePipe,[]),s["ɵqud"](671088640,1,{inventoryDevices:0}),(t()(),s["ɵeld"](3,0,null,null,25,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](4,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](5,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](6,null,[""," devices"])),(t()(),s["ɵeld"](7,0,null,1,21,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](8,0,null,null,20,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,10).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,10).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,13).onSubmit()&&a),a}),null,null)),s["ɵdid"](9,16384,null,0,$.G,[],null,null),s["ɵdid"](10,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](12,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](13,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](14,0,null,null,7,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵand"](16777216,null,null,1,null,_y)),s["ɵdid"](16,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](17,0,null,null,2,"cd-inventory-devices",[],null,[[null,"filterChange"]],(function(t,e,n){var a=!0;return"filterChange"===e&&(a=!1!==t.component.onFilterChange(n)&&a),a}),ai,ni)),s["ɵdid"](18,245760,[[1,4],["inventoryDevices",4]],0,ei,[vt.a,_a.a,me.a,Lt.b,gt.a,Jr],{devices:[0,"devices"],hiddenColumns:[1,"hiddenColumns"],filterColumns:[2,"filterColumns"]},{filterChange:"filterChange"}),s["ɵpad"](19,2),(t()(),s["ɵand"](16777216,null,null,1,null,Ty)),s["ɵdid"](21,16384,null,0,i.NgIf,[s.ViewContainerRef,s.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),s["ɵeld"](22,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](23,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](24,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](25,0,["",""])),s["ɵppd"](26,1),(t()(),s["ɵeld"](27,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](28,49152,null,0,Ms.a,[i.Location,At.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,4,0,n.bsModalRef),t(e,10,0,n.formGroup),t(e,13,0,n.formGroup),t(e,16,0,!n.canSubmit);var a=n.devices,r=t(e,19,0,"available","osd_ids");t(e,18,0,a,r,n.filterColumns),t(e,21,0,n.canSubmit),t(e,24,0,n.formGroup,!n.canSubmit||0===n.filteredDevices.length),t(e,28,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,n.deviceType),t(e,8,0,s["ɵnov"](e,12).ngClassUntouched,s["ɵnov"](e,12).ngClassTouched,s["ɵnov"](e,12).ngClassPristine,s["ɵnov"](e,12).ngClassDirty,s["ɵnov"](e,12).ngClassValid,s["ɵnov"](e,12).ngClassInvalid,s["ɵnov"](e,12).ngClassPending);var a=s["ɵunv"](e,25,0,t(e,26,0,s["ɵnov"](e,1),n.action));t(e,25,0,a)}))}function wy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-devices-selection-modal",[],null,null,null,Oy,vy)),s["ɵdid"](1,4243456,null,0,du,[Ho.a,Lt.a,At.b],null,null)],null,null)}var Sy=s["ɵccf"]("cd-osd-devices-selection-modal",du,wy,{},{submitAction:"submitAction"},[]),Iy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Ny(t){return s["ɵvid"](0,[s["ɵpid"](0,i.TitleCasePipe,[]),(t()(),s["ɵeld"](1,0,null,null,23,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](2,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](3,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["OSD creation preview"])),(t()(),s["ɵeld"](5,0,null,1,19,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,18,"form",[["novalidate",""]],[[2,"ng-untouched",null],[2,"ng-touched",null],[2,"ng-pristine",null],[2,"ng-dirty",null],[2,"ng-valid",null],[2,"ng-invalid",null],[2,"ng-pending",null]],[[null,"submit"],[null,"reset"]],(function(t,e,n){var a=!0;return"submit"===e&&(a=!1!==s["ɵnov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==s["ɵnov"](t,8).onReset()&&a),"submit"===e&&(a=!1!==s["ɵnov"](t,11).onSubmit()&&a),a}),null,null)),s["ɵdid"](7,16384,null,0,$.G,[],null,null),s["ɵdid"](8,540672,[["frm",4]],0,$.l,[[8,null],[8,null]],{form:[0,"form"]},null),s["ɵprd"](2048,null,$.d,null,[$.l]),s["ɵdid"](10,16384,null,0,$.s,[[4,$.d]],null,null),s["ɵdid"](11,16384,null,0,Z.d,[],{formGroup:[0,"formGroup"]},null),(t()(),s["ɵeld"](12,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](13,0,null,null,1,"h3",[],null,null,null,null,null)),(t()(),s["ɵted"](-1,null,["DriveGroups"])),(t()(),s["ɵeld"](15,0,null,null,2,"pre",[],null,null,null,null,null)),(t()(),s["ɵted"](16,null,["",""])),s["ɵpid"](0,i.JsonPipe,[]),(t()(),s["ɵeld"](18,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](19,0,null,null,3,"cd-submit-button",[],null,[[null,"submitAction"]],(function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a}),Ls.b,Ls.a)),s["ɵdid"](20,114688,null,0,Ds.a,[s.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),s["ɵted"](21,0,["",""])),s["ɵppd"](22,1),(t()(),s["ɵeld"](23,0,null,null,1,"cd-back-button",[],null,null,null,Ps.b,Ps.a)),s["ɵdid"](24,49152,null,0,Ms.a,[i.Location,At.b],{back:[0,"back"]},null)],(function(t,e){var n=e.component;t(e,2,0,n.bsModalRef),t(e,8,0,n.formGroup),t(e,11,0,n.formGroup),t(e,20,0,n.formGroup),t(e,24,0,n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,6,0,s["ɵnov"](e,10).ngClassUntouched,s["ɵnov"](e,10).ngClassTouched,s["ɵnov"](e,10).ngClassPristine,s["ɵnov"](e,10).ngClassDirty,s["ɵnov"](e,10).ngClassValid,s["ɵnov"](e,10).ngClassInvalid,s["ɵnov"](e,10).ngClassPending),t(e,16,0,s["ɵunv"](e,16,0,s["ɵnov"](e,17).transform(n.driveGroups)));var a=s["ɵunv"](e,21,0,t(e,22,0,s["ɵnov"](e,0),n.action));t(e,21,0,a)}))}function Cy(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-osd-creation-preview-modal",[],null,null,null,Ny,Iy)),s["ɵdid"](1,114688,null,0,_u,[Lt.a,At.b,Ho.a,wi,ys.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Ry=s["ɵccf"]("cd-osd-creation-preview-modal",_u,Cy,{driveGroups:"driveGroups"},{submitAction:"submitAction"},[]),Ay=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function ky(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,10,"cd-modal",[],null,null,null,jb.c,jb.b)),s["ɵdid"](1,49152,null,0,lm.a,[],{modalRef:[0,"modalRef"]},null),(t()(),s["ɵeld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),s["ɵted"](3,null,[""," ",""])),(t()(),s["ɵeld"](4,0,null,1,6,null,null,null,null,null,null,null)),(t()(),s["ɵeld"](5,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),s["ɵeld"](6,0,null,null,1,"cd-orchestrator-doc-panel",[],null,null,null,Zr,$r)),s["ɵdid"](7,49152,null,0,Kr,[],null,null),(t()(),s["ɵeld"](8,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),s["ɵeld"](9,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,Ps.b,Ps.a)),s["ɵdid"](10,49152,null,0,Ms.a,[i.Location,At.b],{name:[0,"name"],back:[1,"back"]},null)],(function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,10,0,"Close",n.bsModalRef.hide)}),(function(t,e){var n=e.component;t(e,3,0,n.actionDescription,n.itemDescription)}))}function Ey(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-orchestrator-doc-modal",[],null,null,null,ky,Ay)),s["ɵdid"](1,114688,null,0,bs,[Lt.a],null,null)],(function(t,e){t(e,1,0)}),null)}var Ly=s["ɵccf"]("cd-orchestrator-doc-modal",bs,Ey,{},{},[]),Dy=s["ɵcrt"]({encapsulation:0,styles:[[""]],data:{}});function Py(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),s["ɵdid"](1,212992,null,0,qt.r,[qt.b,s.ViewContainerRef,s.ComponentFactoryResolver,[8,null],s.ChangeDetectorRef],null,null)],(function(t,e){t(e,1,0)}),null)}function My(t){return s["ɵvid"](0,[(t()(),s["ɵeld"](0,0,null,null,1,"cd-root",[],null,null,null,Py,Dy)),s["ɵdid"](1,49152,null,0,d,[],null,null)],null,null)}var qy=s["ɵccf"]("cd-root",d,My,{},{},[]),jy=new s.InjectionToken("JWT_OPTIONS"),Fy=function(){function t(t){void 0===t&&(t=null),this.tokenGetter=t&&t.tokenGetter||function(){}}return t.prototype.urlBase64Decode=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}return this.b64DecodeUnicode(e)},t.prototype.b64decode=function(t){var e="";if((t=String(t).replace(/=+$/,"")).length%4==1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(var n=0,a=void 0,r=void 0,i=0;r=t.charAt(i++);~r&&(a=n%4?64*a+r:r,n++%4)?e+=String.fromCharCode(255&a>>(-2*n&6)):0)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);return e},t.prototype.b64DecodeUnicode=function(t){return decodeURIComponent(Array.prototype.map.call(this.b64decode(t),(function(t){return"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)})).join(""))},t.prototype.decodeToken=function(t){if(void 0===t&&(t=this.tokenGetter()),null===t)return null;var e=t.split(".");if(3!==e.length)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");var n=this.urlBase64Decode(e[1]);if(!n)throw new Error("Cannot decode the token.");return JSON.parse(n)},t.prototype.getTokenExpirationDate=function(t){var e;if(void 0===t&&(t=this.tokenGetter()),!(e=this.decodeToken(t)).hasOwnProperty("exp"))return null;var n=new Date(0);return n.setUTCSeconds(e.exp),n},t.prototype.isTokenExpired=function(t,e){if(void 0===t&&(t=this.tokenGetter()),null===t||""===t)return!0;var n=this.getTokenExpirationDate(t);return e=e||0,null===n||!(n.valueOf()>(new Date).valueOf()+1e3*e)},t}(),Gy=n("CxY0"),Vy=function(){function t(t,e){this.jwtHelper=e,this.tokenGetter=t.tokenGetter,this.headerName=t.headerName||"Authorization",this.authScheme=t.authScheme||""===t.authScheme?t.authScheme:"Bearer ",this.whitelistedDomains=t.whitelistedDomains||[],this.blacklistedRoutes=t.blacklistedRoutes||[],this.throwNoTokenError=t.throwNoTokenError||!1,this.skipWhenExpired=t.skipWhenExpired}return t.prototype.isWhitelistedDomain=function(t){var e=Object(Gy.parse)(t.url,!1,!0);return null===e.host||this.whitelistedDomains.findIndex((function(t){return"string"==typeof t?t===e.host:t instanceof RegExp&&t.test(e.host)}))>-1},t.prototype.isBlacklistedRoute=function(t){var e=t.url;return this.blacklistedRoutes.findIndex((function(t){return"string"==typeof t?t===e:t instanceof RegExp&&t.test(e)}))>-1},t.prototype.handleInterception=function(t,e,n){var a,r=!1;if(!t&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");return this.skipWhenExpired&&(r=!t||this.jwtHelper.isTokenExpired(t)),t&&r&&this.skipWhenExpired?e=e.clone():t&&(e=e.clone({setHeaders:(a={},a[this.headerName]=""+this.authScheme+t,a)})),n.handle(e)},t.prototype.intercept=function(t,e){var n=this;if(!this.isWhitelistedDomain(t)||this.isBlacklistedRoute(t))return e.handle(t);var a=this.tokenGetter();return a instanceof Promise?Object(En.a)(a).pipe(Object(Dn.a)((function(a){return n.handleInterception(a,t,e)}))):this.handleInterception(a,t,e)},t}(),zy=n("z6cu"),By=n("JIr8");let Yy=(()=>{class t{constructor(t,e,n){this.router=t,this.authStorageService=e,this.notificationService=n}intercept(t,e){return e.handle(t).pipe(Object(By.a)(t=>{if(t instanceof X.f){let e;switch(t.status){case 400:const n=new hs.a,a=t.error.task;J.isPlainObject(a)?(a.metadata.component=a.metadata.component||t.error.component,n.name=a.name,n.metadata=a.metadata):n.metadata=t.error,n.success=!1,n.exception=t.error,e=this.notificationService.notifyTask(n);break;case 401:this.authStorageService.remove(),this.router.navigate(["/login"]);break;case 403:this.router.navigate(["/403"]);break;default:e=this.prepareNotification(t)}t.preventDefault=()=>{this.notificationService.cancel(e)},t.ignoreStatusCode=function(t){this.status===t&&this.preventDefault()}}return Object(zy.a)(t)}))}prepareNotification(t){return this.notificationService.show(()=>{let e="";return J.isPlainObject(t.error)&&J.isString(t.error.detail)?e=t.error.detail:J.isString(t.error)?e=t.error:J.isString(t.message)&&(e=t.message),new ke.b(ge.a.error,`${t.status} - ${t.statusText}`,e,void 0,t.application)})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](qt.m),s["ɵɵinject"](vt.a),s["ɵɵinject"](gt.a))},token:t,providedIn:"root"}),t})();function Hy(){return"undefined"!=typeof process}function Uy(t){switch(t.length){case 0:return new K.d;case 1:return t[0];default:return new K.k(t)}}function Wy(t,e,n,a,r={},i={}){const s=[],o=[];let u=-1,l=null;if(a.forEach(t=>{const n=t.offset,a=n==u,d=a&&l||{};Object.keys(t).forEach(n=>{let a=n,o=t[n];if("offset"!==n)switch(a=e.normalizePropertyName(a,s),o){case K.l:o=r[n];break;case K.a:o=i[n];break;default:o=e.normalizeStyleValue(n,a,o,s)}d[a]=o}),a||o.push(d),l=d,u=n}),s.length){const t="\n - ";throw new Error(`Unable to animate due to the following errors:${t}${s.join(t)}`)}return o}function Ky(t,e,n,a){switch(e){case"start":t.onStart(()=>a(n&&$y(n,"start",t)));break;case"done":t.onDone(()=>a(n&&$y(n,"done",t)));break;case"destroy":t.onDestroy(()=>a(n&&$y(n,"destroy",t)))}}function $y(t,e,n){const a=n.totalTime,r=Zy(t.element,t.triggerName,t.fromState,t.toState,e||t.phaseName,null==a?t.totalTime:a,!!n.disabled),i=t._data;return null!=i&&(r._data=i),r}function Zy(t,e,n,a,r="",i=0,s){return{element:t,triggerName:e,fromState:n,toState:a,phaseName:r,totalTime:i,disabled:!!s}}function Jy(t,e,n){let a;return t instanceof Map?(a=t.get(e),a||t.set(e,a=n)):(a=t[e],a||(a=t[e]=n)),a}function Qy(t){const e=t.indexOf(":");return[t.substring(1,e),t.substr(e+1)]}let Xy=(t,e)=>!1,tv=(t,e)=>!1,ev=(t,e,n)=>[];const nv=Hy();(nv||"undefined"!=typeof Element)&&(Xy=(t,e)=>t.contains(e),tv=(()=>{if(nv||Element.prototype.matches)return(t,e)=>t.matches(e);{const t=Element.prototype,e=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector;return e?(t,n)=>e.apply(t,[n]):tv}})(),ev=(t,e,n)=>{let a=[];if(n)a.push(...t.querySelectorAll(e));else{const n=t.querySelector(e);n&&a.push(n)}return a});let av=null,rv=!1;function iv(t){av||(av=("undefined"!=typeof document?document.body:null)||{},rv=!!av.style&&"WebkitAppearance"in av.style);let e=!0;return av.style&&!function(t){return"ebkit"==t.substring(1,6)}(t)&&(e=t in av.style,!e&&rv)&&(e="Webkit"+t.charAt(0).toUpperCase()+t.substr(1)in av.style),e}const sv=tv,ov=Xy,uv=ev;function lv(t){const e={};return Object.keys(t).forEach(n=>{const a=n.replace(/([a-z])([A-Z])/g,"$1-$2");e[a]=t[n]}),e}class dv{validateStyleProperty(t){return iv(t)}matchesElement(t,e){return sv(t,e)}containsElement(t,e){return ov(t,e)}query(t,e,n){return uv(t,e,n)}computeStyle(t,e,n){return n||""}animate(t,e,n,a,r,i=[],s){return new K.d(n,a)}}let cv=(()=>{class t{}return t.NOOP=new dv,t})();function fv(t){if("number"==typeof t)return t;const e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:hv(parseFloat(e[1]),e[2])}function hv(t,e){switch(e){case"s":return 1e3*t;default:return t}}function gv(t,e,n){return t.hasOwnProperty("duration")?t:function(t,e,n){let a,r=0,i="";if("string"==typeof t){const n=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===n)return e.push(`The provided timing value "${t}" is invalid.`),{duration:0,delay:0,easing:""};a=hv(parseFloat(n[1]),n[2]);const s=n[3];null!=s&&(r=hv(parseFloat(s),n[4]));const o=n[5];o&&(i=o)}else a=t;if(!n){let n=!1,i=e.length;a<0&&(e.push("Duration values below 0 are not allowed for this animation step."),n=!0),r<0&&(e.push("Delay values below 0 are not allowed for this animation step."),n=!0),n&&e.splice(i,0,`The provided timing value "${t}" is invalid.`)}return{duration:a,delay:r,easing:i}}(t,e,n)}function pv(t,e={}){return Object.keys(t).forEach(n=>{e[n]=t[n]}),e}function bv(t,e,n={}){if(e)for(let a in t)n[a]=t[a];else pv(t,n);return n}function mv(t,e,n){return n?e+":"+n+";":""}function yv(t){let e="";for(let n=0;n<t.style.length;n++){const a=t.style.item(n);e+=mv(0,a,t.style.getPropertyValue(a))}for(const n in t.style)t.style.hasOwnProperty(n)&&!n.startsWith("_")&&(e+=mv(0,n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t.style[n]));t.setAttribute("style",e)}function vv(t,e,n){t.style&&(Object.keys(e).forEach(a=>{const r=Nv(a);n&&!n.hasOwnProperty(a)&&(n[a]=t.style[r]),t.style[r]=e[a]}),Hy()&&yv(t))}function xv(t,e){t.style&&(Object.keys(e).forEach(e=>{const n=Nv(e);t.style[n]=""}),Hy()&&yv(t))}function _v(t){return Array.isArray(t)?1==t.length?t[0]:Object(K.f)(t):t}const Tv=new RegExp("{{\\s*(.+?)\\s*}}","g");function Ov(t){let e=[];if("string"==typeof t){const n=t.toString();let a;for(;a=Tv.exec(n);)e.push(a[1]);Tv.lastIndex=0}return e}function wv(t,e,n){const a=t.toString(),r=a.replace(Tv,(t,a)=>{let r=e[a];return e.hasOwnProperty(a)||(n.push(`Please provide a value for the animation param ${a}`),r=""),r.toString()});return r==a?t:r}function Sv(t){const e=[];let n=t.next();for(;!n.done;)e.push(n.value),n=t.next();return e}const Iv=/-+([a-z0-9])/g;function Nv(t){return t.replace(Iv,(...t)=>t[1].toUpperCase())}function Cv(t,e){return 0===t||0===e}function Rv(t,e,n){const a=Object.keys(n);if(a.length&&e.length){let i=e[0],s=[];if(a.forEach(t=>{i.hasOwnProperty(t)||s.push(t),i[t]=n[t]}),s.length)for(var r=1;r<e.length;r++){let n=e[r];s.forEach((function(e){n[e]=kv(t,e)}))}}return e}function Av(t,e,n){switch(e.type){case 7:return t.visitTrigger(e,n);case 0:return t.visitState(e,n);case 1:return t.visitTransition(e,n);case 2:return t.visitSequence(e,n);case 3:return t.visitGroup(e,n);case 4:return t.visitAnimate(e,n);case 5:return t.visitKeyframes(e,n);case 6:return t.visitStyle(e,n);case 8:return t.visitReference(e,n);case 9:return t.visitAnimateChild(e,n);case 10:return t.visitAnimateRef(e,n);case 11:return t.visitQuery(e,n);case 12:return t.visitStagger(e,n);default:throw new Error(`Unable to resolve animation metadata node #${e.type}`)}}function kv(t,e){return window.getComputedStyle(t)[e]}function Ev(t,e){const n=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(t=>function(t,e,n){if(":"==t[0]){const a=function(t,e){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,e)=>parseFloat(e)>parseFloat(t);case":decrement":return(t,e)=>parseFloat(e)<parseFloat(t);default:return e.push(`The transition alias value "${t}" is not supported`),"* => *"}}(t,n);if("function"==typeof a)return void e.push(a);t=a}const a=t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==a||a.length<4)return n.push(`The provided transition expression "${t}" is not supported`),e;const r=a[1],i=a[2],s=a[3];e.push(Pv(r,s)),"<"!=i[0]||"*"==r&&"*"==s||e.push(Pv(s,r))}(t,n,e)):n.push(t),n}const Lv=new Set(["true","1"]),Dv=new Set(["false","0"]);function Pv(t,e){const n=Lv.has(t)||Dv.has(t),a=Lv.has(e)||Dv.has(e);return(r,i)=>{let s="*"==t||t==r,o="*"==e||e==i;return!s&&n&&"boolean"==typeof r&&(s=r?Lv.has(t):Dv.has(t)),!o&&a&&"boolean"==typeof i&&(o=i?Lv.has(e):Dv.has(e)),s&&o}}const Mv=new RegExp("s*:selfs*,?","g");function qv(t,e,n){return new jv(t).build(e,n)}class jv{constructor(t){this._driver=t}build(t,e){const n=new Fv(e);return this._resetContextStyleTimingState(n),Av(this,_v(t),n)}_resetContextStyleTimingState(t){t.currentQuerySelector="",t.collectedStyles={},t.collectedStyles[""]={},t.currentTime=0}visitTrigger(t,e){let n=e.queryCount=0,a=e.depCount=0;const r=[],i=[];return"@"==t.name.charAt(0)&&e.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),t.definitions.forEach(t=>{if(this._resetContextStyleTimingState(e),0==t.type){const n=t,a=n.name;a.toString().split(/\s*,\s*/).forEach(t=>{n.name=t,r.push(this.visitState(n,e))}),n.name=a}else if(1==t.type){const r=this.visitTransition(t,e);n+=r.queryCount,a+=r.depCount,i.push(r)}else e.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:t.name,states:r,transitions:i,queryCount:n,depCount:a,options:null}}visitState(t,e){const n=this.visitStyle(t.styles,e),a=t.options&&t.options.params||null;if(n.containsDynamicStyles){const r=new Set,i=a||{};if(n.styles.forEach(t=>{if(Gv(t)){const e=t;Object.keys(e).forEach(t=>{Ov(e[t]).forEach(t=>{i.hasOwnProperty(t)||r.add(t)})})}}),r.size){const n=Sv(r.values());e.errors.push(`state("${t.name}", ...) must define default values for all the following style substitutions: ${n.join(", ")}`)}}return{type:0,name:t.name,style:n,options:a?{params:a}:null}}visitTransition(t,e){e.queryCount=0,e.depCount=0;const n=Av(this,_v(t.animation),e);return{type:1,matchers:Ev(t.expr,e.errors),animation:n,queryCount:e.queryCount,depCount:e.depCount,options:Vv(t.options)}}visitSequence(t,e){return{type:2,steps:t.steps.map(t=>Av(this,t,e)),options:Vv(t.options)}}visitGroup(t,e){const n=e.currentTime;let a=0;const r=t.steps.map(t=>{e.currentTime=n;const r=Av(this,t,e);return a=Math.max(a,e.currentTime),r});return e.currentTime=a,{type:3,steps:r,options:Vv(t.options)}}visitAnimate(t,e){const n=function(t,e){let n=null;if(t.hasOwnProperty("duration"))n=t;else if("number"==typeof t)return zv(gv(t,e).duration,0,"");const a=t;if(a.split(/\s+/).some(t=>"{"==t.charAt(0)&&"{"==t.charAt(1))){const t=zv(0,0,"");return t.dynamic=!0,t.strValue=a,t}return n=n||gv(a,e),zv(n.duration,n.delay,n.easing)}(t.timings,e.errors);let a;e.currentAnimateTimings=n;let r=t.styles?t.styles:Object(K.h)({});if(5==r.type)a=this.visitKeyframes(r,e);else{let r=t.styles,i=!1;if(!r){i=!0;const t={};n.easing&&(t.easing=n.easing),r=Object(K.h)(t)}e.currentTime+=n.duration+n.delay;const s=this.visitStyle(r,e);s.isEmptyStep=i,a=s}return e.currentAnimateTimings=null,{type:4,timings:n,style:a,options:null}}visitStyle(t,e){const n=this._makeStyleAst(t,e);return this._validateStyleAst(n,e),n}_makeStyleAst(t,e){const n=[];Array.isArray(t.styles)?t.styles.forEach(t=>{"string"==typeof t?t==K.a?n.push(t):e.errors.push(`The provided style string value ${t} is not allowed.`):n.push(t)}):n.push(t.styles);let a=!1,r=null;return n.forEach(t=>{if(Gv(t)){const e=t,n=e.easing;if(n&&(r=n,delete e.easing),!a)for(let t in e)if(e[t].toString().indexOf("{{")>=0){a=!0;break}}}),{type:6,styles:n,easing:r,offset:t.offset,containsDynamicStyles:a,options:null}}_validateStyleAst(t,e){const n=e.currentAnimateTimings;let a=e.currentTime,r=e.currentTime;n&&r>0&&(r-=n.duration+n.delay),t.styles.forEach(t=>{"string"!=typeof t&&Object.keys(t).forEach(n=>{if(!this._driver.validateStyleProperty(n))return void e.errors.push(`The provided animation property "${n}" is not a supported CSS property for animations`);const i=e.collectedStyles[e.currentQuerySelector],s=i[n];let o=!0;s&&(r!=a&&r>=s.startTime&&a<=s.endTime&&(e.errors.push(`The CSS property "${n}" that exists between the times of "${s.startTime}ms" and "${s.endTime}ms" is also being animated in a parallel animation between the times of "${r}ms" and "${a}ms"`),o=!1),r=s.startTime),o&&(i[n]={startTime:r,endTime:a}),e.options&&function(t,e,n){const a=e.params||{},r=Ov(t);r.length&&r.forEach(t=>{a.hasOwnProperty(t)||n.push(`Unable to resolve the local animation param ${t} in the given list of values`)})}(t[n],e.options,e.errors)})})}visitKeyframes(t,e){const n={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push("keyframes() must be placed inside of a call to animate()"),n;let a=0;const r=[];let i=!1,s=!1,o=0;const u=t.steps.map(t=>{const n=this._makeStyleAst(t,e);let u=null!=n.offset?n.offset:function(t){if("string"==typeof t)return null;let e=null;if(Array.isArray(t))t.forEach(t=>{if(Gv(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}});else if(Gv(t)&&t.hasOwnProperty("offset")){const n=t;e=parseFloat(n.offset),delete n.offset}return e}(n.styles),l=0;return null!=u&&(a++,l=n.offset=u),s=s||l<0||l>1,i=i||l<o,o=l,r.push(l),n});s&&e.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),i&&e.errors.push("Please ensure that all keyframe offsets are in order");const l=t.steps.length;let d=0;a>0&&a<l?e.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==a&&(d=1/(l-1));const c=l-1,f=e.currentTime,h=e.currentAnimateTimings,g=h.duration;return u.forEach((t,a)=>{const i=d>0?a==c?1:d*a:r[a],s=i*g;e.currentTime=f+h.delay+s,h.duration=s,this._validateStyleAst(t,e),t.offset=i,n.styles.push(t)}),n}visitReference(t,e){return{type:8,animation:Av(this,_v(t.animation),e),options:Vv(t.options)}}visitAnimateChild(t,e){return e.depCount++,{type:9,options:Vv(t.options)}}visitAnimateRef(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:Vv(t.options)}}visitQuery(t,e){const n=e.currentQuerySelector,a=t.options||{};e.queryCount++,e.currentQuery=t;const[r,i]=function(t){const e=!!t.split(/\s*,\s*/).find(t=>":self"==t);return e&&(t=t.replace(Mv,"")),[t=t.replace(/@\*/g,".ng-trigger").replace(/@\w+/g,t=>".ng-trigger-"+t.substr(1)).replace(/:animating/g,".ng-animating"),e]}(t.selector);e.currentQuerySelector=n.length?n+" "+r:r,Jy(e.collectedStyles,e.currentQuerySelector,{});const s=Av(this,_v(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:11,selector:r,limit:a.limit||0,optional:!!a.optional,includeSelf:i,animation:s,originalSelector:t.selector,options:Vv(t.options)}}visitStagger(t,e){e.currentQuery||e.errors.push("stagger() can only be used inside of query()");const n="full"===t.timings?{duration:0,delay:0,easing:"full"}:gv(t.timings,e.errors,!0);return{type:12,animation:Av(this,_v(t.animation),e),timings:n,options:null}}}class Fv{constructor(t){this.errors=t,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles={},this.options=null}}function Gv(t){return!Array.isArray(t)&&"object"==typeof t}function Vv(t){var e;return t?(t=pv(t)).params&&(t.params=(e=t.params)?pv(e):null):t={},t}function zv(t,e,n){return{duration:t,delay:e,easing:n}}function Bv(t,e,n,a,r,i,s=null,o=!1){return{type:1,element:t,keyframes:e,preStyleProps:n,postStyleProps:a,duration:r,delay:i,totalTime:r+i,easing:s,subTimeline:o}}class Yv{constructor(){this._map=new Map}consume(t){let e=this._map.get(t);return e?this._map.delete(t):e=[],e}append(t,e){let n=this._map.get(t);n||this._map.set(t,n=[]),n.push(...e)}has(t){return this._map.has(t)}clear(){this._map.clear()}}const Hv=new RegExp(":enter","g"),Uv=new RegExp(":leave","g");function Wv(t,e,n,a,r,i={},s={},o,u,l=[]){return(new Kv).buildKeyframes(t,e,n,a,r,i,s,o,u,l)}class Kv{buildKeyframes(t,e,n,a,r,i,s,o,u,l=[]){u=u||new Yv;const d=new Zv(t,e,u,a,r,l,[]);d.options=o,d.currentTimeline.setStyles([i],null,d.errors,o),Av(this,n,d);const c=d.timelines.filter(t=>t.containsAnimation());if(c.length&&Object.keys(s).length){const t=c[c.length-1];t.allowOnlyTimelineStyles()||t.setStyles([s],null,d.errors,o)}return c.length?c.map(t=>t.buildKeyframes()):[Bv(e,[],[],[],0,0,"",!1)]}visitTrigger(t,e){}visitState(t,e){}visitTransition(t,e){}visitAnimateChild(t,e){const n=e.subInstructions.consume(e.element);if(n){const a=e.createSubContext(t.options),r=e.currentTimeline.currentTime,i=this._visitSubInstructions(n,a,a.options);r!=i&&e.transformIntoNewTimeline(i)}e.previousNode=t}visitAnimateRef(t,e){const n=e.createSubContext(t.options);n.transformIntoNewTimeline(),this.visitReference(t.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=t}_visitSubInstructions(t,e,n){let a=e.currentTimeline.currentTime;const r=null!=n.duration?fv(n.duration):null,i=null!=n.delay?fv(n.delay):null;return 0!==r&&t.forEach(t=>{const n=e.appendInstructionToTimeline(t,r,i);a=Math.max(a,n.duration+n.delay)}),a}visitReference(t,e){e.updateOptions(t.options,!0),Av(this,t.animation,e),e.previousNode=t}visitSequence(t,e){const n=e.subContextCount;let a=e;const r=t.options;if(r&&(r.params||r.delay)&&(a=e.createSubContext(r),a.transformIntoNewTimeline(),null!=r.delay)){6==a.previousNode.type&&(a.currentTimeline.snapshotCurrentStyles(),a.previousNode=$v);const t=fv(r.delay);a.delayNextStep(t)}t.steps.length&&(t.steps.forEach(t=>Av(this,t,a)),a.currentTimeline.applyStylesToKeyframe(),a.subContextCount>n&&a.transformIntoNewTimeline()),e.previousNode=t}visitGroup(t,e){const n=[];let a=e.currentTimeline.currentTime;const r=t.options&&t.options.delay?fv(t.options.delay):0;t.steps.forEach(i=>{const s=e.createSubContext(t.options);r&&s.delayNextStep(r),Av(this,i,s),a=Math.max(a,s.currentTimeline.currentTime),n.push(s.currentTimeline)}),n.forEach(t=>e.currentTimeline.mergeTimelineCollectedStyles(t)),e.transformIntoNewTimeline(a),e.previousNode=t}_visitTiming(t,e){if(t.dynamic){const n=t.strValue;return gv(e.params?wv(n,e.params,e.errors):n,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}}visitAnimate(t,e){const n=e.currentAnimateTimings=this._visitTiming(t.timings,e),a=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),a.snapshotCurrentStyles());const r=t.style;5==r.type?this.visitKeyframes(r,e):(e.incrementTime(n.duration),this.visitStyle(r,e),a.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=t}visitStyle(t,e){const n=e.currentTimeline,a=e.currentAnimateTimings;!a&&n.getCurrentStyleProperties().length&&n.forwardFrame();const r=a&&a.easing||t.easing;t.isEmptyStep?n.applyEmptyStep(r):n.setStyles(t.styles,r,e.errors,e.options),e.previousNode=t}visitKeyframes(t,e){const n=e.currentAnimateTimings,a=e.currentTimeline.duration,r=n.duration,i=e.createSubContext().currentTimeline;i.easing=n.easing,t.styles.forEach(t=>{i.forwardTime((t.offset||0)*r),i.setStyles(t.styles,t.easing,e.errors,e.options),i.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(i),e.transformIntoNewTimeline(a+r),e.previousNode=t}visitQuery(t,e){const n=e.currentTimeline.currentTime,a=t.options||{},r=a.delay?fv(a.delay):0;r&&(6===e.previousNode.type||0==n&&e.currentTimeline.getCurrentStyleProperties().length)&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=$v);let i=n;const s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!a.optional,e.errors);e.currentQueryTotal=s.length;let o=null;s.forEach((n,a)=>{e.currentQueryIndex=a;const s=e.createSubContext(t.options,n);r&&s.delayNextStep(r),n===e.element&&(o=s.currentTimeline),Av(this,t.animation,s),s.currentTimeline.applyStylesToKeyframe(),i=Math.max(i,s.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(i),o&&(e.currentTimeline.mergeTimelineCollectedStyles(o),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t}visitStagger(t,e){const n=e.parentContext,a=e.currentTimeline,r=t.timings,i=Math.abs(r.duration),s=i*(e.currentQueryTotal-1);let o=i*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":o=s-o;break;case"full":o=n.currentStaggerTime}const u=e.currentTimeline;o&&u.delayNextStep(o);const l=u.currentTime;Av(this,t.animation,e),e.previousNode=t,n.currentStaggerTime=a.currentTime-l+(a.startTime-n.currentTimeline.startTime)}}const $v={};class Zv{constructor(t,e,n,a,r,i,s,o){this._driver=t,this.element=e,this.subInstructions=n,this._enterClassName=a,this._leaveClassName=r,this.errors=i,this.timelines=s,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=$v,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=o||new Jv(this._driver,e,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(t,e){if(!t)return;const n=t;let a=this.options;null!=n.duration&&(a.duration=fv(n.duration)),null!=n.delay&&(a.delay=fv(n.delay));const r=n.params;if(r){let t=a.params;t||(t=this.options.params={}),Object.keys(r).forEach(n=>{e&&t.hasOwnProperty(n)||(t[n]=wv(r[n],t,this.errors))})}}_copyOptions(){const t={};if(this.options){const e=this.options.params;if(e){const n=t.params={};Object.keys(e).forEach(t=>{n[t]=e[t]})}}return t}createSubContext(t=null,e,n){const a=e||this.element,r=new Zv(this._driver,a,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(a,n||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(t),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(t){return this.previousNode=$v,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(t,e,n){const a={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=n?n:0)+t.delay,easing:""},r=new Qv(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,a,t.stretchStartingKeyframe);return this.timelines.push(r),a}incrementTime(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)}delayNextStep(t){t>0&&this.currentTimeline.delayNextStep(t)}invokeQuery(t,e,n,a,r,i){let s=[];if(a&&s.push(this.element),t.length>0){t=(t=t.replace(Hv,"."+this._enterClassName)).replace(Uv,"."+this._leaveClassName);let e=this._driver.query(this.element,t,1!=n);0!==n&&(e=n<0?e.slice(e.length+n,e.length):e.slice(0,n)),s.push(...e)}return r||0!=s.length||i.push(`\`query("${e}")\` returned zero elements. (Use \`query("${e}", { optional: true })\` if you wish to allow this.)`),s}}class Jv{constructor(t,e,n,a){this._driver=t,this.element=e,this.startTime=n,this._elementTimelineStylesLookup=a,this.duration=0,this._previousKeyframe={},this._currentKeyframe={},this._keyframes=new Map,this._styleSummary={},this._pendingStyles={},this._backFill={},this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._localTimelineStyles=Object.create(this._backFill,{}),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.getCurrentStyleProperties().length>0;default:return!0}}getCurrentStyleProperties(){return Object.keys(this._currentKeyframe)}get currentTime(){return this.startTime+this.duration}delayNextStep(t){const e=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t}fork(t,e){return this.applyStylesToKeyframe(),new Jv(this._driver,t,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=Object.create(this._backFill,{}),this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()}_updateStyle(t,e){this._localTimelineStyles[t]=e,this._globalTimelineStyles[t]=e,this._styleSummary[t]={time:this.currentTime,value:e}}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(t){t&&(this._previousKeyframe.easing=t),Object.keys(this._globalTimelineStyles).forEach(t=>{this._backFill[t]=this._globalTimelineStyles[t]||K.a,this._currentKeyframe[t]=K.a}),this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(t,e,n,a){e&&(this._previousKeyframe.easing=e);const r=a&&a.params||{},i=function(t,e){const n={};let a;return t.forEach(t=>{"*"===t?(a=a||Object.keys(e),a.forEach(t=>{n[t]=K.a})):bv(t,!1,n)}),n}(t,this._globalTimelineStyles);Object.keys(i).forEach(t=>{const e=wv(i[t],r,n);this._pendingStyles[t]=e,this._localTimelineStyles.hasOwnProperty(t)||(this._backFill[t]=this._globalTimelineStyles.hasOwnProperty(t)?this._globalTimelineStyles[t]:K.a),this._updateStyle(t,e)})}applyStylesToKeyframe(){const t=this._pendingStyles,e=Object.keys(t);0!=e.length&&(this._pendingStyles={},e.forEach(e=>{this._currentKeyframe[e]=t[e]}),Object.keys(this._localTimelineStyles).forEach(t=>{this._currentKeyframe.hasOwnProperty(t)||(this._currentKeyframe[t]=this._localTimelineStyles[t])}))}snapshotCurrentStyles(){Object.keys(this._localTimelineStyles).forEach(t=>{const e=this._localTimelineStyles[t];this._pendingStyles[t]=e,this._updateStyle(t,e)})}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const t=[];for(let e in this._currentKeyframe)t.push(e);return t}mergeTimelineCollectedStyles(t){Object.keys(t._styleSummary).forEach(e=>{const n=this._styleSummary[e],a=t._styleSummary[e];(!n||a.time>n.time)&&this._updateStyle(e,a.value)})}buildKeyframes(){this.applyStylesToKeyframe();const t=new Set,e=new Set,n=1===this._keyframes.size&&0===this.duration;let a=[];this._keyframes.forEach((r,i)=>{const s=bv(r,!0);Object.keys(s).forEach(n=>{const a=s[n];a==K.l?t.add(n):a==K.a&&e.add(n)}),n||(s.offset=i/this.duration),a.push(s)});const r=t.size?Sv(t.values()):[],i=e.size?Sv(e.values()):[];if(n){const t=a[0],e=pv(t);t.offset=0,e.offset=1,a=[t,e]}return Bv(this.element,a,r,i,this.duration,this.startTime,this.easing,!1)}}class Qv extends Jv{constructor(t,e,n,a,r,i,s=!1){super(t,e,i.delay),this.element=e,this.keyframes=n,this.preStyleProps=a,this.postStyleProps=r,this._stretchStartingKeyframe=s,this.timings={duration:i.duration,delay:i.delay,easing:i.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let t=this.keyframes,{delay:e,duration:n,easing:a}=this.timings;if(this._stretchStartingKeyframe&&e){const r=[],i=n+e,s=e/i,o=bv(t[0],!1);o.offset=0,r.push(o);const u=bv(t[0],!1);u.offset=Xv(s),r.push(u);const l=t.length-1;for(let a=1;a<=l;a++){let s=bv(t[a],!1);s.offset=Xv((e+s.offset*n)/i),r.push(s)}n=i,e=0,a="",t=r}return Bv(this.element,t,this.preStyleProps,this.postStyleProps,n,e,a,!0)}}function Xv(t,e=3){const n=Math.pow(10,e-1);return Math.round(t*n)/n}class tx{}class ex extends tx{normalizePropertyName(t,e){return Nv(t)}normalizeStyleValue(t,e,n,a){let r="";const i=n.toString().trim();if(nx[e]&&0!==n&&"0"!==n)if("number"==typeof n)r="px";else{const e=n.match(/^[+-]?[\d\.]+([a-z]*)$/);e&&0==e[1].length&&a.push(`Please provide a CSS unit value for ${t}:${n}`)}return i+r}}const nx=(()=>function(t){const e={};return t.forEach(t=>e[t]=!0),e}("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".split(",")))();function ax(t,e,n,a,r,i,s,o,u,l,d,c,f){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:n,fromStyles:i,toState:a,toStyles:s,timelines:o,queriedElements:u,preStyleProps:l,postStyleProps:d,totalTime:c,errors:f}}const rx={};class ix{constructor(t,e,n){this._triggerName=t,this.ast=e,this._stateStyles=n}match(t,e,n,a){return function(t,e,n,a,r){return t.some(t=>t(e,n,a,r))}(this.ast.matchers,t,e,n,a)}buildStyles(t,e,n){const a=this._stateStyles["*"],r=this._stateStyles[t],i=a?a.buildStyles(e,n):{};return r?r.buildStyles(e,n):i}build(t,e,n,a,r,i,s,o,u,l){const d=[],c=this.ast.options&&this.ast.options.params||rx,f=this.buildStyles(n,s&&s.params||rx,d),h=o&&o.params||rx,g=this.buildStyles(a,h,d),p=new Set,b=new Map,m=new Map,y="void"===a,v={params:Object.assign({},c,h)},x=l?[]:Wv(t,e,this.ast.animation,r,i,f,g,v,u,d);let _=0;if(x.forEach(t=>{_=Math.max(t.duration+t.delay,_)}),d.length)return ax(e,this._triggerName,n,a,y,f,g,[],[],b,m,_,d);x.forEach(t=>{const n=t.element,a=Jy(b,n,{});t.preStyleProps.forEach(t=>a[t]=!0);const r=Jy(m,n,{});t.postStyleProps.forEach(t=>r[t]=!0),n!==e&&p.add(n)});const T=Sv(p.values());return ax(e,this._triggerName,n,a,y,f,g,x,T,b,m,_)}}class sx{constructor(t,e){this.styles=t,this.defaultParams=e}buildStyles(t,e){const n={},a=pv(this.defaultParams);return Object.keys(t).forEach(e=>{const n=t[e];null!=n&&(a[e]=n)}),this.styles.styles.forEach(t=>{if("string"!=typeof t){const r=t;Object.keys(r).forEach(t=>{let i=r[t];i.length>1&&(i=wv(i,a,e)),n[t]=i})}}),n}}class ox{constructor(t,e){this.name=t,this.ast=e,this.transitionFactories=[],this.states={},e.states.forEach(t=>{this.states[t.name]=new sx(t.style,t.options&&t.options.params||{})}),ux(this.states,"true","1"),ux(this.states,"false","0"),e.transitions.forEach(e=>{this.transitionFactories.push(new ix(t,e,this.states))}),this.fallbackTransition=new ix(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[(t,e)=>!0],options:null,queryCount:0,depCount:0},this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(t,e,n,a){return this.transitionFactories.find(r=>r.match(t,e,n,a))||null}matchStyles(t,e,n){return this.fallbackTransition.buildStyles(t,e,n)}}function ux(t,e,n){t.hasOwnProperty(e)?t.hasOwnProperty(n)||(t[n]=t[e]):t.hasOwnProperty(n)&&(t[e]=t[n])}const lx=new Yv;class dx{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._normalizer=n,this._animations={},this._playersById={},this.players=[]}register(t,e){const n=[],a=qv(this._driver,e,n);if(n.length)throw new Error(`Unable to build the animation due to the following errors: ${n.join("\n")}`);this._animations[t]=a}_buildPlayer(t,e,n){const a=t.element,r=Wy(0,this._normalizer,0,t.keyframes,e,n);return this._driver.animate(a,r,t.duration,t.delay,t.easing,[],!0)}create(t,e,n={}){const a=[],r=this._animations[t];let i;const s=new Map;if(r?(i=Wv(this._driver,e,r,"ng-enter","ng-leave",{},{},n,lx,a),i.forEach(t=>{const e=Jy(s,t.element,{});t.postStyleProps.forEach(t=>e[t]=null)})):(a.push("The requested animation doesn't exist or has already been destroyed"),i=[]),a.length)throw new Error(`Unable to create the animation due to the following errors: ${a.join("\n")}`);s.forEach((t,e)=>{Object.keys(t).forEach(n=>{t[n]=this._driver.computeStyle(e,n,K.a)})});const o=Uy(i.map(t=>{const e=s.get(t.element);return this._buildPlayer(t,{},e)}));return this._playersById[t]=o,o.onDestroy(()=>this.destroy(t)),this.players.push(o),o}destroy(t){const e=this._getPlayer(t);e.destroy(),delete this._playersById[t];const n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)}_getPlayer(t){const e=this._playersById[t];if(!e)throw new Error(`Unable to find the timeline player referenced by ${t}`);return e}listen(t,e,n,a){const r=Zy(e,"","","");return Ky(this._getPlayer(t),n,r,a),()=>{}}command(t,e,n,a){if("register"==n)return void this.register(t,a[0]);if("create"==n)return void this.create(t,e,a[0]||{});const r=this._getPlayer(t);switch(n){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(a[0]));break;case"destroy":this.destroy(t)}}}const cx=[],fx={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},hx={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0};class gx{constructor(t,e=""){this.namespaceId=e;const n=t&&t.hasOwnProperty("value");if(this.value=null!=(a=n?t.value:t)?a:null,n){const e=pv(t);delete e.value,this.options=e}else this.options={};var a;this.options.params||(this.options.params={})}get params(){return this.options.params}absorbOptions(t){const e=t.params;if(e){const t=this.options.params;Object.keys(e).forEach(n=>{null==t[n]&&(t[n]=e[n])})}}}const px=new gx("void");class bx{constructor(t,e,n){this.id=t,this.hostElement=e,this._engine=n,this.players=[],this._triggers={},this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+t,Ox(e,this._hostClassName)}listen(t,e,n,a){if(!this._triggers.hasOwnProperty(e))throw new Error(`Unable to listen on the animation trigger event "${n}" because the animation trigger "${e}" doesn't exist!`);if(null==n||0==n.length)throw new Error(`Unable to listen on the animation trigger "${e}" because the provided event is undefined!`);if("start"!=(r=n)&&"done"!=r)throw new Error(`The provided animation trigger event "${n}" for the animation trigger "${e}" is not supported!`);var r;const i=Jy(this._elementListeners,t,[]),s={name:e,phase:n,callback:a};i.push(s);const o=Jy(this._engine.statesByElement,t,{});return o.hasOwnProperty(e)||(Ox(t,"ng-trigger"),Ox(t,"ng-trigger-"+e),o[e]=px),()=>{this._engine.afterFlush(()=>{const t=i.indexOf(s);t>=0&&i.splice(t,1),this._triggers[e]||delete o[e]})}}register(t,e){return!this._triggers[t]&&(this._triggers[t]=e,!0)}_getTrigger(t){const e=this._triggers[t];if(!e)throw new Error(`The provided animation trigger "${t}" has not been registered!`);return e}trigger(t,e,n,a=!0){const r=this._getTrigger(e),i=new yx(this.id,e,t);let s=this._engine.statesByElement.get(t);s||(Ox(t,"ng-trigger"),Ox(t,"ng-trigger-"+e),this._engine.statesByElement.set(t,s={}));let o=s[e];const u=new gx(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&o&&u.absorbOptions(o.options),s[e]=u,o||(o=px),"void"!==u.value&&o.value===u.value){if(!function(t,e){const n=Object.keys(t),a=Object.keys(e);if(n.length!=a.length)return!1;for(let r=0;r<n.length;r++){const a=n[r];if(!e.hasOwnProperty(a)||t[a]!==e[a])return!1}return!0}(o.params,u.params)){const e=[],n=r.matchStyles(o.value,o.params,e),a=r.matchStyles(u.value,u.params,e);e.length?this._engine.reportError(e):this._engine.afterFlush(()=>{xv(t,n),vv(t,a)})}return}const l=Jy(this._engine.playersByElement,t,[]);l.forEach(t=>{t.namespaceId==this.id&&t.triggerName==e&&t.queued&&t.destroy()});let d=r.matchTransition(o.value,u.value,t,u.params),c=!1;if(!d){if(!a)return;d=r.fallbackTransition,c=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:d,fromState:o,toState:u,player:i,isFallbackTransition:c}),c||(Ox(t,"ng-animate-queued"),i.onStart(()=>{wx(t,"ng-animate-queued")})),i.onDone(()=>{let e=this.players.indexOf(i);e>=0&&this.players.splice(e,1);const n=this._engine.playersByElement.get(t);if(n){let t=n.indexOf(i);t>=0&&n.splice(t,1)}}),this.players.push(i),l.push(i),i}deregister(t){delete this._triggers[t],this._engine.statesByElement.forEach((e,n)=>{delete e[t]}),this._elementListeners.forEach((e,n)=>{this._elementListeners.set(n,e.filter(e=>e.name!=t))})}clearElementCache(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);const e=this._engine.playersByElement.get(t);e&&(e.forEach(t=>t.destroy()),this._engine.playersByElement.delete(t))}_signalRemovalForInnerTriggers(t,e,n=!1){this._engine.driver.query(t,".ng-trigger",!0).forEach(t=>{if(t.__ng_removed)return;const n=this._engine.fetchNamespacesByElement(t);n.size?n.forEach(n=>n.triggerLeaveAnimation(t,e,!1,!0)):this.clearElementCache(t)})}triggerLeaveAnimation(t,e,n,a){const r=this._engine.statesByElement.get(t);if(r){const i=[];if(Object.keys(r).forEach(e=>{if(this._triggers[e]){const n=this.trigger(t,e,"void",a);n&&i.push(n)}}),i.length)return this._engine.markElementAsRemoved(this.id,t,!0,e),n&&Uy(i).onDone(()=>this._engine.processLeaveNode(t)),!0}return!1}prepareLeaveAnimationListeners(t){const e=this._elementListeners.get(t);if(e){const n=new Set;e.forEach(e=>{const a=e.name;if(n.has(a))return;n.add(a);const r=this._triggers[a].fallbackTransition,i=this._engine.statesByElement.get(t)[a]||px,s=new gx("void"),o=new yx(this.id,a,t);this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:a,transition:r,fromState:i,toState:s,player:o,isFallbackTransition:!0})})}}removeNode(t,e){const n=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e,!0),this.triggerLeaveAnimation(t,e,!0))return;let a=!1;if(n.totalAnimations){const e=n.players.length?n.playersByQueriedElement.get(t):[];if(e&&e.length)a=!0;else{let e=t;for(;e=e.parentNode;)if(n.statesByElement.get(e)){a=!0;break}}}this.prepareLeaveAnimationListeners(t),a?n.markElementAsRemoved(this.id,t,!1,e):(n.afterFlush(()=>this.clearElementCache(t)),n.destroyInnerAnimations(t),n._onRemovalComplete(t,e))}insertNode(t,e){Ox(t,this._hostClassName)}drainQueuedTransitions(t){const e=[];return this._queue.forEach(n=>{const a=n.player;if(a.destroyed)return;const r=n.element,i=this._elementListeners.get(r);i&&i.forEach(e=>{if(e.name==n.triggerName){const a=Zy(r,n.triggerName,n.fromState.value,n.toState.value);a._data=t,Ky(n.player,e.phase,a,e.callback)}}),a.markedForDestroy?this._engine.afterFlush(()=>{a.destroy()}):e.push(n)}),this._queue=[],e.sort((t,e)=>{const n=t.transition.ast.depCount,a=e.transition.ast.depCount;return 0==n||0==a?n-a:this._engine.driver.containsElement(t.element,e.element)?1:-1})}destroy(t){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,t)}elementContainsData(t){let e=!1;return this._elementListeners.has(t)&&(e=!0),e=!!this._queue.find(e=>e.element===t)||e,e}}class mx{constructor(t,e,n){this.bodyNode=t,this.driver=e,this._normalizer=n,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=(t,e)=>{}}_onRemovalComplete(t,e){this.onRemovalComplete(t,e)}get queuedPlayers(){const t=[];return this._namespaceList.forEach(e=>{e.players.forEach(e=>{e.queued&&t.push(e)})}),t}createNamespace(t,e){const n=new bx(t,e,this);return e.parentNode?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[t]=n}_balanceNamespaceList(t,e){const n=this._namespaceList.length-1;if(n>=0){let a=!1;for(let r=n;r>=0;r--)if(this.driver.containsElement(this._namespaceList[r].hostElement,e)){this._namespaceList.splice(r+1,0,t),a=!0;break}a||this._namespaceList.splice(0,0,t)}else this._namespaceList.push(t);return this.namespacesByHostElement.set(e,t),t}register(t,e){let n=this._namespaceLookup[t];return n||(n=this.createNamespace(t,e)),n}registerTrigger(t,e,n){let a=this._namespaceLookup[t];a&&a.register(e,n)&&this.totalAnimations++}destroy(t,e){if(!t)return;const n=this._fetchNamespace(t);this.afterFlush(()=>{this.namespacesByHostElement.delete(n.hostElement),delete this._namespaceLookup[t];const e=this._namespaceList.indexOf(n);e>=0&&this._namespaceList.splice(e,1)}),this.afterFlushAnimationsDone(()=>n.destroy(e))}_fetchNamespace(t){return this._namespaceLookup[t]}fetchNamespacesByElement(t){const e=new Set,n=this.statesByElement.get(t);if(n){const t=Object.keys(n);for(let a=0;a<t.length;a++){const r=n[t[a]].namespaceId;if(r){const t=this._fetchNamespace(r);t&&e.add(t)}}}return e}trigger(t,e,n,a){if(vx(e)){const r=this._fetchNamespace(t);if(r)return r.trigger(e,n,a),!0}return!1}insertNode(t,e,n,a){if(!vx(e))return;const r=e.__ng_removed;if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;const t=this.collectedLeaveElements.indexOf(e);t>=0&&this.collectedLeaveElements.splice(t,1)}if(t){const a=this._fetchNamespace(t);a&&a.insertNode(e,n)}a&&this.collectEnterElement(e)}collectEnterElement(t){this.collectedEnterElements.push(t)}markElementAsDisabled(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),Ox(t,"ng-animate-disabled")):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),wx(t,"ng-animate-disabled"))}removeNode(t,e,n,a){if(vx(e)){const r=t?this._fetchNamespace(t):null;if(r?r.removeNode(e,a):this.markElementAsRemoved(t,e,!1,a),n){const n=this.namespacesByHostElement.get(e);n&&n.id!==t&&n.removeNode(e,a)}}else this._onRemovalComplete(e,a)}markElementAsRemoved(t,e,n,a){this.collectedLeaveElements.push(e),e.__ng_removed={namespaceId:t,setForRemoval:a,hasAnimation:n,removedBeforeQueried:!1}}listen(t,e,n,a,r){return vx(e)?this._fetchNamespace(t).listen(e,n,a,r):()=>{}}_buildInstruction(t,e,n,a,r){return t.transition.build(this.driver,t.element,t.fromState.value,t.toState.value,n,a,t.fromState.options,t.toState.options,e,r)}destroyInnerAnimations(t){let e=this.driver.query(t,".ng-trigger",!0);e.forEach(t=>this.destroyActiveAnimationsForElement(t)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(t,".ng-animating",!0),e.forEach(t=>this.finishActiveQueriedAnimationOnElement(t)))}destroyActiveAnimationsForElement(t){const e=this.playersByElement.get(t);e&&e.forEach(t=>{t.queued?t.markedForDestroy=!0:t.destroy()})}finishActiveQueriedAnimationOnElement(t){const e=this.playersByQueriedElement.get(t);e&&e.forEach(t=>t.finish())}whenRenderingDone(){return new Promise(t=>{if(this.players.length)return Uy(this.players).onDone(()=>t());t()})}processLeaveNode(t){const e=t.__ng_removed;if(e&&e.setForRemoval){if(t.__ng_removed=fx,e.namespaceId){this.destroyInnerAnimations(t);const n=this._fetchNamespace(e.namespaceId);n&&n.clearElementCache(t)}this._onRemovalComplete(t,e.setForRemoval)}this.driver.matchesElement(t,".ng-animate-disabled")&&this.markElementAsDisabled(t,!1),this.driver.query(t,".ng-animate-disabled",!0).forEach(t=>{this.markElementAsDisabled(t,!1)})}flush(t=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((t,e)=>this._balanceNamespaceList(t,e)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let n=0;n<this.collectedEnterElements.length;n++)Ox(this.collectedEnterElements[n],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){const n=[];try{e=this._flushAnimations(n,t)}finally{for(let t=0;t<n.length;t++)n[t]()}}else for(let n=0;n<this.collectedLeaveElements.length;n++)this.processLeaveNode(this.collectedLeaveElements[n]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(t=>t()),this._flushFns=[],this._whenQuietFns.length){const t=this._whenQuietFns;this._whenQuietFns=[],e.length?Uy(e).onDone(()=>{t.forEach(t=>t())}):t.forEach(t=>t())}}reportError(t){throw new Error(`Unable to process animations due to the following failed trigger transitions\n ${t.join("\n")}`)}_flushAnimations(t,e){const n=new Yv,a=[],r=new Map,i=[],s=new Map,o=new Map,u=new Map,l=new Set;this.disabledNodes.forEach(t=>{l.add(t);const e=this.driver.query(t,".ng-animate-queued",!0);for(let n=0;n<e.length;n++)l.add(e[n])});const d=this.bodyNode,c=Array.from(this.statesByElement.keys()),f=Tx(c,this.collectedEnterElements),h=new Map;let g=0;f.forEach((t,e)=>{const n="ng-enter"+g++;h.set(e,n),t.forEach(t=>Ox(t,n))});const p=[],b=new Set,m=new Set;for(let A=0;A<this.collectedLeaveElements.length;A++){const t=this.collectedLeaveElements[A],e=t.__ng_removed;e&&e.setForRemoval&&(p.push(t),b.add(t),e.hasAnimation?this.driver.query(t,".ng-star-inserted",!0).forEach(t=>b.add(t)):m.add(t))}const y=new Map,v=Tx(c,Array.from(b));v.forEach((t,e)=>{const n="ng-leave"+g++;y.set(e,n),t.forEach(t=>Ox(t,n))}),t.push(()=>{f.forEach((t,e)=>{const n=h.get(e);t.forEach(t=>wx(t,n))}),v.forEach((t,e)=>{const n=y.get(e);t.forEach(t=>wx(t,n))}),p.forEach(t=>{this.processLeaveNode(t)})});const x=[],_=[];for(let A=this._namespaceList.length-1;A>=0;A--)this._namespaceList[A].drainQueuedTransitions(e).forEach(t=>{const e=t.player,r=t.element;if(x.push(e),this.collectedEnterElements.length){const t=r.__ng_removed;if(t&&t.setForMove)return void e.destroy()}const l=!d||!this.driver.containsElement(d,r),c=y.get(r),f=h.get(r),g=this._buildInstruction(t,n,f,c,l);if(!g.errors||!g.errors.length)return l?(e.onStart(()=>xv(r,g.fromStyles)),e.onDestroy(()=>vv(r,g.toStyles)),void a.push(e)):t.isFallbackTransition?(e.onStart(()=>xv(r,g.fromStyles)),e.onDestroy(()=>vv(r,g.toStyles)),void a.push(e)):(g.timelines.forEach(t=>t.stretchStartingKeyframe=!0),n.append(r,g.timelines),i.push({instruction:g,player:e,element:r}),g.queriedElements.forEach(t=>Jy(s,t,[]).push(e)),g.preStyleProps.forEach((t,e)=>{const n=Object.keys(t);if(n.length){let t=o.get(e);t||o.set(e,t=new Set),n.forEach(e=>t.add(e))}}),void g.postStyleProps.forEach((t,e)=>{const n=Object.keys(t);let a=u.get(e);a||u.set(e,a=new Set),n.forEach(t=>a.add(t))}));_.push(g)});if(_.length){const t=[];_.forEach(e=>{t.push(`@${e.triggerName} has failed due to:\n`),e.errors.forEach(e=>t.push(`- ${e}\n`))}),x.forEach(t=>t.destroy()),this.reportError(t)}const T=new Map,O=new Map;i.forEach(t=>{const e=t.element;n.has(e)&&(O.set(e,e),this._beforeAnimationBuild(t.player.namespaceId,t.instruction,T))}),a.forEach(t=>{const e=t.element;this._getPreviousPlayers(e,!1,t.namespaceId,t.triggerName,null).forEach(t=>{Jy(T,e,[]).push(t),t.destroy()})});const w=p.filter(t=>Ix(t,o,u)),S=new Map;_x(S,this.driver,m,u,K.a).forEach(t=>{Ix(t,o,u)&&w.push(t)});const I=new Map;f.forEach((t,e)=>{_x(I,this.driver,new Set(t),o,K.l)}),w.forEach(t=>{const e=S.get(t),n=I.get(t);S.set(t,Object.assign({},e,n))});const N=[],C=[],R={};i.forEach(t=>{const{element:e,player:i,instruction:s}=t;if(n.has(e)){if(l.has(e))return i.onDestroy(()=>vv(e,s.toStyles)),i.disabled=!0,i.overrideTotalTime(s.totalTime),void a.push(i);let t=R;if(O.size>1){let n=e;const a=[];for(;n=n.parentNode;){const e=O.get(n);if(e){t=e;break}a.push(n)}a.forEach(e=>O.set(e,t))}const n=this._buildAnimation(i.namespaceId,s,T,r,I,S);if(i.setRealPlayer(n),t===R)N.push(i);else{const e=this.playersByElement.get(t);e&&e.length&&(i.parentPlayer=Uy(e)),a.push(i)}}else xv(e,s.fromStyles),i.onDestroy(()=>vv(e,s.toStyles)),C.push(i),l.has(e)&&a.push(i)}),C.forEach(t=>{const e=r.get(t.element);if(e&&e.length){const n=Uy(e);t.setRealPlayer(n)}}),a.forEach(t=>{t.parentPlayer?t.syncPlayerEvents(t.parentPlayer):t.destroy()});for(let A=0;A<p.length;A++){const t=p[A],e=t.__ng_removed;if(wx(t,"ng-leave"),e&&e.hasAnimation)continue;let n=[];if(s.size){let e=s.get(t);e&&e.length&&n.push(...e);let a=this.driver.query(t,".ng-animating",!0);for(let t=0;t<a.length;t++){let e=s.get(a[t]);e&&e.length&&n.push(...e)}}const a=n.filter(t=>!t.destroyed);a.length?Sx(this,t,a):this.processLeaveNode(t)}return p.length=0,N.forEach(t=>{this.players.push(t),t.onDone(()=>{t.destroy();const e=this.players.indexOf(t);this.players.splice(e,1)}),t.play()}),N}elementContainsData(t,e){let n=!1;const a=e.__ng_removed;return a&&a.setForRemoval&&(n=!0),this.playersByElement.has(e)&&(n=!0),this.playersByQueriedElement.has(e)&&(n=!0),this.statesByElement.has(e)&&(n=!0),this._fetchNamespace(t).elementContainsData(e)||n}afterFlush(t){this._flushFns.push(t)}afterFlushAnimationsDone(t){this._whenQuietFns.push(t)}_getPreviousPlayers(t,e,n,a,r){let i=[];if(e){const e=this.playersByQueriedElement.get(t);e&&(i=e)}else{const e=this.playersByElement.get(t);if(e){const t=!r||"void"==r;e.forEach(e=>{e.queued||(t||e.triggerName==a)&&i.push(e)})}}return(n||a)&&(i=i.filter(t=>!(n&&n!=t.namespaceId||a&&a!=t.triggerName))),i}_beforeAnimationBuild(t,e,n){const a=e.element,r=e.isRemovalTransition?void 0:t,i=e.isRemovalTransition?void 0:e.triggerName;for(const s of e.timelines){const t=s.element,o=t!==a,u=Jy(n,t,[]);this._getPreviousPlayers(t,o,r,i,e.toState).forEach(t=>{const e=t.getRealPlayer();e.beforeDestroy&&e.beforeDestroy(),t.destroy(),u.push(t)})}xv(a,e.fromStyles)}_buildAnimation(t,e,n,a,r,i){const s=e.triggerName,o=e.element,u=[],l=new Set,d=new Set,c=e.timelines.map(e=>{const c=e.element;l.add(c);const f=c.__ng_removed;if(f&&f.removedBeforeQueried)return new K.d(e.duration,e.delay);const h=c!==o,g=function(t){const e=[];return function t(e,n){for(let a=0;a<e.length;a++){const r=e[a];r instanceof K.k?t(r.players,n):n.push(r)}}(t,e),e}((n.get(c)||cx).map(t=>t.getRealPlayer())).filter(t=>!!t.element&&t.element===c),p=r.get(c),b=i.get(c),m=Wy(0,this._normalizer,0,e.keyframes,p,b),y=this._buildPlayer(e,m,g);if(e.subTimeline&&a&&d.add(c),h){const e=new yx(t,s,c);e.setRealPlayer(y),u.push(e)}return y});u.forEach(t=>{Jy(this.playersByQueriedElement,t.element,[]).push(t),t.onDone(()=>function(t,e,n){let a;if(t instanceof Map){if(a=t.get(e),a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&t.delete(e)}}else if(a=t[e],a){if(a.length){const t=a.indexOf(n);a.splice(t,1)}0==a.length&&delete t[e]}return a}(this.playersByQueriedElement,t.element,t))}),l.forEach(t=>Ox(t,"ng-animating"));const f=Uy(c);return f.onDestroy(()=>{l.forEach(t=>wx(t,"ng-animating")),vv(o,e.toStyles)}),d.forEach(t=>{Jy(a,t,[]).push(f)}),f}_buildPlayer(t,e,n){return e.length>0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,n):new K.d(t.duration,t.delay)}}class yx{constructor(t,e,n){this.namespaceId=t,this.triggerName=e,this.element=n,this._player=new K.d,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(t){this._containsRealPlayer||(this._player=t,Object.keys(this._queuedCallbacks).forEach(e=>{this._queuedCallbacks[e].forEach(n=>Ky(t,e,void 0,n))}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(t){this.totalTime=t}syncPlayerEvents(t){const e=this._player;e.triggerCallback&&t.onStart(()=>e.triggerCallback("start")),t.onDone(()=>this.finish()),t.onDestroy(()=>this.destroy())}_queueEvent(t,e){Jy(this._queuedCallbacks,t,[]).push(e)}onDone(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)}onStart(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)}onDestroy(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)}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(t){this.queued||this._player.setPosition(t)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(t){const e=this._player;e.triggerCallback&&e.triggerCallback(t)}}function vx(t){return t&&1===t.nodeType}function xx(t,e){const n=t.style.display;return t.style.display=null!=e?e:"none",n}function _x(t,e,n,a,r){const i=[];n.forEach(t=>i.push(xx(t)));const s=[];a.forEach((n,a)=>{const i={};n.forEach(t=>{const n=i[t]=e.computeStyle(a,t,r);n&&0!=n.length||(a.__ng_removed=hx,s.push(a))}),t.set(a,i)});let o=0;return n.forEach(t=>xx(t,i[o++])),s}function Tx(t,e){const n=new Map;if(t.forEach(t=>n.set(t,[])),0==e.length)return n;const a=new Set(e),r=new Map;return e.forEach(t=>{const e=function t(e){if(!e)return 1;let i=r.get(e);if(i)return i;const s=e.parentNode;return i=n.has(s)?s:a.has(s)?1:t(s),r.set(e,i),i}(t);1!==e&&n.get(e).push(t)}),n}function Ox(t,e){if(t.classList)t.classList.add(e);else{let n=t.$$classes;n||(n=t.$$classes={}),n[e]=!0}}function wx(t,e){if(t.classList)t.classList.remove(e);else{let n=t.$$classes;n&&delete n[e]}}function Sx(t,e,n){Uy(n).onDone(()=>t.processLeaveNode(e))}function Ix(t,e,n){const a=n.get(t);if(!a)return!1;let r=e.get(t);return r?a.forEach(t=>r.add(t)):e.set(t,a),n.delete(t),!0}class Nx{constructor(t,e,n){this.bodyNode=t,this._driver=e,this._triggerCache={},this.onRemovalComplete=(t,e)=>{},this._transitionEngine=new mx(t,e,n),this._timelineEngine=new dx(t,e,n),this._transitionEngine.onRemovalComplete=(t,e)=>this.onRemovalComplete(t,e)}registerTrigger(t,e,n,a,r){const i=t+"-"+a;let s=this._triggerCache[i];if(!s){const t=[],e=qv(this._driver,r,t);if(t.length)throw new Error(`The animation trigger "${a}" has failed to build due to the following errors:\n - ${t.join("\n - ")}`);s=function(t,e){return new ox(t,e)}(a,e),this._triggerCache[i]=s}this._transitionEngine.registerTrigger(e,a,s)}register(t,e){this._transitionEngine.register(t,e)}destroy(t,e){this._transitionEngine.destroy(t,e)}onInsert(t,e,n,a){this._transitionEngine.insertNode(t,e,n,a)}onRemove(t,e,n,a){this._transitionEngine.removeNode(t,e,a||!1,n)}disableAnimations(t,e){this._transitionEngine.markElementAsDisabled(t,e)}process(t,e,n,a){if("@"==n.charAt(0)){const[t,r]=Qy(n);this._timelineEngine.command(t,e,r,a)}else this._transitionEngine.trigger(t,e,n,a)}listen(t,e,n,a,r){if("@"==n.charAt(0)){const[t,a]=Qy(n);return this._timelineEngine.listen(t,e,a,r)}return this._transitionEngine.listen(t,e,n,a,r)}flush(t=-1){this._transitionEngine.flush(t)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}function Cx(t,e){let n=null,a=null;return Array.isArray(e)&&e.length?(n=Ax(e[0]),e.length>1&&(a=Ax(e[e.length-1]))):e&&(n=Ax(e)),n||a?new Rx(t,n,a):null}let Rx=(()=>{class t{constructor(e,n,a){this._element=e,this._startStyles=n,this._endStyles=a,this._state=0;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r={}),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&vv(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(vv(this._element,this._initialStyles),this._endStyles&&(vv(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(xv(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(xv(this._element,this._endStyles),this._endStyles=null),vv(this._element,this._initialStyles),this._state=3)}}return t.initialStylesByElement=new WeakMap,t})();function Ax(t){let e=null;const n=Object.keys(t);for(let a=0;a<n.length;a++){const r=n[a];kx(r)&&(e=e||{},e[r]=t[r])}return e}function kx(t){return"display"===t||"position"===t}class Ex{constructor(t,e,n,a,r,i,s){this._element=t,this._name=e,this._duration=n,this._delay=a,this._easing=r,this._fillMode=i,this._onDoneFn=s,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=t=>this._handleCallback(t)}apply(){!function(t,e){const n=jx(t,"").trim();n.length&&(function(t,e){let n=0;for(let a=0;a<t.length;a++)","===t.charAt(a)&&n++}(n),e=`${n}, ${e}`),qx(t,"",e)}(this._element,`${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`),Mx(this._element,this._eventFn,!1),this._startTime=Date.now()}pause(){Lx(this._element,this._name,"paused")}resume(){Lx(this._element,this._name,"running")}setPosition(t){const e=Dx(this._element,this._name);this._position=t*this._duration,qx(this._element,"Delay",`-${this._position}ms`,e)}getPosition(){return this._position}_handleCallback(t){const e=t._ngTestManualTimestamp||Date.now(),n=1e3*parseFloat(t.elapsedTime.toFixed(3));t.animationName==this._name&&Math.max(e-this._startTime,0)>=this._delay&&n>=this._duration&&this.finish()}finish(){this._finished||(this._finished=!0,this._onDoneFn(),Mx(this._element,this._eventFn,!0))}destroy(){this._destroyed||(this._destroyed=!0,this.finish(),function(t,e){const n=jx(t,"").split(","),a=Px(n,e);a>=0&&(n.splice(a,1),qx(t,"",n.join(",")))}(this._element,this._name))}}function Lx(t,e,n){qx(t,"PlayState",n,Dx(t,e))}function Dx(t,e){const n=jx(t,"");return n.indexOf(",")>0?Px(n.split(","),e):Px([n],e)}function Px(t,e){for(let n=0;n<t.length;n++)if(t[n].indexOf(e)>=0)return n;return-1}function Mx(t,e,n){n?t.removeEventListener("animationend",e):t.addEventListener("animationend",e)}function qx(t,e,n,a){const r="animation"+e;if(null!=a){const e=t.style[r];if(e.length){const t=e.split(",");t[a]=n,n=t.join(",")}}t.style[r]=n}function jx(t,e){return t.style["animation"+e]}class Fx{constructor(t,e,n,a,r,i,s,o){this.element=t,this.keyframes=e,this.animationName=n,this._duration=a,this._delay=r,this._finalStyles=s,this._specialStyles=o,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this.currentSnapshot={},this._state=0,this.easing=i||"linear",this.totalTime=a+r,this._buildStyler()}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}destroy(){this.init(),this._state>=4||(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}_flushDoneFns(){this._onDoneFns.forEach(t=>t()),this._onDoneFns=[]}_flushStartFns(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}finish(){this.init(),this._state>=3||(this._state=3,this._styler.finish(),this._flushStartFns(),this._specialStyles&&this._specialStyles.finish(),this._flushDoneFns())}setPosition(t){this._styler.setPosition(t)}getPosition(){return this._styler.getPosition()}hasStarted(){return this._state>=2}init(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())}play(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2,this._specialStyles&&this._specialStyles.start()),this._styler.resume()}pause(){this.init(),this._styler.pause()}restart(){this.reset(),this.play()}reset(){this._styler.destroy(),this._buildStyler(),this._styler.apply()}_buildStyler(){this._styler=new Ex(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",()=>this.finish())}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}beforeDestroy(){this.init();const t={};if(this.hasStarted()){const e=this._state>=3;Object.keys(this._finalStyles).forEach(n=>{"offset"!=n&&(t[n]=e?this._finalStyles[n]:kv(this.element,n))})}this.currentSnapshot=t}}class Gx extends K.d{constructor(t,e){super(),this.element=t,this._startingStyles={},this.__initialized=!1,this._styles=lv(e)}init(){!this.__initialized&&this._startingStyles&&(this.__initialized=!0,Object.keys(this._styles).forEach(t=>{this._startingStyles[t]=this.element.style[t]}),super.init())}play(){this._startingStyles&&(this.init(),Object.keys(this._styles).forEach(t=>this.element.style.setProperty(t,this._styles[t])),super.play())}destroy(){this._startingStyles&&(Object.keys(this._startingStyles).forEach(t=>{const e=this._startingStyles[t];e?this.element.style.setProperty(t,e):this.element.style.removeProperty(t)}),this._startingStyles=null,super.destroy())}}class Vx{constructor(){this._count=0,this._head=document.querySelector("head"),this._warningIssued=!1}validateStyleProperty(t){return iv(t)}matchesElement(t,e){return sv(t,e)}containsElement(t,e){return ov(t,e)}query(t,e,n){return uv(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}buildKeyframeElement(t,e,n){n=n.map(t=>lv(t));let a=`@keyframes ${e} {\n`,r="";n.forEach(t=>{r=" ";const e=parseFloat(t.offset);a+=`${r}${100*e}% {\n`,r+=" ",Object.keys(t).forEach(e=>{const n=t[e];switch(e){case"offset":return;case"easing":return void(n&&(a+=`${r}animation-timing-function: ${n};\n`));default:return void(a+=`${r}${e}: ${n};\n`)}}),a+=`${r}}\n`}),a+="}\n";const i=document.createElement("style");return i.innerHTML=a,i}animate(t,e,n,a,r,i=[],s){s&&this._notifyFaultyScrubber();const o=i.filter(t=>t instanceof Fx),u={};Cv(n,a)&&o.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>u[t]=e[t])});const l=function(t){let e={};return t&&(Array.isArray(t)?t:[t]).forEach(t=>{Object.keys(t).forEach(n=>{"offset"!=n&&"easing"!=n&&(e[n]=t[n])})}),e}(e=Rv(t,e,u));if(0==n)return new Gx(t,l);const d=`gen_css_kf_${this._count++}`,c=this.buildKeyframeElement(t,d,e);document.querySelector("head").appendChild(c);const f=Cx(t,e),h=new Fx(t,e,d,n,a,r,l,f);return h.onDestroy(()=>{var t;(t=c).parentNode.removeChild(t)}),h}_notifyFaultyScrubber(){this._warningIssued||(console.warn("@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\n","  visit http://bit.ly/IWukam to learn more about using the web-animation-js polyfill."),this._warningIssued=!0)}}class zx{constructor(t,e,n,a){this.element=t,this.keyframes=e,this.options=n,this._specialStyles=a,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.time=0,this.parentPlayer=null,this.currentSnapshot={},this._duration=n.duration,this._delay=n.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const t=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,t,this.options),this._finalKeyframe=t.length?t[t.length-1]:{},this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_triggerWebAnimation(t,e,n){return t.animate(e,n)}onStart(t){this._onStartFns.push(t)}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(t=>t()),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}_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(t=>t()),this._onDestroyFns=[])}setPosition(t){this.domPlayer.currentTime=t*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const t={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(e=>{"offset"!=e&&(t[e]=this._finished?this._finalKeyframe[e]:kv(this.element,e))}),this.currentSnapshot=t}triggerCallback(t){const e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}}class Bx{constructor(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(Yx().toString()),this._cssKeyframesDriver=new Vx}validateStyleProperty(t){return iv(t)}matchesElement(t,e){return sv(t,e)}containsElement(t,e){return ov(t,e)}query(t,e,n){return uv(t,e,n)}computeStyle(t,e,n){return window.getComputedStyle(t)[e]}overrideWebAnimationsSupport(t){this._isNativeImpl=t}animate(t,e,n,a,r,i=[],s){if(!s&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(t,e,n,a,r,i);const o={duration:n,delay:a,fill:0==a?"both":"forwards"};r&&(o.easing=r);const u={},l=i.filter(t=>t instanceof zx);Cv(n,a)&&l.forEach(t=>{let e=t.currentSnapshot;Object.keys(e).forEach(t=>u[t]=e[t])});const d=Cx(t,e=Rv(t,e=e.map(t=>bv(t,!1)),u));return new zx(t,e,o,d)}}function Yx(){return"undefined"!=typeof window&&void 0!==window.document&&Element.prototype.animate||{}}class Hx extends K.b{constructor(t,e){super(),this._nextAnimationId=0,this._renderer=t.createRenderer(e.body,{id:"0",encapsulation:s.ViewEncapsulation.None,styles:[],data:{animation:[]}})}build(t){const e=this._nextAnimationId.toString();this._nextAnimationId++;const n=Array.isArray(t)?Object(K.f)(t):t;return Kx(this._renderer,null,e,"register",[n]),new Ux(e,this._renderer)}}class Ux extends K.c{constructor(t,e){super(),this._id=t,this._renderer=e}create(t,e){return new Wx(this._id,t,e||{},this._renderer)}}class Wx{constructor(t,e,n,a){this.id=t,this.element=e,this._renderer=a,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",n)}_listen(t,e){return this._renderer.listen(this.element,`@@${this.id}:${t}`,e)}_command(t,...e){return Kx(this._renderer,this.element,this.id,t,e)}onDone(t){this._listen("done",t)}onStart(t){this._listen("start",t)}onDestroy(t){this._listen("destroy",t)}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")}setPosition(t){this._command("setPosition",t)}getPosition(){return 0}}function Kx(t,e,n,a,r){return t.setProperty(e,`@@${n}:${a}`,r)}class $x{constructor(t,e,n){this.delegate=t,this.engine=e,this._zone=n,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),e.onRemovalComplete=(t,e)=>{e&&e.parentNode(t)&&e.removeChild(t.parentNode,t)}}createRenderer(t,e){const n=this.delegate.createRenderer(t,e);if(!(t&&e&&e.data&&e.data.animation)){let t=this._rendererCache.get(n);return t||(t=new Zx("",n,this.engine),this._rendererCache.set(n,t)),t}const a=e.id,r=e.id+"-"+this._currentId;return this._currentId++,this.engine.register(r,t),e.data.animation.forEach(e=>this.engine.registerTrigger(a,r,t,e.name,e)),new Jx(this,r,n,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(t,e,n){t>=0&&t<this._microtaskId?this._zone.run(()=>e(n)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(t=>{const[e,n]=t;e(n)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([e,n]))}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()}}class Zx{constructor(t,e,n){this.namespaceId=t,this.delegate=e,this.engine=n,this.destroyNode=this.delegate.destroyNode?t=>e.destroyNode(t):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()}createElement(t,e){return this.delegate.createElement(t,e)}createComment(t){return this.delegate.createComment(t)}createText(t){return this.delegate.createText(t)}appendChild(t,e){this.delegate.appendChild(t,e),this.engine.onInsert(this.namespaceId,e,t,!1)}insertBefore(t,e,n){this.delegate.insertBefore(t,e,n),this.engine.onInsert(this.namespaceId,e,t,!0)}removeChild(t,e,n){this.engine.onRemove(this.namespaceId,e,this.delegate,n)}selectRootElement(t,e){return this.delegate.selectRootElement(t,e)}parentNode(t){return this.delegate.parentNode(t)}nextSibling(t){return this.delegate.nextSibling(t)}setAttribute(t,e,n,a){this.delegate.setAttribute(t,e,n,a)}removeAttribute(t,e,n){this.delegate.removeAttribute(t,e,n)}addClass(t,e){this.delegate.addClass(t,e)}removeClass(t,e){this.delegate.removeClass(t,e)}setStyle(t,e,n,a){this.delegate.setStyle(t,e,n,a)}removeStyle(t,e,n){this.delegate.removeStyle(t,e,n)}setProperty(t,e,n){"@"==e.charAt(0)&&"@.disabled"==e?this.disableAnimations(t,!!n):this.delegate.setProperty(t,e,n)}setValue(t,e){this.delegate.setValue(t,e)}listen(t,e,n){return this.delegate.listen(t,e,n)}disableAnimations(t,e){this.engine.disableAnimations(t,e)}}class Jx extends Zx{constructor(t,e,n,a){super(e,n,a),this.factory=t,this.namespaceId=e}setProperty(t,e,n){"@"==e.charAt(0)?"."==e.charAt(1)&&"@.disabled"==e?this.disableAnimations(t,n=void 0===n||!!n):this.engine.process(this.namespaceId,t,e.substr(1),n):this.delegate.setProperty(t,e,n)}listen(t,e,n){if("@"==e.charAt(0)){const a=function(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(t);let r=e.substr(1),i="";return"@"!=r.charAt(0)&&([r,i]=function(t){const e=t.indexOf(".");return[t.substring(0,e),t.substr(e+1)]}(r)),this.engine.listen(this.namespaceId,a,r,i,t=>{this.factory.scheduleListenerCallback(t._data||-1,n,t)})}return this.delegate.listen(t,e,n)}}class Qx extends Nx{constructor(t,e,n){super(t.body,e,n)}}function Xx(){return"function"==typeof Yx()?new Bx:new Vx}function t_(){return new ex}function e_(t,e,n){return new $x(t,e,n)}const n_=new s.InjectionToken("AnimationModuleType");class a_{}var r_=n("Avrn");let i_=(()=>{class t{constructor(t,e){this.router=t,this.authStorageService=e}canActivate(){return!(this.authStorageService.isLoggedIn()&&!this.authStorageService.isSSO()&&this.authStorageService.getPwdUpdateRequired()&&(this.router.navigate(["/login-change-password"]),1))}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](qt.m),s["ɵɵinject"](vt.a))},token:t,providedIn:"root"}),t})();var s_=n("Vhfg");let o_=(()=>{class t{constructor(t,e){this.http=t,this.router=e}canActivate(t){return this.doCheck(t)}canActivateChild(t){return this.doCheck(t)}doCheck(e){if(e.url.length>0&&t.WHITELIST.includes(e.url[0].path))return Object(An.a)(!0);const n=e.data.moduleStatusGuardConfig;return this.http.get(`api/${n.apiPath}/status`).pipe(Object(Ee.a)(t=>(t.available||this.router.navigate([n.redirectTo,t.message||""]),t.available)),Object(By.a)(()=>(this.router.navigate([n.redirectTo]),Object(An.a)(!1))))}}return t.WHITELIST=["501"],t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c),s["ɵɵinject"](qt.m))},token:t,providedIn:"root"}),t})(),u_=(()=>{class t{constructor(t,e){this.authStorageService=t,this.router=e}canActivate(){return!this.authStorageService.isSSO()||(this.router.navigate(["404"]),!1)}canActivateChild(){return this.canActivate()}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](vt.a),s["ɵɵinject"](qt.m))},token:t,providedIn:"root"}),t})();class l_ extends Yn{resolve(t){const e=[],n=t.queryParams.fromLink||null;let a="";switch(n){case"/monitor":a="Monitors";break;case"/hosts":a="Hosts"}return e.push({text:"Cluster",path:null}),e.push({text:a,path:n}),e.push({text:"Performance Counters",path:""}),e}}class d_ extends Yn{resolve(t){const e=t.params.name;return[{text:`${J.startCase(e)}/Edit`,path:e}]}}const c_={breadcrumbs:"Cluster/Hosts"},f_={breadcrumbs:At.a.CREATE},h_={breadcrumbs:"Cluster/Monitors"},g_={breadcrumbs:"Cluster/Services"},p_={breadcrumbs:"Cluster/Inventory"},b_={breadcrumbs:"Cluster/OSDs"},m_={breadcrumbs:At.a.CREATE},y_={breadcrumbs:"Cluster/Configuration"},v_={breadcrumbs:At.a.EDIT},x_={breadcrumbs:"Cluster/CRUSH map"},__={breadcrumbs:"Cluster/Logs"},T_={breadcrumbs:"Telemetry configuration"},O_={breadcrumbs:"Cluster/Monitoring"},w_={breadcrumbs:`${At.a.CREATE} Silence`},S_={breadcrumbs:At.a.CREATE},I_={breadcrumbs:At.a.EDIT},N_={breadcrumbs:At.a.RECREATE},C_={breadcrumbs:l_},R_={breadcrumbs:"Cluster/Manager modules"},A_={breadcrumbs:d_},k_={breadcrumbs:"Pools"},E_=()=>Promise.all([n.e(1),n.e(6)]).then(n.bind(null,"nOaW")).then(t=>t.RoutedPoolModuleNgFactory),L_={breadcrumbs:!0,text:"Block",path:null},D_=()=>Promise.all([n.e(1),n.e(5)]).then(n.bind(null,"J6Oi")).then(t=>t.RoutedBlockModuleNgFactory),P_={breadcrumbs:"Filesystems"},M_={moduleStatusGuardConfig:{apiPath:"rgw",redirectTo:"rgw/501"},breadcrumbs:!0,text:"Object Gateway",path:null},q_=()=>n.e(7).then(n.bind(null,"Znkk")).then(t=>t.RoutedRgwModuleNgFactory),j_={breadcrumbs:"User management",path:null},F_=()=>n.e(8).then(n.bind(null,"DY6s")).then(t=>t.RoutedAuthModuleNgFactory),G_={breadcrumbs:"User profile",path:null},V_={breadcrumbs:At.a.EDIT},z_={breadcrumbs:"NFS"},B_={moduleStatusGuardConfig:{apiPath:"nfs-ganesha",redirectTo:"nfs/501"},breadcrumbs:"NFS"},Y_={breadcrumbs:At.a.CREATE},H_={breadcrumbs:At.a.EDIT};class U_{}var W_=n("yT6U"),K_=n("4DD9"),$_=n("+0ag"),Z_=n("IzCI"),J_=n("Dwqy"),Q_=n("uYzU"),X_=n("nSDx"),tT=n("SB+Q"),eT=n("BQkM"),nT=n("dEH0"),aT=n("G1/K"),rT=n("TJUb"),iT=n("efK2");class sT{constructor(){this.closeOthers=!1,this.isAnimated=!1}}class oT{static forRoot(){return{ngModule:oT,providers:[sT]}}}let uT=(()=>{class t{constructor(t){this.http=t}jsError(t,e,n){return this.http.post("ui-api/logging/js-error",{url:t,message:e,stack:n})}}return t.ngInjectableDef=s["ɵɵdefineInjectable"]({factory:function(){return new t(s["ɵɵinject"](X.c))},token:t,providedIn:fe.a}),t})();class lT{constructor(t){this.injector=t}handleError(t){const e=this.injector.get(uT),n=window.location.href;throw e.jsError(n,t&&t.message,t&&t.stack).subscribe(),t}}var dT=n("aHM3"),cT=n("9Xeq"),fT=n("yGOH"),hT=n("bxSN"),gT=n("V/fk"),pT=n("ChqD"),bT=n("PCNd"),mT=n("LceX");class yT{}class vT{}var xT=n("G6Q+");class _T{}var TT=n("kJI8");class OT{}class wT{}class ST{}class IT{}class NT{}var CT=function(){function t(t){if(t)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}return t.forRoot=function(e){return{ngModule:t,providers:[{provide:X.a,useClass:Vy,multi:!0},e.jwtOptionsProvider||{provide:jy,useValue:e.config},Fy]}},t}(),RT=s["ɵcmf"](l,[d],(function(t){return s["ɵmod"]([s["ɵmpd"](512,s.ComponentFactoryResolver,s["ɵCodegenComponentFactoryResolver"],[[8,[_,T.a,ia,Mr,As,Ks,eo,ho,di,ou,Du,Zu,pl,Al,jd,tc,Nc,$c,tf,cf,Mf,vh,Dh,Fh,Xh,Vp,Up,eb,hb,yb,Ob,Cb,Lb,q,H,Db.a,ne.a,Pb.a,Mb.a,Mb.b,qb.a,jb.a,Fb.a,Gb.a,Vb.a,zb.a,zb.c,zb.b,zb.d,Ub,um,Po,pm,Tm,Pm,zm,uy,yy,Sy,Ry,Ly,qy]],[3,s.ComponentFactoryResolver],s.NgModuleRef]),s["ɵmpd"](4608,X.j,X.p,[i.DOCUMENT,s.PLATFORM_ID,X.n]),s["ɵmpd"](4608,X.q,X.q,[X.j,X.o]),s["ɵmpd"](4608,Fy,Fy,[jy]),s["ɵmpd"](4608,vt.a,vt.a,[]),s["ɵmpd"](5120,X.a,(function(t,e,n,a,r,i){return[t,new Vy(e,n),new Yy(a,r,i)]}),[X.q,jy,Fy,qt.m,vt.a,gt.a]),s["ɵmpd"](4608,X.m,X.m,[]),s["ɵmpd"](6144,X.k,null,[X.m]),s["ɵmpd"](4608,X.i,X.i,[X.k]),s["ɵmpd"](6144,X.b,null,[X.i]),s["ɵmpd"](4608,X.g,X.l,[X.b,s.Injector]),s["ɵmpd"](4608,X.c,X.c,[X.g]),s["ɵmpd"](4352,s.LOCALE_ID,"en-US",[]),s["ɵmpd"](4608,i.NgLocalization,i.NgLocaleLocalization,[s.LOCALE_ID,[2,i["ɵangular_packages_common_common_a"]]]),s["ɵmpd"](5120,s["ɵangular_packages_core_core_ba"],s["ɵangular_packages_core_core_r"],[s.NgZone]),s["ɵmpd"](5120,s.APP_ID,s["ɵangular_packages_core_core_f"],[]),s["ɵmpd"](5120,s.IterableDiffers,s["ɵangular_packages_core_core_n"],[]),s["ɵmpd"](5120,s.KeyValueDiffers,s["ɵangular_packages_core_core_o"],[]),s["ɵmpd"](4608,Fr.b,Fr.k,[i.DOCUMENT]),s["ɵmpd"](6144,s.Sanitizer,null,[Fr.b]),s["ɵmpd"](4608,Fr.e,Fr.g,[]),s["ɵmpd"](5120,Fr.c,(function(t,e,n,a,r,i,s,o){return[new Fr.i(t,e,n),new Fr.n(a),new Fr.m(r,i,s,o)]}),[i.DOCUMENT,s.NgZone,s.PLATFORM_ID,i.DOCUMENT,i.DOCUMENT,Fr.e,s["ɵConsole"],[2,Fr.f]]),s["ɵmpd"](4608,Fr.d,Fr.d,[Fr.c,s.NgZone]),s["ɵmpd"](135680,Fr.l,Fr.l,[i.DOCUMENT]),s["ɵmpd"](4608,Fr.j,Fr.j,[Fr.d,Fr.l,s.APP_ID]),s["ɵmpd"](5120,cv,Xx,[]),s["ɵmpd"](5120,tx,t_,[]),s["ɵmpd"](4608,Nx,Qx,[i.DOCUMENT,cv,tx]),s["ɵmpd"](5120,s.RendererFactory2,e_,[Fr.j,Nx,s.NgZone]),s["ɵmpd"](6144,Fr.o,null,[Fr.l]),s["ɵmpd"](4608,s.Testability,s.Testability,[s.NgZone]),s["ɵmpd"](4608,K.b,Hx,[s.RendererFactory2,i.DOCUMENT]),s["ɵmpd"](5120,qt.a,qt.B,[qt.m]),s["ɵmpd"](4608,qt.g,qt.g,[]),s["ɵmpd"](6144,qt.h,null,[qt.g]),s["ɵmpd"](135680,qt.s,qt.s,[qt.m,s.NgModuleFactoryLoader,s.Compiler,s.Injector,qt.h]),s["ɵmpd"](4608,qt.f,qt.f,[]),s["ɵmpd"](5120,qt.G,qt.x,[qt.m,i.ViewportScroller,qt.i]),s["ɵmpd"](5120,qt.j,qt.E,[qt.C]),s["ɵmpd"](5120,s.APP_BOOTSTRAP_LISTENER,(function(t){return[t]}),[qt.j]),s["ɵmpd"](4608,d_,d_,[]),s["ɵmpd"](4608,l_,l_,[]),s["ɵmpd"](4608,$.D,$.D,[]),s["ɵmpd"](4608,$.h,$.h,[]),s["ɵmpd"](4608,W_.a,W_.a,[]),s["ɵmpd"](4608,K_.a,K_.a,[]),s["ɵmpd"](5120,s.TRANSLATIONS,u,[s.LOCALE_ID]),s["ɵmpd"](4608,me.a,me.a,[s.TRANSLATIONS_FORMAT,s.TRANSLATIONS,s.LOCALE_ID,[2,me.b]]),s["ɵmpd"](4608,Pu.a,Pu.a,[me.a]),s["ɵmpd"](4608,i.DatePipe,i.DatePipe,[s.LOCALE_ID]),s["ɵmpd"](4608,gs.a,gs.a,[]),s["ɵmpd"](4608,$_.a,$_.a,[]),s["ɵmpd"](4608,Ea.a,Ea.a,[]),s["ɵmpd"](4608,_a.a,_a.a,[Ea.a]),s["ɵmpd"](4608,Z_.a,Z_.a,[Ea.a]),s["ɵmpd"](4608,Ta.a,Ta.a,[Ea.a]),s["ɵmpd"](4608,J_.a,J_.a,[]),s["ɵmpd"](4608,Q_.a,Q_.a,[]),s["ɵmpd"](4608,ps.a,ps.a,[]),s["ɵmpd"](4608,Td.a,Td.a,[]),s["ɵmpd"](4608,Se.a,Se.a,[i.DatePipe]),s["ɵmpd"](4608,X_.a,X_.a,[]),s["ɵmpd"](4608,tT.a,tT.a,[]),s["ɵmpd"](4608,vg.a,vg.a,[]),s["ɵmpd"](4608,eT.a,eT.a,[]),s["ɵmpd"](4608,nT.a,nT.a,[]),s["ɵmpd"](4608,aT.a,aT.a,[me.a]),s["ɵmpd"](4608,qs.a,qs.a,[]),s["ɵmpd"](4608,rT.a,rT.a,[]),s["ɵmpd"](4608,iT.a,iT.a,[]),s["ɵmpd"](4608,ae.b,ae.b,[]),s["ɵmpd"](4608,ua.a,ua.a,[]),s["ɵmpd"](4608,la.a,la.a,[s.NgZone,s.RendererFactory2,s.PLATFORM_ID]),s["ɵmpd"](4608,W.a,W.a,[s.ComponentFactoryResolver,s.NgZone,s.Injector,la.a,s.ApplicationRef]),s["ɵmpd"](4608,Te.c,Te.c,[]),s["ɵmpd"](4608,Qn.a,Qn.a,[]),s["ɵmpd"](4608,Lt.b,Lt.b,[s.RendererFactory2,W.a]),s["ɵmpd"](4608,cc.y,cc.y,[i.DOCUMENT]),s["ɵmpd"](4608,cc.r,cc.r,[]),s["ɵmpd"](4608,cc.a,cc.a,[]),s["ɵmpd"](4608,U.f,U.f,[]),s["ɵmpd"](4608,r_.a,r_.a,[qt.m,vt.a]),s["ɵmpd"](4608,oa.f,oa.f,[]),s["ɵmpd"](4608,rt.t,rt.t,[]),s["ɵmpd"](4608,rt.v,rt.v,[]),s["ɵmpd"](4608,rt.a,rt.a,[]),s["ɵmpd"](4608,rt.h,rt.h,[]),s["ɵmpd"](4608,rt.d,rt.d,[]),s["ɵmpd"](4608,rt.j,rt.j,[]),s["ɵmpd"](4608,rt.l,rt.l,[]),s["ɵmpd"](4608,rt.u,rt.u,[rt.v,rt.l]),s["ɵmpd"](5120,S,k,[A]),s["ɵmpd"](4608,C,C,[S]),s["ɵmpd"](4608,gg,gg,[]),s["ɵmpd"](4608,Zl,Zl,[]),s["ɵmpd"](4608,El,El,[]),s["ɵmpd"](4608,Xl,Xl,[]),s["ɵmpd"](4608,vl.a,vl.a,[]),s["ɵmpd"](4608,sT,sT,[]),s["ɵmpd"](4608,Z.g,Z.g,[Z.b]),s["ɵmpd"](1073742336,X.e,X.e,[]),s["ɵmpd"](1073742336,X.d,X.d,[]),s["ɵmpd"](1073742336,i.CommonModule,i.CommonModule,[]),s["ɵmpd"](512,s.ErrorHandler,lT,[s.Injector]),s["ɵmpd"](1024,s.NgProbeToken,(function(){return[qt.w()]}),[]),s["ɵmpd"](512,qt.C,qt.C,[s.Injector]),s["ɵmpd"](1024,s.APP_INITIALIZER,(function(t,e){return[Fr.p(t),qt.D(e)]}),[[2,s.NgProbeToken],qt.C]),s["ɵmpd"](512,s.ApplicationInitStatus,s.ApplicationInitStatus,[[2,s.APP_INITIALIZER]]),s["ɵmpd"](131584,s.ApplicationRef,s.ApplicationRef,[s.NgZone,s["ɵConsole"],s.Injector,s.ErrorHandler,s.ComponentFactoryResolver,s.ApplicationInitStatus]),s["ɵmpd"](1073742336,s.ApplicationModule,s.ApplicationModule,[s.ApplicationRef]),s["ɵmpd"](1073742336,Fr.a,Fr.a,[[3,Fr.a]]),s["ɵmpd"](1073742336,a_,a_,[]),s["ɵmpd"](1073742336,c.i,c.i,[]),s["ɵmpd"](1024,qt.v,qt.z,[[3,qt.m]]),s["ɵmpd"](512,qt.u,qt.c,[]),s["ɵmpd"](512,qt.b,qt.b,[]),s["ɵmpd"](256,qt.i,{useHash:!0,preloadingStrategy:qt.g},[]),s["ɵmpd"](1024,i.LocationStrategy,qt.y,[i.PlatformLocation,[2,i.APP_BASE_HREF],qt.i]),s["ɵmpd"](512,i.Location,i.Location,[i.LocationStrategy,i.PlatformLocation]),s["ɵmpd"](512,s.Compiler,s.Compiler,[]),s["ɵmpd"](512,s.NgModuleFactoryLoader,s.SystemJsNgModuleLoader,[s.Compiler,[2,s.SystemJsNgModuleLoaderConfig]]),s["ɵmpd"](1024,qt.k,(function(){return[[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"",component:ea,canActivate:[r_.a,i_],canActivateChild:[r_.a,i_],children:[{path:"dashboard",component:Ar},{path:"hosts",data:c_,children:[{path:"",component:xs},{path:"create",component:Gs,data:f_}]},{path:"monitor",component:Zs,data:h_},{path:"services",component:so,data:g_},{path:"inventory",component:ri,data:p_},{path:"osd",data:b_,children:[{path:"",component:$o},{path:"create",component:Ou,data:m_}]},{path:"configuration",data:y_,children:[{path:"",component:Bu},{path:"edit/:name",component:Qu,data:v_}]},{path:"crush-map",component:Tl,data:x_},{path:"logs",component:wd,data:__},{path:"telemetry",component:Gd,data:T_},{path:"monitoring",data:O_,children:[{path:"",component:mc},{path:"silence/create",component:kc,data:w_},{path:"silence/create/:id",component:kc,data:S_},{path:"silence/edit/:id",component:kc,data:I_},{path:"silence/recreate/:id",component:kc,data:N_}]},{path:"perf_counters/:type/:id",component:Zc,data:C_},{path:"mgr-modules",data:R_,children:[{path:"",component:of},{path:"edit/:name",component:ff,data:A_}]},{path:"pool",data:k_,loadChildren:E_},{path:"block",data:L_,loadChildren:D_},{path:"cephfs",component:ph,canActivate:[s_.a],data:P_},{path:"rgw",canActivateChild:[s_.a,o_],data:M_,loadChildren:q_},{path:"user-management",data:j_,loadChildren:F_},{path:"user-profile",data:G_,children:[{path:"edit",component:Th,canActivate:[u_],data:V_}]},{path:"nfs/501/:message",component:Ph,data:z_},{path:"nfs",canActivateChild:[s_.a,o_],data:B_,children:[{path:"",component:Uh},{path:"create",component:Eg,data:Y_},{path:"edit/:cluster_id/:export_id",component:Eg,data:H_}]}]},{path:"",component:zp,children:[{path:"login",component:Kp},{path:"login-change-password",component:nb,canActivate:[u_]}]},{path:"",component:gb,children:[{path:"sso/404",component:vb},{path:"403",component:wb},{path:"404",component:Rb},{path:"**",redirectTo:"/404"}]}]]}),[]),s["ɵmpd"](1024,qt.m,qt.A,[s.ApplicationRef,qt.u,qt.b,i.Location,s.Injector,s.NgModuleFactoryLoader,s.Compiler,qt.k,qt.i,[2,qt.t],[2,qt.l]]),s["ɵmpd"](1073742336,qt.q,qt.q,[[2,qt.v],[2,qt.m]]),s["ɵmpd"](1073742336,U_,U_,[]),s["ɵmpd"](1073742336,E,E,[]),s["ɵmpd"](1073742336,dT.a,dT.a,[]),s["ɵmpd"](1073742336,$.C,$.C,[]),s["ɵmpd"](1073742336,$.n,$.n,[]),s["ɵmpd"](1073742336,ua.d,ua.d,[]),s["ɵmpd"](1073742336,$.y,$.y,[]),s["ɵmpd"](1073742336,cT.a,cT.a,[]),s["ɵmpd"](1073742336,ae.c,ae.c,[]),s["ɵmpd"](1073742336,Te.d,Te.d,[]),s["ɵmpd"](1073742336,Qn.d,Qn.d,[]),s["ɵmpd"](1073742336,ya.b,ya.b,[]),s["ɵmpd"](1073742336,Lt.e,Lt.e,[]),s["ɵmpd"](1073742336,fT.a,fT.a,[]),s["ɵmpd"](1073742336,U.e,U.e,[]),s["ɵmpd"](1073742336,Z.f,Z.f,[]),s["ɵmpd"](1073742336,hT.ClickOutsideModule,hT.ClickOutsideModule,[]),s["ɵmpd"](1073742336,Ne.b,Ne.b,[]),s["ɵmpd"](1073742336,gT.a,gT.a,[]),s["ɵmpd"](1073742336,cc.u,cc.u,[]),s["ɵmpd"](1073742336,pT.a,pT.a,[]),s["ɵmpd"](1073742336,fe.a,fe.a,[]),s["ɵmpd"](1073742336,bT.a,bT.a,[]),s["ɵmpd"](1073742336,oa.d,oa.d,[]),s["ɵmpd"](1073742336,rt.g,rt.g,[]),s["ɵmpd"](1073742336,mT.a,mT.a,[]),s["ɵmpd"](1073742336,te,te,[]),s["ɵmpd"](1073742336,yT,yT,[]),s["ɵmpd"](1073742336,vT,vT,[]),s["ɵmpd"](1073742336,xT.a,xT.a,[]),s["ɵmpd"](1073742336,_T,_T,[]),s["ɵmpd"](1073742336,bg,bg,[]),s["ɵmpd"](1073742336,ed,ed,[]),s["ɵmpd"](1073742336,_l.b,_l.b,[]),s["ɵmpd"](1073742336,TT.a,TT.a,[]),s["ɵmpd"](1073742336,OT,OT,[]),s["ɵmpd"](1073742336,wT,wT,[]),s["ɵmpd"](1073742336,ST,ST,[]),s["ɵmpd"](1073742336,IT,IT,[]),s["ɵmpd"](1073742336,NT,NT,[]),s["ɵmpd"](1073742336,oT,oT,[]),s["ɵmpd"](1073742336,CT,CT,[[3,CT]]),s["ɵmpd"](1073742336,l,l,[]),s["ɵmpd"](256,X.n,"XSRF-TOKEN",[]),s["ɵmpd"](256,X.o,"X-XSRF-TOKEN",[]),s["ɵmpd"](256,jy,{tokenGetter:o},[]),s["ɵmpd"](256,s["ɵAPP_ROOT"],!0,[]),s["ɵmpd"](256,n_,"BrowserAnimations",[]),s["ɵmpd"](256,s.TRANSLATIONS_FORMAT,"xlf",[]),s["ɵmpd"](256,U.a,{autoClose:!0,insideClick:!1},[]),s["ɵmpd"](256,A,{},[]),s["ɵmpd"](256,c.b,{default:c.a,config:{positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}},[]),s["ɵmpd"](1024,Z.b,(function(){return[[]]}),[]),s["ɵmpd"](256,Z.a,1,[])])}));i.registerLocaleData(r.a),Object(s.enableProdMode)(),Fr.h().bootstrapModuleFactory(RT).catch(t=>console.log(t))},zZ0H:function(t,e){t.exports=function(t){return t}},zavE:function(t,e,n){!function(t){"use strict";t.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},zk60:function(t,e,n){var a=n("2oRo"),r=n("kRJp");t.exports=function(t,e){try{r(a,t,e)}catch(n){a[t]=e}return e}},zoYe:function(t,e,n){var a=n("nmnc"),r=n("eUgh"),i=n("Z0cm"),s=n("/9aa"),o=a?a.prototype:void 0,u=o?o.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return r(e,t)+"";if(s(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}},zx6S:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,a){var r=e.words[a];return 1===a.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))}},[[0,0]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.513b02b42d061373f212.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.513b02b42d061373f212.js
new file mode 100644 (file)
index 0000000..78d70bc
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{1:function(e,t,n){e.exports=n("hN/g")},"hN/g":function(e,t,n){"use strict";n.r(t),n("pDpN")},pDpN:function(e,t){!function(e){const t=e.performance;function n(e){t&&t.mark&&t.mark(e)}function o(e,n){t&&t.measure&&t.measure(e,n)}n("Zone");const r=!0===e.__zone_symbol__forceDuplicateZoneCheck;if(e.Zone){if(r||"function"!=typeof e.Zone.__symbol__)throw new Error("Zone already loaded.");return e.Zone}class s{constructor(e,t){this._parent=e,this._name=t?t.name||"unnamed":"<root>",this._properties=t&&t.properties||{},this._zoneDelegate=new a(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(e.Promise!==D.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=s.current;for(;e.parent;)e=e.parent;return e}static get current(){return P.zone}static get currentTask(){return O}static __load_patch(t,i){if(D.hasOwnProperty(t)){if(r)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){const r="Zone:"+t;n(r),D[t]=i(e,s,z),o(r,r)}}get parent(){return this._parent}get name(){return this._name}get(e){const t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null}fork(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)}wrap(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);const n=this._zoneDelegate.intercept(this,e,t),o=this;return function(){return o.runGuarded(n,this,arguments,t)}}run(e,t,n,o){P={parent:P,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,o)}finally{P=P.parent}}runGuarded(e,t=null,n,o){P={parent:P,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,o)}catch(r){if(this._zoneDelegate.handleError(this,r))throw r}}finally{P=P.parent}}runTask(e,t,n){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||m).name+"; Execution: "+this.name+")");if(e.state===k&&(e.type===S||e.type===Z))return;const o=e.state!=v;o&&e._transitionTo(v,b),e.runCount++;const r=O;O=e,P={parent:P,zone:this};try{e.type==Z&&e.data&&!e.data.isPeriodic&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(s){if(this._zoneDelegate.handleError(this,s))throw s}}finally{e.state!==k&&e.state!==w&&(e.type==S||e.data&&e.data.isPeriodic?o&&e._transitionTo(b,v):(e.runCount=0,this._updateTaskCount(e,-1),o&&e._transitionTo(k,v,k))),P=P.parent,O=r}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(y,k);const t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(n){throw e._transitionTo(w,y,k),this._zoneDelegate.handleError(this,n),n}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==y&&e._transitionTo(b,y),e}scheduleMicroTask(e,t,n,o){return this.scheduleTask(new c(E,e,t,n,o,void 0))}scheduleMacroTask(e,t,n,o,r){return this.scheduleTask(new c(Z,e,t,n,o,r))}scheduleEventTask(e,t,n,o,r){return this.scheduleTask(new c(S,e,t,n,o,r))}cancelTask(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||m).name+"; Execution: "+this.name+")");e._transitionTo(T,b,v);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(w,T),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(k,T),e.runCount=0,e}_updateTaskCount(e,t){const n=e._zoneDelegates;-1==t&&(e._zoneDelegates=null);for(let o=0;o<n.length;o++)n[o]._updateTaskCount(e.type,t)}}s.__symbol__=I;const i={name:"",onHasTask:(e,t,n,o)=>e.hasTask(n,o),onScheduleTask:(e,t,n,o)=>e.scheduleTask(n,o),onInvokeTask:(e,t,n,o,r,s)=>e.invokeTask(n,o,r,s),onCancelTask:(e,t,n,o)=>e.cancelTask(n,o)};class a{constructor(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t.zone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t.zone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t.zone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const o=n&&n.onHasTask;(o||t&&t._hasTaskZS)&&(this._hasTaskZS=o?n:i,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=e,n.onScheduleTask||(this._scheduleTaskZS=i,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=i,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=i,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new s(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,o,r){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,o,r):t.apply(n,o)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||(n=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=E)throw new Error("Task is missing scheduleFn.");g(t)}return n}invokeTask(e,t,n,o){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,o):t.callback.apply(n,o)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(n){this.handleError(e,n)}}_updateTaskCount(e,t){const n=this._taskCounts,o=n[e],r=n[e]=o+t;if(r<0)throw new Error("More tasks executed then were scheduled.");0!=o&&0!=r||this.hasTask(this.zone,{microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e})}}class c{constructor(t,n,o,r,s,i){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=t,this.source=n,this.data=r,this.scheduleFn=s,this.cancelFn=i,this.callback=o;const a=this;this.invoke=t===S&&r&&r.useG?c.invokeTask:function(){return c.invokeTask.call(e,a,this,arguments)}}static invokeTask(e,t,n){e||(e=this),j++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{1==j&&_(),j--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(k,y)}_transitionTo(e,t,n){if(this._state!==t&&this._state!==n)throw new Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?" or '"+n+"'":""}, was '${this._state}'.`);this._state=e,e==k&&(this._zoneDelegates=null)}toString(){return this.data&&void 0!==this.data.handleId?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 l=I("setTimeout"),u=I("Promise"),h=I("then");let p,f=[],d=!1;function g(t){if(0===j&&0===f.length)if(p||e[u]&&(p=e[u].resolve(0)),p){let e=p[h];e||(e=p.then),e.call(p,_)}else e[l](_,0);t&&f.push(t)}function _(){if(!d){for(d=!0;f.length;){const t=f;f=[];for(let n=0;n<t.length;n++){const o=t[n];try{o.zone.runTask(o,null,null)}catch(e){z.onUnhandledError(e)}}}z.microtaskDrainDone(),d=!1}}const m={name:"NO ZONE"},k="notScheduled",y="scheduling",b="scheduled",v="running",T="canceling",w="unknown",E="microTask",Z="macroTask",S="eventTask",D={},z={symbol:I,currentZoneFrame:()=>P,onUnhandledError:C,microtaskDrainDone:C,scheduleMicroTask:g,showUncaughtError:()=>!s[I("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:C,patchMethod:()=>C,bindArguments:()=>[],patchThen:()=>C,patchMacroTask:()=>C,setNativePromise:e=>{e&&"function"==typeof e.resolve&&(p=e.resolve(0))},patchEventPrototype:()=>C,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>C,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>C,wrapWithCurrentZone:()=>C,filterProperties:()=>[],attachOriginToPatched:()=>C,_redefineProperty:()=>C,patchCallbacks:()=>C};let P={parent:null,zone:new s(null,null)},O=null,j=0;function C(){}function I(e){return"__zone_symbol__"+e}o("Zone","Zone"),e.Zone=s}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global),Zone.__load_patch("ZoneAwarePromise",(e,t,n)=>{const o=Object.getOwnPropertyDescriptor,r=Object.defineProperty,s=n.symbol,i=[],a=s("Promise"),c=s("then");n.onUnhandledError=e=>{if(n.showUncaughtError()){const t=e&&e.rejection;t?console.error("Unhandled Promise rejection:",t instanceof Error?t.message:t,"; Zone:",e.zone.name,"; Task:",e.task&&e.task.source,"; Value:",t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;i.length;)for(;i.length;){const t=i.shift();try{t.zone.runGuarded(()=>{throw t})}catch(e){u(e)}}};const l=s("unhandledPromiseRejectionHandler");function u(e){n.onUnhandledError(e);try{const n=t[l];n&&"function"==typeof n&&n.call(this,e)}catch(o){}}function h(e){return e&&e.then}function p(e){return e}function f(e){return Z.reject(e)}const d=s("state"),g=s("value"),_=s("finally"),m=s("parentPromiseValue"),k=s("parentPromiseState");function y(e,t){return n=>{try{v(e,t,n)}catch(o){v(e,!1,o)}}}const b=s("currentTaskTrace");function v(e,o,s){const a=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}}();if(e===s)throw new TypeError("Promise resolved with itself");if(null===e[d]){let u=null;try{"object"!=typeof s&&"function"!=typeof s||(u=s&&s.then)}catch(l){return a(()=>{v(e,!1,l)})(),e}if(!1!==o&&s instanceof Z&&s.hasOwnProperty(d)&&s.hasOwnProperty(g)&&null!==s[d])w(s),v(e,s[d],s[g]);else if(!1!==o&&"function"==typeof u)try{u.call(s,a(y(e,o)),a(y(e,!1)))}catch(l){a(()=>{v(e,!1,l)})()}else{e[d]=o;const a=e[g];if(e[g]=s,e[_]===_&&!0===o&&(e[d]=e[k],e[g]=e[m]),!1===o&&s instanceof Error){const e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&r(s,b,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t<a.length;)E(e,a[t++],a[t++],a[t++],a[t++]);if(0==a.length&&0==o){e[d]=0;try{throw new Error("Uncaught (in promise): "+((c=s)&&c.toString===Object.prototype.toString?(c.constructor&&c.constructor.name||"")+": "+JSON.stringify(c):c?c.toString():Object.prototype.toString.call(c))+(s&&s.stack?"\n"+s.stack:""))}catch(l){const o=l;o.rejection=s,o.promise=e,o.zone=t.current,o.task=t.currentTask,i.push(o),n.scheduleMicroTask()}}}}var c;return e}const T=s("rejectionHandledHandler");function w(e){if(0===e[d]){try{const n=t[T];n&&"function"==typeof n&&n.call(this,{rejection:e[g],promise:e})}catch(n){}e[d]=!1;for(let t=0;t<i.length;t++)e===i[t].promise&&i.splice(t,1)}}function E(e,t,n,o,r){w(e);const s=e[d],i=s?"function"==typeof o?o:p:"function"==typeof r?r:f;t.scheduleMicroTask("Promise.then",()=>{try{const o=e[g],r=n&&_===n[_];r&&(n[m]=o,n[k]=s);const a=t.run(i,void 0,r&&i!==f&&i!==p?[]:[o]);v(n,!0,a)}catch(o){v(n,!1,o)}},n)}class Z{constructor(e){const t=this;if(!(t instanceof Z))throw new Error("Must be an instanceof Promise.");t[d]=null,t[g]=[];try{e&&e(y(t,!0),y(t,!1))}catch(n){v(t,!1,n)}}static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(e){return v(new this(null),!0,e)}static reject(e){return v(new this(null),!1,e)}static race(e){let t,n,o=new this((e,o)=>{t=e,n=o});function r(e){t(e)}function s(e){n(e)}for(let i of e)h(i)||(i=this.resolve(i)),i.then(r,s);return o}static all(e){let t,n,o=new this((e,o)=>{t=e,n=o}),r=2,s=0;const i=[];for(let a of e){h(a)||(a=this.resolve(a));const e=s;a.then(n=>{i[e]=n,r--,0===r&&t(i)},n),r++,s++}return r-=2,0===r&&t(i),o}get[Symbol.toStringTag](){return"Promise"}then(e,n){const o=new this.constructor(null),r=t.current;return null==this[d]?this[g].push(r,o,e,n):E(this,r,o,e,n),o}catch(e){return this.then(null,e)}finally(e){const n=new this.constructor(null);n[_]=_;const o=t.current;return null==this[d]?this[g].push(o,n,e,e):E(this,o,n,e,e),n}}Z.resolve=Z.resolve,Z.reject=Z.reject,Z.race=Z.race,Z.all=Z.all;const S=e[a]=e.Promise,D=t.__symbol__("ZoneAwarePromise");let z=o(e,"Promise");z&&!z.configurable||(z&&delete z.writable,z&&delete z.value,z||(z={configurable:!0,enumerable:!0}),z.get=function(){return e[D]?e[D]:e[a]},z.set=function(t){t===Z?e[D]=t:(e[a]=t,t.prototype[c]||O(t),n.setNativePromise(t))},r(e,"Promise",z)),e.Promise=Z;const P=s("thenPatched");function O(e){const t=e.prototype,n=o(t,"then");if(n&&(!1===n.writable||!n.configurable))return;const r=t.then;t[c]=r,e.prototype.then=function(e,t){return new Z((e,t)=>{r.call(this,e,t)}).then(e,t)},e[P]=!0}if(n.patchThen=O,S){O(S);const t=e.fetch;"function"==typeof t&&(e[n.symbol("fetch")]=t,e.fetch=(j=t,function(){let e=j.apply(this,arguments);if(e instanceof Z)return e;let t=e.constructor;return t[P]||O(t),e}))}var j;return Promise[t.__symbol__("uncaughtPromiseErrors")]=i,Z});const n=Object.getOwnPropertyDescriptor,o=Object.defineProperty,r=Object.getPrototypeOf,s=Object.create,i=Array.prototype.slice,a=Zone.__symbol__("addEventListener"),c=Zone.__symbol__("removeEventListener");function l(e,t){return Zone.current.wrap(e,t)}function u(e,t,n,o,r){return Zone.current.scheduleMacroTask(e,t,n,o,r)}const h=Zone.__symbol__,p="undefined"!=typeof window,f=p?window:void 0,d=p&&f||"object"==typeof self&&self||global,g=[null];function _(e,t){for(let n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=l(e[n],t+"_"+n));return e}function m(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&void 0===e.set)}const k="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,y=!("nw"in d)&&void 0!==d.process&&"[object process]"==={}.toString.call(d.process),b=!y&&!k&&!(!p||!f.HTMLElement),v=void 0!==d.process&&"[object process]"==={}.toString.call(d.process)&&!k&&!(!p||!f.HTMLElement),T={},w=function(e){if(!(e=e||d.event))return;let t=T[e.type];t||(t=T[e.type]=h("ON_PROPERTY"+e.type));const n=this||e.target||d,o=n[t];let r;if(b&&n===f&&"error"===e.type){const t=e;r=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error),!0===r&&e.preventDefault()}else r=o&&o.apply(this,arguments),null==r||r||e.preventDefault();return r};function E(e,t,r){let s=n(e,t);if(!s&&r&&n(r,t)&&(s={enumerable:!0,configurable:!0}),!s||!s.configurable)return;const i=h("on"+t+"patched");if(e.hasOwnProperty(i)&&e[i])return;delete s.writable,delete s.value;const a=s.get,c=s.set,l=t.substr(2);let u=T[l];u||(u=T[l]=h("ON_PROPERTY"+l)),s.set=function(t){let n=this;n||e!==d||(n=d),n&&(n[u]&&n.removeEventListener(l,w),c&&c.apply(n,g),"function"==typeof t?(n[u]=t,n.addEventListener(l,w,!1)):n[u]=null)},s.get=function(){let n=this;if(n||e!==d||(n=d),!n)return null;const o=n[u];if(o)return o;if(a){let e=a&&a.call(this);if(e)return s.set.call(this,e),"function"==typeof n.removeAttribute&&n.removeAttribute(t),e}return null},o(e,t,s),e[i]=!0}function Z(e,t,n){if(t)for(let o=0;o<t.length;o++)E(e,"on"+t[o],n);else{const t=[];for(const n in e)"on"==n.substr(0,2)&&t.push(n);for(let o=0;o<t.length;o++)E(e,t[o],n)}}const S=h("originalInstance");function D(e){const t=d[e];if(!t)return;d[h(e)]=t,d[e]=function(){const n=_(arguments,e);switch(n.length){case 0:this[S]=new t;break;case 1:this[S]=new t(n[0]);break;case 2:this[S]=new t(n[0],n[1]);break;case 3:this[S]=new t(n[0],n[1],n[2]);break;case 4:this[S]=new t(n[0],n[1],n[2],n[3]);break;default:throw new Error("Arg list too long.")}},O(d[e],t);const n=new t((function(){}));let r;for(r in n)"XMLHttpRequest"===e&&"responseBlob"===r||function(t){"function"==typeof n[t]?d[e].prototype[t]=function(){return this[S][t].apply(this[S],arguments)}:o(d[e].prototype,t,{set:function(n){"function"==typeof n?(this[S][t]=l(n,e+"."+t),O(this[S][t],n)):this[S][t]=n},get:function(){return this[S][t]}})}(r);for(r in t)"prototype"!==r&&t.hasOwnProperty(r)&&(d[e][r]=t[r])}function z(e,t,o){let s=e;for(;s&&!s.hasOwnProperty(t);)s=r(s);!s&&e[t]&&(s=e);const i=h(t);let a=null;if(s&&!(a=s[i])&&(a=s[i]=s[t],m(s&&n(s,t)))){const e=o(a,i,t);s[t]=function(){return e(this,arguments)},O(s[t],a)}return a}function P(e,t,n){let o=null;function r(e){const t=e.data;return t.args[t.cbIdx]=function(){e.invoke.apply(this,arguments)},o.apply(t.target,t.args),e}o=z(e,t,e=>function(t,o){const s=n(t,o);return s.cbIdx>=0&&"function"==typeof o[s.cbIdx]?u(s.name,o[s.cbIdx],s,r):e.apply(t,o)})}function O(e,t){e[h("OriginalDelegate")]=t}let j=!1,C=!1;function I(){try{const e=f.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch(e){}return!1}function L(){if(j)return C;j=!0;try{const e=f.navigator.userAgent;-1===e.indexOf("MSIE ")&&-1===e.indexOf("Trident/")&&-1===e.indexOf("Edge/")||(C=!0)}catch(e){}return C}Zone.__load_patch("toString",e=>{const t=Function.prototype.toString,n=h("OriginalDelegate"),o=h("Promise"),r=h("Error"),s=function(){if("function"==typeof this){const s=this[n];if(s)return"function"==typeof s?t.call(s):Object.prototype.toString.call(s);if(this===Promise){const n=e[o];if(n)return t.call(n)}if(this===Error){const n=e[r];if(n)return t.call(n)}}return t.call(this)};s[n]=t,Function.prototype.toString=s;const i=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":i.call(this)}});let R=!1;if("undefined"!=typeof window)try{const e=Object.defineProperty({},"passive",{get:function(){R=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(ge){R=!1}const x={useG:!0},M={},N={},A=/^__zone_symbol__(\w+)(true|false)$/;function F(e,t,n){const o=n&&n.add||"addEventListener",s=n&&n.rm||"removeEventListener",i=n&&n.listeners||"eventListeners",a=n&&n.rmAll||"removeAllListeners",c=h(o),l="."+o+":",u=function(e,t,n){if(e.isRemoved)return;const o=e.callback;"object"==typeof o&&o.handleEvent&&(e.callback=e=>o.handleEvent(e),e.originalDelegate=o),e.invoke(e,t,[n]);const r=e.options;r&&"object"==typeof r&&r.once&&t[s].call(t,n.type,e.originalDelegate?e.originalDelegate:e.callback,r)},p=function(t){if(!(t=t||e.event))return;const n=this||t.target||e,o=n[M[t.type].false];if(o)if(1===o.length)u(o[0],n,t);else{const e=o.slice();for(let o=0;o<e.length&&(!t||!0!==t.__zone_symbol__propagationStopped);o++)u(e[o],n,t)}},f=function(t){if(!(t=t||e.event))return;const n=this||t.target||e,o=n[M[t.type].true];if(o)if(1===o.length)u(o[0],n,t);else{const e=o.slice();for(let o=0;o<e.length&&(!t||!0!==t.__zone_symbol__propagationStopped);o++)u(e[o],n,t)}};function d(t,n){if(!t)return!1;let u=!0;n&&void 0!==n.useG&&(u=n.useG);const d=n&&n.vh;let g=!0;n&&void 0!==n.chkDup&&(g=n.chkDup);let _=!1;n&&void 0!==n.rt&&(_=n.rt);let m=t;for(;m&&!m.hasOwnProperty(o);)m=r(m);if(!m&&t[o]&&(m=t),!m)return!1;if(m[c])return!1;const k=n&&n.eventNameToString,b={},v=m[c]=m[o],T=m[h(s)]=m[s],w=m[h(i)]=m[i],E=m[h(a)]=m[a];let Z;function S(e){R||"boolean"==typeof b.options||null==b.options||(e.options=!!b.options.capture,b.options=e.options)}n&&n.prepend&&(Z=m[h(n.prepend)]=m[n.prepend]);const D=u?function(e){if(!b.isExisting)return S(e),v.call(b.target,b.eventName,b.capture?f:p,b.options)}:function(e){return S(e),v.call(b.target,b.eventName,e.invoke,b.options)},z=u?function(e){if(!e.isRemoved){const t=M[e.eventName];let n;t&&(n=t[e.capture?"true":"false"]);const o=n&&e.target[n];if(o)for(let r=0;r<o.length;r++)if(o[r]===e){o.splice(r,1),e.isRemoved=!0,0===o.length&&(e.allRemoved=!0,e.target[n]=null);break}}if(e.allRemoved)return T.call(e.target,e.eventName,e.capture?f:p,e.options)}:function(e){return T.call(e.target,e.eventName,e.invoke,e.options)},P=n&&n.diff?n.diff:function(e,t){const n=typeof t;return"function"===n&&e.callback===t||"object"===n&&e.originalDelegate===t},j=Zone[Zone.__symbol__("BLACK_LISTED_EVENTS")],C=function(t,n,o,r,s=!1,i=!1){return function(){const a=this||e,c=arguments[0];let l=arguments[1];if(!l)return t.apply(this,arguments);if(y&&"uncaughtException"===c)return t.apply(this,arguments);let h=!1;if("function"!=typeof l){if(!l.handleEvent)return t.apply(this,arguments);h=!0}if(d&&!d(t,l,a,arguments))return;const p=arguments[2];if(j)for(let e=0;e<j.length;e++)if(c===j[e])return t.apply(this,arguments);let f,_=!1;void 0===p?f=!1:!0===p?f=!0:!1===p?f=!1:(f=!!p&&!!p.capture,_=!!p&&!!p.once);const m=Zone.current,v=M[c];let T;if(v)T=v[f?"true":"false"];else{const e="__zone_symbol__"+(k?k(c):c)+"false",t="__zone_symbol__"+(k?k(c):c)+"true";M[c]={},M[c].false=e,M[c].true=t,T=f?t:e}let w,E=a[T],Z=!1;if(E){if(Z=!0,g)for(let e=0;e<E.length;e++)if(P(E[e],l))return}else E=a[T]=[];const S=a.constructor.name,D=N[S];D&&(w=D[c]),w||(w=S+n+(k?k(c):c)),b.options=p,_&&(b.options.once=!1),b.target=a,b.capture=f,b.eventName=c,b.isExisting=Z;const z=u?x:void 0;z&&(z.taskData=b);const O=m.scheduleEventTask(w,l,z,o,r);return b.target=null,z&&(z.taskData=null),_&&(p.once=!0),(R||"boolean"!=typeof O.options)&&(O.options=p),O.target=a,O.capture=f,O.eventName=c,h&&(O.originalDelegate=l),i?E.unshift(O):E.push(O),s?a:void 0}};return m[o]=C(v,l,D,z,_),Z&&(m.prependListener=C(Z,".prependListener:",(function(e){return Z.call(b.target,b.eventName,e.invoke,b.options)}),z,_,!0)),m[s]=function(){const t=this||e,n=arguments[0],o=arguments[2];let r;r=void 0!==o&&(!0===o||!1!==o&&!!o&&!!o.capture);const s=arguments[1];if(!s)return T.apply(this,arguments);if(d&&!d(T,s,t,arguments))return;const i=M[n];let a;i&&(a=i[r?"true":"false"]);const c=a&&t[a];if(c)for(let e=0;e<c.length;e++){const n=c[e];if(P(n,s))return c.splice(e,1),n.isRemoved=!0,0===c.length&&(n.allRemoved=!0,t[a]=null),n.zone.cancelTask(n),_?t:void 0}return T.apply(this,arguments)},m[i]=function(){const t=this||e,n=arguments[0],o=[],r=H(t,k?k(n):n);for(let e=0;e<r.length;e++){const t=r[e];o.push(t.originalDelegate?t.originalDelegate:t.callback)}return o},m[a]=function(){const t=this||e,n=arguments[0];if(n){const e=M[n];if(e){const o=t[e.false],r=t[e.true];if(o){const e=o.slice();for(let t=0;t<e.length;t++){const o=e[t];this[s].call(this,n,o.originalDelegate?o.originalDelegate:o.callback,o.options)}}if(r){const e=r.slice();for(let t=0;t<e.length;t++){const o=e[t];this[s].call(this,n,o.originalDelegate?o.originalDelegate:o.callback,o.options)}}}}else{const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=A.exec(e[t]);let o=n&&n[1];o&&"removeListener"!==o&&this[a].call(this,o)}this[a].call(this,"removeListener")}if(_)return this},O(m[o],v),O(m[s],T),E&&O(m[a],E),w&&O(m[i],w),!0}let g=[];for(let r=0;r<t.length;r++)g[r]=d(t[r],n);return g}function H(e,t){const n=[];for(let o in e){const r=A.exec(o);let s=r&&r[1];if(s&&(!t||s===t)){const t=e[o];if(t)for(let e=0;e<t.length;e++)n.push(t[e])}}return n}function G(e,t){const n=e.Event;n&&n.prototype&&t.patchMethod(n.prototype,"stopImmediatePropagation",e=>function(t,n){t.__zone_symbol__propagationStopped=!0,e&&e.apply(t,n)})}function q(e,t,n,o,r){const s=Zone.__symbol__(o);if(t[s])return;const i=t[s]=t[o];t[o]=function(s,a,c){return a&&a.prototype&&r.forEach((function(t){const r=`${n}.${o}::`+t,s=a.prototype;if(s.hasOwnProperty(t)){const n=e.ObjectGetOwnPropertyDescriptor(s,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,r),e._redefineProperty(a.prototype,t,n)):s[t]&&(s[t]=e.wrapWithCurrentZone(s[t],r))}else s[t]&&(s[t]=e.wrapWithCurrentZone(s[t],r))})),i.call(t,s,a,c)},e.attachOriginToPatched(t[o],i)}const B=Zone.__symbol__,$=Object[B("defineProperty")]=Object.defineProperty,U=Object[B("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,W=Object.create,V=B("unconfigurables");function X(e,t,n){const o=n.configurable;return K(e,t,n=Y(e,t,n),o)}function J(e,t){return e&&e[V]&&e[V][t]}function Y(e,t,n){return Object.isFrozen(n)||(n.configurable=!0),n.configurable||(e[V]||Object.isFrozen(e)||$(e,V,{writable:!0,value:{}}),e[V]&&(e[V][t]=!0)),n}function K(e,t,n,o){try{return $(e,t,n)}catch(r){if(!n.configurable)throw r;void 0===o?delete n.configurable:n.configurable=o;try{return $(e,t,n)}catch(r){let o=null;try{o=JSON.stringify(n)}catch(r){o=n.toString()}console.log(`Attempting to configure '${t}' with descriptor '${o}' on object '${e}' and got error, giving up: ${r}`)}}}const Q=["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplyconnected","vrdisplaydisconnected","vrdisplaypresentchange"],ee=["encrypted","waitingforkey","msneedkey","mozinterruptbegin","mozinterruptend"],te=["load"],ne=["blur","error","focus","load","resize","scroll","messageerror"],oe=["bounce","finish","start"],re=["loadstart","progress","abort","error","load","progress","timeout","loadend","readystatechange"],se=["upgradeneeded","complete","abort","success","error","blocked","versionchange","close"],ie=["close","error","open","message"],ae=["error","message"],ce=["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"].concat(["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],["autocomplete","autocompleteerror"],["toggle"],["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],Q,["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"]);function le(e,t,n){if(!n||0===n.length)return t;const o=n.filter(t=>t.target===e);if(!o||0===o.length)return t;const r=o[0].ignoreProperties;return t.filter(e=>-1===r.indexOf(e))}function ue(e,t,n,o){e&&Z(e,le(e,t,n),o)}function he(e,t){if(y&&!v)return;if(Zone[e.symbol("patchEvents")])return;const n="undefined"!=typeof WebSocket,o=t.__Zone_ignore_on_properties;if(b){const e=window,t=I?[{target:e,ignoreProperties:["error"]}]:[];ue(e,ce.concat(["messageerror"]),o?o.concat(t):o,r(e)),ue(Document.prototype,ce,o),void 0!==e.SVGElement&&ue(e.SVGElement.prototype,ce,o),ue(Element.prototype,ce,o),ue(HTMLElement.prototype,ce,o),ue(HTMLMediaElement.prototype,ee,o),ue(HTMLFrameSetElement.prototype,Q.concat(ne),o),ue(HTMLBodyElement.prototype,Q.concat(ne),o),ue(HTMLFrameElement.prototype,te,o),ue(HTMLIFrameElement.prototype,te,o);const n=e.HTMLMarqueeElement;n&&ue(n.prototype,oe,o);const s=e.Worker;s&&ue(s.prototype,ae,o)}const s=t.XMLHttpRequest;s&&ue(s.prototype,re,o);const i=t.XMLHttpRequestEventTarget;i&&ue(i&&i.prototype,re,o),"undefined"!=typeof IDBIndex&&(ue(IDBIndex.prototype,se,o),ue(IDBRequest.prototype,se,o),ue(IDBOpenDBRequest.prototype,se,o),ue(IDBDatabase.prototype,se,o),ue(IDBTransaction.prototype,se,o),ue(IDBCursor.prototype,se,o)),n&&ue(WebSocket.prototype,ie,o)}Zone.__load_patch("util",(e,t,r)=>{r.patchOnProperties=Z,r.patchMethod=z,r.bindArguments=_,r.patchMacroTask=P;const a=t.__symbol__("BLACK_LISTED_EVENTS"),c=t.__symbol__("UNPATCHED_EVENTS");e[c]&&(e[a]=e[c]),e[a]&&(t[a]=t[c]=e[a]),r.patchEventPrototype=G,r.patchEventTarget=F,r.isIEOrEdge=L,r.ObjectDefineProperty=o,r.ObjectGetOwnPropertyDescriptor=n,r.ObjectCreate=s,r.ArraySlice=i,r.patchClass=D,r.wrapWithCurrentZone=l,r.filterProperties=le,r.attachOriginToPatched=O,r._redefineProperty=X,r.patchCallbacks=q,r.getGlobalObjects=()=>({globalSources:N,zoneSymbolEventNames:M,eventNames:ce,isBrowser:b,isMix:v,isNode:y,TRUE_STR:"true",FALSE_STR:"false",ZONE_SYMBOL_PREFIX:"__zone_symbol__",ADD_EVENT_LISTENER_STR:"addEventListener",REMOVE_EVENT_LISTENER_STR:"removeEventListener"})});const pe=h("zoneTask");function fe(e,t,n,o){let r=null,s=null;n+=o;const i={};function a(t){const n=t.data;return n.args[0]=function(){try{t.invoke.apply(this,arguments)}finally{t.data&&t.data.isPeriodic||("number"==typeof n.handleId?delete i[n.handleId]:n.handleId&&(n.handleId[pe]=null))}},n.handleId=r.apply(e,n.args),t}function c(e){return s(e.data.handleId)}r=z(e,t+=o,n=>function(r,s){if("function"==typeof s[0]){const e=u(t,s[0],{isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?s[1]||0:void 0,args:s},a,c);if(!e)return e;const n=e.data.handleId;return"number"==typeof n?i[n]=e:n&&(n[pe]=e),n&&n.ref&&n.unref&&"function"==typeof n.ref&&"function"==typeof n.unref&&(e.ref=n.ref.bind(n),e.unref=n.unref.bind(n)),"number"==typeof n||n?n:e}return n.apply(e,s)}),s=z(e,n,t=>function(n,o){const r=o[0];let s;"number"==typeof r?s=i[r]:(s=r&&r[pe],s||(s=r)),s&&"string"==typeof s.type?"notScheduled"!==s.state&&(s.cancelFn&&s.data.isPeriodic||0===s.runCount)&&("number"==typeof r?delete i[r]:r&&(r[pe]=null),s.zone.cancelTask(s)):t.apply(e,o)})}function de(e,t){if(Zone[t.symbol("patchEventTarget")])return;const{eventNames:n,zoneSymbolEventNames:o,TRUE_STR:r,FALSE_STR:s,ZONE_SYMBOL_PREFIX:i}=t.getGlobalObjects();for(let c=0;c<n.length;c++){const e=n[c],t=i+(e+s),a=i+(e+r);o[e]={},o[e][s]=t,o[e][r]=a}const a=e.EventTarget;return a&&a.prototype?(t.patchEventTarget(e,[a&&a.prototype]),!0):void 0}Zone.__load_patch("legacy",e=>{const t=e[Zone.__symbol__("legacyPatch")];t&&t()}),Zone.__load_patch("timers",e=>{fe(e,"set","clear","Timeout"),fe(e,"set","clear","Interval"),fe(e,"set","clear","Immediate")}),Zone.__load_patch("requestAnimationFrame",e=>{fe(e,"request","cancel","AnimationFrame"),fe(e,"mozRequest","mozCancel","AnimationFrame"),fe(e,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(e,t)=>{const n=["alert","prompt","confirm"];for(let o=0;o<n.length;o++)z(e,n[o],(n,o,r)=>function(o,s){return t.current.run(n,e,s,r)})}),Zone.__load_patch("EventTarget",(e,t,n)=>{!function(e,t){t.patchEventPrototype(e,t)}(e,n),de(e,n);const o=e.XMLHttpRequestEventTarget;o&&o.prototype&&n.patchEventTarget(e,[o.prototype]),D("MutationObserver"),D("WebKitMutationObserver"),D("IntersectionObserver"),D("FileReader")}),Zone.__load_patch("on_property",(e,t,n)=>{he(n,e),Object.defineProperty=function(e,t,n){if(J(e,t))throw new TypeError("Cannot assign to read only property '"+t+"' of "+e);const o=n.configurable;return"prototype"!==t&&(n=Y(e,t,n)),K(e,t,n,o)},Object.defineProperties=function(e,t){return Object.keys(t).forEach((function(n){Object.defineProperty(e,n,t[n])})),e},Object.create=function(e,t){return"object"!=typeof t||Object.isFrozen(t)||Object.keys(t).forEach((function(n){t[n]=Y(e,n,t[n])})),W(e,t)},Object.getOwnPropertyDescriptor=function(e,t){const n=U(e,t);return n&&J(e,t)&&(n.configurable=!1),n}}),Zone.__load_patch("customElements",(e,t,n)=>{!function(e,t){const{isBrowser:n,isMix:o}=t.getGlobalObjects();(n||o)&&e.customElements&&"customElements"in e&&t.patchCallbacks(t,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}(e,n)}),Zone.__load_patch("XHR",(e,t)=>{!function(e){const p=e.XMLHttpRequest;if(!p)return;const f=p.prototype;let d=f[a],g=f[c];if(!d){const t=e.XMLHttpRequestEventTarget;if(t){const e=t.prototype;d=e[a],g=e[c]}}function _(e){const t=e.data,o=t.target;o[s]=!1,o[l]=!1;const i=o[r];d||(d=o[a],g=o[c]),i&&g.call(o,"readystatechange",i);const u=o[r]=()=>{if(o.readyState===o.DONE)if(!t.aborted&&o[s]&&"scheduled"===e.state){const n=o.__zone_symbol__loadfalse;if(n&&n.length>0){const r=e.invoke;e.invoke=function(){const n=o.__zone_symbol__loadfalse;for(let t=0;t<n.length;t++)n[t]===e&&n.splice(t,1);t.aborted||"scheduled"!==e.state||r.call(e)},n.push(e)}else e.invoke()}else t.aborted||!1!==o[s]||(o[l]=!0)};return d.call(o,"readystatechange",u),o[n]||(o[n]=e),T.apply(o,t.args),o[s]=!0,e}function m(){}function k(e){const t=e.data;return t.aborted=!0,w.apply(t.target,t.args)}const y=z(f,"open",()=>function(e,t){return e[o]=0==t[2],e[i]=t[1],y.apply(e,t)}),b=h("fetchTaskAborting"),v=h("fetchTaskScheduling"),T=z(f,"send",()=>function(e,n){if(!0===t.current[v])return T.apply(e,n);if(e[o])return T.apply(e,n);{const t={target:e,url:e[i],isPeriodic:!1,args:n,aborted:!1},o=u("XMLHttpRequest.send",m,t,_,k);e&&!0===e[l]&&!t.aborted&&"scheduled"===o.state&&o.invoke()}}),w=z(f,"abort",()=>function(e,o){const r=e[n];if(r&&"string"==typeof r.type){if(null==r.cancelFn||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(!0===t.current[b])return w.apply(e,o)})}(e);const n=h("xhrTask"),o=h("xhrSync"),r=h("xhrListener"),s=h("xhrScheduled"),i=h("xhrURL"),l=h("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",e=>{e.navigator&&e.navigator.geolocation&&function(e,t){const o=e.constructor.name;for(let r=0;r<t.length;r++){const s=t[r],i=e[s];if(i){if(!m(n(e,s)))continue;e[s]=(e=>{const t=function(){return e.apply(this,_(arguments,o+"."+s))};return O(t,e),t})(i)}}}(e.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(e,t)=>{function n(t){return function(n){H(e,t).forEach(o=>{const r=e.PromiseRejectionEvent;if(r){const e=new r(t,{promise:n.promise,reason:n.rejection});o.invoke(e)}})}}e.PromiseRejectionEvent&&(t[h("unhandledPromiseRejectionHandler")]=n("unhandledrejection"),t[h("rejectionHandledHandler")]=n("rejectionhandled"))})}},[[1,0]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.e36c0f03dbcdd3187a99.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.e36c0f03dbcdd3187a99.js
deleted file mode 100644 (file)
index ca613bd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{1:function(e,t,n){e.exports=n("hN/g")},"hN/g":function(e,t,n){"use strict";n.r(t),n("pDpN")},pDpN:function(e,t){!function(e){const t=e.performance;function n(e){t&&t.mark&&t.mark(e)}function o(e,n){t&&t.measure&&t.measure(e,n)}n("Zone");const r=!0===e.__zone_symbol__forceDuplicateZoneCheck;if(e.Zone){if(r||"function"!=typeof e.Zone.__symbol__)throw new Error("Zone already loaded.");return e.Zone}class s{constructor(e,t){this._parent=e,this._name=t?t.name||"unnamed":"<root>",this._properties=t&&t.properties||{},this._zoneDelegate=new a(this,this._parent&&this._parent._zoneDelegate,t)}static assertZonePatched(){if(e.Promise!==D.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=s.current;for(;e.parent;)e=e.parent;return e}static get current(){return P.zone}static get currentTask(){return O}static __load_patch(t,i){if(D.hasOwnProperty(t)){if(r)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){const r="Zone:"+t;n(r),D[t]=i(e,s,z),o(r,r)}}get parent(){return this._parent}get name(){return this._name}get(e){const t=this.getZoneWith(e);if(t)return t._properties[e]}getZoneWith(e){let t=this;for(;t;){if(t._properties.hasOwnProperty(e))return t;t=t._parent}return null}fork(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)}wrap(e,t){if("function"!=typeof e)throw new Error("Expecting function got: "+e);const n=this._zoneDelegate.intercept(this,e,t),o=this;return function(){return o.runGuarded(n,this,arguments,t)}}run(e,t,n,o){P={parent:P,zone:this};try{return this._zoneDelegate.invoke(this,e,t,n,o)}finally{P=P.parent}}runGuarded(e,t=null,n,o){P={parent:P,zone:this};try{try{return this._zoneDelegate.invoke(this,e,t,n,o)}catch(r){if(this._zoneDelegate.handleError(this,r))throw r}}finally{P=P.parent}}runTask(e,t,n){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||m).name+"; Execution: "+this.name+")");if(e.state===k&&(e.type===S||e.type===Z))return;const o=e.state!=v;o&&e._transitionTo(v,b),e.runCount++;const r=O;O=e,P={parent:P,zone:this};try{e.type==Z&&e.data&&!e.data.isPeriodic&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(s){if(this._zoneDelegate.handleError(this,s))throw s}}finally{e.state!==k&&e.state!==w&&(e.type==S||e.data&&e.data.isPeriodic?o&&e._transitionTo(b,v):(e.runCount=0,this._updateTaskCount(e,-1),o&&e._transitionTo(k,v,k))),P=P.parent,O=r}}scheduleTask(e){if(e.zone&&e.zone!==this){let t=this;for(;t;){if(t===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);t=t.parent}}e._transitionTo(y,k);const t=[];e._zoneDelegates=t,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(n){throw e._transitionTo(w,y,k),this._zoneDelegate.handleError(this,n),n}return e._zoneDelegates===t&&this._updateTaskCount(e,1),e.state==y&&e._transitionTo(b,y),e}scheduleMicroTask(e,t,n,o){return this.scheduleTask(new c(E,e,t,n,o,void 0))}scheduleMacroTask(e,t,n,o,r){return this.scheduleTask(new c(Z,e,t,n,o,r))}scheduleEventTask(e,t,n,o,r){return this.scheduleTask(new c(S,e,t,n,o,r))}cancelTask(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||m).name+"; Execution: "+this.name+")");e._transitionTo(T,b,v);try{this._zoneDelegate.cancelTask(this,e)}catch(t){throw e._transitionTo(w,T),this._zoneDelegate.handleError(this,t),t}return this._updateTaskCount(e,-1),e._transitionTo(k,T),e.runCount=0,e}_updateTaskCount(e,t){const n=e._zoneDelegates;-1==t&&(e._zoneDelegates=null);for(let o=0;o<n.length;o++)n[o]._updateTaskCount(e.type,t)}}s.__symbol__=I;const i={name:"",onHasTask:(e,t,n,o)=>e.hasTask(n,o),onScheduleTask:(e,t,n,o)=>e.scheduleTask(n,o),onInvokeTask:(e,t,n,o,r,s)=>e.invokeTask(n,o,r,s),onCancelTask:(e,t,n,o)=>e.cancelTask(n,o)};class a{constructor(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:t.zone),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:t.zone),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:t.zone),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:t.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:t.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:t.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:t.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const o=n&&n.onHasTask;(o||t&&t._hasTaskZS)&&(this._hasTaskZS=o?n:i,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=e,n.onScheduleTask||(this._scheduleTaskZS=i,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=i,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=i,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}fork(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new s(e,t)}intercept(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,e,t,n):t}invoke(e,t,n,o,r){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,e,t,n,o,r):t.apply(n,o)}handleError(e,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,e,t)}scheduleTask(e,t){let n=t;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,e,t),n||(n=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=E)throw new Error("Task is missing scheduleFn.");g(t)}return n}invokeTask(e,t,n,o){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,e,t,n,o):t.callback.apply(n,o)}cancelTask(e,t){let n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,e,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");n=t.cancelFn(t)}return n}hasTask(e,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,e,t)}catch(n){this.handleError(e,n)}}_updateTaskCount(e,t){const n=this._taskCounts,o=n[e],r=n[e]=o+t;if(r<0)throw new Error("More tasks executed then were scheduled.");0!=o&&0!=r||this.hasTask(this.zone,{microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e})}}class c{constructor(t,n,o,r,s,i){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=t,this.source=n,this.data=r,this.scheduleFn=s,this.cancelFn=i,this.callback=o;const a=this;this.invoke=t===S&&r&&r.useG?c.invokeTask:function(){return c.invokeTask.call(e,a,this,arguments)}}static invokeTask(e,t,n){e||(e=this),j++;try{return e.runCount++,e.zone.runTask(e,t,n)}finally{1==j&&_(),j--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(k,y)}_transitionTo(e,t,n){if(this._state!==t&&this._state!==n)throw new Error(`${this.type} '${this.source}': can not transition to '${e}', expecting state '${t}'${n?" or '"+n+"'":""}, was '${this._state}'.`);this._state=e,e==k&&(this._zoneDelegates=null)}toString(){return this.data&&void 0!==this.data.handleId?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 l=I("setTimeout"),u=I("Promise"),h=I("then");let p,f=[],d=!1;function g(t){if(0===j&&0===f.length)if(p||e[u]&&(p=e[u].resolve(0)),p){let e=p[h];e||(e=p.then),e.call(p,_)}else e[l](_,0);t&&f.push(t)}function _(){if(!d){for(d=!0;f.length;){const t=f;f=[];for(let n=0;n<t.length;n++){const o=t[n];try{o.zone.runTask(o,null,null)}catch(e){z.onUnhandledError(e)}}}z.microtaskDrainDone(),d=!1}}const m={name:"NO ZONE"},k="notScheduled",y="scheduling",b="scheduled",v="running",T="canceling",w="unknown",E="microTask",Z="macroTask",S="eventTask",D={},z={symbol:I,currentZoneFrame:()=>P,onUnhandledError:C,microtaskDrainDone:C,scheduleMicroTask:g,showUncaughtError:()=>!s[I("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:C,patchMethod:()=>C,bindArguments:()=>[],patchThen:()=>C,patchMacroTask:()=>C,setNativePromise:e=>{e&&"function"==typeof e.resolve&&(p=e.resolve(0))},patchEventPrototype:()=>C,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>C,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>C,wrapWithCurrentZone:()=>C,filterProperties:()=>[],attachOriginToPatched:()=>C,_redefineProperty:()=>C,patchCallbacks:()=>C};let P={parent:null,zone:new s(null,null)},O=null,j=0;function C(){}function I(e){return"__zone_symbol__"+e}o("Zone","Zone"),e.Zone=s}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global),Zone.__load_patch("ZoneAwarePromise",(e,t,n)=>{const o=Object.getOwnPropertyDescriptor,r=Object.defineProperty,s=n.symbol,i=[],a=s("Promise"),c=s("then");n.onUnhandledError=e=>{if(n.showUncaughtError()){const t=e&&e.rejection;t?console.error("Unhandled Promise rejection:",t instanceof Error?t.message:t,"; Zone:",e.zone.name,"; Task:",e.task&&e.task.source,"; Value:",t,t instanceof Error?t.stack:void 0):console.error(e)}},n.microtaskDrainDone=()=>{for(;i.length;)for(;i.length;){const t=i.shift();try{t.zone.runGuarded(()=>{throw t})}catch(e){u(e)}}};const l=s("unhandledPromiseRejectionHandler");function u(e){n.onUnhandledError(e);try{const n=t[l];n&&"function"==typeof n&&n.call(this,e)}catch(o){}}function h(e){return e&&e.then}function p(e){return e}function f(e){return Z.reject(e)}const d=s("state"),g=s("value"),_=s("finally"),m=s("parentPromiseValue"),k=s("parentPromiseState");function y(e,t){return n=>{try{v(e,t,n)}catch(o){v(e,!1,o)}}}const b=s("currentTaskTrace");function v(e,o,s){const a=function(){let e=!1;return function(t){return function(){e||(e=!0,t.apply(null,arguments))}}}();if(e===s)throw new TypeError("Promise resolved with itself");if(null===e[d]){let u=null;try{"object"!=typeof s&&"function"!=typeof s||(u=s&&s.then)}catch(l){return a(()=>{v(e,!1,l)})(),e}if(!1!==o&&s instanceof Z&&s.hasOwnProperty(d)&&s.hasOwnProperty(g)&&null!==s[d])w(s),v(e,s[d],s[g]);else if(!1!==o&&"function"==typeof u)try{u.call(s,a(y(e,o)),a(y(e,!1)))}catch(l){a(()=>{v(e,!1,l)})()}else{e[d]=o;const a=e[g];if(e[g]=s,e[_]===_&&!0===o&&(e[d]=e[k],e[g]=e[m]),!1===o&&s instanceof Error){const e=t.currentTask&&t.currentTask.data&&t.currentTask.data.__creationTrace__;e&&r(s,b,{configurable:!0,enumerable:!1,writable:!0,value:e})}for(let t=0;t<a.length;)E(e,a[t++],a[t++],a[t++],a[t++]);if(0==a.length&&0==o){e[d]=0;try{throw new Error("Uncaught (in promise): "+((c=s)&&c.toString===Object.prototype.toString?(c.constructor&&c.constructor.name||"")+": "+JSON.stringify(c):c?c.toString():Object.prototype.toString.call(c))+(s&&s.stack?"\n"+s.stack:""))}catch(l){const o=l;o.rejection=s,o.promise=e,o.zone=t.current,o.task=t.currentTask,i.push(o),n.scheduleMicroTask()}}}}var c;return e}const T=s("rejectionHandledHandler");function w(e){if(0===e[d]){try{const n=t[T];n&&"function"==typeof n&&n.call(this,{rejection:e[g],promise:e})}catch(n){}e[d]=!1;for(let t=0;t<i.length;t++)e===i[t].promise&&i.splice(t,1)}}function E(e,t,n,o,r){w(e);const s=e[d],i=s?"function"==typeof o?o:p:"function"==typeof r?r:f;t.scheduleMicroTask("Promise.then",()=>{try{const o=e[g],r=n&&_===n[_];r&&(n[m]=o,n[k]=s);const a=t.run(i,void 0,r&&i!==f&&i!==p?[]:[o]);v(n,!0,a)}catch(o){v(n,!1,o)}},n)}class Z{constructor(e){const t=this;if(!(t instanceof Z))throw new Error("Must be an instanceof Promise.");t[d]=null,t[g]=[];try{e&&e(y(t,!0),y(t,!1))}catch(n){v(t,!1,n)}}static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(e){return v(new this(null),!0,e)}static reject(e){return v(new this(null),!1,e)}static race(e){let t,n,o=new this((e,o)=>{t=e,n=o});function r(e){t(e)}function s(e){n(e)}for(let i of e)h(i)||(i=this.resolve(i)),i.then(r,s);return o}static all(e){let t,n,o=new this((e,o)=>{t=e,n=o}),r=2,s=0;const i=[];for(let a of e){h(a)||(a=this.resolve(a));const e=s;a.then(n=>{i[e]=n,r--,0===r&&t(i)},n),r++,s++}return r-=2,0===r&&t(i),o}get[Symbol.toStringTag](){return"Promise"}then(e,n){const o=new this.constructor(null),r=t.current;return null==this[d]?this[g].push(r,o,e,n):E(this,r,o,e,n),o}catch(e){return this.then(null,e)}finally(e){const n=new this.constructor(null);n[_]=_;const o=t.current;return null==this[d]?this[g].push(o,n,e,e):E(this,o,n,e,e),n}}Z.resolve=Z.resolve,Z.reject=Z.reject,Z.race=Z.race,Z.all=Z.all;const S=e[a]=e.Promise,D=t.__symbol__("ZoneAwarePromise");let z=o(e,"Promise");z&&!z.configurable||(z&&delete z.writable,z&&delete z.value,z||(z={configurable:!0,enumerable:!0}),z.get=function(){return e[D]?e[D]:e[a]},z.set=function(t){t===Z?e[D]=t:(e[a]=t,t.prototype[c]||O(t),n.setNativePromise(t))},r(e,"Promise",z)),e.Promise=Z;const P=s("thenPatched");function O(e){const t=e.prototype,n=o(t,"then");if(n&&(!1===n.writable||!n.configurable))return;const r=t.then;t[c]=r,e.prototype.then=function(e,t){return new Z((e,t)=>{r.call(this,e,t)}).then(e,t)},e[P]=!0}if(n.patchThen=O,S){O(S);const t=e.fetch;"function"==typeof t&&(e[n.symbol("fetch")]=t,e.fetch=(j=t,function(){let e=j.apply(this,arguments);if(e instanceof Z)return e;let t=e.constructor;return t[P]||O(t),e}))}var j;return Promise[t.__symbol__("uncaughtPromiseErrors")]=i,Z});const n=Object.getOwnPropertyDescriptor,o=Object.defineProperty,r=Object.getPrototypeOf,s=Object.create,i=Array.prototype.slice,a=Zone.__symbol__("addEventListener"),c=Zone.__symbol__("removeEventListener");function l(e,t){return Zone.current.wrap(e,t)}function u(e,t,n,o,r){return Zone.current.scheduleMacroTask(e,t,n,o,r)}const h=Zone.__symbol__,p="undefined"!=typeof window,f=p?window:void 0,d=p&&f||"object"==typeof self&&self||global,g=[null];function _(e,t){for(let n=e.length-1;n>=0;n--)"function"==typeof e[n]&&(e[n]=l(e[n],t+"_"+n));return e}function m(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&void 0===e.set)}const k="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,y=!("nw"in d)&&void 0!==d.process&&"[object process]"==={}.toString.call(d.process),b=!y&&!k&&!(!p||!f.HTMLElement),v=void 0!==d.process&&"[object process]"==={}.toString.call(d.process)&&!k&&!(!p||!f.HTMLElement),T={},w=function(e){if(!(e=e||d.event))return;let t=T[e.type];t||(t=T[e.type]=h("ON_PROPERTY"+e.type));const n=this||e.target||d,o=n[t];let r;if(b&&n===f&&"error"===e.type){const t=e;r=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error),!0===r&&e.preventDefault()}else r=o&&o.apply(this,arguments),null==r||r||e.preventDefault();return r};function E(e,t,r){let s=n(e,t);if(!s&&r&&n(r,t)&&(s={enumerable:!0,configurable:!0}),!s||!s.configurable)return;const i=h("on"+t+"patched");if(e.hasOwnProperty(i)&&e[i])return;delete s.writable,delete s.value;const a=s.get,c=s.set,l=t.substr(2);let u=T[l];u||(u=T[l]=h("ON_PROPERTY"+l)),s.set=function(t){let n=this;n||e!==d||(n=d),n&&(n[u]&&n.removeEventListener(l,w),c&&c.apply(n,g),"function"==typeof t?(n[u]=t,n.addEventListener(l,w,!1)):n[u]=null)},s.get=function(){let n=this;if(n||e!==d||(n=d),!n)return null;const o=n[u];if(o)return o;if(a){let e=a&&a.call(this);if(e)return s.set.call(this,e),"function"==typeof n.removeAttribute&&n.removeAttribute(t),e}return null},o(e,t,s),e[i]=!0}function Z(e,t,n){if(t)for(let o=0;o<t.length;o++)E(e,"on"+t[o],n);else{const t=[];for(const n in e)"on"==n.substr(0,2)&&t.push(n);for(let o=0;o<t.length;o++)E(e,t[o],n)}}const S=h("originalInstance");function D(e){const t=d[e];if(!t)return;d[h(e)]=t,d[e]=function(){const n=_(arguments,e);switch(n.length){case 0:this[S]=new t;break;case 1:this[S]=new t(n[0]);break;case 2:this[S]=new t(n[0],n[1]);break;case 3:this[S]=new t(n[0],n[1],n[2]);break;case 4:this[S]=new t(n[0],n[1],n[2],n[3]);break;default:throw new Error("Arg list too long.")}},O(d[e],t);const n=new t((function(){}));let r;for(r in n)"XMLHttpRequest"===e&&"responseBlob"===r||function(t){"function"==typeof n[t]?d[e].prototype[t]=function(){return this[S][t].apply(this[S],arguments)}:o(d[e].prototype,t,{set:function(n){"function"==typeof n?(this[S][t]=l(n,e+"."+t),O(this[S][t],n)):this[S][t]=n},get:function(){return this[S][t]}})}(r);for(r in t)"prototype"!==r&&t.hasOwnProperty(r)&&(d[e][r]=t[r])}function z(e,t,o){let s=e;for(;s&&!s.hasOwnProperty(t);)s=r(s);!s&&e[t]&&(s=e);const i=h(t);let a=null;if(s&&!(a=s[i])&&(a=s[i]=s[t],m(s&&n(s,t)))){const e=o(a,i,t);s[t]=function(){return e(this,arguments)},O(s[t],a)}return a}function P(e,t,n){let o=null;function r(e){const t=e.data;return t.args[t.cbIdx]=function(){e.invoke.apply(this,arguments)},o.apply(t.target,t.args),e}o=z(e,t,e=>function(t,o){const s=n(t,o);return s.cbIdx>=0&&"function"==typeof o[s.cbIdx]?u(s.name,o[s.cbIdx],s,r):e.apply(t,o)})}function O(e,t){e[h("OriginalDelegate")]=t}let j=!1,C=!1;function I(){try{const e=f.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch(e){}return!1}function L(){if(j)return C;j=!0;try{const e=f.navigator.userAgent;-1===e.indexOf("MSIE ")&&-1===e.indexOf("Trident/")&&-1===e.indexOf("Edge/")||(C=!0)}catch(e){}return C}Zone.__load_patch("toString",e=>{const t=Function.prototype.toString,n=h("OriginalDelegate"),o=h("Promise"),r=h("Error"),s=function(){if("function"==typeof this){const s=this[n];if(s)return"function"==typeof s?t.call(s):Object.prototype.toString.call(s);if(this===Promise){const n=e[o];if(n)return t.call(n)}if(this===Error){const n=e[r];if(n)return t.call(n)}}return t.call(this)};s[n]=t,Function.prototype.toString=s;const i=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":i.call(this)}});let R=!1;if("undefined"!=typeof window)try{const e=Object.defineProperty({},"passive",{get:function(){R=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(ge){R=!1}const x={useG:!0},M={},N={},A=/^__zone_symbol__(\w+)(true|false)$/;function F(e,t,n){const o=n&&n.add||"addEventListener",s=n&&n.rm||"removeEventListener",i=n&&n.listeners||"eventListeners",a=n&&n.rmAll||"removeAllListeners",c=h(o),l="."+o+":",u=function(e,t,n){if(e.isRemoved)return;const o=e.callback;"object"==typeof o&&o.handleEvent&&(e.callback=e=>o.handleEvent(e),e.originalDelegate=o),e.invoke(e,t,[n]);const r=e.options;r&&"object"==typeof r&&r.once&&t[s].call(t,n.type,e.originalDelegate?e.originalDelegate:e.callback,r)},p=function(t){if(!(t=t||e.event))return;const n=this||t.target||e,o=n[M[t.type].false];if(o)if(1===o.length)u(o[0],n,t);else{const e=o.slice();for(let o=0;o<e.length&&(!t||!0!==t.__zone_symbol__propagationStopped);o++)u(e[o],n,t)}},f=function(t){if(!(t=t||e.event))return;const n=this||t.target||e,o=n[M[t.type].true];if(o)if(1===o.length)u(o[0],n,t);else{const e=o.slice();for(let o=0;o<e.length&&(!t||!0!==t.__zone_symbol__propagationStopped);o++)u(e[o],n,t)}};function d(t,n){if(!t)return!1;let u=!0;n&&void 0!==n.useG&&(u=n.useG);const d=n&&n.vh;let g=!0;n&&void 0!==n.chkDup&&(g=n.chkDup);let _=!1;n&&void 0!==n.rt&&(_=n.rt);let m=t;for(;m&&!m.hasOwnProperty(o);)m=r(m);if(!m&&t[o]&&(m=t),!m)return!1;if(m[c])return!1;const k=n&&n.eventNameToString,b={},v=m[c]=m[o],T=m[h(s)]=m[s],w=m[h(i)]=m[i],E=m[h(a)]=m[a];let Z;function S(e){R||"boolean"==typeof b.options||null==b.options||(e.options=!!b.options.capture,b.options=e.options)}n&&n.prepend&&(Z=m[h(n.prepend)]=m[n.prepend]);const D=u?function(e){if(!b.isExisting)return S(e),v.call(b.target,b.eventName,b.capture?f:p,b.options)}:function(e){return S(e),v.call(b.target,b.eventName,e.invoke,b.options)},z=u?function(e){if(!e.isRemoved){const t=M[e.eventName];let n;t&&(n=t[e.capture?"true":"false"]);const o=n&&e.target[n];if(o)for(let r=0;r<o.length;r++)if(o[r]===e){o.splice(r,1),e.isRemoved=!0,0===o.length&&(e.allRemoved=!0,e.target[n]=null);break}}if(e.allRemoved)return T.call(e.target,e.eventName,e.capture?f:p,e.options)}:function(e){return T.call(e.target,e.eventName,e.invoke,e.options)},P=n&&n.diff?n.diff:function(e,t){const n=typeof t;return"function"===n&&e.callback===t||"object"===n&&e.originalDelegate===t},j=Zone[Zone.__symbol__("BLACK_LISTED_EVENTS")],C=function(t,n,o,r,s=!1,i=!1){return function(){const a=this||e,c=arguments[0];let l=arguments[1];if(!l)return t.apply(this,arguments);if(y&&"uncaughtException"===c)return t.apply(this,arguments);let h=!1;if("function"!=typeof l){if(!l.handleEvent)return t.apply(this,arguments);h=!0}if(d&&!d(t,l,a,arguments))return;const p=arguments[2];if(j)for(let e=0;e<j.length;e++)if(c===j[e])return t.apply(this,arguments);let f,_=!1;void 0===p?f=!1:!0===p?f=!0:!1===p?f=!1:(f=!!p&&!!p.capture,_=!!p&&!!p.once);const m=Zone.current,v=M[c];let T;if(v)T=v[f?"true":"false"];else{const e="__zone_symbol__"+(k?k(c):c)+"false",t="__zone_symbol__"+(k?k(c):c)+"true";M[c]={},M[c].false=e,M[c].true=t,T=f?t:e}let w,E=a[T],Z=!1;if(E){if(Z=!0,g)for(let e=0;e<E.length;e++)if(P(E[e],l))return}else E=a[T]=[];const S=a.constructor.name,D=N[S];D&&(w=D[c]),w||(w=S+n+(k?k(c):c)),b.options=p,_&&(b.options.once=!1),b.target=a,b.capture=f,b.eventName=c,b.isExisting=Z;const z=u?x:void 0;z&&(z.taskData=b);const O=m.scheduleEventTask(w,l,z,o,r);return b.target=null,z&&(z.taskData=null),_&&(p.once=!0),(R||"boolean"!=typeof O.options)&&(O.options=p),O.target=a,O.capture=f,O.eventName=c,h&&(O.originalDelegate=l),i?E.unshift(O):E.push(O),s?a:void 0}};return m[o]=C(v,l,D,z,_),Z&&(m.prependListener=C(Z,".prependListener:",(function(e){return Z.call(b.target,b.eventName,e.invoke,b.options)}),z,_,!0)),m[s]=function(){const t=this||e,n=arguments[0],o=arguments[2];let r;r=void 0!==o&&(!0===o||!1!==o&&!!o&&!!o.capture);const s=arguments[1];if(!s)return T.apply(this,arguments);if(d&&!d(T,s,t,arguments))return;const i=M[n];let a;i&&(a=i[r?"true":"false"]);const c=a&&t[a];if(c)for(let e=0;e<c.length;e++){const n=c[e];if(P(n,s))return c.splice(e,1),n.isRemoved=!0,0===c.length&&(n.allRemoved=!0,t[a]=null),n.zone.cancelTask(n),_?t:void 0}return T.apply(this,arguments)},m[i]=function(){const t=this||e,n=arguments[0],o=[],r=H(t,k?k(n):n);for(let e=0;e<r.length;e++){const t=r[e];o.push(t.originalDelegate?t.originalDelegate:t.callback)}return o},m[a]=function(){const t=this||e,n=arguments[0];if(n){const e=M[n];if(e){const o=t[e.false],r=t[e.true];if(o){const e=o.slice();for(let t=0;t<e.length;t++){const o=e[t];this[s].call(this,n,o.originalDelegate?o.originalDelegate:o.callback,o.options)}}if(r){const e=r.slice();for(let t=0;t<e.length;t++){const o=e[t];this[s].call(this,n,o.originalDelegate?o.originalDelegate:o.callback,o.options)}}}}else{const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=A.exec(e[t]);let o=n&&n[1];o&&"removeListener"!==o&&this[a].call(this,o)}this[a].call(this,"removeListener")}if(_)return this},O(m[o],v),O(m[s],T),E&&O(m[a],E),w&&O(m[i],w),!0}let g=[];for(let r=0;r<t.length;r++)g[r]=d(t[r],n);return g}function H(e,t){const n=[];for(let o in e){const r=A.exec(o);let s=r&&r[1];if(s&&(!t||s===t)){const t=e[o];if(t)for(let e=0;e<t.length;e++)n.push(t[e])}}return n}function G(e,t){const n=e.Event;n&&n.prototype&&t.patchMethod(n.prototype,"stopImmediatePropagation",e=>function(t,n){t.__zone_symbol__propagationStopped=!0,e&&e.apply(t,n)})}function q(e,t,n,o,r){const s=Zone.__symbol__(o);if(t[s])return;const i=t[s]=t[o];t[o]=function(s,a,c){return a&&a.prototype&&r.forEach((function(t){const r=`${n}.${o}::`+t,s=a.prototype;if(s.hasOwnProperty(t)){const n=e.ObjectGetOwnPropertyDescriptor(s,t);n&&n.value?(n.value=e.wrapWithCurrentZone(n.value,r),e._redefineProperty(a.prototype,t,n)):s[t]&&(s[t]=e.wrapWithCurrentZone(s[t],r))}else s[t]&&(s[t]=e.wrapWithCurrentZone(s[t],r))})),i.call(t,s,a,c)},e.attachOriginToPatched(t[o],i)}const B=Zone.__symbol__,$=Object[B("defineProperty")]=Object.defineProperty,U=Object[B("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,W=Object.create,V=B("unconfigurables");function X(e,t,n){const o=n.configurable;return K(e,t,n=Y(e,t,n),o)}function J(e,t){return e&&e[V]&&e[V][t]}function Y(e,t,n){return Object.isFrozen(n)||(n.configurable=!0),n.configurable||(e[V]||Object.isFrozen(e)||$(e,V,{writable:!0,value:{}}),e[V]&&(e[V][t]=!0)),n}function K(e,t,n,o){try{return $(e,t,n)}catch(r){if(!n.configurable)throw r;void 0===o?delete n.configurable:n.configurable=o;try{return $(e,t,n)}catch(r){let o=null;try{o=JSON.stringify(n)}catch(r){o=n.toString()}console.log(`Attempting to configure '${t}' with descriptor '${o}' on object '${e}' and got error, giving up: ${r}`)}}}const Q=["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplyconnected","vrdisplaydisconnected","vrdisplaypresentchange"],ee=["encrypted","waitingforkey","msneedkey","mozinterruptbegin","mozinterruptend"],te=["load"],ne=["blur","error","focus","load","resize","scroll","messageerror"],oe=["bounce","finish","start"],re=["loadstart","progress","abort","error","load","progress","timeout","loadend","readystatechange"],se=["upgradeneeded","complete","abort","success","error","blocked","versionchange","close"],ie=["close","error","open","message"],ae=["error","message"],ce=["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"].concat(["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],["autocomplete","autocompleteerror"],["toggle"],["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],Q,["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"]);function le(e,t,n){if(!n||0===n.length)return t;const o=n.filter(t=>t.target===e);if(!o||0===o.length)return t;const r=o[0].ignoreProperties;return t.filter(e=>-1===r.indexOf(e))}function ue(e,t,n,o){e&&Z(e,le(e,t,n),o)}function he(e,t){if(y&&!v)return;if(Zone[e.symbol("patchEvents")])return;const n="undefined"!=typeof WebSocket,o=t.__Zone_ignore_on_properties;if(b){const e=window,t=I?[{target:e,ignoreProperties:["error"]}]:[];ue(e,ce.concat(["messageerror"]),o?o.concat(t):o,r(e)),ue(Document.prototype,ce,o),void 0!==e.SVGElement&&ue(e.SVGElement.prototype,ce,o),ue(Element.prototype,ce,o),ue(HTMLElement.prototype,ce,o),ue(HTMLMediaElement.prototype,ee,o),ue(HTMLFrameSetElement.prototype,Q.concat(ne),o),ue(HTMLBodyElement.prototype,Q.concat(ne),o),ue(HTMLFrameElement.prototype,te,o),ue(HTMLIFrameElement.prototype,te,o);const n=e.HTMLMarqueeElement;n&&ue(n.prototype,oe,o);const s=e.Worker;s&&ue(s.prototype,ae,o)}const s=t.XMLHttpRequest;s&&ue(s.prototype,re,o);const i=t.XMLHttpRequestEventTarget;i&&ue(i&&i.prototype,re,o),"undefined"!=typeof IDBIndex&&(ue(IDBIndex.prototype,se,o),ue(IDBRequest.prototype,se,o),ue(IDBOpenDBRequest.prototype,se,o),ue(IDBDatabase.prototype,se,o),ue(IDBTransaction.prototype,se,o),ue(IDBCursor.prototype,se,o)),n&&ue(WebSocket.prototype,ie,o)}Zone.__load_patch("util",(e,t,r)=>{r.patchOnProperties=Z,r.patchMethod=z,r.bindArguments=_,r.patchMacroTask=P;const a=t.__symbol__("BLACK_LISTED_EVENTS"),c=t.__symbol__("UNPATCHED_EVENTS");e[c]&&(e[a]=e[c]),e[a]&&(t[a]=t[c]=e[a]),r.patchEventPrototype=G,r.patchEventTarget=F,r.isIEOrEdge=L,r.ObjectDefineProperty=o,r.ObjectGetOwnPropertyDescriptor=n,r.ObjectCreate=s,r.ArraySlice=i,r.patchClass=D,r.wrapWithCurrentZone=l,r.filterProperties=le,r.attachOriginToPatched=O,r._redefineProperty=X,r.patchCallbacks=q,r.getGlobalObjects=()=>({globalSources:N,zoneSymbolEventNames:M,eventNames:ce,isBrowser:b,isMix:v,isNode:y,TRUE_STR:"true",FALSE_STR:"false",ZONE_SYMBOL_PREFIX:"__zone_symbol__",ADD_EVENT_LISTENER_STR:"addEventListener",REMOVE_EVENT_LISTENER_STR:"removeEventListener"})});const pe=h("zoneTask");function fe(e,t,n,o){let r=null,s=null;n+=o;const i={};function a(t){const n=t.data;return n.args[0]=function(){try{t.invoke.apply(this,arguments)}finally{t.data&&t.data.isPeriodic||("number"==typeof n.handleId?delete i[n.handleId]:n.handleId&&(n.handleId[pe]=null))}},n.handleId=r.apply(e,n.args),t}function c(e){return s(e.data.handleId)}r=z(e,t+=o,n=>function(r,s){if("function"==typeof s[0]){const e=u(t,s[0],{isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?s[1]||0:void 0,args:s},a,c);if(!e)return e;const n=e.data.handleId;return"number"==typeof n?i[n]=e:n&&(n[pe]=e),n&&n.ref&&n.unref&&"function"==typeof n.ref&&"function"==typeof n.unref&&(e.ref=n.ref.bind(n),e.unref=n.unref.bind(n)),"number"==typeof n||n?n:e}return n.apply(e,s)}),s=z(e,n,t=>function(n,o){const r=o[0];let s;"number"==typeof r?s=i[r]:(s=r&&r[pe],s||(s=r)),s&&"string"==typeof s.type?"notScheduled"!==s.state&&(s.cancelFn&&s.data.isPeriodic||0===s.runCount)&&("number"==typeof r?delete i[r]:r&&(r[pe]=null),s.zone.cancelTask(s)):t.apply(e,o)})}function de(e,t){if(Zone[t.symbol("patchEventTarget")])return;const{eventNames:n,zoneSymbolEventNames:o,TRUE_STR:r,FALSE_STR:s,ZONE_SYMBOL_PREFIX:i}=t.getGlobalObjects();for(let c=0;c<n.length;c++){const e=n[c],t=i+(e+s),a=i+(e+r);o[e]={},o[e][s]=t,o[e][r]=a}const a=e.EventTarget;return a&&a.prototype?(t.patchEventTarget(e,[a&&a.prototype]),!0):void 0}Zone.__load_patch("legacy",e=>{const t=e[Zone.__symbol__("legacyPatch")];t&&t()}),Zone.__load_patch("timers",e=>{fe(e,"set","clear","Timeout"),fe(e,"set","clear","Interval"),fe(e,"set","clear","Immediate")}),Zone.__load_patch("requestAnimationFrame",e=>{fe(e,"request","cancel","AnimationFrame"),fe(e,"mozRequest","mozCancel","AnimationFrame"),fe(e,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(e,t)=>{const n=["alert","prompt","confirm"];for(let o=0;o<n.length;o++)z(e,n[o],(n,o,r)=>function(o,s){return t.current.run(n,e,s,r)})}),Zone.__load_patch("EventTarget",(e,t,n)=>{!function(e,t){t.patchEventPrototype(e,t)}(e,n),de(e,n);const o=e.XMLHttpRequestEventTarget;o&&o.prototype&&n.patchEventTarget(e,[o.prototype]),D("MutationObserver"),D("WebKitMutationObserver"),D("IntersectionObserver"),D("FileReader")}),Zone.__load_patch("on_property",(e,t,n)=>{he(n,e),Object.defineProperty=function(e,t,n){if(J(e,t))throw new TypeError("Cannot assign to read only property '"+t+"' of "+e);const o=n.configurable;return"prototype"!==t&&(n=Y(e,t,n)),K(e,t,n,o)},Object.defineProperties=function(e,t){return Object.keys(t).forEach((function(n){Object.defineProperty(e,n,t[n])})),e},Object.create=function(e,t){return"object"!=typeof t||Object.isFrozen(t)||Object.keys(t).forEach((function(n){t[n]=Y(e,n,t[n])})),W(e,t)},Object.getOwnPropertyDescriptor=function(e,t){const n=U(e,t);return n&&J(e,t)&&(n.configurable=!1),n}}),Zone.__load_patch("customElements",(e,t,n)=>{!function(e,t){const{isBrowser:n,isMix:o}=t.getGlobalObjects();(n||o)&&e.customElements&&"customElements"in e&&t.patchCallbacks(t,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}(e,n)}),Zone.__load_patch("XHR",(e,t)=>{!function(e){const p=e.XMLHttpRequest;if(!p)return;const f=p.prototype;let d=f[a],g=f[c];if(!d){const t=e.XMLHttpRequestEventTarget;if(t){const e=t.prototype;d=e[a],g=e[c]}}function _(e){const t=e.data,o=t.target;o[s]=!1,o[l]=!1;const i=o[r];d||(d=o[a],g=o[c]),i&&g.call(o,"readystatechange",i);const u=o[r]=()=>{if(o.readyState===o.DONE)if(!t.aborted&&o[s]&&"scheduled"===e.state){const n=o.__zone_symbol__loadfalse;if(n&&n.length>0){const r=e.invoke;e.invoke=function(){const n=o.__zone_symbol__loadfalse;for(let t=0;t<n.length;t++)n[t]===e&&n.splice(t,1);t.aborted||"scheduled"!==e.state||r.call(e)},n.push(e)}else e.invoke()}else t.aborted||!1!==o[s]||(o[l]=!0)};return d.call(o,"readystatechange",u),o[n]||(o[n]=e),T.apply(o,t.args),o[s]=!0,e}function m(){}function k(e){const t=e.data;return t.aborted=!0,w.apply(t.target,t.args)}const y=z(f,"open",()=>function(e,t){return e[o]=0==t[2],e[i]=t[1],y.apply(e,t)}),b=h("fetchTaskAborting"),v=h("fetchTaskScheduling"),T=z(f,"send",()=>function(e,n){if(!0===t.current[v])return T.apply(e,n);if(e[o])return T.apply(e,n);{const t={target:e,url:e[i],isPeriodic:!1,args:n,aborted:!1},o=u("XMLHttpRequest.send",m,t,_,k);e&&!0===e[l]&&!t.aborted&&"scheduled"===o.state&&o.invoke()}}),w=z(f,"abort",()=>function(e,o){const r=e[n];if(r&&"string"==typeof r.type){if(null==r.cancelFn||r.data&&r.data.aborted)return;r.zone.cancelTask(r)}else if(!0===t.current[b])return w.apply(e,o)})}(e);const n=h("xhrTask"),o=h("xhrSync"),r=h("xhrListener"),s=h("xhrScheduled"),i=h("xhrURL"),l=h("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",e=>{e.navigator&&e.navigator.geolocation&&function(e,t){const o=e.constructor.name;for(let r=0;r<t.length;r++){const s=t[r],i=e[s];if(i){if(!m(n(e,s)))continue;e[s]=(e=>{const t=function(){return e.apply(this,_(arguments,o+"."+s))};return O(t,e),t})(i)}}}(e.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(e,t)=>{function n(t){return function(n){H(e,t).forEach(o=>{const r=e.PromiseRejectionEvent;if(r){const e=new r(t,{promise:n.promise,reason:n.rejection});o.invoke(e)}})}}e.PromiseRejectionEvent&&(t[h("unhandledPromiseRejectionHandler")]=n("unhandledrejection"),t[h("rejectionHandledHandler")]=n("rejectionhandled"))})}},[[1,0]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.0907482258dfadeab004.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.0907482258dfadeab004.js
new file mode 100644 (file)
index 0000000..fb55203
--- /dev/null
@@ -0,0 +1 @@
+!function(e){function r(r){for(var n,u,c=r[0],i=r[1],f=r[2],p=0,s=[];p<c.length;p++)u=c[p],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&s.push(o[u][0]),o[u]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(r);s.length;)s.shift()();return a.push.apply(a,f||[]),t()}function t(){for(var e,r=0;r<a.length;r++){for(var t=a[r],n=!0,c=1;c<t.length;c++)0!==o[t[c]]&&(n=!1);n&&(a.splice(r--,1),e=u(u.s=t[0]))}return e}var n={},o={0:0},a=[];function u(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,u),t.l=!0,t.exports}u.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,u.nc&&c.setAttribute("nonce",u.nc),c.src=function(e){return u.p+""+({}[e]||e)+"."+{1:"4a38b529302ffa3f0c24",5:"d6b08e1c042ba6fccdd6",6:"1818f80c2e905e85a90f",7:"8c5c2bbb556260a5cc3e",8:"94051a156c6d11b38ada"}[e]+".js"}(e);var i=new Error;a=function(r){c.onerror=c.onload=null,clearTimeout(f);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,t[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}return Promise.all(r)},u.m=e,u.c=n,u.d=function(e,r,t){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(u.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)u.d(t,n,(function(r){return e[r]}).bind(null,n));return t},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="",u.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],i=c.push.bind(c);c.push=r,c=c.slice();for(var f=0;f<c.length;f++)r(c[f]);var l=i;t()}([]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.992511a1840a2561365a.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.992511a1840a2561365a.js
deleted file mode 100644 (file)
index f439ff6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(e){function r(r){for(var n,u,c=r[0],i=r[1],f=r[2],p=0,s=[];p<c.length;p++)u=c[p],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&s.push(o[u][0]),o[u]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(r);s.length;)s.shift()();return a.push.apply(a,f||[]),t()}function t(){for(var e,r=0;r<a.length;r++){for(var t=a[r],n=!0,c=1;c<t.length;c++)0!==o[t[c]]&&(n=!1);n&&(a.splice(r--,1),e=u(u.s=t[0]))}return e}var n={},o={0:0},a=[];function u(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,u),t.l=!0,t.exports}u.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,u.nc&&c.setAttribute("nonce",u.nc),c.src=function(e){return u.p+""+({1:"common"}[e]||e)+"."+{1:"855fba17cfb445002363",2:"5b0a7ba1cfec198ba8ed",6:"c0ad55977c0a220b3203",7:"904941689cb18cba0036",8:"988fe96f3a1b2f8c64cd",9:"d895914fbc785284c5be"}[e]+".js"}(e);var i=new Error;a=function(r){c.onerror=c.onload=null,clearTimeout(f);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,t[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}return Promise.all(r)},u.m=e,u.c=n,u.d=function(e,r,t){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(u.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)u.d(t,n,(function(r){return e[r]}).bind(null,n));return t},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="",u.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],i=c.push.bind(c);c.push=r,c=c.slice();for(var f=0;f<c.length;f++)r(c[f]);var l=i;t()}([]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.4f0058c288677d311127.css b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.4f0058c288677d311127.css
deleted file mode 100644 (file)
index 5af4cad..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-@charset "UTF-8";.toast-center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-title{font-weight:700}.toast-message{word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0}.toast-container{pointer-events:none;position:fixed;z-index:999999}.toast-container *{box-sizing:border-box}.toast-container .ngx-toastr{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;background-size:24px;box-shadow:0 0 12px #999;color:#fff}.toast-container .ngx-toastr:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-info{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z'/%3E%3C/svg%3E")}.toast-error{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z'/%3E%3C/svg%3E")}.toast-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3E%3C/svg%3E")}.toast-container.toast-bottom-center .ngx-toastr,.toast-container.toast-top-center .ngx-toastr{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width .ngx-toastr,.toast-container.toast-top-full-width .ngx-toastr{width:96%;margin-left:auto;margin-right:auto}.ngx-toastr{background-color:#030303;pointer-events:auto}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512' width='576' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'/%3E%3C/svg%3E");background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media all and (max-width:240px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:11em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:241px) and (max-width:480px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:18em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:481px) and (max-width:768px){.toast-container .ngx-toastr.div{padding:15px 15px 15px 50px;width:25em}}.bs-datepicker{display:flex;align-items:stretch;flex-flow:row wrap;background:#fff;box-shadow:0 0 10px 0 #aaa;position:relative;z-index:1}.bs-datepicker:after{clear:both;content:'';display:block}.bs-datepicker bs-day-picker{float:left}.bs-datepicker button:active,.bs-datepicker button:focus,.bs-datepicker button:hover,.bs-datepicker input:active,.bs-datepicker input:focus,.bs-datepicker input:hover,.bs-datepicker-btns button:active,.bs-datepicker-btns button:focus,.bs-datepicker-btns button:hover,.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:focus{outline:0}.bs-datepicker-head{min-width:270px;height:50px;padding:10px;border-radius:3px 3px 0 0;text-align:justify}.bs-datepicker-head:after{content:"";display:inline-block;vertical-align:top;width:100%}.bs-datepicker-head button{display:inline-block;vertical-align:top;padding:0;height:30px;line-height:30px;border:0;background:0 0;text-align:center;cursor:pointer;color:#fff;transition:.3s}.bs-datepicker-head button[disabled],.bs-datepicker-head button[disabled]:active,.bs-datepicker-head button[disabled]:hover{background:rgba(221,221,221,.3);color:#f5f5f5;cursor:not-allowed}.bs-datepicker-head button.next,.bs-datepicker-head button.previous{border-radius:50%;width:30px;height:30px}.bs-datepicker-head button.next span,.bs-datepicker-head button.previous span{font-size:28px;line-height:1;display:inline-block;position:relative;height:100%;width:100%;border-radius:50%}.bs-datepicker-head button.current{border-radius:15px;max-width:155px;padding:0 13px}.bs-datepicker-head button:hover{background-color:rgba(0,0,0,.1)}.bs-datepicker-head button:active{background-color:rgba(0,0,0,.2)}.bs-datepicker-body{padding:10px;border-radius:0 0 3px 3px;min-height:232px;min-width:278px;border:1px solid #e9edf0}.bs-datepicker-body .days.weeks{position:relative;z-index:1}.bs-datepicker-body table{width:100%;border-collapse:separate;border-spacing:0}.bs-datepicker-body table th{font-size:13px;color:#9aaec1;font-weight:400;text-align:center}.bs-datepicker-body table td{color:#54708b;text-align:center;position:relative;padding:0}.bs-datepicker-body table td span{display:block;margin:0 auto;font-size:13px;border-radius:50%;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker-body table td:not(.disabled):not(.week) span:not(.disabled):not(.is-other-month){cursor:pointer}.bs-datepicker-body table td span.is-highlighted:not(.disabled):not(.selected),.bs-datepicker-body table td.is-highlighted:not(.disabled):not(.selected) span{background-color:#e9edf0;transition:0s}.bs-datepicker-body table td span.is-active-other-month:not(.disabled):not(.selected),.bs-datepicker-body table td.is-active-other-month:not(.disabled):not(.selected) span{background-color:#e9edf0;transition:0s;cursor:pointer}.bs-datepicker-body table td span.disabled,.bs-datepicker-body table td.disabled span{color:#9aaec1}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff}.bs-datepicker-body table td span.is-other-month,.bs-datepicker-body table td.is-other-month span{color:rgba(0,0,0,.25)}.bs-datepicker-body table td.active{position:relative}.bs-datepicker-body table td.active.select-start:before{left:35%}.bs-datepicker-body table td.active.select-end:before{left:-85%}.bs-datepicker-body table td span.active.select-end:after,.bs-datepicker-body table td span.active.select-start:after,.bs-datepicker-body table td.active.select-end span:after,.bs-datepicker-body table td.active.select-start span:after{content:"";display:block;position:absolute;z-index:-1;width:100%;height:100%;transition:.3s;top:0;border-radius:50%}.bs-datepicker-body table td span:before,.bs-datepicker-body table td:before{content:"";display:block;position:absolute;z-index:-1;top:6px;bottom:6px;left:-2px;right:-2px;box-sizing:content-box;background:0 0}.bs-datepicker-body table td.active.select-start+td.active:before{left:-20%}.bs-datepicker-body table td:last-child.active:before{border-radius:0 3px 3px 0;width:125%;left:-25%}.bs-datepicker-body table td span[class*=select-],.bs-datepicker-body table td[class*=select-] span{border-radius:50%;color:#fff}.bs-datepicker-body table.days span.active:not(.select-start):before,.bs-datepicker-body table.days span.in-range:not(.select-start):before,.bs-datepicker-body table.days td.active:not(.select-start):before,.bs-datepicker-body table.days td.in-range:not(.select-start):before{background:#e9edf0}.bs-datepicker-body table.days span{width:32px;height:32px;line-height:32px}.bs-datepicker-body table.days span.select-start{z-index:2}.bs-datepicker-body table.days span.in-range.select-end:before,.bs-datepicker-body table.days span.is-highlighted.in-range:before{background:0 0;right:0;left:0}.bs-datepicker-body table.days td.active+td.is-highlighted:before,.bs-datepicker-body table.days td.active+td.select-end:before,.bs-datepicker-body table.days td.in-range+td.is-highlighted:before,.bs-datepicker-body table.days td.in-range+td.select-end:before,.bs-datepicker-body table.days td.select-start+td.is-highlighted:before,.bs-datepicker-body table.days td.select-start+td.select-end:before{background:#e9edf0;width:100%}.bs-datepicker-body table.weeks tr td:nth-child(2).active:before{border-radius:3px 0 0 3px;left:0;width:100%}.bs-datepicker-body table:not(.weeks) tr td:first-child:before{border-radius:3px 0 0 3px}.bs-datepicker-body table.years td span{width:46px;height:46px;line-height:45px;margin:0 auto}.bs-datepicker-body table.years tr:not(:last-child) td span{margin-bottom:8px}.bs-datepicker-body table.months td{height:52px}.bs-datepicker-body table.months td span{padding:6px;border-radius:15px}.bs-datepicker .current-timedate{color:#54708b;font-size:15px;text-align:center;height:30px;line-height:30px;border-radius:20px;border:1px solid #e9edf0;margin-bottom:10px;cursor:pointer;text-transform:uppercase;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker .current-timedate span:not(:empty):before{content:"";width:15px;height:16px;display:inline-block;margin-right:4px;vertical-align:text-bottom;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAABMklEQVQoU9VTwW3CQBCcOUgBtEBKSAukAnBKME+wFCAlYIhk8sQlxFABtJAScAsuAPBEewYcxCP8ouxrPDsza61uiVN1o6RNHD4htSCmq49RfO71BvMJqBBkITRf1kmUW49nQRC9h1I5AZlBClaL8aP1fKgOOxCx8aSLs+Q19eZuNO8QmPqJRtDFguy7OAcDbJPs+/BKVPDIPrvD2ZJgWAmVe7O0rI0Vqs1seyWUXpuJoppYCa5L+U++NpNPkr5OE2oMdARsb3gykJT5ydZcL8Z9Ww60nxg2LhjON9li9OwXZzo+xLbp3nC2s9CL2RrueGyVrgwNm8HpsCzZ9EEW6kqXlo1GQe03FzP/7W8Hl0dBtu7Bf7zt6mIwvX1RvzDCm7+q3mAW0Dl/GPdUCeXrZLT9BrDrGkm4qlPvAAAAAElFTkSuQmCC)}.bs-datepicker-multiple{border-radius:4px 0 0 4px}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-left:10px}.bs-datepicker-multiple .bs-datepicker{box-shadow:none;position:relative}.bs-datepicker-multiple .bs-datepicker:not(:last-child){padding-right:10px}.bs-datepicker-multiple .bs-datepicker+.bs-datepicker:after{content:"";display:block;width:14px;height:10px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAA1ElEQVQoU42RsQrCUAxF77VuDu7O4oMWW//BURBBpZvgKk4uIrjoqKOTf+DopIO4uYggtFTfw3+pkQqCW1/G5J7kJiFy4m5MxUlxAzgIPHX+lzMPzupRYlYgxiR7vqsOP8YKzsTx0yxFMCUZ+q7aZzlr+OvgoWcAFyAHgat2jLWu48252DdqAihDJGSSJNUUxYmQjs3+hPQBlAh2rG2LCOPnaw3IiGDX99TRCs7ASJsNhUOA7d/LcuHvRG22FIZvsNXw1MX6VZExCilOQKEfeLXr/10+aC9Ho7arh7oAAAAASUVORK5CYII=);position:absolute;top:25px;left:-8px}.bs-datepicker-multiple .bs-datepicker .left{float:left}.bs-datepicker-multiple .bs-datepicker .right{float:right}.bs-datepicker-container{padding:15px}.bs-datepicker .bs-media-container{display:flex}@media (max-width:768px){.bs-datepicker .bs-media-container{flex-direction:column}}.bs-datepicker-custom-range{padding:15px;background:#eee}.bs-datepicker-predefined-btns button{width:100%;display:block;height:30px;background-color:#9aaec1;border-radius:4px;color:#fff;border:0;margin-bottom:10px;padding:0 18px;text-align:left;transition:.3s}.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:hover{background-color:#54708b}.bs-datepicker-buttons{display:flex;flex-flow:row wrap;justify-content:flex-end;padding-top:10px;border-top:1px solid #e9edf0}.bs-datepicker-buttons .btn-default{margin-left:10px}.bs-timepicker-container{padding:10px 0}.bs-timepicker-label{color:#54708b;margin-bottom:10px}.bs-timepicker-controls{display:inline-block;vertical-align:top;margin-right:10px}.bs-timepicker-controls button{width:20px;height:20px;border-radius:50%;border:0;background-color:#e9edf0;color:#54708b;font-size:16px;font-weight:700;vertical-align:middle;line-height:0;padding:0;transition:.3s}.bs-timepicker-controls button:hover{background-color:#d5dadd}.bs-timepicker-controls input{width:35px;height:25px;border-radius:13px;text-align:center;border:1px solid #e9edf0}.bs-timepicker .switch-time-format{text-transform:uppercase;min-width:54px;height:25px;border-radius:20px;border:1px solid #e9edf0;background:#fff;color:#54708b;font-size:13px}.bs-timepicker .switch-time-format img{vertical-align:initial;margin-left:4px}bs-datepicker-container,bs-daterangepicker-container{z-index:1080}@media (max-width:768px){.bs-datepicker-multiple{display:flex}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-top:10px;margin-left:0}}.theme-default .bs-datepicker-body table td span.selected,.theme-default .bs-datepicker-body table td span[class*=select-]:after,.theme-default .bs-datepicker-body table td.selected span,.theme-default .bs-datepicker-body table td[class*=select-] span:after,.theme-default .bs-datepicker-head{background-color:#777}.theme-default .bs-datepicker-body table td.week span{color:#777}.theme-default .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#777;color:#fff;opacity:.5;transition:0s}.theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td[class*=select-] span:after,.theme-green .bs-datepicker-head{background-color:#5cb85c}.theme-green .bs-datepicker-body table td.week span{color:#5cb85c}.theme-green .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5cb85c;color:#fff;opacity:.5;transition:0s}.theme-blue .bs-datepicker-body table td span.selected,.theme-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-blue .bs-datepicker-body table td.selected span,.theme-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-blue .bs-datepicker-head{background-color:#5bc0de}.theme-blue .bs-datepicker-body table td.week span{color:#5bc0de}.theme-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5bc0de;color:#fff;opacity:.5;transition:0s}.theme-dark-blue .bs-datepicker-body table td span.selected,.theme-dark-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-dark-blue .bs-datepicker-body table td.selected span,.theme-dark-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-dark-blue .bs-datepicker-head{background-color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.week span{color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#337ab7;color:#fff;opacity:.5;transition:0s}.theme-red .bs-datepicker-body table td span.selected,.theme-red .bs-datepicker-body table td span[class*=select-]:after,.theme-red .bs-datepicker-body table td.selected span,.theme-red .bs-datepicker-body table td[class*=select-] span:after,.theme-red .bs-datepicker-head{background-color:#d9534f}.theme-red .bs-datepicker-body table td.week span{color:#d9534f}.theme-red .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#d9534f;color:#fff;opacity:.5;transition:0s}.theme-orange .bs-datepicker-body table td span.selected,.theme-orange .bs-datepicker-body table td span[class*=select-]:after,.theme-orange .bs-datepicker-body table td.selected span,.theme-orange .bs-datepicker-body table td[class*=select-] span:after,.theme-orange .bs-datepicker-head{background-color:#f0ad4e}.theme-orange .bs-datepicker-body table td.week span{color:#f0ad4e}.theme-orange .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#f0ad4e;color:#fff;opacity:.5;transition:0s}.tree-children.tree-children-no-padding{padding-left:0}.node-drop-slot{display:block;height:2px}.node-drop-slot.is-dragging-over{background:#dfe;height:20px;border:2px dotted #888}.toggle-children-wrapper-expanded .toggle-children{transform:rotate(90deg)}.toggle-children-wrapper-collapsed .toggle-children{transform:rotate(0)}.toggle-children-wrapper{padding:2px 3px 5px 1px}.toggle-children{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABAhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzRkRFQjcxODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzRkRFQjcwODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTk5NzA1OGEtZDI3OC00NDZkLWE4ODgtNGM4MGQ4YWI1NzNmIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzRkZmQxMGMtY2NlNS0xMTc4LWE5OGQtY2NkZmM5ODk5YWYwIi8+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+Z2x5cGhpY29uczwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6dGl0bGU+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5iogFwAAAGhJREFUeNpiYGBgKABigf///zOQg0EARH4A4gZyDIIZ8B/JoAJKDIDhB0CcQIkBRBtEyABkgxwoMQCGD6AbRKoBGAYxQgXIBRuZGKgAKPIC3QLxArnRSHZCIjspk52ZKMrOFBUoAAEGAKnq593MQAZtAAAAAElFTkSuQmCC);height:8px;width:9px;background-size:contain;display:inline-block;position:relative;top:1px;background-repeat:no-repeat;background-position:center}.toggle-children-placeholder{display:inline-block;height:10px;width:10px;position:relative;top:1px;padding-right:3px}.node-content-wrapper{display:inline-block;padding:2px 5px;border-radius:2px;transition:background-color .15s,box-shadow .15s}.node-wrapper{display:flex;align-items:flex-start}.node-content-wrapper-active,.node-content-wrapper-active.node-content-wrapper-focused,.node-content-wrapper.node-content-wrapper-active:hover{background:#beebff}.node-content-wrapper-focused{background:#e7f4f9}.node-content-wrapper:hover{background:#f7fbff}.node-content-wrapper-active,.node-content-wrapper-focused,.node-content-wrapper:hover{box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over{background:#dfe;box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over-disabled{opacity:.5}tree-viewport{-webkit-tap-highlight-color:transparent;height:100%;overflow:auto;display:block}.tree-children{overflow:hidden;padding-left:20px}.empty-tree-drop-slot .node-drop-slot{height:20px;min-width:100px}.angular-tree-component{width:100%;position:relative;display:inline-block;cursor:pointer;-webkit-touch-callout:none;-moz-user-select:none;user-select:none}tree-root .angular-tree-component-rtl{direction:rtl}tree-root .angular-tree-component-rtl .toggle-children-wrapper-collapsed .toggle-children{transform:rotate(180deg)!important}tree-root .angular-tree-component-rtl .tree-children{padding-right:20px;padding-left:0}tree-node-checkbox{padding:1px}/*!
- * Bootstrap v4.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 The Bootstrap Authors
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#2b99a8;--secondary:#ef5c55;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#777777;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0}dl,ol,p,ul{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote,figure{margin:0 0 1rem}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#2b99a8;text-decoration:none;background-color:transparent}a:hover{color:#1b626b;text-decoration:underline}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{box-sizing:content-box;height:0;overflow:visible;margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row,cd-about dl{display:flex;flex-wrap:wrap}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.cd-col-form,.cd-col-form-input,.cd-col-form-label,.cd-col-form-offset,.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto,cd-about dd,cd-about dt,cd-health cd-info-card,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-performance-card,cd-health cd-info-card.cd-status-card,cd-modal .cd-col-form-input,cd-modal .cd-col-form-label,cd-modal .cd-col-form-offset{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4,cd-about dt{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8,cd-about dd{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.cd-col-form,.col-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.cd-col-form-input,.cd-col-form-offset,.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.cd-col-form-offset,.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6,cd-health cd-info-card{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.cd-col-form-input,.cd-col-form-offset,.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.cd-col-form-label,.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4,cd-health cd-info-card,cd-modal .cd-col-form-label{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.cd-col-form,.col-lg-8,cd-modal .cd-col-form-input,cd-modal .cd-col-form-offset{flex:0 0 66.6666666667%;max-width:66.6666666667%}.cd-col-form-input,.cd-col-form-offset,.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.cd-col-form-offset,.offset-lg-3{margin-left:25%}.offset-lg-4,cd-modal .cd-col-form-offset{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width:1200px){.col-xl,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-performance-card{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3,cd-health cd-info-card.cd-status-card{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.cd-col-form,.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#c4e2e7}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#91cad2}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b2d9e0}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#fbd1cf}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#f7aaa7}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#f9bab7}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#d9d9d9}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#b8b8b8}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#ccc}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.cd-form-control,.form-control{width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.cd-form-control,.form-control{transition:none}}.cd-form-control::-ms-expand,.form-control::-ms-expand{background-color:transparent;border:0}.cd-form-control:-moz-focusring,.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.cd-form-control:focus,.form-control:focus{color:#495057;background-color:#fff;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.cd-form-control::placeholder,.form-control::placeholder{color:#6c757d;opacity:1}.cd-form-control:disabled,.form-control:disabled,.form-control[readonly],[readonly].cd-form-control{background-color:#e9ecef;opacity:1}select.cd-form-control:focus::-ms-value,select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.cd-col-form-label,.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],select[multiple].cd-form-control,select[size].cd-form-control,textarea.cd-form-control,textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.is-valid.cd-form-control,.was-validated .cd-form-control:valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.is-valid.cd-form-control:focus,.was-validated .cd-form-control:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.cd-form-control:valid,.was-validated textarea.form-control:valid,textarea.form-control.is-valid,textarea.is-valid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat #fff}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.is-invalid.cd-form-control,.was-validated .cd-form-control:invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.is-invalid.cd-form-control:focus,.was-validated .cd-form-control:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.cd-form-control:invalid,.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid,textarea.is-invalid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat #fff}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .cd-form-control,.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary:hover{color:#fff;background-color:#237d8a;border-color:#21747f}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#237d8a;border-color:#21747f;box-shadow:0 0 0 .2rem rgba(75,168,181,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#21747f;border-color:#1e6b75}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(75,168,181,.5)}.btn-secondary{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-secondary:hover{color:#fff;background-color:#ec3a32;border-color:#eb2f26}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#ec3a32;border-color:#eb2f26;box-shadow:0 0 0 .2rem rgba(241,116,111,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#eb2f26;border-color:#ea241b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(241,116,111,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529}.btn-light:hover{color:#212529}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#777;border-color:#777}.btn-dark:hover{color:#fff;background-color:#646464;border-color:#5e5e5e}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#646464;border-color:#5e5e5e;box-shadow:0 0 0 .2rem rgba(139,139,139,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#777;border-color:#777}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#5e5e5e;border-color:#575757}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(139,139,139,.5)}.btn-outline-primary{color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:hover{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(43,153,168,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#2b99a8;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(43,153,168,.5)}.btn-outline-secondary{color:#ef5c55;border-color:#ef5c55}.btn-outline-secondary:hover{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(239,92,85,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#ef5c55;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(239,92,85,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#777;border-color:#777}.btn-outline-dark:hover{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(119,119,119,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#777;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(119,119,119,.5)}.btn-link{font-weight:400;color:#2b99a8;text-decoration:none}.btn-link:hover{color:#1b626b;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid;vertical-align:0}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent;vertical-align:0}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#2b99a8}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.cd-form-control,.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.cd-form-control+.cd-form-control,.input-group>.cd-form-control+.custom-file,.input-group>.cd-form-control+.custom-select,.input-group>.cd-form-control+.form-control,.input-group>.custom-file+.cd-form-control,.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.cd-form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.cd-form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.cd-form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.cd-form-control:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.cd-form-control:not(:last-child),.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.cd-form-control:not(:first-child),.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.cd-form-control:not(textarea),.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.cd-form-control,.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.cd-form-control:not(textarea),.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.cd-form-control,.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#2b99a8;background-color:#2b99a8}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#76d0dc}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#9fdee6;border-color:#9fdee6}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#2b99a8;background-color:#2b99a8}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat #fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#76d0dc;outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#76d0dc;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(43,153,168,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(43,153,168,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(43,153,168,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#2b99a8;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.collapsing,.custom-switch .custom-control-label::after{transition:none}.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#9fdee6}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#2b99a8;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#9fdee6}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#2b99a8;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#9fdee6}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#2b99a8}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:center center/100% 100% no-repeat}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card,pre{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr,pre>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child,pre>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child,pre>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card,.card-deck pre{margin-bottom:15px}@media (min-width:576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck pre{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card,.card-group>pre{margin-bottom:15px}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card,.card-group>pre{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.card+pre,.card-group>pre+.card,.card-group>pre+pre{margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>pre:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top,.card-group>pre:not(:last-child) .card-header,.card-group>pre:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom,.card-group>pre:not(:last-child) .card-footer,.card-group>pre:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>pre:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top,.card-group>pre:not(:first-child) .card-header,.card-group>pre:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom,.card-group>pre:not(:first-child) .card-footer,.card-group>pre:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card,.card-columns pre{display:inline-block;width:100%}}.card-columns .card,.card-columns pre{margin-bottom:.75rem}.accordion>.card,.accordion>pre{overflow:hidden}.accordion>.card:not(:last-of-type),.accordion>pre:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type),.accordion>pre:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header,.accordion>pre>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination,cd-table .cd-datatable .datatable-footer .datatable-pager ul{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#2b99a8;background-color:#fff;border:1px solid #dee2e6}.page-link:hover,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:hover{z-index:2;color:#1b626b;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.page-item:first-child .page-link,.page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link,.page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link,.page-item.active cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.active a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active a{z-index:3;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.page-item.disabled .page-link,.page-item.disabled cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.disabled a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled a{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg a{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link,.pagination-lg .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:first-child a{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link,.pagination-lg .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:last-child a{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm a{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link,.pagination-sm .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:first-child a{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link,.pagination-sm .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:last-child a{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:1rem;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#2b99a8}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#21747f}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.5)}.badge-secondary{color:#fff;background-color:#ef5c55}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#eb2f26}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(239,92,85,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#777}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#5e5e5e}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(119,119,119,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#165057;background-color:#d5ebee;border-color:#c4e2e7}.alert-primary hr{border-top-color:#b2d9e0}.alert-primary .alert-link{color:#0c2b2e}.alert-secondary{color:#7c302c;background-color:#fcdedd;border-color:#fbd1cf}.alert-secondary hr{border-top-color:#f9bab7}.alert-secondary .alert-link{color:#56211f}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#3e3e3e;background-color:#e4e4e4;border-color:#d9d9d9}.alert-dark hr{border-top-color:#ccc}.alert-dark .alert-link{color:#252525}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#2b99a8;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#165057;background-color:#c4e2e7}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#165057;background-color:#b2d9e0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#165057;border-color:#165057}.list-group-item-secondary{color:#7c302c;background-color:#fbd1cf}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#7c302c;background-color:#f9bab7}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#7c302c;border-color:#7c302c}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#3e3e3e;background-color:#d9d9d9}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#3e3e3e;background-color:#ccc}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#3e3e3e;border-color:#3e3e3e}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}.progress-bar-animated{animation:none}.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;text-align:center;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:350px;font-family:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right,.carousel-item{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev,.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#2b99a8!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#21747f!important}.bg-secondary{background-color:#ef5c55!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#eb2f26!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light,pre{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#777!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#5e5e5e!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom,.cd-header,legend{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#2b99a8!important}.border-secondary{border-color:#ef5c55!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#777!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex,cd-health cd-info-card{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column,cd-health cd-info-card{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.btn-toolbar cd-table-actions.btn-group,.mr-2,.mx-2,cd-logs label{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3,cd-logs .form-inline>.form-group{margin-right:1rem!important}.mb-3,.my-3,cd-logs .form-inline>.form-group{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.cd-header,.mt-4,.my-4,legend{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.cd-header,.mb-4,.my-4,cd-health cd-info-card,legend{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.cd-header,.pb-1,.py-1,legend{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2,cd-table .cd-datatable .datatable-footer,pre{padding:.5rem!important}.pt-2,.py-2,cd-info-card .card .card-body .card-text,cd-info-card pre .card-body .card-text{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2,cd-info-card .card,cd-info-card pre{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold,cd-about dt{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#2b99a8!important}a.text-primary:focus,a.text-primary:hover{color:#1b626b!important}.text-secondary{color:#ef5c55!important}a.text-secondary:focus,a.text-secondary:hover{color:#e21f15!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#777!important}a.text-dark:focus,a.text-dark:hover{color:#515151!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}/*!
-Fork Awesome 1.1.7
-License - https://forkaweso.me/Fork-Awesome/license
-
-Copyright 2018 Dave Gandy & Fork Awesome
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?v=1.1.7);src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?#iefix&v=1.1.7) format("embedded-opentype"),url(forkawesome-webfont.3a9e014c2469ffa65a0e.woff2?v=1.1.7) format("woff2"),url(forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff?v=1.1.7) format("woff"),url(forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf?v=1.1.7) format("truetype"),url(forkawesome-webfont.78dcc9c4999659b8026a.svg?v=1.1.7#forkawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa,.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:2s linear infinite fa-spin}.fa-pulse{animation:1s steps(8) infinite fa-spin}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before,.fa-sync:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell-o:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-globe-e:before{content:""}.fa-globe-w:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-community:before,.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus-g:before,.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before,.fa-pound:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:""}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:""}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before,.fa-closed-captioning:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before,.fa-gem:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-medium-square:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo-v:before,.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.fa-mastodon:before{content:""}.fa-mastodon-alt:before{content:""}.fa-fork-awesome:before,.fa-fork-circle:before{content:""}.fa-peertube:before{content:""}.fa-diaspora:before{content:""}.fa-friendica:before{content:""}.fa-gnu-social:before{content:""}.fa-liberapay-square:before{content:""}.fa-liberapay:before{content:""}.fa-scuttlebutt:before,.fa-ssb:before{content:""}.fa-hubzilla:before{content:""}.fa-social-home:before{content:""}.fa-artstation:before{content:""}.fa-discord:before{content:""}.fa-discord-alt:before{content:""}.fa-patreon:before{content:""}.fa-snowdrift:before{content:""}.fa-activitypub:before{content:""}.fa-ethereum:before{content:""}.fa-keybase:before{content:""}.fa-shaarli:before{content:""}.fa-shaarli-o:before{content:""}.fa-cut-key:before,.fa-key-modern:before{content:""}.fa-xmpp:before{content:""}.fa-archive-org:before{content:""}.fa-freedombox:before{content:""}.fa-facebook-messenger:before{content:""}.fa-debian:before{content:""}.fa-mastodon-square:before{content:""}.fa-tipeee:before{content:""}.fa-react:before{content:""}.fa-dogmazic:before{content:""}.fa-zotero:before{content:""}.fa-nodejs:before{content:""}.fa-nextcloud:before{content:""}.fa-nextcloud-square:before{content:""}.fa-hackaday:before{content:""}.fa-laravel:before{content:""}.fa-signalapp:before{content:""}.fa-gnupg:before{content:""}.fa-php:before{content:""}.fa-ffmpeg:before{content:""}.fa-joplin:before{content:""}.fa-syncthing:before{content:""}.fa-inkscape:before{content:""}.fa-matrix-org:before{content:""}.fa-pixelfed:before{content:""}.fa-bootstrap:before{content:""}.fa-dev-to:before{content:""}.fa-hashnode:before{content:""}.fa-jirafeau:before{content:""}.fa-emby:before{content:""}.fa-wikidata:before{content:""}.fa-gimp:before{content:""}.fa-c:before{content:""}.fa-digitalocean:before{content:""}.fa-att:before{content:""}.fa-gitea:before{content:""}.fa-file-epub:before{content:""}.fa-python:before{content:""}.fa-archlinux:before{content:""}.fa-pleroma:before{content:""}.fa-unsplash:before{content:""}.fa-hackster:before{content:""}.fa-spell-check:before{content:""}.fa-moon:before{content:""}.fa-sun:before{content:""}.fa-f-droid:before{content:""}.fa-biometric:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;white-space:normal;position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.info-card-popover-cluster-status{max-width:23vw;max-height:20vh}.info-card-popover-cluster-status .popover-body{max-width:100%;max-height:19vh;font-size:12px}@media (max-width:calc(1200px - 1px)){.info-card-popover-cluster-status{max-width:31vw}}@media (max-width:calc(992px - 1px)){.info-card-popover-cluster-status{max-width:46vw}}@media (max-width:calc(768px - 1px)){.info-card-popover-cluster-status{max-width:83vw}}.info-card-content-clickable{cursor:pointer;padding:7px;border:1px solid #efefef;border-radius:3px}.info-card-content-clickable:hover{border-color:#d1d1d1;background-color:#f3f3f3}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:initial}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#2b99a8;background-color:#2b99a8}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#adb5bd}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#76d0dc}html{background-color:#fff}body,html{width:100%;height:100%;font-size:12px}h1{letter-spacing:-1px;font-size:2em}h2{letter-spacing:-1px;font-size:1.833em}h3{display:block;font-size:1.583em;font-weight:400}h4{font-size:1.5em;line-height:normal}option{font-weight:400;font-style:normal}.full-height{height:100vh}.full-width{width:100vw}.vertical-align{display:flex;align-items:center}.horizontal-align{display:flex;justify-content:center}.loading{position:absolute;top:50%;left:50%}.margin-right-md{margin-right:15px}.no-border{border:0;box-shadow:0 0 0!important}.italic{font-style:italic}.bold{font-weight:700}.text-pre{white-space:pre-wrap}.btn-light{background-color:#fff!important;border-color:#ced4da!important}.btn-light:hover{background-color:#ddd!important;border-color:#adadad!important}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:0}.btn-primary .badge{color:#2b99a8;background-color:#eee}.btn-group>.btn>i.fa,.cd-datatable-actions button.btn i.fa{margin-right:5px}.dropdown-menu{min-width:50px;z-index:999999}.dropdown-menu>li>a{color:#474544;cursor:pointer}.dropdown-menu>li>a>i.fa{margin-right:5px}.dropdown-menu>.active>a{color:#eee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#21747f}.dataTables_wrapper .dropdown-menu>li.dropdown-divider{cursor:auto}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{padding-left:30px!important;padding-right:30px!important}.row,cd-about dl{margin-left:-30px;margin-right:-30px}.cd-col-form,.cd-col-form-input,.cd-col-form-label,.cd-col-form-offset,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,cd-about dd,cd-about dt,cd-health cd-info-card,cd-modal .cd-col-form-input,cd-modal .cd-col-form-label,cd-modal .cd-col-form-offset{padding-left:30px;padding-right:30px}tags-input .tags{border-radius:4px;border:1px solid #d1d1d1;box-shadow:inset 0 1px 1px rgba(0,0,0,.09)}.card .accordion-title,pre .accordion-title,uib-accordion .card-title{font-size:14px!important}.card-header{font-size:1.3em}.card-body h2:first-child{margin-top:0}.disabled{pointer-events:none}.clickable,a{cursor:pointer}:invalid .has-error-btn,:invalid .has-error-btn:disabled:hover{background-color:#f2dede;border-color:#a94442}.noscript{padding-top:5em}.noscript p{color:#777}.required::after{color:#a94442;content:"*";font-size:14px;padding-left:4px}.form-footer{width:100%;display:flex}.cd-form-control,.form-control{display:table-cell}.cd-form-control:focus,.form-control:focus{border-color:rgba(43,153,168,.8);outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px 2px rgba(43,153,168,.5)}.custom-checkbox{padding-top:7px}.card-footer button.btn:not(:first-child),.modal-footer button.btn:not(:first-child){margin-left:5px}.nav-tabs{margin-bottom:15px}.ceph-icon{background:url(Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png)}.prometheus-icon{background:url(prometheus_logo.074db273ef932a67d91b.svg)}.custom-icon{padding:10px;margin-right:8px;background-clip:padding-box;background-size:contain;background-repeat:no-repeat}.toast-message .custom-icon{filter:brightness(0) invert(1);-webkit-filter:brightness(0) invert(1);-moz-filter:brightness(0) invert(1);-o-filter:brightness(0) invert(1);-ms-filter:brightness(0) invert(1)}.block-ui-wrapper{background:rgba(0,0,0,.7)!important}.tooltip-wide .tooltip-inner{width:400px}.tooltip-inner{background-color:#fff;border:1px solid grey;color:#333;font-size:1.1em}.toast-message>ul{padding-left:1em;margin:0}@media (min-width:576px){.cd-col-form-label,.col-form-label{text-align:right}}.cd-col-form-label,.col-form-label{font-weight:700}cd-submit-button{background-color:transparent!important}bfv-messages{display:none}.form-group.has-error .invalid-feedback{display:block}.password-strength-level{flex:100%;margin-top:2px}.password-strength-level .ok,.password-strength-level .strong,.password-strength-level .very-strong,.password-strength-level .weak{border-radius:.25rem;height:13px}.password-strength-level .weak{width:25%;background:red}.password-strength-level .ok{width:50%;background:#ffc200}.password-strength-level .strong{width:75%;background:#0b0}.password-strength-level .very-strong{width:100%;background:#245e03}.badge-hdd{color:#fff;background-color:#90949c}.badge-ssd{color:#fff;background-color:#288cea}.badge-tab{color:#555;background-color:#f3f3f3}tree-root tree-viewport{min-height:1em}
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.58a2c96c3b87bd02e7a7.css b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.58a2c96c3b87bd02e7a7.css
new file mode 100644 (file)
index 0000000..78ea15c
--- /dev/null
@@ -0,0 +1,17 @@
+@charset "UTF-8";.toast-center-center{top:50%;left:50%;transform:translate(-50%,-50%)}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-title{font-weight:700}.toast-message{word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0}.toast-container{pointer-events:none;position:fixed;z-index:999999}.toast-container *{box-sizing:border-box}.toast-container .ngx-toastr{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;background-size:24px;box-shadow:0 0 12px #999;color:#fff}.toast-container .ngx-toastr:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-info{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z'/%3E%3C/svg%3E")}.toast-error{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z'/%3E%3C/svg%3E")}.toast-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3E%3C/svg%3E")}.toast-container.toast-bottom-center .ngx-toastr,.toast-container.toast-top-center .ngx-toastr{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width .ngx-toastr,.toast-container.toast-top-full-width .ngx-toastr{width:96%;margin-left:auto;margin-right:auto}.ngx-toastr{background-color:#030303;pointer-events:auto}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512' width='576' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'/%3E%3C/svg%3E");background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media all and (max-width:240px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:11em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:241px) and (max-width:480px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:18em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:481px) and (max-width:768px){.toast-container .ngx-toastr.div{padding:15px 15px 15px 50px;width:25em}}.bs-datepicker{display:flex;align-items:stretch;flex-flow:row wrap;background:#fff;box-shadow:0 0 10px 0 #aaa;position:relative;z-index:1}.bs-datepicker:after{clear:both;content:'';display:block}.bs-datepicker bs-day-picker{float:left}.bs-datepicker button:active,.bs-datepicker button:focus,.bs-datepicker button:hover,.bs-datepicker input:active,.bs-datepicker input:focus,.bs-datepicker input:hover,.bs-datepicker-btns button:active,.bs-datepicker-btns button:focus,.bs-datepicker-btns button:hover,.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:focus{outline:0}.bs-datepicker-head{min-width:270px;height:50px;padding:10px;border-radius:3px 3px 0 0;text-align:justify}.bs-datepicker-head:after{content:"";display:inline-block;vertical-align:top;width:100%}.bs-datepicker-head button{display:inline-block;vertical-align:top;padding:0;height:30px;line-height:30px;border:0;background:0 0;text-align:center;cursor:pointer;color:#fff;transition:.3s}.bs-datepicker-head button[disabled],.bs-datepicker-head button[disabled]:active,.bs-datepicker-head button[disabled]:hover{background:rgba(221,221,221,.3);color:#f5f5f5;cursor:not-allowed}.bs-datepicker-head button.next,.bs-datepicker-head button.previous{border-radius:50%;width:30px;height:30px}.bs-datepicker-head button.next span,.bs-datepicker-head button.previous span{font-size:28px;line-height:1;display:inline-block;position:relative;height:100%;width:100%;border-radius:50%}.bs-datepicker-head button.current{border-radius:15px;max-width:155px;padding:0 13px}.bs-datepicker-head button:hover{background-color:rgba(0,0,0,.1)}.bs-datepicker-head button:active{background-color:rgba(0,0,0,.2)}.bs-datepicker-body{padding:10px;border-radius:0 0 3px 3px;min-height:232px;min-width:278px;border:1px solid #e9edf0}.bs-datepicker-body .days.weeks{position:relative;z-index:1}.bs-datepicker-body table{width:100%;border-collapse:separate;border-spacing:0}.bs-datepicker-body table th{font-size:13px;color:#9aaec1;font-weight:400;text-align:center}.bs-datepicker-body table td{color:#54708b;text-align:center;position:relative;padding:0}.bs-datepicker-body table td span{display:block;margin:0 auto;font-size:13px;border-radius:50%;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker-body table td:not(.disabled):not(.week) span:not(.disabled):not(.is-other-month){cursor:pointer}.bs-datepicker-body table td span.is-highlighted:not(.disabled):not(.selected),.bs-datepicker-body table td.is-highlighted:not(.disabled):not(.selected) span{background-color:#e9edf0;transition:0s}.bs-datepicker-body table td span.is-active-other-month:not(.disabled):not(.selected),.bs-datepicker-body table td.is-active-other-month:not(.disabled):not(.selected) span{background-color:#e9edf0;transition:0s;cursor:pointer}.bs-datepicker-body table td span.disabled,.bs-datepicker-body table td.disabled span{color:#9aaec1}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff}.bs-datepicker-body table td span.is-other-month,.bs-datepicker-body table td.is-other-month span{color:rgba(0,0,0,.25)}.bs-datepicker-body table td.active{position:relative}.bs-datepicker-body table td.active.select-start:before{left:35%}.bs-datepicker-body table td.active.select-end:before{left:-85%}.bs-datepicker-body table td span.active.select-end:after,.bs-datepicker-body table td span.active.select-start:after,.bs-datepicker-body table td.active.select-end span:after,.bs-datepicker-body table td.active.select-start span:after{content:"";display:block;position:absolute;z-index:-1;width:100%;height:100%;transition:.3s;top:0;border-radius:50%}.bs-datepicker-body table td span:before,.bs-datepicker-body table td:before{content:"";display:block;position:absolute;z-index:-1;top:6px;bottom:6px;left:-2px;right:-2px;box-sizing:content-box;background:0 0}.bs-datepicker-body table td.active.select-start+td.active:before{left:-20%}.bs-datepicker-body table td:last-child.active:before{border-radius:0 3px 3px 0;width:125%;left:-25%}.bs-datepicker-body table td span[class*=select-],.bs-datepicker-body table td[class*=select-] span{border-radius:50%;color:#fff}.bs-datepicker-body table.days span.active:not(.select-start):before,.bs-datepicker-body table.days span.in-range:not(.select-start):before,.bs-datepicker-body table.days td.active:not(.select-start):before,.bs-datepicker-body table.days td.in-range:not(.select-start):before{background:#e9edf0}.bs-datepicker-body table.days span{width:32px;height:32px;line-height:32px}.bs-datepicker-body table.days span.select-start{z-index:2}.bs-datepicker-body table.days span.in-range.select-end:before,.bs-datepicker-body table.days span.is-highlighted.in-range:before{background:0 0;right:0;left:0}.bs-datepicker-body table.days td.active+td.is-highlighted:before,.bs-datepicker-body table.days td.active+td.select-end:before,.bs-datepicker-body table.days td.in-range+td.is-highlighted:before,.bs-datepicker-body table.days td.in-range+td.select-end:before,.bs-datepicker-body table.days td.select-start+td.is-highlighted:before,.bs-datepicker-body table.days td.select-start+td.select-end:before{background:#e9edf0;width:100%}.bs-datepicker-body table.weeks tr td:nth-child(2).active:before{border-radius:3px 0 0 3px;left:0;width:100%}.bs-datepicker-body table:not(.weeks) tr td:first-child:before{border-radius:3px 0 0 3px}.bs-datepicker-body table.years td span{width:46px;height:46px;line-height:45px;margin:0 auto}.bs-datepicker-body table.years tr:not(:last-child) td span{margin-bottom:8px}.bs-datepicker-body table.months td{height:52px}.bs-datepicker-body table.months td span{padding:6px;border-radius:15px}.bs-datepicker .current-timedate{color:#54708b;font-size:15px;text-align:center;height:30px;line-height:30px;border-radius:20px;border:1px solid #e9edf0;margin-bottom:10px;cursor:pointer;text-transform:uppercase;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker .current-timedate span:not(:empty):before{content:"";width:15px;height:16px;display:inline-block;margin-right:4px;vertical-align:text-bottom;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAABMklEQVQoU9VTwW3CQBCcOUgBtEBKSAukAnBKME+wFCAlYIhk8sQlxFABtJAScAsuAPBEewYcxCP8ouxrPDsza61uiVN1o6RNHD4htSCmq49RfO71BvMJqBBkITRf1kmUW49nQRC9h1I5AZlBClaL8aP1fKgOOxCx8aSLs+Q19eZuNO8QmPqJRtDFguy7OAcDbJPs+/BKVPDIPrvD2ZJgWAmVe7O0rI0Vqs1seyWUXpuJoppYCa5L+U++NpNPkr5OE2oMdARsb3gykJT5ydZcL8Z9Ww60nxg2LhjON9li9OwXZzo+xLbp3nC2s9CL2RrueGyVrgwNm8HpsCzZ9EEW6kqXlo1GQe03FzP/7W8Hl0dBtu7Bf7zt6mIwvX1RvzDCm7+q3mAW0Dl/GPdUCeXrZLT9BrDrGkm4qlPvAAAAAElFTkSuQmCC)}.bs-datepicker-multiple{border-radius:4px 0 0 4px}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-left:10px}.bs-datepicker-multiple .bs-datepicker{box-shadow:none;position:relative}.bs-datepicker-multiple .bs-datepicker:not(:last-child){padding-right:10px}.bs-datepicker-multiple .bs-datepicker+.bs-datepicker:after{content:"";display:block;width:14px;height:10px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAA1ElEQVQoU42RsQrCUAxF77VuDu7O4oMWW//BURBBpZvgKk4uIrjoqKOTf+DopIO4uYggtFTfw3+pkQqCW1/G5J7kJiFy4m5MxUlxAzgIPHX+lzMPzupRYlYgxiR7vqsOP8YKzsTx0yxFMCUZ+q7aZzlr+OvgoWcAFyAHgat2jLWu48252DdqAihDJGSSJNUUxYmQjs3+hPQBlAh2rG2LCOPnaw3IiGDX99TRCs7ASJsNhUOA7d/LcuHvRG22FIZvsNXw1MX6VZExCilOQKEfeLXr/10+aC9Ho7arh7oAAAAASUVORK5CYII=);position:absolute;top:25px;left:-8px}.bs-datepicker-multiple .bs-datepicker .left{float:left}.bs-datepicker-multiple .bs-datepicker .right{float:right}.bs-datepicker-container{padding:15px}.bs-datepicker .bs-media-container{display:flex}@media (max-width:768px){.bs-datepicker .bs-media-container{flex-direction:column}}.bs-datepicker-custom-range{padding:15px;background:#eee}.bs-datepicker-predefined-btns button{width:100%;display:block;height:30px;background-color:#9aaec1;border-radius:4px;color:#fff;border:0;margin-bottom:10px;padding:0 18px;text-align:left;transition:.3s}.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:hover{background-color:#54708b}.bs-datepicker-buttons{display:flex;flex-flow:row wrap;justify-content:flex-end;padding-top:10px;border-top:1px solid #e9edf0}.bs-datepicker-buttons .btn-default{margin-left:10px}.bs-timepicker-container{padding:10px 0}.bs-timepicker-label{color:#54708b;margin-bottom:10px}.bs-timepicker-controls{display:inline-block;vertical-align:top;margin-right:10px}.bs-timepicker-controls button{width:20px;height:20px;border-radius:50%;border:0;background-color:#e9edf0;color:#54708b;font-size:16px;font-weight:700;vertical-align:middle;line-height:0;padding:0;transition:.3s}.bs-timepicker-controls button:hover{background-color:#d5dadd}.bs-timepicker-controls input{width:35px;height:25px;border-radius:13px;text-align:center;border:1px solid #e9edf0}.bs-timepicker .switch-time-format{text-transform:uppercase;min-width:54px;height:25px;border-radius:20px;border:1px solid #e9edf0;background:#fff;color:#54708b;font-size:13px}.bs-timepicker .switch-time-format img{vertical-align:initial;margin-left:4px}bs-datepicker-container,bs-daterangepicker-container{z-index:1080}@media (max-width:768px){.bs-datepicker-multiple{display:flex}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-top:10px;margin-left:0}}.theme-default .bs-datepicker-body table td span.selected,.theme-default .bs-datepicker-body table td span[class*=select-]:after,.theme-default .bs-datepicker-body table td.selected span,.theme-default .bs-datepicker-body table td[class*=select-] span:after,.theme-default .bs-datepicker-head{background-color:#777}.theme-default .bs-datepicker-body table td.week span{color:#777}.theme-default .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#777;color:#fff;opacity:.5;transition:0s}.theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td[class*=select-] span:after,.theme-green .bs-datepicker-head{background-color:#5cb85c}.theme-green .bs-datepicker-body table td.week span{color:#5cb85c}.theme-green .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5cb85c;color:#fff;opacity:.5;transition:0s}.theme-blue .bs-datepicker-body table td span.selected,.theme-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-blue .bs-datepicker-body table td.selected span,.theme-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-blue .bs-datepicker-head{background-color:#5bc0de}.theme-blue .bs-datepicker-body table td.week span{color:#5bc0de}.theme-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5bc0de;color:#fff;opacity:.5;transition:0s}.theme-dark-blue .bs-datepicker-body table td span.selected,.theme-dark-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-dark-blue .bs-datepicker-body table td.selected span,.theme-dark-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-dark-blue .bs-datepicker-head{background-color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.week span{color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#337ab7;color:#fff;opacity:.5;transition:0s}.theme-red .bs-datepicker-body table td span.selected,.theme-red .bs-datepicker-body table td span[class*=select-]:after,.theme-red .bs-datepicker-body table td.selected span,.theme-red .bs-datepicker-body table td[class*=select-] span:after,.theme-red .bs-datepicker-head{background-color:#d9534f}.theme-red .bs-datepicker-body table td.week span{color:#d9534f}.theme-red .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#d9534f;color:#fff;opacity:.5;transition:0s}.theme-orange .bs-datepicker-body table td span.selected,.theme-orange .bs-datepicker-body table td span[class*=select-]:after,.theme-orange .bs-datepicker-body table td.selected span,.theme-orange .bs-datepicker-body table td[class*=select-] span:after,.theme-orange .bs-datepicker-head{background-color:#f0ad4e}.theme-orange .bs-datepicker-body table td.week span{color:#f0ad4e}.theme-orange .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#f0ad4e;color:#fff;opacity:.5;transition:0s}.tree-children.tree-children-no-padding{padding-left:0}.node-drop-slot{display:block;height:2px}.node-drop-slot.is-dragging-over{background:#dfe;height:20px;border:2px dotted #888}.toggle-children-wrapper-expanded .toggle-children{transform:rotate(90deg)}.toggle-children-wrapper-collapsed .toggle-children{transform:rotate(0)}.toggle-children-wrapper{padding:2px 3px 5px 1px}.toggle-children{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABAhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzRkRFQjcxODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzRkRFQjcwODUzNTExRTU4RTQwRkQwODFEOUZEMEE3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTk5NzA1OGEtZDI3OC00NDZkLWE4ODgtNGM4MGQ4YWI1NzNmIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YzRkZmQxMGMtY2NlNS0xMTc4LWE5OGQtY2NkZmM5ODk5YWYwIi8+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+Z2x5cGhpY29uczwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6dGl0bGU+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5iogFwAAAGhJREFUeNpiYGBgKABigf///zOQg0EARH4A4gZyDIIZ8B/JoAJKDIDhB0CcQIkBRBtEyABkgxwoMQCGD6AbRKoBGAYxQgXIBRuZGKgAKPIC3QLxArnRSHZCIjspk52ZKMrOFBUoAAEGAKnq593MQAZtAAAAAElFTkSuQmCC);height:8px;width:9px;background-size:contain;display:inline-block;position:relative;top:1px;background-repeat:no-repeat;background-position:center}.toggle-children-placeholder{display:inline-block;height:10px;width:10px;position:relative;top:1px;padding-right:3px}.node-content-wrapper{display:inline-block;padding:2px 5px;border-radius:2px;transition:background-color .15s,box-shadow .15s}.node-wrapper{display:flex;align-items:flex-start}.node-content-wrapper-active,.node-content-wrapper-active.node-content-wrapper-focused,.node-content-wrapper.node-content-wrapper-active:hover{background:#beebff}.node-content-wrapper-focused{background:#e7f4f9}.node-content-wrapper:hover{background:#f7fbff}.node-content-wrapper-active,.node-content-wrapper-focused,.node-content-wrapper:hover{box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over{background:#dfe;box-shadow:inset 0 0 1px #999}.node-content-wrapper.is-dragging-over-disabled{opacity:.5}tree-viewport{-webkit-tap-highlight-color:transparent;height:100%;overflow:auto;display:block}.tree-children{overflow:hidden;padding-left:20px}.empty-tree-drop-slot .node-drop-slot{height:20px;min-width:100px}.angular-tree-component{width:100%;position:relative;display:inline-block;cursor:pointer;-webkit-touch-callout:none;-moz-user-select:none;user-select:none}tree-root .angular-tree-component-rtl{direction:rtl}tree-root .angular-tree-component-rtl .toggle-children-wrapper-collapsed .toggle-children{transform:rotate(180deg)!important}tree-root .angular-tree-component-rtl .tree-children{padding-right:20px;padding-left:0}tree-node-checkbox{padding:1px}/*!
+ * Bootstrap v4.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 The Bootstrap Authors
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#2b99a8;--secondary:#ef5c55;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#777777;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0}dl,ol,p,ul{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote,figure{margin:0 0 1rem}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#2b99a8;text-decoration:none;background-color:transparent}a:hover{color:#1b626b;text-decoration:underline}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{box-sizing:content-box;height:0;overflow:visible;margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row,cd-about dl{display:flex;flex-wrap:wrap}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.cd-col-form,.cd-col-form-input,.cd-col-form-label,.cd-col-form-offset,.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto,cd-about dd,cd-about dt,cd-health cd-info-card,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-performance-card,cd-health cd-info-card.cd-status-card,cd-modal .cd-col-form-input,cd-modal .cd-col-form-label,cd-modal .cd-col-form-offset{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4,cd-about dt{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8,cd-about dd{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.cd-col-form,.col-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.cd-col-form-input,.cd-col-form-offset,.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12,cd-health cd-info-card{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.cd-col-form-offset,.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.cd-col-form-label,.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6,cd-health cd-info-card{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.cd-col-form-input,.cd-col-form-offset,.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.cd-col-form-label,.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4,cd-health cd-info-card,cd-modal .cd-col-form-label{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.cd-col-form,.col-lg-8,cd-modal .cd-col-form-input,cd-modal .cd-col-form-offset{flex:0 0 66.6666666667%;max-width:66.6666666667%}.cd-col-form-input,.cd-col-form-offset,.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.cd-col-form-offset,.offset-lg-3{margin-left:25%}.offset-lg-4,cd-modal .cd-col-form-offset{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width:1200px){.col-xl,cd-health cd-info-card.cd-capacity-card,cd-health cd-info-card.cd-performance-card{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3,cd-health cd-info-card.cd-status-card{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.cd-col-form,.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#c4e2e7}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#91cad2}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b2d9e0}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#fbd1cf}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#f7aaa7}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#f9bab7}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#d9d9d9}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#b8b8b8}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#ccc}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.cd-form-control,.form-control{width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.cd-form-control,.form-control{transition:none}}.cd-form-control::-ms-expand,.form-control::-ms-expand{background-color:transparent;border:0}.cd-form-control:-moz-focusring,.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.cd-form-control:focus,.form-control:focus{color:#495057;background-color:#fff;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.cd-form-control::placeholder,.form-control::placeholder{color:#6c757d;opacity:1}.cd-form-control:disabled,.form-control:disabled,.form-control[readonly],[readonly].cd-form-control{background-color:#e9ecef;opacity:1}select.cd-form-control:focus::-ms-value,select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.cd-col-form-label,.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],select[multiple].cd-form-control,select[size].cd-form-control,textarea.cd-form-control,textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.is-valid.cd-form-control,.was-validated .cd-form-control:valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.is-valid.cd-form-control:focus,.was-validated .cd-form-control:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.cd-form-control:valid,.was-validated textarea.form-control:valid,textarea.form-control.is-valid,textarea.is-valid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat #fff}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:100%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.is-invalid.cd-form-control,.was-validated .cd-form-control:invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.is-invalid.cd-form-control:focus,.was-validated .cd-form-control:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.cd-form-control:invalid,.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid,textarea.is-invalid.cd-form-control{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat #fff}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .cd-form-control,.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary:hover{color:#fff;background-color:#237d8a;border-color:#21747f}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#237d8a;border-color:#21747f;box-shadow:0 0 0 .2rem rgba(75,168,181,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#21747f;border-color:#1e6b75}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(75,168,181,.5)}.btn-secondary{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-secondary:hover{color:#fff;background-color:#ec3a32;border-color:#eb2f26}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#ec3a32;border-color:#eb2f26;box-shadow:0 0 0 .2rem rgba(241,116,111,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#eb2f26;border-color:#ea241b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(241,116,111,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529}.btn-light:hover{color:#212529}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#777;border-color:#777}.btn-dark:hover{color:#fff;background-color:#646464;border-color:#5e5e5e}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#646464;border-color:#5e5e5e;box-shadow:0 0 0 .2rem rgba(139,139,139,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#777;border-color:#777}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#5e5e5e;border-color:#575757}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(139,139,139,.5)}.btn-outline-primary{color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:hover{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(43,153,168,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#2b99a8;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#2b99a8;border-color:#2b99a8}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(43,153,168,.5)}.btn-outline-secondary{color:#ef5c55;border-color:#ef5c55}.btn-outline-secondary:hover{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(239,92,85,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#ef5c55;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ef5c55;border-color:#ef5c55}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(239,92,85,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#777;border-color:#777}.btn-outline-dark:hover{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(119,119,119,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#777;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#777;border-color:#777}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(119,119,119,.5)}.btn-link{font-weight:400;color:#2b99a8;text-decoration:none}.btn-link:hover{color:#1b626b;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid;vertical-align:0}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent;vertical-align:0}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#2b99a8}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.cd-form-control,.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.cd-form-control+.cd-form-control,.input-group>.cd-form-control+.custom-file,.input-group>.cd-form-control+.custom-select,.input-group>.cd-form-control+.form-control,.input-group>.custom-file+.cd-form-control,.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.cd-form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.cd-form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.cd-form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.cd-form-control:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.cd-form-control:not(:last-child),.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.cd-form-control:not(:first-child),.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.cd-form-control:not(textarea),.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.cd-form-control,.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.cd-form-control:not(textarea),.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.cd-form-control,.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#2b99a8;background-color:#2b99a8}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#76d0dc}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#9fdee6;border-color:#9fdee6}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#2b99a8;background-color:#2b99a8}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(43,153,168,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat #fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#76d0dc;outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#76d0dc;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(43,153,168,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(43,153,168,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(43,153,168,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#2b99a8;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.collapsing,.custom-switch .custom-control-label::after{transition:none}.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#9fdee6}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#2b99a8;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#9fdee6}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#2b99a8;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#9fdee6}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#2b99a8}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:center center/100% 100% no-repeat}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card,pre{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr,pre>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child,pre>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child,pre>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card,.card-deck pre{margin-bottom:15px}@media (min-width:576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck pre{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card,.card-group>pre{margin-bottom:15px}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card,.card-group>pre{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.card+pre,.card-group>pre+.card,.card-group>pre+pre{margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>pre:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top,.card-group>pre:not(:last-child) .card-header,.card-group>pre:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom,.card-group>pre:not(:last-child) .card-footer,.card-group>pre:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>pre:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top,.card-group>pre:not(:first-child) .card-header,.card-group>pre:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom,.card-group>pre:not(:first-child) .card-footer,.card-group>pre:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card,.card-columns pre{display:inline-block;width:100%}}.card-columns .card,.card-columns pre{margin-bottom:.75rem}.accordion>.card,.accordion>pre{overflow:hidden}.accordion>.card:not(:last-of-type),.accordion>pre:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type),.accordion>pre:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header,.accordion>pre>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination,cd-table .cd-datatable .datatable-footer .datatable-pager ul{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#2b99a8;background-color:#fff;border:1px solid #dee2e6}.page-link:hover,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:hover{z-index:2;color:#1b626b;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus,cd-table .cd-datatable .datatable-footer .datatable-pager ul li a:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.page-item:first-child .page-link,.page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link,.page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link,.page-item.active cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.active a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.active a{z-index:3;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.page-item.disabled .page-link,.page-item.disabled cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .page-item.disabled a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul li.disabled a{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg a{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link,.pagination-lg .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:first-child a{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link,.pagination-lg .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-lg cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-lg li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-lg .page-item:last-child a{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm a{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link,.pagination-sm .page-item:first-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:first-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:first-child a{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link,.pagination-sm .page-item:last-child cd-table .cd-datatable .datatable-footer .datatable-pager ul li a,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child .page-link,.pagination-sm cd-table .cd-datatable .datatable-footer .datatable-pager ul li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child .page-link,cd-table .cd-datatable .datatable-footer .datatable-pager ul .pagination-sm li:last-child a,cd-table .cd-datatable .datatable-footer .datatable-pager ul li .pagination-sm .page-item:last-child a{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:1rem;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#2b99a8}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#21747f}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(43,153,168,.5)}.badge-secondary{color:#fff;background-color:#ef5c55}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#eb2f26}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(239,92,85,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#777}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#5e5e5e}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(119,119,119,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#165057;background-color:#d5ebee;border-color:#c4e2e7}.alert-primary hr{border-top-color:#b2d9e0}.alert-primary .alert-link{color:#0c2b2e}.alert-secondary{color:#7c302c;background-color:#fcdedd;border-color:#fbd1cf}.alert-secondary hr{border-top-color:#f9bab7}.alert-secondary .alert-link{color:#56211f}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#3e3e3e;background-color:#e4e4e4;border-color:#d9d9d9}.alert-dark hr{border-top-color:#ccc}.alert-dark .alert-link{color:#252525}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#2b99a8;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#2b99a8;border-color:#2b99a8}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#165057;background-color:#c4e2e7}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#165057;background-color:#b2d9e0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#165057;border-color:#165057}.list-group-item-secondary{color:#7c302c;background-color:#fbd1cf}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#7c302c;background-color:#f9bab7}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#7c302c;border-color:#7c302c}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#3e3e3e;background-color:#d9d9d9}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#3e3e3e;background-color:#ccc}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#3e3e3e;border-color:#3e3e3e}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}.progress-bar-animated{animation:none}.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;text-align:center;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:350px;font-family:"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right,.carousel-item{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev,.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#2b99a8!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#21747f!important}.bg-secondary{background-color:#ef5c55!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#eb2f26!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light,pre{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#777!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#5e5e5e!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom,.cd-header,legend{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#2b99a8!important}.border-secondary{border-color:#ef5c55!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#777!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex,cd-health cd-info-card{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column,cd-health cd-info-card{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.btn-toolbar cd-table-actions.btn-group,.mr-2,.mx-2,cd-logs label{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3,cd-logs .form-inline>.form-group{margin-right:1rem!important}.mb-3,.my-3,cd-logs .form-inline>.form-group{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.cd-header,.mt-4,.my-4,legend{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.cd-header,.mb-4,.my-4,cd-health cd-info-card,legend{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.cd-header,.pb-1,.py-1,legend{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2,cd-table .cd-datatable .datatable-footer,pre{padding:.5rem!important}.pt-2,.py-2,cd-info-card .card .card-body .card-text,cd-info-card pre .card-body .card-text{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2,cd-info-card .card,cd-info-card pre{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold,cd-about dt{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#2b99a8!important}a.text-primary:focus,a.text-primary:hover{color:#1b626b!important}.text-secondary{color:#ef5c55!important}a.text-secondary:focus,a.text-secondary:hover{color:#e21f15!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#777!important}a.text-dark:focus,a.text-dark:hover{color:#515151!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}/*!
+Fork Awesome 1.1.7
+License - https://forkaweso.me/Fork-Awesome/license
+
+Copyright 2018 Dave Gandy & Fork Awesome
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?v=1.1.7);src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?#iefix&v=1.1.7) format("embedded-opentype"),url(forkawesome-webfont.3a9e014c2469ffa65a0e.woff2?v=1.1.7) format("woff2"),url(forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff?v=1.1.7) format("woff"),url(forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf?v=1.1.7) format("truetype"),url(forkawesome-webfont.78dcc9c4999659b8026a.svg?v=1.1.7#forkawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa,.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:2s linear infinite fa-spin}.fa-pulse{animation:1s steps(8) infinite fa-spin}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before,.fa-sync:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before,.fa-video:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell-o:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-globe-e:before{content:""}.fa-globe-w:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-community:before,.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus-g:before,.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before,.fa-utensils:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before,.fa-pound:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:""}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:""}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:""}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:""}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:""}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before,.fa-utensil-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before,.fa-heading:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before,.fa-closed-captioning:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before,.fa-gem:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-medium-square:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo-v:before,.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-phone-volume:before,.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.fa-mastodon:before{content:""}.fa-mastodon-alt:before{content:""}.fa-fork-awesome:before,.fa-fork-circle:before{content:""}.fa-peertube:before{content:""}.fa-diaspora:before{content:""}.fa-friendica:before{content:""}.fa-gnu-social:before{content:""}.fa-liberapay-square:before{content:""}.fa-liberapay:before{content:""}.fa-scuttlebutt:before,.fa-ssb:before{content:""}.fa-hubzilla:before{content:""}.fa-social-home:before{content:""}.fa-artstation:before{content:""}.fa-discord:before{content:""}.fa-discord-alt:before{content:""}.fa-patreon:before{content:""}.fa-snowdrift:before{content:""}.fa-activitypub:before{content:""}.fa-ethereum:before{content:""}.fa-keybase:before{content:""}.fa-shaarli:before{content:""}.fa-shaarli-o:before{content:""}.fa-cut-key:before,.fa-key-modern:before{content:""}.fa-xmpp:before{content:""}.fa-archive-org:before{content:""}.fa-freedombox:before{content:""}.fa-facebook-messenger:before{content:""}.fa-debian:before{content:""}.fa-mastodon-square:before{content:""}.fa-tipeee:before{content:""}.fa-react:before{content:""}.fa-dogmazic:before{content:""}.fa-zotero:before{content:""}.fa-nodejs:before{content:""}.fa-nextcloud:before{content:""}.fa-nextcloud-square:before{content:""}.fa-hackaday:before{content:""}.fa-laravel:before{content:""}.fa-signalapp:before{content:""}.fa-gnupg:before{content:""}.fa-php:before{content:""}.fa-ffmpeg:before{content:""}.fa-joplin:before{content:""}.fa-syncthing:before{content:""}.fa-inkscape:before{content:""}.fa-matrix-org:before{content:""}.fa-pixelfed:before{content:""}.fa-bootstrap:before{content:""}.fa-dev-to:before{content:""}.fa-hashnode:before{content:""}.fa-jirafeau:before{content:""}.fa-emby:before{content:""}.fa-wikidata:before{content:""}.fa-gimp:before{content:""}.fa-c:before{content:""}.fa-digitalocean:before{content:""}.fa-att:before{content:""}.fa-gitea:before{content:""}.fa-file-epub:before{content:""}.fa-python:before{content:""}.fa-archlinux:before{content:""}.fa-pleroma:before{content:""}.fa-unsplash:before{content:""}.fa-hackster:before{content:""}.fa-spell-check:before{content:""}.fa-moon:before{content:""}.fa-sun:before{content:""}.fa-f-droid:before{content:""}.fa-biometric:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;white-space:normal;position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.info-card-popover-cluster-status{max-width:23vw;max-height:20vh}.info-card-popover-cluster-status .popover-body{max-width:100%;max-height:19vh;font-size:12px;overflow:auto}@media (max-width:calc(1200px - 1px)){.info-card-popover-cluster-status{max-width:31vw}}@media (max-width:calc(992px - 1px)){.info-card-popover-cluster-status{max-width:46vw}}@media (max-width:calc(768px - 1px)){.info-card-popover-cluster-status{max-width:83vw}}.info-card-content-clickable{cursor:pointer;padding:7px;border:1px solid #efefef;border-radius:3px}.info-card-content-clickable:hover{border-color:#d1d1d1;background-color:#f3f3f3}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:initial}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#2b99a8;background-color:#2b99a8}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#adb5bd}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(43,153,168,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#76d0dc}html{background-color:#fff}body,html{width:100%;height:100%;font-size:12px}h1{letter-spacing:-1px;font-size:2em}h2{letter-spacing:-1px;font-size:1.833em}h3{display:block;font-size:1.583em;font-weight:400}h4{font-size:1.5em;line-height:normal}option{font-weight:400;font-style:normal}.full-height{height:100vh}.full-width{width:100vw}.vertical-align{display:flex;align-items:center}.horizontal-align{display:flex;justify-content:center}.loading{position:absolute;top:50%;left:50%}.margin-right-md{margin-right:15px}.no-border{border:0;box-shadow:0 0 0!important}.italic{font-style:italic}.bold{font-weight:700}.text-pre{white-space:pre-wrap}.btn-light{background-color:#fff!important;border-color:#ced4da!important}.btn-light:hover{background-color:#ddd!important;border-color:#adadad!important}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:0}.btn-primary .badge{color:#2b99a8;background-color:#eee}.btn-group>.btn>i.fa,.cd-datatable-actions button.btn i.fa{margin-right:5px}.dropdown-menu{min-width:50px;z-index:999999}.dropdown-menu>li>a{color:#474544;cursor:pointer}.dropdown-menu>li>a>i.fa{margin-right:5px}.dropdown-menu>.active>a{color:#eee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#21747f}.dataTables_wrapper .dropdown-menu>li.dropdown-divider{cursor:auto}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{padding-left:30px!important;padding-right:30px!important}.row,cd-about dl{margin-left:-30px;margin-right:-30px}.cd-col-form,.cd-col-form-input,.cd-col-form-label,.cd-col-form-offset,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,cd-about dd,cd-about dt,cd-health cd-info-card,cd-modal .cd-col-form-input,cd-modal .cd-col-form-label,cd-modal .cd-col-form-offset{padding-left:30px;padding-right:30px}tags-input .tags{border-radius:4px;border:1px solid #d1d1d1;box-shadow:inset 0 1px 1px rgba(0,0,0,.09)}.card .accordion-title,pre .accordion-title,uib-accordion .card-title{font-size:14px!important}.card-header{font-size:1.3em}.card-body h2:first-child{margin-top:0}.disabled{pointer-events:none}.clickable,a{cursor:pointer}:invalid .has-error-btn,:invalid .has-error-btn:disabled:hover{background-color:#f2dede;border-color:#a94442}.noscript{padding-top:5em}.noscript p{color:#777}.required::after{color:#a94442;content:"*";font-size:14px;padding-left:4px}.form-footer{width:100%;display:flex}.cd-form-control,.form-control{display:table-cell}.cd-form-control:focus,.form-control:focus{border-color:rgba(43,153,168,.8);outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px 2px rgba(43,153,168,.5)}.custom-checkbox{padding-top:7px}.card-footer button.btn:not(:first-child),.modal-footer button.btn:not(:first-child){margin-left:5px}.nav-tabs{margin-bottom:15px}.ceph-icon{background:url(Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png)}.prometheus-icon{background:url(prometheus_logo.074db273ef932a67d91b.svg)}.custom-icon{padding:10px;margin-right:8px;background-clip:padding-box;background-size:contain;background-repeat:no-repeat}.toast-message .custom-icon{filter:brightness(0) invert(1);-webkit-filter:brightness(0) invert(1);-moz-filter:brightness(0) invert(1);-o-filter:brightness(0) invert(1);-ms-filter:brightness(0) invert(1)}.block-ui-wrapper{background:rgba(0,0,0,.7)!important}.tooltip-wide .tooltip-inner{width:400px}.tooltip-inner{background-color:#fff;border:1px solid grey;color:#333;font-size:1.1em}.toast-message>ul{padding-left:1em;margin:0}@media (min-width:576px){.cd-col-form-label,.col-form-label{text-align:right}}.cd-col-form-label,.col-form-label{font-weight:700}cd-submit-button{background-color:transparent!important}bfv-messages{display:none}.form-group.has-error .invalid-feedback{display:block}.password-strength-level{flex:100%;margin-top:2px}.password-strength-level .ok,.password-strength-level .strong,.password-strength-level .very-strong,.password-strength-level .weak{border-radius:.25rem;height:13px}.password-strength-level .weak{width:25%;background:red}.password-strength-level .ok{width:50%;background:#ffc200}.password-strength-level .strong{width:75%;background:#0b0}.password-strength-level .very-strong{width:100%;background:#245e03}.badge-hdd{color:#fff;background-color:#90949c}.badge-ssd{color:#fff;background-color:#288cea}.badge-tab{color:#555;background-color:#f3f3f3}tree-root tree-viewport{min-height:1em}
\ No newline at end of file
index 0b596a184987f66a8d6b9297f8ff7b6934dfa081..a946a20ee42cc69168a953274a9c4e1fbfd79709 100644 (file)
           }
         },
         "fsevents": {
-          "dev": true,
-          "optional": true,
           "version": "2.1.2"
         },
         "get-caller-file": {
           }
         },
         "mem": {
-          "dev": true,
           "requires": {
             "map-age-cleaner": "^0.1.1",
             "mimic-fn": "^2.0.0",
         "mimic-fn": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-          "dev": true
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
         },
         "os-locale": {
           "version": "3.1.0",
       }
     },
     "@babel/plugin-syntax-class-properties": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz",
-      "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz",
+      "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/helper-plugin-utils": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
+          "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
+          "dev": true
+        }
       }
     },
     "@babel/plugin-syntax-dynamic-import": {
         "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
+    "@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/helper-plugin-utils": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
+          "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
+          "dev": true
+        }
+      }
+    },
     "@babel/plugin-syntax-json-strings": {
       "version": "7.8.3",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
       }
     },
     "@babel/plugin-syntax-logical-assignment-operators": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz",
-      "integrity": "sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/helper-plugin-utils": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
+          "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
+          "dev": true
+        }
       }
     },
     "@babel/plugin-syntax-nullish-coalescing-operator": {
       }
     },
     "@babel/plugin-syntax-numeric-separator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz",
-      "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/helper-plugin-utils": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
+          "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
+          "dev": true
+        }
       }
     },
     "@babel/plugin-syntax-object-rest-spread": {
       }
     },
     "@sinonjs/commons": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.0.tgz",
-      "integrity": "sha512-wEj54PfsZ5jGSwMX68G8ZXFawcSglQSXqCftWX3ec8MDUzQdHgcKvw97awHbY0efQEL5iKUOAmmVtoYgmrSG4Q==",
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz",
+      "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==",
       "dev": true,
       "requires": {
         "type-detect": "4.0.8"
       }
     },
     "@types/babel__core": {
-      "version": "7.1.7",
-      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.7.tgz",
-      "integrity": "sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==",
+      "version": "7.1.9",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz",
+      "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==",
       "dev": true,
       "requires": {
         "@babel/parser": "^7.1.0",
       }
     },
     "@types/babel__traverse": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.11.tgz",
-      "integrity": "sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q==",
+      "version": "7.0.13",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.13.tgz",
+      "integrity": "sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ==",
       "dev": true,
       "requires": {
         "@babel/types": "^7.3.0"
       }
     },
     "babel-preset-current-node-syntax": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz",
-      "integrity": "sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw==",
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz",
+      "integrity": "sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==",
       "dev": true,
       "requires": {
         "@babel/plugin-syntax-async-generators": "^7.8.4",
         "@babel/plugin-syntax-bigint": "^7.8.3",
         "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
         "@babel/plugin-syntax-json-strings": "^7.8.3",
         "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
         "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
       "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
       "dev": true
     },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
     "bluebird": {
       "version": "3.7.2",
       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
       "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz",
       "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw=="
     },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+      "dev": true,
+      "optional": true
+    },
     "fill-range": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
           }
         },
         "mem": {
-          "dev": true,
           "requires": {
             "map-age-cleaner": "^0.1.1",
             "mimic-fn": "^2.0.0",
         "mimic-fn": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-          "dev": true
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
         },
         "os-locale": {
           "version": "3.1.0",
       }
     },
     "jest": {
-      "version": "25.2.4",
-      "resolved": "https://registry.npmjs.org/jest/-/jest-25.2.4.tgz",
-      "integrity": "sha512-Lu4LXxf4+durzN/IFilcAoQSisOwgHIXgl9vffopePpSSwFqfj1Pj4y+k3nL8oTbnvjxgDIsEcepy6he4bWqnQ==",
+      "version": "25.5.4",
+      "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz",
+      "integrity": "sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==",
       "dev": true,
       "requires": {
-        "@jest/core": "^25.2.4",
+        "@jest/core": "^25.5.4",
         "import-local": "^3.0.2",
-        "jest-cli": "^25.2.4"
+        "jest-cli": "^25.5.4"
       },
       "dependencies": {
         "ansi-regex": {
           "dev": true
         },
         "yargs": {
-          "version": "15.3.1",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz",
-          "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==",
+          "version": "15.4.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
           "dev": true,
           "requires": {
             "cliui": "^6.0.0",
             "string-width": "^4.2.0",
             "which-module": "^2.0.0",
             "y18n": "^4.0.0",
-            "yargs-parser": "^18.1.1"
+            "yargs-parser": "^18.1.2"
           }
         },
         "yargs-parser": {
       },
       "dependencies": {
         "cross-spawn": {
-          "version": "7.0.2",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz",
-          "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==",
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+          "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
           "dev": true,
           "requires": {
             "path-key": "^3.1.0",
       }
     },
     "jest-pnp-resolver": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz",
-      "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==",
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
+      "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
       "dev": true
     },
     "jest-preset-angular": {
-      "version": "8.1.3",
-      "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-8.1.3.tgz",
-      "integrity": "sha512-T53bmWG4mNynumYcWqvhKGslQCJCTFpcL3SMrggrI65hI2G0ErYZ6WtdJqPDsFFk+KRN+iNLwNBG1idHO9k2uQ==",
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-8.2.0.tgz",
+      "integrity": "sha512-UNmYGju5AVNSQdICBkGD3JhKH0jjUipY8yUQMGM1eUg8XYgFBir0uUuZd7t7Tfg0ibl95jQmvCaDIh3PUL4ySw==",
       "dev": true,
       "requires": {
         "pretty-format": "^25.0.0",
           "dev": true
         },
         "yargs": {
-          "version": "15.3.1",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz",
-          "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==",
+          "version": "15.4.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
           "dev": true,
           "requires": {
             "cliui": "^6.0.0",
             "string-width": "^4.2.0",
             "which-module": "^2.0.0",
             "y18n": "^4.0.0",
-            "yargs-parser": "^18.1.1"
+            "yargs-parser": "^18.1.2"
           }
         },
         "yargs-parser": {
       },
       "dependencies": {
         "acorn": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
-          "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==",
+          "version": "7.3.1",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
+          "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
           "dev": true
         },
         "parse5": {
           }
         },
         "ws": {
-          "version": "7.3.0",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz",
-          "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==",
+          "version": "7.3.1",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
+          "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
           "dev": true
         }
       }
           }
         },
         "fsevents": {
-          "dev": true,
-          "optional": true,
           "version": "2.1.2"
         },
         "is-binary-path": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
       "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-      "dev": true,
       "requires": {
         "p-defer": "^1.0.0"
       }
       "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
       "dev": true
     },
+    "nan": {
+      "version": "2.14.1",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+      "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
+      "dev": true,
+      "optional": true
+    },
     "nanomatch": {
       "version": "1.2.13",
       "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
       "integrity": "sha512-jOUidlFthMz0yI7Aey3fTmThduUIFG0h3kYgqD1uFO0rRvHWF0Cp5g9/fsJrBRFNEzdADRPoZnapyKzjv7m7Ig=="
     },
     "ng-mocks": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-9.2.0.tgz",
-      "integrity": "sha512-k2/FoYDW2Izjsl7LKz3L9obfJUvLb7dG5B5p7Bgtqt6mM76lJ8wpPxC5GuINdoI6wGbDfcF+va5kE3clLlSVpA==",
+      "version": "9.3.0",
+      "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-9.3.0.tgz",
+      "integrity": "sha512-do5kUJNuplilNHEJb81HaaF8uJNLWJy5uiUaKeSUWOtQiQg1UrFrhp4mvIpREbUk2iIbX4FS50ZHn+RPvVDUzQ==",
       "dev": true
     },
     "ng2-charts": {
     "p-defer": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
-      "dev": true
+      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
     },
     "p-each-series": {
       "version": "2.1.0",
     "p-is-promise": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
-      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
-      "dev": true
+      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
     },
     "p-limit": {
       "version": "1.3.0",
           }
         },
         "fsevents": {
-          "dev": true,
-          "optional": true,
           "version": "2.1.2"
         },
         "is-binary-path": {
           }
         },
         "fsevents": {
-          "dev": true,
-          "optional": true,
           "version": "2.1.2"
         },
         "get-stream": {
           }
         },
         "mem": {
-          "dev": true,
           "requires": {
             "map-age-cleaner": "^0.1.1",
             "mimic-fn": "^2.0.0",
         "mimic-fn": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-          "dev": true
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
         },
         "os-locale": {
           "version": "3.1.0",
index 3250965721aef185acfde861c7df27aae561e675..cb79d4619684631a52127eb54f84fdae36fa99d1 100644 (file)
     "i18n:pull": "npx i18ntool pull -c i18n.config.json",
     "i18n:merge": "npx i18ntool merge -c i18n.config.json",
     "i18n:token": "npx i18ntool config token",
-    "test": "npm run test:config && jest --watch",
-    "test:ci": "npm run test:config && JEST_SILENT_REPORTER_DOTS=true jest --coverage --reporters jest-silent-reporter",
-    "test:config": "if [ ! -e 'src/unit-test-configuration.ts' ]; then cp 'src/unit-test-configuration.ts.sample' 'src/unit-test-configuration.ts'; fi",
+    "test": "jest --watch",
+    "test:ci": "JEST_SILENT_REPORTER_DOTS=true jest --coverage --reporters jest-silent-reporter",
     "e2e": "start-test 4200 'cypress open'",
     "e2e:ci": "start-test 4200 'cypress run -b chrome --headless'",
     "lint:tslint": "ng lint",
     "lint:prettier": "prettier --list-different \"{src,cypress}/**/*.{ts,scss}\"",
     "lint:html": "htmllint src/app/**/*.html && html-linter --config html-linter.config.json",
-    "lint:tsc": "npm run test:config && tsc -p src/tsconfig.app.json --noEmit && tsc -p tsconfig.spec.json --noEmit && tsc -p cypress/tsconfig.json --noEmit",
+    "lint:tsc": "tsc -p src/tsconfig.app.json --noEmit && tsc -p tsconfig.spec.json --noEmit && tsc -p cypress/tsconfig.json --noEmit",
     "lint": "npm run lint:tsc && npm run lint:tslint && npm run lint:prettier && npm run lint:html",
     "fix:prettier": "prettier --write \"{src,cypress}/**/*.{ts,scss}\"",
     "fix:tslint": "npm run lint:tslint -- --fix",
     "cypress": "4.4.0",
     "html-linter": "1.1.1",
     "htmllint-cli": "0.0.7",
-    "jest": "25.2.4",
+    "jest": "25.5.4",
     "jest-canvas-mock": "2.2.0",
-    "jest-preset-angular": "8.1.3",
+    "jest-preset-angular": "8.2.0",
     "jest-silent-reporter": "0.2.1",
     "ng-bullet": "1.0.3",
-    "ng-mocks": "9.2.0",
+    "ng-mocks": "9.3.0",
     "npm-force-resolutions": "0.0.3",
     "npm-run-all": "4.1.5",
     "prettier": "2.0.2",
index 8ebdb7d6e067a3105d16a8bd627c163656391d2a..317fd84811f4cf3cede63bd0802046e0520b2cce 100644 (file)
@@ -17,7 +17,8 @@
             <input id="user"
                    class="form-control"
                    formControlName="user"
-                   type="text">
+                   type="text"
+                   autocomplete="off">
             <span class="invalid-feedback"
                   *ngIf="discoveryForm.showError('user', formDir, 'required')"
                   i18n>This field is required.</span>
@@ -39,7 +40,8 @@
               <input id="password"
                      class="form-control"
                      formControlName="password"
-                     type="password">
+                     type="password"
+                     autocomplete="new-password">
 
               <span class="input-group-append">
                 <button type="button"
@@ -73,7 +75,8 @@
             <input id="mutual_user"
                    class="form-control"
                    formControlName="mutual_user"
-                   type="text">
+                   type="text"
+                   autocomplete="off">
 
             <span class="invalid-feedback"
                   *ngIf="discoveryForm.showError('mutual_user', formDir, 'required')"
@@ -96,7 +99,8 @@
               <input id="mutual_password"
                      class="form-control"
                      formControlName="mutual_password"
-                     type="password">
+                     type="password"
+                     autocomplete="new-password">
 
               <span class="input-group-append">
                 <button type="button"
index fea6d30f18e9c2d731ec1705e443a39d832fc19e..4c30bd83fd10682134fb003558636729236cc4f6 100644 (file)
             <div class="cd-col-form-input">
               <input class="form-control"
                      type="text"
+                     autocomplete="off"
                      id="target_user"
                      name="target_user"
                      formControlName="user" />
             <div class="cd-col-form-input">
               <input class="form-control"
                      type="text"
+                     autocomplete="off"
                      id="target_mutual_user"
                      name="target_mutual_user"
                      formControlName="mutual_user" />
                       <input [id]="'user' + ii"
                              class="form-control"
                              formControlName="user"
+                             autocomplete="off"
                              type="text">
                       <span class="invalid-feedback"
                             *ngIf="initiator.showError('user', formDir, 'required')"
                         <input [id]="'password' + ii"
                                class="form-control"
                                formControlName="password"
+                               autocomplete="new-password"
                                type="password">
 
                         <span class="input-group-append">
                       <input [id]="'mutual_user' + ii"
                              class="form-control"
                              formControlName="mutual_user"
+                             autocomplete="off"
                              type="text">
 
                       <span class="invalid-feedback"
                         <input [id]="'mutual_password' + ii"
                                class="form-control"
                                formControlName="mutual_password"
+                               autocomplete="new-password"
                                type="password">
 
                         <span class="input-group-append">
index 3779144ffbef07e4aac9f5ca3f49de187e3faf65..6fa48af6ec4a2b7bb6ec66bcef5d5c2f72ec5e9f 100644 (file)
@@ -141,26 +141,23 @@ describe('IscsiTargetFormComponent', () => {
     }
   ];
 
-  configureTestBed(
-    {
-      declarations: [IscsiTargetFormComponent],
-      imports: [
-        SharedModule,
-        ReactiveFormsModule,
-        HttpClientTestingModule,
-        RouterTestingModule,
-        ToastrModule.forRoot()
-      ],
-      providers: [
-        i18nProviders,
-        {
-          provide: ActivatedRoute,
-          useValue: new ActivatedRouteStub({ target_iqn: undefined })
-        }
-      ]
-    },
-    true
-  );
+  configureTestBed({
+    declarations: [IscsiTargetFormComponent],
+    imports: [
+      SharedModule,
+      ReactiveFormsModule,
+      HttpClientTestingModule,
+      RouterTestingModule,
+      ToastrModule.forRoot()
+    ],
+    providers: [
+      i18nProviders,
+      {
+        provide: ActivatedRoute,
+        useValue: new ActivatedRouteStub({ target_iqn: undefined })
+      }
+    ]
+  });
 
   beforeEach(() => {
     fixture = TestBed.createComponent(IscsiTargetFormComponent);
index 276629cd413b2490d87a73282dc58265d8e7dd82..0103c11249a1bf2aa5daa7c622a35d42adfd3c51 100644 (file)
@@ -4,9 +4,8 @@
                 *ngIf="available === false"
                 title="iSCSI Targets not available"
                 i18n-title>
-  <ng-container i18n>Please consult the <a href="{{docsUrl}}"
-       target="_blank">documentation</a>
-    on how to configure and enable the iSCSI Targets management functionality.</ng-container>
+  <ng-container i18n>Please consult the <cd-doc section="iscsi"></cd-doc> on
+    how to configure and enable the iSCSI Targets management functionality.</ng-container>
 
   <ng-container *ngIf="status">
     <br>
index 50d636febe5c69fc5969fe6f52a1d83eda12ac5a..16ff57abd2319d381a0a06540ee5bb33b9e3cceb 100644 (file)
@@ -16,6 +16,7 @@ import {
 } from '../../../../testing/unit-test-helper';
 import { IscsiService } from '../../../shared/api/iscsi.service';
 import { TableActionsComponent } from '../../../shared/datatable/table-actions/table-actions.component';
+import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { ExecutingTask } from '../../../shared/models/executing-task';
 import { SummaryService } from '../../../shared/services/summary.service';
 import { TaskListService } from '../../../shared/services/task-list.service';
@@ -172,6 +173,102 @@ describe('IscsiTargetListComponent', () => {
     });
   });
 
+  describe('handling of actions', () => {
+    beforeEach(() => {
+      fixture.detectChanges();
+    });
+
+    let action: CdTableAction;
+
+    const getAction = (name: string): CdTableAction => {
+      return component.tableActions.find((tableAction) => tableAction.name === name);
+    };
+
+    describe('edit', () => {
+      beforeEach(() => {
+        action = getAction('Edit');
+      });
+
+      it('should be disabled if no gateways', () => {
+        component.selection.selected = [
+          {
+            id: '-1'
+          }
+        ];
+        expect(action.disable(undefined)).toBeTruthy();
+        expect(action.disableDesc(undefined)).toBe('Unavailable gateway(s)');
+      });
+
+      it('should be enabled if active sessions', () => {
+        component.selection.selected = [
+          {
+            id: '-1',
+            info: {
+              num_sessions: 1
+            }
+          }
+        ];
+        expect(action.disable(undefined)).toBeFalsy();
+        expect(action.disableDesc(undefined)).toBeUndefined();
+      });
+
+      it('should be enabled if no active sessions', () => {
+        component.selection.selected = [
+          {
+            id: '-1',
+            info: {
+              num_sessions: 0
+            }
+          }
+        ];
+        expect(action.disable(undefined)).toBeFalsy();
+        expect(action.disableDesc(undefined)).toBeUndefined();
+      });
+    });
+
+    describe('delete', () => {
+      beforeEach(() => {
+        action = getAction('Delete');
+      });
+
+      it('should be disabled if no gateways', () => {
+        component.selection.selected = [
+          {
+            id: '-1'
+          }
+        ];
+        expect(action.disable(undefined)).toBeTruthy();
+        expect(action.disableDesc(undefined)).toBe('Unavailable gateway(s)');
+      });
+
+      it('should be disabled if active sessions', () => {
+        component.selection.selected = [
+          {
+            id: '-1',
+            info: {
+              num_sessions: 1
+            }
+          }
+        ];
+        expect(action.disable(undefined)).toBeTruthy();
+        expect(action.disableDesc(undefined)).toBe('Target has active sessions');
+      });
+
+      it('should be enabled if no active sessions', () => {
+        component.selection.selected = [
+          {
+            id: '-1',
+            info: {
+              num_sessions: 0
+            }
+          }
+        ];
+        expect(action.disable(undefined)).toBeFalsy();
+        expect(action.disableDesc(undefined)).toBeUndefined();
+      });
+    });
+  });
+
   it('should test all TableActions combinations', () => {
     const permissionHelper: PermissionHelper = new PermissionHelper(component.permission);
     const tableActions: TableActionsComponent = permissionHelper.setPermissionsAndGetActions(
index 026cf343240ef74e84b0deecf4d5cf7bbe412309..fb49691f8fd8098b9b66d3c043c43ed022e66863 100644 (file)
@@ -18,10 +18,8 @@ import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 import { FinishedTask } from '../../../shared/models/finished-task';
 import { Permission } from '../../../shared/models/permissions';
 import { Task } from '../../../shared/models/task';
-import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
 import { NotAvailablePipe } from '../../../shared/pipes/not-available.pipe';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
-import { SummaryService } from '../../../shared/services/summary.service';
 import { TaskListService } from '../../../shared/services/task-list.service';
 import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
 import { IscsiTargetDiscoveryModalComponent } from '../iscsi-target-discovery-modal/iscsi-target-discovery-modal.component';
@@ -38,7 +36,6 @@ export class IscsiTargetListComponent extends ListWithDetails implements OnInit,
 
   available: boolean = undefined;
   columns: CdTableColumn[];
-  docsUrl: string;
   modalRef: BsModalRef;
   permission: Permission;
   selection = new CdTableSelection();
@@ -63,9 +60,7 @@ export class IscsiTargetListComponent extends ListWithDetails implements OnInit,
     private i18n: I18n,
     private iscsiService: IscsiService,
     private taskListService: TaskListService,
-    private cephReleaseNamePipe: CephReleaseNamePipe,
     private notAvailablePipe: NotAvailablePipe,
-    private summaryservice: SummaryService,
     private modalService: BsModalService,
     private taskWrapper: TaskWrapperService,
     public actionLabels: ActionLabelsI18n
@@ -85,7 +80,7 @@ export class IscsiTargetListComponent extends ListWithDetails implements OnInit,
         icon: Icons.edit,
         routerLink: () => `/block/iscsi/targets/edit/${this.selection.first().target_iqn}`,
         name: this.actionLabels.EDIT,
-        disable: () => !this.selection.first() || !_.isUndefined(this.getDeleteDisableDesc()),
+        disable: () => !this.selection.first() || !_.isUndefined(this.getEditDisableDesc()),
         disableDesc: () => this.getEditDisableDesc()
       },
       {
@@ -146,9 +141,6 @@ export class IscsiTargetListComponent extends ListWithDetails implements OnInit,
           this.settings = settings;
         });
       } else {
-        const summary = this.summaryservice.getCurrentSummary();
-        const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-        this.docsUrl = `http://docs.ceph.com/docs/${releaseName}/mgr/dashboard/#enabling-iscsi-management`;
         this.status = result.message;
       }
     });
old mode 100644 (file)
new mode 100755 (executable)
index db5f824..94681c6
                     readonly>
           </textarea>
         </div>
+        <button class="btn btn-primary mb-3 float-right"
+                aria-label="Copy to Clipboard"
+                i18n-aria-label
+                title="Copy to Clipboard"
+                i18n-title
+                cdCopy2ClipboardButton="token">
+          <ng-container i18n>Copy to Clipboard</ng-container>
+        </button>
       </div>
 
       <div class="modal-footer">
index b2130f8b515760b6c947655bce509b3a318a05e2..63ccdc71175c0e9b04da5f8fd718e6c7fe933358 100644 (file)
@@ -55,11 +55,7 @@ export class BootstrapCreateModalComponent implements OnDestroy, OnInit {
       this.createBootstrapForm.get('siteName').setValue(response.site_name);
     });
 
-    this.subs = this.rbdMirroringService.subscribeSummary((data: any) => {
-      if (!data) {
-        return;
-      }
-
+    this.subs = this.rbdMirroringService.subscribeSummary((data) => {
       const pools = data.content_data.pools;
       this.pools = pools.reduce((acc: any[], pool: Pool) => {
         acc.push({
index 0e7d56d408730123709b17103010a780a69da23f..ca6c833631202f1a49a39b7de2a02bc86aaaaa5e 100644 (file)
@@ -62,11 +62,7 @@ export class BootstrapImportModalComponent implements OnInit, OnDestroy {
       this.importBootstrapForm.get('siteName').setValue(response.site_name);
     });
 
-    this.subs = this.rbdMirroringService.subscribeSummary((data: any) => {
-      if (!data) {
-        return;
-      }
-
+    this.subs = this.rbdMirroringService.subscribeSummary((data) => {
       const pools = data.content_data.pools;
       this.pools = pools.reduce((acc: any[], pool: Pool) => {
         acc.push({
index 62826028d75dec3e3753abf3434de7d876cdf4bf..7eaae7aa0243717f619289c9a745d77eb4b50f19 100644 (file)
@@ -45,10 +45,7 @@ export class DaemonListComponent implements OnInit, OnDestroy {
       }
     ];
 
-    this.subs = this.rbdMirroringService.subscribeSummary((data: any) => {
-      if (!data) {
-        return;
-      }
+    this.subs = this.rbdMirroringService.subscribeSummary((data) => {
       this.data = data.content_data.daemons;
     });
   }
index 5acdd1ea29d21cfb123b2d5d298c375c59a57078..3867da7db92a5deafaa055729a1002c5cfa58628 100644 (file)
@@ -77,10 +77,7 @@ export class ImageListComponent implements OnInit, OnDestroy {
       }
     ];
 
-    this.subs = this.rbdMirroringService.subscribeSummary((data: any) => {
-      if (!data) {
-        return;
-      }
+    this.subs = this.rbdMirroringService.subscribeSummary((data) => {
       this.image_error.data = data.content_data.image_error;
       this.image_syncing.data = data.content_data.image_syncing;
       this.image_ready.data = data.content_data.image_ready;
index 682ed68c8bc3177598add8d28582c4623b6263fa..a73db2f62fafa7acb8fec31a5ff39297db849347 100644 (file)
@@ -67,10 +67,7 @@ export class OverviewComponent implements OnInit, OnDestroy {
   ngOnInit() {
     this.subs.add(this.rbdMirroringService.startPolling());
     this.subs.add(
-      this.rbdMirroringService.subscribeSummary((data: any) => {
-        if (!data) {
-          return;
-        }
+      this.rbdMirroringService.subscribeSummary((data) => {
         this.status = data.content_data.status;
         this.siteName = data.site_name;
 
index 3a393170b87f59ab540954f8a593039cbffc780d..64054aabb0838a6101ee3b391a3eb0fdc50fec3b 100644 (file)
@@ -59,12 +59,8 @@ export class PoolEditModeModalComponent implements OnInit, OnDestroy {
       this.setResponse(resp);
     });
 
-    this.subs = this.rbdMirroringService.subscribeSummary((data: any) => {
+    this.subs = this.rbdMirroringService.subscribeSummary((data) => {
       this.peerExists = false;
-      if (!data) {
-        return;
-      }
-
       const poolData = data.content_data.pools;
       const pool = poolData.find((o: any) => this.poolName === o['name']);
       this.peerExists = pool && pool['peer_uuids'].length;
index efa0beba8c75be31743f18ef7de94249afa87fa8..2cb0bfd46a67346c60600d3db2ca06e81e6edc5c 100644 (file)
@@ -94,10 +94,7 @@ export class PoolListComponent implements OnInit, OnDestroy {
       }
     ];
 
-    this.subs = this.rbdMirroringService.subscribeSummary((data: any) => {
-      if (!data) {
-        return;
-      }
+    this.subs = this.rbdMirroringService.subscribeSummary((data) => {
       this.data = data.content_data.pools;
     });
   }
index 87ca55c20fbe25f79c5e3f01768686689fb26472..64364f67da63ce5a56918c0c6e1ccea35a76c130 100644 (file)
 
   <div [ngSwitch]="value">
     <span *ngSwitchCase="'global'"
-          i18n>{{ value | titlecase }}</span>
+          i18n>Global</span>
     <strong *ngSwitchCase="'image'"
-            i18n>{{ value | titlecase }}</strong>
+            i18n>Image</strong>
     <strong *ngSwitchCase="'pool'"
-            i18n>{{ value | titlecase }}</strong>
+            i18n>Pool</strong>
   </div>
 </ng-template>
 
index fee853628f3dbad8acdb55d4e774c2383d6a9c4b..314bde9ece56a049c8effa3c1951155a817441af 100644 (file)
               class="bold">Order</td>
           <td>{{ selection.order }}</td>
         </tr>
+        <tr>
+          <td i18n
+              class="bold">Format Version</td>
+          <td>{{ selection.image_format }}</td>
+        </tr>
       </tbody>
     </table>
   </tab>
index 7820ad7d8ee510a91b279fabae2dbe7519c698d0..be2be1daee53ecaef798dc470ad34c3b0be5c03c 100644 (file)
@@ -25,6 +25,7 @@ import { AuthStorageService } from '../../../shared/services/auth-storage.servic
 import { FormatterService } from '../../../shared/services/formatter.service';
 import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
 import { Pool } from '../../pool/pool';
+import { RBDImageFormat, RbdModel } from '../rbd-list/rbd-model';
 import { RbdImageFeature } from './rbd-feature.interface';
 import { RbdFormCloneRequestModel } from './rbd-form-clone-request.model';
 import { RbdFormCopyRequestModel } from './rbd-form-copy-request.model';
@@ -198,6 +199,15 @@ export class RbdFormComponent implements OnInit {
     this.rbdForm.get('obj_size').disable();
     this.rbdForm.get('stripingUnit').disable();
     this.rbdForm.get('stripingCount').disable();
+
+    /* RBD Image Format v1 */
+    this.rbdImage.subscribe((image: RbdModel) => {
+      if (image.image_format === RBDImageFormat.V1) {
+        this.rbdForm.get('deep-flatten').disable();
+        this.rbdForm.get('layering').disable();
+        this.rbdForm.get('exclusive-lock').disable();
+      }
+    });
   }
 
   disableForClone() {
index 098b297e1bbb663e9c2858f1c753b330613d7a79..dc198e90724f6d0b8d2329b463cb5ca3f7d931a4 100644 (file)
@@ -8,7 +8,7 @@
           [data]="images"
           columnMode="flex"
           [columns]="columns"
-          identifier="id"
+          identifier="unique_id"
           [searchableObjects]="true"
           forceIdentifier="true"
           selectionType="single"
index f69945b6e7eb465696bd8b084e8a56d8eaaef919..18c95ec1e236975a547c0b5b4d9efc0969c682df 100644 (file)
@@ -28,7 +28,7 @@ import { TaskWrapperService } from '../../../shared/services/task-wrapper.servic
 import { URLBuilderService } from '../../../shared/services/url-builder.service';
 import { RbdParentModel } from '../rbd-form/rbd-parent.model';
 import { RbdTrashMoveModalComponent } from '../rbd-trash-move-modal/rbd-trash-move-modal.component';
-import { RbdModel } from './rbd-model';
+import { RBDImageFormat, RbdModel } from './rbd-model';
 
 const BASE_URL = 'block/rbd';
 
@@ -91,9 +91,11 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
   private createRbdFromTask(pool: string, namespace: string, name: string): RbdModel {
     const model = new RbdModel();
     model.id = '-1';
+    model.unique_id = '-1';
     model.name = name;
     model.namespace = namespace;
     model.pool_name = pool;
+    model.image_format = RBDImageFormat.V2;
     return model;
   }
 
@@ -163,7 +165,11 @@ export class RbdListComponent extends ListWithDetails implements OnInit {
       permission: 'delete',
       icon: Icons.trash,
       click: () => this.trashRbdModal(),
-      name: this.actionLabels.TRASH
+      name: this.actionLabels.TRASH,
+      disable: (selection: CdTableSelection) =>
+        !selection.first() ||
+        !selection.hasSingleSelection ||
+        selection.first().image_format === RBDImageFormat.V1
     };
     this.tableActions = [
       addAction,
index 625a2f251d06dbb713d57ce7b6c573264ef6102f..0a265dea8d14c242d7d9a6ec633e1e93c8fcffdf 100644 (file)
@@ -1,8 +1,15 @@
 export class RbdModel {
   id: string;
+  unique_id: string;
   name: string;
   pool_name: string;
   namespace: string;
+  image_format: RBDImageFormat;
 
   cdExecuting: string;
 }
+
+export enum RBDImageFormat {
+  V1 = 1,
+  V2 = 2
+}
index 68dc6303f46befa8208ba8250fb7558d7e571918..c51d5f7035546213ba8085fb33ba592b0ac9d96c 100644 (file)
@@ -16,6 +16,7 @@ import {
 import { RbdService } from '../../../shared/api/rbd.service';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 import { ExecutingTask } from '../../../shared/models/executing-task';
+import { Summary } from '../../../shared/models/summary.model';
 import { SummaryService } from '../../../shared/services/summary.service';
 import { TaskListService } from '../../../shared/services/task-list.service';
 import { SharedModule } from '../../../shared/shared.module';
@@ -56,7 +57,7 @@ describe('RbdTrashListComponent', () => {
   it('should load trash images when summary is trigged', () => {
     spyOn(rbdService, 'listTrash').and.callThrough();
 
-    summaryService['summaryDataSource'].next({ executingTasks: null });
+    summaryService['summaryDataSource'].next(new Summary());
     expect(rbdService.listTrash).toHaveBeenCalled();
   });
 
@@ -90,7 +91,7 @@ describe('RbdTrashListComponent', () => {
       addImage('1');
       addImage('2');
       component.images = images;
-      summaryService['summaryDataSource'].next({ executingTasks: [] });
+      summaryService['summaryDataSource'].next(new Summary());
       spyOn(rbdService, 'listTrash').and.callFake(() =>
         of([{ pool_name: 'rbd', status: 1, value: images }])
       );
@@ -124,7 +125,7 @@ describe('RbdTrashListComponent', () => {
     };
 
     beforeEach(() => {
-      summaryService['summaryDataSource'].next({ executingTasks: [] });
+      summaryService['summaryDataSource'].next(new Summary());
       spyOn(rbdService, 'listTrash').and.callFake(() => {
         of([{ pool_name: 'rbd', status: 1, value: images }]);
       });
index 862a8b491a19995db7e53cdbe02b49d7bca23abe..c1d33d8e0d243543429364674dfac62cf97ee055 100644 (file)
@@ -31,8 +31,8 @@
 <!-- templates -->
 <ng-template #poolUsageTpl
              let-row="row">
-  <cd-usage-bar [totalBytes]="row.size"
-                [usedBytes]="row.used"></cd-usage-bar>
+  <cd-usage-bar [total]="row.size"
+                [used]="row.used"></cd-usage-bar>
 </ng-template>
 
 <ng-template #activityTmpl
index 69ed5df199647f9f8e22ab03668ead469cfdfd7e..05f3d962f0e4047ac3b71af59f9d42d50f0c3c62 100644 (file)
@@ -3,6 +3,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { RouterTestingModule } from '@angular/router/testing';
 
+import * as _ from 'lodash';
 import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
 import { TabsModule } from 'ngx-bootstrap/tabs';
 import { ToastrModule } from 'ngx-toastr';
@@ -11,6 +12,8 @@ import { of } from 'rxjs';
 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
 import { CoreModule } from '../../../core/core.module';
 import { HostService } from '../../../shared/api/host.service';
+import { ActionLabels } from '../../../shared/constants/app.constants';
+import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { Permissions } from '../../../shared/models/permissions';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import { SharedModule } from '../../../shared/shared.module';
@@ -92,4 +95,41 @@ describe('HostsComponent', () => {
       expect(spans[0].textContent).toBe(hostname);
     });
   }));
+
+  describe('test edit button', () => {
+    let tableAction: CdTableAction;
+
+    beforeEach(() => {
+      tableAction = _.find(component.tableActions, { name: ActionLabels.EDIT });
+    });
+
+    it('should disable button and return message (not managed by Orchestrator)', () => {
+      component.selection.add({
+        sources: {
+          ceph: true,
+          orchestrator: false
+        }
+      });
+      expect(tableAction.disable(component.selection)).toBeTruthy();
+      expect(component.getEditDisableDesc(component.selection)).toBe(
+        'Host editing is disabled because the host is not managed by Orchestrator.'
+      );
+    });
+
+    it('should disable button and return undefined (no selection)', () => {
+      expect(tableAction.disable(component.selection)).toBeTruthy();
+      expect(component.getEditDisableDesc(component.selection)).toBeUndefined();
+    });
+
+    it('should enable button and return undefined (managed by Orchestrator)', () => {
+      component.selection.add({
+        sources: {
+          ceph: false,
+          orchestrator: true
+        }
+      });
+      expect(tableAction.disable(component.selection)).toBeFalsy();
+      expect(component.getEditDisableDesc(component.selection)).toBeUndefined();
+    });
+  });
 });
index 91e9faa7f2cbe67c45d07d5d6b9a808f9f2686e7..41594c1f55e7924504adb5cd137c36e031cafd19 100644 (file)
@@ -7,8 +7,12 @@ import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
 import { HostService } from '../../../shared/api/host.service';
 import { ListWithDetails } from '../../../shared/classes/list-with-details.class';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { FormModalComponent } from '../../../shared/components/form-modal/form-modal.component';
+import { SelectMessages } from '../../../shared/components/select/select-messages.model';
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
+import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { Icons } from '../../../shared/enum/icons.enum';
+import { NotificationType } from '../../../shared/enum/notification-type.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableFetchDataContext } from '../../../shared/models/cd-table-fetch-data-context';
@@ -19,6 +23,7 @@ import { CephShortVersionPipe } from '../../../shared/pipes/ceph-short-version.p
 import { JoinPipe } from '../../../shared/pipes/join.pipe';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import { DepCheckerService } from '../../../shared/services/dep-checker.service';
+import { NotificationService } from '../../../shared/services/notification.service';
 import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
 import { URLBuilderService } from '../../../shared/services/url-builder.service';
 
@@ -31,6 +36,11 @@ const BASE_URL = 'hosts';
   providers: [{ provide: URLBuilderService, useValue: new URLBuilderService(BASE_URL) }]
 })
 export class HostsComponent extends ListWithDetails implements OnInit {
+  @ViewChild(TableComponent, { static: true })
+  table: TableComponent;
+  @ViewChild('servicesTpl', { static: true })
+  public servicesTpl: TemplateRef<any>;
+
   permissions: Permissions;
   columns: Array<CdTableColumn> = [];
   hosts: Array<object> = [];
@@ -40,9 +50,6 @@ export class HostsComponent extends ListWithDetails implements OnInit {
   selection = new CdTableSelection();
   modalRef: BsModalRef;
 
-  @ViewChild('servicesTpl', { static: true })
-  public servicesTpl: TemplateRef<any>;
-
   constructor(
     private authStorageService: AuthStorageService,
     private hostService: HostService,
@@ -54,7 +61,8 @@ export class HostsComponent extends ListWithDetails implements OnInit {
     private modalService: BsModalService,
     private taskWrapper: TaskWrapperService,
     private router: Router,
-    private depCheckerService: DepCheckerService
+    private depCheckerService: DepCheckerService,
+    private notificationService: NotificationService
   ) {
     super();
     this.permissions = this.authStorageService.getPermissions();
@@ -73,6 +81,21 @@ export class HostsComponent extends ListWithDetails implements OnInit {
           );
         }
       },
+      {
+        name: this.actionLabels.EDIT,
+        permission: 'update',
+        icon: Icons.edit,
+        click: () => {
+          this.depCheckerService.checkOrchestratorOrModal(
+            this.actionLabels.EDIT,
+            this.i18n('Host'),
+            () => this.editAction()
+          );
+        },
+        disable: (selection: CdTableSelection) =>
+          !selection.hasSingleSelection || !selection.first().sources.orchestrator,
+        disableDesc: this.getEditDisableDesc.bind(this)
+      },
       {
         name: this.actionLabels.DELETE,
         permission: 'delete',
@@ -81,7 +104,7 @@ export class HostsComponent extends ListWithDetails implements OnInit {
           this.depCheckerService.checkOrchestratorOrModal(
             this.actionLabels.DELETE,
             this.i18n('Host'),
-            () => this.deleteHostModal()
+            () => this.deleteAction()
           );
         },
         disable: () => !this.selection.hasSelection
@@ -121,7 +144,59 @@ export class HostsComponent extends ListWithDetails implements OnInit {
     this.selection = selection;
   }
 
-  deleteHostModal() {
+  editAction() {
+    this.hostService.getLabels().subscribe((resp: string[]) => {
+      const host = this.selection.first();
+      const allLabels = resp.map((label) => {
+        return { enabled: true, name: label };
+      });
+      this.modalService.show(FormModalComponent, {
+        initialState: {
+          titleText: this.i18n('Edit Host: {{hostname}}', host),
+          fields: [
+            {
+              type: 'select-badges',
+              name: 'labels',
+              value: host['labels'],
+              label: this.i18n('Labels'),
+              typeConfig: {
+                customBadges: true,
+                options: allLabels,
+                messages: new SelectMessages(
+                  {
+                    empty: this.i18n('There are no labels.'),
+                    filter: this.i18n('Filter or add labels'),
+                    add: this.i18n('Add label')
+                  },
+                  this.i18n
+                )
+              }
+            }
+          ],
+          submitButtonText: this.i18n('Edit Host'),
+          onSubmit: (values: any) => {
+            this.hostService.update(host['hostname'], values.labels).subscribe(() => {
+              this.notificationService.show(
+                NotificationType.success,
+                this.i18n('Updated Host "{{hostname}}"', host)
+              );
+              // Reload the data table content.
+              this.table.refreshBtn();
+            });
+          }
+        }
+      });
+    });
+  }
+
+  getEditDisableDesc(selection: CdTableSelection): string | undefined {
+    if (selection && selection.hasSingleSelection && !selection.first().sources.orchestrator) {
+      return this.i18n('Host editing is disabled because the host is not managed by Orchestrator.');
+    }
+    return undefined;
+  }
+
+  deleteAction() {
     const hostname = this.selection.first().hostname;
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
index 79744611fd7d8430e39813a5c9dbed9d226c7091..76a196c50a894539a9ab8e721e3c08aeca483aa5 100644 (file)
@@ -116,7 +116,9 @@ export class InventoryDevicesComponent implements OnInit, OnDestroy {
       {
         name: this.i18n('Available'),
         prop: 'available',
-        flexGrow: 1
+        flexGrow: 1,
+        cellClass: 'text-center',
+        cellTransformation: CellTemplate.checkIcon
       },
       {
         name: this.i18n('Vendor'),
@@ -193,13 +195,15 @@ export class InventoryDevicesComponent implements OnInit, OnDestroy {
             name: 'duration',
             value: 300,
             required: true,
-            options: [
-              { text: this.i18n('1 minute'), value: 60 },
-              { text: this.i18n('2 minutes'), value: 120 },
-              { text: this.i18n('5 minutes'), value: 300 },
-              { text: this.i18n('10 minutes'), value: 600 },
-              { text: this.i18n('15 minutes'), value: 900 }
-            ]
+            typeConfig: {
+              options: [
+                { text: this.i18n('1 minute'), value: 60 },
+                { text: this.i18n('2 minutes'), value: 120 },
+                { text: this.i18n('5 minutes'), value: 300 },
+                { text: this.i18n('10 minutes'), value: 600 },
+                { text: this.i18n('15 minutes'), value: 900 }
+              ]
+            }
           }
         ],
         submitButtonText: this.i18n('Execute'),
index a529924d93e53b3805fbeebe0b005dba9cecccb9..da0f1a541a14071a98cecdc015fa137207d0e27e 100644 (file)
@@ -16,7 +16,6 @@ export class InventoryComponent implements OnChanges, OnInit {
   icons = Icons;
 
   hasOrchestrator = false;
-  docsUrl: string;
 
   devices: Array<InventoryDevice> = [];
 
index 3430d00b48afc6d5c165c6739b5bc0401e4d39a1..3769577cb3786c9074d7e1e5da5ff37a74e79b3c 100644 (file)
@@ -2,22 +2,20 @@
         id="tabset-osd-details">
   <tab heading="Devices"
        i18n-heading>
-    <cd-device-list *ngIf="osd.loaded && osd.id !== null"
-                    [osdId]="osd.id"></cd-device-list>
+    <cd-device-list [osdId]="osd?.id"></cd-device-list>
   </tab>
 
   <tab heading="Attributes (OSD map)"
        i18n-heading>
-    <cd-table-key-value *ngIf="osd.loaded"
-                        [data]="osd.details.osd_map">
+    <cd-table-key-value [data]="osd?.details?.osd_map">
     </cd-table-key-value>
   </tab>
 
   <tab heading="Metadata"
        i18n-heading>
-    <cd-table-key-value *ngIf="osd.loaded && osd.details.osd_metadata; else noMetaData"
+    <cd-table-key-value *ngIf="osd?.details?.osd_metadata; else noMetaData"
                         (fetchData)="refresh()"
-                        [data]="osd.details.osd_metadata">
+                        [data]="osd?.details?.osd_metadata">
     </cd-table-key-value>
     <ng-template #noMetaData>
       <cd-alert-panel type="warning"
 
   <tab heading="Device health"
        i18n-heading>
-    <cd-smart-list [osdId]="osd.id"></cd-smart-list>
+    <cd-smart-list [osdId]="osd?.id"></cd-smart-list>
   </tab>
 
   <tab heading="Performance counter"
        i18n-heading>
-    <cd-table-performance-counter *ngIf="osd.loaded"
+    <cd-table-performance-counter *ngIf="osd?.details"
                                   serviceType="osd"
-                                  [serviceId]="osd.id">
+                                  [serviceId]="osd?.id">
     </cd-table-performance-counter>
   </tab>
 
   <tab heading="Histogram"
        i18n-heading>
-    <cd-alert-panel *ngIf="osd.loaded && osd.histogram_failed"
+    <cd-alert-panel *ngIf="osd?.histogram_failed"
                     type="warning"
                     i18n>Histogram not available: {{ osd.histogram_failed }}</cd-alert-panel>
 
     <div class="row"
-         *ngIf="osd.loaded && osd.details.histogram">
+         *ngIf="osd?.details?.histogram">
       <div class="col-md-6">
         <h4 i18n>Writes</h4>
-        <cd-osd-performance-histogram [histogram]="osd.details.histogram.osd.op_w_latency_in_bytes_histogram">
+        <cd-osd-performance-histogram [histogram]="osd?.details?.histogram?.osd?.op_w_latency_in_bytes_histogram">
         </cd-osd-performance-histogram>
       </div>
       <div class="col-md-6">
         <h4 i18n>Reads</h4>
-        <cd-osd-performance-histogram [histogram]="osd.details.histogram.osd.op_r_latency_out_bytes_histogram">
+        <cd-osd-performance-histogram [histogram]="osd?.details?.histogram?.osd?.op_r_latency_out_bytes_histogram">
         </cd-osd-performance-histogram>
       </div>
     </div>
index 9cac703d2622692b3cd24554df3cbb9e87265af6..0f9e7f701a82ca754c357278a68d92fcfc8dcd67 100644 (file)
@@ -17,7 +17,6 @@ export class OsdDetailsComponent implements OnChanges {
 
   osd: {
     id?: number;
-    loaded?: boolean;
     details?: any;
     histogram_failed?: string;
     tree?: any;
@@ -29,11 +28,11 @@ export class OsdDetailsComponent implements OnChanges {
   }
 
   ngOnChanges() {
-    this.osd = {
-      loaded: false
-    };
-    if (this.selection) {
+    if (_.get(this, 'osd.id') !== _.get(this, 'selection.id')) {
       this.osd = this.selection;
+    }
+
+    if (_.isNumber(_.get(this, 'osd.id'))) {
       this.refresh();
     }
   }
@@ -46,7 +45,6 @@ export class OsdDetailsComponent implements OnChanges {
         this.osd.histogram_failed = data.histogram;
         this.osd.details.histogram = undefined;
       }
-      this.osd.loaded = true;
     });
   }
 }
index e6be9f0ea5c9f92aadc365d0bb8c8b286a59ef51..b38e540ddf2978c6286fad1f16ec66e91588778d 100644 (file)
@@ -61,7 +61,6 @@ export class OsdFormComponent implements OnInit {
   featureList: OsdFeature[] = [];
 
   hasOrchestrator = false;
-  docsUrl: string;
 
   constructor(
     public actionLabels: ActionLabelsI18n,
@@ -104,11 +103,9 @@ export class OsdFormComponent implements OnInit {
   createForm() {
     this.form = new CdFormGroup({
       walSlots: new FormControl(0, {
-        updateOn: 'blur',
         validators: [Validators.min(0)]
       }),
       dbSlots: new FormControl(0, {
-        updateOn: 'blur',
         validators: [Validators.min(0)]
       }),
       features: new CdFormGroup(
index 196a07e2ffb1d4247a44d9a632b5c40430dc6e5a..84faaf14eef55d9072567de1a8beb592e19962ba 100644 (file)
@@ -1,9 +1,7 @@
 <tabset>
   <tab i18n-heading
        heading="OSDs List">
-
-    <cd-table [autoReload]="false"
-              [data]="osds"
+    <cd-table [data]="osds"
               (fetchData)="getOsdList()"
               [columns]="columns"
               selectionType="multiClick"
@@ -36,8 +34,8 @@
 
     <ng-template #osdUsageTpl
                  let-row="row">
-      <cd-usage-bar [totalBytes]="row.stats.stat_bytes"
-                    [usedBytes]="row.stats.stat_bytes_used">
+      <cd-usage-bar [total]="row.stats.stat_bytes"
+                    [used]="row.stats.stat_bytes_used">
       </cd-usage-bar>
     </ng-template>
   </tab>
 <ng-template #criticalConfirmationTpl
              let-safeToPerform="safeToPerform"
              let-message="message"
-             let-actionDescription="actionDescription">
+             let-actionDescription="actionDescription"
+             let-osdIds="osdIds">
   <div *ngIf="!safeToPerform"
        class="danger">
     <cd-alert-panel type="warning"
-                    i18n>The {selection.hasSingleSelection, select, 1 {OSD is} 0 {OSDs are}} not safe to be {{ actionDescription }}! {{ message }}</cd-alert-panel>
+                    i18n>The {selection.hasSingleSelection, select, true {OSD is} false {OSDs are}} not safe to be
+      {{ actionDescription }}! {{ message }}</cd-alert-panel>
   </div>
-  <ng-container i18n><strong>OSD {{ getSelectedOsdIds() | join }}</strong> will be
-<strong>{{ actionDescription }}</strong> if you proceed.</ng-container>
+  <ng-container i18n><strong>OSD {{ osdIds | join }}</strong> will be
+  <strong>{{ actionDescription }}</strong> if you proceed.</ng-container>
+</ng-template>
+
+<ng-template #deleteOsdExtraTpl
+             let-form="form">
+  <ng-container [formGroup]="form">
+    <ng-container formGroupName="child">
+      <div class="form-group">
+        <div class="custom-control custom-checkbox">
+          <input type="checkbox"
+                 class="custom-control-input"
+                 name="preserve"
+                 id="preserve"
+                 formControlName="preserve">
+          <label class="custom-control-label"
+                 for="preserve"
+                 i18n>Preserve OSD ID(s) for replacement.</label>
+        </div>
+      </div>
+    </ng-container>
+  </ng-container>
 </ng-template>
index 76a0130749afd6906613bfb91c22bca5e02f7289..1deb200343415f74e81540b39aba017e9c5029f1 100644 (file)
@@ -1,4 +1,5 @@
 import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
+import { FormControl } from '@angular/forms';
 import { Router } from '@angular/router';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
@@ -16,6 +17,7 @@ import { TableComponent } from '../../../../shared/datatable/table/table.compone
 import { CellTemplate } from '../../../../shared/enum/cell-template.enum';
 import { Icons } from '../../../../shared/enum/icons.enum';
 import { NotificationType } from '../../../../shared/enum/notification-type.enum';
+import { CdFormGroup } from '../../../../shared/forms/cd-form-group';
 import { CdTableAction } from '../../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../../shared/models/cd-table-column';
 import { CdTableSelection } from '../../../../shared/models/cd-table-selection';
@@ -54,6 +56,8 @@ export class OsdListComponent extends ListWithDetails implements OnInit {
   reweightBodyTpl: TemplateRef<any>;
   @ViewChild('safeToDestroyBodyTpl', { static: false })
   safeToDestroyBodyTpl: TemplateRef<any>;
+  @ViewChild('deleteOsdExtraTpl', { static: false })
+  deleteOsdExtraTpl: TemplateRef<any>;
 
   permissions: Permissions;
   tableActions: CdTableAction[];
@@ -217,33 +221,7 @@ export class OsdListComponent extends ListWithDetails implements OnInit {
       {
         name: this.actionLabels.DELETE,
         permission: 'delete',
-        click: () => {
-          this.depCheckerService.checkOrchestratorOrModal(
-            this.actionLabels.DELETE,
-            this.i18n('OSD'),
-            () => {
-              this.showCriticalConfirmationModal(
-                this.i18n('delete'),
-                this.i18n('OSD'),
-                this.i18n('deleted'),
-                (ids: number[]) => {
-                  return this.osdService.safeToDelete(JSON.stringify(ids));
-                },
-                'is_safe_to_delete',
-                (id: number) => {
-                  this.selection = new CdTableSelection();
-                  return this.taskWrapper.wrapTaskAroundCall({
-                    task: new FinishedTask('osd/' + URLVerbs.DELETE, {
-                      svc_id: id
-                    }),
-                    call: this.osdService.delete(id, true)
-                  });
-                },
-                true
-              );
-            }
-          );
-        },
+        click: () => this.delete(),
         disable: () => !this.hasOsdSelected,
         icon: Icons.destroy
       }
@@ -474,6 +452,40 @@ export class OsdListComponent extends ListWithDetails implements OnInit {
     });
   }
 
+  delete() {
+    const deleteFormGroup = new CdFormGroup({
+      preserve: new FormControl(false)
+    });
+
+    this.depCheckerService.checkOrchestratorOrModal(
+      this.actionLabels.DELETE,
+      this.i18n('OSD'),
+      () => {
+        this.showCriticalConfirmationModal(
+          this.i18n('delete'),
+          this.i18n('OSD'),
+          this.i18n('deleted'),
+          (ids: number[]) => {
+            return this.osdService.safeToDelete(JSON.stringify(ids));
+          },
+          'is_safe_to_delete',
+          (id: number) => {
+            this.selection = new CdTableSelection();
+            return this.taskWrapper.wrapTaskAroundCall({
+              task: new FinishedTask('osd/' + URLVerbs.DELETE, {
+                svc_id: id
+              }),
+              call: this.osdService.delete(id, deleteFormGroup.value.preserve, true)
+            });
+          },
+          true,
+          deleteFormGroup,
+          this.deleteOsdExtraTpl
+        );
+      }
+    );
+  }
+
   /**
    * Perform check first and display a critical confirmation modal.
    * @param {string} actionDescription name of the action.
@@ -482,8 +494,9 @@ export class OsdListComponent extends ListWithDetails implements OnInit {
    * @param {Function} check the function is called to check if the action is safe.
    * @param {string} checkKey the safe indicator's key in the check response.
    * @param {Function} action the action function.
-   * @param {boolean} oneshot if true, action function is called with all items as parameter.
-   *   Otherwise, multiple action functions with individual items are sent.
+   * @param {boolean} taskWrapped if true, hide confirmation modal after action
+   * @param {CdFormGroup} childFormGroup additional child form group to be passed to confirmation modal
+   * @param {TemplateRef<any>} childFormGroupTemplate template for additional child form group
    */
   showCriticalConfirmationModal(
     actionDescription: string,
@@ -492,7 +505,9 @@ export class OsdListComponent extends ListWithDetails implements OnInit {
     check: (ids: number[]) => Observable<any>,
     checkKey: string,
     action: (id: number | number[]) => Observable<any>,
-    taskWrapped: boolean = false
+    taskWrapped: boolean = false,
+    childFormGroup?: CdFormGroup,
+    childFormGroupTemplate?: TemplateRef<any>
   ): void {
     check(this.getSelectedOsdIds()).subscribe((result) => {
       const modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
@@ -503,8 +518,11 @@ export class OsdListComponent extends ListWithDetails implements OnInit {
           bodyContext: {
             safeToPerform: result[checkKey],
             message: result.message,
-            actionDescription: templateItemDescription
+            actionDescription: templateItemDescription,
+            osdIds: this.getSelectedOsdIds()
           },
+          childFormGroup: childFormGroup,
+          childFormGroupTemplate: childFormGroupTemplate,
           submitAction: () => {
             const observable = observableForkJoin(
               this.getSelectedOsdIds().map((osd: any) => action.call(this.osdService, osd))
index f54c1fe515f554ead4338402f8f7e35dc26cab61..9bb49de583c97f3edee5e4955ddef8fc260e1acd 100644 (file)
@@ -6,10 +6,9 @@
     <cd-active-alert-list *ngIf="isAlertmanagerConfigured"></cd-active-alert-list>
     <cd-alert-panel type="info"
                     i18n
-                    *ngIf="!isAlertmanagerConfigured">To see all active Prometheus alerts, please
-      provide the URL to the API of Prometheus' Alertmanager as described in the
-  <a href="{{docsUrl}}"
-     target="_blank">documentation</a>.</cd-alert-panel>
+                    *ngIf="!isAlertmanagerConfigured">To see all active Prometheus alerts,
+      please provide the URL to the API of Prometheus' Alertmanager as described in
+      the <cd-doc section="prometheus"></cd-doc>.</cd-alert-panel>
   </tab>
   <tab id="all-alerts"
        heading="All Alerts"
     <cd-rules-list *ngIf="isPrometheusConfigured"
                    [data]="prometheusAlertService.rules"></cd-rules-list>
     <cd-alert-panel type="info"
-                    *ngIf="!isPrometheusConfigured">To see all configured Prometheus alerts, please provide the URL to
-      the API of Prometheus as described in the
-  <a href="{{docsUrl}}"
-     target="_blank">documentation</a>.</cd-alert-panel>
+                    *ngIf="!isPrometheusConfigured">To see all configured Prometheus alerts,
+      please provide the URL to the API of Prometheus as described in
+      the <cd-doc section="prometheus"></cd-doc>.</cd-alert-panel>
   </tab>
   <tab id="silences"
        heading="Silences"
@@ -30,9 +28,8 @@
     <cd-silences-list *ngIf="isAlertmanagerConfigured"></cd-silences-list>
     <cd-alert-panel *ngIf="!isAlertmanagerConfigured"
                     type="info"
-                    i18n>To enable Silences, please provide the URL to the API of the Prometheus' Alertmanager as
-      described in the
-  <a href="{{docsUrl}}"
-     target="_blank">documentation</a>.</cd-alert-panel>
+                    i18n>To enable Silences, please provide the URL to the API
+      of the Prometheus' Alertmanager as described in
+      the <cd-doc section="prometheus"></cd-doc>.</cd-alert-panel>
   </tab>
 </tabset>
index 5e96d126fdda2bd7bccbf8fd50ab9cb0ba9f7b0a..9b549aca8426f0e4dbc1179285f7b07fcf01a914 100644 (file)
@@ -4,9 +4,7 @@ import { ActivatedRoute, Router } from '@angular/router';
 import { TabDirective, TabsetComponent } from 'ngx-bootstrap/tabs';
 
 import { PrometheusService } from '../../../../shared/api/prometheus.service';
-import { CephReleaseNamePipe } from '../../../../shared/pipes/ceph-release-name.pipe';
 import { PrometheusAlertService } from '../../../../shared/services/prometheus-alert.service';
-import { SummaryService } from '../../../../shared/services/summary.service';
 
 @Component({
   selector: 'cd-monitoring-list',
@@ -18,9 +16,7 @@ export class MonitoringListComponent implements OnInit {
     public prometheusAlertService: PrometheusAlertService,
     private prometheusService: PrometheusService,
     private route: ActivatedRoute,
-    private router: Router,
-    private summaryService: SummaryService,
-    private cephReleaseNamePipe: CephReleaseNamePipe
+    private router: Router
   ) {}
   @ViewChild('tabs', { static: true })
   tabs: TabsetComponent;
@@ -28,8 +24,6 @@ export class MonitoringListComponent implements OnInit {
   isPrometheusConfigured = false;
   isAlertmanagerConfigured = false;
 
-  docsUrl = '';
-
   ngOnInit() {
     this.prometheusService.ifAlertmanagerConfigured(() => {
       this.isAlertmanagerConfigured = true;
@@ -38,19 +32,6 @@ export class MonitoringListComponent implements OnInit {
       this.isPrometheusConfigured = true;
     });
 
-    const subs = this.summaryService.subscribe((summary: any) => {
-      if (!summary) {
-        return;
-      }
-
-      const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-      this.docsUrl = `https://docs.ceph.com/docs/${releaseName}/mgr/dashboard/#enabling-prometheus-alerting`;
-
-      setTimeout(() => {
-        subs.unsubscribe();
-      }, 0);
-    });
-
     // Activate tab according to given fragment
     if (this.route.snapshot.fragment) {
       const tab = this.tabs.tabs.find(
index 2ac3ef6b2811d815d4d9aa449b0fe208791998eb..97dfe0d03a8ac1cf7db91b694e816e6ea6d5302a 100644 (file)
@@ -18,7 +18,15 @@ describe('ServiceDetailsComponent', () => {
   configureTestBed({
     imports: [HttpClientTestingModule, RouterTestingModule, TabsModule.forRoot(), SharedModule],
     declarations: [ServiceDetailsComponent, ServiceDaemonListComponent],
-    providers: [i18nProviders, { provide: SummaryService, useValue: { subscribe: jest.fn() } }]
+    providers: [
+      i18nProviders,
+      {
+        provide: SummaryService,
+        useValue: {
+          subscribeOnce: jest.fn()
+        }
+      }
+    ]
   });
 
   beforeEach(() => {
index 757d4f9da41b8f7b9bb992280b9ab3ef1830e724..8890ff5531ed1a0d95448e88f6cd3fee19724e20 100644 (file)
@@ -31,7 +31,6 @@ export class ServicesComponent extends ListWithDetails implements OnChanges, OnI
 
   checkingOrchestrator = true;
   hasOrchestrator = false;
-  docsUrl: string;
 
   columns: Array<CdTableColumn> = [];
   services: Array<CephServiceSpec> = [];
@@ -72,7 +71,9 @@ export class ServicesComponent extends ListWithDetails implements OnChanges, OnI
       {
         name: this.i18n('Running'),
         prop: 'status.running',
-        flexGrow: 1
+        flexGrow: 1,
+        cellClass: 'text-center',
+        cellTransformation: CellTemplate.checkIcon
       },
       {
         name: this.i18n('Size'),
index 748ffd4231c14397833221229783f97a7dc45fcf..8befd85430f4d96d741699aa4fa38dcb5623bc9c 100644 (file)
                 </button>
                 <button type="button"
                         class="btn btn-light"
-                        cdCopy2ClipboardButton="report"
-                        formatted>
+                        cdCopy2ClipboardButton="report">
                 </button>
               </div>
             </div>
index 783eeed810d0d1b3ec12cc3d2e4c0db339368e09..cc56046df62e8722418ca1ea32c0b84b4a1fe1b4 100644 (file)
@@ -47,20 +47,17 @@ describe('TelemetryComponent', () => {
     'url'
   ];
 
-  configureTestBed(
-    {
-      declarations: [TelemetryComponent],
-      imports: [
-        HttpClientTestingModule,
-        ReactiveFormsModule,
-        RouterTestingModule,
-        SharedModule,
-        ToastrModule.forRoot()
-      ],
-      providers: i18nProviders
-    },
-    true
-  );
+  configureTestBed({
+    declarations: [TelemetryComponent],
+    imports: [
+      HttpClientTestingModule,
+      ReactiveFormsModule,
+      RouterTestingModule,
+      SharedModule,
+      ToastrModule.forRoot()
+    ],
+    providers: i18nProviders
+  });
 
   describe('configForm', () => {
     beforeEach(() => {
index d9ec0e4f8ec142ffef88a73034650199eee5dc15..d6d928e19500c8f15bf53ef347c6df454b360254 100644 (file)
@@ -14,6 +14,7 @@ import { CdFormBuilder } from '../../../shared/forms/cd-form-builder';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 import { CdValidators } from '../../../shared/forms/cd-validators';
 import { NotificationService } from '../../../shared/services/notification.service';
+import { TelemetryNotificationService } from '../../../shared/services/telemetry-notification.service';
 import { TextToDownloadService } from '../../../shared/services/text-to-download.service';
 
 @Component({
@@ -55,7 +56,8 @@ export class TelemetryComponent implements OnInit {
     private router: Router,
     private telemetryService: TelemetryService,
     private i18n: I18n,
-    private textToDownloadService: TextToDownloadService
+    private textToDownloadService: TextToDownloadService,
+    private telemetryNotificationService: TelemetryNotificationService
   ) {}
 
   ngOnInit() {
@@ -175,6 +177,7 @@ complete the next step and accept the license.`
 
   disableModule(message: string = null, followUpFunc: Function = null) {
     this.telemetryService.enable(false).subscribe(() => {
+      this.telemetryNotificationService.setVisibility(true);
       if (message) {
         this.notificationService.show(NotificationType.success, message);
       }
@@ -200,6 +203,7 @@ complete the next step and accept the license.`
 
   onSubmit() {
     this.telemetryService.enable().subscribe(() => {
+      this.telemetryNotificationService.setVisibility(false);
       this.notificationService.show(
         NotificationType.success,
         this.i18n('The Telemetry module has been configured and activated successfully.')
index dcfc4a40058aab90ff2a21c197c70b79c81a7a72..7a5e5ff0c0a6275db669992a299c562183a7de53 100644 (file)
@@ -8,6 +8,7 @@
     max-width: 100%;
     max-height: 19vh;
     font-size: 12px;
+    overflow: auto;
   }
 }
 
index dae183db0d6ccbe383cd298618bbdb5a07e8fad6..bcbb88125429d01f42627d1d628118f7ba848112 100644 (file)
@@ -1,6 +1,5 @@
 <cd-alert-panel type="info">
   {{ message }}<br>
-  <ng-container i18n>Please consult the <a href="{{docsUrl}}"
-                                           target="_blank">documentation</a>
-  on how to configure and enable the NFS Ganesha management functionality.</ng-container>
+  <ng-container i18n>Please consult the <cd-doc section="nfs-ganesha"></cd-doc> on how
+    to configure and enable the NFS Ganesha management functionality.</ng-container>
 </cd-alert-panel>
index 77b3b649332a9b53d1a60308687d2b8bce05e65e..1b34aaf7df5d039ab7b0a0cd10b7f8dcb111d28d 100644 (file)
@@ -3,42 +3,18 @@ import { ActivatedRoute } from '@angular/router';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
 
-import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
-import { SummaryService } from '../../../shared/services/summary.service';
-
 @Component({
   selector: 'cd-nfs-501',
   templateUrl: './nfs-501.component.html',
   styleUrls: ['./nfs-501.component.scss']
 })
 export class Nfs501Component implements OnInit, OnDestroy {
-  docsUrl: string;
   message = this.i18n('The NFS Ganesha service is not configured.');
   routeParamsSubscribe: any;
 
-  constructor(
-    private route: ActivatedRoute,
-    private summaryService: SummaryService,
-    private cephReleaseNamePipe: CephReleaseNamePipe,
-    private i18n: I18n
-  ) {}
+  constructor(private route: ActivatedRoute, private i18n: I18n) {}
 
   ngOnInit() {
-    const subs = this.summaryService.subscribe((summary: any) => {
-      if (!summary) {
-        return;
-      }
-
-      const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-      this.docsUrl =
-        `http://docs.ceph.com/docs/${releaseName}/mgr/dashboard/` +
-        `#configuring-nfs-ganesha-in-the-dashboard`;
-
-      setTimeout(() => {
-        subs.unsubscribe();
-      }, 0);
-    });
-
     this.routeParamsSubscribe = this.route.params.subscribe((params: { message: string }) => {
       this.message = params.message;
     });
index 03fdc53c8d9a41fc783733b16ec6b10b3cbf45bf..3c9a2d0e2f7e1f5c6c60b2f5c60d2b89805d5efd 100644 (file)
@@ -37,7 +37,7 @@
                        placeholder="192.168.0.10, 192.168.1.0/8">
                 <span class="invalid-feedback">
                   <span *ngIf="showError(index, 'addresses', formDir, 'required')"
-                        i18n>Required field</span>
+                        i18n>This field is required.</span>
 
                   <span *ngIf="showError(index, 'addresses', formDir, 'pattern')">
                     <ng-container i18n>Must contain one or more comma-separated values</ng-container>
index 4ade6ddbc515d514d5600990df28aaa124191f6f..70d577b3456ef3440ea39014bcc96bc08046f150 100644 (file)
@@ -34,7 +34,7 @@
             </select>
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('cluster_id', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
           </div>
         </div>
 
               </select>
               <span class="invalid-feedback"
                     *ngIf="nfsForm.showError('name', formDir, 'required')"
-                    i18n>Required field</span>
+                    i18n>This field is required.</span>
             </div>
           </div>
 
               </select>
               <span class="invalid-feedback"
                     *ngIf="nfsForm.showError('rgw_user_id', formDir, 'required')"
-                    i18n>Required field</span>
+                    i18n>This field is required.</span>
             </div>
           </div>
 
               </select>
               <span class="invalid-feedback"
                     *ngIf="nfsForm.showError('user_id', formDir, 'required')"
-                    i18n>Required field</span>
+                    i18n>This field is required.</span>
             </div>
           </div>
 
               </select>
               <span class="invalid-feedback"
                     *ngIf="nfsForm.showError('fs_name', formDir, 'required')"
-                    i18n>Required field</span>
+                    i18n>This field is required.</span>
             </div>
           </div>
         </div>
 
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('sec_label_xattr', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
           </div>
         </div>
 
                    (blur)="pathChangeHandler()">
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('path', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
 
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('path', formDir, 'pattern')"
 
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('path', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
 
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('path', formDir, 'pattern')"
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('protocolNfsv3', formDir, 'required') ||
                   nfsForm.showError('protocolNfsv4', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
           </div>
         </div>
 
                    formControlName="pseudo">
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('pseudo', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('pseudo', formDir, 'pattern')"
                   i18n>Pseudo needs to start with a '/' and can't contain any of the following: &gt;, &lt;, |, &, ( or ).</span>
                   *ngIf="nfsForm.getValue('access_type') === 'RW' && nfsForm.getValue('name') === 'RGW'"
                   i18n>The Object Gateway NFS backend has a number of
               limitations which will seriously affect applications writing to
-              the share. Please consult the
-              <a href="{{docsUrl}}"
-                 target="_blank"> documentation</a> for details before enabling write access.</span>
+              the share. Please consult the <cd-doc section="rgw-nfs"></cd-doc>
+              for details before enabling write access.</span>
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('access_type', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
           </div>
         </div>
 
             </select>
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('squash', formDir,'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
           </div>
         </div>
 
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('transportUDP', formDir, 'required') ||
                   nfsForm.showError('transportTCP', formDir, 'required')"
-                  i18n>Required field</span>
+                  i18n>This field is required.</span>
             <hr>
           </div>
         </div>
index 4b5ec0c909981dcdc1fa4a27ee00aa2fa2d950e3..7e271d6d4e9f823bd9dcd091f8a0408e55c7b612 100644 (file)
@@ -6,6 +6,7 @@ import { RouterTestingModule } from '@angular/router/testing';
 
 import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
 import { ToastrModule } from 'ngx-toastr';
+import { of } from 'rxjs';
 
 import { ActivatedRouteStub } from '../../../../testing/activated-route-stub';
 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
@@ -21,38 +22,35 @@ describe('NfsFormComponent', () => {
   let httpTesting: HttpTestingController;
   let activatedRoute: ActivatedRouteStub;
 
-  configureTestBed(
-    {
-      declarations: [NfsFormComponent, NfsFormClientComponent],
-      imports: [
-        HttpClientTestingModule,
-        ReactiveFormsModule,
-        RouterTestingModule,
-        SharedModule,
-        ToastrModule.forRoot(),
-        TypeaheadModule.forRoot()
-      ],
-      providers: [
-        {
-          provide: ActivatedRoute,
-          useValue: new ActivatedRouteStub({ cluster_id: undefined, export_id: undefined })
-        },
-        i18nProviders,
-        SummaryService,
-        CephReleaseNamePipe
-      ]
-    },
-    true
-  );
+  configureTestBed({
+    declarations: [NfsFormComponent, NfsFormClientComponent],
+    imports: [
+      HttpClientTestingModule,
+      ReactiveFormsModule,
+      RouterTestingModule,
+      SharedModule,
+      ToastrModule.forRoot(),
+      TypeaheadModule.forRoot()
+    ],
+    providers: [
+      {
+        provide: ActivatedRoute,
+        useValue: new ActivatedRouteStub({ cluster_id: undefined, export_id: undefined })
+      },
+      i18nProviders,
+      SummaryService,
+      CephReleaseNamePipe
+    ]
+  });
 
   beforeEach(() => {
     const summaryService = TestBed.get(SummaryService);
     spyOn(summaryService, 'refresh').and.callFake(() => true);
-    spyOn(summaryService, 'getCurrentSummary').and.callFake(() => {
-      return {
+    spyOn(summaryService, 'subscribeOnce').and.callFake(() =>
+      of({
         version: 'master'
-      };
-    });
+      })
+    );
 
     fixture = TestBed.createComponent(NfsFormComponent);
     component = fixture.componentInstance;
index d152eaa96e611de847ba0e76fc8aa64e9d9141da..8467d46e481b109a408061fe4efd50c32c14abbb 100644 (file)
@@ -18,9 +18,7 @@ import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 import { CdValidators } from '../../../shared/forms/cd-validators';
 import { FinishedTask } from '../../../shared/models/finished-task';
 import { Permission } from '../../../shared/models/permissions';
-import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
-import { SummaryService } from '../../../shared/services/summary.service';
 import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
 import { NfsFormClientComponent } from '../nfs-form-client/nfs-form-client.component';
 
@@ -59,7 +57,6 @@ export class NfsFormComponent implements OnInit {
 
   action: string;
   resource: string;
-  docsUrl: string;
 
   daemonsSelections: SelectOption[] = [];
   daemonsMessages = new SelectMessages(
@@ -85,8 +82,6 @@ export class NfsFormComponent implements OnInit {
     private router: Router,
     private rgwUserService: RgwUserService,
     private formBuilder: CdFormBuilder,
-    private summaryservice: SummaryService,
-    private cephReleaseNamePipe: CephReleaseNamePipe,
     private taskWrapper: TaskWrapperService,
     private cdRef: ChangeDetectorRef,
     private i18n: I18n,
@@ -122,10 +117,6 @@ export class NfsFormComponent implements OnInit {
       this.action = this.actionLabels.CREATE;
       this.getData(promises);
     }
-
-    const summary = this.summaryservice.getCurrentSummary();
-    const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-    this.docsUrl = `http://docs.ceph.com/docs/${releaseName}/radosgw/nfs/`;
   }
 
   getData(promises: Observable<any>[]) {
index 36039aa4d97e85ea97191d943ef1b788699a5a37..4ec262f4cea016f5ff96ecf97b2f1e6d5f6629cb 100644 (file)
@@ -16,6 +16,7 @@ import {
 import { NfsService } from '../../../shared/api/nfs.service';
 import { TableActionsComponent } from '../../../shared/datatable/table-actions/table-actions.component';
 import { ExecutingTask } from '../../../shared/models/executing-task';
+import { Summary } from '../../../shared/models/summary.model';
 import { SummaryService } from '../../../shared/services/summary.service';
 import { TaskListService } from '../../../shared/services/task-list.service';
 import { SharedModule } from '../../../shared/shared.module';
@@ -29,25 +30,22 @@ describe('NfsListComponent', () => {
   let nfsService: NfsService;
   let httpTesting: HttpTestingController;
 
-  const refresh = (data: object) => {
+  const refresh = (data: Summary) => {
     summaryService['summaryDataSource'].next(data);
   };
 
-  configureTestBed(
-    {
-      declarations: [NfsListComponent, NfsDetailsComponent],
-      imports: [
-        BrowserAnimationsModule,
-        HttpClientTestingModule,
-        RouterTestingModule,
-        SharedModule,
-        ToastrModule.forRoot(),
-        TabsModule.forRoot()
-      ],
-      providers: [TaskListService, i18nProviders]
-    },
-    true
-  );
+  configureTestBed({
+    declarations: [NfsListComponent, NfsDetailsComponent],
+    imports: [
+      BrowserAnimationsModule,
+      HttpClientTestingModule,
+      RouterTestingModule,
+      SharedModule,
+      ToastrModule.forRoot(),
+      TabsModule.forRoot()
+    ],
+    providers: [TaskListService, i18nProviders]
+  });
 
   beforeEach(() => {
     fixture = TestBed.createComponent(NfsListComponent);
@@ -73,7 +71,7 @@ describe('NfsListComponent', () => {
     });
 
     it('should load exports on init', () => {
-      refresh({});
+      refresh(new Summary());
       httpTesting.expectOne('api/nfs-ganesha/export');
       expect(nfsService.list).toHaveBeenCalled();
     });
@@ -130,7 +128,7 @@ describe('NfsListComponent', () => {
       addExport('b');
       addExport('c');
       component.exports = exports;
-      refresh({ executing_tasks: [], finished_tasks: [] });
+      refresh({ executing_tasks: [] });
       spyOn(nfsService, 'list').and.callFake(() => of(exports));
       fixture.detectChanges();
 
index 003ec29bef7b200905e59f558ad471312e2784ac..ca2f744ff9bd8fe8d24fbdb210b2115fb4b2f311 100644 (file)
@@ -11,7 +11,8 @@ import {
   configureTestBed,
   FixtureHelper,
   FormHelper,
-  i18nProviders
+  i18nProviders,
+  Mocks
 } from '../../../../testing/unit-test-helper';
 import { CrushRuleService } from '../../../shared/api/crush-rule.service';
 import { CrushNode } from '../../../shared/models/crush-node';
@@ -28,31 +29,6 @@ describe('CrushRuleFormComponent', () => {
   let fixtureHelper: FixtureHelper;
   let data: { names: string[]; nodes: CrushNode[] };
 
-  // Object contains mock functions
-  const mock = {
-    node: (
-      name: string,
-      id: number,
-      type: string,
-      type_id: number,
-      children?: number[],
-      device_class?: string
-    ): CrushNode => {
-      return { name, type, type_id, id, children, device_class };
-    },
-    rule: (
-      name: string,
-      root: string,
-      failure_domain: string,
-      device_class?: string
-    ): CrushRuleConfig => ({
-      name,
-      root,
-      failure_domain,
-      device_class
-    })
-  };
-
   // Object contains functions to get something
   const get = {
     nodeByName: (name: string): CrushNode => data.nodes.find((node) => node.name === name),
@@ -125,25 +101,7 @@ describe('CrushRuleFormComponent', () => {
        * ----> ssd-rack
        * ------> 2x osd-rack with ssd
        */
-      nodes: [
-        // Root node
-        mock.node('default', -1, 'root', 11, [-2, -3]),
-        // SSD host
-        mock.node('ssd-host', -2, 'host', 1, [1, 0, 2]),
-        mock.node('osd.0', 0, 'osd', 0, undefined, 'ssd'),
-        mock.node('osd.1', 1, 'osd', 0, undefined, 'ssd'),
-        mock.node('osd.2', 2, 'osd', 0, undefined, 'ssd'),
-        // SSD and HDD mixed devices host
-        mock.node('mix-host', -3, 'host', 1, [-4, -5]),
-        // HDD rack
-        mock.node('hdd-rack', -4, 'rack', 3, [3, 4]),
-        mock.node('osd2.0', 3, 'osd-rack', 0, undefined, 'hdd'),
-        mock.node('osd2.1', 4, 'osd-rack', 0, undefined, 'hdd'),
-        // SSD rack
-        mock.node('ssd-rack', -5, 'rack', 3, [5, 6]),
-        mock.node('osd2.0', 5, 'osd-rack', 0, undefined, 'ssd'),
-        mock.node('osd2.1', 6, 'osd-rack', 0, undefined, 'ssd')
-      ]
+      nodes: Mocks.getCrushMap()
     };
     spyOn(crushRuleService, 'getInfo').and.callFake(() => of(data));
     fixture.detectChanges();
@@ -254,12 +212,12 @@ describe('CrushRuleFormComponent', () => {
     });
 
     it('creates a rule with only required fields', () => {
-      assert.creation(mock.rule('default-rule', 'default', 'osd-rack'));
+      assert.creation(Mocks.getCrushRuleConfig('default-rule', 'default', 'osd-rack'));
     });
 
     it('creates a rule with all fields', () => {
       assert.valuesOnRootChange('ssd-host', 'osd', 'ssd');
-      assert.creation(mock.rule('ssd-host-rule', 'ssd-host', 'osd', 'ssd'));
+      assert.creation(Mocks.getCrushRuleConfig('ssd-host-rule', 'ssd-host', 'osd', 'ssd'));
     });
   });
 });
index 2628f1f69a42899de41031afac3256fbd7d7a52d..d404bc63d2a318b5b3c2f1f57873b87a8b7812ea 100644 (file)
@@ -12,10 +12,10 @@ import {
   configureTestBed,
   FixtureHelper,
   FormHelper,
-  i18nProviders
+  i18nProviders,
+  Mocks
 } from '../../../../testing/unit-test-helper';
 import { ErasureCodeProfileService } from '../../../shared/api/erasure-code-profile.service';
-import { CrushNode } from '../../../shared/models/crush-node';
 import { ErasureCodeProfile } from '../../../shared/models/erasure-code-profile';
 import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
 import { PoolModule } from '../pool.module';
@@ -29,20 +29,6 @@ describe('ErasureCodeProfileFormModalComponent', () => {
   let fixtureHelper: FixtureHelper;
   let data: {};
 
-  // Object contains mock functions
-  const mock = {
-    node: (
-      name: string,
-      id: number,
-      type: string,
-      type_id: number,
-      children?: number[],
-      device_class?: string
-    ): CrushNode => {
-      return { name, type, type_id, id, children, device_class };
-    }
-  };
-
   configureTestBed({
     imports: [
       HttpClientTestingModule,
@@ -70,34 +56,34 @@ describe('ErasureCodeProfileFormModalComponent', () => {
        * ----> 3x osd with ssd
        * --> mix-host
        * ----> hdd-rack
-       * ------> 2x osd-rack with hdd
+       * ------> 5x osd-rack with hdd
        * ----> ssd-rack
-       * ------> 2x osd-rack with ssd
+       * ------> 5x osd-rack with ssd
        */
       nodes: [
         // Root node
-        mock.node('default', -1, 'root', 11, [-2, -3]),
+        Mocks.getCrushNode('default', -1, 'root', 11, [-2, -3]),
         // SSD host
-        mock.node('ssd-host', -2, 'host', 1, [1, 0, 2]),
-        mock.node('osd.0', 0, 'osd', 0, undefined, 'ssd'),
-        mock.node('osd.1', 1, 'osd', 0, undefined, 'ssd'),
-        mock.node('osd.2', 2, 'osd', 0, undefined, 'ssd'),
+        Mocks.getCrushNode('ssd-host', -2, 'host', 1, [1, 0, 2]),
+        Mocks.getCrushNode('osd.0', 0, 'osd', 0, undefined, 'ssd'),
+        Mocks.getCrushNode('osd.1', 1, 'osd', 0, undefined, 'ssd'),
+        Mocks.getCrushNode('osd.2', 2, 'osd', 0, undefined, 'ssd'),
         // SSD and HDD mixed devices host
-        mock.node('mix-host', -3, 'host', 1, [-4, -5]),
+        Mocks.getCrushNode('mix-host', -3, 'host', 1, [-4, -5]),
         // HDD rack
-        mock.node('hdd-rack', -4, 'rack', 3, [3, 4, 5, 6, 7]),
-        mock.node('osd2.0', 3, 'osd-rack', 0, undefined, 'hdd'),
-        mock.node('osd2.1', 4, 'osd-rack', 0, undefined, 'hdd'),
-        mock.node('osd2.2', 5, 'osd-rack', 0, undefined, 'hdd'),
-        mock.node('osd2.3', 6, 'osd-rack', 0, undefined, 'hdd'),
-        mock.node('osd2.4', 7, 'osd-rack', 0, undefined, 'hdd'),
+        Mocks.getCrushNode('hdd-rack', -4, 'rack', 3, [3, 4, 5, 6, 7]),
+        Mocks.getCrushNode('osd2.0', 3, 'osd-rack', 0, undefined, 'hdd'),
+        Mocks.getCrushNode('osd2.1', 4, 'osd-rack', 0, undefined, 'hdd'),
+        Mocks.getCrushNode('osd2.2', 5, 'osd-rack', 0, undefined, 'hdd'),
+        Mocks.getCrushNode('osd2.3', 6, 'osd-rack', 0, undefined, 'hdd'),
+        Mocks.getCrushNode('osd2.4', 7, 'osd-rack', 0, undefined, 'hdd'),
         // SSD rack
-        mock.node('ssd-rack', -5, 'rack', 3, [8, 9, 10, 11, 12]),
-        mock.node('osd3.0', 8, 'osd-rack', 0, undefined, 'ssd'),
-        mock.node('osd3.1', 9, 'osd-rack', 0, undefined, 'ssd'),
-        mock.node('osd3.2', 10, 'osd-rack', 0, undefined, 'ssd'),
-        mock.node('osd3.3', 11, 'osd-rack', 0, undefined, 'ssd'),
-        mock.node('osd3.4', 12, 'osd-rack', 0, undefined, 'ssd')
+        Mocks.getCrushNode('ssd-rack', -5, 'rack', 3, [8, 9, 10, 11, 12]),
+        Mocks.getCrushNode('osd3.0', 8, 'osd-rack', 0, undefined, 'ssd'),
+        Mocks.getCrushNode('osd3.1', 9, 'osd-rack', 0, undefined, 'ssd'),
+        Mocks.getCrushNode('osd3.2', 10, 'osd-rack', 0, undefined, 'ssd'),
+        Mocks.getCrushNode('osd3.3', 11, 'osd-rack', 0, undefined, 'ssd'),
+        Mocks.getCrushNode('osd3.4', 12, 'osd-rack', 0, undefined, 'ssd')
       ]
     };
     spyOn(ecpService, 'getInfo').and.callFake(() => of(data));
index 67fba23f164565849d13aa1d53cc6384f06e09a1..398a535bf8c6d4cf842cb82ce4820714a6af4a12 100644 (file)
                     *ngIf="form.showError('pgNum', formDir, '34')"
                     i18n>Your cluster can't handle this many PGs. Please recalculate the PG amount needed.</span>
               <span class="form-text text-muted">
-                <a i18n
-                   target="_blank"
-                   href="http://ceph.com/pgcalc">Calculation help</a>
+                <cd-doc section="pgs"
+                        docText="Calculation help"
+                        i18n-docText></cd-doc>
               </span>
               <span class="form-text text-muted"
                     *ngIf="externalPgChange"
               <span class="invalid-feedback"
                     *ngIf="form.showError('size', formDir)"
                     i18n>The size specified is out of range. A value from
-                {{ getMinSize() }} to {{ getMaxSize() }} is valid.</span>
+                {{ getMinSize() }} to {{ getMaxSize() }} is usable.</span>
             </div>
           </div>
 
                        heading="Profile"
                        class="ecp-info">
                     <cd-table-key-value [renderObjects]="true"
+                                        [hideKeys]="['name']"
                                         [data]="form.getValue('erasureProfile')"
                                         [autoReload]="false">
                     </cd-table-key-value>
                     <tab i18n-heading
                          heading="Crush rule"
                          class="crush-rule-info">
-                      <cd-table-key-value [renderObjects]="true"
+                      <cd-table-key-value [renderObjects]="false"
+                                          [hideKeys]="['steps', 'ruleset', 'type', 'rule_name']"
                                           [data]="form.getValue('crushRule')"
                                           [autoReload]="false">
                       </cd-table-key-value>
index c4ee052ae1f555d9c9fd7cc2cb0083b253e5da81..a44571b78281033d625a04d94c7c55a25545bb2f 100644 (file)
@@ -18,6 +18,7 @@ import {
   FixtureHelper,
   FormHelper,
   i18nProviders,
+  Mocks,
   modalServiceShow
 } from '../../../../testing/unit-test-helper';
 import { NotFoundComponent } from '../../../core/not-found/not-found.component';
@@ -27,7 +28,6 @@ import { PoolService } from '../../../shared/api/pool.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
 import { SelectBadgesComponent } from '../../../shared/components/select-badges/select-badges.component';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
-import { CrushRule } from '../../../shared/models/crush-rule';
 import { ErasureCodeProfile } from '../../../shared/models/erasure-code-profile';
 import { Permission } from '../../../shared/models/permissions';
 import { PoolFormInfo } from '../../../shared/models/pool-form-info';
@@ -38,7 +38,7 @@ import { PoolModule } from '../pool.module';
 import { PoolFormComponent } from './pool-form.component';
 
 describe('PoolFormComponent', () => {
-  const OSDS = 8;
+  let OSDS = 15;
   let formHelper: FormHelper;
   let fixtureHelper: FixtureHelper;
   let component: PoolFormComponent;
@@ -65,44 +65,6 @@ describe('PoolFormComponent', () => {
     expect(form.getValue('pgNum')).toBe(returnValue);
   };
 
-  const createCrushRule = ({
-    id = 0,
-    name = 'somePoolName',
-    min = 1,
-    max = 10,
-    type = 'replicated'
-  }: {
-    max?: number;
-    min?: number;
-    id?: number;
-    name?: string;
-    type?: string;
-  }) => {
-    const typeNumber = type === 'erasure' ? 3 : 1;
-    const rule = new CrushRule();
-    rule.max_size = max;
-    rule.min_size = min;
-    rule.rule_id = id;
-    rule.ruleset = typeNumber;
-    rule.rule_name = name;
-    rule.steps = [
-      {
-        item_name: 'default',
-        item: -1,
-        op: 'take'
-      },
-      {
-        num: 0,
-        type: 'osd',
-        op: 'choose_firstn'
-      },
-      {
-        op: 'emit'
-      }
-    ];
-    return rule;
-  };
-
   const expectValidSubmit = (
     pool: any,
     taskName = 'pool/create',
@@ -136,12 +98,12 @@ describe('PoolFormComponent', () => {
       compression_algorithms: ['snappy'],
       compression_modes: ['none', 'passive'],
       crush_rules_replicated: [
-        createCrushRule({ id: 0, min: 2, max: 4, name: 'rep1', type: 'replicated' }),
-        createCrushRule({ id: 1, min: 3, max: 18, name: 'rep2', type: 'replicated' }),
-        createCrushRule({ id: 2, min: 1, max: 9, name: 'used_rule', type: 'replicated' })
+        Mocks.getCrushRule({ id: 0, min: 2, max: 4, name: 'rep1', type: 'replicated' }),
+        Mocks.getCrushRule({ id: 1, min: 3, max: 18, name: 'rep2', type: 'replicated' }),
+        Mocks.getCrushRule({ id: 2, min: 1, max: 9, name: 'used_rule', type: 'replicated' })
       ],
       crush_rules_erasure: [
-        createCrushRule({ id: 3, min: 1, max: 1, name: 'ecp1', type: 'erasure' })
+        Mocks.getCrushRule({ id: 3, min: 1, max: 1, name: 'ecp1', type: 'erasure' })
       ],
       erasure_code_profiles: [ecp1],
       pg_autoscale_default_mode: 'off',
@@ -151,7 +113,8 @@ describe('PoolFormComponent', () => {
       },
       used_profiles: {
         ecp1: ['some.other.pool.uses.it']
-      }
+      },
+      nodes: Mocks.generateSimpleCrushMap(3, 5)
     };
   };
 
@@ -331,15 +294,20 @@ describe('PoolFormComponent', () => {
     });
 
     it('validates size', () => {
+      component.info.nodes = Mocks.getCrushMap();
       formHelper.setValue('poolType', 'replicated');
       formHelper.expectValid('size');
-      formHelper.setValue('crushRule', {
-        min_size: 2,
-        max_size: 6
-      });
+      formHelper.setValue('crushRule', Mocks.getCrushRule({ min: 2, max: 6 })); // 3 OSDs usable
       formHelper.expectErrorChange('size', 1, 'min');
-      formHelper.expectErrorChange('size', 8, 'max');
-      formHelper.expectValidChange('size', 6);
+      formHelper.expectErrorChange('size', 4, 'max'); // More than usable
+      formHelper.expectValidChange('size', 3);
+
+      formHelper.setValue(
+        'crushRule',
+        Mocks.getCrushRule({ min: 1, max: 2, failureDomain: 'osd-rack' }) // 4 OSDs usable
+      );
+      formHelper.expectErrorChange('size', 4, 'max'); // More than rule allows
+      formHelper.expectValidChange('size', 2);
     });
 
     it('validates compression mode default value', () => {
@@ -453,9 +421,6 @@ describe('PoolFormComponent', () => {
   describe('pool type changes', () => {
     beforeEach(() => {
       component.ngOnInit();
-      createCrushRule({ id: 3, min: 1, max: 1, name: 'ep1', type: 'erasure' });
-      createCrushRule({ id: 0, min: 2, max: 4, name: 'rep1', type: 'replicated' });
-      createCrushRule({ id: 1, min: 3, max: 18, name: 'rep2', type: 'replicated' });
     });
 
     it('should have a default replicated size of 3', () => {
@@ -514,7 +479,7 @@ describe('PoolFormComponent', () => {
 
       it('disables rule field if only one rule exists which is used in the disabled field', () => {
         infoReturn.crush_rules_replicated = [
-          createCrushRule({ id: 0, min: 2, max: 4, name: 'rep1', type: 'replicated' })
+          Mocks.getCrushRule({ id: 0, min: 2, max: 4, name: 'rep1', type: 'replicated' })
         ];
         setUpPoolComponent();
         formHelper.setValue('poolType', 'replicated');
@@ -544,10 +509,7 @@ describe('PoolFormComponent', () => {
 
   describe('getMaxSize and getMinSize', () => {
     const setCrushRule = ({ min, max }: { min?: number; max?: number }) => {
-      formHelper.setValue('crushRule', {
-        min_size: min,
-        max_size: max
-      });
+      formHelper.setValue('crushRule', Mocks.getCrushRule({ min, max }));
     };
 
     it('returns 0 if osd count is 0', () => {
@@ -568,23 +530,31 @@ describe('PoolFormComponent', () => {
       expect(component.getMaxSize()).toBe(6);
     });
 
-    it('returns 1 as minimum and the osd count as maximum if no crush rule is available', () => {
+    it('returns 1 as minimum and 3 as maximum if no crush rule is available', () => {
       expect(component.getMinSize()).toBe(1);
-      expect(component.getMaxSize()).toBe(OSDS);
+      expect(component.getMaxSize()).toBe(3);
     });
 
     it('returns the osd count as maximum if the rule maximum exceeds it', () => {
       setCrushRule({ max: 100 });
-      expect(component.getMaxSize()).toBe(OSDS);
+      expect(component.getMaxSize()).toBe(15);
     });
 
     it('should return the osd count as minimum if its lower the the rule minimum', () => {
-      setCrushRule({ min: 10 });
-      expect(component.getMinSize()).toBe(10);
+      setCrushRule({ min: 20 });
+      expect(component.getMinSize()).toBe(20);
       const control = form.get('crushRule');
       expect(control.invalid).toBe(true);
       formHelper.expectError(control, 'tooFewOsds');
     });
+
+    it('should get the right maximum if the device type is defined', () => {
+      formHelper.setValue(
+        'crushRule',
+        Mocks.getCrushRule({ min: 1, max: 5, itemName: 'default~ssd' })
+      );
+      expect(form.getValue('crushRule').usable_size).toBe(5);
+    });
   });
 
   describe('application metadata', () => {
@@ -710,6 +680,7 @@ describe('PoolFormComponent', () => {
 
     describe('pgCalc', () => {
       const PGS = 1;
+      OSDS = 8;
 
       const getValidCase = () => ({
         type: 'replicated',
@@ -816,7 +787,7 @@ describe('PoolFormComponent', () => {
           }
         };
       });
-      infoReturn.crush_rules_replicated.push(createCrushRule({ id: 8, name }));
+      infoReturn.crush_rules_replicated.push(Mocks.getCrushRule({ id: 8, name }));
       component.addCrushRule();
       expect(form.getValue('crushRule').rule_name).toBe(name);
     });
@@ -1329,7 +1300,7 @@ describe('PoolFormComponent', () => {
       pool.quota_max_bytes = 1024 * 1024 * 1024;
       pool.quota_max_objects = 3000;
 
-      createCrushRule({ name: 'someRule' });
+      Mocks.getCrushRule({ name: 'someRule' });
       spyOn(poolService, 'get').and.callFake(() => of(pool));
     });
 
index 47519c0a0a34007aab3c4d81e6f6844676337631..797a58c477866f442b9ecbf7c1b2b00dfd0dbca8 100644 (file)
@@ -12,6 +12,7 @@ import { Observable, Subscription } from 'rxjs';
 import { CrushRuleService } from '../../../shared/api/crush-rule.service';
 import { ErasureCodeProfileService } from '../../../shared/api/erasure-code-profile.service';
 import { PoolService } from '../../../shared/api/pool.service';
+import { CrushNodeSelectionClass } from '../../../shared/classes/crush.node.selection.class';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
 import { SelectOption } from '../../../shared/components/select/select-option.model';
 import { ActionLabelsI18n, URLVerbs } from '../../../shared/constants/app.constants';
@@ -336,6 +337,7 @@ export class PoolFormComponent implements OnInit {
       if (!rule) {
         return;
       }
+      this.setCorrectMaxSize(rule);
       this.crushRuleIsUsedBy(rule.rule_name);
       this.replicatedRuleChange();
       this.pgCalc();
@@ -427,17 +429,16 @@ export class PoolFormComponent implements OnInit {
   }
 
   getMaxSize(): number {
-    if (!this.info || this.info.osd_count < 1) {
+    const rule = this.form.getValue('crushRule');
+    if (!this.info) {
       return 0;
     }
-    const osds: number = this.info.osd_count;
-    if (this.form.getValue('crushRule')) {
-      const max: number = this.form.get('crushRule').value.max_size;
-      if (max < osds) {
-        return max;
-      }
+    if (!rule) {
+      const osds = this.info.osd_count;
+      const defaultSize = 3;
+      return Math.min(osds, defaultSize);
     }
-    return osds;
+    return rule.usable_size;
   }
 
   private pgCalc() {
@@ -458,6 +459,19 @@ export class PoolFormComponent implements OnInit {
     }
   }
 
+  private setCorrectMaxSize(rule: CrushRule = this.form.getValue('crushRule')) {
+    if (!rule) {
+      return;
+    }
+    const domains = CrushNodeSelectionClass.searchFailureDomains(
+      this.info.nodes,
+      rule.steps[0].item_name
+    );
+    const currentDomain = domains[rule.steps[1].type];
+    const usable = currentDomain ? currentDomain.length : rule.max_size;
+    rule.usable_size = Math.min(usable, rule.max_size);
+  }
+
   private replicatedPgCalc(pgs: number): number {
     const sizeControl = this.form.get('size');
     const size = sizeControl.value;
index 8d6205817d81cf50b1e4bab81db7da9b89e95005..5ecf20f33204e654d350bd42e00597e272147da8 100644 (file)
 
     <ng-template #poolUsageTpl
                  let-row="row">
-      <cd-usage-bar *ngIf="row.stats?.max_avail?.latest"
-                    [totalBytes]="row.stats.bytes_used.latest + row.stats.max_avail.latest"
-                    [usedBytes]="row.stats.bytes_used.latest">
+      <cd-usage-bar *ngIf="row.stats?.avail_raw?.latest"
+                    [total]="row.stats.bytes_used.latest + row.stats.avail_raw.latest"
+                    [used]="row.stats.bytes_used.latest"
+                    decimals="2">
       </cd-usage-bar>
     </ng-template>
   </tab>
index 73d0925bc58e1a70b11eef111bd6809f190c1546..165ed7f34e83e9d0b852e84f4d649bf824d35c65 100644 (file)
@@ -199,7 +199,10 @@ describe('PoolListComponent', () => {
 
     beforeEach(() => {
       summaryService = TestBed.get(SummaryService);
-      summaryService['summaryDataSource'].next({ executing_tasks: [], finished_tasks: [] });
+      summaryService['summaryDataSource'].next({
+        executing_tasks: [],
+        finished_tasks: []
+      });
     });
 
     it('gets all pools without executing pools', () => {
@@ -306,6 +309,8 @@ describe('PoolListComponent', () => {
           stats: {
             bytes_used: { latest: 0, rate: 0, rates: [] },
             max_avail: { latest: 0, rate: 0, rates: [] },
+            avail_raw: { latest: 0, rate: 0, rates: [] },
+            percent_used: { latest: 0, rate: 0, rates: [] },
             rd: { latest: 0, rate: 0, rates: [] },
             rd_bytes: { latest: 0, rate: 0, rates: [] },
             wr: { latest: 0, rate: 0, rates: [] },
@@ -325,7 +330,8 @@ describe('PoolListComponent', () => {
       pool = _.merge(pool, {
         stats: {
           bytes_used: { latest: 5, rate: 0, rates: [] },
-          max_avail: { latest: 15, rate: 0, rates: [] },
+          avail_raw: { latest: 15, rate: 0, rates: [] },
+          percent_used: { latest: 0.25, rate: 0, rates: [] },
           rd_bytes: {
             latest: 6,
             rate: 4,
@@ -342,7 +348,8 @@ describe('PoolListComponent', () => {
           pg_status: '8 active+clean, 2 down',
           stats: {
             bytes_used: { latest: 5, rate: 0, rates: [] },
-            max_avail: { latest: 15, rate: 0, rates: [] },
+            avail_raw: { latest: 15, rate: 0, rates: [] },
+            percent_used: { latest: 0.25, rate: 0, rates: [] },
             rd_bytes: { latest: 6, rate: 4, rates: [2, 6] }
           },
           usage: 0.25
index 61fa3585183f4f363213b2383c988b94d10b784b..93958f1b5339eb61f79e04cacb3afe8dee07404e 100644 (file)
@@ -241,7 +241,16 @@ export class PoolListComponent extends ListWithDetails implements OnInit {
   }
 
   transformPoolsData(pools: any) {
-    const requiredStats = ['bytes_used', 'max_avail', 'rd_bytes', 'wr_bytes', 'rd', 'wr'];
+    const requiredStats = [
+      'bytes_used',
+      'max_avail',
+      'avail_raw',
+      'percent_used',
+      'rd_bytes',
+      'wr_bytes',
+      'rd',
+      'wr'
+    ];
     const emptyStat: PoolStat = { latest: 0, rate: 0, rates: [] };
 
     _.forEach(pools, (pool: Pool) => {
@@ -251,8 +260,7 @@ export class PoolListComponent extends ListWithDetails implements OnInit {
         stats[stat] = pool.stats && pool.stats[stat] ? pool.stats[stat] : emptyStat;
       });
       pool['stats'] = stats;
-      const avail = stats.bytes_used.latest + stats.max_avail.latest;
-      pool['usage'] = avail > 0 ? stats.bytes_used.latest / avail : avail;
+      pool['usage'] = stats.percent_used.latest;
 
       if (
         !pool.cdExecuting &&
index f746bf3866ea52d1c95cadc5246e5c584878baf1..9820be94a8de9fb3530d87e994afe0f06504df12 100644 (file)
@@ -7,6 +7,8 @@ export class PoolStat {
 export class PoolStats {
   bytes_used?: PoolStat;
   max_avail?: PoolStat;
+  avail_raw?: PoolStat;
+  percent_used?: PoolStat;
   rd_bytes?: PoolStat;
   wr_bytes?: PoolStat;
   rd?: PoolStat;
index bfec49ceadbe8711651e3848faf8a5fccf29a82c..334d1703b0ef22ea4f9d40cb3d2343b1de1d8164 100644 (file)
@@ -1,6 +1,5 @@
 <cd-alert-panel type="info">
   {{ message }}<br>
-  <ng-container i18n>Please consult the <a href="{{docsUrl}}"
-                                           target="_blank">documentation</a>
-  on how to configure and enable the Object Gateway management functionality.</ng-container>
+  <ng-container i18n>Please consult the <cd-doc section="rgw"></cd-doc> on how
+    to configure and enable the Object Gateway management functionality.</ng-container>
 </cd-alert-panel>
index 67fb868acb453c0bf8470c7b7629c9b2929baa4c..77bea30a6be1e6f7f35f7f96664bbbfd0b9003c9 100644 (file)
@@ -1,41 +1,18 @@
 import { Component, OnDestroy, OnInit } from '@angular/core';
 import { ActivatedRoute } from '@angular/router';
 
-import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
-import { SummaryService } from '../../../shared/services/summary.service';
-
 @Component({
   selector: 'cd-rgw-501',
   templateUrl: './rgw-501.component.html',
   styleUrls: ['./rgw-501.component.scss']
 })
 export class Rgw501Component implements OnInit, OnDestroy {
-  docsUrl: string;
   message = 'The Object Gateway service is not configured.';
   routeParamsSubscribe: any;
 
-  constructor(
-    private route: ActivatedRoute,
-    private summaryService: SummaryService,
-    private cephReleaseNamePipe: CephReleaseNamePipe
-  ) {}
+  constructor(private route: ActivatedRoute) {}
 
   ngOnInit() {
-    const subs = this.summaryService.subscribe((summary: any) => {
-      if (!summary) {
-        return;
-      }
-
-      const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-      this.docsUrl =
-        `http://docs.ceph.com/docs/${releaseName}/mgr/dashboard/` +
-        `#enabling-the-object-gateway-management-frontend`;
-
-      setTimeout(() => {
-        subs.unsubscribe();
-      }, 0);
-    });
-
     this.routeParamsSubscribe = this.route.params.subscribe((params: { message: string }) => {
       this.message = params.message;
     });
index a35475abec4e01613c12571ba8de182e3a947079..a8844d6575e948fa978698ae70eb0d5c4f18ee9c 100644 (file)
                          [selection]="expandedRow">
   </cd-rgw-bucket-details>
 </cd-table>
+
+<ng-template #bucketSizeTpl
+             let-row="row">
+  <cd-usage-bar *ngIf="row.bucket_quota.max_size > 0 && row.bucket_quota.enabled; else noSizeQuota"
+                [total]="row.bucket_quota.max_size"
+                [used]="row.bucket_size">
+  </cd-usage-bar>
+
+  <ng-template #noSizeQuota>No Limit</ng-template>
+</ng-template>
+
+<ng-template #bucketObjectTpl
+             let-row="row">
+  <cd-usage-bar *ngIf="row.bucket_quota.max_objects > 0 && row.bucket_quota.enabled; else noObjectQuota"
+                [total]="row.bucket_quota.max_objects"
+                [used]="row.num_objects"
+                [isBinary]="false">
+  </cd-usage-bar>
+
+  <ng-template #noObjectQuota>No Limit</ng-template>
+</ng-template>
index 98cd5fed526c964f51c770a12bed241573551675..340552b17f188bd98cc9f8acf3b458a4654a87ab 100644 (file)
@@ -5,12 +5,14 @@ import { RouterTestingModule } from '@angular/router/testing';
 
 import { ModalModule } from 'ngx-bootstrap/modal';
 import { TabsModule } from 'ngx-bootstrap/tabs';
+import { of } from 'rxjs';
 
 import {
   configureTestBed,
   i18nProviders,
   PermissionHelper
 } from '../../../../testing/unit-test-helper';
+import { RgwBucketService } from '../../../shared/api/rgw-bucket.service';
 import { TableActionsComponent } from '../../../shared/datatable/table-actions/table-actions.component';
 import { SharedModule } from '../../../shared/shared.module';
 import { RgwBucketDetailsComponent } from '../rgw-bucket-details/rgw-bucket-details.component';
@@ -19,6 +21,8 @@ import { RgwBucketListComponent } from './rgw-bucket-list.component';
 describe('RgwBucketListComponent', () => {
   let component: RgwBucketListComponent;
   let fixture: ComponentFixture<RgwBucketListComponent>;
+  let rgwBucketService: RgwBucketService;
+  let rgwBucketServiceListSpy: jasmine.Spy;
 
   configureTestBed({
     declarations: [RgwBucketListComponent, RgwBucketDetailsComponent],
@@ -34,6 +38,9 @@ describe('RgwBucketListComponent', () => {
   });
 
   beforeEach(() => {
+    rgwBucketService = TestBed.get(RgwBucketService);
+    rgwBucketServiceListSpy = spyOn(rgwBucketService, 'list');
+    rgwBucketServiceListSpy.and.returnValue(of(null));
     fixture = TestBed.createComponent(RgwBucketListComponent);
     component = fixture.componentInstance;
   });
@@ -84,4 +91,86 @@ describe('RgwBucketListComponent', () => {
       }
     });
   });
+
+  it('should test if bucket data is tranformed correctly', () => {
+    rgwBucketServiceListSpy.and.returnValue(
+      of([
+        {
+          bucket: 'bucket',
+          owner: 'testid',
+          usage: {
+            'rgw.main': {
+              size_actual: 4,
+              num_objects: 2
+            },
+            'rgw.another': {
+              size_actual: 6,
+              num_objects: 6
+            }
+          },
+          bucket_quota: {
+            max_size: 20,
+            max_objects: 10,
+            enabled: true
+          }
+        }
+      ])
+    );
+    fixture.detectChanges();
+    expect(component.buckets).toEqual([
+      {
+        bucket: 'bucket',
+        owner: 'testid',
+        usage: {
+          'rgw.main': { size_actual: 4, num_objects: 2 },
+          'rgw.another': { size_actual: 6, num_objects: 6 }
+        },
+        bucket_quota: {
+          max_size: 20,
+          max_objects: 10,
+          enabled: true
+        },
+        bucket_size: 10,
+        num_objects: 8,
+        size_usage: 0.5,
+        object_usage: 0.8
+      }
+    ]);
+  });
+  it('should usage bars only if quota enabled', () => {
+    rgwBucketServiceListSpy.and.returnValue(
+      of([
+        {
+          bucket: 'bucket',
+          owner: 'testid',
+          bucket_quota: {
+            max_size: 1024,
+            max_objects: 10,
+            enabled: true
+          }
+        }
+      ])
+    );
+    fixture.detectChanges();
+    const usageBars = fixture.debugElement.nativeElement.querySelectorAll('cd-usage-bar');
+    expect(usageBars.length).toBe(2);
+  });
+  it('should not show any usage bars if quota disabled', () => {
+    rgwBucketServiceListSpy.and.returnValue(
+      of([
+        {
+          bucket: 'bucket',
+          owner: 'testid',
+          bucket_quota: {
+            max_size: 1024,
+            max_objects: 10,
+            enabled: false
+          }
+        }
+      ])
+    );
+    fixture.detectChanges();
+    const usageBars = fixture.debugElement.nativeElement.querySelectorAll('cd-usage-bar');
+    expect(usageBars.length).toBe(0);
+  });
 });
index 1a99482b5bbe5f0a0b9fec97d5405398cbdf6b33..a1f79c312c88924264a4d3d93d0c77e595ea6011 100644 (file)
@@ -1,6 +1,14 @@
-import { Component, NgZone, ViewChild } from '@angular/core';
+import {
+  ChangeDetectorRef,
+  Component,
+  NgZone,
+  OnInit,
+  TemplateRef,
+  ViewChild
+} from '@angular/core';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
+import * as _ from 'lodash';
 import { BsModalService } from 'ngx-bootstrap/modal';
 import { forkJoin as observableForkJoin, Observable, Subscriber } from 'rxjs';
 
@@ -15,6 +23,8 @@ import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableFetchDataContext } from '../../../shared/models/cd-table-fetch-data-context';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 import { Permission } from '../../../shared/models/permissions';
+import { DimlessBinaryPipe } from '../../../shared/pipes/dimless-binary.pipe';
+import { DimlessPipe } from '../../../shared/pipes/dimless.pipe';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import { URLBuilderService } from '../../../shared/services/url-builder.service';
 
@@ -26,9 +36,13 @@ const BASE_URL = 'rgw/bucket';
   styleUrls: ['./rgw-bucket-list.component.scss'],
   providers: [{ provide: URLBuilderService, useValue: new URLBuilderService(BASE_URL) }]
 })
-export class RgwBucketListComponent extends ListWithDetails {
+export class RgwBucketListComponent extends ListWithDetails implements OnInit {
   @ViewChild(TableComponent, { static: true })
   table: TableComponent;
+  @ViewChild('bucketSizeTpl', { static: true })
+  bucketSizeTpl: TemplateRef<any>;
+  @ViewChild('bucketObjectTpl', { static: true })
+  bucketObjectTpl: TemplateRef<any>;
 
   permission: Permission;
   tableActions: CdTableAction[];
@@ -40,27 +54,18 @@ export class RgwBucketListComponent extends ListWithDetails {
 
   constructor(
     private authStorageService: AuthStorageService,
+    private dimlessBinaryPipe: DimlessBinaryPipe,
+    private dimlessPipe: DimlessPipe,
     private rgwBucketService: RgwBucketService,
     private bsModalService: BsModalService,
     private i18n: I18n,
     private urlBuilder: URLBuilderService,
     public actionLabels: ActionLabelsI18n,
-    private ngZone: NgZone
+    private ngZone: NgZone,
+    private changeDetectorRef: ChangeDetectorRef
   ) {
     super();
     this.permission = this.authStorageService.getPermissions().rgw;
-    this.columns = [
-      {
-        name: this.i18n('Name'),
-        prop: 'bid',
-        flexGrow: 1
-      },
-      {
-        name: this.i18n('Owner'),
-        prop: 'owner',
-        flexGrow: 1
-      }
-    ];
     const getBucketUri = () =>
       this.selection.first() && `${encodeURIComponent(this.selection.first().bid)}`;
     const addAction: CdTableAction = {
@@ -88,6 +93,64 @@ export class RgwBucketListComponent extends ListWithDetails {
     this.timeConditionReached();
   }
 
+  ngOnInit() {
+    this.columns = [
+      {
+        name: this.i18n('Name'),
+        prop: 'bid',
+        flexGrow: 2
+      },
+      {
+        name: this.i18n('Owner'),
+        prop: 'owner',
+        flexGrow: 3
+      },
+      {
+        name: this.i18n('Used Capacity'),
+        prop: 'bucket_size',
+        flexGrow: 0.5,
+        pipe: this.dimlessBinaryPipe
+      },
+      {
+        name: this.i18n('Capacity Limit %'),
+        prop: 'size_usage',
+        cellTemplate: this.bucketSizeTpl,
+        flexGrow: 1
+      },
+      {
+        name: this.i18n('Objects'),
+        prop: 'num_objects',
+        flexGrow: 0.5,
+        pipe: this.dimlessPipe
+      },
+      {
+        name: this.i18n('Object Limit %'),
+        prop: 'object_usage',
+        cellTemplate: this.bucketObjectTpl,
+        flexGrow: 1
+      }
+    ];
+  }
+
+  transformBucketData() {
+    _.forEach(this.buckets, (bucketKey) => {
+      const usageList = bucketKey['usage'];
+      const maxBucketSize = bucketKey['bucket_quota']['max_size'];
+      const maxBucketObjects = bucketKey['bucket_quota']['max_objects'];
+      let totalBucketSize = 0;
+      let numOfObjects = 0;
+      _.forEach(usageList, (usageKey) => {
+        totalBucketSize = totalBucketSize + usageKey.size_actual;
+        numOfObjects = numOfObjects + usageKey.num_objects;
+      });
+      bucketKey['bucket_size'] = totalBucketSize;
+      bucketKey['num_objects'] = numOfObjects;
+      bucketKey['size_usage'] = maxBucketSize > 0 ? totalBucketSize / maxBucketSize : undefined;
+      bucketKey['object_usage'] =
+        maxBucketObjects > 0 ? numOfObjects / maxBucketObjects : undefined;
+    });
+  }
+
   timeConditionReached() {
     clearTimeout(this.staleTimeout);
     this.ngZone.runOutsideAngular(() => {
@@ -105,6 +168,8 @@ export class RgwBucketListComponent extends ListWithDetails {
     this.rgwBucketService.list().subscribe(
       (resp: object[]) => {
         this.buckets = resp;
+        this.transformBucketData();
+        this.changeDetectorRef.detectChanges();
       },
       () => {
         context.error();
index ce638cceb962424905383bc3f1bb680a1874cacd..f7191fbdd7136c8491b864ca7ccee1961d832e9d 100644 (file)
@@ -82,7 +82,8 @@
             <select class="form-control custom-select"
                     formControlName="max_buckets_mode"
                     name="max_buckets_mode"
-                    id="max_buckets_mode">
+                    id="max_buckets_mode"
+                    (change)="onMaxBucketsModeChange($event.target.value)">
               <option i18n
                       value="-1">Disabled</option>
               <option i18n
index 77321d6578b8ba572ba31b78941c9695a7fb781b..c1bf31244eae5df24f0f530cbd61a17980eaa0b8 100644 (file)
@@ -705,4 +705,17 @@ export class RgwUserFormComponent implements OnInit {
     result = _.uniq(result);
     return result;
   }
+
+  onMaxBucketsModeChange(mode: string) {
+    if (mode === '1') {
+      // If 'Custom' mode is selected, then ensure that the form field
+      // 'Max. buckets' contains a valid value. Set it to default if
+      // necessary.
+      if (!this.userForm.get('max_buckets').valid) {
+        this.userForm.patchValue({
+          max_buckets: 1000
+        });
+      }
+    }
+  }
 }
index d16ee7cbe8d38d7d7328d80af5417b508b6bf3de..949b8acf14a26682125ad65b4d09ccb7c19e300f 100644 (file)
@@ -1,5 +1,6 @@
 import { DatePipe } from '@angular/common';
-import { Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';
+import { Component, Input, OnChanges, OnInit, TemplateRef, ViewChild } from '@angular/core';
+
 import { I18n } from '@ngx-translate/i18n-polyfill';
 import { HostService } from '../../../shared/api/host.service';
 import { OsdService } from '../../../shared/api/osd.service';
@@ -12,7 +13,7 @@ import { CdDevice } from '../../../shared/models/devices';
   templateUrl: './device-list.component.html',
   styleUrls: ['./device-list.component.scss']
 })
-export class DeviceListComponent implements OnInit {
+export class DeviceListComponent implements OnChanges, OnInit {
   @Input()
   hostname = '';
   @Input()
@@ -40,12 +41,6 @@ export class DeviceListComponent implements OnInit {
   ) {}
 
   ngOnInit() {
-    const updateDevicesFn = (devices: CdDevice[]) => (this.devices = devices);
-    if (this.hostname) {
-      this.hostService.getDevices(this.hostname).subscribe(updateDevicesFn);
-    } else if (this.osdId !== null) {
-      this.osdService.getDevices(this.osdId).subscribe(updateDevicesFn);
-    }
     this.columns = [
       { prop: 'devid', name: this.i18n('Device ID'), minWidth: 200 },
       {
@@ -79,4 +74,13 @@ export class DeviceListComponent implements OnInit {
       { prop: 'readableDaemons', name: this.i18n('Daemons') }
     ];
   }
+
+  ngOnChanges() {
+    const updateDevicesFn = (devices: CdDevice[]) => (this.devices = devices);
+    if (this.hostname) {
+      this.hostService.getDevices(this.hostname).subscribe(updateDevicesFn);
+    } else if (this.osdId !== null) {
+      this.osdService.getDevices(this.osdId).subscribe(updateDevicesFn);
+    }
+  }
 }
index cf21e749ad70ff4dda40841429e752df5d71970d..c336d26657e6fe579924f089d18b57f86be73411 100755 (executable)
@@ -24,21 +24,18 @@ describe('LoginPasswordFormComponent', () => {
   let authStorageService: AuthStorageService;
   let authService: AuthService;
 
-  configureTestBed(
-    {
-      imports: [
-        HttpClientTestingModule,
-        RouterTestingModule,
-        ReactiveFormsModule,
-        ComponentsModule,
-        ToastrModule.forRoot(),
-        SharedModule
-      ],
-      declarations: [LoginPasswordFormComponent],
-      providers: i18nProviders
-    },
-    true
-  );
+  configureTestBed({
+    imports: [
+      HttpClientTestingModule,
+      RouterTestingModule,
+      ReactiveFormsModule,
+      ComponentsModule,
+      ToastrModule.forRoot(),
+      SharedModule
+    ],
+    declarations: [LoginPasswordFormComponent],
+    providers: i18nProviders
+  });
 
   beforeEach(() => {
     fixture = TestBed.createComponent(LoginPasswordFormComponent);
index 9286e31d30f107ea11a64662cdd9111cbacbda0b..770a4821db177d62bf0d164126d33821916df540 100644 (file)
@@ -1,6 +1,7 @@
 import { Component, OnInit } from '@angular/core';
-import { Router } from '@angular/router';
+import { ActivatedRoute, Router } from '@angular/router';
 
+import * as _ from 'lodash';
 import { BsModalService } from 'ngx-bootstrap/modal';
 
 import { AuthService } from '../../../shared/api/auth.service';
@@ -15,11 +16,13 @@ import { AuthStorageService } from '../../../shared/services/auth-storage.servic
 export class LoginComponent implements OnInit {
   model = new Credentials();
   isLoginActive = false;
+  returnUrl: string;
 
   constructor(
     private authService: AuthService,
     private authStorageService: AuthStorageService,
     private bsModalService: BsModalService,
+    private route: ActivatedRoute,
     private router: Router
   ) {}
 
@@ -64,7 +67,8 @@ export class LoginComponent implements OnInit {
 
   login() {
     this.authService.login(this.model).subscribe(() => {
-      this.router.navigate(['']);
+      const url = _.get(this.route.snapshot.queryParams, 'returnUrl', '/');
+      this.router.navigate([url]);
     });
   }
 }
index 10b5e3b776d720c2b0f830998089f0512cb384b1..3cff98667da42827c3750fa7f0dbda9867cfe7c0 100644 (file)
@@ -31,20 +31,17 @@ describe('RoleFormComponent', () => {
 
   const routes: Routes = [{ path: 'roles', component: FakeComponent }];
 
-  configureTestBed(
-    {
-      imports: [
-        RouterTestingModule.withRoutes(routes),
-        HttpClientTestingModule,
-        ReactiveFormsModule,
-        ToastrModule.forRoot(),
-        SharedModule
-      ],
-      declarations: [RoleFormComponent, FakeComponent],
-      providers: i18nProviders
-    },
-    true
-  );
+  configureTestBed({
+    imports: [
+      RouterTestingModule.withRoutes(routes),
+      HttpClientTestingModule,
+      ReactiveFormsModule,
+      ToastrModule.forRoot(),
+      SharedModule
+    ],
+    declarations: [RoleFormComponent, FakeComponent],
+    providers: i18nProviders
+  });
 
   beforeEach(() => {
     fixture = TestBed.createComponent(RoleFormComponent);
index 78b12deebe73da1d9f2b42c681dba6ccfa15f948..59f32c9cbe689ab446221978175e6de059fddcfe 100644 (file)
@@ -36,7 +36,8 @@
         </div>
 
         <!-- Password -->
-        <div class="form-group row">
+        <div class="form-group row"
+             *ngIf="!authStorageService.isSSO()">
           <label class="cd-col-form-label"
                  for="password">
             <ng-container i18n>Password</ng-container>
@@ -78,7 +79,8 @@
         </div>
 
         <!-- Confirm password -->
-        <div class="form-group row">
+        <div class="form-group row"
+             *ngIf="!authStorageService.isSSO()">
           <label i18n
                  class="cd-col-form-label"
                  for="confirmpassword">Confirm password</label>
                         cdPasswordButton="confirmpassword">
                 </button>
               </span>
+              <span class="invalid-feedback"
+                    *ngIf="userForm.showError('confirmpassword', formDir, 'match')"
+                    i18n>Password confirmation doesn't match the password.</span>
             </div>
             <span class="invalid-feedback"
                   *ngIf="userForm.showError('confirmpassword', formDir, 'required')"
                   i18n>This field is required.</span>
-            <span class="invalid-feedback"
-                  *ngIf="userForm.showError('confirmpassword', formDir, 'match')"
-                  i18n>Password confirmation doesn't match the password.</span>
           </div>
         </div>
 
index 9574504f0fd2c30f3c62cfbc8762513bd9efcdea..bd06b8e7dd2c12f85a0c1ae5e75a0fee2983e399 100644 (file)
@@ -44,23 +44,20 @@ describe('UserFormComponent', () => {
     { path: 'users', component: FakeComponent }
   ];
 
-  configureTestBed(
-    {
-      imports: [
-        RouterTestingModule.withRoutes(routes),
-        HttpClientTestingModule,
-        ReactiveFormsModule,
-        ComponentsModule,
-        ToastrModule.forRoot(),
-        SharedModule,
-        ButtonsModule.forRoot(),
-        BsDatepickerModule.forRoot()
-      ],
-      declarations: [UserFormComponent, FakeComponent],
-      providers: i18nProviders
-    },
-    true
-  );
+  configureTestBed({
+    imports: [
+      RouterTestingModule.withRoutes(routes),
+      HttpClientTestingModule,
+      ReactiveFormsModule,
+      ComponentsModule,
+      ToastrModule.forRoot(),
+      SharedModule,
+      ButtonsModule.forRoot(),
+      BsDatepickerModule.forRoot()
+    ],
+    declarations: [UserFormComponent, FakeComponent],
+    providers: i18nProviders
+  });
 
   beforeEach(() => {
     spyOn(TestBed.get(PasswordPolicyService), 'getHelpText').and.callFake(() => of(''));
index 7ba6a5ade50268aea8289cabe83e5ce4b272c75e..89ed21be83313028405b17d53ad2700805195132 100644 (file)
@@ -20,8 +20,3 @@
     {{ role }}{{ !isLast ? ", " : "" }}
   </span>
 </ng-template>
-
-<ng-template #userEnabledTpl
-             let-value="value">
-  <span>{{ value | booleanText }}</span>
-</ng-template>
index c9f4a0c8ec4646360f4560509d033b6eef6c9f66..82b15d9dbbe8f7539985474e702e26c3393b6dfe 100644 (file)
@@ -30,8 +30,6 @@ const BASE_URL = 'user-management/users';
 export class UserListComponent implements OnInit {
   @ViewChild('userRolesTpl', { static: true })
   userRolesTpl: TemplateRef<any>;
-  @ViewChild('userEnabledTpl', { static: true })
-  userEnabledTpl: TemplateRef<any>;
 
   permission: Permission;
   tableActions: CdTableAction[];
index 31a7d7f971c72193be5e7534c9a019dd56f75e64..44e9201381b5d32059e387c562bb8e8b2a79d197 100644 (file)
@@ -22,21 +22,18 @@ describe('UserPasswordFormComponent', () => {
   let router: Router;
   let authStorageService: AuthStorageService;
 
-  configureTestBed(
-    {
-      imports: [
-        HttpClientTestingModule,
-        RouterTestingModule,
-        ReactiveFormsModule,
-        ComponentsModule,
-        ToastrModule.forRoot(),
-        SharedModule
-      ],
-      declarations: [UserPasswordFormComponent],
-      providers: i18nProviders
-    },
-    true
-  );
+  configureTestBed({
+    imports: [
+      HttpClientTestingModule,
+      RouterTestingModule,
+      ReactiveFormsModule,
+      ComponentsModule,
+      ToastrModule.forRoot(),
+      SharedModule
+    ],
+    declarations: [UserPasswordFormComponent],
+    providers: i18nProviders
+  });
 
   beforeEach(() => {
     fixture = TestBed.createComponent(UserPasswordFormComponent);
index c22507eebed17d9af418e49cdef9b7bde6ebea2c..231929933fe8512004cc67c76eb1fab83b023a3d 100644 (file)
@@ -40,10 +40,7 @@ export class AboutComponent implements OnInit, OnDestroy {
     this.projectConstants = AppConstants;
     this.hostAddr = window.location.hostname;
     this.modalVariables = this.setVariables();
-    this.subs = this.summaryService.subscribe((summary: any) => {
-      if (!summary) {
-        return;
-      }
+    this.subs = this.summaryService.subscribe((summary) => {
       const version = summary.version.replace('ceph version ', '').split(' ');
       this.hostAddr = summary.mgr_host.replace(/(^\w+:|^)\/\//, '').replace(/\/$/, '');
       this.versionNumber = version[0];
index 122bcfd5943d273e85fdad3f76d3f6e2f900dee8..27dda06bc659fee2ee0bceeff9a27655a0af23dc 100644 (file)
       class="dropdown-menu dropdown-menu-right"
       role="menu">
     <li>
-      <a i18n
-         class="dropdown-item"
+      <a class="dropdown-item text-capitalize"
          [ngClass]="{'disabled': !docsUrl}"
          href="{{ docsUrl }}"
-         target="_blank">Documentation</a>
+         target="_blank"
+         i18n>documentation</a>
     </li>
     <li>
       <a i18n
index cb6d0085dc91c514cd7ab7babd75999187aa6730..5d212d6cac43b1ca1f20c5615876db635a9db0bd 100644 (file)
@@ -3,9 +3,8 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
 
 import { Icons } from '../../../shared/enum/icons.enum';
-import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
-import { SummaryService } from '../../../shared/services/summary.service';
+import { DocService } from '../../../shared/services/doc.service';
 import { AboutComponent } from '../about/about.component';
 
 @Component({
@@ -21,24 +20,14 @@ export class DashboardHelpComponent implements OnInit {
   icons = Icons;
 
   constructor(
-    private summaryService: SummaryService,
-    private cephReleaseNamePipe: CephReleaseNamePipe,
     private modalService: BsModalService,
-    private authStorageService: AuthStorageService
+    private authStorageService: AuthStorageService,
+    private docService: DocService
   ) {}
 
   ngOnInit() {
-    const subs = this.summaryService.subscribe((summary: any) => {
-      if (!summary) {
-        return;
-      }
-
-      const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-      this.docsUrl = `http://docs.ceph.com/docs/${releaseName}/mgr/dashboard/`;
-
-      setTimeout(() => {
-        subs.unsubscribe();
-      }, 0);
+    this.docService.subscribeOnce('dashboard', (url: string) => {
+      this.docsUrl = url;
     });
   }
 
index 092770d044b1e2db6c7b54e33cc88e34c4ade727..2a42f711fb55b3ebf294a62b463dadca048c23ff 100644 (file)
@@ -1,4 +1,5 @@
 <cd-pwd-expiration-notification></cd-pwd-expiration-notification>
+<cd-telemetry-notification></cd-telemetry-notification>
 <cd-notifications-sidebar></cd-notifications-sidebar>
 
 <div class="cd-navbar-top">
index 0000dd3337edefed0ed907a6e1f896bdf107ef7c..9c0d8f09d733416476f6242d608f0ecc563ce1de 100644 (file)
@@ -10,7 +10,7 @@
     border-top: 4px solid $color-nav-top-bar;
 
     &.isPwdDisplayed {
-      top: $pwd-exp-height;
+      top: $top-notification-height;
     }
 
     .navbar-brand,
@@ -255,22 +255,25 @@ $sidebar-width: 200px;
 }
 
 /* ---------------------------------------------------
-    isPwdDisplayed
+    topNotification settings
 --------------------------------------------------- */
-:host.isPwdDisplayed {
-  .cd-navbar-top .cd-navbar-brand {
-    top: $pwd-exp-height;
-  }
 
-  #sidebar {
-    top: $navbar-height + $pwd-exp-height;
-  }
+@for $i from 1 through 2 {
+  :host.top-notification-#{$i} {
+    .cd-navbar-top .cd-navbar-brand {
+      top: $top-notification-height * $i;
+    }
 
-  #content {
-    top: $navbar-height + $pwd-exp-height;
-  }
+    #sidebar {
+      top: $navbar-height + $top-notification-height * $i;
+    }
+
+    #content {
+      top: $navbar-height + $top-notification-height * $i;
+    }
 
-  cd-notifications-sidebar {
-    top: $navbar-height + $pwd-exp-height + 10px;
+    cd-notifications-sidebar {
+      top: $navbar-height + $top-notification-height * $i + 10px;
+    }
   }
 }
index 8fa84bf65ae7dc65a65bdf77ff2b3d131925ed07..25fb4d6f7897cf7cadccb66147e51e64158d1655 100644 (file)
@@ -1,10 +1,10 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { By } from '@angular/platform-browser';
 
-import { configureTestSuite } from 'ng-bullet';
 import { MockModule } from 'ng-mocks';
 import { of } from 'rxjs';
 
+import { configureTestBed } from '../../../../testing/unit-test-helper';
 import { Permission, Permissions } from '../../../shared/models/permissions';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import {
@@ -49,23 +49,22 @@ describe('NavigationComponent', () => {
   let component: NavigationComponent;
   let fixture: ComponentFixture<NavigationComponent>;
 
-  configureTestSuite(() => {
-    TestBed.configureTestingModule({
-      declarations: [NavigationComponent],
-      imports: [MockModule(NavigationModule)],
-      providers: [
-        {
-          provide: AuthStorageService,
-          useValue: {
-            getPermissions: jest.fn(),
-            isPwdDisplayed$: { subscribe: jest.fn() }
-          }
-        },
-        { provide: SummaryService, useValue: { subscribe: jest.fn() } },
-        { provide: FeatureTogglesService, useValue: { get: jest.fn() } },
-        { provide: PrometheusAlertService, useValue: { alerts: [] } }
-      ]
-    });
+  configureTestBed({
+    declarations: [NavigationComponent],
+    imports: [MockModule(NavigationModule)],
+    providers: [
+      {
+        provide: AuthStorageService,
+        useValue: {
+          getPermissions: jest.fn(),
+          isPwdDisplayed$: { subscribe: jest.fn() },
+          telemetryNotification$: { subscribe: jest.fn() }
+        }
+      },
+      { provide: SummaryService, useValue: { subscribe: jest.fn() } },
+      { provide: FeatureTogglesService, useValue: { get: jest.fn() } },
+      { provide: PrometheusAlertService, useValue: { alerts: [] } }
+    ]
   });
 
   beforeEach(() => {
@@ -182,4 +181,56 @@ describe('NavigationComponent', () => {
       });
     }
   });
+
+  describe('showTopNotification', () => {
+    const notification1 = 'notificationName1';
+    const notification2 = 'notificationName2';
+
+    beforeEach(() => {
+      component.notifications = [];
+    });
+
+    it('should show notification', () => {
+      component.showTopNotification(notification1, true);
+      expect(component.notifications.includes(notification1)).toBeTruthy();
+      expect(component.notifications.length).toBe(1);
+    });
+
+    it('should not add a second notification if it is already shown', () => {
+      component.showTopNotification(notification1, true);
+      component.showTopNotification(notification1, true);
+      expect(component.notifications.includes(notification1)).toBeTruthy();
+      expect(component.notifications.length).toBe(1);
+    });
+
+    it('should add a second notification if the first one is different', () => {
+      component.showTopNotification(notification1, true);
+      component.showTopNotification(notification2, true);
+      expect(component.notifications.includes(notification1)).toBeTruthy();
+      expect(component.notifications.includes(notification2)).toBeTruthy();
+      expect(component.notifications.length).toBe(2);
+    });
+
+    it('should hide an active notification', () => {
+      component.showTopNotification(notification1, true);
+      expect(component.notifications.includes(notification1)).toBeTruthy();
+      expect(component.notifications.length).toBe(1);
+      component.showTopNotification(notification1, false);
+      expect(component.notifications.length).toBe(0);
+    });
+
+    it('should not fail if it tries to hide an inactive notification', () => {
+      expect(() => component.showTopNotification(notification1, false)).not.toThrow();
+      expect(component.notifications.length).toBe(0);
+    });
+
+    it('should keep other notifications if it hides one', () => {
+      component.showTopNotification(notification1, true);
+      component.showTopNotification(notification2, true);
+      expect(component.notifications.length).toBe(2);
+      component.showTopNotification(notification2, false);
+      expect(component.notifications.length).toBe(1);
+      expect(component.notifications.includes(notification1)).toBeTruthy();
+    });
+  });
 });
index e21c9eeb0887c1c5304aca834eb8a8724366760f..5d45104cb82659df02f8244a94f9af3181e54340 100644 (file)
@@ -11,6 +11,7 @@ import {
 } from '../../../shared/services/feature-toggles.service';
 import { PrometheusAlertService } from '../../../shared/services/prometheus-alert.service';
 import { SummaryService } from '../../../shared/services/summary.service';
+import { TelemetryNotificationService } from '../../../shared/services/telemetry-notification.service';
 
 @Component({
   selector: 'cd-navigation',
@@ -18,7 +19,10 @@ import { SummaryService } from '../../../shared/services/summary.service';
   styleUrls: ['./navigation.component.scss']
 })
 export class NavigationComponent implements OnInit, OnDestroy {
-  @HostBinding('class.isPwdDisplayed') isPwdDisplayed = false;
+  notifications: string[] = [];
+  @HostBinding('class') get class(): string {
+    return 'top-notification-' + this.notifications.length;
+  }
 
   permissions: Permissions;
   enabledFeature$: FeatureTogglesMap$;
@@ -38,6 +42,7 @@ export class NavigationComponent implements OnInit, OnDestroy {
     private authStorageService: AuthStorageService,
     private summaryService: SummaryService,
     private featureToggles: FeatureTogglesService,
+    private telemetryNotificationService: TelemetryNotificationService,
     public prometheusAlertService: PrometheusAlertService
   ) {
     this.permissions = this.authStorageService.getPermissions();
@@ -46,16 +51,23 @@ export class NavigationComponent implements OnInit, OnDestroy {
 
   ngOnInit() {
     this.subs.add(
-      this.summaryService.subscribe((data: any) => {
-        if (!data) {
-          return;
-        }
-        this.summaryData = data;
+      this.summaryService.subscribe((summary) => {
+        this.summaryData = summary;
       })
     );
+    /*
+     Note: If you're going to add more top notifications please do not forget to increase
+     the number of generated css-classes in section topNotification settings in the scss
+     file.
+     */
     this.subs.add(
       this.authStorageService.isPwdDisplayed$.subscribe((isDisplayed) => {
-        this.isPwdDisplayed = isDisplayed;
+        this.showTopNotification('isPwdDisplayed', isDisplayed);
+      })
+    );
+    this.subs.add(
+      this.telemetryNotificationService.update.subscribe((visible: boolean) => {
+        this.showTopNotification('telemetryNotificationEnabled', visible);
       })
     );
   }
@@ -83,4 +95,17 @@ export class NavigationComponent implements OnInit, OnDestroy {
       this.displayedSubMenu = menu;
     }
   }
+
+  showTopNotification(name: string, isDisplayed: boolean) {
+    if (isDisplayed) {
+      if (!this.notifications.includes(name)) {
+        this.notifications.push(name);
+      }
+    } else {
+      const index = this.notifications.indexOf(name);
+      if (index >= 0) {
+        this.notifications.splice(index, 1);
+      }
+    }
+  }
 }
index aaedd546eff48a33d20136f97958840d2c3b9df8..b6cee7649d3b1a9967caf8a94bf13e91c2289dc9 100644 (file)
@@ -23,11 +23,8 @@ export class NotificationsComponent implements OnInit, OnDestroy {
 
   ngOnInit() {
     this.subs.add(
-      this.summaryService.subscribe((data: any) => {
-        if (!data) {
-          return;
-        }
-        this.hasRunningTasks = data.executing_tasks.length > 0;
+      this.summaryService.subscribe((summary) => {
+        this.hasRunningTasks = summary.executing_tasks.length > 0;
       })
     );
   }
index 0f58cd098aff62433a5d97aceb69af524c7901e0..a98eb78bfaae8c6586e8995ffb703bf16e5cf7b5 100644 (file)
@@ -42,4 +42,11 @@ describe('HostService', () => {
     const req = httpTesting.expectOne(`api/host/${hostname}/devices`);
     expect(req.request.method).toBe('GET');
   });
+
+  it('should update host', fakeAsync(() => {
+    service.update('mon0', ['foo', 'bar']).subscribe();
+    const req = httpTesting.expectOne('api/host/mon0');
+    expect(req.request.method).toBe('PUT');
+    expect(req.request.body).toEqual({ labels: ['foo', 'bar'] });
+  }));
 });
index 60e1d3e97ea5d898dc373a73f35e96537b5b08d3..4d296db7835ca46e0b9c86636ed31964345cbb0e 100644 (file)
@@ -43,4 +43,12 @@ export class HostService {
   getDaemons(hostname: string): Observable<Daemon[]> {
     return this.http.get<Daemon[]>(`${this.baseURL}/${hostname}/daemons`);
   }
+
+  getLabels(): Observable<string[]> {
+    return this.http.get<string[]>('ui-api/host/labels');
+  }
+
+  update(hostname: string, labels: string[]) {
+    return this.http.put(`${this.baseURL}/${hostname}`, { labels: labels });
+  }
 }
index 44db3f5c85a206fbb2372c5a71ad350f4da23660..6a55f64e2fe626eb69b5bfa38c73f8db07d06d63 100644 (file)
@@ -55,6 +55,13 @@ describe('OsdService', () => {
     expect(req.request.body).toEqual(post_data);
   });
 
+  it('should call delete', () => {
+    const id = 1;
+    service.delete(id, true, true).subscribe();
+    const req = httpTesting.expectOne(`api/osd/${id}?preserve_id=true&force=true`);
+    expect(req.request.method).toBe('DELETE');
+  });
+
   it('should call getList', () => {
     service.getList().subscribe();
     const req = httpTesting.expectOne('api/osd');
index 8d6369a21623317288a1ca908f2216412292543e..0bd2f370a9b1f6b6633b5a8a2d6b8682c0ceeb7c 100644 (file)
@@ -1,4 +1,4 @@
-import { HttpClient, HttpParams } from '@angular/common/http';
+import { HttpClient } from '@angular/common/http';
 import { Injectable } from '@angular/core';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
@@ -137,10 +137,12 @@ export class OsdService {
     return this.http.post(`${this.path}/${id}/destroy`, null);
   }
 
-  delete(id: number, force?: boolean) {
-    const options = force ? { params: new HttpParams().set('force', 'true') } : {};
-    options['observe'] = 'response';
-    return this.http.delete(`${this.path}/${id}`, options);
+  delete(id: number, preserveId?: boolean, force?: boolean) {
+    const params = {
+      preserve_id: preserveId ? 'true' : 'false',
+      force: force ? 'true' : 'false'
+    };
+    return this.http.delete(`${this.path}/${id}`, { observe: 'response', params: params });
   }
 
   safeToDestroy(ids: string) {
index 37be86346dd0cca9112bf8facdb5fa2adc7fc086..2efa5a7998517549d6a052bcbac23768b6b83b9d 100644 (file)
@@ -27,13 +27,10 @@ describe('RbdMirroringService', () => {
     executing_tasks: [{}]
   };
 
-  configureTestBed(
-    {
-      providers: [RbdMirroringService],
-      imports: [HttpClientTestingModule]
-    },
-    true
-  );
+  configureTestBed({
+    providers: [RbdMirroringService],
+    imports: [HttpClientTestingModule]
+  });
 
   beforeEach(() => {
     service = TestBed.get(RbdMirroringService);
@@ -62,7 +59,7 @@ describe('RbdMirroringService', () => {
     const subs = service.startPolling();
     tick();
     const calledWith: any[] = [];
-    service.subscribeSummary((data: any) => {
+    service.subscribeSummary((data) => {
       calledWith.push(data);
     });
     tick(service.REFRESH_INTERVAL * 2);
@@ -70,23 +67,11 @@ describe('RbdMirroringService', () => {
 
     expect(calls.length).toEqual(3);
     calls.forEach((call: TestRequest) => flushCalls(call));
-    expect(calledWith).toEqual([null, summary]);
+    expect(calledWith).toEqual([summary]);
 
     subs.unsubscribe();
   }));
 
-  it('should get current summary', () => {
-    service.refresh();
-    const calledWith: any[] = [];
-    service.subscribeSummary((data: any) => {
-      calledWith.push(data);
-    });
-    const calls = getMirroringSummaryCalls();
-    calls.forEach((call: TestRequest) => flushCalls(call));
-
-    expect(service.getCurrentSummary()).toEqual(summary);
-  });
-
   it('should get pool config', () => {
     service.getPool('poolName').subscribe();
 
index c1f069323be2480efcd39cd5380acb08679b7e95..6a378b359971a691d3f03be0de060f6a5edd3562 100644 (file)
@@ -2,8 +2,10 @@ import { HttpClient } from '@angular/common/http';
 import { Injectable } from '@angular/core';
 
 import { BehaviorSubject, Observable, Subscription } from 'rxjs';
+import { filter } from 'rxjs/operators';
 
 import { cdEncode, cdEncodeNot } from '../decorators/cd-encode';
+import { MirroringSummary } from '../models/mirroring-summary';
 import { TimerService } from '../services/timer.service';
 import { ApiModule } from './api.module';
 
@@ -14,7 +16,7 @@ import { ApiModule } from './api.module';
 export class RbdMirroringService {
   readonly REFRESH_INTERVAL = 30000;
   // Observable sources
-  private summaryDataSource = new BehaviorSubject(null);
+  private summaryDataSource = new BehaviorSubject<MirroringSummary>(null);
   // Observable streams
   summaryData$ = this.summaryDataSource.asObservable();
 
@@ -30,29 +32,25 @@ export class RbdMirroringService {
     return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver());
   }
 
-  private retrieveSummaryObservable(): Observable<Object> {
+  private retrieveSummaryObservable(): Observable<MirroringSummary> {
     return this.http.get('api/block/mirroring/summary');
   }
 
-  private retrieveSummaryObserver(): (data: any) => void {
+  private retrieveSummaryObserver(): (data: MirroringSummary) => void {
     return (data: any) => {
       this.summaryDataSource.next(data);
     };
   }
 
-  /**
-   * Returns the current value of summaryData
-   */
-  getCurrentSummary(): { [key: string]: any; executing_tasks: object[] } {
-    return this.summaryDataSource.getValue();
-  }
-
   /**
    * Subscribes to the summaryData,
    * which is updated periodically or when a new task is created.
    */
-  subscribeSummary(next: (summary: any) => void, error?: (error: any) => void): Subscription {
-    return this.summaryData$.subscribe(next, error);
+  subscribeSummary(
+    next: (summary: MirroringSummary) => void,
+    error?: (error: any) => void
+  ): Subscription {
+    return this.summaryData$.pipe(filter((value) => !!value)).subscribe(next, error);
   }
 
   getPool(poolName: string) {
index 86b8c06e503a25c667400c95729d555d21c969fd..dd73fe9cd0e2603dcd16f7d09e17cfad24a6b3a3 100644 (file)
@@ -11,13 +11,10 @@ describe('SettingsService', () => {
   const exampleUrl = 'api/settings/something';
   const exampleValue = 'http://localhost:3000';
 
-  configureTestBed(
-    {
-      providers: [SettingsService],
-      imports: [HttpClientTestingModule]
-    },
-    true
-  );
+  configureTestBed({
+    providers: [SettingsService],
+    imports: [HttpClientTestingModule]
+  });
 
   beforeEach(() => {
     service = TestBed.get(SettingsService);
index f9a675b48bf483565065722c842caae049226b2f..fd67cdec30c0f888ab7b5e6233654dbdd4e074fb 100644 (file)
@@ -1,93 +1,29 @@
 import { FormControl } from '@angular/forms';
 
-import { configureTestBed } from '../../../testing/unit-test-helper';
+import * as _ from 'lodash';
+
+import { configureTestBed, Mocks } from '../../../testing/unit-test-helper';
 import { CrushNode } from '../models/crush-node';
-import { CrushRuleConfig } from '../models/crush-rule';
 import { CrushNodeSelectionClass } from './crush.node.selection.class';
 
 describe('CrushNodeSelectionService', () => {
-  let service: CrushNodeSelectionClass;
+  const nodes = Mocks.getCrushMap();
 
+  let service: CrushNodeSelectionClass;
   let controls: {
     root: FormControl;
     failure: FormControl;
     device: FormControl;
   };
 
-  // Object contains mock functions
-  const mock = {
-    node: (
-      name: string,
-      id: number,
-      type: string,
-      type_id: number,
-      children?: number[],
-      device_class?: string
-    ): CrushNode => {
-      return { name, type, type_id, id, children, device_class };
-    },
-    rule: (
-      name: string,
-      root: string,
-      failure_domain: string,
-      device_class?: string
-    ): CrushRuleConfig => ({
-      name,
-      root,
-      failure_domain,
-      device_class
-    }),
-    nodes: [] as CrushNode[]
-  };
-
-  /**
-   * Create the following test crush map:
-   * > default
-   * --> ssd-host
-   * ----> 3x osd with ssd
-   * --> mix-host
-   * ----> hdd-rack
-   * ------> 2x osd-rack with hdd
-   * ----> ssd-rack
-   * ------> 2x osd-rack with ssd
-   */
-  mock.nodes = [
-    // Root node
-    mock.node('default', -1, 'root', 11, [-2, -3]),
-    // SSD host
-    mock.node('ssd-host', -2, 'host', 1, [1, 0, 2]),
-    mock.node('osd.0', 0, 'osd', 0, undefined, 'ssd'),
-    mock.node('osd.1', 1, 'osd', 0, undefined, 'ssd'),
-    mock.node('osd.2', 2, 'osd', 0, undefined, 'ssd'),
-    // SSD and HDD mixed devices host
-    mock.node('mix-host', -3, 'host', 1, [-4, -5]),
-    // HDD rack
-    mock.node('hdd-rack', -4, 'rack', 3, [3, 4]),
-    mock.node('osd2.0', 3, 'osd-rack', 0, undefined, 'hdd'),
-    mock.node('osd2.1', 4, 'osd-rack', 0, undefined, 'hdd'),
-    // SSD rack
-    mock.node('ssd-rack', -5, 'rack', 3, [5, 6]),
-    mock.node('osd2.0', 5, 'osd-rack', 0, undefined, 'ssd'),
-    mock.node('osd2.1', 6, 'osd-rack', 0, undefined, 'ssd')
-  ];
-
   // Object contains functions to get something
   const get = {
-    nodeByName: (name: string): CrushNode => mock.nodes.find((node) => node.name === name),
+    nodeByName: (name: string): CrushNode => nodes.find((node) => node.name === name),
     nodesByNames: (names: string[]): CrushNode[] => names.map(get.nodeByName)
   };
 
   // Expects that are used frequently
   const assert = {
-    failureDomains: (nodes: CrushNode[], types: string[]) => {
-      const expectation = {};
-      types.forEach((type) => (expectation[type] = nodes.filter((node) => node.type === type)));
-      const keys = service.failureDomainKeys;
-      expect(keys).toEqual(types);
-      keys.forEach((key) => {
-        expect(service.failureDomains[key].length).toBe(expectation[key].length);
-      });
-    },
     formFieldValues: (root: CrushNode, failureDomain: string, device: string) => {
       expect(controls.root.value).toEqual(root);
       expect(controls.failure.value).toBe(failureDomain);
@@ -101,6 +37,19 @@ describe('CrushNodeSelectionService', () => {
       const node = get.nodeByName(rootName);
       controls.root.setValue(node);
       assert.formFieldValues(node, expectedFailureDomain, expectedDevice);
+    },
+    failureDomainNodes: (
+      failureDomains: { [failureDomain: string]: CrushNode[] },
+      expected: { [failureDomains: string]: string[] | CrushNode[] }
+    ) => {
+      expect(Object.keys(failureDomains)).toEqual(Object.keys(expected));
+      Object.keys(failureDomains).forEach((key) => {
+        if (_.isString(expected[key][0])) {
+          expect(failureDomains[key]).toEqual(get.nodesByNames(expected[key] as string[]));
+        } else {
+          expect(failureDomains[key]).toEqual(expected[key]);
+        }
+      });
     }
   };
 
@@ -117,12 +66,12 @@ describe('CrushNodeSelectionService', () => {
     // Normally this should be extended by the class using it
     service = new CrushNodeSelectionClass();
     // Therefore to get it working correctly use "this" instead of "service"
-    service.initCrushNodeSelection(mock.nodes, controls.root, controls.failure, controls.device);
+    service.initCrushNodeSelection(nodes, controls.root, controls.failure, controls.device);
   });
 
   it('should be created', () => {
     expect(service).toBeTruthy();
-    expect(mock.nodes.length).toBe(12);
+    expect(nodes.length).toBe(12);
   });
 
   describe('lists', () => {
@@ -134,23 +83,31 @@ describe('CrushNodeSelectionService', () => {
     });
 
     it('has the following lists after init', () => {
-      assert.failureDomains(mock.nodes, ['host', 'osd', 'osd-rack', 'rack']); // Not root as root only exist once
+      assert.failureDomainNodes(service.failureDomains, {
+        host: ['ssd-host', 'mix-host'],
+        osd: ['osd.1', 'osd.0', 'osd.2'],
+        rack: ['hdd-rack', 'ssd-rack'],
+        'osd-rack': ['osd2.0', 'osd2.1', 'osd3.0', 'osd3.1']
+      });
       expect(service.devices).toEqual(['hdd', 'ssd']);
     });
 
     it('has the following lists after selection of ssd-host', () => {
       controls.root.setValue(get.nodeByName('ssd-host'));
-      assert.failureDomains(get.nodesByNames(['osd.0', 'osd.1', 'osd.2']), ['osd']); // Not host as it only exist once
+      assert.failureDomainNodes(service.failureDomains, {
+        // Not host as it only exist once
+        osd: ['osd.1', 'osd.0', 'osd.2']
+      });
       expect(service.devices).toEqual(['ssd']);
     });
 
     it('has the following lists after selection of mix-host', () => {
       controls.root.setValue(get.nodeByName('mix-host'));
       expect(service.devices).toEqual(['hdd', 'ssd']);
-      assert.failureDomains(
-        get.nodesByNames(['hdd-rack', 'ssd-rack', 'osd2.0', 'osd2.1', 'osd2.0', 'osd2.1']),
-        ['osd-rack', 'rack']
-      );
+      assert.failureDomainNodes(service.failureDomains, {
+        rack: ['hdd-rack', 'ssd-rack'],
+        'osd-rack': ['osd2.0', 'osd2.1', 'osd3.0', 'osd3.1']
+      });
     });
   });
 
@@ -204,4 +161,60 @@ describe('CrushNodeSelectionService', () => {
       expect(service.deviceCount).toBe(3);
     });
   });
+
+  describe('search tree', () => {
+    it('returns the following list after searching for mix-host', () => {
+      const subNodes = CrushNodeSelectionClass.search(nodes, 'mix-host');
+      expect(subNodes).toEqual(
+        get.nodesByNames([
+          'mix-host',
+          'hdd-rack',
+          'osd2.0',
+          'osd2.1',
+          'ssd-rack',
+          'osd3.0',
+          'osd3.1'
+        ])
+      );
+    });
+
+    it('returns the following list after searching for mix-host with SSDs', () => {
+      const subNodes = CrushNodeSelectionClass.search(nodes, 'mix-host~ssd');
+      expect(subNodes.map((n) => n.name)).toEqual(['mix-host', 'ssd-rack', 'osd3.0', 'osd3.1']);
+    });
+
+    it('returns an empty array if node can not be found', () => {
+      expect(CrushNodeSelectionClass.search(nodes, 'not-there')).toEqual([]);
+    });
+
+    it('returns the following list after searching for mix-host failure domains', () => {
+      const subNodes = CrushNodeSelectionClass.search(nodes, 'mix-host');
+      assert.failureDomainNodes(CrushNodeSelectionClass.getFailureDomains(subNodes), {
+        host: ['mix-host'],
+        rack: ['hdd-rack', 'ssd-rack'],
+        'osd-rack': ['osd2.0', 'osd2.1', 'osd3.0', 'osd3.1']
+      });
+    });
+
+    it('returns the following list after searching for mix-host failure domains for a specific type', () => {
+      const subNodes = CrushNodeSelectionClass.search(nodes, 'mix-host~hdd');
+      const hddHost = _.cloneDeep(get.nodesByNames(['mix-host'])[0]);
+      hddHost.children = [-4];
+      assert.failureDomainNodes(CrushNodeSelectionClass.getFailureDomains(subNodes), {
+        host: [hddHost],
+        rack: ['hdd-rack'],
+        'osd-rack': ['osd2.0', 'osd2.1']
+      });
+      const ssdHost = _.cloneDeep(get.nodesByNames(['mix-host'])[0]);
+      ssdHost.children = [-5];
+      assert.failureDomainNodes(
+        CrushNodeSelectionClass.searchFailureDomains(nodes, 'mix-host~ssd'),
+        {
+          host: [ssdHost],
+          rack: ['ssd-rack'],
+          'osd-rack': ['osd3.0', 'osd3.1']
+        }
+      );
+    });
+  });
 });
index 7cc11df163fe392dc2f1fb1845693cb93a3b9647..e1cf4b0ec3caf85b564f0fdab3c6d84f79ccb781 100644 (file)
@@ -6,7 +6,7 @@ import { CrushNode } from '../models/crush-node';
 
 export class CrushNodeSelectionClass {
   private nodes: CrushNode[] = [];
-  private easyNodes: { [id: number]: CrushNode } = {};
+  private idTree: { [id: number]: CrushNode } = {};
   private allDevices: string[] = [];
   private controls: {
     root: AbstractControl;
@@ -20,6 +20,102 @@ export class CrushNodeSelectionClass {
   devices: string[] = [];
   deviceCount = 0;
 
+  static searchFailureDomains(
+    nodes: CrushNode[],
+    s: string
+  ): { [failureDomain: string]: CrushNode[] } {
+    return this.getFailureDomains(this.search(nodes, s));
+  }
+
+  /**
+   * Filters crush map for a node and it's tree.
+   * The node name as provided in crush rules attribute item_name is supported.
+   * This means that '$name~$deviceType' can be used and will result in a crush map
+   * that only include buckets with the specified device in use as their leaf.
+   */
+  static search(nodes: CrushNode[], s: string): CrushNode[] {
+    const [search, deviceType] = s.split('~'); // Used inside item_name in crush rules
+    const node = nodes.find((n) => ['name', 'id', 'type'].some((attr) => n[attr] === search));
+    if (!node) {
+      return [];
+    }
+    nodes = this.getSubNodes(node, this.createIdTreeFromNodes(nodes));
+    if (deviceType) {
+      nodes = this.filterNodesByDeviceType(nodes, deviceType);
+    }
+    return nodes;
+  }
+
+  static createIdTreeFromNodes(nodes: CrushNode[]): { [id: number]: CrushNode } {
+    const idTree = {};
+    nodes.forEach((node) => {
+      idTree[node.id] = node;
+    });
+    return idTree;
+  }
+
+  static getSubNodes(node: CrushNode, idTree: { [id: number]: CrushNode }): CrushNode[] {
+    let subNodes = [node]; // Includes parent node
+    if (!node.children) {
+      return subNodes;
+    }
+    node.children.forEach((id) => {
+      const childNode = idTree[id];
+      subNodes = subNodes.concat(this.getSubNodes(childNode, idTree));
+    });
+    return subNodes;
+  }
+
+  static filterNodesByDeviceType(nodes: CrushNode[], deviceType: string): any {
+    let doNotInclude = nodes
+      .filter((n) => n.device_class && n.device_class !== deviceType)
+      .map((n) => n.id);
+    let foundNewNode: boolean;
+    let childrenToRemove = doNotInclude;
+
+    // Filters out all unwanted nodes
+    do {
+      foundNewNode = false;
+      nodes = nodes.filter((n) => !doNotInclude.includes(n.id)); // Unwanted nodes
+      // Find nodes where all children were filtered
+      const toRemoveNext: number[] = [];
+      nodes.forEach((n) => {
+        if (n.children && n.children.every((id) => doNotInclude.includes(id))) {
+          toRemoveNext.push(n.id);
+          foundNewNode = true;
+        }
+      });
+      if (foundNewNode) {
+        doNotInclude = toRemoveNext; // Reduces array length
+        childrenToRemove = childrenToRemove.concat(toRemoveNext);
+      }
+    } while (foundNewNode);
+
+    // Removes filtered out children in all left nodes with children
+    nodes = _.cloneDeep(nodes); // Clone objects to not change original objects
+    nodes = nodes.map((n) => {
+      if (!n.children) {
+        return n;
+      }
+      n.children = n.children.filter((id) => !childrenToRemove.includes(id));
+      return n;
+    });
+
+    return nodes;
+  }
+
+  static getFailureDomains(nodes: CrushNode[]): { [failureDomain: string]: CrushNode[] } {
+    const domains = {};
+    nodes.forEach((node) => {
+      const type = node.type;
+      if (!domains[type]) {
+        domains[type] = [];
+      }
+      domains[type].push(node);
+    });
+    return domains;
+  }
+
   initCrushNodeSelection(
     nodes: CrushNode[],
     rootControl: AbstractControl,
@@ -27,8 +123,9 @@ export class CrushNodeSelectionClass {
     deviceControl: AbstractControl
   ) {
     this.nodes = nodes;
+    this.idTree = CrushNodeSelectionClass.createIdTreeFromNodes(nodes);
     nodes.forEach((node) => {
-      this.easyNodes[node.id] = node;
+      this.idTree[node.id] = node;
     });
     this.buckets = _.sortBy(
       nodes.filter((n) => n.children),
@@ -56,14 +153,8 @@ export class CrushNodeSelectionClass {
   }
 
   private onRootChange() {
-    const nodes = this.getSubNodes(this.controls.root.value);
-    const domains = {};
-    nodes.forEach((node) => {
-      if (!domains[node.type]) {
-        domains[node.type] = [];
-      }
-      domains[node.type].push(node);
-    });
+    const nodes = CrushNodeSelectionClass.getSubNodes(this.controls.root.value, this.idTree);
+    const domains = CrushNodeSelectionClass.getFailureDomains(nodes);
     Object.keys(domains).forEach((type) => {
       if (domains[type].length <= 1) {
         delete domains[type];
@@ -74,18 +165,6 @@ export class CrushNodeSelectionClass {
     this.updateFailureDomain();
   }
 
-  private getSubNodes(node: CrushNode): CrushNode[] {
-    let subNodes = [node]; // Includes parent node
-    if (!node.children) {
-      return subNodes;
-    }
-    node.children.forEach((id) => {
-      const childNode = this.easyNodes[id];
-      subNodes = subNodes.concat(this.getSubNodes(childNode));
-    });
-    return subNodes;
-  }
-
   private updateFailureDomain() {
     let failureDomain = this.getIncludedCustomValue(
       this.controls.failure,
@@ -119,7 +198,9 @@ export class CrushNodeSelectionClass {
 
   private updateDevices(failureDomain: string = this.controls.failure.value) {
     const subNodes = _.flatten(
-      this.failureDomains[failureDomain].map((node) => this.getSubNodes(node))
+      this.failureDomains[failureDomain].map((node) =>
+        CrushNodeSelectionClass.getSubNodes(node, this.idTree)
+      )
     );
     this.allDevices = subNodes.filter((n) => n.device_class).map((n) => n.device_class);
     this.devices = _.uniq(this.allDevices).sort();
index db8b6364e29df9d9e772c59ac538ddd53f87eba7..811e411340a6b9c1d240b30e9d27aab868bb1ebb 100644 (file)
@@ -21,6 +21,7 @@ import { BackButtonComponent } from './back-button/back-button.component';
 import { ConfigOptionComponent } from './config-option/config-option.component';
 import { ConfirmationModalComponent } from './confirmation-modal/confirmation-modal.component';
 import { CriticalConfirmationModalComponent } from './critical-confirmation-modal/critical-confirmation-modal.component';
+import { DocComponent } from './doc/doc.component';
 import { FormModalComponent } from './form-modal/form-modal.component';
 import { GrafanaComponent } from './grafana/grafana.component';
 import { HelperComponent } from './helper/helper.component';
@@ -36,6 +37,7 @@ import { SelectBadgesComponent } from './select-badges/select-badges.component';
 import { SelectComponent } from './select/select.component';
 import { SparklineComponent } from './sparkline/sparkline.component';
 import { SubmitButtonComponent } from './submit-button/submit-button.component';
+import { TelemetryNotificationComponent } from './telemetry-notification/telemetry-notification.component';
 import { UsageBarComponent } from './usage-bar/usage-bar.component';
 import { ViewCacheComponent } from './view-cache/view-cache.component';
 
@@ -80,8 +82,10 @@ import { ViewCacheComponent } from './view-cache/view-cache.component';
     AlertPanelComponent,
     FormModalComponent,
     PwdExpirationNotificationComponent,
+    TelemetryNotificationComponent,
     OrchestratorDocPanelComponent,
-    OrchestratorDocModalComponent
+    OrchestratorDocModalComponent,
+    DocComponent
   ],
   providers: [],
   exports: [
@@ -102,7 +106,9 @@ import { ViewCacheComponent } from './view-cache/view-cache.component';
     ConfigOptionComponent,
     AlertPanelComponent,
     PwdExpirationNotificationComponent,
-    OrchestratorDocPanelComponent
+    TelemetryNotificationComponent,
+    OrchestratorDocPanelComponent,
+    DocComponent
   ],
   entryComponents: [
     ModalComponent,
index 3e2a2663b158434c6ab29e6779dd677305aabdbf..ed834b0897f71556ee2f4d09e7e24c7f8a03eec3 100644 (file)
@@ -25,6 +25,7 @@
           <ng-template #noNames>
             <p i18n>Are you sure that you want to {{ actionDescription | lowercase }} the selected {{ itemDescription }}?</p>
           </ng-template>
+          <ng-container *ngTemplateOutlet="childFormGroupTemplate; context:{form:deletionForm}"></ng-container>
           <div class="form-group">
             <div class="custom-control custom-checkbox">
               <input type="checkbox"
index 868c6d6ea42bd98eabb577e954938874f38115e1..90395214331f3b4b61d89851be12c8bb6abeb28b 100644 (file)
@@ -24,13 +24,19 @@ export class CriticalConfirmationModalComponent implements OnInit {
   itemNames: string[];
   actionDescription = 'delete';
 
+  childFormGroup: CdFormGroup;
+  childFormGroupTemplate: TemplateRef<any>;
+
   constructor(public modalRef: BsModalRef) {}
 
   ngOnInit() {
-    this.deletionForm = new CdFormGroup({
+    const controls = {
       confirmation: new FormControl(false, [Validators.requiredTrue])
-    });
-
+    };
+    if (this.childFormGroup) {
+      controls['child'] = this.childFormGroup;
+    }
+    this.deletionForm = new CdFormGroup(controls);
     if (!(this.submitAction || this.submitActionObservable)) {
       throw new Error('No submit action defined');
     }
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.html b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.html
new file mode 100644 (file)
index 0000000..b90fedc
--- /dev/null
@@ -0,0 +1,2 @@
+<a href="{{ docUrl }}"
+   target="_blank">{{ docText }}</a>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.scss b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.scss
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.spec.ts
new file mode 100644 (file)
index 0000000..a0fc059
--- /dev/null
@@ -0,0 +1,27 @@
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
+import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
+import { DocComponent } from './doc.component';
+
+describe('DocComponent', () => {
+  let component: DocComponent;
+  let fixture: ComponentFixture<DocComponent>;
+
+  configureTestBed({
+    declarations: [DocComponent],
+    imports: [HttpClientTestingModule],
+    providers: [CephReleaseNamePipe, i18nProviders]
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(DocComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/doc/doc.component.ts
new file mode 100644 (file)
index 0000000..355601a
--- /dev/null
@@ -0,0 +1,25 @@
+import { Component, Input, OnInit } from '@angular/core';
+
+import { I18n } from '@ngx-translate/i18n-polyfill';
+
+import { DocService } from '../../../shared/services/doc.service';
+
+@Component({
+  selector: 'cd-doc',
+  templateUrl: './doc.component.html',
+  styleUrls: ['./doc.component.scss']
+})
+export class DocComponent implements OnInit {
+  @Input() section: string;
+  @Input() docText = this.i18n(`documentation`);
+
+  docUrl: string;
+
+  constructor(private docService: DocService, private i18n: I18n) {}
+
+  ngOnInit() {
+    this.docService.subscribeOnce(this.section, (url: string) => {
+      this.docUrl = url;
+    });
+  }
+}
index 651c68b9267772863e0f5cacc1a41222ba5e1e9d..566cd5c7b6b55e6a3076138d19847d8ed28009f1 100755 (executable)
@@ -13,6 +13,7 @@
           <div class="form-group row cd-{{field.name}}-form-group">
             <label *ngIf="field.label"
                    class="cd-col-form-label"
+                   [ngClass]="{'required': field?.required === true}"
                    [for]="field.name">
               {{ field.label }}
             </label>
                       class="form-control custom-select"
                       [id]="field.name"
                       [formControlName]="field.name">
-                <option *ngIf="field.placeholder"
+                <option *ngIf="field?.typeConfig?.placeholder"
                         [ngValue]="null">
-                  {{ field.placeholder }}
+                  {{ field?.typeConfig?.placeholder }}
                 </option>
-                <option *ngFor="let option of field.options"
+                <option *ngFor="let option of field?.typeConfig?.options"
                         [value]="option.value">
                   {{ option.text }}
                 </option>
               </select>
+              <cd-select-badges *ngIf="field.type === 'select-badges'"
+                                [id]="field.name"
+                                [data]="field.value"
+                                [customBadges]="field?.typeConfig?.customBadges"
+                                [options]="field?.typeConfig?.options"
+                                [messages]="field?.typeConfig?.messages">
+              </cd-select-badges>
               <span *ngIf="formGroup.showError(field.name, formDir)"
                     class="invalid-feedback">
                 {{ getError(field) }}
index d6ac94af42aa46bfde559bf338185de903c374e5..a5a29bfbee8509f47be002b3cc48f5a0cf731f20 100644 (file)
@@ -4,17 +4,13 @@
 
 <cd-alert-panel type="info"
                 *ngIf="!grafanaExist"
-                i18n>Please consult the
-  <a href="{{ docsUrl }}"
-     target="_blank">documentation</a> on how to
-  configure and enable the monitoring functionality.</cd-alert-panel>
+                i18n>Please consult the <cd-doc section="grafana"></cd-doc> on
+  how to configure and enable the monitoring functionality.</cd-alert-panel>
 
 <cd-alert-panel type="info"
                 *ngIf="!dashboardExist"
                 i18n>Grafana Dashboard doesn't exist. Please refer to
-  <a href="{{ docsUrl }}"
-     target="_blank">documentation</a> on how to
-  add dashboards to Grafana.</cd-alert-panel>
+  <cd-doc section="grafana"></cd-doc> on how to add dashboards to Grafana.</cd-alert-panel>
 
 <ng-container *ngIf="grafanaExist && dashboardExist">
   <div class="row">
index 409f3b8a1a31242ce1e46c332411d39551c24ee3..f6bc6a42f8ac716a0a4d02cd0a92745630bd2de8 100644 (file)
@@ -10,6 +10,7 @@ import { SummaryService } from '../../../shared/services/summary.service';
 import { SettingsService } from '../../api/settings.service';
 import { CephReleaseNamePipe } from '../../pipes/ceph-release-name.pipe';
 import { AlertPanelComponent } from '../alert-panel/alert-panel.component';
+import { DocComponent } from '../doc/doc.component';
 import { LoadingPanelComponent } from '../loading-panel/loading-panel.component';
 import { GrafanaComponent } from './grafana.component';
 
@@ -18,7 +19,7 @@ describe('GrafanaComponent', () => {
   let fixture: ComponentFixture<GrafanaComponent>;
 
   configureTestBed({
-    declarations: [GrafanaComponent, AlertPanelComponent, LoadingPanelComponent],
+    declarations: [GrafanaComponent, AlertPanelComponent, LoadingPanelComponent, DocComponent],
     imports: [AlertModule.forRoot(), HttpClientTestingModule, RouterTestingModule, FormsModule],
     providers: [CephReleaseNamePipe, SettingsService, SummaryService, i18nProviders]
   });
index 4c4b5ecedfa2d0e462eca0de00bb90f1cff0f8f0..7d8c49095bdc98b786b5da7f2be5fbdd5317bb19 100644 (file)
@@ -4,8 +4,6 @@ import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
 import { I18n } from '@ngx-translate/i18n-polyfill';
 
 import { Icons } from '../../../shared/enum/icons.enum';
-import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
-import { SummaryService } from '../../../shared/services/summary.service';
 import { SettingsService } from '../../api/settings.service';
 
 @Component({
@@ -38,13 +36,9 @@ export class GrafanaComponent implements OnInit, OnChanges {
   @Input()
   uid: string;
 
-  docsUrl: string;
-
   constructor(
-    private summaryService: SummaryService,
     private sanitizer: DomSanitizer,
     private settingsService: SettingsService,
-    private cephReleaseNamePipe: CephReleaseNamePipe,
     private i18n: I18n
   ) {
     this.grafanaTimes = [
@@ -84,10 +78,6 @@ export class GrafanaComponent implements OnInit, OnChanges {
         name: this.i18n('Yesterday'),
         value: 'from=now-1d%2Fd&to=now-1d%2Fd'
       },
-      {
-        name: this.i18n('Today'),
-        value: 'from=now%2Fd&to=now%2Fd'
-      },
       {
         name: this.i18n('Today so far'),
         value: 'from=now%2Fd&to=now'
@@ -108,10 +98,6 @@ export class GrafanaComponent implements OnInit, OnChanges {
         name: this.i18n('Previous week'),
         value: 'from=now-1w%2Fw&to=now-1w%2Fw'
       },
-      {
-        name: this.i18n('This week'),
-        value: 'from=now%2Fw&to=now%2Fw'
-      },
       {
         name: this.i18n('This week so far'),
         value: 'from=now%2Fw&to=now'
@@ -124,10 +110,6 @@ export class GrafanaComponent implements OnInit, OnChanges {
         name: this.i18n('Previous month'),
         value: 'from=now-1M%2FM&to=now-1M%2FM'
       },
-      {
-        name: this.i18n('This month'),
-        value: 'from=now%2FM&to=now%2FM'
-      },
       {
         name: this.i18n('This month so far'),
         value: 'from=now%2FM&to=now'
@@ -152,10 +134,6 @@ export class GrafanaComponent implements OnInit, OnChanges {
         name: this.i18n('Previous year'),
         value: 'from=now-1y%2Fy&to=now-1y%2Fy'
       },
-      {
-        name: this.i18n('This year'),
-        value: 'from=now%2Fy&to=now%2Fy'
-      },
       {
         name: this.i18n('This year so far'),
         value: 'from=now%2Fy&to=now'
@@ -179,20 +157,6 @@ export class GrafanaComponent implements OnInit, OnChanges {
       three: 'grafana_three'
     };
 
-    const subs = this.summaryService.subscribe((summary: any) => {
-      if (!summary) {
-        return;
-      }
-
-      const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-      this.docsUrl =
-        `http://docs.ceph.com/docs/${releaseName}/mgr/dashboard/` +
-        `#enabling-the-embedding-of-grafana-dashboards`;
-
-      setTimeout(() => {
-        subs.unsubscribe();
-      }, 0);
-    });
     this.settingsService.ifSettingConfigured('api/grafana/url', (url) => {
       this.grafanaExist = true;
       this.loading = false;
index 0fdde25b6dc88f60e7db6c837157b05c11756541..5a0f9b603e9e82044a03a436bd4bf0be84d9e350 100644 (file)
@@ -108,15 +108,12 @@ export class NotificationsSidebarComponent implements OnInit, OnDestroy {
     );
 
     this.subs.add(
-      this.summaryService.subscribe((data: any) => {
-        if (!data) {
-          return;
-        }
-        this._handleTasks(data.executing_tasks);
+      this.summaryService.subscribe((summary) => {
+        this._handleTasks(summary.executing_tasks);
 
         this.mutex.acquire().then((release) => {
           _.filter(
-            data.finished_tasks,
+            summary.finished_tasks,
             (task: FinishedTask) => !this.last_task || moment(task.end_time).isAfter(this.last_task)
           ).forEach((task) => {
             const config = this.notificationService.finishedTaskToNotification(task, task.success);
index 5159177ab50623b541b7e2946eba68d26cb59d5d..4c7175910b068360a9733c5edcd903b2d93c7c2d 100644 (file)
@@ -1,5 +1,4 @@
 <cd-alert-panel type="info"
-                i18n>Orchestrator is not available. Please consult the
-  <a href="{{ docsUrl }}"
-     target="_blank">documentation</a> on how to
-  configure and enable the functionality.</cd-alert-panel>
+                i18n>Orchestrator is not available.
+  Please consult the <cd-doc section="orch"></cd-doc> on how to configure and
+  enable the functionality.</cd-alert-panel>
index 484c422314adbf59a50ac18245f553f9641e8b1f..71c94ec7facdc75b569edec5e1547145bfe32a80 100644 (file)
@@ -1,33 +1,8 @@
-import { Component, OnInit } from '@angular/core';
-
-import { CephReleaseNamePipe } from '../../pipes/ceph-release-name.pipe';
-import { SummaryService } from '../../services/summary.service';
+import { Component } from '@angular/core';
 
 @Component({
   selector: 'cd-orchestrator-doc-panel',
   templateUrl: './orchestrator-doc-panel.component.html',
   styleUrls: ['./orchestrator-doc-panel.component.scss']
 })
-export class OrchestratorDocPanelComponent implements OnInit {
-  docsUrl: string;
-
-  constructor(
-    private cephReleaseNamePipe: CephReleaseNamePipe,
-    private summaryService: SummaryService
-  ) {}
-
-  ngOnInit() {
-    const subs = this.summaryService.subscribe((summary: any) => {
-      if (!summary) {
-        return;
-      }
-
-      const releaseName = this.cephReleaseNamePipe.transform(summary.version);
-      this.docsUrl = `http://docs.ceph.com/docs/${releaseName}/mgr/orchestrator/`;
-
-      setTimeout(() => {
-        subs.unsubscribe();
-      }, 0);
-    });
-  }
-}
+export class OrchestratorDocPanelComponent {}
index 36615164bd62f1c2e40393f5babc1cba6e664239..5a43e92e1dce42477e1c61989edeebda1178e9f4 100644 (file)
@@ -1,6 +1,6 @@
 <alert class="no-margin-bottom"
        type="{{ alertType }}"
-       *ngIf="expirationDays != null && expirationDays <= pwdExpirationSettings.pwdExpirationWarning1"
+       *ngIf="displayNotification"
        [dismissible]="true"
        (onClose)="close($event)">
   <div *ngIf="expirationDays === 0"
index 3273a4e84f23d05ac36b39749c829f0bbc6a83a5..7ebd64075eb2638f947bf237ce047d2dd64f4cd2 100644 (file)
@@ -25,6 +25,11 @@ describe('PwdExpirationNotificationComponent', () => {
 
   const routes: Routes = [{ path: 'login', component: FakeComponent }];
 
+  const spyOnDate = (fakeDate: string) => {
+    const dateValue = Date;
+    spyOn(global, 'Date').and.callFake((date) => new dateValue(date ? date : fakeDate));
+  };
+
   configureTestBed({
     declarations: [PwdExpirationNotificationComponent, FakeComponent],
     imports: [
@@ -64,42 +69,29 @@ describe('PwdExpirationNotificationComponent', () => {
     });
 
     it('should calculate password expiration in days', () => {
-      const dateValue = Date;
-      spyOn(global, 'Date').and.callFake((date) => {
-        if (date) {
-          return new dateValue(date);
-        } else {
-          return new Date('2022-02-18T00:00:00.000Z');
-        }
-      });
+      spyOnDate('2022-02-18T00:00:00.000Z');
       component.ngOnInit();
       expect(component['expirationDays']).toBe(4);
     });
 
     it('should set alert type warning correctly', () => {
-      const dateValue = Date;
-      spyOn(global, 'Date').and.callFake((date) => {
-        if (date) {
-          return new dateValue(date);
-        } else {
-          return new Date('2022-02-14T00:00:00.000Z');
-        }
-      });
+      spyOnDate('2022-02-14T00:00:00.000Z');
       component.ngOnInit();
       expect(component['alertType']).toBe('warning');
+      expect(component.displayNotification).toBeTruthy();
     });
 
     it('should set alert type danger correctly', () => {
-      const dateValue = Date;
-      spyOn(global, 'Date').and.callFake((date) => {
-        if (date) {
-          return new dateValue(date);
-        } else {
-          return new Date('2022-02-18T00:00:00.000Z');
-        }
-      });
+      spyOnDate('2022-02-18T00:00:00.000Z');
       component.ngOnInit();
       expect(component['alertType']).toBe('danger');
+      expect(component.displayNotification).toBeTruthy();
+    });
+
+    it('should not display if date is far', () => {
+      spyOnDate('2022-01-01T00:00:00.000Z');
+      component.ngOnInit();
+      expect(component.displayNotification).toBeFalsy();
     });
   });
 
index 0955f52e93657ed8b61bbe33a05b439052542752..c713d4c7b6db19f849bfbbda9b821492a8e60260 100644 (file)
@@ -1,4 +1,4 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnDestroy, OnInit } from '@angular/core';
 
 import { SettingsService } from '../../api/settings.service';
 import { CdPwdExpirationSettings } from '../../models/cd-pwd-expiration-settings';
@@ -9,10 +9,11 @@ import { AuthStorageService } from '../../services/auth-storage.service';
   templateUrl: './pwd-expiration-notification.component.html',
   styleUrls: ['./pwd-expiration-notification.component.scss']
 })
-export class PwdExpirationNotificationComponent implements OnInit {
+export class PwdExpirationNotificationComponent implements OnInit, OnDestroy {
   alertType: string;
   expirationDays: number;
   pwdExpirationSettings: CdPwdExpirationSettings;
+  displayNotification = false;
 
   constructor(
     private settingsService: SettingsService,
@@ -30,12 +31,17 @@ export class PwdExpirationNotificationComponent implements OnInit {
         } else {
           this.alertType = 'warning';
         }
-
-        this.authStorageService.isPwdDisplayedSource.next(true);
+        this.displayNotification =
+          this.expirationDays <= this.pwdExpirationSettings.pwdExpirationWarning1;
+        this.authStorageService.isPwdDisplayedSource.next(this.displayNotification);
       }
     });
   }
 
+  ngOnDestroy() {
+    this.authStorageService.isPwdDisplayedSource.next(false);
+  }
+
   private getExpirationDays(pwdExpirationDate: number): number {
     const current = new Date();
     const expiration = new Date(pwdExpirationDate * 1000);
@@ -44,5 +50,6 @@ export class PwdExpirationNotificationComponent implements OnInit {
 
   close() {
     this.authStorageService.isPwdDisplayedSource.next(false);
+    this.displayNotification = false;
   }
 }
index 95df5bbc93dcaa4c078080c7fae9f569d828f4e4..79778a93d0f1ad86f227a5b6824d0a91725f7cb7 100644 (file)
    placement="bottom"
    container="body"
    outsideClick="true"
-   *ngIf="options.length > 0">
+   *ngIf="customBadges || options.length > 0">
   <ng-content></ng-content>
 </a>
 
 <span class="form-text text-muted float-left"
-      *ngIf="data.length === 0 && options.length > 0">
+      *ngIf="data.length === 0 && !(!customBadges && options.length === 0)">
   {{ messages.empty }}
 </span>
 
 <span class="form-text text-muted  float-left"
-      *ngIf="options.length === 0">
+      *ngIf="!customBadges && options.length === 0">
   {{ messages.noOptions }}
 </span>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.html b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.html
new file mode 100644 (file)
index 0000000..eb31867
--- /dev/null
@@ -0,0 +1,10 @@
+<alert class="no-margin-bottom"
+       type="warning"
+       *ngIf="displayNotification"
+       [dismissible]="true"
+       (onClose)="close($event)">
+  <div i18n>The Telemetry module is not submitting telemetry data at the
+    moment. Click
+  <a routerLink="/telemetry"
+     class="alert-link">here</a> to activate it now.</div>
+</alert>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.scss b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.scss
new file mode 100644 (file)
index 0000000..6862c2f
--- /dev/null
@@ -0,0 +1,3 @@
+::ng-deep .no-margin-bottom {
+  margin-bottom: 0;
+}
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.spec.ts
new file mode 100644 (file)
index 0000000..bc6f36c
--- /dev/null
@@ -0,0 +1,126 @@
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ToastrModule } from 'ngx-toastr';
+import { of } from 'rxjs';
+
+import { AlertModule } from 'ngx-bootstrap/alert';
+
+import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
+import { UserFormModel } from '../../../core/auth/user-form/user-form.model';
+import { MgrModuleService } from '../../api/mgr-module.service';
+import { UserService } from '../../api/user.service';
+import { PipesModule } from '../../pipes/pipes.module';
+import { AuthStorageService } from '../../services/auth-storage.service';
+import { NotificationService } from '../../services/notification.service';
+import { TelemetryNotificationService } from '../../services/telemetry-notification.service';
+import { TelemetryNotificationComponent } from './telemetry-notification.component';
+
+describe('TelemetryActivationNotificationComponent', () => {
+  let component: TelemetryNotificationComponent;
+  let fixture: ComponentFixture<TelemetryNotificationComponent>;
+
+  let authStorageService: AuthStorageService;
+  let userService: UserService;
+  let mgrModuleService: MgrModuleService;
+  let notificationService: NotificationService;
+
+  let isNotificationHiddenSpy: jasmine.Spy;
+  let getUsernameSpy: jasmine.Spy;
+  let userServiceGetSpy: jasmine.Spy;
+  let getConfigSpy: jasmine.Spy;
+
+  const user: UserFormModel = {
+    username: 'username',
+    password: undefined,
+    name: 'User 1',
+    email: 'user1@email.com',
+    roles: ['read-only'],
+    enabled: true,
+    pwdExpirationDate: undefined,
+    pwdUpdateRequired: true
+  };
+  const admin: UserFormModel = {
+    username: 'admin',
+    password: undefined,
+    name: 'User 1',
+    email: 'user1@email.com',
+    roles: ['administrator'],
+    enabled: true,
+    pwdExpirationDate: undefined,
+    pwdUpdateRequired: true
+  };
+  const telemetryEnabledConfig = {
+    enabled: true
+  };
+  const telemetryDisabledConfig = {
+    enabled: false
+  };
+
+  configureTestBed({
+    declarations: [TelemetryNotificationComponent],
+    imports: [AlertModule.forRoot(), HttpClientTestingModule, ToastrModule.forRoot(), PipesModule],
+    providers: [MgrModuleService, UserService, i18nProviders]
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(TelemetryNotificationComponent);
+    component = fixture.componentInstance;
+    authStorageService = TestBed.get(AuthStorageService);
+    userService = TestBed.get(UserService);
+    mgrModuleService = TestBed.get(MgrModuleService);
+    notificationService = TestBed.get(NotificationService);
+
+    isNotificationHiddenSpy = spyOn(component, 'isNotificationHidden').and.returnValue(false);
+    getUsernameSpy = spyOn(authStorageService, 'getUsername').and.returnValue('username');
+    userServiceGetSpy = spyOn(userService, 'get').and.returnValue(of(admin)); // Not the best name but it sounded better than `getSpy`
+    getConfigSpy = spyOn(mgrModuleService, 'getConfig').and.returnValue(
+      of(telemetryDisabledConfig)
+    );
+  });
+
+  it('should create', () => {
+    fixture.detectChanges();
+    expect(component).toBeTruthy();
+  });
+
+  it('should not show notification again if the user closed it before', () => {
+    isNotificationHiddenSpy.and.returnValue(true);
+    fixture.detectChanges();
+    expect(component.displayNotification).toBe(false);
+  });
+
+  it('should not show notification for an user without administrator role', () => {
+    userServiceGetSpy.and.returnValue(of(user));
+    fixture.detectChanges();
+    expect(component.displayNotification).toBe(false);
+  });
+
+  it('should not show notification if the module is enabled already', () => {
+    getUsernameSpy.and.returnValue('admin');
+    getConfigSpy.and.returnValue(of(telemetryEnabledConfig));
+    fixture.detectChanges();
+    expect(component.displayNotification).toBe(false);
+  });
+
+  it('should show the notification if all pre-conditions set accordingly', () => {
+    fixture.detectChanges();
+    expect(component.displayNotification).toBe(true);
+  });
+
+  it('should hide the notification if the user closes it', () => {
+    spyOn(notificationService, 'show');
+    fixture.detectChanges();
+    component.close();
+    expect(notificationService.show).toHaveBeenCalled();
+    expect(localStorage.getItem('telemetry_notification_hidden')).toBe('true');
+  });
+
+  it('should hide the notification if the user logs out', () => {
+    const telemetryNotificationService = TestBed.get(TelemetryNotificationService);
+    spyOn(telemetryNotificationService, 'setVisibility');
+    fixture.detectChanges();
+    component.ngOnDestroy();
+    expect(telemetryNotificationService.setVisibility).toHaveBeenCalledWith(false);
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/telemetry-notification/telemetry-notification.component.ts
new file mode 100644 (file)
index 0000000..974f625
--- /dev/null
@@ -0,0 +1,69 @@
+import { Component, OnDestroy, OnInit } from '@angular/core';
+
+import { I18n } from '@ngx-translate/i18n-polyfill';
+
+import { UserFormModel } from '../../../core/auth/user-form/user-form.model';
+import { MgrModuleService } from '../../api/mgr-module.service';
+import { UserService } from '../../api/user.service';
+import { NotificationType } from '../../enum/notification-type.enum';
+import { AuthStorageService } from '../../services/auth-storage.service';
+import { NotificationService } from '../../services/notification.service';
+import { TelemetryNotificationService } from '../../services/telemetry-notification.service';
+
+@Component({
+  selector: 'cd-telemetry-notification',
+  templateUrl: './telemetry-notification.component.html',
+  styleUrls: ['./telemetry-notification.component.scss']
+})
+export class TelemetryNotificationComponent implements OnInit, OnDestroy {
+  displayNotification = false;
+
+  constructor(
+    private mgrModuleService: MgrModuleService,
+    private authStorageService: AuthStorageService,
+    private userService: UserService,
+    private notificationService: NotificationService,
+    private telemetryNotificationService: TelemetryNotificationService,
+    private i18n: I18n
+  ) {}
+
+  ngOnInit() {
+    this.telemetryNotificationService.update.subscribe((visible: boolean) => {
+      this.displayNotification = visible;
+    });
+
+    if (!this.isNotificationHidden()) {
+      const username = this.authStorageService.getUsername();
+      this.userService.get(username).subscribe((user: UserFormModel) => {
+        if (user.roles.includes('administrator')) {
+          this.mgrModuleService.getConfig('telemetry').subscribe((options) => {
+            if (!options['enabled']) {
+              this.telemetryNotificationService.setVisibility(true);
+            }
+          });
+        }
+      });
+    }
+  }
+
+  ngOnDestroy() {
+    this.telemetryNotificationService.setVisibility(false);
+  }
+
+  isNotificationHidden(): boolean {
+    return localStorage.getItem('telemetry_notification_hidden') === 'true';
+  }
+
+  close() {
+    this.telemetryNotificationService.setVisibility(false);
+    localStorage.setItem('telemetry_notification_hidden', 'true');
+    this.notificationService.show(
+      NotificationType.success,
+      this.i18n('Telemetry activation reminder muted'),
+      this.i18n(
+        'You can activate the module on the Telemetry configuration ' +
+          'page (<b>Dashboard Settings</b> -> <b>Telemetry configuration</b>) at any time.'
+      )
+    );
+  }
+}
index e75d09087843ece0bc4cb07495568dda8024b877..d4ba37b00536d95400e3c48bf883e2f19b56b6df 100644 (file)
@@ -2,11 +2,11 @@
   <table>
     <tr>
       <td class="text-left">Used:&nbsp;</td>
-      <td class="text-right"><strong> {{ usedBytes | dimlessBinary }}</strong></td>
+      <td class="text-right"><strong> {{ isBinary ? (used | dimlessBinary) : (used | dimless) }}</strong></td>
     </tr>
     <tr>
       <td class="text-left">Free:&nbsp;</td>
-      <td class="'text-right"><strong>{{ freeBytes | dimlessBinary }}</strong></td>
+      <td class="'text-right"><strong>{{ isBinary ? (total - used | dimlessBinary) : (total - used | dimless) }}</strong></td>
     </tr>
   </table>
 </ng-template>
@@ -17,7 +17,7 @@
   <div class="progress-bar bg-info"
        role="progressbar"
        [style.width]="usedPercentage + '%'">
-    <span>{{ usedPercentage }}%</span>
+    <span>{{ usedPercentage | number: '1.0-' + decimals }}%</span>
   </div>
   <div class="progress-bar bg-freespace"
        role="progressbar"
index e8b4ddc148eedb7012ffb39bdd4422c94e1a2701..22b485c552575e6b7de15d3efda382bb4ce34e48 100644 (file)
@@ -7,19 +7,21 @@ import { Component, Input, OnChanges } from '@angular/core';
 })
 export class UsageBarComponent implements OnChanges {
   @Input()
-  totalBytes: number;
+  total: number;
   @Input()
-  usedBytes: number;
+  used: number;
+  @Input()
+  isBinary = true;
+  @Input()
+  decimals = 0;
 
   usedPercentage: number;
   freePercentage: number;
-  freeBytes: number;
 
   constructor() {}
 
   ngOnChanges() {
-    this.usedPercentage = Math.round((this.usedBytes / this.totalBytes) * 100);
+    this.usedPercentage = this.total > 0 ? (this.used / this.total) * 100 : 0;
     this.freePercentage = 100 - this.usedPercentage;
-    this.freeBytes = this.totalBytes - this.usedBytes;
   }
 }
index 57714dbae6b14d48eb90cc59084e1592deeb68a9..334f5563eeb5f770e8f5f0fe0e9b895970544f00 100644 (file)
@@ -148,6 +148,6 @@ export class TableActionsComponent implements OnInit {
   }
 
   useDisableDesc(action: CdTableAction) {
-    return action.disableDesc && action.disableDesc();
+    return action.disableDesc && action.disableDesc(this.selection);
   }
 }
index 131977cceadb49b49d2ea0d05f9a249a38344e8f..e50bffcd302ad96c53556f70de5d4fe48d6f014f 100644 (file)
@@ -34,7 +34,7 @@
           {{ selectedFilter.column.name }}
         </a>
         <ul *dropdownMenu
-            class="dropdown-menu px-1"
+            class="dropdown-menu dropdown-menu-right px-1"
             role="menu">
           <li *ngFor="let filter of columnFilters"
               role="menuitem">
@@ -53,7 +53,7 @@
            {{ selectedFilter.value ? selectedFilter.value.formatted: 'Any' }}
         </a>
         <ul *dropdownMenu
-            class="dropdown-menu px-1"
+            class="dropdown-menu dropdown-menu-right px-1"
             role="menu">
           <li *ngFor="let option of selectedFilter.options"
               role="menuitem">
index 4a5f9ae8a6267a2c6f08618c3d83bf378716348e..95fe13a9b750652ee5d136721820b9cd2d1b16e6 100644 (file)
     .datatable-row-detail {
       padding: 20px;
       border-bottom: 2px solid $color-table-header-border;
+      overflow-y: visible !important;
     }
     .expand-collapse-icon {
       display: block;
     }
   }
   .datatable-footer {
+    display: unset !important;
     .selected-count,
     .page-count {
       font-style: italic;
index 32f4cda3e85b845f97355c08db79ced66d2aa24d..91d76151950822095ef88cefb1d186d1a43da8bb 100644 (file)
@@ -9,8 +9,6 @@ import { ToastrService } from 'ngx-toastr';
 export class Copy2ClipboardButtonDirective implements OnInit {
   @Input()
   private cdCopy2ClipboardButton: string;
-  @Input()
-  private formatted = 'no';
 
   constructor(
     private elementRef: ElementRef,
@@ -34,17 +32,15 @@ export class Copy2ClipboardButtonDirective implements OnInit {
   @HostListener('click')
   onClick() {
     try {
-      const tagName = this.formatted === '' ? 'textarea' : 'input';
-      // Create the input to hold our text.
-      const tmpInputElement = document.createElement(tagName);
-      tmpInputElement.value = this.getInputElement().value;
-      document.body.appendChild(tmpInputElement);
-      // Copy text to clipboard.
-      tmpInputElement.select();
-      document.execCommand('copy');
-      // Finally remove the element.
-      document.body.removeChild(tmpInputElement);
-
+      // Checking if we have the clipboard-write permission
+      navigator.permissions
+        .query({ name: 'clipboard-write' as PermissionName })
+        .then((result: any) => {
+          if (result.state === 'granted' || result.state === 'prompt') {
+            // Copy text to clipboard.
+            navigator.clipboard.writeText(this.getInputElement().value);
+          }
+        });
       this.toastr.success('Copied text to the clipboard successfully.');
     } catch (err) {
       this.toastr.error('Failed to copy text to the clipboard.');
index 7b2fe3f941273df3481435fe8d09ff7d2e155588..e327be59a27a45722f8b28f85a14604273611994 100644 (file)
@@ -1,19 +1,32 @@
 import { ValidatorFn } from '@angular/forms';
 
 export class CdFormModalFieldConfig {
+  // --- Generic field properties ---
   name: string;
   // 'binary' will use cdDimlessBinary directive on input element
   // 'select' will use select element
-  type: 'number' | 'text' | 'binary' | 'select';
+  type: 'number' | 'text' | 'binary' | 'select' | 'select-badges';
   label?: string;
   required?: boolean;
   value?: any;
   errors?: { [errorName: string]: string };
   validators: ValidatorFn[];
-  // only for type select
-  placeholder?: string;
-  options?: Array<{
-    text: string;
-    value: any;
-  }>;
+
+  // --- Specific field properties ---
+  typeConfig?: {
+    [prop: string]: any;
+    // 'select':
+    // ---------
+    // placeholder?: string;
+    // options?: Array<{
+    //   text: string;
+    //   value: any;
+    // }>;
+    //
+    // 'select-badges':
+    // ----------------
+    // customBadges: boolean;
+    // options: Array<SelectOption>;
+    // messages: SelectMessages;
+  };
 }
index ac8dcb61a98d05712921687d93dd8b85bf93e113..9af10625ae65bd3226dfeec3ff4cf6b5cee5660e 100644 (file)
@@ -29,7 +29,7 @@ export class CdTableAction {
    * disabled. The specified message will be shown to the user as a button
    * tooltip.
    */
-  disableDesc?: Function;
+  disableDesc?: (_: CdTableSelection) => string | undefined;
 
   /**
    * Defines if the button can become 'primary' (displayed as button and not
index c7c6d56ca0b248396f12cf81c9c34374c84a9b57..83c1db6b6df2a4ec1e5529b1ec6d846c1fa4c621 100644 (file)
@@ -2,6 +2,7 @@ import { CrushStep } from './crush-step';
 
 export class CrushRule {
   max_size: number;
+  usable_size?: number;
   min_size: number;
   rule_id: number;
   rule_name: string;
index 9dc780963ad418b5fa4b43700ddcd994cb528a1b..9e7dd5f98ed583a417bb0ae96f144f677b551dc1 100644 (file)
@@ -2,8 +2,8 @@ import { Task } from './task';
 import { TaskException } from './task-exception';
 
 export class FinishedTask extends Task {
-  begin_time: number;
-  end_time: number;
+  begin_time: string;
+  end_time: string;
   exception: TaskException;
   latency: number;
   progress: number;
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/mirroring-summary.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/mirroring-summary.ts
new file mode 100644 (file)
index 0000000..95327ed
--- /dev/null
@@ -0,0 +1,4 @@
+export interface MirroringSummary {
+  content_data?: any;
+  site_name?: any;
+}
index 4eb09e67c3c1297cd8e9030e4508e5486a05bc64..c5cc0bb6d835f4957630806d6feb9d6795fabf3e 100644 (file)
@@ -1,3 +1,4 @@
+import { CrushNode } from './crush-node';
 import { CrushRule } from './crush-rule';
 import { ErasureCodeProfile } from './erasure-code-profile';
 
@@ -15,4 +16,5 @@ export class PoolFormInfo {
   erasure_code_profiles: ErasureCodeProfile[];
   used_rules: { [rule_name: string]: string[] };
   used_profiles: { [profile_name: string]: string[] };
+  nodes: CrushNode[];
 }
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/summary.model.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/models/summary.model.ts
new file mode 100644 (file)
index 0000000..f2854a0
--- /dev/null
@@ -0,0 +1,15 @@
+import { ExecutingTask } from './executing-task';
+import { FinishedTask } from './finished-task';
+
+export class Summary {
+  executing_tasks?: ExecutingTask[];
+  filesystems?: any[];
+  finished_tasks?: FinishedTask[];
+  have_mon_connection?: boolean;
+  health_status?: string;
+  mgr_host?: string;
+  mgr_id?: string;
+  rbd_mirroring?: any;
+  rbd_pools?: any[];
+  version?: string;
+}
index f23d7dc267009ac99dc4a2b18960c9b415e331a9..796b42b4373ae5a4e6ffb00c77e4ebf6f20aec22 100644 (file)
@@ -1,6 +1,6 @@
 import { Component, NgZone } from '@angular/core';
 import { fakeAsync, TestBed, tick } from '@angular/core/testing';
-import { Router, Routes } from '@angular/router';
+import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, Routes } from '@angular/router';
 import { RouterTestingModule } from '@angular/router/testing';
 
 import { configureTestBed } from '../../../testing/unit-test-helper';
@@ -11,6 +11,8 @@ describe('AuthGuardService', () => {
   let service: AuthGuardService;
   let authStorageService: AuthStorageService;
   let ngZone: NgZone;
+  let route: ActivatedRouteSnapshot;
+  let state: RouterStateSnapshot;
 
   @Component({ selector: 'cd-login', template: '' })
   class LoginComponent {}
@@ -34,16 +36,19 @@ describe('AuthGuardService', () => {
   });
 
   it('should allow the user if loggedIn', () => {
+    route = null;
+    state = { url: '/', root: null };
     spyOn(authStorageService, 'isLoggedIn').and.returnValue(true);
-    expect(service.canActivate()).toBe(true);
+    expect(service.canActivate(route, state)).toBe(true);
   });
 
   it('should prevent user if not loggedIn and redirect to login page', fakeAsync(() => {
     const router = TestBed.get(Router);
+    state = { url: '/pool', root: null };
     ngZone.run(() => {
-      expect(service.canActivate()).toBe(false);
+      expect(service.canActivate(route, state)).toBe(false);
     });
     tick();
-    expect(router.url).toBe('/login');
+    expect(router.url).toBe('/login?returnUrl=%2Fpool');
   }));
 });
index 7e11d9a2d033804488e687e5504b884ede4bfb0d..61c06c81d2bcd9fc8b383a2adfecf835fd6fa656 100644 (file)
@@ -1,5 +1,11 @@
 import { Injectable } from '@angular/core';
-import { CanActivate, CanActivateChild, Router } from '@angular/router';
+import {
+  ActivatedRouteSnapshot,
+  CanActivate,
+  CanActivateChild,
+  Router,
+  RouterStateSnapshot
+} from '@angular/router';
 
 import { AuthStorageService } from './auth-storage.service';
 
@@ -9,15 +15,15 @@ import { AuthStorageService } from './auth-storage.service';
 export class AuthGuardService implements CanActivate, CanActivateChild {
   constructor(private router: Router, private authStorageService: AuthStorageService) {}
 
-  canActivate() {
+  canActivate(_route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
     if (this.authStorageService.isLoggedIn()) {
       return true;
     }
-    this.router.navigate(['/login']);
+    this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
     return false;
   }
 
-  canActivateChild(): boolean {
-    return this.canActivate();
+  canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
+    return this.canActivate(childRoute, state);
   }
 }
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/doc.service.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/doc.service.spec.ts
new file mode 100644 (file)
index 0000000..131d343
--- /dev/null
@@ -0,0 +1,69 @@
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { TestBed } from '@angular/core/testing';
+
+import { Subscriber } from 'rxjs';
+
+import { configureTestBed } from '../../../testing/unit-test-helper';
+import { SharedModule } from '../shared.module';
+import { DocService } from './doc.service';
+
+describe('DocService', () => {
+  let service: DocService;
+
+  configureTestBed({ imports: [HttpClientTestingModule, SharedModule] });
+
+  beforeEach(() => {
+    service = TestBed.get(DocService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+
+  it('should return full URL', () => {
+    expect(service.urlGenerator('foo', 'iscsi')).toBe(
+      'http://docs.ceph.com/docs/foo/mgr/dashboard/#enabling-iscsi-management'
+    );
+  });
+
+  describe('Name of the group', () => {
+    let result: string;
+    let i: number;
+
+    const nextSummary = (newData: any) => service['releaseDataSource'].next(newData);
+
+    const callback = (response: string) => {
+      i++;
+      result = response;
+    };
+
+    beforeEach(() => {
+      i = 0;
+      result = undefined;
+      nextSummary(undefined);
+    });
+
+    it('should call subscribeOnce without releaseName', () => {
+      const subscriber = service.subscribeOnce('prometheus', callback);
+
+      expect(subscriber).toEqual(jasmine.any(Subscriber));
+      expect(i).toBe(0);
+      expect(result).toEqual(undefined);
+    });
+
+    it('should call subscribeOnce with releaseName', () => {
+      const subscriber = service.subscribeOnce('prometheus', callback);
+
+      expect(subscriber).toEqual(jasmine.any(Subscriber));
+      expect(i).toBe(0);
+      expect(result).toEqual(undefined);
+
+      nextSummary('foo');
+      expect(result).toEqual(
+        'http://docs.ceph.com/docs/foo/mgr/dashboard/#enabling-prometheus-alerting'
+      );
+      expect(i).toBe(1);
+      expect(subscriber.closed).toBe(true);
+    });
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/doc.service.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/doc.service.ts
new file mode 100644 (file)
index 0000000..4d3ab0f
--- /dev/null
@@ -0,0 +1,57 @@
+import { Injectable } from '@angular/core';
+
+import { BehaviorSubject, Subscription } from 'rxjs';
+import { filter, first, map } from 'rxjs/operators';
+
+import { CephReleaseNamePipe } from '../pipes/ceph-release-name.pipe';
+import { SummaryService } from './summary.service';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class DocService {
+  private releaseDataSource = new BehaviorSubject<string>(null);
+  releaseData$ = this.releaseDataSource.asObservable();
+
+  constructor(
+    private summaryservice: SummaryService,
+    private cephReleaseNamePipe: CephReleaseNamePipe
+  ) {
+    this.summaryservice.subscribeOnce((summary) => {
+      const releaseName = this.cephReleaseNamePipe.transform(summary.version);
+      this.releaseDataSource.next(releaseName);
+    });
+  }
+
+  urlGenerator(release: string, section: string): string {
+    const domain = `http://docs.ceph.com/docs/${release}/`;
+
+    const sections = {
+      iscsi: `${domain}mgr/dashboard/#enabling-iscsi-management`,
+      prometheus: `${domain}mgr/dashboard/#enabling-prometheus-alerting`,
+      'nfs-ganesha': `${domain}mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard`,
+      'rgw-nfs': `${domain}radosgw/nfs`,
+      rgw: `${domain}mgr/dashboard/#enabling-the-object-gateway-management-frontend`,
+      dashboard: `${domain}mgr/dashboard`,
+      grafana: `${domain}mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards`,
+      orch: `${domain}mgr/orchestrator`,
+      pgs: `http://ceph.com/pgcalc`
+    };
+
+    return sections[section];
+  }
+
+  subscribeOnce(
+    section: string,
+    next: (release: string) => void,
+    error?: (error: any) => void
+  ): Subscription {
+    return this.releaseData$
+      .pipe(
+        filter((value) => !!value),
+        map((release) => this.urlGenerator(release, section)),
+        first()
+      )
+      .subscribe(next, error);
+  }
+}
index 9912d67bea5e4cf76869afbcc030bab3ca103ab8..f1fbcd38baba986f7dddfcd749f909c5d91d68e4 100644 (file)
@@ -39,14 +39,11 @@ describe('ModuleStatusGuardService', () => {
     expect(router.url).toBe(urlResult);
   };
 
-  configureTestBed(
-    {
-      imports: [RouterTestingModule.withRoutes(routes)],
-      providers: [ModuleStatusGuardService, { provide: HttpClient, useValue: fakeService }],
-      declarations: [FooComponent]
-    },
-    true
-  );
+  configureTestBed({
+    imports: [RouterTestingModule.withRoutes(routes)],
+    providers: [ModuleStatusGuardService, { provide: HttpClient, useValue: fakeService }],
+    declarations: [FooComponent]
+  });
 
   beforeEach(() => {
     service = TestBed.get(ModuleStatusGuardService);
index 100beefd2fb2516bb29d905600f76e0521e6a7b0..14144921ef1819156a6227d351fd6558ee7d0636 100644 (file)
@@ -6,6 +6,7 @@ import { of as observableOf, Subscriber, Subscription } from 'rxjs';
 
 import { configureTestBed } from '../../../testing/unit-test-helper';
 import { ExecutingTask } from '../models/executing-task';
+import { Summary } from '../models/summary.model';
 import { AuthStorageService } from './auth-storage.service';
 import { SummaryService } from './summary.service';
 
@@ -14,7 +15,7 @@ describe('SummaryService', () => {
   let authStorageService: AuthStorageService;
   let subs: Subscription;
 
-  const summary: Record<string, any> = {
+  const summary: Summary = {
     executing_tasks: [],
     health_status: 'HEALTH_OK',
     mgr_id: 'x',
@@ -29,6 +30,8 @@ describe('SummaryService', () => {
     get: () => observableOf(summary)
   };
 
+  const nextSummary = (newData: any) => summaryService['summaryDataSource'].next(newData);
+
   configureTestBed({
     imports: [RouterTestingModule],
     providers: [
@@ -66,23 +69,71 @@ describe('SummaryService', () => {
     subs.unsubscribe();
   }));
 
-  describe('Should test methods after first refresh', () => {
+  describe('Should test subscribe without initial value', () => {
+    let result: Summary;
+    let i: number;
+
+    const callback = (response: Summary) => {
+      i++;
+      result = response;
+    };
+
     beforeEach(() => {
-      authStorageService.set('foobar', undefined, undefined);
-      summaryService.refresh();
+      i = 0;
+      result = undefined;
+      nextSummary(undefined);
     });
 
-    it('should call getCurrentSummary', () => {
-      expect(summaryService.getCurrentSummary()).toEqual(summary);
+    it('should call subscribeOnce', () => {
+      const subscriber = summaryService.subscribeOnce(callback);
+
+      expect(subscriber).toEqual(jasmine.any(Subscriber));
+      expect(i).toBe(0);
+      expect(result).toEqual(undefined);
+
+      nextSummary(undefined);
+      expect(i).toBe(0);
+      expect(result).toEqual(undefined);
+      expect(subscriber.closed).toBe(false);
+
+      nextSummary(summary);
+      expect(result).toEqual(summary);
+      expect(i).toBe(1);
+      expect(subscriber.closed).toBe(true);
+
+      nextSummary(summary);
+      expect(result).toEqual(summary);
+      expect(i).toBe(1);
     });
 
     it('should call subscribe', () => {
-      let result;
-      const subscriber = summaryService.subscribe((data) => {
-        result = data;
-      });
+      const subscriber = summaryService.subscribe(callback);
+
       expect(subscriber).toEqual(jasmine.any(Subscriber));
+      expect(i).toBe(0);
+      expect(result).toEqual(undefined);
+
+      nextSummary(undefined);
+      expect(i).toBe(0);
+      expect(result).toEqual(undefined);
+      expect(subscriber.closed).toBe(false);
+
+      nextSummary(summary);
+      expect(result).toEqual(summary);
+      expect(i).toBe(1);
+      expect(subscriber.closed).toBe(false);
+
+      nextSummary(summary);
       expect(result).toEqual(summary);
+      expect(i).toBe(2);
+      expect(subscriber.closed).toBe(false);
+    });
+  });
+
+  describe('Should test methods after first refresh', () => {
+    beforeEach(() => {
+      authStorageService.set('foobar', undefined, undefined);
+      summaryService.refresh();
     });
 
     it('should call addRunningTask', () => {
@@ -92,7 +143,11 @@ describe('SummaryService', () => {
           image_name: 'someImage'
         })
       );
-      const result = summaryService.getCurrentSummary();
+      let result: any;
+      summaryService.subscribeOnce((response) => {
+        result = response;
+      });
+
       expect(result.executing_tasks.length).toBe(1);
       expect(result.executing_tasks[0]).toEqual({
         metadata: { image_name: 'someImage', pool_name: 'somePool' },
@@ -101,19 +156,23 @@ describe('SummaryService', () => {
     });
 
     it('should call addRunningTask with duplicate task', () => {
-      let result = summaryService.getCurrentSummary();
+      let result: any;
+      summaryService.subscribe((response) => {
+        result = response;
+      });
+
       const exec_task = new ExecutingTask('rbd/delete', {
         pool_name: 'somePool',
         image_name: 'someImage'
       });
 
       result.executing_tasks = [exec_task];
-      summaryService['summaryDataSource'].next(result);
-      result = summaryService.getCurrentSummary();
+      nextSummary(result);
+
       expect(result.executing_tasks.length).toBe(1);
 
       summaryService.addRunningTask(exec_task);
-      result = summaryService.getCurrentSummary();
+
       expect(result.executing_tasks.length).toBe(1);
     });
   });
index 2603841921409c4171f50ff39b5312d947937144..a0783402773751cd8056019723a949a9a33a60d7 100644 (file)
@@ -3,8 +3,10 @@ import { Injectable } from '@angular/core';
 
 import * as _ from 'lodash';
 import { BehaviorSubject, Observable, Subscription } from 'rxjs';
+import { filter, first } from 'rxjs/operators';
 
 import { ExecutingTask } from '../models/executing-task';
+import { Summary } from '../models/summary.model';
 import { TimerService } from './timer.service';
 
 @Injectable({
@@ -13,7 +15,7 @@ import { TimerService } from './timer.service';
 export class SummaryService {
   readonly REFRESH_INTERVAL = 5000;
   // Observable sources
-  private summaryDataSource = new BehaviorSubject(null);
+  private summaryDataSource = new BehaviorSubject<Summary>(null);
   // Observable streams
   summaryData$ = this.summaryDataSource.asObservable();
 
@@ -29,29 +31,35 @@ export class SummaryService {
     return this.retrieveSummaryObservable().subscribe(this.retrieveSummaryObserver());
   }
 
-  private retrieveSummaryObservable(): Observable<Object> {
-    return this.http.get('api/summary');
+  private retrieveSummaryObservable(): Observable<Summary> {
+    return this.http.get<Summary>('api/summary');
   }
 
-  private retrieveSummaryObserver(): (data: any) => void {
-    return (data: Object) => {
+  private retrieveSummaryObserver(): (data: Summary) => void {
+    return (data: Summary) => {
       this.summaryDataSource.next(data);
     };
   }
 
   /**
-   * Returns the current value of summaryData
+   * Subscribes to the summaryData and receive only the first, non undefined, value.
    */
-  getCurrentSummary(): { [key: string]: any; executing_tasks: object[] } {
-    return this.summaryDataSource.getValue();
+  subscribeOnce(next: (summary: Summary) => void, error?: (error: any) => void): Subscription {
+    return this.summaryData$
+      .pipe(
+        filter((value) => !!value),
+        first()
+      )
+      .subscribe(next, error);
   }
 
   /**
    * Subscribes to the summaryData,
    * which is updated periodically or when a new task is created.
+   * Will receive only non undefined values.
    */
-  subscribe(next: (summary: any) => void, error?: (error: any) => void): Subscription {
-    return this.summaryData$.subscribe(next, error);
+  subscribe(next: (summary: Summary) => void, error?: (error: any) => void): Subscription {
+    return this.summaryData$.pipe(filter((value) => !!value)).subscribe(next, error);
   }
 
   /**
index 6d1f74b9fb1f06961e5c50e77d42515d89b2968f..9e5a7aa7327aff615ed374ec725021fdd81270da 100644 (file)
@@ -56,12 +56,10 @@ export class TaskListService implements OnDestroy {
     this.itemFilter = itemFilter;
     this.builders = builders || {};
 
-    this.summaryDataSubscription = this.summaryService.subscribe((tasks: any) => {
-      if (tasks) {
-        this.getUpdate().subscribe((resp: any) => {
-          this.updateData(resp, tasks.executing_tasks.filter(this.taskFilter));
-        }, this.onFetchError);
-      }
+    this.summaryDataSubscription = this.summaryService.subscribe((summary) => {
+      this.getUpdate().subscribe((resp: any) => {
+        this.updateData(resp, summary['executing_tasks'].filter(this.taskFilter));
+      }, this.onFetchError);
     }, this.onFetchError);
   }
 
index 6c797d50633fbcd488e781bdc402ef240805051c..be83c323c704bb711d3320c22a042aec31a8216f 100644 (file)
@@ -35,12 +35,9 @@ describe('TaskManagerService', () => {
   let summaryService: any;
   let called: boolean;
 
-  configureTestBed(
-    {
-      providers: [TaskManagerService, { provide: SummaryService, useClass: SummaryServiceMock }]
-    },
-    true
-  );
+  configureTestBed({
+    providers: [TaskManagerService, { provide: SummaryService, useClass: SummaryServiceMock }]
+  });
 
   beforeEach(() => {
     taskManagerService = TestBed.get(TaskManagerService);
index 2ef8da4136c51a873adafba3076e2185965e5f0f..7e99e5aad9000327797b76912b354ab68394d38d 100644 (file)
@@ -26,12 +26,9 @@ export class TaskManagerService {
   subscriptions: Array<TaskSubscription> = [];
 
   init(summaryService: SummaryService) {
-    return summaryService.subscribe((data: any) => {
-      if (!data) {
-        return;
-      }
-      const executingTasks = data.executing_tasks;
-      const finishedTasks = data.finished_tasks;
+    return summaryService.subscribe((summary) => {
+      const executingTasks = summary.executing_tasks;
+      const finishedTasks = summary.finished_tasks;
       const newSubscriptions: Array<TaskSubscription> = [];
       for (const subscription of this.subscriptions) {
         const finishedTask = <FinishedTask>this._getTask(subscription, finishedTasks);
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/telemetry-notification.service.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/telemetry-notification.service.spec.ts
new file mode 100644 (file)
index 0000000..f7cf00a
--- /dev/null
@@ -0,0 +1,33 @@
+import { TestBed } from '@angular/core/testing';
+
+import { configureTestBed } from '../../../testing/unit-test-helper';
+import { TelemetryNotificationService } from './telemetry-notification.service';
+
+describe('TelemetryNotificationService', () => {
+  let service: TelemetryNotificationService;
+
+  configureTestBed({
+    providers: [TelemetryNotificationService]
+  });
+
+  beforeEach(() => {
+    service = TestBed.get(TelemetryNotificationService);
+    spyOn(service.update, 'emit');
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+
+  it('should set notification visibility to true', () => {
+    service.setVisibility(true);
+    expect(service.visible).toBe(true);
+    expect(service.update.emit).toHaveBeenCalledWith(true);
+  });
+
+  it('should set notification visibility to false', () => {
+    service.setVisibility(false);
+    expect(service.visible).toBe(false);
+    expect(service.update.emit).toHaveBeenCalledWith(false);
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/telemetry-notification.service.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/telemetry-notification.service.ts
new file mode 100644 (file)
index 0000000..fcb2e02
--- /dev/null
@@ -0,0 +1,16 @@
+import { EventEmitter, Injectable, Output } from '@angular/core';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class TelemetryNotificationService {
+  visible = false;
+
+  @Output()
+  update: EventEmitter<boolean> = new EventEmitter<boolean>();
+
+  setVisibility(visible: boolean) {
+    this.visible = visible;
+    this.update.emit(visible);
+  }
+}
index afbb031ceb9ae6fae57ca51639f7cb3cd1a3590d..1b4382ca1a0506d4f4d924e585b978c1a6b9eb46 100644 (file)
@@ -116,7 +116,7 @@ $color-nav-active-link-bg: $color-primary !default;
 $color-nav-border-top-collapse: $color-white-gray !default;
 
 $navbar-height: 43px;
-$pwd-exp-height: 37.6px;
+$top-notification-height: 37.6px;
 
 /*Helper*/
 $color-helper-bg: $color-primary !default;
index e7d8b6fdd5c108b0b691df4539c308c85259a7a2..81047f906377875b702311ffde261c3a505d78a8 100644 (file)
@@ -1,9 +1,10 @@
 import { LOCALE_ID, TRANSLATIONS, TRANSLATIONS_FORMAT, Type } from '@angular/core';
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { AbstractControl } from '@angular/forms';
 import { By } from '@angular/platform-browser';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
+import { configureTestSuite } from 'ng-bullet';
 import { BsModalRef } from 'ngx-bootstrap/modal';
 
 import { TableActionsComponent } from '../app/shared/datatable/table-actions/table-actions.component';
@@ -11,6 +12,8 @@ import { Icons } from '../app/shared/enum/icons.enum';
 import { CdFormGroup } from '../app/shared/forms/cd-form-group';
 import { CdTableAction } from '../app/shared/models/cd-table-action';
 import { CdTableSelection } from '../app/shared/models/cd-table-selection';
+import { CrushNode } from '../app/shared/models/crush-node';
+import { CrushRule, CrushRuleConfig } from '../app/shared/models/crush-rule';
 import { Permission } from '../app/shared/models/permissions';
 import {
   AlertmanagerAlert,
@@ -18,29 +21,9 @@ import {
   AlertmanagerNotificationAlert,
   PrometheusRule
 } from '../app/shared/models/prometheus-alerts';
-import { _DEV_ } from '../unit-test-configuration';
-
-export function configureTestBed(configuration: any, useOldMethod?: boolean) {
-  if (_DEV_ && !useOldMethod) {
-    const resetTestingModule = TestBed.resetTestingModule;
-    beforeAll((done) =>
-      (async () => {
-        TestBed.resetTestingModule();
-        TestBed.configureTestingModule(configuration);
-        // prevent Angular from resetting testing module
-        TestBed.resetTestingModule = () => TestBed;
-      })()
-        .then(done)
-        .catch(done.fail)
-    );
-    afterAll(() => {
-      TestBed.resetTestingModule = resetTestingModule;
-    });
-  } else {
-    beforeEach(async(() => {
-      TestBed.configureTestingModule(configuration);
-    }));
-  }
+
+export function configureTestBed(configuration: any) {
+  configureTestSuite(() => TestBed.configureTestingModule(configuration));
 }
 
 export class PermissionHelper {
@@ -394,3 +377,168 @@ export class IscsiHelper {
     formHelper.expectErrorChange(fieldName, 'thisPasswordIsWayTooBig', 'pattern');
   }
 }
+
+export class Mocks {
+  static getCrushNode(
+    name: string,
+    id: number,
+    type: string,
+    type_id: number,
+    children?: number[],
+    device_class?: string
+  ): CrushNode {
+    return { name, type, type_id, id, children, device_class };
+  }
+
+  /**
+   * Create the following test crush map:
+   * > default
+   * --> ssd-host
+   * ----> 3x osd with ssd
+   * --> mix-host
+   * ----> hdd-rack
+   * ------> 2x osd-rack with hdd
+   * ----> ssd-rack
+   * ------> 2x osd-rack with ssd
+   */
+  static getCrushMap(): CrushNode[] {
+    return [
+      // Root node
+      this.getCrushNode('default', -1, 'root', 11, [-2, -3]),
+      // SSD host
+      this.getCrushNode('ssd-host', -2, 'host', 1, [1, 0, 2]),
+      this.getCrushNode('osd.0', 0, 'osd', 0, undefined, 'ssd'),
+      this.getCrushNode('osd.1', 1, 'osd', 0, undefined, 'ssd'),
+      this.getCrushNode('osd.2', 2, 'osd', 0, undefined, 'ssd'),
+      // SSD and HDD mixed devices host
+      this.getCrushNode('mix-host', -3, 'host', 1, [-4, -5]),
+      // HDD rack
+      this.getCrushNode('hdd-rack', -4, 'rack', 3, [3, 4]),
+      this.getCrushNode('osd2.0', 3, 'osd-rack', 0, undefined, 'hdd'),
+      this.getCrushNode('osd2.1', 4, 'osd-rack', 0, undefined, 'hdd'),
+      // SSD rack
+      this.getCrushNode('ssd-rack', -5, 'rack', 3, [5, 6]),
+      this.getCrushNode('osd3.0', 5, 'osd-rack', 0, undefined, 'ssd'),
+      this.getCrushNode('osd3.1', 6, 'osd-rack', 0, undefined, 'ssd')
+    ];
+  }
+
+  /**
+   * Generates an simple crush map with multiple hosts that have OSDs with either ssd or hdd OSDs.
+   * Hosts with zero or even numbers at the end have SSD OSDs the other hosts have hdd OSDs.
+   *
+   * Host names follow the following naming convention:
+   * host.$index
+   * $index represents a number count started at 0 (like an index within an array) (same for OSDs)
+   *
+   * OSD names follow the following naming convention:
+   * osd.$hostIndex.$osdIndex
+   *
+   * The following crush map will be generated with the set defaults:
+   * > default
+   * --> host.0 (has only ssd OSDs)
+   * ----> osd.0.0
+   * ----> osd.0.1
+   * ----> osd.0.2
+   * ----> osd.0.3
+   * --> host.1 (has only hdd OSDs)
+   * ----> osd.1.0
+   * ----> osd.1.1
+   * ----> osd.1.2
+   * ----> osd.1.3
+   */
+  static generateSimpleCrushMap(hosts: number = 2, osds: number = 4): CrushNode[] {
+    const nodes = [];
+    const createOsdLeafs = (hostSuffix: number): number[] => {
+      let osdId = 0;
+      const osdIds = [];
+      const osdsInUse = hostSuffix * osds;
+      for (let o = 0; o < osds; o++) {
+        osdIds.push(osdId);
+        nodes.push(
+          this.getCrushNode(
+            `osd.${hostSuffix}.${osdId}`,
+            osdId + osdsInUse,
+            'osd',
+            0,
+            undefined,
+            hostSuffix % 2 === 0 ? 'ssd' : 'hdd'
+          )
+        );
+        osdId++;
+      }
+      return osdIds;
+    };
+    const createHostBuckets = (): number[] => {
+      let hostId = -2;
+      const hostIds = [];
+      for (let h = 0; h < hosts; h++) {
+        const hostSuffix = hostId * -1 - 2;
+        hostIds.push(hostId);
+        nodes.push(
+          this.getCrushNode(`host.${hostSuffix}`, hostId, 'host', 1, createOsdLeafs(hostSuffix))
+        );
+        hostId--;
+      }
+      return hostIds;
+    };
+    nodes.push(this.getCrushNode('default', -1, 'root', 11, createHostBuckets()));
+    return nodes;
+  }
+
+  static getCrushRuleConfig(
+    name: string,
+    root: string,
+    failure_domain: string,
+    device_class?: string
+  ): CrushRuleConfig {
+    return {
+      name,
+      root,
+      failure_domain,
+      device_class
+    };
+  }
+
+  static getCrushRule({
+    id = 0,
+    name = 'somePoolName',
+    min = 1,
+    max = 10,
+    type = 'replicated',
+    failureDomain = 'osd',
+    itemName = 'default' // This string also sets the device type - "default~ssd" <- ssd usage only
+  }: {
+    max?: number;
+    min?: number;
+    id?: number;
+    name?: string;
+    type?: string;
+    failureDomain?: string;
+    itemName?: string;
+  }): CrushRule {
+    const typeNumber = type === 'erasure' ? 3 : 1;
+    const rule = new CrushRule();
+    rule.max_size = max;
+    rule.min_size = min;
+    rule.rule_id = id;
+    rule.ruleset = typeNumber;
+    rule.rule_name = name;
+    rule.steps = [
+      {
+        item_name: itemName,
+        item: -1,
+        op: 'take'
+      },
+      {
+        num: 0,
+        type: failureDomain,
+        op: 'choose_firstn'
+      },
+      {
+        op: 'emit'
+      }
+    ];
+    return rule;
+  }
+}
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/unit-test-configuration.ts.sample b/ceph/src/pybind/mgr/dashboard/frontend/src/unit-test-configuration.ts.sample
deleted file mode 100644 (file)
index 74dbf2c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-export const _DEV_ = false;
index 054de94ce88d721ab6db113c02700e018eb65be4..c0c2d8cde431a191329c9a214fcd6248cc3eb0c3 100644 (file)
@@ -12,6 +12,7 @@ import socket
 import tempfile
 import threading
 import time
+
 from mgr_module import MgrModule, MgrStandbyModule, Option, CLIWriteCommand
 from mgr_util import get_default_addr, ServerConfigException, verify_tls_files, \
     create_self_signed_cert
@@ -29,15 +30,6 @@ if cherrypy is not None:
     from .cherrypy_backports import patch_cherrypy
     patch_cherrypy(cherrypy.__version__)
 
-if 'COVERAGE_ENABLED' in os.environ:
-    import coverage
-    __cov = coverage.Coverage(config_file="{}/.coveragerc".format(os.path.dirname(__file__)),
-                              data_suffix=True)
-
-    cherrypy.engine.subscribe('start', __cov.start)
-    cherrypy.engine.subscribe('after_request', __cov.save)
-    cherrypy.engine.subscribe('stop', __cov.stop)
-
 # pylint: disable=wrong-import-position
 from . import mgr
 from .controllers import generate_routes, json_error_page
@@ -296,6 +288,16 @@ class Module(MgrModule, CherryPyConfig):
         return os.path.join(current_dir, 'frontend/dist')
 
     def serve(self):
+
+        if 'COVERAGE_ENABLED' in os.environ:
+            import coverage
+            __cov = coverage.Coverage(config_file="{}/.coveragerc"
+                                      .format(os.path.dirname(__file__)),
+                                      data_suffix=True)
+            __cov.start()
+            cherrypy.engine.subscribe('after_request', __cov.save)
+            cherrypy.engine.subscribe('stop', __cov.stop)
+
         AuthManager.initialize()
         load_sso_db()
 
index 9a91909d422fa44e2b709a8c9bf1aefcce5acf1c..5f7ba0645b09dd1be00633a5aa70630b8b27627b 100755 (executable)
@@ -41,7 +41,7 @@ setup_teuthology() {
     TEMP_DIR=`mktemp -d`
     cd $TEMP_DIR
 
-    virtualenv --python=${TEUTHOLOGY_PYTHON_BIN:-/usr/bin/python} venv
+    virtualenv --python=${TEUTHOLOGY_PYTHON_BIN:-/usr/bin/python3} venv
     source venv/bin/activate
     pip install 'setuptools >= 12'
     pip install git+https://github.com/ceph/teuthology#egg=teuthology[test]
@@ -68,7 +68,7 @@ on_tests_error() {
     if [[ -n "$JENKINS_HOME" ]]; then
         CEPH_OUT_DIR=${CEPH_OUT_DIR:-"$LOCAL_BUILD_DIR"/out}
         MGR_LOG_FILES=$(find "$CEPH_OUT_DIR" -iname "mgr.*.log" | tr '\n' ' ')
-        MGR_LOG_FILE_LAST_LINES=60000
+        MGR_LOG_FILE_LAST_LINES=1000
         for mgr_log_file in ${MGR_LOG_FILES[@]}; do
             printf "\n\nDisplaying last ${MGR_LOG_FILE_LAST_LINES} lines of: $mgr_log_file\n\n"
             tail -n ${MGR_LOG_FILE_LAST_LINES} $mgr_log_file
@@ -117,7 +117,7 @@ run_teuthology_tests() {
     export COVERAGE_FILE=.coverage.mgr.dashboard
     find . -iname "*${COVERAGE_FILE}*" -type f -delete
 
-    python ../qa/tasks/vstart_runner.py --ignore-missing-binaries $OPTIONS $(echo $TEST_CASES)
+    python ../qa/tasks/vstart_runner.py --ignore-missing-binaries --no-verbose $OPTIONS $(echo $TEST_CASES)
 
     deactivate
     cd $CURR_DIR
index c94cd922f545f57b03f9cfbd8d7cb2386550c821..42cb9e1d2498eda06acca27ba0f530e8021cb773 100755 (executable)
@@ -14,19 +14,8 @@ fi
 npm run build -- --prod --progress=false || failed=true
 
 # Unit Tests
-config='src/unit-test-configuration.ts'
-if [ -e $config ]; then
-  mv $config ${config}_old
-fi
-cp ${config}.sample $config
-
 npm run test:ci || failed=true
 
-rm $config
-if [ -e ${config}_old ]; then
-  mv ${config}_old $config
-fi
-
 # Linting
 npm run lint --silent
 if [ $? -gt 0 ]; then
index 5e4a5c15342d13bb5727c8a186616f5b3b250740..a6eee2957ecd2284b912206e811757af9eed7f3c 100644 (file)
@@ -139,8 +139,7 @@ class CephService(object):
     @classmethod
     def get_pool_name_from_id(cls, pool_id):
         # type: (int) -> Union[str, None]
-        pool = cls.get_pool_by_attribute('pool', pool_id)
-        return pool['pool_name'] if pool is not None else None
+        return mgr.rados.pool_reverse_lookup(pool_id)
 
     @classmethod
     def get_pool_by_attribute(cls, attribute, value):
index a01db2574e853e4fa4181441dea3a7c0e5e83a70..ea33b9a37ee28e56fb107ee946dffe9e20804396 100644 (file)
@@ -66,6 +66,14 @@ class HostManger(ResourceManager):
     def remove(self, hostname: str):
         return self.api.remove_host(hostname)
 
+    @wait_api_result
+    def add_label(self, host: str, label: str) -> Completion:
+        return self.api.add_host_label(host, label)
+
+    @wait_api_result
+    def remove_label(self, host: str, label: str) -> Completion:
+        return self.api.remove_host_label(host, label)
+
 
 class InventoryManager(ResourceManager):
     @wait_api_result
@@ -109,8 +117,8 @@ class OsdManager(ResourceManager):
         return self.api.apply_drivegroups(drive_group_specs)
 
     @wait_api_result
-    def remove(self, osd_ids):
-        return self.api.remove_osds(osd_ids)
+    def remove(self, osd_ids, replace=False, force=False):
+        return self.api.remove_osds(osd_ids, replace, force)
 
     @wait_api_result
     def removing_status(self):
index 1734ca3bac7ac1b18569807a14da1c8337a15d00..4e628342282eb1ed5e92aa1ac3fe843f852c043f 100644 (file)
@@ -253,7 +253,15 @@ class RbdService(object):
 
             stat = img.stat()
             stat['name'] = image_name
-            stat['id'] = img.id()
+            if img.old_format():
+                stat['unique_id'] = get_image_spec(pool_name, namespace, stat['block_name_prefix'])
+                stat['id'] = stat['unique_id']
+                stat['image_format'] = 1
+            else:
+                stat['unique_id'] = get_image_spec(pool_name, namespace, img.id())
+                stat['id'] = img.id()
+                stat['image_format'] = 2
+
             stat['pool_name'] = pool_name
             stat['namespace'] = namespace
             features = img.features()
index baf8588117bda129c670f10688bebcefa23fcb13..5111e68d492bd893e1710b21ae06323b698a7258 100644 (file)
@@ -52,10 +52,12 @@ class CephServiceTest(unittest.TestCase):
     def test_get_pool_by_attribute_matching_a_not_always_set_attribute(self):
         self.assertEqual(self.service.get_pool_by_attribute('flaky', 'option_x'), self.pools[1])
 
-    def test_get_pool_name_from_id_with_match(self):
+    @mock.patch('dashboard.mgr.rados.pool_reverse_lookup', return_value='good_pool')
+    def test_get_pool_name_from_id_with_match(self, _mock):
         self.assertEqual(self.service.get_pool_name_from_id(1), 'good_pool')
 
-    def test_get_pool_name_from_id_without_match(self):
+    @mock.patch('dashboard.mgr.rados.pool_reverse_lookup', return_value=None)
+    def test_get_pool_name_from_id_without_match(self, _mock):
         self.assertEqual(self.service.get_pool_name_from_id(3), None)
 
     def test_get_pool_pg_status(self):
index 4d6c25761cfe69cd02503dee897901e5b263ff13..a6e03b526711ea85442a3f71961bb9961e5674f8 100644 (file)
@@ -60,12 +60,17 @@ class DocsTest(ControllerTestCase):
         self.assertEqual(Docs()._type_to_str(str), "string")
 
     def test_gen_paths(self):
-        outcome = Docs()._gen_paths(False, "")['/api/doctest//decorated_func/{parameter}']['get']
+        outcome = Docs()._gen_paths(False)['/api/doctest//decorated_func/{parameter}']['get']
         self.assertIn('tags', outcome)
         self.assertIn('summary', outcome)
         self.assertIn('parameters', outcome)
         self.assertIn('responses', outcome)
 
+    def test_gen_paths_all(self):
+        paths = Docs()._gen_paths(False)
+        for key in paths:
+            self.assertTrue(any(base in key.split('/')[1] for base in ['api', 'ui-api']))
+
     def test_gen_tags(self):
         outcome = Docs()._gen_tags(False)[0]
         self.assertEqual({'description': 'Group description', 'name': 'FooGroup'}, outcome)
index c2ce606938083cd4ad859da32b67409638cabb7a..ab7286074b7386b53adb88a99756a2ffdc8e3c31 100644 (file)
@@ -8,7 +8,7 @@ except ImportError:
 from orchestrator import HostSpec
 
 from . import ControllerTestCase
-from ..controllers.host import get_hosts, Host
+from ..controllers.host import get_hosts, Host, HostUi
 from .. import mgr
 
 
@@ -23,26 +23,25 @@ class HostControllerTest(ControllerTestCase):
 
     @mock.patch('dashboard.controllers.host.get_hosts')
     def test_host_list(self, mock_get_hosts):
-        hosts = [
-            {
-                'hostname': 'host-0',
-                'sources': {
-                    'ceph': True, 'orchestrator': False
-                }
-            },
-            {
-                'hostname': 'host-1',
-                'sources': {
-                    'ceph': False, 'orchestrator': True
-                }
-            },
-            {
-                'hostname': 'host-2',
-                'sources': {
-                    'ceph': True, 'orchestrator': True
-                }
+        hosts = [{
+            'hostname': 'host-0',
+            'sources': {
+                'ceph': True,
+                'orchestrator': False
             }
-        ]
+        }, {
+            'hostname': 'host-1',
+            'sources': {
+                'ceph': False,
+                'orchestrator': True
+            }
+        }, {
+            'hostname': 'host-2',
+            'sources': {
+                'ceph': True,
+                'orchestrator': True
+            }
+        }]
 
         def _get_hosts(from_ceph=True, from_orchestrator=True):
             _hosts = []
@@ -52,6 +51,7 @@ class HostControllerTest(ControllerTestCase):
                 _hosts.append(hosts[1])
                 _hosts.append(hosts[2])
             return _hosts
+
         mock_get_hosts.side_effect = _get_hosts
 
         self._get(self.URL_HOST)
@@ -70,27 +70,130 @@ class HostControllerTest(ControllerTestCase):
         self.assertStatus(200)
         self.assertJsonBody(hosts)
 
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_get_1(self, instance):
+        mgr.list_servers.return_value = []
 
-class TestHosts(unittest.TestCase):
+        fake_client = mock.Mock()
+        fake_client.available.return_value = False
+        instance.return_value = fake_client
+
+        self._get('{}/node1'.format(self.URL_HOST))
+        self.assertStatus(404)
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_get_2(self, instance):
+        mgr.list_servers.return_value = [{'hostname': 'node1'}]
+
+        fake_client = mock.Mock()
+        fake_client.available.return_value = False
+        instance.return_value = fake_client
+
+        self._get('{}/node1'.format(self.URL_HOST))
+        self.assertStatus(200)
+        self.assertIn('labels', self.json_body())
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_get_3(self, instance):
+        mgr.list_servers.return_value = []
+
+        fake_client = mock.Mock()
+        fake_client.available.return_value = True
+        fake_client.hosts.list.return_value = [HostSpec('node1')]
+        instance.return_value = fake_client
+
+        self._get('{}/node1'.format(self.URL_HOST))
+        self.assertStatus(200)
+        self.assertIn('labels', self.json_body())
 
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_set_labels(self, instance):
+        mgr.list_servers.return_value = []
+
+        fake_client = mock.Mock()
+        fake_client.available.return_value = True
+        fake_client.hosts.list.return_value = [
+            HostSpec('node0', labels=['aaa', 'bbb'])
+        ]
+        fake_client.hosts.remove_label = mock.Mock()
+        fake_client.hosts.add_label = mock.Mock()
+        instance.return_value = fake_client
+
+        self._put('{}/node0'.format(self.URL_HOST), {'labels': ['bbb', 'ccc']})
+        self.assertStatus(200)
+        fake_client.hosts.remove_label.assert_called_once_with('node0', 'aaa')
+        fake_client.hosts.add_label.assert_called_once_with('node0', 'ccc')
+
+
+class HostUiControllerTest(ControllerTestCase):
+    URL_HOST = '/ui-api/host'
+
+    @classmethod
+    def setup_server(cls):
+        # pylint: disable=protected-access
+        HostUi._cp_config['tools.authenticate.on'] = False
+        cls.setup_controllers([HostUi])
+
+    @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
+    def test_labels(self, instance):
+        fake_client = mock.Mock()
+        fake_client.available.return_value = True
+        fake_client.hosts.list.return_value = [
+            HostSpec('node1', labels=['foo']),
+            HostSpec('node2', labels=['foo', 'bar'])
+        ]
+        instance.return_value = fake_client
+
+        self._get('{}/labels'.format(self.URL_HOST))
+        self.assertStatus(200)
+        labels = self.json_body()
+        labels.sort()
+        self.assertListEqual(labels, ['bar', 'foo'])
+
+
+class TestHosts(unittest.TestCase):
     @mock.patch('dashboard.controllers.orchestrator.OrchClient.instance')
     def test_get_hosts(self, instance):
-        mgr.list_servers.return_value = [{'hostname': 'node1'}, {'hostname': 'localhost'}]
+        mgr.list_servers.return_value = [{
+            'hostname': 'node1'
+        }, {
+            'hostname': 'localhost'
+        }]
 
         fake_client = mock.Mock()
         fake_client.available.return_value = True
         fake_client.hosts.list.return_value = [
-            HostSpec('node1'), HostSpec('node2')]
+            HostSpec('node1', labels=['foo', 'bar']),
+            HostSpec('node2', labels=['bar'])
+        ]
         instance.return_value = fake_client
 
         hosts = get_hosts()
         self.assertEqual(len(hosts), 3)
-        check_sources = {
-            'localhost': {'ceph': True, 'orchestrator': False},
-            'node1': {'ceph': True, 'orchestrator': True},
-            'node2': {'ceph': False, 'orchestrator': True}
+        checks = {
+            'localhost': {
+                'sources': {
+                    'ceph': True,
+                    'orchestrator': False
+                },
+                'labels': []
+            },
+            'node1': {
+                'sources': {
+                    'ceph': True,
+                    'orchestrator': True
+                },
+                'labels': ['bar', 'foo']
+            },
+            'node2': {
+                'sources': {
+                    'ceph': False,
+                    'orchestrator': True
+                },
+                'labels': ['bar']
+            }
         }
         for host in hosts:
             hostname = host['hostname']
-            sources = host['sources']
-            self.assertDictEqual(sources, check_sources[hostname])
+            self.assertDictEqual(host['sources'], checks[hostname]['sources'])
+            self.assertListEqual(host['labels'], checks[hostname]['labels'])
index 6da706674cf13f2a243ed29eb0999c59df2b1839..962ffeb684665e4c513acf6d1500ee664e03960a 100644 (file)
@@ -222,7 +222,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
                     "state": {}
                 }
             })
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_add_bad_client(self, _validate_image_mock):
@@ -263,7 +263,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         response = copy.deepcopy(iscsi_target_response)
         response['target_iqn'] = target_iqn
         response['clients'][0]['auth']['password'] = 'MyNewPassword'
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_rename_client(self, _validate_image_mock):
@@ -276,7 +276,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         response = copy.deepcopy(iscsi_target_response)
         response['target_iqn'] = target_iqn
         response['clients'][0]['client_iqn'] = 'iqn.1994-05.com.redhat:rh7-client0'
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_add_disk(self, _validate_image_mock):
@@ -306,7 +306,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
 
             })
         response['clients'][0]['luns'].append({"image": "lun3", "pool": "rbd"})
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_change_disk_image(self, _validate_image_mock):
@@ -321,7 +321,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         response['target_iqn'] = target_iqn
         response['disks'][0]['image'] = 'lun0'
         response['clients'][0]['luns'][0]['image'] = 'lun0'
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_change_disk_controls(self, _validate_image_mock):
@@ -334,7 +334,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         response = copy.deepcopy(iscsi_target_response)
         response['target_iqn'] = target_iqn
         response['disks'][0]['controls'] = {"qfull_timeout": 15}
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_rename_target(self, _validate_image_mock):
@@ -346,7 +346,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         update_request['new_target_iqn'] = new_target_iqn
         response = copy.deepcopy(iscsi_target_response)
         response['target_iqn'] = new_target_iqn
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_rename_group(self, _validate_image_mock):
@@ -359,7 +359,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         response = copy.deepcopy(iscsi_target_response)
         response['target_iqn'] = target_iqn
         response['groups'][0]['group_id'] = 'mygroup0'
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_add_client_to_group(self, _validate_image_mock):
@@ -397,7 +397,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
                 }
             })
         response['groups'][0]['members'].append('iqn.1994-05.com.redhat:rh7-client3')
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_remove_client_from_group(self, _validate_image_mock):
@@ -410,7 +410,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         response = copy.deepcopy(iscsi_target_response)
         response['target_iqn'] = target_iqn
         response['groups'][0]['members'].remove('iqn.1994-05.com.redhat:rh7-client2')
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_remove_groups(self, _validate_image_mock):
@@ -423,7 +423,7 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
         response = copy.deepcopy(iscsi_target_response)
         response['target_iqn'] = target_iqn
         response['groups'] = []
-        self._update_iscsi_target(create_request, update_request, response)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
 
     @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
     def test_add_client_to_multiple_groups(self, _validate_image_mock):
@@ -440,11 +440,90 @@ class IscsiTestController(ControllerTestCase, KVStoreMockMixin):
             'component': 'iscsi'
         })
 
-    def _update_iscsi_target(self, create_request, update_request, response):
+    @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
+    def test_remove_client_lun(self, _validate_image_mock):
+        target_iqn = "iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw17"
+        create_request = copy.deepcopy(iscsi_target_request)
+        create_request['target_iqn'] = target_iqn
+        create_request['clients'][0]['luns'] = [
+            {"image": "lun1", "pool": "rbd"},
+            {"image": "lun2", "pool": "rbd"},
+            {"image": "lun3", "pool": "rbd"}
+        ]
+        update_request = copy.deepcopy(create_request)
+        update_request['new_target_iqn'] = target_iqn
+        update_request['clients'][0]['luns'] = [
+            {"image": "lun1", "pool": "rbd"},
+            {"image": "lun3", "pool": "rbd"}
+        ]
+        response = copy.deepcopy(iscsi_target_response)
+        response['target_iqn'] = target_iqn
+        response['clients'][0]['luns'] = [
+            {"image": "lun1", "pool": "rbd"},
+            {"image": "lun3", "pool": "rbd"}
+        ]
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
+
+    @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
+    def test_change_client_auth(self, _validate_image_mock):
+        target_iqn = "iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw18"
+        create_request = copy.deepcopy(iscsi_target_request)
+        create_request['target_iqn'] = target_iqn
+        update_request = copy.deepcopy(create_request)
+        update_request['new_target_iqn'] = target_iqn
+        update_request['clients'][0]['auth']['password'] = 'myiscsipasswordX'
+        response = copy.deepcopy(iscsi_target_response)
+        response['target_iqn'] = target_iqn
+        response['clients'][0]['auth']['password'] = 'myiscsipasswordX'
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
+
+    @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
+    def test_remove_client_logged_in(self, _validate_image_mock):
+        client_info = {
+            'alias': '',
+            'ip_address': [],
+            'state': {'LOGGED_IN': ['node1']}
+        }
+        # pylint: disable=protected-access
+        IscsiClientMock._instance.clientinfo = client_info
+        target_iqn = "iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw19"
+        create_request = copy.deepcopy(iscsi_target_request)
+        create_request['target_iqn'] = target_iqn
+        update_request = copy.deepcopy(create_request)
+        update_request['new_target_iqn'] = target_iqn
+        update_request['clients'].pop(0)
+        response = copy.deepcopy(iscsi_target_response)
+        response['target_iqn'] = target_iqn
+        for client in response['clients']:
+            client['info'] = client_info
+        update_response = {
+            'detail': "Client 'iqn.1994-05.com.redhat:rh7-client' cannot be deleted until it's "
+                      "logged out",
+            'code': 'client_logged_in',
+            'component': 'iscsi'
+        }
+        self._update_iscsi_target(create_request, update_request, 400, update_response, response)
+
+    @mock.patch('dashboard.controllers.iscsi.IscsiTarget._validate_image')
+    def test_remove_client(self, _validate_image_mock):
+        target_iqn = "iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw20"
+        create_request = copy.deepcopy(iscsi_target_request)
+        create_request['target_iqn'] = target_iqn
+        update_request = copy.deepcopy(create_request)
+        update_request['new_target_iqn'] = target_iqn
+        update_request['clients'].pop(0)
+        response = copy.deepcopy(iscsi_target_response)
+        response['target_iqn'] = target_iqn
+        response['clients'].pop(0)
+        self._update_iscsi_target(create_request, update_request, 200, None, response)
+
+    def _update_iscsi_target(self, create_request, update_request, update_response_code,
+                             update_response, response):
         self._task_post('/api/iscsi/target', create_request)
         self.assertStatus(201)
         self._task_put('/api/iscsi/target/{}'.format(create_request['target_iqn']), update_request)
-        self.assertStatus(200)
+        self.assertStatus(update_response_code)
+        self.assertJsonBody(update_response)
         self._get('/api/iscsi/target/{}'.format(update_request['new_target_iqn']))
         self.assertStatus(200)
         self.assertJsonBody(response)
@@ -591,6 +670,11 @@ class IscsiClientMock(object):
             "updated": "",
             "version": 11
         }
+        self.clientinfo = {
+            'alias': '',
+            'ip_address': [],
+            'state': {}
+        }
 
     @classmethod
     def instance(cls, gateway_name=None, service_url=None):
@@ -817,8 +901,4 @@ class IscsiClientMock(object):
 
     def get_clientinfo(self, target_iqn, client_iqn):
         # pylint: disable=unused-argument
-        return {
-            'alias': '',
-            'ip_address': [],
-            'state': {}
-        }
+        return self.clientinfo
index 61f3cc1f6dcc72f9145bdf2ee77f26d6d844ac82..948c59bd7edf0a3090b61df6327e0143da80d89e 100644 (file)
@@ -218,7 +218,7 @@ class Module(MgrModule):
         else:
             self.log.error('unable to predict device due to health data records less than 6 days')
 
-        if predict_datas:
+        if len(predict_datas) >= 6:
             predicted_result = obj_predictor.predict(predict_datas)
         return predicted_result
 
index 0c933966da6ff1c1cda55f0a2f9b7f56e2ddfd94..e6568269c8a6512853a7e0497e72ef18aed10d47 100644 (file)
@@ -250,6 +250,27 @@ class BaseThread(threading.Thread):
     daemon = True
 
 
+def clean_event(event):
+    """ clean an event record """
+    if not event.first_timestamp:
+        log.error("first_timestamp is empty")
+        if event.metadata.creation_timestamp:
+            log.error("setting first_timestamp to the creation timestamp")
+            event.first_timestamp = event.metadata.creation_timestamp
+        else:
+            log.error("defaulting event first timestamp to current datetime")
+            event.first_timestamp = datetime.datetime.now()
+
+    if not event.last_timestamp:
+        log.error("setting event last timestamp to {}".format(event.first_timestamp))
+        event.last_timestamp = event.first_timestamp
+
+    if not event.count:
+        event.count = 1
+
+    return event
+
+
 class NamespaceWatcher(BaseThread):
     """Watch events in a given namespace 
     
@@ -289,7 +310,7 @@ class NamespaceWatcher(BaseThread):
             self.resource_version = resp.metadata.resource_version
             
             for item in resp.items:
-                self.events[item.metadata.name] = item
+                self.events[item.metadata.name] = clean_event(item)
             log.info('Added {} events'.format(len(resp.items)))
 
     def run(self):
@@ -311,7 +332,7 @@ class NamespaceWatcher(BaseThread):
                         with self.lock:
 
                             if item['type'] in ['ADDED', 'MODIFIED']:
-                                self.events[obj.metadata.name] = obj
+                                self.events[obj.metadata.name] = clean_event(obj)
 
                             elif item['type'] == 'DELETED':
                                 del self.events[obj.metadata.name]
@@ -333,6 +354,10 @@ class NamespaceWatcher(BaseThread):
                     log.warning("Restarting namespace watcher")
                     self.fetch()
 
+                except ProtocolError as e:
+                    log.warning("Namespace watcher hit protocolerror ({}) - restarting".format(e))
+                    self.fetch()
+
                 except Exception:
                     self.health = "{} Exception at {}".format(
                         sys.exc_info()[0].__name__,
@@ -1156,10 +1181,10 @@ class Module(MgrModule):
 
             s += fmt.format(
                     datetime.strftime(event.last_timestamp,"%Y/%m/%d %H:%M:%S"),
-                    event.type,
-                    event.count,
-                    event.message,
-                    event_name
+                    str(event.type),
+                    str(event.count),
+                    str(event.message),
+                    str(event_name)
             )
         s += "Total : {:>3}\n".format(len(events))
         return s
index 554310d9813fc6713866de059f36e150ec3271c6..6f3e799187724b3dd81c362baf80359bfa02e5f3 100644 (file)
@@ -14,7 +14,9 @@ from collections import defaultdict, namedtuple
 import rados
 import re
 import time
+from mgr_util import profile_method
 
+# Full list of strings in "osd_types.cc:pg_state_string()"
 PG_STATES = [
     "active",
     "clean",
@@ -45,7 +47,12 @@ PG_STATES = [
     "snaptrim_wait",
     "snaptrim_error",
     "creating",
-    "unknown"]
+    "unknown",
+    "premerge",
+    "failed_repair",
+    "laggy",
+    "wait",
+]
 
 
 class CommandResult(object):
@@ -1053,7 +1060,7 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin):
         """
         return self._ceph_get_server(None)
 
-    def get_metadata(self, svc_type, svc_id):
+    def get_metadata(self, svc_type, svc_id, default=None):
         """
         Fetch the daemon metadata for a particular service.
 
@@ -1066,7 +1073,10 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin):
             calling this
         :rtype: dict, or None if no metadata found
         """
-        return self._ceph_get_metadata(svc_type, svc_id)
+        metadata = self._ceph_get_metadata(svc_type, svc_id)
+        if metadata is None:
+            return default
+        return metadata
 
     def get_daemon_status(self, svc_type, svc_id):
         """
@@ -1376,6 +1386,7 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin):
         else:
             return 0, 0
 
+    @profile_method()
     def get_all_perf_counters(self, prio_limit=PRIO_USEFUL,
                               services=("mds", "mon", "osd",
                                         "rbd-mirror", "rgw", "tcmu-runner")):
index f470bd4bede1255e7a6e20d77892876200b6e7f5..df6486455d86289081cbef4d0d4d7c916b6be9a7 100644 (file)
@@ -3,9 +3,11 @@ import datetime
 import os
 import socket
 import logging
+import time
+from functools import wraps
 
 try:
-    from typing import Tuple
+    from typing import Tuple, Any, Callable
 except ImportError:
     TYPE_CHECKING = False  # just for type checking
 
@@ -392,3 +394,24 @@ def to_pretty_timedelta(n):
     if n < datetime.timedelta(days=365*2):
         return str(n.days // 30) + 'M'
     return str(n.days // 365) + 'y'
+
+
+def profile_method(skip_attribute=False):
+    """
+    Decorator for methods of the Module class. Logs the name of the given
+    function f with the time it takes to execute it.
+    """
+    def outer(f):
+        @wraps(f)
+        def wrapper(*args, **kwargs):
+            self = args[0]
+            t = time.time()
+            self.log.debug('Starting method {}.'.format(f.__name__))
+            result = f(*args, **kwargs)
+            duration = time.time() - t
+            if not skip_attribute:
+                wrapper._execution_duration = duration  # type: ignore
+            self.log.debug('Method {} ran {:.3f} seconds.'.format(f.__name__, duration))
+            return result
+        return wrapper
+    return outer
index c8522e78590b7e456dc8796d2f3c60f377883033..2d6cba8a15626bdf0cad9e33cf01ab8b6203f4e0 100644 (file)
@@ -1,4 +1,8 @@
 from __future__ import absolute_import
+import os
+
+if 'UNITTEST' in os.environ:
+    import tests
 
 from .module import OrchestratorCli
 
@@ -10,5 +14,6 @@ from ._interface import \
     OrchestratorValidationError, OrchestratorError, NoOrchestrator, \
     ServiceDescription, InventoryFilter, HostSpec, \
     DaemonDescription, \
+    OrchestratorEvent, set_exception_subject, \
     InventoryHost, DeviceLightLoc, \
     UpgradeStatusSpec
index a27c000f99b5b362c47c63f94d6100305943becd..55c512aee449984e766db5354ee2fbf8350c5a43 100644 (file)
@@ -14,19 +14,23 @@ import re
 import time
 import uuid
 
-from collections import namedtuple
+from collections import namedtuple, OrderedDict
+from contextlib import contextmanager
 from functools import wraps
 
+import yaml
+
 from ceph.deployment import inventory
 from ceph.deployment.service_spec import ServiceSpec, NFSServiceSpec, RGWSpec, \
     ServiceSpecValidationError, IscsiServiceSpec
 from ceph.deployment.drive_group import DriveGroupSpec
+from ceph.deployment.hostspec import HostSpec
 
 from mgr_module import MgrModule, CLICommand, HandleCommandResult
 
 try:
     from typing import TypeVar, Generic, List, Optional, Union, Tuple, Iterator, Callable, Any, \
-    Type, Sequence, Dict, cast
+        Type, Sequence, Dict, cast
 except ImportError:
     pass
 
@@ -34,6 +38,8 @@ logger = logging.getLogger(__name__)
 
 DATEFMT = '%Y-%m-%dT%H:%M:%S.%f'
 
+T = TypeVar('T')
+
 
 class OrchestratorError(Exception):
     """
@@ -44,13 +50,23 @@ class OrchestratorError(Exception):
     It's not intended for programming errors or orchestrator internal errors.
     """
 
+    def __init__(self,
+                 msg: str,
+                 errno: int = -errno.EINVAL,
+                 event_kind_subject: Optional[Tuple[str, str]] = None):
+        super(Exception, self).__init__(msg)
+        self.errno = errno
+        # See OrchestratorEvent.subject
+        self.event_subject = event_kind_subject
+
 
 class NoOrchestrator(OrchestratorError):
     """
     No orchestrator in configured.
     """
+
     def __init__(self, msg="No orchestrator configured (try `ceph orch set backend`)"):
-        super(NoOrchestrator, self).__init__(msg)
+        super(NoOrchestrator, self).__init__(msg, errno=-errno.ENOENT)
 
 
 class OrchestratorValidationError(OrchestratorError):
@@ -59,13 +75,25 @@ class OrchestratorValidationError(OrchestratorError):
     """
 
 
+@contextmanager
+def set_exception_subject(kind, subject, overwrite=False):
+    try:
+        yield
+    except OrchestratorError as e:
+        if overwrite or hasattr(e, 'event_subject'):
+            e.event_subject = (kind, subject)
+        raise
+
+
 def handle_exception(prefix, cmd_args, desc, perm, func):
     @wraps(func)
     def wrapper(*args, **kwargs):
         try:
             return func(*args, **kwargs)
-        except (OrchestratorError, ImportError, ServiceSpecValidationError) as e:
+        except (OrchestratorError, ServiceSpecValidationError) as e:
             # Do not print Traceback for expected errors.
+            return HandleCommandResult(e.errno, stderr=str(e))
+        except ImportError as e:
             return HandleCommandResult(-errno.ENOENT, stderr=str(e))
         except NotImplementedError:
             msg = 'This Orchestrator does not support `{}`'.format(prefix)
@@ -99,7 +127,7 @@ class CLICommandMeta(type):
     """
     def __init__(cls, name, bases, dct):
         super(CLICommandMeta, cls).__init__(name, bases, dct)
-        dispatch = {}  # type: Dict[str, CLICommand]
+        dispatch: Dict[str, CLICommand] = {}
         for v in dct.values():
             try:
                 dispatch[v._prefix] = v._cli_command
@@ -135,32 +163,31 @@ class _Promise(object):
     RUNNING = 2
     FINISHED = 3  # we have a final result
 
-    NO_RESULT = _no_result()  # type: None
+    NO_RESULT: None = _no_result()
     ASYNC_RESULT = object()
 
     def __init__(self,
-                 _first_promise=None,  # type: Optional["_Promise"]
-                 value=NO_RESULT,  # type: Optional[Any]
-                 on_complete=None,    # type: Optional[Callable]
-                 name=None,  # type: Optional[str]
+                 _first_promise: Optional["_Promise"] = None,
+                 value: Optional[Any] = NO_RESULT,
+                 on_complete: Optional[Callable] = None,
+                 name: Optional[str] = None,
                  ):
         self._on_complete_ = on_complete
         self._name = name
-        self._next_promise = None  # type: Optional[_Promise]
+        self._next_promise: Optional[_Promise] = None
 
         self._state = self.INITIALIZED
-        self._exception = None  # type: Optional[Exception]
+        self._exception: Optional[Exception] = None
 
         # Value of this _Promise. may be an intermediate result.
         self._value = value
 
         # _Promise is not a continuation monad, as `_result` is of type
         # T instead of (T -> r) -> r. Therefore we need to store the first promise here.
-        self._first_promise = _first_promise or self  # type: '_Promise'
+        self._first_promise: '_Promise' = _first_promise or self
 
     @property
-    def _exception(self):
-        # type: () -> Optional[Exception]
+    def _exception(self) -> Optional[Exception]:
         return getattr(self, '_exception_', None)
 
     @_exception.setter
@@ -178,29 +205,25 @@ class _Promise(object):
             self._serialized_exception_ = pickle.dumps(e)
 
     @property
-    def _serialized_exception(self):
-        # type: () -> Optional[bytes]
+    def _serialized_exception(self) -> Optional[bytes]:
         return getattr(self, '_serialized_exception_', None)
 
-
-
     @property
-    def _on_complete(self):
-        # type: () -> Optional[Callable]
+    def _on_complete(self) -> Optional[Callable]:
         # https://github.com/python/mypy/issues/4125
         return self._on_complete_
 
     @_on_complete.setter
-    def _on_complete(self, val):
-        # type: (Optional[Callable]) -> None
+    def _on_complete(self, val: Optional[Callable]) -> None:
         self._on_complete_ = val
 
-
     def __repr__(self):
-        name = self._name or getattr(self._on_complete, '__name__', '??') if self._on_complete else 'None'
+        name = self._name or getattr(self._on_complete, '__name__',
+                                     '??') if self._on_complete else 'None'
         val = repr(self._value) if self._value is not self.NO_RESULT else 'NA'
         return '{}(_s={}, val={}, _on_c={}, id={}, name={}, pr={}, _next={})'.format(
-            self.__class__, self._state, val, self._on_complete, id(self), name, getattr(next, '_progress_reference', 'NA'), repr(self._next_promise)
+            self.__class__, self._state, val, self._on_complete, id(self), name, getattr(
+                next, '_progress_reference', 'NA'), repr(self._next_promise)
         )
 
     def pretty_print_1(self):
@@ -220,8 +243,7 @@ class _Promise(object):
         }[self._state]
         return '{} {}({}),'.format(prefix, name, val)
 
-    def then(self, on_complete):
-        # type: (Any, Callable) -> Any
+    def then(self: Any, on_complete: Callable) -> Any:
         """
         Call ``on_complete`` as soon as this promise is finalized.
         """
@@ -242,8 +264,7 @@ class _Promise(object):
             self._set_next_promise(self.__class__(_first_promise=self._first_promise))
             return self._next_promise
 
-    def _set_next_promise(self, next):
-        # type: (_Promise) -> None
+    def _set_next_promise(self, next: '_Promise') -> None:
         assert self is not next
         assert self._state in (self.INITIALIZED, self.RUNNING)
 
@@ -301,15 +322,13 @@ class _Promise(object):
             # asynchronous promise
             pass
 
-
     def propagate_to_next(self):
         self._state = self.FINISHED
         logger.debug('finalized {}'.format(repr(self)))
         if self._next_promise:
             self._next_promise._finalize()
 
-    def fail(self, e):
-        # type: (Exception) -> None
+    def fail(self, e: Exception) -> None:
         """
         Sets the whole completion to be faild with this exception and end the
         evaluation.
@@ -341,17 +360,16 @@ class _Promise(object):
             assert other not in self
             self._last_promise()._set_next_promise(other)
 
-    def _last_promise(self):
-        # type: () -> _Promise
+    def _last_promise(self) -> '_Promise':
         return list(iter(self))[-1]
 
 
 class ProgressReference(object):
     def __init__(self,
-                 message,  # type: str
+                 message: str,
                  mgr,
-                 completion=None  # type: Optional[Callable[[], Completion]]
-                ):
+                 completion: Optional[Callable[[], 'Completion']] = None
+                 ):
         """
         ProgressReference can be used within Completions::
 
@@ -373,7 +391,7 @@ class ProgressReference(object):
         #: The completion can already have a result, before the write
         #: operation is effective. progress == 1 means, the services are
         #: created / removed.
-        self.completion = completion  # type: Optional[Callable[[], Completion]]
+        self.completion: Optional[Callable[[], Completion]] = completion
 
         #: if a orchestrator module can provide a more detailed
         #: progress information, it needs to also call ``progress.update()``.
@@ -404,7 +422,8 @@ class ProgressReference(object):
         try:
             if self.effective:
                 self.mgr.remote("progress", "complete", self.progress_id)
-                self.mgr.all_progress_references = [p for p in self.mgr.all_progress_references if p is not self]
+                self.mgr.all_progress_references = [
+                    p for p in self.mgr.all_progress_references if p is not self]
             else:
                 self.mgr.remote("progress", "update", self.progress_id, self.message,
                                 progress,
@@ -432,7 +451,7 @@ class ProgressReference(object):
         self.progress = 1
 
 
-class Completion(_Promise):
+class Completion(_Promise, Generic[T]):
     """
     Combines multiple promises into one overall operation.
 
@@ -463,45 +482,44 @@ class Completion(_Promise):
         +---------------+      +-----------------+
 
     """
+
     def __init__(self,
-                 _first_promise=None,  # type: Optional["Completion"]
-                 value=_Promise.NO_RESULT,  # type: Any
-                 on_complete=None,  # type: Optional[Callable]
-                 name=None,  # type: Optional[str]
+                 _first_promise: Optional["Completion"] = None,
+                 value: Any = _Promise.NO_RESULT,
+                 on_complete: Optional[Callable] = None,
+                 name: Optional[str] = None,
                  ):
         super(Completion, self).__init__(_first_promise, value, on_complete, name)
 
     @property
-    def _progress_reference(self):
-        # type: () -> Optional[ProgressReference]
+    def _progress_reference(self) -> Optional[ProgressReference]:
         if hasattr(self._on_complete, 'progress_id'):
             return self._on_complete  # type: ignore
         return None
 
     @property
-    def progress_reference(self):
-        # type: () -> Optional[ProgressReference]
+    def progress_reference(self) -> Optional[ProgressReference]:
         """
         ProgressReference. Marks this completion
         as a write completeion.
         """
 
-        references = [c._progress_reference for c in iter(self) if c._progress_reference is not None]
+        references = [c._progress_reference for c in iter(
+            self) if c._progress_reference is not None]
         if references:
             assert len(references) == 1
             return references[0]
         return None
 
     @classmethod
-    def with_progress(cls,  # type: Any
-                      message,  # type: str
+    def with_progress(cls: Any,
+                      message: str,
                       mgr,
-                      _first_promise=None,  # type: Optional["Completion"]
-                      value=_Promise.NO_RESULT,  # type: Any
-                      on_complete=None,  # type: Optional[Callable]
-                      calc_percent=None  # type: Optional[Callable[[], Any]]
-                      ):
-        # type: (...) -> Any
+                      _first_promise: Optional["Completion"] = None,
+                      value: Any = _Promise.NO_RESULT,
+                      on_complete: Optional[Callable] = None,
+                      calc_percent: Optional[Callable[[], Any]] = None
+                      ) -> Any:
 
         c = cls(
             _first_promise=_first_promise,
@@ -512,9 +530,9 @@ class Completion(_Promise):
         return c._first_promise
 
     def add_progress(self,
-                     message,  # type: str
+                     message: str,
                      mgr,
-                     calc_percent=None  # type: Optional[Callable[[], Any]]
+                     calc_percent: Optional[Callable[[], Any]] = None
                      ):
         return self.then(
             on_complete=ProgressReference(
@@ -524,17 +542,17 @@ class Completion(_Promise):
             )
         )
 
-    def fail(self, e):
+    def fail(self, e: Exception):
         super(Completion, self).fail(e)
         if self._progress_reference:
             self._progress_reference.fail()
 
-    def finalize(self, result=_Promise.NO_RESULT):
+    def finalize(self, result: Union[None, object, T] = _Promise.NO_RESULT):
         if self._first_promise._state == self.INITIALIZED:
             self._first_promise._finalize(result)
 
     @property
-    def result(self):
+    def result(self) -> T:
         """
         The result of the operation that we were waited
         for.  Only valid after calling Orchestrator.process() on this
@@ -542,9 +560,9 @@ class Completion(_Promise):
         """
         last = self._last_promise()
         assert last._state == _Promise.FINISHED
-        return last._value
+        return cast(T, last._value)
 
-    def result_str(self):
+    def result_str(self) -> str:
         """Force a string."""
         if self.result is None:
             return ''
@@ -553,18 +571,15 @@ class Completion(_Promise):
         return str(self.result)
 
     @property
-    def exception(self):
-        # type: () -> Optional[Exception]
+    def exception(self) -> Optional[Exception]:
         return self._last_promise()._exception
 
     @property
-    def serialized_exception(self):
-        # type: () -> Optional[bytes]
+    def serialized_exception(self) -> Optional[bytes]:
         return self._last_promise()._serialized_exception
 
     @property
-    def has_result(self):
-        # type: () -> bool
+    def has_result(self) -> bool:
         """
         Has the operation already a result?
 
@@ -580,8 +595,7 @@ class Completion(_Promise):
         return self._last_promise()._state == _Promise.FINISHED
 
     @property
-    def is_errored(self):
-        # type: () -> bool
+    def is_errored(self) -> bool:
         """
         Has the completion failed. Default implementation looks for
         self.exception. Can be overwritten.
@@ -589,8 +603,7 @@ class Completion(_Promise):
         return self.exception is not None
 
     @property
-    def needs_result(self):
-        # type: () -> bool
+    def needs_result(self) -> bool:
         """
         Could the external operation be deemed as complete,
         or should we wait?
@@ -599,8 +612,7 @@ class Completion(_Promise):
         return not self.is_errored and not self.has_result
 
     @property
-    def is_finished(self):
-        # type: () -> bool
+    def is_finished(self) -> bool:
         """
         Could the external operation be deemed as complete,
         or should we wait?
@@ -614,13 +626,11 @@ class Completion(_Promise):
         return """<{}>[\n{}\n]""".format(self.__class__.__name__, reprs)
 
 
-def pretty_print(completions):
-    # type: (Sequence[Completion]) -> str
+def pretty_print(completions: Sequence[Completion]) -> str:
     return ', '.join(c.pretty_print() for c in completions)
 
 
-def raise_if_exception(c):
-    # type: (Completion) -> None
+def raise_if_exception(c: Completion) -> None:
     """
     :raises OrchestratorError: Some user error or a config error.
     :raises Exception: Some internal error
@@ -633,11 +643,12 @@ def raise_if_exception(c):
         raise e
 
 
-class TrivialReadCompletion(Completion):
+class TrivialReadCompletion(Completion[T]):
     """
     This is the trivial completion simply wrapping a result.
     """
-    def __init__(self, result):
+
+    def __init__(self, result: T):
         super(TrivialReadCompletion, self).__init__()
         if result:
             self.finalize(result)
@@ -682,8 +693,7 @@ class Orchestrator(object):
         return True
 
     @_hide_in_features
-    def available(self):
-        # type: () -> Tuple[bool, str]
+    def available(self) -> Tuple[bool, str]:
         """
         Report whether we can talk to the orchestrator.  This is the
         place to give the user a meaningful message if the orchestrator
@@ -709,8 +719,7 @@ class Orchestrator(object):
         raise NotImplementedError()
 
     @_hide_in_features
-    def process(self, completions):
-        # type: (List[Completion]) -> None
+    def process(self, completions: List[Completion]) -> None:
         """
         Given a list of Completion instances, process any which are
         incomplete.
@@ -755,23 +764,19 @@ class Orchestrator(object):
                     }
         return features
 
-    def cancel_completions(self):
-        # type: () -> None
+    def cancel_completions(self) -> None:
         """
         Cancels ongoing completions. Unstuck the mgr.
         """
         raise NotImplementedError()
 
-    def pause(self):
-        # type: () -> None
+    def pause(self) -> None:
         raise NotImplementedError()
 
-    def resume(self):
-        # type: () -> None
+    def resume(self) -> None:
         raise NotImplementedError()
 
-    def add_host(self, host_spec):
-        # type: (HostSpec) -> Completion
+    def add_host(self, host_spec: HostSpec) -> Completion[str]:
         """
         Add a host to the orchestrator inventory.
 
@@ -779,8 +784,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def remove_host(self, host):
-        # type: (str) -> Completion
+    def remove_host(self, host: str) -> Completion[str]:
         """
         Remove a host from the orchestrator inventory.
 
@@ -788,8 +792,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def update_host_addr(self, host, addr):
-        # type: (str, str) -> Completion
+    def update_host_addr(self, host: str, addr: str) -> Completion[str]:
         """
         Update a host's address
 
@@ -798,8 +801,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def get_hosts(self):
-        # type: () -> Completion
+    def get_hosts(self) -> Completion[List[HostSpec]]:
         """
         Report the hosts in the cluster.
 
@@ -807,22 +809,27 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def add_host_label(self, host, label):
-        # type: (str, str) -> Completion
+    def add_host_label(self, host: str, label: str) -> Completion[str]:
         """
         Add a host label
         """
         raise NotImplementedError()
 
-    def remove_host_label(self, host, label):
-        # type: (str, str) -> Completion
+    def remove_host_label(self, host: str, label: str) -> Completion[str]:
         """
         Remove a host label
         """
         raise NotImplementedError()
 
-    def get_inventory(self, host_filter=None, refresh=False):
-        # type: (Optional[InventoryFilter], bool) -> Completion
+    def host_ok_to_stop(self, hostname: str) -> Completion:
+        """
+        Check if the specified host can be safely stopped without reducing availability
+
+        :param host: hostname
+        """
+        raise NotImplementedError()
+
+    def get_inventory(self, host_filter: Optional['InventoryFilter'] = None, refresh: bool = False) -> Completion[List['InventoryHost']]:
         """
         Returns something that was created by `ceph-volume inventory`.
 
@@ -830,8 +837,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def describe_service(self, service_type=None, service_name=None, refresh=False):
-        # type: (Optional[str], Optional[str], bool) -> Completion
+    def describe_service(self, service_type: Optional[str] = None, service_name: Optional[str] = None, refresh: bool = False) -> Completion[List['ServiceDescription']]:
         """
         Describe a service (of any kind) that is already configured in
         the orchestrator.  For example, when viewing an OSD in the dashboard
@@ -845,8 +851,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def list_daemons(self, service_name=None, daemon_type=None, daemon_id=None, host=None, refresh=False):
-        # type: (Optional[str], Optional[str], Optional[str], Optional[str], bool) -> Completion
+    def list_daemons(self, service_name: Optional[str] = None, daemon_type: Optional[str] = None, daemon_id: Optional[str] = None, host: Optional[str] = None, refresh: bool = False) -> Completion[List['DaemonDescription']]:
         """
         Describe a daemon (of any kind) that is already configured in
         the orchestrator.
@@ -855,7 +860,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def apply(self, specs: List["GenericSpec"]) -> Completion:
+    def apply(self, specs: List["GenericSpec"]) -> Completion[List[str]]:
         """
         Applies any spec
         """
@@ -892,8 +897,13 @@ class Orchestrator(object):
             completion = completion.then(next)
         return completion
 
-    def remove_daemons(self, names):
-        # type: (List[str]) -> Completion
+    def plan(self, spec: List["GenericSpec"]) -> Completion[List]:
+        """
+        Plan (Dry-run, Preview) a List of Specs.
+        """
+        raise NotImplementedError()
+
+    def remove_daemons(self, names: List[str]) -> Completion[List[str]]:
         """
         Remove specific daemon(s).
 
@@ -901,8 +911,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def remove_service(self, service_name):
-        # type: (str) -> Completion
+    def remove_service(self, service_name: str) -> Completion[str]:
         """
         Remove a service (a collection of daemons).
 
@@ -910,34 +919,32 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def service_action(self, action, service_name):
-        # type: (str, str) -> Completion
+    def service_action(self, action: str, service_name: str) -> Completion[List[str]]:
         """
         Perform an action (start/stop/reload) on a service (i.e., all daemons
         providing the logical service).
 
         :param action: one of "start", "stop", "restart", "redeploy", "reconfig"
-        :param service_type: e.g. "mds", "rgw", ...
-        :param service_name: name of logical service ("cephfs", "us-east", ...)
+        :param service_name: service_type + '.' + service_id
+                            (e.g. "mon", "mgr", "mds.mycephfs", "rgw.realm.zone", ...)
         :rtype: Completion
         """
-        #assert action in ["start", "stop", "reload, "restart", "redeploy"]
+        # assert action in ["start", "stop", "reload, "restart", "redeploy"]
         raise NotImplementedError()
 
-    def daemon_action(self, action, daemon_type, daemon_id):
-        # type: (str, str, str) -> Completion
+    def daemon_action(self, action: str, daemon_name: str, image: Optional[str]=None) -> Completion[str]:
         """
         Perform an action (start/stop/reload) on a daemon.
 
         :param action: one of "start", "stop", "restart", "redeploy", "reconfig"
-        :param name: name of daemon
+        :param daemon_name: name of daemon
+        :param image: Container image when redeploying that daemon
         :rtype: Completion
         """
-        #assert action in ["start", "stop", "reload, "restart", "redeploy"]
+        # assert action in ["start", "stop", "reload, "restart", "redeploy"]
         raise NotImplementedError()
 
-    def create_osds(self, drive_group):
-        # type: (DriveGroupSpec) -> Completion
+    def create_osds(self, drive_group: DriveGroupSpec) -> Completion[str]:
         """
         Create one or more OSDs within a single Drive Group.
 
@@ -948,7 +955,7 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def apply_drivegroups(self, specs: List[DriveGroupSpec]) -> Completion:
+    def apply_drivegroups(self, specs: List[DriveGroupSpec]) -> Completion[List[str]]:
         """ Update OSD cluster """
         raise NotImplementedError()
 
@@ -962,13 +969,13 @@ class Orchestrator(object):
     def preview_osdspecs(self,
                          osdspec_name: Optional[str] = 'osd',
                          osdspecs: Optional[List[DriveGroupSpec]] = None
-                         ) -> Completion:
+                         ) -> Completion[str]:
         """ Get a preview for OSD deployments """
         raise NotImplementedError()
 
     def remove_osds(self, osd_ids: List[str],
                     replace: bool = False,
-                    force: bool = False) -> Completion:
+                    force: bool = False) -> Completion[str]:
         """
         :param osd_ids: list of OSD IDs
         :param replace: marks the OSD as being destroyed. See :ref:`orchestrator-osd-replace`
@@ -978,15 +985,19 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def remove_osds_status(self):
-        # type: () -> Completion
+    def stop_remove_osds(self, osd_ids: List[str]) -> Completion:
+        """
+        TODO
+        """
+        raise NotImplementedError()
+
+    def remove_osds_status(self) -> Completion:
         """
         Returns a status of the ongoing OSD removal operations.
         """
         raise NotImplementedError()
 
-    def blink_device_light(self, ident_fault, on, locations):
-        # type: (str, bool, List[DeviceLightLoc]) -> Completion
+    def blink_device_light(self, ident_fault: str, on: bool, locations: List['DeviceLightLoc']) -> Completion[List[str]]:
         """
         Instructs the orchestrator to enable or disable either the ident or the fault LED.
 
@@ -996,153 +1007,122 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
-    def zap_device(self, host, path):
-        # type: (str, str) -> Completion
+    def zap_device(self, host: str, path: str) -> Completion[str]:
         """Zap/Erase a device (DESTROYS DATA)"""
         raise NotImplementedError()
 
-    def add_mon(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_mon(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create mon daemon(s)"""
         raise NotImplementedError()
 
-    def apply_mon(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_mon(self, spec: ServiceSpec) -> Completion[str]:
         """Update mon cluster"""
         raise NotImplementedError()
 
-    def add_mgr(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_mgr(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create mgr daemon(s)"""
         raise NotImplementedError()
 
-    def apply_mgr(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_mgr(self, spec: ServiceSpec) -> Completion[str]:
         """Update mgr cluster"""
         raise NotImplementedError()
 
-    def add_mds(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_mds(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create MDS daemon(s)"""
         raise NotImplementedError()
 
-    def apply_mds(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_mds(self, spec: ServiceSpec) -> Completion[str]:
         """Update MDS cluster"""
         raise NotImplementedError()
 
-    def add_rgw(self, spec):
-        # type: (RGWSpec) -> Completion
+    def add_rgw(self, spec: RGWSpec) -> Completion[List[str]]:
         """Create RGW daemon(s)"""
         raise NotImplementedError()
 
-    def apply_rgw(self, spec):
-        # type: (RGWSpec) -> Completion
+    def apply_rgw(self, spec: RGWSpec) -> Completion[str]:
         """Update RGW cluster"""
         raise NotImplementedError()
 
-    def add_rbd_mirror(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_rbd_mirror(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create rbd-mirror daemon(s)"""
         raise NotImplementedError()
 
-    def apply_rbd_mirror(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_rbd_mirror(self, spec: ServiceSpec) -> Completion[str]:
         """Update rbd-mirror cluster"""
         raise NotImplementedError()
 
-    def add_nfs(self, spec):
-        # type: (NFSServiceSpec) -> Completion
+    def add_nfs(self, spec: NFSServiceSpec) -> Completion[List[str]]:
         """Create NFS daemon(s)"""
         raise NotImplementedError()
 
-    def apply_nfs(self, spec):
-        # type: (NFSServiceSpec) -> Completion
+    def apply_nfs(self, spec: NFSServiceSpec) -> Completion[str]:
         """Update NFS cluster"""
         raise NotImplementedError()
 
-    def add_iscsi(self, spec):
-        # type: (IscsiServiceSpec) -> Completion
+    def add_iscsi(self, spec: IscsiServiceSpec) -> Completion[List[str]]:
         """Create iscsi daemon(s)"""
         raise NotImplementedError()
 
-    def apply_iscsi(self, spec):
-        # type: (IscsiServiceSpec) -> Completion
+    def apply_iscsi(self, spec: IscsiServiceSpec) -> Completion[str]:
         """Update iscsi cluster"""
         raise NotImplementedError()
 
-    def add_prometheus(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_prometheus(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create new prometheus daemon"""
         raise NotImplementedError()
 
-    def apply_prometheus(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_prometheus(self, spec: ServiceSpec) -> Completion[str]:
         """Update prometheus cluster"""
         raise NotImplementedError()
 
-    def add_node_exporter(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_node_exporter(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create a new Node-Exporter service"""
         raise NotImplementedError()
 
-    def apply_node_exporter(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_node_exporter(self, spec: ServiceSpec) -> Completion[str]:
         """Update existing a Node-Exporter daemon(s)"""
         raise NotImplementedError()
 
-    def add_crash(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_crash(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create a new crash service"""
         raise NotImplementedError()
 
-    def apply_crash(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_crash(self, spec: ServiceSpec) -> Completion[str]:
         """Update existing a crash daemon(s)"""
         raise NotImplementedError()
 
-    def add_grafana(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_grafana(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create a new Node-Exporter service"""
         raise NotImplementedError()
 
-    def apply_grafana(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_grafana(self, spec: ServiceSpec) -> Completion[str]:
         """Update existing a Node-Exporter daemon(s)"""
         raise NotImplementedError()
 
-    def add_alertmanager(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def add_alertmanager(self, spec: ServiceSpec) -> Completion[List[str]]:
         """Create a new AlertManager service"""
         raise NotImplementedError()
 
-    def apply_alertmanager(self, spec):
-        # type: (ServiceSpec) -> Completion
+    def apply_alertmanager(self, spec: ServiceSpec) -> Completion[str]:
         """Update an existing AlertManager daemon(s)"""
         raise NotImplementedError()
 
-    def upgrade_check(self, image, version):
-        # type: (Optional[str], Optional[str]) -> Completion
+    def upgrade_check(self, image: Optional[str], version: Optional[str]) -> Completion[str]:
         raise NotImplementedError()
 
-    def upgrade_start(self, image, version):
-        # type: (Optional[str], Optional[str]) -> Completion
+    def upgrade_start(self, image: Optional[str], version: Optional[str]) -> Completion[str]:
         raise NotImplementedError()
 
-    def upgrade_pause(self):
-        # type: () -> Completion
+    def upgrade_pause(self) -> Completion[str]:
         raise NotImplementedError()
 
-    def upgrade_resume(self):
-        # type: () -> Completion
+    def upgrade_resume(self) -> Completion[str]:
         raise NotImplementedError()
 
-    def upgrade_stop(self):
-        # type: () -> Completion
+    def upgrade_stop(self) -> Completion[str]:
         raise NotImplementedError()
 
-    def upgrade_status(self):
-        # type: () -> Completion
+    def upgrade_status(self) -> Completion['UpgradeStatusSpec']:
         """
         If an upgrade is currently underway, report on where
         we are in the process, or if some error has occurred.
@@ -1152,8 +1132,7 @@ class Orchestrator(object):
         raise NotImplementedError()
 
     @_hide_in_features
-    def upgrade_available(self):
-        # type: () -> Completion
+    def upgrade_available(self) -> Completion:
         """
         Report on what versions are available to upgrade to
 
@@ -1162,71 +1141,16 @@ class Orchestrator(object):
         raise NotImplementedError()
 
 
-class HostSpec(object):
-    """
-    Information about hosts. Like e.g. ``kubectl get nodes``
-    """
-    def __init__(self,
-                 hostname,  # type: str
-                 addr=None,  # type: Optional[str]
-                 labels=None,  # type: Optional[List[str]]
-                 status=None,  # type: Optional[str]
-                 ):
-        self.service_type = 'host'
-
-        #: the bare hostname on the host. Not the FQDN.
-        self.hostname = hostname  # type: str
-
-        #: DNS name or IP address to reach it
-        self.addr = addr or hostname  # type: str
-
-        #: label(s), if any
-        self.labels = labels or []  # type: List[str]
-
-        #: human readable status
-        self.status = status or ''  # type: str
-
-    def to_json(self):
-        return {
-            'hostname': self.hostname,
-            'addr': self.addr,
-            'labels': self.labels,
-            'status': self.status,
-        }
-
-    @classmethod
-    def from_json(cls, host_spec):
-        _cls = cls(host_spec['hostname'],
-                   host_spec['addr'] if 'addr' in host_spec else None,
-                   host_spec['labels'] if 'labels' in host_spec else None)
-        return _cls
-
-    def __repr__(self):
-        args = [self.hostname]  # type: List[Any]
-        if self.addr is not None:
-            args.append(self.addr)
-        if self.labels:
-            args.append(self.labels)
-        if self.status:
-            args.append(self.status)
-
-        return "<HostSpec>({})".format(', '.join(map(repr, args)))
-
-    def __eq__(self, other):
-        # Let's omit `status` for the moment, as it is still the very same host.
-        return self.hostname == other.hostname and \
-               self.addr == other.addr and \
-               self.labels == other.labels
-
 GenericSpec = Union[ServiceSpec, HostSpec]
 
-def json_to_generic_spec(spec):
-    # type: (dict) -> GenericSpec
+
+def json_to_generic_spec(spec: dict) -> GenericSpec:
     if 'service_type' in spec and spec['service_type'] == 'host':
         return HostSpec.from_json(spec)
     else:
         return ServiceSpec.from_json(spec)
 
+
 class UpgradeStatusSpec(object):
     # Orchestrator's report on what's going on with any ongoing upgrade
     def __init__(self):
@@ -1275,9 +1199,12 @@ class DaemonDescription(object):
                  started=None,
                  last_configured=None,
                  osdspec_affinity=None,
-                 last_deployed=None):
+                 last_deployed=None,
+                 events: Optional[List['OrchestratorEvent']] = None,
+                 is_active: bool=False):
+
         # Host is at the same granularity as InventoryHost
-        self.hostname = hostname
+        self.hostname: str = hostname
 
         # Not everyone runs in containers, but enough people do to
         # justify having the container_id (runtime id) and container_image
@@ -1293,7 +1220,7 @@ class DaemonDescription(object):
         # typically either based on hostnames or on pod names.
         # This is the <foo> in mds.<foo>, the ID that will appear
         # in the FSMap/ServiceMap.
-        self.daemon_id = daemon_id
+        self.daemon_id: str = daemon_id
 
         # Service version that was deployed
         self.version = version
@@ -1305,29 +1232,35 @@ class DaemonDescription(object):
         self.status_desc = status_desc
 
         # datetime when this info was last refreshed
-        self.last_refresh = last_refresh  # type: Optional[datetime.datetime]
+        self.last_refresh: Optional[datetime.datetime] = last_refresh
 
-        self.created = created    # type: Optional[datetime.datetime]
-        self.started = started    # type: Optional[datetime.datetime]
-        self.last_configured = last_configured # type: Optional[datetime.datetime]
-        self.last_deployed = last_deployed    # type: Optional[datetime.datetime]
+        self.created: Optional[datetime.datetime] = created
+        self.started: Optional[datetime.datetime] = started
+        self.last_configured: Optional[datetime.datetime] = last_configured
+        self.last_deployed: Optional[datetime.datetime] = last_deployed
 
         # Affinity to a certain OSDSpec
-        self.osdspec_affinity = osdspec_affinity  # type: Optional[str]
+        self.osdspec_affinity: Optional[str] = osdspec_affinity
+
+        self.events: List[OrchestratorEvent] = events or []
+        
+        self.is_active = is_active
 
     def name(self):
         return '%s.%s' % (self.daemon_type, self.daemon_id)
 
-    def matches_service(self, service_name):
-        # type: (Optional[str]) -> bool
+    def matches_service(self, service_name: Optional[str]) -> bool:
         if service_name:
             return self.name().startswith(service_name + '.')
         return False
 
     def service_id(self):
+        if self.daemon_type == 'osd' and self.osdspec_affinity:
+            return self.osdspec_affinity
+
         def _match():
-            err = OrchestratorError("DaemonDescription: Cannot calculate service_id: " \
-                    f"daemon_id='{self.daemon_id}' hostname='{self.hostname}'")
+            err = OrchestratorError("DaemonDescription: Cannot calculate service_id: "
+                                    f"daemon_id='{self.daemon_id}' hostname='{self.hostname}'")
 
             if not self.hostname:
                 # TODO: can a DaemonDescription exist without a hostname?
@@ -1361,13 +1294,13 @@ class DaemonDescription(object):
             # daemon_id == "service_id"
             return self.daemon_id
 
-        if self.daemon_type in ['mds', 'nfs', 'iscsi', 'rgw']:
+        if self.daemon_type in ServiceSpec.REQUIRES_SERVICE_ID:
             return _match()
 
         return self.daemon_id
 
     def service_name(self):
-        if self.daemon_type in ['rgw', 'mds', 'nfs', 'iscsi']:
+        if self.daemon_type in ServiceSpec.REQUIRES_SERVICE_ID:
             return f'{self.daemon_type}.{self.service_id()}'
         return self.daemon_type
 
@@ -1376,37 +1309,57 @@ class DaemonDescription(object):
                                                          id=self.daemon_id)
 
     def to_json(self):
-        out = {
-            'hostname': self.hostname,
-            'container_id': self.container_id,
-            'container_image_id': self.container_image_id,
-            'container_image_name': self.container_image_name,
-            'daemon_id': self.daemon_id,
-            'daemon_type': self.daemon_type,
-            'version': self.version,
-            'status': self.status,
-            'status_desc': self.status_desc,
-        }
+        out = OrderedDict()
+        out['daemon_type'] = self.daemon_type
+        out['daemon_id'] = self.daemon_id
+        out['hostname'] = self.hostname
+        out['container_id'] = self.container_id
+        out['container_image_id'] = self.container_image_id
+        out['container_image_name'] = self.container_image_name
+        out['version'] = self.version
+        out['status'] = self.status
+        out['status_desc'] = self.status_desc
+        if self.daemon_type == 'osd':
+            out['osdspec_affinity'] = self.osdspec_affinity
+        out['is_active'] = self.is_active
+
         for k in ['last_refresh', 'created', 'started', 'last_deployed',
                   'last_configured']:
             if getattr(self, k):
                 out[k] = getattr(self, k).strftime(DATEFMT)
-        return {k: v for (k, v) in out.items() if v is not None}
+
+        if self.events:
+            out['events'] = [e.to_json() for e in self.events]
+
+        empty = [k for k, v in out.items() if v is None]
+        for e in empty:
+            del out[e]
+        return out
 
     @classmethod
     @handle_type_error
     def from_json(cls, data):
         c = data.copy()
+        event_strs = c.pop('events', [])
         for k in ['last_refresh', 'created', 'started', 'last_deployed',
                   'last_configured']:
             if k in c:
                 c[k] = datetime.datetime.strptime(c[k], DATEFMT)
-        return cls(**c)
+        events = [OrchestratorEvent.from_json(e) for e in event_strs]
+        return cls(events=events, **c)
 
     def __copy__(self):
         # feel free to change this:
         return DaemonDescription.from_json(self.to_json())
 
+    @staticmethod
+    def yaml_representer(dumper: 'yaml.SafeDumper', data: 'DaemonDescription'):
+        return dumper.represent_dict(data.to_json().items())
+
+
+yaml.add_representer(DaemonDescription, DaemonDescription.yaml_representer)
+
+
 class ServiceDescription(object):
     """
     For responding to queries about the status of a particular service,
@@ -1429,7 +1382,8 @@ class ServiceDescription(object):
                  last_refresh=None,
                  created=None,
                  size=0,
-                 running=0):
+                 running=0,
+                 events: Optional[List['OrchestratorEvent']] = None):
         # Not everyone runs in containers, but enough people do to
         # justify having the container_image_id (image hash) and container_image
         # (image name)
@@ -1451,18 +1405,20 @@ class ServiceDescription(object):
         self.running = running
 
         # datetime when this info was last refreshed
-        self.last_refresh = last_refresh   # type: Optional[datetime.datetime]
-        self.created = created   # type: Optional[datetime.datetime]
+        self.last_refresh: Optional[datetime.datetime] = last_refresh
+        self.created: Optional[datetime.datetime] = created
 
         self.spec: ServiceSpec = spec
 
+        self.events: List[OrchestratorEvent] = events or []
+
     def service_type(self):
         return self.spec.service_type
 
     def __repr__(self):
         return f"<ServiceDescription of {self.spec.one_line_str()}>"
 
-    def to_json(self):
+    def to_json(self) -> OrderedDict:
         out = self.spec.to_json()
         status = {
             'container_image_id': self.container_image_id,
@@ -1472,13 +1428,15 @@ class ServiceDescription(object):
             'size': self.size,
             'running': self.running,
             'last_refresh': self.last_refresh,
-            'created': self.created
+            'created': self.created,
         }
         for k in ['last_refresh', 'created']:
             if getattr(self, k):
                 status[k] = getattr(self, k).strftime(DATEFMT)
         status = {k: v for (k, v) in status.items() if v is not None}
         out['status'] = status
+        if self.events:
+            out['events'] = [e.to_json() for e in self.events]
         return out
 
     @classmethod
@@ -1486,13 +1444,22 @@ class ServiceDescription(object):
     def from_json(cls, data: dict):
         c = data.copy()
         status = c.pop('status', {})
+        event_strs = c.pop('events', [])
         spec = ServiceSpec.from_json(c)
 
         c_status = status.copy()
         for k in ['last_refresh', 'created']:
             if k in c_status:
                 c_status[k] = datetime.datetime.strptime(c_status[k], DATEFMT)
-        return cls(spec=spec, **c_status)
+        events = [OrchestratorEvent.from_json(e) for e in event_strs]
+        return cls(spec=spec, events=events, **c_status)
+
+    @staticmethod
+    def yaml_representer(dumper: 'yaml.SafeDumper', data: 'DaemonDescription'):
+        return dumper.represent_dict(data.to_json().items())
+
+
+yaml.add_representer(ServiceDescription, ServiceDescription.yaml_representer)
 
 
 class InventoryFilter(object):
@@ -1508,8 +1475,8 @@ class InventoryFilter(object):
                  in e.g. OSD servers.
 
     """
-    def __init__(self, labels=None, hosts=None):
-        # type: (Optional[List[str]], Optional[List[str]]) -> None
+
+    def __init__(self, labels: Optional[List[str]] = None, hosts: Optional[List[str]] = None) -> None:
 
         #: Optional: get info about hosts matching labels
         self.labels = labels
@@ -1523,8 +1490,8 @@ class InventoryHost(object):
     When fetching inventory, all Devices are groups inside of an
     InventoryHost.
     """
-    def __init__(self, name, devices=None, labels=None, addr=None):
-        # type: (str, Optional[inventory.Devices], Optional[List[str]], Optional[str]) -> None
+
+    def __init__(self, name: str, devices: Optional[inventory.Devices] = None, labels: Optional[List[str]] = None, addr: Optional[str] = None) -> None:
         if devices is None:
             devices = inventory.Devices([])
         if labels is None:
@@ -1562,7 +1529,6 @@ class InventoryHost(object):
         except TypeError as e:
             raise OrchestratorValidationError('Failed to read inventory: {}'.format(e))
 
-
     @classmethod
     def from_nested_items(cls, hosts):
         devs = inventory.Devices.from_json
@@ -1572,8 +1538,7 @@ class InventoryHost(object):
         return "<InventoryHost>({name})".format(name=self.name)
 
     @staticmethod
-    def get_host_names(hosts):
-        # type: (List[InventoryHost]) -> List[str]
+    def get_host_names(hosts: List['InventoryHost']) -> List[str]:
         return [host.name for host in hosts]
 
     def __eq__(self, other):
@@ -1593,6 +1558,66 @@ class DeviceLightLoc(namedtuple('DeviceLightLoc', ['host', 'dev', 'path'])):
     __slots__ = ()
 
 
+class OrchestratorEvent:
+    """
+    Similar to K8s Events.
+
+    Some form of "important" log message attached to something.
+    """
+    INFO = 'INFO'
+    ERROR = 'ERROR'
+    regex_v1 = re.compile(r'^([^ ]+) ([^:]+):([^ ]+) \[([^\]]+)\] "((?:.|\n)*)"$', re.MULTILINE)
+
+    def __init__(self, created: Union[str, datetime.datetime], kind, subject, level, message):
+        if isinstance(created, str):
+            created = datetime.datetime.strptime(created, DATEFMT)
+        self.created: datetime.datetime = created
+
+        assert kind in "service daemon".split()
+        self.kind: str = kind
+
+        # service name, or daemon danem or something
+        self.subject: str = subject
+
+        # Events are not meant for debugging. debugs should end in the log.
+        assert level in "INFO ERROR".split()
+        self.level = level
+
+        self.message: str = message
+
+    __slots__ = ('created', 'kind', 'subject', 'level', 'message')
+
+    def kind_subject(self) -> str:
+        return f'{self.kind}:{self.subject}'
+
+    def to_json(self) -> str:
+        # Make a long list of events readable.
+        created = self.created.strftime(DATEFMT)
+        return f'{created} {self.kind_subject()} [{self.level}] "{self.message}"'
+
+    @classmethod
+    @handle_type_error
+    def from_json(cls, data) -> "OrchestratorEvent":
+        """
+        >>> OrchestratorEvent.from_json('''2020-06-10T10:20:25.691255 daemon:crash.ubuntu [INFO] "Deployed crash.ubuntu on host 'ubuntu'"''').to_json()
+        '2020-06-10T10:20:25.691255 daemon:crash.ubuntu [INFO] "Deployed crash.ubuntu on host \\'ubuntu\\'"'
+
+        :param data:
+        :return:
+        """
+        match = cls.regex_v1.match(data)
+        if match:
+            return cls(*match.groups())
+        raise ValueError(f'Unable to match: "{data}"')
+
+    def __eq__(self, other):
+        if not isinstance(other, OrchestratorEvent):
+            return False
+
+        return self.created == other.created and self.kind == other.kind \
+            and self.subject == other.subject and self.message == other.message
+
+
 def _mk_orch_methods(cls):
     # Needs to be defined outside of for.
     # Otherwise meth is always bound to last key
@@ -1636,8 +1661,7 @@ class OrchestratorClientMixin(Orchestrator):
     ...         self.orch_client.set_mgr(self.mgr))
     """
 
-    def set_mgr(self, mgr):
-        # type: (MgrModule) -> None
+    def set_mgr(self, mgr: MgrModule) -> None:
         """
         Useable in the Dashbord that uses a global ``mgr``
         """
@@ -1679,8 +1703,7 @@ class OrchestratorClientMixin(Orchestrator):
                 raise NotImplementedError(f'{o} does not implement {meth}') from e
             raise
 
-    def _orchestrator_wait(self, completions):
-        # type: (List[Completion]) -> None
+    def _orchestrator_wait(self, completions: List[Completion]) -> None:
         """
         Wait for completions to complete (reads) or
         become persistent (writes).
index 7947cdb408c4ea019fb7280cf6421362c7e06eba..af9813f61755c28c833fbfeb58c3e0fd4f9b3020 100644 (file)
@@ -1,7 +1,7 @@
 import datetime
 import errno
 import json
-from typing import List, Set, Optional, Iterator, cast
+from typing import List, Set, Optional, Iterator, cast, Dict, Any, Union
 import re
 import ast
 
@@ -30,13 +30,114 @@ def nice_delta(now, t, suffix=''):
         return '-'
 
 
-def to_format(what, format):
+def to_format(what, format: str, many: bool, cls):
+    def to_json_1(obj):
+        if hasattr(obj, 'to_json'):
+            return obj.to_json()
+        return obj
+
+    def to_json_n(objs):
+        return [to_json_1(o) for o in objs]
+
+    to_json = to_json_n if many else to_json_1
+
     if format == 'json':
-        return json.dumps(what, sort_keys=True)
+        return json.dumps(to_json(what), sort_keys=True)
     elif format == 'json-pretty':
-        return json.dumps(what, indent=2, sort_keys=True)
+        return json.dumps(to_json(what), indent=2, sort_keys=True)
     elif format == 'yaml':
-        return yaml.safe_dump_all(what, default_flow_style=False)
+        # fun with subinterpreters again. pyyaml depends on object identity.
+        # as what originates from a different subinterpreter we have to copy things here.
+        if cls:
+            flat = to_json(what)
+            copy = [cls.from_json(o) for o in flat] if many else cls.from_json(flat)
+        else:
+            copy = what
+
+        def to_yaml_1(obj):
+            if hasattr(obj, 'yaml_representer'):
+                return obj
+            return to_json_1(obj)
+
+        def to_yaml_n(objs):
+            return [to_yaml_1(o) for o in objs]
+
+        to_yaml = to_yaml_n if many else to_yaml_1
+
+        if many:
+            return yaml.dump_all(to_yaml(copy), default_flow_style=False)
+        return yaml.dump(to_yaml(copy), default_flow_style=False)
+    else:
+        raise OrchestratorError(f'unsupported format type: {format}')
+
+
+def generate_preview_tables(data):
+    error = [x.get('error') for x in data if x.get('error')]
+    if error:
+        return json.dumps(error)
+    warning = [x.get('warning') for x in data if x.get('warning')]
+    osd_table = preview_table_osd(data)
+    service_table = preview_table_services(data)
+    tables = f"""
+{''.join(warning)}
+
+####################
+SERVICESPEC PREVIEWS
+####################
+{service_table}
+
+################
+OSDSPEC PREVIEWS
+################
+{osd_table}
+"""
+    return tables
+
+
+def preview_table_osd(data):
+    table = PrettyTable(header_style='upper', title='OSDSPEC PREVIEWS', border=True)
+    table.field_names = "service name host data db wal".split()
+    table.align = 'l'
+    table.left_padding_width = 0
+    table.right_padding_width = 2
+    for osd_data in data:
+        if osd_data.get('service_type') != 'osd':
+            continue
+        for host, specs in osd_data.get('data').items():
+            for spec in specs:
+                if spec.get('error'):
+                    return spec.get('message')
+                dg_name = spec.get('osdspec')
+                for osd in spec.get('data', {}).get('osds', []):
+                    db_path = '-'
+                    wal_path = '-'
+                    block_db = osd.get('block.db', {}).get('path')
+                    block_wal = osd.get('block.wal', {}).get('path')
+                    block_data = osd.get('data', {}).get('path', '')
+                    if not block_data:
+                        continue
+                    if block_db:
+                        db_path = spec.get('data', {}).get('vg', {}).get('devices', [])
+                    if block_wal:
+                        wal_path = spec.get('data', {}).get('wal_vg', {}).get('devices', [])
+                    table.add_row(('osd', dg_name, host, block_data, db_path, wal_path))
+    return table.get_string()
+
+
+def preview_table_services(data):
+    table = PrettyTable(header_style='upper', title="SERVICESPEC PREVIEW", border=True)
+    table.field_names = 'SERVICE NAME ADD_TO REMOVE_FROM'.split()
+    table.align = 'l'
+    table.left_padding_width = 0
+    table.right_padding_width = 2
+    for item in data:
+        if item.get('warning'):
+            continue
+        if item.get('service_type') != 'osd':
+            table.add_row((item.get('service_type'), item.get('service_name'),
+                           " ".join(item.get('add')), " ".join(item.get('remove'))))
+    return table.get_string()
+
 
 
 @six.add_metaclass(CLICommandMeta)
@@ -216,9 +317,7 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule):
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
         if format != 'plain':
-            hosts = [host.to_json()
-                     for host in completion.result]
-            output = to_format(hosts, format)
+            output = to_format(completion.result, format, many=True, cls=HostSpec)
         else:
             table = PrettyTable(
                 ['HOST', 'ADDR', 'LABELS', 'STATUS'],
@@ -253,6 +352,16 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule):
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
+    @_cli_write_command(
+        'orch host ok-to-stop',
+        'name=hostname,type=CephString',
+        desc='Check if the specified host can be safely stopped without reducing availability')
+    def _host_ok_to_stop(self, hostname: str):
+        completion = self.host_ok_to_stop(hostname)
+        self._orchestrator_wait([completion])
+        raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
     @_cli_read_command(
         'orch device ls',
         "name=hostname,type=CephString,n=N,req=false "
@@ -276,13 +385,12 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule):
         raise_if_exception(completion)
 
         if format != 'plain':
-            data = [n.to_json() for n in completion.result]
-            return HandleCommandResult(stdout=to_format(data, format))
+            return HandleCommandResult(stdout=to_format(completion.result, format, many=True, cls=InventoryHost))
         else:
             out = []
 
             table = PrettyTable(
-                ['HOST', 'PATH', 'TYPE', 'SIZE', 'DEVICE', 'AVAIL',
+                ['HOST', 'PATH', 'TYPE', 'SIZE', 'DEVICE_ID', 'MODEL', 'VENDOR', 'ROTATIONAL', 'AVAIL',
                  'REJECT REASONS'],
                 border=False)
             table.align = 'l'
@@ -298,6 +406,9 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule):
                             d.human_readable_type,
                             format_bytes(d.sys_api.get('size', 0), 5),
                             d.device_id,
+                            d.sys_api.get('model') or 'n/a',
+                            d.sys_api.get('vendor') or 'n/a',
+                            d.sys_api.get('rotational') or 'n/a',
                             d.available,
                             ', '.join(d.rejected_reasons)
                         )
@@ -349,16 +460,16 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule):
             return HandleCommandResult(stdout="No services reported")
         elif format != 'plain':
             if export:
-                data = [s.spec.to_json() for s in services]
+                data = [s.spec for s in services]
+                return HandleCommandResult(stdout=to_format(data, format, many=True, cls=ServiceSpec))
             else:
-                data = [s.to_json() for s in services]
-            return HandleCommandResult(stdout=to_format(data, format))
+                return HandleCommandResult(stdout=to_format(services, format, many=True, cls=ServiceDescription))
         else:
             now = datetime.datetime.utcnow()
             table = PrettyTable(
                 ['NAME', 'RUNNING', 'REFRESHED', 'AGE',
                  'PLACEMENT',
-                 'IMAGE NAME', 'IMAGE ID',
+                 'IMAGE NAME', 'IMAGE ID'
                 ],
                 border=False)
             table.align['NAME'] = 'l'
@@ -413,12 +524,12 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule):
         # Sort the list for display
         daemons.sort(key=lambda s: (ukn(s.daemon_type), ukn(s.hostname), ukn(s.daemon_id)))
 
-        if len(daemons) == 0:
-            return HandleCommandResult(stdout="No daemons reported")
-        elif format != 'plain':
-            data = [s.to_json() for s in daemons]
-            return HandleCommandResult(stdout=to_format(data, format))
+        if format != 'plain':
+            return HandleCommandResult(stdout=to_format(daemons, format, many=True, cls=DaemonDescription))
         else:
+            if len(daemons) == 0:
+                return HandleCommandResult(stdout="No daemons reported")
+
             now = datetime.datetime.utcnow()
             table = PrettyTable(
                 ['NAME', 'HOST', 'STATUS', 'REFRESHED', 'AGE',
@@ -453,164 +564,24 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule):
 
             return HandleCommandResult(stdout=table.get_string())
 
-    def set_unmanaged_flag(self,
-                           unmanaged_flag: bool,
-                           service_type: str = 'osd',
-                           service_name=None
-                           ) -> HandleCommandResult:
-        # setting unmanaged for $service_name
-        completion = self.describe_service(service_name=service_name, service_type=service_type)
-        self._orchestrator_wait([completion])
-        raise_if_exception(completion)
-        services: List[ServiceDescription] = completion.result
-        specs = list()
-        for service in services:
-            spec = service.spec
-            spec.unmanaged = unmanaged_flag
-            specs.append(spec)
-        completion = self.apply(cast(List[GenericSpec], specs))
-        self._orchestrator_wait([completion])
-        raise_if_exception(completion)
-        if specs:
-            return HandleCommandResult(stdout=f"Changed <unmanaged> flag to <{unmanaged_flag}> for "
-                                              f"{[spec.service_name() for spec in specs]}")
-        else:
-            return HandleCommandResult(stdout=f"No specs found with the <service_name> -> {service_name}")
-
-    @_cli_write_command(
-        'orch osd spec',
-        'name=service_name,type=CephString,req=false '
-        'name=preview,type=CephBool,req=false '
-        'name=unmanaged,type=CephBool,req=false '
-        "name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false",
-        'Common operations on an OSDSpec. Allows previewing and changing the unmanaged flag.')
-    def _misc_osd(self,
-                  preview: bool = False,
-                  service_name: Optional[str] = None,
-                  unmanaged=None,
-                  format: Optional[str] = 'plain',
-                  ) -> HandleCommandResult:
-        usage = """
-usage:
-  ceph orch osd spec --preview
-  ceph orch osd spec --unmanaged=true|false 
-  ceph orch osd spec --service-name <service_name> --preview
-  ceph orch osd spec --service-name <service_name> --unmanaged=true|false (defaults to false)
-  
-Restrictions:
-
-    Mutexes:
-    * --preview ,--unmanaged 
-
-    Although it it's possible to set these at the same time, we will lack a proper response to each
-    action, possibly shadowing any failures.
-
-Description:
-
-    * --service-name
-        If flag is omitted, assume to target all existing OSDSpecs.
-        Needs either --unamanged or --preview.
-
-    * --unmanaged
-        Applies <unamanged> flag to targeted --service-name.
-        If --service-name is omitted, target all OSDSpecs
-        
-Examples:
-
-    # ceph orch osd spec --preview
-    
-    Queries all available OSDSpecs for previews
-    
-    # ceph orch osd spec --service-name my-osdspec-name --preview
-    
-    Queries only the specified <my-osdspec-name> for previews
-    
-    # ceph orch osd spec --unmanaged=true
-    
-    # Changes flags of all available OSDSpecs to true
-    
-    # ceph orch osd spec --service-name my-osdspec-name --unmanaged=true
-    
-    Changes the unmanaged flag of <my-osdspec-name> to true
-"""
-
-        def print_preview(previews, format_to):
-            if format != 'plain':
-                return to_format(previews, format_to)
-            else:
-                table = PrettyTable(
-                    ['NAME', 'HOST', 'DATA', 'DB', 'WAL'],
-                    border=False)
-                table.align = 'l'
-                table.left_padding_width = 0
-                table.right_padding_width = 1
-                for host, data in previews.items():
-                    for spec in data:
-                        if spec.get('error'):
-                            return spec.get('message')
-                        dg_name = spec.get('osdspec')
-                        for osd in spec.get('data', {}).get('osds', []):
-                            db_path = '-'
-                            wal_path = '-'
-                            block_db = osd.get('block.db', {}).get('path')
-                            block_wal = osd.get('block.wal', {}).get('path')
-                            block_data = osd.get('data', {}).get('path', '')
-                            if not block_data:
-                                continue
-                            if block_db:
-                                db_path = spec.get('data', {}).get('vg', {}).get('devices', [])
-                            if block_wal:
-                                wal_path = spec.get('data', {}).get('wal_vg', {}).get('devices', [])
-                            table.add_row((dg_name, host, block_data, db_path, wal_path))
-                ret = table.get_string()
-                if not ret:
-                    ret = "No preview available"
-                return ret
-
-        if preview and (unmanaged is not None):
-            return HandleCommandResult(-errno.EINVAL, stderr=usage)
-
-        if service_name:
-            if preview:
-                completion = self.preview_osdspecs(osdspec_name=service_name)
-                self._orchestrator_wait([completion])
-                raise_if_exception(completion)
-                out = completion.result_str()
-                return HandleCommandResult(stdout=print_preview(ast.literal_eval(out), format))
-            if unmanaged is not None:
-                return self.set_unmanaged_flag(service_name=service_name, unmanaged_flag=unmanaged)
-
-            return HandleCommandResult(-errno.EINVAL, stderr=usage)
-
-        if preview:
-            completion = self.preview_osdspecs()
-            self._orchestrator_wait([completion])
-            raise_if_exception(completion)
-            out = completion.result_str()
-            return HandleCommandResult(stdout=print_preview(ast.literal_eval(out), format))
-
-        if unmanaged is not None:
-            return self.set_unmanaged_flag(unmanaged_flag=unmanaged)
-
-        return HandleCommandResult(-errno.EINVAL, stderr=usage)
-
     @_cli_write_command(
         'orch apply osd',
         'name=all_available_devices,type=CephBool,req=false '
+        'name=dry_run,type=CephBool,req=false '
         'name=unmanaged,type=CephBool,req=false '
         "name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false",
         'Create OSD daemon(s) using a drive group spec')
     def _apply_osd(self,
                    all_available_devices: bool = False,
-                   format: Optional[str] = 'plain',
+                   format: str = 'plain',
                    unmanaged=None,
+                   dry_run=None,
                    inbuf: Optional[str] = None) -> HandleCommandResult:
         """Apply DriveGroupSpecs to create OSDs"""
         usage = """
 usage:
-  ceph orch apply osd -i <json_file/yaml_file>
-  ceph orch apply osd --all-available-devices
-  ceph orch apply osd --all-available-devices --unmanaged=true|false 
+  ceph orch apply osd -i <json_file/yaml_file> [--dry-run]
+  ceph orch apply osd --all-available-devices [--dry-run] [--unmanaged]
   
 Restrictions:
   
@@ -658,13 +629,30 @@ Examples:
             if unmanaged is not None:
                 return HandleCommandResult(-errno.EINVAL, stderr=usage)
             try:
-                drivegroups = yaml.load_all(inbuf)
-                dg_specs = [DriveGroupSpec.from_json(dg) for dg in drivegroups]
-                # This acts weird when abstracted to a function
-                completion = self.apply_drivegroups(dg_specs)
+                drivegroups = yaml.safe_load_all(inbuf)
+
+                dg_specs = []
+                for dg in drivegroups:
+                    spec = DriveGroupSpec.from_json(dg)
+                    if dry_run:
+                        spec.preview_only = True
+                    dg_specs.append(spec)
+
+                completion = self.apply(dg_specs)
                 self._orchestrator_wait([completion])
                 raise_if_exception(completion)
-                return HandleCommandResult(stdout=completion.result_str())
+                out = completion.result_str()
+                if dry_run:
+                    completion = self.plan(dg_specs)
+                    self._orchestrator_wait([completion])
+                    raise_if_exception(completion)
+                    data = completion.result
+                    if format == 'plain':
+                        out = preview_table_osd(data)
+                    else:
+                        out = to_format(data, format, many=True, cls=None)
+                return HandleCommandResult(stdout=out)
+
             except ValueError as e:
                 msg = 'Failed to read JSON/YAML input: {}'.format(str(e)) + usage
                 return HandleCommandResult(-errno.EINVAL, stderr=msg)
@@ -676,14 +664,24 @@ Examples:
                     service_id='all-available-devices',
                     placement=PlacementSpec(host_pattern='*'),
                     data_devices=DeviceSelection(all=True),
-                    unmanaged=unmanaged
+                    unmanaged=unmanaged,
+                    preview_only=dry_run
                 )
             ]
             # This acts weird when abstracted to a function
-            completion = self.apply_drivegroups(dg_specs)
+            completion = self.apply(dg_specs)
             self._orchestrator_wait([completion])
             raise_if_exception(completion)
-            return HandleCommandResult(stdout=completion.result_str())
+            out = completion.result_str()
+            if dry_run:
+                completion = self.plan(dg_specs)
+                self._orchestrator_wait([completion])
+                data = completion.result
+                if format == 'plain':
+                    out = preview_table_osd(data)
+                else:
+                    out = to_format(data, format, many=True, cls=None)
+            return HandleCommandResult(stdout=out)
 
         return HandleCommandResult(-errno.EINVAL, stderr=usage)
 
@@ -721,35 +719,53 @@ Usage:
         "name=replace,type=CephBool,req=false "
         "name=force,type=CephBool,req=false",
         'Remove OSD services')
-    def _osd_rm(self, svc_id: List[str],
-                replace: bool = False,
-                force: bool = False) -> HandleCommandResult:
-        completion = self.remove_osds(svc_id, replace, force)
+    def _osd_rm_start(self,
+                      svc_id: List[str],
+                      replace: bool = False,
+                      force: bool = False) -> HandleCommandResult:
+        completion = self.remove_osds(svc_id, replace=replace, force=force)
+        self._orchestrator_wait([completion])
+        raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
+    @_cli_write_command(
+        'orch osd rm stop',
+        "name=svc_id,type=CephString,n=N",
+        'Remove OSD services')
+    def _osd_rm_stop(self, svc_id: List[str]) -> HandleCommandResult:
+        completion = self.stop_remove_osds(svc_id)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
     @_cli_write_command(
         'orch osd rm status',
+        "name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false",
         desc='status of OSD removal operation')
-    def _osd_rm_status(self) -> HandleCommandResult:
+    def _osd_rm_status(self, format='plain') -> HandleCommandResult:
         completion = self.remove_osds_status()
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
         report = completion.result
+
         if not report:
             return HandleCommandResult(stdout="No OSD remove/replace operations reported")
-        table = PrettyTable(
-            ['NAME', 'HOST', 'PGS', 'STARTED_AT'],
-            border=False)
-        table.align = 'l'
-        table.left_padding_width = 0
-        table.right_padding_width = 1
-        # TODO: re-add sorted and sort by pg_count
-        for osd in report:
-            table.add_row((osd.fullname, osd.nodename, osd.pg_count_str, osd.started_at))
-
-        return HandleCommandResult(stdout=table.get_string())
+
+        if format != 'plain':
+            out = to_format(report, format, many=True, cls=None)
+        else:
+            table = PrettyTable(
+                ['OSD_ID', 'HOST', 'STATE', 'PG_COUNT', 'REPLACE', 'FORCE', 'DRAIN_STARTED_AT'],
+                border=False)
+            table.align = 'l'
+            table.left_padding_width = 0
+            table.right_padding_width = 2
+            for osd in sorted(report, key=lambda o: o.osd_id):
+                table.add_row([osd.osd_id, osd.nodename, osd.drain_status_human(),
+                               osd.get_pg_count(), osd.replace, osd.replace, osd.drain_started_at])
+            out = table.get_string()
+
+        return HandleCommandResult(stdout=out)
 
     @_cli_write_command(
         'orch daemon add',
@@ -885,7 +901,6 @@ Usage:
             placement=PlacementSpec.from_string(placement),
         )
 
-        spec.validate_add()
         completion = self.add_nfs(spec)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
@@ -936,14 +951,26 @@ Usage:
 
     @_cli_write_command(
         'orch daemon',
-        "name=action,type=CephChoices,strings=start|stop|restart|redeploy|reconfig "
+        "name=action,type=CephChoices,strings=start|stop|restart|reconfig "
         "name=name,type=CephString",
-        'Start, stop, restart, redeploy, or reconfig a specific daemon')
+        'Start, stop, restart, (redeploy,) or reconfig a specific daemon')
     def _daemon_action(self, action, name):
         if '.' not in name:
             raise OrchestratorError('%s is not a valid daemon name' % name)
-        (daemon_type, daemon_id) = name.split('.', 1)
-        completion = self.daemon_action(action, daemon_type, daemon_id)
+        completion = self.daemon_action(action, name)
+        self._orchestrator_wait([completion])
+        raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
+    @_cli_write_command(
+        'orch daemon redeploy',
+        "name=name,type=CephString "
+        "name=image,type=CephString,req=false",
+        'Redeploy a daemon (with a specifc image)')
+    def _daemon_action_redeploy(self, name, image):
+        if '.' not in name:
+            raise OrchestratorError('%s is not a valid daemon name' % name)
+        completion = self.daemon_action("redeploy", name, image=image)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
@@ -982,43 +1009,65 @@ Usage:
         'orch apply',
         'name=service_type,type=CephChoices,strings=mon|mgr|rbd-mirror|crash|alertmanager|grafana|node-exporter|prometheus,req=false '
         'name=placement,type=CephString,req=false '
+        'name=dry_run,type=CephBool,req=false '
+        'name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false '
         'name=unmanaged,type=CephBool,req=false',
         'Update the size or placement for a service or apply a large yaml spec')
     def _apply_misc(self,
                     service_type: Optional[str] = None,
                     placement: Optional[str] = None,
+                    dry_run: bool = False,
+                    format: str = 'plain',
                     unmanaged: bool = False,
                     inbuf: Optional[str] = None) -> HandleCommandResult:
         usage = """Usage:
-  ceph orch apply -i <yaml spec>
+  ceph orch apply -i <yaml spec> [--dry-run]
   ceph orch apply <service_type> <placement> [--unmanaged]
         """
         if inbuf:
             if service_type or placement or unmanaged:
                 raise OrchestratorValidationError(usage)
-            content: Iterator = yaml.load_all(inbuf)
-            specs: List[GenericSpec] = [json_to_generic_spec(s) for s in content]
-
+            content: Iterator = yaml.safe_load_all(inbuf)
+            specs: List[Union[ServiceSpec, HostSpec]] = []
+            for s in content:
+                spec = json_to_generic_spec(s)
+                if dry_run and not isinstance(spec, HostSpec):
+                    spec.preview_only = dry_run
+                specs.append(spec)
         else:
-            placmentspec = PlacementSpec.from_string(placement)
+            placementspec = PlacementSpec.from_string(placement)
             assert service_type
-            specs = [ServiceSpec(service_type, placement=placmentspec, unmanaged=unmanaged)]
+            specs = [ServiceSpec(service_type, placement=placementspec, unmanaged=unmanaged, preview_only=dry_run)]
+
         completion = self.apply(specs)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
-        return HandleCommandResult(stdout=completion.result_str())
+        out = completion.result_str()
+        if dry_run:
+            completion = self.plan(specs)
+            self._orchestrator_wait([completion])
+            raise_if_exception(completion)
+            data = completion.result
+            if format == 'plain':
+                out = generate_preview_tables(data)
+            else:
+                out = to_format(data, format, many=True, cls=None)
+        return HandleCommandResult(stdout=out)
 
     @_cli_write_command(
         'orch apply mds',
         'name=fs_name,type=CephString '
         'name=placement,type=CephString,req=false '
-        'name=unmanaged,type=CephBool,req=false',
+        'name=dry_run,type=CephBool,req=false '
+        'name=unmanaged,type=CephBool,req=false '
+        'name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false',
         'Update the number of MDS instances for the given fs_name')
     def _apply_mds(self,
                    fs_name: str,
                    placement: Optional[str] = None,
+                   dry_run: bool = False,
                    unmanaged: bool = False,
+                   format: str = 'plain',
                    inbuf: Optional[str] = None) -> HandleCommandResult:
         if inbuf:
             raise OrchestratorValidationError('unrecognized command -i; -h or --help for usage')
@@ -1027,12 +1076,23 @@ Usage:
             service_type='mds',
             service_id=fs_name,
             placement=PlacementSpec.from_string(placement),
-            unmanaged=unmanaged)
+            unmanaged=unmanaged,
+            preview_only=dry_run)
 
         completion = self.apply_mds(spec)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
-        return HandleCommandResult(stdout=completion.result_str())
+        out = completion.result_str()
+        if dry_run:
+            completion_plan = self.plan([spec])
+            self._orchestrator_wait([completion_plan])
+            raise_if_exception(completion_plan)
+            data = completion_plan.result
+            if format == 'plain':
+                out = preview_table_services(data)
+            else:
+                out = to_format(data, format, many=True, cls=None)
+        return HandleCommandResult(stdout=out)
 
     @_cli_write_command(
         'orch apply rgw',
@@ -1042,6 +1102,8 @@ Usage:
         'name=port,type=CephInt,req=false '
         'name=ssl,type=CephBool,req=false '
         'name=placement,type=CephString,req=false '
+        'name=dry_run,type=CephBool,req=false '
+        'name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false ' 
         'name=unmanaged,type=CephBool,req=false',
         'Update the number of RGW instances for the given zone')
     def _apply_rgw(self,
@@ -1051,6 +1113,8 @@ Usage:
                    port: Optional[int] = None,
                    ssl: bool = False,
                    placement: Optional[str] = None,
+                   dry_run: bool = False,
+                   format: str = 'plain',
                    unmanaged: bool = False,
                    inbuf: Optional[str] = None) -> HandleCommandResult:
         if inbuf:
@@ -1064,12 +1128,23 @@ Usage:
             ssl=ssl,
             placement=PlacementSpec.from_string(placement),
             unmanaged=unmanaged,
+            preview_only=dry_run
         )
 
         completion = self.apply_rgw(spec)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
-        return HandleCommandResult(stdout=completion.result_str())
+        out = completion.result_str()
+        if dry_run:
+            completion_plan = self.plan([spec])
+            self._orchestrator_wait([completion_plan])
+            raise_if_exception(completion_plan)
+            data = completion_plan.result
+            if format == 'plain':
+                out = preview_table_services(data)
+            else:
+                out = to_format(data, format, many=True, cls=None)
+        return HandleCommandResult(stdout=out)
 
     @_cli_write_command(
         'orch apply nfs',
@@ -1077,6 +1152,8 @@ Usage:
         'name=pool,type=CephString '
         'name=namespace,type=CephString,req=false '
         'name=placement,type=CephString,req=false '
+        'name=dry_run,type=CephBool,req=false '
+        'name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false ' 
         'name=unmanaged,type=CephBool,req=false',
         'Scale an NFS service')
     def _apply_nfs(self,
@@ -1084,6 +1161,8 @@ Usage:
                    pool: str,
                    namespace: Optional[str] = None,
                    placement: Optional[str] = None,
+                   format: str = 'plain',
+                   dry_run: bool = False,
                    unmanaged: bool = False,
                    inbuf: Optional[str] = None) -> HandleCommandResult:
         if inbuf:
@@ -1095,12 +1174,23 @@ Usage:
             namespace=namespace,
             placement=PlacementSpec.from_string(placement),
             unmanaged=unmanaged,
+            preview_only=dry_run
         )
 
         completion = self.apply_nfs(spec)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
-        return HandleCommandResult(stdout=completion.result_str())
+        out = completion.result_str()
+        if dry_run:
+            completion_plan = self.plan([spec])
+            self._orchestrator_wait([completion_plan])
+            raise_if_exception(completion_plan)
+            data = completion_plan.result
+            if format == 'plain':
+                out = preview_table_services(data)
+            else:
+                out = to_format(data, format, many=True, cls=None)
+        return HandleCommandResult(stdout=out)
 
     @_cli_write_command(
         'orch apply iscsi',
@@ -1109,6 +1199,8 @@ Usage:
         'name=api_password,type=CephString '
         'name=trusted_ip_list,type=CephString,req=false '
         'name=placement,type=CephString,req=false '
+        'name=dry_run,type=CephBool,req=false '
+        'name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false ' 
         'name=unmanaged,type=CephBool,req=false',
         'Scale an iSCSI service')
     def _apply_iscsi(self,
@@ -1118,6 +1210,8 @@ Usage:
                      trusted_ip_list: Optional[str] = None,
                      placement: Optional[str] = None,
                      unmanaged: bool = False,
+                     dry_run: bool = False,
+                     format: str = 'plain',
                      inbuf: Optional[str] = None) -> HandleCommandResult:
         if inbuf:
             raise OrchestratorValidationError('unrecognized command -i; -h or --help for usage')
@@ -1130,12 +1224,23 @@ Usage:
             trusted_ip_list=trusted_ip_list,
             placement=PlacementSpec.from_string(placement),
             unmanaged=unmanaged,
+            preview_only=dry_run
         )
 
         completion = self.apply_iscsi(spec)
         self._orchestrator_wait([completion])
         raise_if_exception(completion)
-        return HandleCommandResult(stdout=completion.result_str())
+        out = completion.result_str()
+        if dry_run:
+            completion_plan = self.plan([spec])
+            self._orchestrator_wait([completion_plan])
+            raise_if_exception(completion_plan)
+            data = completion_plan.result
+            if format == 'plain':
+                out = preview_table_services(data)
+            else:
+                out = to_format(data, format, many=True, cls=None)
+        return HandleCommandResult(stdout=out)
 
     @_cli_write_command(
         'orch set backend',
@@ -1212,21 +1317,31 @@ Usage:
 
     @_cli_read_command(
         'orch status',
+        'name=format,type=CephChoices,strings=plain|json|json-pretty|yaml,req=false',
         desc='Report configured backend and its status')
-    def _status(self):
+    def _status(self, format='plain'):
         o = self._select_orchestrator()
         if o is None:
             raise NoOrchestrator()
 
         avail, why = self.available()
-        if avail is None:
-            # The module does not report its availability
-            return HandleCommandResult(stdout="Backend: {0}".format(o))
+        result = {
+            "backend": o
+        }
+        if avail is not None:
+            result['available'] = avail
+            if not avail:
+                result['reason'] = why
+
+        if format != 'plain':
+            output = to_format(result, format, many=False, cls=None)
         else:
-            return HandleCommandResult(stdout="Backend: {0}\nAvailable: {1}{2}".format(
-                                           o, avail,
-                                           " ({0})".format(why) if not avail else ""
-                                       ))
+            output = "Backend: {0}".format(result['backend'])
+            if 'available' in result:
+                output += "\nAvailable: {0}".format(result['available'])
+                if 'reason' in result:
+                    output += ' ({0})'.format(result['reason'])
+        return HandleCommandResult(stdout=output)
 
     def self_test(self):
         old_orch = self._select_orchestrator()
@@ -1239,14 +1354,14 @@ Usage:
             raise_if_exception(e1)
             assert False
         except ZeroDivisionError as e:
-            assert e.args == ('hello', 'world')
+            assert e.args == ('hello, world',)
 
         e2 = self.remote('selftest', 'remote_from_orchestrator_cli_self_test', "OrchestratorError")
         try:
             raise_if_exception(e2)
             assert False
         except OrchestratorError as e:
-            assert e.args == ('hello', 'world')
+            assert e.args == ('hello, world',)
 
         c = TrivialReadCompletion(result=True)
         assert c.has_result
diff --git a/ceph/src/pybind/mgr/orchestrator/tests/__init__.py b/ceph/src/pybind/mgr/orchestrator/tests/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/src/pybind/mgr/orchestrator/tests/test_orchestrator.py b/ceph/src/pybind/mgr/orchestrator/tests/test_orchestrator.py
new file mode 100644 (file)
index 0000000..b5b45a2
--- /dev/null
@@ -0,0 +1,292 @@
+from __future__ import absolute_import
+
+import datetime
+import json
+
+import pytest
+import yaml
+
+from ceph.deployment.service_spec import ServiceSpec
+from ceph.deployment import inventory
+
+from test_orchestrator import TestOrchestrator as _TestOrchestrator
+from tests import mock
+
+from orchestrator import raise_if_exception, Completion, ProgressReference
+from orchestrator import InventoryHost, DaemonDescription, ServiceDescription
+from orchestrator import OrchestratorValidationError
+from orchestrator.module import to_format
+
+
+def _test_resource(data, resource_class, extra=None):
+    # ensure we can deserialize and serialize
+    rsc = resource_class.from_json(data)
+    rsc.to_json()
+
+    if extra:
+        # if there is an unexpected data provided
+        data.update(extra)
+        with pytest.raises(OrchestratorValidationError):
+            resource_class.from_json(data)
+
+
+def test_inventory():
+    json_data = {
+        'name': 'host0',
+        'addr': '1.2.3.4',
+        'devices': [
+            {
+                'sys_api': {
+                    'rotational': '1',
+                    'size': 1024,
+                },
+                'path': '/dev/sda',
+                'available': False,
+                'rejected_reasons': [],
+                'lvs': []
+            }
+        ]
+    }
+    _test_resource(json_data, InventoryHost, {'abc': False})
+    for devices in json_data['devices']:
+        _test_resource(devices, inventory.Device)
+
+    json_data = [{}, {'name': 'host0', 'addr': '1.2.3.4'}, {'devices': []}]
+    for data in json_data:
+        with pytest.raises(OrchestratorValidationError):
+            InventoryHost.from_json(data)
+
+
+def test_daemon_description():
+    json_data = {
+        'hostname': 'test',
+        'daemon_type': 'mon',
+        'daemon_id': 'a'
+    }
+    _test_resource(json_data, DaemonDescription, {'abc': False})
+
+
+def test_raise():
+    c = Completion()
+    c._exception = ZeroDivisionError()
+    with pytest.raises(ZeroDivisionError):
+        raise_if_exception(c)
+
+
+def test_promise():
+    p = Completion(value=3)
+    p.finalize()
+    assert p.result == 3
+
+
+def test_promise_then():
+    p = Completion(value=3).then(lambda three: three + 1)
+    p.finalize()
+    assert p.result == 4
+
+
+def test_promise_mondatic_then():
+    p = Completion(value=3)
+    p.then(lambda three: Completion(value=three + 1))
+    p.finalize()
+    assert p.result == 4
+
+
+def some_complex_completion():
+    c = Completion(value=3).then(
+        lambda three: Completion(value=three + 1).then(
+            lambda four: four + 1))
+    return c
+
+def test_promise_mondatic_then_combined():
+    p = some_complex_completion()
+    p.finalize()
+    assert p.result == 5
+
+
+def test_promise_flat():
+    p = Completion()
+    p.then(lambda r1: Completion(value=r1 + ' there').then(
+        lambda r11: r11 + '!'))
+    p.finalize('hello')
+    assert p.result == 'hello there!'
+
+
+def test_side_effect():
+    foo = {'x': 1}
+
+    def run(x):
+        foo['x'] = x
+
+    foo['x'] = 1
+    Completion(value=3).then(run).finalize()
+    assert foo['x'] == 3
+
+
+def test_progress():
+    c = some_complex_completion()
+    mgr = mock.MagicMock()
+    mgr.process = lambda cs: [c.finalize(None) for c in cs]
+
+    progress_val = 0.75
+    c._last_promise().then(
+        on_complete=ProgressReference(message='hello world',
+                                      mgr=mgr,
+                                      completion=lambda: Completion(
+                                          on_complete=lambda _: progress_val))
+    )
+    mgr.remote.assert_called_with('progress', 'update', c.progress_reference.progress_id, 'hello world', 0.0, [('origin', 'orchestrator')])
+
+    c.finalize()
+    mgr.remote.assert_called_with('progress', 'complete', c.progress_reference.progress_id)
+
+    c.progress_reference.update()
+    mgr.remote.assert_called_with('progress', 'update', c.progress_reference.progress_id, 'hello world', progress_val, [('origin', 'orchestrator')])
+    assert not c.progress_reference.effective
+
+    progress_val = 1
+    c.progress_reference.update()
+    assert c.progress_reference.effective
+    mgr.remote.assert_called_with('progress', 'complete', c.progress_reference.progress_id)
+
+
+def test_with_progress():
+    mgr = mock.MagicMock()
+    mgr.process = lambda cs: [c.finalize(None) for c in cs]
+
+    def execute(y):
+        return str(y)
+
+    def run(x):
+        def two(_):
+            return execute(x * 2)
+
+        return Completion.with_progress(
+            message='message',
+            on_complete=two,
+            mgr=mgr
+
+        )
+    c = Completion(on_complete=lambda x: x * 10).then(run)._first_promise
+    c.finalize(2)
+    assert c.result == '40'
+    c.progress_reference.update()
+    assert c.progress_reference.effective
+
+
+def test_exception():
+
+    def run(x):
+        raise KeyError(x)
+
+    c = Completion(value=3).then(run)
+    c.finalize()
+    with pytest.raises(KeyError):
+        raise_if_exception(c)
+
+
+def test_fail():
+    c = Completion().then(lambda _: 3)
+    c._first_promise.fail(KeyError())
+    assert isinstance(c.exception, KeyError)
+
+    with pytest.raises(ValueError,
+                  match='Invalid State: called fail, but Completion is already finished: {}'.format(
+                      str(ZeroDivisionError()))):
+        c._first_promise.fail(ZeroDivisionError())
+
+
+def test_pretty_print():
+    mgr = mock.MagicMock()
+    mgr.process = lambda cs: [c.finalize(None) for c in cs]
+
+    def add_one(x):
+        return x+1
+
+    c = Completion(value=1, on_complete=add_one).then(
+        str
+    ).add_progress('message', mgr)
+
+    assert c.pretty_print() == """<Completion>[
+       add_one(1),
+       str(...),
+       ProgressReference(...),
+]"""
+    c.finalize()
+    assert c.pretty_print() == """<Completion>[
+(done) add_one(1),
+(done) str(2),
+(done) ProgressReference('2'),
+]"""
+
+    p = some_complex_completion()
+    assert p.pretty_print() == """<Completion>[
+       <lambda>(3),
+       lambda x: x(...),
+]"""
+    p.finalize()
+    assert p.pretty_print() == """<Completion>[
+(done) <lambda>(3),
+(done) <lambda>(4),
+(done) lambda x: x(5),
+(done) lambda x: x(5),
+]"""
+
+    assert p.result == 5
+
+def test_apply():
+    to = _TestOrchestrator('', 0, 0)
+    completion = to.apply([
+        ServiceSpec(service_type='nfs'),
+        ServiceSpec(service_type='nfs'),
+        ServiceSpec(service_type='nfs'),
+    ])
+    completion.finalize(42)
+    assert  completion.result == [None, None, None]
+
+
+def test_yaml():
+    y = """daemon_type: crash
+daemon_id: ubuntu
+hostname: ubuntu
+status: 1
+status_desc: starting
+is_active: false
+events:
+- 2020-06-10T10:08:22.933241 daemon:crash.ubuntu [INFO] "Deployed crash.ubuntu on
+  host 'ubuntu'"
+---
+service_type: crash
+service_name: crash
+placement:
+  host_pattern: '*'
+status:
+  container_image_id: 74803e884bea289d2d2d3ebdf6d37cd560499e955595695b1390a89800f4e37a
+  container_image_name: docker.io/ceph/daemon-base:latest-master-devel
+  created: '2020-06-10T10:37:31.051288'
+  last_refresh: '2020-06-10T10:57:40.715637'
+  running: 1
+  size: 1
+events:
+- 2020-06-10T10:37:31.139159 service:crash [INFO] "service was created"
+"""
+    types = (DaemonDescription, ServiceDescription)
+
+    for y, cls in zip(y.split('---\n'), types):
+        data = yaml.safe_load(y)
+        object = cls.from_json(data)
+
+        assert to_format(object, 'yaml', False, cls) == y
+        assert to_format([object], 'yaml', True, cls) == y
+
+        j = json.loads(to_format(object, 'json', False, cls))
+        assert to_format(cls.from_json(j), 'yaml', False, cls) == y
+
+
+def test_event_multiline():
+    from .._interface import OrchestratorEvent
+    e = OrchestratorEvent(datetime.datetime.utcnow(), 'service', 'subject', 'ERROR', 'message')
+    assert OrchestratorEvent.from_json(e.to_json()) == e
+
+    e = OrchestratorEvent(datetime.datetime.utcnow(), 'service', 'subject', 'ERROR', 'multiline\nmessage')
+    assert OrchestratorEvent.from_json(e.to_json()) == e
index 5b743200e003e779d8387e097d566d1d671d1332..1f3e137bbc253f1d7a894945ddbf3e9b3138d914 100644 (file)
-from typing import List, Set, Optional
-from mgr_module import MgrModule, HandleCommandResult
-from threading import Event
-import json
-import errno
+from mgr_module import MgrModule
 
 
 class OSDSupport(MgrModule):
-    # these are CLI commands we implement
-    COMMANDS = [
-        {
-            "cmd": "osd drain name=osd_ids,type=CephInt,req=true,n=N",
-            "desc": "drain osd ids",
-            "perm": "r"
-        },
-        {
-            "cmd": "osd drain status",
-            "desc": "show status",
-            "perm": "r"
-        },
-        {
-            "cmd": "osd drain stop name=osd_ids,type=CephInt,req=false,n=N",
-            "desc": "show status for osds. Stopping all if osd_ids are omitted",
-            "perm": "r"
-        },
-    ]
+    # Kept to keep upgrades from older point releases working.
+    # This module can be removed as soon as we no longer
+    # support upgrades from old octopus point releases.
 
-    MODULE_OPTIONS: List[dict] = []
+    # On the other hand, if you find a use for this module,
+    # Feel free to use it!
 
-    # These are "native" Ceph options that this module cares about.
-    NATIVE_OPTIONS: List[str] = []
+    COMMANDS = []
 
-    osd_ids: Set[int] = set()
-    emptying_osds: Set[int] = set()
-    check_osds: Set[int] = set()
-    empty: Set[int] = set()
+    MODULE_OPTIONS: []
+
+    NATIVE_OPTIONS: []
 
     def __init__(self, *args, **kwargs):
         super(OSDSupport, self).__init__(*args, **kwargs)
-
-        # set up some members to enable the serve() method and shutdown()
-        self.run = True
-        self.event = Event()
-
-        # ensure config options members are initialized; see config_notify()
-        self.config_notify()
-
-    def config_notify(self):
-        """
-        This method is called whenever one of our config options is changed.
-        """
-        # This is some boilerplate that stores MODULE_OPTIONS in a class
-        # member, so that, for instance, the 'emphatic' option is always
-        # available as 'self.emphatic'.
-        for opt in self.MODULE_OPTIONS:
-            setattr(self,
-                    opt['name'],
-                    self.get_module_option(opt['name']))
-            self.log.debug(' mgr option %s = %s',
-                           opt['name'], getattr(self, opt['name']))
-        # Do the same for the native options.
-        for _opt in self.NATIVE_OPTIONS:
-            setattr(self,
-                    _opt,
-                    self.get_ceph_option(_opt))
-            self.log.debug('native option %s = %s', _opt, getattr(self, _opt))
-
-    def handle_command(self, inbuf, cmd):
-        ret = 0
-        err = ''
-        _ = inbuf
-        cmd_prefix = cmd.get('prefix', '')
-        osd_ids: List[int] = cmd.get('osd_ids', list())
-        not_found_osds: Set[int] = self.osds_not_in_cluster(osd_ids)
-        if cmd_prefix == 'osd drain':
-            if not_found_osds:
-                return -errno.EINVAL, '', f"OSDs <{not_found_osds}> not found in cluster"
-            # add osd_ids to set
-            for osd_id in osd_ids:
-                if osd_id not in self.emptying_osds:
-                    self.osd_ids.add(osd_id)
-            self.log.info(f'Found OSD(s) <{self.osd_ids}> in the queue.')
-            out = 'Started draining OSDs. Query progress with <ceph osd drain status>'
-
-        elif cmd_prefix == 'osd drain status':
-            # re-initialize it with an empty set on invocation (long running processes)
-            self.check_osds = set()
-            # assemble a set of emptying osds and to_be_emptied osds
-            self.check_osds.update(self.emptying_osds)
-            self.check_osds.update(self.osd_ids)
-            self.check_osds.update(self.empty)
-
-            report = list()
-            for osd_id in self.check_osds:
-                pgs = self.get_pg_count(osd_id)
-                report.append(dict(osd_id=osd_id, pgs=pgs))
-            out = f"{json.dumps(report)}"
-
-        elif cmd_prefix == 'osd drain stop':
-            if not osd_ids:
-                self.log.debug("No osd_ids provided, stop all pending drain operations)")
-                self.osd_ids = set()
-                self.emptying_osds = set()
-
-                # this is just a poor-man's solution as it will not really stop draining
-                # the osds. It will just stop the queries and also prevent any scheduled OSDs
-                # from getting drained at a later point in time.
-                out = "Stopped all future draining operations (not resetting the weight for already reweighted OSDs)"
-
-            else:
-                if not_found_osds:
-                    return -errno.EINVAL, '', f"OSDs <{not_found_osds}> not found in cluster"
-
-                self.osd_ids = self.osd_ids.difference(osd_ids)
-                self.emptying_osds = self.emptying_osds.difference(osd_ids)
-                out = f"Stopped draining operations for OSD(s): {osd_ids}"
-
-        else:
-            return HandleCommandResult(
-                retval=-errno.EINVAL,
-                stdout='',
-                stderr=f"Command not found <{cmd.get('prefix', '')}>")
-        return HandleCommandResult(
-            retval=ret,   # exit code
-            stdout=out,   # stdout
-            stderr=err)
-
-    def serve(self):
-        """
-        This method is called by the mgr when the module starts and can be
-        used for any background activity.
-        """
-        self.log.info("Starting mgr/osd_support")
-        while self.run:
-
-            self.log.debug(f"Scheduled for draining: <{self.osd_ids}>")
-            self.log.debug(f"Currently being drained: <{self.emptying_osds}>")
-            # the state should be saved to the mon store in the actual call and
-            # then retrieved in serve() probably
-
-            # 1) check if all provided osds can be stopped, if not, shrink list until ok-to-stop
-            for x in self.find_osd_stop_threshold(self.osd_ids):
-                self.emptying_osds.add(x)
-
-            # remove the emptying osds from the osd_ids since they don't need to be checked again.
-            self.osd_ids = self.osd_ids.difference(self.emptying_osds)
-
-            # 2) reweight the ok-to-stop osds, ONCE
-            self.reweight_osds(self.emptying_osds)
-
-            # 3) check for osds to be empty
-            empty_osds = self.empty_osds(self.emptying_osds)
-
-            # remove osds that are marked as empty
-            self.emptying_osds = self.emptying_osds.difference(empty_osds)
-
-            # move empty osds in the done queue until they disappear from ceph's view
-            # other modules need to know when OSDs are empty
-            for osd in empty_osds:
-                self.log.debug(f"Adding {osd} to list of empty OSDs")
-                self.empty.add(osd)
-
-            # remove from queue if no longer part of ceph cluster
-            self.cleanup()
-
-            # fixed sleep interval of 10 seconds
-            sleep_interval = 10
-            self.log.debug('Sleeping for %d seconds', sleep_interval)
-            self.event.wait(sleep_interval)
-            self.event.clear()
-
-    def cleanup(self):
-        """
-        Remove OSDs that are no longer in the ceph cluster from the
-        'done' list.
-        :return:
-        """
-        for osd in self.osds_not_in_cluster(list(self.empty)):
-            self.log.info(f"OSD: {osd} is not found in the cluster anymore. Removing")
-            self.empty.remove(osd)
-
-    def shutdown(self):
-        """
-        This method is called by the mgr when the module needs to shut
-        down (i.e., when the serve() function needs to exit).
-        """
-        self.log.info('Stopping')
-        self.run = False
-        self.event.set()
-
-    def osds_not_in_cluster(self, osd_ids: List[int]) -> Set[int]:
-        self.log.info(f"Checking if provided osds <{osd_ids}> exist in the cluster")
-        osd_map = self.get_osdmap()
-        cluster_osds = [x.get('osd') for x in osd_map.dump().get('osds', [])]
-        not_in_cluster = set()
-        for osd_id in osd_ids:
-            if int(osd_id) not in cluster_osds:
-                self.log.error(f"Could not find {osd_id} in cluster")
-                not_in_cluster.add(osd_id)
-        return not_in_cluster
-
-    def empty_osds(self, osd_ids: Set[int]) -> List[int]:
-        if not osd_ids:
-            return list()
-        osd_df_data = self.osd_df()
-        empty_osds = list()
-        for osd_id in osd_ids:
-            if self.is_empty(osd_id, osd_df=osd_df_data):
-                empty_osds.append(osd_id)
-        return empty_osds
-
-    def osd_df(self) -> dict:
-        # TODO: this should be cached I think
-        base_cmd = 'osd df'
-        ret, out, err = self.mon_command({
-            'prefix': base_cmd,
-            'format': 'json'
-        })
-        return json.loads(out)
-
-    def is_empty(self, osd_id: int, osd_df: Optional[dict] = None) -> bool:
-        pgs = self.get_pg_count(osd_id, osd_df=osd_df)
-        if pgs != 0:
-            self.log.info(f"osd: {osd_id} still has {pgs} PGs.")
-            return False
-        self.log.info(f"osd: {osd_id} has no PGs anymore")
-        return True
-
-    def reweight_osds(self, osd_ids: Set[int]) -> bool:
-        results = [(self.reweight_osd(osd_id)) for osd_id in osd_ids]
-        return all(results)
-
-    def get_pg_count(self, osd_id: int, osd_df: Optional[dict] = None) -> int:
-        if not osd_df:
-            osd_df = self.osd_df()
-        osd_nodes = osd_df.get('nodes', [])
-        for osd_node in osd_nodes:
-            if osd_node.get('id', None) == int(osd_id):
-                return osd_node.get('pgs', -1)
-        return -1
-
-    def get_osd_weight(self, osd_id: int) -> float:
-        osd_df = self.osd_df()
-        osd_nodes = osd_df.get('nodes', [])
-        for osd_node in osd_nodes:
-            if osd_node.get('id', None) == int(osd_id):
-                return float(osd_node.get('crush_weight'))
-        return -1.0
-
-    def reweight_osd(self, osd_id: int, weight: float = 0.0) -> bool:
-        if self.get_osd_weight(osd_id) == weight:
-            self.log.debug(f"OSD <{osd_id}> is already weighted with: {weight}")
-            return True
-        base_cmd = 'osd crush reweight'
-        ret, out, err = self.mon_command({
-            'prefix': base_cmd,
-            'name': f'osd.{osd_id}',
-            'weight': weight
-        })
-        cmd = f"{base_cmd} on osd.{osd_id} to weight: {weight}"
-        self.log.debug(f"running cmd: {cmd}")
-        if ret != 0:
-            self.log.error(f"command: {cmd} failed with: {err}")
-            return False
-        self.log.info(f"command: {cmd} succeeded with: {out}")
-        return True
-
-    def find_osd_stop_threshold(self, osd_ids: Set[int]) -> Set[int]:
-        """
-        Cut osd_id list in half until it's ok-to-stop
-
-        :param osd_ids: list of osd_ids
-        :return: list of ods_ids that can be stopped at once
-        """
-        if not osd_ids:
-            return set()
-        _osds: List[int] = list(osd_ids.copy())
-        while not self.ok_to_stop(_osds):
-            if len(_osds) <= 1:
-                # can't even stop one OSD, aborting
-                self.log.info("Can't even stop one OSD. Cluster is probably busy. Retrying later..")
-                return set()
-            self.event.wait(1)
-            # splitting osd_ids in half until ok_to_stop yields success
-            # maybe popping ids off one by one is better here..depends on the cluster size I guess..
-            # There's a lot of room for micro adjustments here
-            _osds = _osds[len(_osds)//2:]
-        return set(_osds)
-
-    def ok_to_stop(self, osd_ids: List[int]) -> bool:
-        base_cmd = "osd ok-to-stop"
-        self.log.debug(f"running cmd: {base_cmd} on ids {osd_ids}")
-        ret, out, err = self.mon_command({
-            'prefix': base_cmd,
-            # apparently ok-to-stop allows strings only
-            'ids': [str(x) for x in osd_ids]
-        })
-        if ret != 0:
-            self.log.error(f"{osd_ids} are not ok-to-stop. {err}")
-            return False
-        self.log.info(f"OSDs <{osd_ids}> are ok-to-stop")
-        return True
index f9242f59b5717e06f849934e5e03a55ffab35446..64e2a7465831aca9c68579b4592838ff1ee4c5f1 100644 (file)
@@ -407,7 +407,7 @@ class PgAutoscaler(MgrModule):
         for pool_id in list(self._event):
             ev = self._event[pool_id]
             pool_data = pools.get(pool_id)
-            if pool_data is None or pool_data['pg_num'] == pool_data['pg_num_target']:
+            if pool_data is None or pool_data['pg_num'] == pool_data['pg_num_target'] or ev.pg_num == ev.pg_num_target:
                 # pool is gone or we've reached our target
                 self.remote('progress', 'complete', ev.ev_id)
                 del self._event[pool_id]
index ccc73bf261188a574336136da091521d78c954fc..470e4b0a61193351ff86d7fde4a3c06b73f81aa4 100644 (file)
@@ -533,6 +533,10 @@ class Module(MgrModule):
             ))
             self._osdmap_changed(old_osdmap, self._latest_osdmap)
         elif notify_type == "pg_summary":
+            # if there are no events we will skip this here to avoid 
+            # expensive get calls
+            if len(self._events) == 0:
+                return
             data = self.get("pg_stats")
             ready = self.get("pg_ready")
             for ev_id in list(self._events):
index c721a8579d9dba28dfbe26e4241398e150fefd68..2ed5d1714d27ad8e38848278ba75821c938a1e99 100644 (file)
@@ -9,8 +9,12 @@ import socket
 import threading
 import time
 from mgr_module import MgrModule, MgrStandbyModule, CommandResult, PG_STATES
-from mgr_util import get_default_addr
+from mgr_util import get_default_addr, profile_method
 from rbd import RBD
+try:
+    from typing import Optional, Dict, Any, Set
+except:
+    pass
 
 # Defaults for the Prometheus HTTP server.  Can also set in config-key
 # see https://github.com/prometheus/prometheus/wiki/Default-port-allocations
@@ -43,12 +47,7 @@ os._exit = os_exit_noop
 # to access things in class Module from subclass Root.  Because
 # it's a dict, the writer doesn't need to declare 'global' for access
 
-_global_instance = {'plugin': None}
-
-
-def global_instance():
-    assert _global_instance['plugin'] is not None
-    return _global_instance['plugin']
+_global_instance = None  # type: Optional[Module]
 
 
 def health_status_to_number(status):
@@ -161,8 +160,8 @@ class Metric(object):
 
         for labelvalues, value in self.value.items():
             if self.labelnames:
-                labels = zip(self.labelnames, labelvalues)
-                labels = ','.join('%s="%s"' % (k, v) for k, v in labels)
+                labels_list = zip(self.labelnames, labelvalues)
+                labels = ','.join('%s="%s"' % (k, v) for k, v in labels_list)
             else:
                 labels = ''
             if labels:
@@ -177,6 +176,47 @@ class Metric(object):
         return expfmt
 
 
+class MetricCollectionThread(threading.Thread):
+    def __init__(self, module):
+        # type: (Module) -> None
+        self.mod = module
+        super(MetricCollectionThread, self).__init__(target=self.collect)
+
+    def collect(self):
+        self.mod.log.info('starting metric collection thread')
+        while True:
+            self.mod.log.debug('collecting cache in thread')
+            if self.mod.have_mon_connection():
+                start_time = time.time()
+                data = self.mod.collect()
+                duration = time.time() - start_time
+
+                self.mod.log.debug('collecting cache in thread done')
+                
+                sleep_time = self.mod.scrape_interval - duration
+                if sleep_time < 0:
+                    self.mod.log.warning(
+                        'Collecting data took more time than configured scrape interval. '
+                        'This possibly results in stale data. Please check the '
+                        '`stale_cache_strategy` configuration option. '
+                        'Collecting data took {:.2f} seconds but scrape interval is configured '
+                        'to be {:.0f} seconds.'.format(
+                            duration,
+                            self.mod.scrape_interval,
+                        )
+                    )
+                    sleep_time = 0
+
+                with self.mod.collect_lock:
+                    self.mod.collect_cache = data
+                    self.mod.collect_time = duration
+
+                time.sleep(sleep_time)
+            else:
+                self.mod.log.error('No MON connection')
+                time.sleep(self.mod.scrape_interval)
+
+
 class Module(MgrModule):
     COMMANDS = [
         {
@@ -190,17 +230,22 @@ class Module(MgrModule):
         {'name': 'server_addr'},
         {'name': 'server_port'},
         {'name': 'scrape_interval'},
+        {'name': 'stale_cache_strategy'},
         {'name': 'rbd_stats_pools'},
         {'name': 'rbd_stats_pools_refresh_interval', 'type': 'int', 'default': 300},
     ]
 
+    STALE_CACHE_FAIL = 'fail'
+    STALE_CACHE_RETURN = 'return'
+
     def __init__(self, *args, **kwargs):
         super(Module, self).__init__(*args, **kwargs)
         self.metrics = self._setup_static_metrics()
         self.shutdown_event = threading.Event()
-        self.collect_lock = threading.RLock()
-        self.collect_time = 0
-        self.collect_timeout = 5.0
+        self.collect_lock = threading.Lock()
+        self.collect_time = 0.0
+        self.scrape_interval = 15.0
+        self.stale_cache_strategy = self.STALE_CACHE_FAIL
         self.collect_cache = None
         self.rbd_stats = {
             'pools': {},
@@ -219,8 +264,10 @@ class Module(MgrModule):
                 'read_latency': {'type': self.PERFCOUNTER_LONGRUNAVG,
                                  'desc': 'RBD image reads latency (msec)'},
             },
-        }
-        _global_instance['plugin'] = self
+        }  # type: Dict[str, Any]
+        global _global_instance
+        _global_instance = self
+        MetricCollectionThread(_global_instance).start()
 
     def _setup_static_metrics(self):
         metrics = {}
@@ -386,12 +433,14 @@ class Module(MgrModule):
 
         return metrics
 
+    @profile_method()
     def get_health(self):
         health = json.loads(self.get('health')['json'])
         self.metrics['health_status'].set(
             health_status_to_number(health['status'])
         )
 
+    @profile_method()
     def get_pool_stats(self):
         # retrieve pool stats to provide per pool recovery metrics
         # (osd_pool_stats moved to mgr in Mimic)
@@ -403,6 +452,7 @@ class Module(MgrModule):
                     (pool['pool_id'],)
                 )
 
+    @profile_method()
     def get_df(self):
         # maybe get the to-be-exported metrics from a config?
         df = self.get('df')
@@ -416,6 +466,7 @@ class Module(MgrModule):
                     (pool['id'],)
                 )
 
+    @profile_method()
     def get_fs(self):
         fs_map = self.get('fs_map')
         servers = self.get_service_list()
@@ -449,6 +500,7 @@ class Module(MgrModule):
                     daemon['rank'], host_version[1]
                 ))
 
+    @profile_method()
     def get_quorum_status(self):
         mon_status = json.loads(self.get('mon_status')['json'])
         servers = self.get_service_list()
@@ -466,6 +518,7 @@ class Module(MgrModule):
                 'mon.{}'.format(id_),
             ))
 
+    @profile_method()
     def get_mgr_status(self):
         mgr_map = self.get('mgr_map')
         servers = self.get_service_list()
@@ -511,6 +564,7 @@ class Module(MgrModule):
             self.metrics['mgr_module_status'].set(_state, (mod_name,))
             self.metrics['mgr_module_can_run'].set(_can_run, (mod_name,))
 
+    @profile_method()
     def get_pg_status(self):
 
         pg_summary = self.get('pg_summary')
@@ -530,6 +584,7 @@ class Module(MgrModule):
                 except KeyError:
                     self.log.warning("skipping pg in unknown state {}".format(state))
 
+    @profile_method()
     def get_osd_stats(self):
         osd_stats = self.get('osd_stats')
         for osd in osd_stats['osd_stats']:
@@ -549,6 +604,7 @@ class Module(MgrModule):
                 ret.update({(service['id'], service['type']): (host, version)})
         return ret
 
+    @profile_method()
     def get_metadata_and_osd_status(self):
         osd_map = self.get('osd_map')
         osd_flags = osd_map['flags'].split(',')
@@ -672,12 +728,14 @@ class Module(MgrModule):
                         for k in RBD_MIRROR_METADATA)
                 )
 
+    @profile_method()
     def get_num_objects(self):
         pg_sum = self.get('pg_summary')['pg_stats_sum']['stat_sum']
         for obj in NUM_OBJECTS:
             stat = 'num_objects_{}'.format(obj)
             self.metrics[stat].set(pg_sum[stat])
 
+    @profile_method()
     def get_rbd_stats(self):
         # Per RBD image stats is collected by registering a dynamic osd perf
         # stats query that tells OSDs to group stats for requests associated
@@ -694,24 +752,47 @@ class Module(MgrModule):
 
         # Parse rbd_stats_pools option, which is a comma or space separated
         # list of pool[/namespace] entries. If no namespace is specifed the
-        # stats are collected for every namespace in the pool.
+        # stats are collected for every namespace in the pool. The wildcard
+        # '*' can be used to indicate all pools or namespaces
         pools_string = self.get_localized_module_option('rbd_stats_pools', '')
-        pools = {}
-        for p in [x for x in re.split('[\s,]+', pools_string) if x]:
-            s = p.split('/', 2)
+        pool_keys = []
+        for x in re.split('[\s,]+', pools_string):
+            if not x:
+                continue
+
+            s = x.split('/', 2)
             pool_name = s[0]
-            if len(s) == 1:
+            namespace_name = None
+            if len(s) == 2:
+                namespace_name = s[1]
+
+            if pool_name == "*":
+                # collect for all pools
+                osd_map = self.get('osd_map')
+                for pool in osd_map['pools']:
+                    if 'rbd' not in pool.get('application_metadata', {}):
+                        continue
+                    pool_keys.append((pool['pool_name'], namespace_name))
+            else:
+                pool_keys.append((pool_name, namespace_name))
+
+        pools = {}  # type: Dict[str, Set[str]]
+        for pool_key in pool_keys:
+            pool_name = pool_key[0]
+            namespace_name = pool_key[1]
+            if not namespace_name or namespace_name == "*":
                 # empty set means collect for all namespaces
                 pools[pool_name] = set()
                 continue
+
             if pool_name not in pools:
                 pools[pool_name] = set()
             elif not pools[pool_name]:
                 continue
-            pools[pool_name].add(s[1])
+            pools[pool_name].add(namespace_name)
 
         rbd_stats_pools = {}
-        for pool_id in list(self.rbd_stats['pools']):
+        for pool_id in self.rbd_stats['pools'].keys():
             name = self.rbd_stats['pools'][pool_id]['name']
             if name not in pools:
                 del self.rbd_stats['pools'][pool_id]
@@ -927,6 +1008,7 @@ class Module(MgrModule):
 
         self.metrics.update(new_metrics)
 
+    @profile_method(True)
     def collect(self):
         # Clear the metrics before scraping
         for k in self.metrics.keys():
@@ -1012,7 +1094,8 @@ class Module(MgrModule):
                 # TODO use get_config_prefix or get_config here once
                 # https://github.com/ceph/ceph/pull/20458 is merged
                 result = CommandResult("")
-                global_instance().send_command(
+                assert isinstance(_global_instance, Module)
+                _global_instance.send_command(
                     result, "mon", '',
                     json.dumps({
                         "prefix": "config-key get",
@@ -1021,7 +1104,7 @@ class Module(MgrModule):
                     "")
                 r, outb, outs = result.wait()
                 if r != 0:
-                    global_instance().log.error("Failed to retrieve port for mgr {}: {}".format(id_, outs))
+                    _global_instance.log.error("Failed to retrieve port for mgr {}: {}".format(id_, outs))
                     targets.append('{}:{}'.format(hostname, DEFAULT_PORT))
                 else:
                     port = json.loads(outb)
@@ -1068,34 +1151,57 @@ class Module(MgrModule):
 
             @cherrypy.expose
             def metrics(self):
-                instance = global_instance()
                 # Lock the function execution
-                try:
-                    instance.collect_lock.acquire()
-                    return self._metrics(instance)
-                finally:
-                    instance.collect_lock.release()
+                assert isinstance(_global_instance, Module)
+                with _global_instance.collect_lock:
+                    return self._metrics(_global_instance)
 
             @staticmethod
             def _metrics(instance):
-                # Return cached data if available and collected before the
-                # cache times out
-                if instance.collect_cache and time.time() - instance.collect_time < instance.collect_timeout:
-                    cherrypy.response.headers['Content-Type'] = 'text/plain'
-                    return instance.collect_cache
+                # type: (Module) -> Any
+                # Return cached data if available
+                if not instance.collect_cache:
+                    raise cherrypy.HTTPError(503, 'No cached data available yet')
 
-                if instance.have_mon_connection():
-                    instance.collect_cache = None
-                    instance.collect_time = time.time()
-                    instance.collect_cache = instance.collect()
+                def respond():
+                    assert isinstance(instance, Module)
                     cherrypy.response.headers['Content-Type'] = 'text/plain'
                     return instance.collect_cache
-                else:
-                    raise cherrypy.HTTPError(503, 'No MON connection')
+
+                if instance.collect_time < instance.scrape_interval:
+                    # Respond if cache isn't stale
+                    return respond()
+
+                if instance.stale_cache_strategy == instance.STALE_CACHE_RETURN:
+                    # Respond even if cache is stale
+                    instance.log.info(
+                        'Gathering data took {:.2f} seconds, metrics are stale for {:.2f} seconds, '
+                        'returning metrics from stale cache.'.format(
+                            instance.collect_time,
+                            instance.collect_time - instance.scrape_interval
+                        )
+                    )
+                    return respond()
+
+                if instance.stale_cache_strategy == instance.STALE_CACHE_FAIL:
+                    # Fail if cache is stale
+                    msg = (
+                        'Gathering data took {:.2f} seconds, metrics are stale for {:.2f} seconds, '
+                        'returning "service unavailable".'.format(
+                            instance.collect_time,
+                            instance.collect_time - instance.scrape_interval,
+                        )
+                    )
+                    instance.log.error(msg)
+                    raise cherrypy.HTTPError(503, msg)
 
         # Make the cache timeout for collecting configurable
-        self.collect_timeout = float(self.get_localized_module_option(
-            'scrape_interval', 5.0))
+        self.scrape_interval = float(self.get_localized_module_option('scrape_interval', 15.0))
+
+        self.stale_cache_strategy = self.get_localized_module_option('stale_cache_strategy', 'log')
+        if self.stale_cache_strategy not in [self.STALE_CACHE_FAIL,
+                                             self.STALE_CACHE_RETURN]:
+            self.stale_cache_strategy = self.STALE_CACHE_FAIL
 
         server_addr = self.get_localized_module_option(
             'server_addr', get_default_addr())
index 4b12d8e781a1834688d57a6ece0205de7733ad35..64fcff99c8d90ee81d45ae57789e131113308250 100644 (file)
@@ -493,8 +493,7 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator):
 
         def execute(all_hosts_):
             # type: (List[orchestrator.HostSpec]) -> orchestrator.Completion
-            all_hosts = [h.hostname for h in all_hosts_]
-            matching_hosts = drive_group.placement.filter_matching_hosts(lambda label=None, as_hostspec=None: all_hosts)
+            matching_hosts = drive_group.placement.filter_matching_hosts(lambda label=None, as_hostspec=None: all_hosts_)
 
             assert len(matching_hosts) == 1
 
index 298d8cca1f838ee80545e981afdc96659fda81e7..f62d968c8988f06147f810de2711f81c036f27f6 100644 (file)
@@ -432,11 +432,11 @@ class Module(MgrModule):
         import orchestrator
         if what == 'OrchestratorError':
             c = orchestrator.TrivialReadCompletion(result=None)
-            c.fail(orchestrator.OrchestratorError('hello', 'world'))
+            c.fail(orchestrator.OrchestratorError('helloworld'))
             return c
         elif what == "ZeroDivisionError":
             c = orchestrator.TrivialReadCompletion(result=None)
-            c.fail(ZeroDivisionError('hello', 'world'))
+            c.fail(ZeroDivisionError('helloworld'))
             return c
         assert False, repr(what)
 
index a53edc0e389d7024b8d1cfa098528477770f41ba..6603343af833bb6bca138f767973253eddaec100 100644 (file)
@@ -111,8 +111,10 @@ class Module(MgrModule):
                         if output_format not in ('json', 'json-pretty'):
                             activity = "Reqs: " + mgr_util.format_dimless(rate, 5) + "/s"
 
-                    metadata = self.get_metadata('mds', info['name'])
-                    mds_versions[metadata.get('ceph_version', "unknown")].append(info['name'])
+                    defaults = defaultdict(lambda: None, {'version' : 'unknown'})
+                    metadata = self.get_metadata('mds', info['name'], default=defaults)
+                    mds_versions[metadata['ceph_version']].append(info['name'])
+
                     if output_format in ('json', 'json-pretty'):
                         json_output['mdsmap'].append({
                             'rank': rank,
@@ -152,8 +154,9 @@ class Module(MgrModule):
                 if output_format not in ('json', 'json-pretty'):
                     activity = "Evts: " + mgr_util.format_dimless(events, 5) + "/s"
 
-                metadata = self.get_metadata('mds', daemon_info['name'])
-                mds_versions[metadata.get('ceph_version', "unknown")].append(daemon_info['name'])
+                defaults = defaultdict(lambda: None, {'version' : 'unknown'})
+                metadata = self.get_metadata('mds', daemon_info['name'], default=defaults)
+                mds_versions[metadata['ceph_version']].append(daemon_info['name'])
 
                 if output_format in ('json', 'json-pretty'):
                     json_output['mdsmap'].append({
@@ -221,8 +224,9 @@ class Module(MgrModule):
         standby_table.left_padding_width = 0
         standby_table.right_padding_width = 2
         for standby in fsmap['standbys']:
-            metadata = self.get_metadata('mds', standby['name'])
-            mds_versions[metadata.get('ceph_version', "unknown")].append(standby['name'])
+            defaults = defaultdict(lambda: None, {'version' : 'unknown'})
+            metadata = self.get_metadata('mds', standby['name'], default=defaults)
+            mds_versions[metadata['ceph_version']].append(standby['name'])
 
             if output_format in ('json', 'json-pretty'):
                 json_output['mdsmap'].append({
@@ -312,7 +316,8 @@ class Module(MgrModule):
             kb_avail = 0
 
             if osd_id in osd_stats:
-                metadata = self.get_metadata('osd', "%s" % osd_id)
+                defaults = defaultdict(lambda: None, {'hostname' : ''})
+                metadata = self.get_metadata('osd', str(osd_id), default=defaults)
                 stats = osd_stats[osd_id]
                 hostname = metadata['hostname']
                 kb_used = stats['kb_used'] * 1024
index 83c937a09cb90c7d8db0943bce87c9d8b63b0700..0eaa5af42cd0b7b6857a74cd75607904aae85c74 100644 (file)
         "running": 2,
         "size": 2
       }
+    },
+    {
+      "placement": {
+        "hosts": [
+          {
+            "hostname": "mgr0",
+            "name": "",
+            "network": ""
+          },
+          {
+            "hostname": "osd0",
+            "name": "",
+            "network": ""
+          }
+        ]
+      },
+      "service_id": "ganesha-vstart",
+      "service_name": "nfs.ganesha-vstart",
+      "service_type": "nfs",
+      "pool": "nfs-ganesha",
+      "namespace": "vstart",
+      "status": {
+        "container_image_id": "36114e38494190b0c9d4b088c12e6e4086e8017b96b4d5fc14eb5406bd51b55b",
+        "container_image_name": "quay.io/ceph-ci/ceph:master",
+        "created": "2020-04-16T03:39:39.512721",
+        "last_refresh": "2020-04-16T06:51:42.412980",
+        "running": 1,
+        "size": 1
+      }
+    },
+    {
+      "api_password": "api_password",
+      "api_user": "api_user",
+      "placement": {
+        "hosts": [
+          {
+            "hostname": "mgr0",
+            "name": "",
+            "network": ""
+          },
+          {
+            "hostname": "osd0",
+            "name": "",
+            "network": ""
+          }
+        ]
+      },
+      "pool": "pool",
+      "service_id": "iscsi",
+      "service_name": "iscsi.iscsi",
+      "service_type": "iscsi",
+      "status": {
+        "container_image_id": "36114e38494190b0c9d4b088c12e6e4086e8017b96b4d5fc14eb5406bd51b55b",
+        "container_image_name": "quay.io/ceph-ci/ceph:master",
+        "created": "2020-04-16T03:39:39.512721",
+        "last_refresh": "2020-04-16T06:51:42.412980",
+        "running": 1,
+        "size": 1
+      }
     }
   ],
   "daemons": [
       "status": 1,
       "status_desc": "running",
       "version": "16.0.0-827-g61ad12e"
+    },
+    {
+      "container_id": "aeba86ca1655",
+      "container_image_id": "36114e38494190b0c9d4b088c12e6e4086e8017b96b4d5fc14eb5406bd51b55b",
+      "container_image_name": "quay.io/ceph-ci/ceph:master",
+      "created": "2020-04-16T05:44:41.551646",
+      "daemon_id": "ganesha-vstart.osd0",
+      "daemon_type": "nfs",
+      "hostname": "osd0",
+      "last_refresh": "2020-04-16T06:51:43.182937",
+      "started": "2020-04-16T05:44:41.606514",
+      "status": 1,
+      "status_desc": "running",
+      "version": "3.2"
+    },
+    {
+      "container_id": "e695cd698d8a",
+      "container_image_id": "36114e38494190b0c9d4b088c12e6e4086e8017b96b4d5fc14eb5406bd51b55b",
+      "container_image_name": "quay.io/ceph-ci/ceph:master",
+      "created": "2020-04-16T05:44:41.551646",
+      "daemon_id": "iscsi.osd0.abc123",
+      "daemon_type": "iscsi",
+      "hostname": "osd0",
+      "last_refresh": "2020-04-16T06:51:43.182937",
+      "started": "2020-04-16T05:44:41.606514",
+      "status": 1,
+      "status_desc": "running",
+      "version": "3.4"
     }
   ]
 }
index d7ef5d5bcc7978344134facd43be171fd5a790f7..c73d2f39c043641650c68475854f83ca7da17b20 100644 (file)
@@ -7,7 +7,7 @@ import functools
 import itertools
 from subprocess import check_output, CalledProcessError
 
-from ceph.deployment.service_spec import NFSServiceSpec, ServiceSpec
+from ceph.deployment.service_spec import ServiceSpec, NFSServiceSpec, IscsiServiceSpec
 
 try:
     from typing import Callable, List, Sequence, Tuple
@@ -162,7 +162,7 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
     def _get_ceph_daemons(self):
         # type: () -> List[orchestrator.DaemonDescription]
         """ Return ceph daemons on the running host."""
-        types = ("mds", "osd", "mon", "rgw", "mgr")
+        types = ("mds", "osd", "mon", "rgw", "mgr", "nfs", "iscsi")
         out = map(str, check_output(['ps', 'aux']).splitlines())
         processes = [p for p in out if any(
             [('ceph-{} '.format(t) in p) for t in types])]
@@ -225,7 +225,7 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
         it returns the mgr we're running in.
         """
         if daemon_type:
-            daemon_types = ("mds", "osd", "mon", "rgw", "mgr", "iscsi", "crash")
+            daemon_types = ("mds", "osd", "mon", "rgw", "mgr", "iscsi", "crash", "nfs")
             assert daemon_type in daemon_types, daemon_type + " unsupported"
 
         daemons = self._daemons if self._daemons else self._get_ceph_daemons()
@@ -258,8 +258,13 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
         def run(all_hosts):
             # type: (List[orchestrator.HostSpec]) -> None
             drive_group.validate()
-            if not drive_group.placement.filter_matching_hosts(lambda label=None, as_hostspec=None:
-                                                               [h.hostname for h in all_hosts]):
+
+            def get_hosts_func(label=None, as_hostspec=False):
+                if as_hostspec:
+                    return all_hosts
+                return [h.hostname for h in all_hosts]
+
+            if not drive_group.placement.filter_matching_hosts(get_hosts_func):
                 raise orchestrator.OrchestratorValidationError('failed to match')
 
         return self.get_hosts().then(run).then(
@@ -276,8 +281,13 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
         def run(all_hosts):
             # type: (List[orchestrator.HostSpec]) -> None
             drive_group.validate()
-            if not drive_group.placement.filter_matching_hosts(lambda label=None, as_hostspec=None:
-                                                               [h.hostname for h in all_hosts]):
+
+            def get_hosts_func(label=None, as_hostspec=False):
+                if as_hostspec:
+                    return all_hosts
+                return [h.hostname for h in all_hosts]
+
+            if not drive_group.placement.filter_matching_hosts(get_hosts_func):
                 raise orchestrator.OrchestratorValidationError('failed to match')
         return self.get_hosts().then(run).then(
             on_complete=orchestrator.ProgressReference(
@@ -305,7 +315,7 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
         pass
 
     @deferred_write("daemon_action")
-    def daemon_action(self, action, daemon_type, daemon_id):
+    def daemon_action(self, action, daemon_name, image=None):
         pass
 
     @deferred_write("Adding NFS service")
@@ -317,6 +327,16 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
     def apply_nfs(self, spec):
         pass
 
+    @deferred_write("add_iscsi")
+    def add_iscsi(self, spec):
+        # type: (IscsiServiceSpec) -> None
+        pass
+
+    @deferred_write("apply_iscsi")
+    def apply_iscsi(self, spec):
+        # type: (IscsiServiceSpec) -> None
+        pass
+
     @deferred_write("add_mds")
     def add_mds(self, spec):
         pass
@@ -335,8 +355,10 @@ class TestOrchestrator(MgrModule, orchestrator.Orchestrator):
     def add_host(self, spec):
         # type: (orchestrator.HostSpec) -> None
         host = spec.hostname
-        if host == 'raise_no_support':
+        if host == 'raise_validation_error':
             raise orchestrator.OrchestratorValidationError("MON count must be either 1, 3 or 5")
+        if host == 'raise_error':
+            raise orchestrator.OrchestratorError("host address is empty")
         if host == 'raise_bug':
             raise ZeroDivisionError()
         if host == 'raise_not_implemented':
index 7bccfc79970887b7eec6339db736909aafe9be24..7b6fb41b2258a7e0a2e0f88509c7f46d3c7eb496 100644 (file)
@@ -1,7 +1,8 @@
 # type: ignore
 from __future__ import absolute_import
 
-
+import json
+import logging
 import os
 
 if 'UNITTEST' in os.environ:
@@ -19,30 +20,134 @@ if 'UNITTEST' in os.environ:
     M_classes = set()
 
     class M(object):
-        def _ceph_get_store(self, k):
-            return self._store.get(k, None)
+        """
+        Note that:
 
-        def _ceph_set_store(self, k, v):
-            if v is None:
+        * self.set_store() populates self._store
+        * self.set_module_option() populates self._store[module_name]
+        * self.get(thing) comes from self._store['_ceph_get' + thing]
+
+        """
+
+        def mock_store_get(self, kind, key, default):
+            if not hasattr(self, '_store'):
+                self._store = {}
+            return self._store.get(f'mock_store/{kind}/{key}', default)
+
+        def mock_store_set(self, kind, key, value):
+            if not hasattr(self, '_store'):
+                self._store = {}
+            k = f'mock_store/{kind}/{key}'
+            if value is None:
                 if k in self._store:
                     del self._store[k]
             else:
-                self._store[k] = v
+                self._store[k] = value
 
-        def _ceph_get_store_prefix(self, prefix):
+        def mock_store_preifx(self, kind, prefix):
+            if not hasattr(self, '_store'):
+                self._store = {}
+            full_prefix = f'mock_store/{kind}/{prefix}'
+            kind_len = len(f'mock_store/{kind}/')
             return {
-                k: v for k, v in self._store.items()
-                if k.startswith(prefix)
+                k[kind_len:]: v for k, v in self._store.items()
+                if k.startswith(full_prefix)
             }
 
-        def _ceph_get_module_option(self, module, key, localized_prefix: None):
-            return self._ceph_get_store(f'{module}/{key}')
+        def _ceph_get_store(self, k):
+            return self.mock_store_get('store', k, None)
+
+        def _ceph_set_store(self, k, v):
+            self.mock_store_set('store', k, v)
+
+        def _ceph_get_store_prefix(self, prefix):
+            return self.mock_store_preifx('store', prefix)
+
+        def _ceph_get_module_option(self, module, key, localized_prefix= None):
+            try:
+                _, val, _ = self.check_mon_command({
+                    'prefix': 'config get',
+                    'who': 'mgr',
+                    'key': f'mgr/{module}/{key}'
+                })
+            except FileNotFoundError:
+                val = None
+            mo = [o for o in self.MODULE_OPTIONS if o['name'] == key]
+            if len(mo) == 1 and val is not None:
+                cls = {
+                    'str': str,
+                    'secs': int,
+                    'bool': lambda s: bool(s) and s != 'false' and s != 'False',
+                    'int': int,
+                }[mo[0].get('type', 'str')]
+                return cls(val)
+            return val
 
         def _ceph_set_module_option(self, module, key, val):
-            return self._ceph_set_store(f'{module}/{key}', val)
+            _, _, _ = self.check_mon_command({
+                'prefix': 'config set',
+                'who': 'mgr',
+                'name': f'mgr/{module}/{key}',
+                'value': val
+            })
+            return val
+
+        def _ceph_get(self, data_name):
+            return self.mock_store_get('_ceph_get', data_name, mock.MagicMock())
+
+        def _ceph_send_command(self, res, svc_type, svc_id, command, tag):
+            cmd = json.loads(command)
+
+            # Mocking the config store is handy sometimes:
+            def config_get():
+                who = cmd['who'].split('.')
+                whos = ['global'] + ['.'.join(who[:i+1]) for i in range(len(who))]
+                for attepmt in reversed(whos):
+                    val = self.mock_store_get('config', f'{attepmt}/{cmd["key"]}', None)
+                    if val is not None:
+                        return val
+                return None
+
+            def config_set():
+                self.mock_store_set('config', f'{cmd["who"]}/{cmd["name"]}', cmd['value'])
+                return ''
+
+            def config_dump():
+                r = []
+                for prefix, value in self.mock_store_preifx('config', '').items():
+                    section, name = prefix.split('/', 1)
+                    r.append({
+                        'name': name,
+                        'section': section,
+                        'value': value
+                    })
+                return json.dumps(r)
+
+            outb = ''
+            if cmd['prefix'] == 'config get':
+                outb = config_get()
+            elif cmd['prefix'] == 'config set':
+                outb = config_set()
+            elif cmd['prefix'] == 'config dump':
+                outb = config_dump()
+            elif hasattr(self, '_mon_command_mock_' + cmd['prefix'].replace(' ', '_')):
+                a = getattr(self, '_mon_command_mock_' + cmd['prefix'].replace(' ', '_'))
+                outb = a(cmd)
+
+            res.complete(0, outb, '')
+
+        @property
+        def _logger(self):
+            return logging.getLogger(__name__)
+
+        @_logger.setter
+        def _logger(self, _):
+            pass
 
         def __init__(self, *args):
-            self._store = {}
+            if not hasattr(self, '_store'):
+                self._store = {}
+
 
             if self.__class__.__name__ not in M_classes:
                 # call those only once. 
@@ -52,10 +157,10 @@ if 'UNITTEST' in os.environ:
 
             super(M, self).__init__()
             self._ceph_get_version = mock.Mock()
-            self._ceph_get = mock.MagicMock()
             self._ceph_get_option = mock.MagicMock()
             self._ceph_get_context = mock.MagicMock()
             self._ceph_register_client = mock.MagicMock()
+            self._ceph_set_health_checks = mock.MagicMock()
             self._configure_logging = lambda *_: None
             self._unconfigure_logging = mock.MagicMock()
             self._ceph_log = mock.MagicMock()
@@ -81,7 +186,7 @@ if 'UNITTEST' in os.environ:
 
 
         sys.modules.update({
-            'rados': mock.Mock(Error=MockRadosError, OSError=MockRadosError),
+            'rados': mock.MagicMock(Error=MockRadosError, OSError=MockRadosError),
             'rbd': mock.Mock(),
             'cephfs': mock.Mock(),
         })
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/tests/test_orchestrator.py b/ceph/src/pybind/mgr/tests/test_orchestrator.py
deleted file mode 100644 (file)
index 66d4474..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-from __future__ import absolute_import
-
-from ceph.deployment.service_spec import ServiceSpec
-from test_orchestrator import TestOrchestrator as _TestOrchestrator
-from tests import mock
-
-import pytest
-
-from ceph.deployment import inventory
-from orchestrator import raise_if_exception, Completion, ProgressReference
-from orchestrator import InventoryHost, DaemonDescription
-from orchestrator import OrchestratorValidationError
-
-
-def _test_resource(data, resource_class, extra=None):
-    # ensure we can deserialize and serialize
-    rsc = resource_class.from_json(data)
-    rsc.to_json()
-
-    if extra:
-        # if there is an unexpected data provided
-        data.update(extra)
-        with pytest.raises(OrchestratorValidationError):
-            resource_class.from_json(data)
-
-
-def test_inventory():
-    json_data = {
-        'name': 'host0',
-        'addr': '1.2.3.4',
-        'devices': [
-            {
-                'sys_api': {
-                    'rotational': '1',
-                    'size': 1024,
-                },
-                'path': '/dev/sda',
-                'available': False,
-                'rejected_reasons': [],
-                'lvs': []
-            }
-        ]
-    }
-    _test_resource(json_data, InventoryHost, {'abc': False})
-    for devices in json_data['devices']:
-        _test_resource(devices, inventory.Device)
-
-    json_data = [{}, {'name': 'host0', 'addr': '1.2.3.4'}, {'devices': []}]
-    for data in json_data:
-        with pytest.raises(OrchestratorValidationError):
-            InventoryHost.from_json(data)
-
-
-def test_daemon_description():
-    json_data = {
-        'hostname': 'test',
-        'daemon_type': 'mon',
-        'daemon_id': 'a'
-    }
-    _test_resource(json_data, DaemonDescription, {'abc': False})
-
-
-def test_raise():
-    c = Completion()
-    c._exception = ZeroDivisionError()
-    with pytest.raises(ZeroDivisionError):
-        raise_if_exception(c)
-
-
-def test_promise():
-    p = Completion(value=3)
-    p.finalize()
-    assert p.result == 3
-
-
-def test_promise_then():
-    p = Completion(value=3).then(lambda three: three + 1)
-    p.finalize()
-    assert p.result == 4
-
-
-def test_promise_mondatic_then():
-    p = Completion(value=3)
-    p.then(lambda three: Completion(value=three + 1))
-    p.finalize()
-    assert p.result == 4
-
-
-def some_complex_completion():
-    c = Completion(value=3).then(
-        lambda three: Completion(value=three + 1).then(
-            lambda four: four + 1))
-    return c
-
-def test_promise_mondatic_then_combined():
-    p = some_complex_completion()
-    p.finalize()
-    assert p.result == 5
-
-
-def test_promise_flat():
-    p = Completion()
-    p.then(lambda r1: Completion(value=r1 + ' there').then(
-        lambda r11: r11 + '!'))
-    p.finalize('hello')
-    assert p.result == 'hello there!'
-
-
-def test_side_effect():
-    foo = {'x': 1}
-
-    def run(x):
-        foo['x'] = x
-
-    foo['x'] = 1
-    Completion(value=3).then(run).finalize()
-    assert foo['x'] == 3
-
-
-def test_progress():
-    c = some_complex_completion()
-    mgr = mock.MagicMock()
-    mgr.process = lambda cs: [c.finalize(None) for c in cs]
-
-    progress_val = 0.75
-    c._last_promise().then(
-        on_complete=ProgressReference(message='hello world',
-                                      mgr=mgr,
-                                      completion=lambda: Completion(
-                                          on_complete=lambda _: progress_val))
-    )
-    mgr.remote.assert_called_with('progress', 'update', c.progress_reference.progress_id, 'hello world', 0.0, [('origin', 'orchestrator')])
-
-    c.finalize()
-    mgr.remote.assert_called_with('progress', 'complete', c.progress_reference.progress_id)
-
-    c.progress_reference.update()
-    mgr.remote.assert_called_with('progress', 'update', c.progress_reference.progress_id, 'hello world', progress_val, [('origin', 'orchestrator')])
-    assert not c.progress_reference.effective
-
-    progress_val = 1
-    c.progress_reference.update()
-    assert c.progress_reference.effective
-    mgr.remote.assert_called_with('progress', 'complete', c.progress_reference.progress_id)
-
-
-def test_with_progress():
-    mgr = mock.MagicMock()
-    mgr.process = lambda cs: [c.finalize(None) for c in cs]
-
-    def execute(y):
-        return str(y)
-
-    def run(x):
-        def two(_):
-            return execute(x * 2)
-
-        return Completion.with_progress(
-            message='message',
-            on_complete=two,
-            mgr=mgr
-
-        )
-    c = Completion(on_complete=lambda x: x * 10).then(run)._first_promise
-    c.finalize(2)
-    assert c.result == '40'
-    c.progress_reference.update()
-    assert c.progress_reference.effective
-
-
-def test_exception():
-
-    def run(x):
-        raise KeyError(x)
-
-    c = Completion(value=3).then(run)
-    c.finalize()
-    with pytest.raises(KeyError):
-        raise_if_exception(c)
-
-
-def test_fail():
-    c = Completion().then(lambda _: 3)
-    c._first_promise.fail(KeyError())
-    assert isinstance(c.exception, KeyError)
-
-    with pytest.raises(ValueError,
-                  match='Invalid State: called fail, but Completion is already finished: {}'.format(
-                      str(ZeroDivisionError()))):
-        c._first_promise.fail(ZeroDivisionError())
-
-
-def test_pretty_print():
-    mgr = mock.MagicMock()
-    mgr.process = lambda cs: [c.finalize(None) for c in cs]
-
-    def add_one(x):
-        return x+1
-
-    c = Completion(value=1, on_complete=add_one).then(
-        str
-    ).add_progress('message', mgr)
-
-    assert c.pretty_print() == """<Completion>[
-       add_one(1),
-       str(...),
-       ProgressReference(...),
-]"""
-    c.finalize()
-    assert c.pretty_print() == """<Completion>[
-(done) add_one(1),
-(done) str(2),
-(done) ProgressReference('2'),
-]"""
-
-    p = some_complex_completion()
-    assert p.pretty_print() == """<Completion>[
-       <lambda>(3),
-       lambda x: x(...),
-]"""
-    p.finalize()
-    assert p.pretty_print() == """<Completion>[
-(done) <lambda>(3),
-(done) <lambda>(4),
-(done) lambda x: x(5),
-(done) lambda x: x(5),
-]"""
-
-    assert p.result == 5
-
-def test_apply():
-    to = _TestOrchestrator('', 0, 0)
-    completion = to.apply([
-        ServiceSpec(service_type='nfs'),
-        ServiceSpec(service_type='nfs'),
-        ServiceSpec(service_type='nfs'),
-    ])
-    completion.finalize(42)
-    assert  completion.result == [None, None, None]
\ No newline at end of file
index e6a902a74763fe11765ae46adf6312dd767472b3..3e129ba64eb16a422358678aa3e1fd42f52bdc69 100644 (file)
@@ -1,8 +1,30 @@
 [tox]
-envlist = py3, mypy
+envlist =
+    py3,
+    mypy,
+    test,
+    fix
 skipsdist = true
 requires = cython
 
+[flake8]
+max-line-length = 100
+exclude =
+    .tox,
+    .vagrant,
+    __pycache__,
+    *.pyc,
+    templates,
+    .eggs
+
+[autopep8]
+addopts =
+    --max-line-length {[flake8]max-line-length}
+    --exclude "{[flake8]exclude}"
+    --in-place
+    --recursive
+    --ignore-local-config
+
 [testenv]
 setenv =
     UNITTEST = true
@@ -12,7 +34,7 @@ deps =
     cython
     -rrequirements.txt
 commands =
-    pytest -v --cov --cov-append --cov-report= --doctest-modules {posargs: \
+    pytest --cov --cov-append --cov-report= --doctest-modules {posargs: \
         mgr_util.py \
         tests/ \
         cephadm/ \
@@ -26,14 +48,29 @@ deps =
     cython
     -rrequirements.txt
     mypy==0.770
-commands = mypy --config-file=../../mypy.ini \
+commands =
+    mypy --config-file=../../mypy.ini \
            cephadm/module.py \
            mgr_module.py \
            dashboard/module.py \
+           prometheus/module.py \
            mgr_util.py \
            orchestrator/__init__.py \
            progress/module.py \
            rook/module.py \
-           osd_support/module.py \
            test_orchestrator/module.py \
            volumes/__init__.py
+
+[testenv:test]
+setenv = {[testenv]setenv}
+deps = {[testenv]deps}
+commands = {[testenv]commands}
+
+[testenv:fix]
+basepython = python3
+deps =
+    autopep8
+commands =
+    python --version
+    autopep8 {[autopep8]addopts} {posargs: \
+        cephadm/ orchestrator/}
diff --git a/ceph/src/pybind/mgr/volumes/fs/nfs.py b/ceph/src/pybind/mgr/volumes/fs/nfs.py
new file mode 100644 (file)
index 0000000..11bcc5f
--- /dev/null
@@ -0,0 +1,820 @@
+import errno
+import json
+import logging
+from typing import List
+import socket
+from os.path import isabs, normpath
+
+from ceph.deployment.service_spec import NFSServiceSpec, PlacementSpec
+from rados import TimedOut
+
+import orchestrator
+
+from .fs_util import create_pool
+
+log = logging.getLogger(__name__)
+POOL_NAME = 'nfs-ganesha'
+
+
+def available_clusters(mgr):
+    '''
+    This method returns list of available cluster ids.
+    It removes 'ganesha-' prefixes from cluster service id returned by cephadm.
+    Example:
+    completion.result value:
+    <ServiceDescription of <NFSServiceSpec for service_name=nfs.ganesha-vstart>>
+    return value: ['ganesha-vstart'] -> ['vstart']
+    '''
+    # TODO check cephadm cluster list with rados pool conf objects
+    completion = mgr.describe_service(service_type='nfs')
+    mgr._orchestrator_wait([completion])
+    orchestrator.raise_if_exception(completion)
+    return [cluster.spec.service_id.replace('ganesha-', '', 1) for cluster in completion.result]
+
+
+def export_cluster_checker(func):
+    def cluster_check(fs_export, *args, **kwargs):
+        """
+        This method checks if cluster exists and sets rados namespace.
+        """
+        if kwargs['cluster_id'] not in available_clusters(fs_export.mgr):
+            return -errno.ENOENT, "", "Cluster does not exists"
+        fs_export.rados_namespace = kwargs['cluster_id']
+        return func(fs_export, *args, **kwargs)
+    return cluster_check
+
+
+def cluster_setter(func):
+    def set_pool_ns_clusterid(nfs, *args, **kwargs):
+        nfs._set_pool_namespace(kwargs['cluster_id'])
+        nfs._set_cluster_id(kwargs['cluster_id'])
+        return func(nfs, *args, **kwargs)
+    return set_pool_ns_clusterid
+
+
+class GaneshaConfParser(object):
+    def __init__(self, raw_config):
+        self.pos = 0
+        self.text = ""
+        self.clean_config(raw_config)
+
+    def clean_config(self, raw_config):
+        for line in raw_config.split("\n"):
+            self.text += line
+            if line.startswith("%"):
+                self.text += "\n"
+
+    def remove_whitespaces_quotes(self):
+        if self.text.startswith("%url"):
+            self.text = self.text.replace('"', "")
+        else:
+            self.text = "".join(self.text.split())
+
+    def stream(self):
+        return self.text[self.pos:]
+
+    def parse_block_name(self):
+        idx = self.stream().find('{')
+        if idx == -1:
+            raise Exception("Cannot find block name")
+        block_name = self.stream()[:idx]
+        self.pos += idx+1
+        return block_name
+
+    def parse_block_or_section(self):
+        if self.stream().startswith("%url "):
+            # section line
+            self.pos += 5
+            idx = self.stream().find('\n')
+            if idx == -1:
+                value = self.stream()
+                self.pos += len(value)
+            else:
+                value = self.stream()[:idx]
+                self.pos += idx+1
+            block_dict = {'block_name': '%url', 'value': value}
+            return block_dict
+
+        block_dict = {'block_name': self.parse_block_name().upper()}
+        self.parse_block_body(block_dict)
+        if self.stream()[0] != '}':
+            raise Exception("No closing bracket '}' found at the end of block")
+        self.pos += 1
+        return block_dict
+
+    def parse_parameter_value(self, raw_value):
+        if raw_value.find(',') != -1:
+            return [self.parse_parameter_value(v.strip())
+                    for v in raw_value.split(',')]
+        try:
+            return int(raw_value)
+        except ValueError:
+            if raw_value == "true":
+                return True
+            if raw_value == "false":
+                return False
+            if raw_value.find('"') == 0:
+                return raw_value[1:-1]
+            return raw_value
+
+    def parse_stanza(self, block_dict):
+        equal_idx = self.stream().find('=')
+        if equal_idx == -1:
+            raise Exception("Malformed stanza: no equal symbol found.")
+        semicolon_idx = self.stream().find(';')
+        parameter_name = self.stream()[:equal_idx].lower()
+        parameter_value = self.stream()[equal_idx+1:semicolon_idx]
+        block_dict[parameter_name] = self.parse_parameter_value(parameter_value)
+        self.pos += semicolon_idx+1
+
+    def parse_block_body(self, block_dict):
+        while True:
+            if self.stream().find('}') == 0:
+                # block end
+                return
+
+            last_pos = self.pos
+            semicolon_idx = self.stream().find(';')
+            lbracket_idx = self.stream().find('{')
+            is_semicolon = (semicolon_idx != -1)
+            is_lbracket = (lbracket_idx != -1)
+            is_semicolon_lt_lbracket = (semicolon_idx < lbracket_idx)
+
+            if is_semicolon and ((is_lbracket and is_semicolon_lt_lbracket) or not is_lbracket):
+                self.parse_stanza(block_dict)
+            elif is_lbracket and ((is_semicolon and not is_semicolon_lt_lbracket) or
+                                  (not is_semicolon)):
+                if '_blocks_' not in block_dict:
+                    block_dict['_blocks_'] = []
+                block_dict['_blocks_'].append(self.parse_block_or_section())
+            else:
+                raise Exception("Malformed stanza: no semicolon found.")
+
+            if last_pos == self.pos:
+                raise Exception("Infinite loop while parsing block content")
+
+    def parse(self):
+        self.remove_whitespaces_quotes()
+        blocks = []
+        while self.stream():
+            blocks.append(self.parse_block_or_section())
+        return blocks
+
+    @staticmethod
+    def _indentation(depth, size=4):
+        conf_str = ""
+        for _ in range(0, depth*size):
+            conf_str += " "
+        return conf_str
+
+    @staticmethod
+    def write_block_body(block, depth=0):
+        def format_val(key, val):
+            if isinstance(val, list):
+                return ', '.join([format_val(key, v) for v in val])
+            if isinstance(val, bool):
+                return str(val).lower()
+            if isinstance(val, int) or (block['block_name'] == 'CLIENT'
+                                        and key == 'clients'):
+                return '{}'.format(val)
+            return '"{}"'.format(val)
+
+        conf_str = ""
+        for key, val in block.items():
+            if key == 'block_name':
+                continue
+            elif key == '_blocks_':
+                for blo in val:
+                    conf_str += GaneshaConfParser.write_block(blo, depth)
+            elif val:
+                conf_str += GaneshaConfParser._indentation(depth)
+                conf_str += '{} = {};\n'.format(key, format_val(key, val))
+        return conf_str
+
+    @staticmethod
+    def write_block(block, depth=0):
+        if block['block_name'] == "%url":
+            return '%url "{}"\n\n'.format(block['value'])
+
+        conf_str = ""
+        conf_str += GaneshaConfParser._indentation(depth)
+        conf_str += format(block['block_name'])
+        conf_str += " {\n"
+        conf_str += GaneshaConfParser.write_block_body(block, depth+1)
+        conf_str += GaneshaConfParser._indentation(depth)
+        conf_str += "}\n"
+        return conf_str
+
+
+class CephFSFSal():
+    def __init__(self, name, user_id=None, fs_name=None, sec_label_xattr=None,
+                 cephx_key=None):
+        self.name = name
+        self.fs_name = fs_name
+        self.user_id = user_id
+        self.sec_label_xattr = sec_label_xattr
+        self.cephx_key = cephx_key
+
+    @classmethod
+    def from_fsal_block(cls, fsal_block):
+        return cls(fsal_block['name'],
+                   fsal_block.get('user_id', None),
+                   fsal_block.get('filesystem', None),
+                   fsal_block.get('sec_label_xattr', None),
+                   fsal_block.get('secret_access_key', None))
+
+    def to_fsal_block(self):
+        result = {
+            'block_name': 'FSAL',
+            'name': self.name,
+        }
+        if self.user_id:
+            result['user_id'] = self.user_id
+        if self.fs_name:
+            result['filesystem'] = self.fs_name
+        if self.sec_label_xattr:
+            result['sec_label_xattr'] = self.sec_label_xattr
+        if self.cephx_key:
+            result['secret_access_key'] = self.cephx_key
+        return result
+
+    @classmethod
+    def from_dict(cls, fsal_dict):
+        return cls(fsal_dict['name'], fsal_dict['user_id'],
+                   fsal_dict['fs_name'], fsal_dict['sec_label_xattr'], None)
+
+    def to_dict(self):
+        return {
+            'name': self.name,
+            'user_id': self.user_id,
+            'fs_name': self.fs_name,
+            'sec_label_xattr': self.sec_label_xattr
+        }
+
+
+class Client(object):
+    def __init__(self, addresses, access_type=None, squash=None):
+        self.addresses = addresses
+        self.access_type = access_type
+        self.squash = squash
+
+    @classmethod
+    def from_client_block(cls, client_block):
+        addresses = client_block['clients']
+        if not isinstance(addresses, list):
+            addresses = [addresses]
+        return cls(addresses,
+                   client_block.get('access_type', None),
+                   client_block.get('squash', None))
+
+    def to_client_block(self):
+        result = {
+            'block_name': 'CLIENT',
+            'clients': self.addresses,
+        }
+        if self.access_type:
+            result['access_type'] = self.access_type
+        if self.squash:
+            result['squash'] = self.squash
+        return result
+
+    @classmethod
+    def from_dict(cls, client_dict):
+        return cls(client_dict['addresses'], client_dict['access_type'],
+                   client_dict['squash'])
+
+    def to_dict(self):
+        return {
+            'addresses': self.addresses,
+            'access_type': self.access_type,
+            'squash': self.squash
+        }
+
+
+class NFSRados:
+    def __init__(self, mgr, namespace):
+        self.mgr = mgr
+        self.pool = POOL_NAME
+        self.namespace = namespace
+
+    def _make_rados_url(self, obj):
+        return "rados://{}/{}/{}".format(self.pool, self.namespace, obj)
+
+    def _create_url_block(self, obj_name):
+        return {'block_name': '%url', 'value': self._make_rados_url(obj_name)}
+
+    def write_obj(self, conf_block, obj, config_obj=''):
+        if 'export-' in obj:
+            conf_block = GaneshaConfParser.write_block(conf_block)
+
+        with self.mgr.rados.open_ioctx(self.pool) as ioctx:
+            ioctx.set_namespace(self.namespace)
+            ioctx.write_full(obj, conf_block.encode('utf-8'))
+            if not config_obj:
+                # Return after creating empty common config object
+                return
+            log.debug("write configuration into rados object "
+                      f"{self.pool}/{self.namespace}/{obj}:\n{conf_block}")
+
+            # Add created obj url to common config obj
+            ioctx.append(config_obj, GaneshaConfParser.write_block(
+                         self._create_url_block(obj)).encode('utf-8'))
+            FSExport._check_rados_notify(ioctx, config_obj)
+            log.debug(f"Added {obj} url to {config_obj}")
+
+    def remove_obj(self, obj, config_obj):
+        with self.mgr.rados.open_ioctx(self.pool) as ioctx:
+            ioctx.set_namespace(self.namespace)
+            export_urls = ioctx.read(config_obj)
+            url = '%url "{}"\n\n'.format(self._make_rados_url(obj))
+            export_urls = export_urls.replace(url.encode('utf-8'), b'')
+            ioctx.remove_object(obj)
+            ioctx.write_full(config_obj, export_urls)
+            FSExport._check_rados_notify(ioctx, config_obj)
+            log.debug("Object deleted: {}".format(url))
+
+    def remove_all_obj(self):
+        with self.mgr.rados.open_ioctx(self.pool) as ioctx:
+            ioctx.set_namespace(self.namespace)
+            for obj in ioctx.list_objects():
+                obj.remove()
+
+    def check_user_config(self):
+        with self.mgr.rados.open_ioctx(self.pool) as ioctx:
+            ioctx.set_namespace(self.namespace)
+            for obj in ioctx.list_objects():
+                if obj.key.startswith("userconf-nfs"):
+                    return True
+        return False
+
+
+class Export(object):
+    # pylint: disable=R0902
+    def __init__(self, export_id, path, fsal, cluster_id, pseudo,
+                 access_type='R', clients=None):
+        self.export_id = export_id
+        self.path = path
+        self.fsal = fsal
+        self.cluster_id = cluster_id
+        self.pseudo = pseudo
+        self.access_type = access_type
+        self.squash = 'no_root_squash'
+        self.attr_expiration_time = 0
+        self.security_label = True
+        self.protocols = [4]
+        self.transports = ["TCP"]
+        self.clients = clients
+
+    @classmethod
+    def from_export_block(cls, export_block, cluster_id):
+        log.debug("parsing export block: %s", export_block)
+
+        fsal_block = [b for b in export_block['_blocks_']
+                      if b['block_name'] == "FSAL"]
+
+        client_blocks = [b for b in export_block['_blocks_']
+                         if b['block_name'] == "CLIENT"]
+
+        return cls(export_block['export_id'],
+                   export_block['path'],
+                   CephFSFSal.from_fsal_block(fsal_block[0]),
+                   cluster_id,
+                   export_block['pseudo'],
+                   export_block['access_type'],
+                   [Client.from_client_block(client)
+                    for client in client_blocks])
+
+    def to_export_block(self):
+        # pylint: disable=too-many-branches
+        result = {
+            'block_name': 'EXPORT',
+            'export_id': self.export_id,
+            'path': self.path,
+            'pseudo': self.pseudo,
+            'access_type': self.access_type,
+            'squash': self.squash,
+            'attr_expiration_time': self.attr_expiration_time,
+            'security_label': self.security_label,
+            'protocols': self.protocols,
+            'transports': self.transports,
+        }
+        result['_blocks_'] = [self.fsal.to_fsal_block()]
+        result['_blocks_'].extend([client.to_client_block()
+                                   for client in self.clients])
+        return result
+
+    @classmethod
+    def from_dict(cls, export_id, ex_dict):
+        return cls(export_id,
+                   ex_dict['path'],
+                   CephFSFSal.from_dict(ex_dict['fsal']),
+                   ex_dict['cluster_id'],
+                   ex_dict['pseudo'],
+                   ex_dict['access_type'],
+                   [Client.from_dict(client) for client in ex_dict['clients']])
+
+    def to_dict(self):
+        return {
+            'export_id': self.export_id,
+            'path': self.path,
+            'cluster_id': self.cluster_id,
+            'pseudo': self.pseudo,
+            'access_type': self.access_type,
+            'squash': self.squash,
+            'security_label': self.security_label,
+            'protocols': sorted([p for p in self.protocols]),
+            'transports': sorted([t for t in self.transports]),
+            'fsal': self.fsal.to_dict(),
+            'clients': [client.to_dict() for client in self.clients]
+        }
+
+
+class FSExport(object):
+    def __init__(self, mgr, namespace=None):
+        self.mgr = mgr
+        self.rados_pool = POOL_NAME
+        self.rados_namespace = namespace
+        self._exports = None
+
+    @staticmethod
+    def _check_rados_notify(ioctx, obj):
+        try:
+            ioctx.notify(obj)
+        except TimedOut:
+            log.exception(f"Ganesha timed out")
+
+    @property
+    def exports(self):
+        if self._exports is None:
+            self._exports = {}
+            log.info("Begin export parsing")
+            for cluster_id in available_clusters(self.mgr):
+                self.export_conf_objs = []  # type: List[Export]
+                self._read_raw_config(cluster_id)
+                self.exports[cluster_id] = self.export_conf_objs
+                log.info(f"Exports parsed successfully {self.exports.items()}")
+        return self._exports
+
+    def _fetch_export(self, pseudo_path):
+        try:
+            for ex in self.exports[self.rados_namespace]:
+                if ex.pseudo == pseudo_path:
+                    return ex
+        except KeyError:
+            pass
+
+    def _create_user_key(self, entity, path, fs_name):
+        osd_cap = 'allow rw pool={} namespace={}, allow rw tag cephfs data={}'.format(
+                self.rados_pool, self.rados_namespace, fs_name)
+
+        ret, out, err = self.mgr.check_mon_command({
+            'prefix': 'auth get-or-create',
+            'entity': 'client.{}'.format(entity),
+            'caps': ['mon', 'allow r', 'osd', osd_cap, 'mds', 'allow rw path={}'.format(path)],
+            'format': 'json',
+            })
+
+        json_res = json.loads(out)
+        log.info("Export user created is {}".format(json_res[0]['entity']))
+        return json_res[0]['entity'], json_res[0]['key']
+
+    def _delete_user(self, entity):
+        self.mgr.check_mon_command({
+            'prefix': 'auth rm',
+            'entity': 'client.{}'.format(entity),
+            })
+        log.info(f"Export user deleted is {entity}")
+
+    def _gen_export_id(self):
+        exports = sorted([ex.export_id for ex in self.exports[self.rados_namespace]])
+        nid = 1
+        for e_id in exports:
+            if e_id == nid:
+                nid += 1
+            else:
+                break
+        return nid
+
+    def _read_raw_config(self, rados_namespace):
+        with self.mgr.rados.open_ioctx(self.rados_pool) as ioctx:
+            ioctx.set_namespace(rados_namespace)
+            for obj in ioctx.list_objects():
+                if obj.key.startswith("export-"):
+                    size, _ = obj.stat()
+                    raw_config = obj.read(size)
+                    raw_config = raw_config.decode("utf-8")
+                    log.debug("read export configuration from rados "
+                              "object %s/%s/%s:\n%s", self.rados_pool,
+                              rados_namespace, obj.key, raw_config)
+                    self.export_conf_objs.append(Export.from_export_block(
+                        GaneshaConfParser(raw_config).parse()[0], rados_namespace))
+
+    def _save_export(self, export):
+        self.exports[self.rados_namespace].append(export)
+        NFSRados(self.mgr, self.rados_namespace).write_obj(export.to_export_block(),
+                 f'export-{export.export_id}', f'conf-nfs.ganesha-{export.cluster_id}')
+
+    def _delete_export(self, cluster_id, pseudo_path, export_obj=None):
+        try:
+            if export_obj:
+                export = export_obj
+            else:
+                export = self._fetch_export(pseudo_path)
+
+            if export:
+                if pseudo_path:
+                    NFSRados(self.mgr, self.rados_namespace).remove_obj(
+                             f'export-{export.export_id}', f'conf-nfs.ganesha-{cluster_id}')
+                self.exports[cluster_id].remove(export)
+                self._delete_user(export.fsal.user_id)
+                if not self.exports[cluster_id]:
+                    del self.exports[cluster_id]
+                return 0, "Successfully deleted export", ""
+            return 0, "", "Export does not exist"
+        except Exception as e:
+            log.exception(f"Failed to delete {pseudo_path} export for {cluster_id}")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    def format_path(self, path):
+        if path:
+            path = normpath(path.strip())
+            if path[:2] == "//":
+                path = path[1:]
+        return path
+
+    def check_fs(self, fs_name):
+        fs_map = self.mgr.get('fs_map')
+        return fs_name in [fs['mdsmap']['fs_name'] for fs in fs_map['filesystems']]
+
+    @export_cluster_checker
+    def create_export(self, fs_name, cluster_id, pseudo_path, read_only, path):
+        try:
+            if not self.check_fs(fs_name):
+                return -errno.ENOENT, "", f"filesystem {fs_name} not found"
+
+            pseudo_path = self.format_path(pseudo_path)
+            if not isabs(pseudo_path) or pseudo_path == "/":
+                return -errno.EINVAL, "", f"pseudo path {pseudo_path} is invalid. "\
+                        "It should not be absolute path or just '/'."
+
+            if cluster_id not in self.exports:
+                self.exports[cluster_id] = []
+
+            if not self._fetch_export(pseudo_path):
+                ex_id = self._gen_export_id()
+                user_id = f"{cluster_id}{ex_id}"
+                user_out, key = self._create_user_key(user_id, path, fs_name)
+                access_type = "RW"
+                if read_only:
+                    access_type = "RO"
+                ex_dict = {
+                        'path': self.format_path(path),
+                        'pseudo': pseudo_path,
+                        'cluster_id': cluster_id,
+                        'access_type': access_type,
+                        'fsal': {"name": "CEPH", "user_id": user_id,
+                                 "fs_name": fs_name, "sec_label_xattr": ""},
+                        'clients': []
+                        }
+                export = Export.from_dict(ex_id, ex_dict)
+                export.fsal.cephx_key = key
+                self._save_export(export)
+                result = {
+                        "bind": pseudo_path,
+                        "fs": fs_name,
+                        "path": path,
+                        "cluster": cluster_id,
+                        "mode": access_type,
+                        }
+                return (0, json.dumps(result, indent=4), '')
+            return 0, "", "Export already exists"
+        except Exception as e:
+            log.exception(f"Failed to create {pseudo_path} export for {cluster_id}")
+            return -errno.EINVAL, "", str(e)
+
+    @export_cluster_checker
+    def delete_export(self, cluster_id, pseudo_path):
+        return self._delete_export(cluster_id, pseudo_path)
+
+    def delete_all_exports(self, cluster_id):
+        try:
+            export_list = list(self.exports[cluster_id])
+        except KeyError:
+            log.info("No exports to delete")
+            return
+        self.rados_namespace = cluster_id
+        for export in export_list:
+            ret, out, err = self._delete_export(cluster_id=cluster_id, pseudo_path=None,
+                                                export_obj=export)
+            if ret != 0:
+                raise Exception(f"Failed to delete exports: {err} and {ret}")
+        log.info(f"All exports successfully deleted for cluster id: {cluster_id}")
+
+    @export_cluster_checker
+    def list_exports(self, cluster_id, detailed):
+        try:
+            if detailed:
+                result = [export.to_dict() for export in self.exports[cluster_id]]
+            else:
+                result = [export.pseudo for export in self.exports[cluster_id]]
+            return 0, json.dumps(result, indent=2), ''
+        except KeyError:
+            log.warning(f"No exports to list for {cluster_id}")
+            return 0, '', ''
+        except Exception as e:
+            log.exception(f"Failed to list exports for {cluster_id}")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    @export_cluster_checker
+    def get_export(self, cluster_id, pseudo_path):
+        try:
+            export = self._fetch_export(pseudo_path)
+            if export:
+                return 0, json.dumps(export.to_dict(), indent=2), ''
+            log.warning(f"No {pseudo_path} export to show for {cluster_id}")
+            return 0, '', ''
+        except Exception as e:
+            log.exception(f"Failed to get {pseudo_path} export for {cluster_id}")
+            return getattr(e, 'errno', -1), "", str(e)
+
+
+class NFSCluster:
+    def __init__(self, mgr):
+        self.pool_name = POOL_NAME
+        self.pool_ns = ''
+        self.mgr = mgr
+
+    def _set_cluster_id(self, cluster_id):
+        self.cluster_id = f"ganesha-{cluster_id}"
+
+    def _set_pool_namespace(self, cluster_id):
+        self.pool_ns = cluster_id
+
+    def _get_common_conf_obj_name(self):
+        return f'conf-nfs.{self.cluster_id}'
+
+    def _get_user_conf_obj_name(self):
+        return f'userconf-nfs.{self.cluster_id}'
+
+    def _call_orch_apply_nfs(self, placement):
+        spec = NFSServiceSpec(service_type='nfs', service_id=self.cluster_id,
+                              pool=self.pool_name, namespace=self.pool_ns,
+                              placement=PlacementSpec.from_string(placement))
+        completion = self.mgr.apply_nfs(spec)
+        self.mgr._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+
+    def create_empty_rados_obj(self):
+        common_conf = self._get_common_conf_obj_name()
+        NFSRados(self.mgr, self.pool_ns).write_obj('', self._get_common_conf_obj_name())
+        log.info(f"Created empty object:{common_conf}")
+
+    def delete_config_obj(self):
+        NFSRados(self.mgr, self.pool_ns).remove_all_obj()
+        log.info(f"Deleted {self._get_common_conf_obj_name()} object and all objects in "
+                 f"{self.pool_ns}")
+
+    def _restart_nfs_service(self):
+        completion = self.mgr.service_action(action='restart',
+                                             service_name='nfs.'+self.cluster_id)
+        self.mgr._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+
+    @cluster_setter
+    def create_nfs_cluster(self, export_type, cluster_id, placement):
+        if export_type != 'cephfs':
+            return -errno.EINVAL, "", f"Invalid export type: {export_type}"
+        try:
+            pool_list = [p['pool_name'] for p in self.mgr.get_osdmap().dump().get('pools', [])]
+
+            if self.pool_name not in pool_list:
+                r, out, err = create_pool(self.mgr, self.pool_name)
+                if r != 0:
+                    return r, out, err
+                log.info(f"Pool Status: {out}")
+
+                self.mgr.check_mon_command({'prefix': 'osd pool application enable',
+                                            'pool': self.pool_name, 'app': 'nfs'})
+
+            self.create_empty_rados_obj()
+
+            if cluster_id not in available_clusters(self.mgr):
+                self._call_orch_apply_nfs(placement)
+                return 0, "NFS Cluster Created Successfully", ""
+            return 0, "", f"{cluster_id} cluster already exists"
+        except Exception as e:
+            log.exception(f"NFS Cluster {cluster_id} could not be created")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    @cluster_setter
+    def update_nfs_cluster(self, cluster_id, placement):
+        try:
+            if cluster_id in available_clusters(self.mgr):
+                self._call_orch_apply_nfs(placement)
+                return 0, "NFS Cluster Updated Successfully", ""
+            return -errno.ENOENT, "", "Cluster does not exist"
+        except Exception as e:
+            log.exception(f"NFS Cluster {cluster_id} could not be updated")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    @cluster_setter
+    def delete_nfs_cluster(self, cluster_id):
+        try:
+            cluster_list = available_clusters(self.mgr)
+            if cluster_id in cluster_list:
+                self.mgr.fs_export.delete_all_exports(cluster_id)
+                completion = self.mgr.remove_service('nfs.' + self.cluster_id)
+                self.mgr._orchestrator_wait([completion])
+                orchestrator.raise_if_exception(completion)
+                self.delete_config_obj()
+                return 0, "NFS Cluster Deleted Successfully", ""
+            return 0, "", "Cluster does not exist"
+        except Exception as e:
+            log.exception(f"Failed to delete NFS Cluster {cluster_id}")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    def list_nfs_cluster(self):
+        try:
+            return 0, '\n'.join(available_clusters(self.mgr)), ""
+        except Exception as e:
+            log.exception("Failed to list NFS Cluster")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    def _show_nfs_cluster_info(self, cluster_id):
+        self._set_cluster_id(cluster_id)
+        completion = self.mgr.list_daemons(daemon_type='nfs')
+        self.mgr._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        host_ip = []
+        # Here completion.result is a list DaemonDescription objects
+        for cluster in completion.result:
+            if self.cluster_id == cluster.service_id():
+                """
+                getaddrinfo sample output: [(<AddressFamily.AF_INET: 2>,
+                <SocketKind.SOCK_STREAM: 1>, 6, 'xyz', ('172.217.166.98',2049)),
+                (<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_STREAM: 1>, 6, '',
+                ('2404:6800:4009:80d::200e', 2049, 0, 0))]
+                """
+                try:
+                    host_ip.append({
+                            "hostname": cluster.hostname,
+                            "ip": list(set([ip[4][0] for ip in socket.getaddrinfo(
+                                cluster.hostname, 2049, flags=socket.AI_CANONNAME,
+                                type=socket.SOCK_STREAM)])),
+                            "port": 2049  # Default ganesha port
+                            })
+                except socket.gaierror:
+                    continue
+        return host_ip
+
+    def show_nfs_cluster_info(self, cluster_id=None):
+        try:
+            cluster_ls = []
+            info_res = {}
+            if cluster_id:
+                cluster_ls = [cluster_id]
+            else:
+                cluster_ls = available_clusters(self.mgr)
+
+            for cluster_id in cluster_ls:
+                res = self._show_nfs_cluster_info(cluster_id)
+                if res:
+                    info_res[cluster_id] = res
+            return (0, json.dumps(info_res, indent=4), '')
+        except Exception as e:
+            log.exception(f"Failed to show info for cluster")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    @cluster_setter
+    def set_nfs_cluster_config(self, cluster_id, nfs_config):
+        try:
+            if not nfs_config:
+                return -errno.EINVAL, "", "Empty Config!!"
+            if cluster_id in available_clusters(self.mgr):
+                rados_obj = NFSRados(self.mgr, self.pool_ns)
+                if rados_obj.check_user_config():
+                    return 0, "", "NFS-Ganesha User Config already exists"
+                rados_obj.write_obj(nfs_config, self._get_user_conf_obj_name(),
+                                    self._get_common_conf_obj_name())
+                self._restart_nfs_service()
+                return 0, "NFS-Ganesha Config Set Successfully", ""
+            return -errno.ENOENT, "", "Cluster does not exist"
+        except Exception as e:
+            log.exception(f"Setting NFS-Ganesha Config failed for {cluster_id}")
+            return getattr(e, 'errno', -1), "", str(e)
+
+    @cluster_setter
+    def reset_nfs_cluster_config(self, cluster_id):
+        try:
+            if cluster_id in available_clusters(self.mgr):
+                rados_obj = NFSRados(self.mgr, self.pool_ns)
+                if not rados_obj.check_user_config():
+                    return 0, "", "NFS-Ganesha User Config does not exist"
+                rados_obj.remove_obj(self._get_user_conf_obj_name(),
+                                     self._get_common_conf_obj_name())
+                self._restart_nfs_service()
+                return 0, "NFS-Ganesha Config Reset Successfully", ""
+            return -errno.ENOENT, "", "Cluster does not exist"
+        except Exception as e:
+            log.exception(f"Resetting NFS-Ganesha Config failed for {cluster_id}")
+            return getattr(e, 'errno', -1), "", str(e)
index 29bc8b73c52fc1e7d712fbca5a3a75fd6ffef14c..8e6eaf936bb1c20134e326c03ea7851409e70486 100644 (file)
@@ -6,6 +6,7 @@ from contextlib import contextmanager
 import cephfs
 
 from .snapshot_util import mksnap, rmsnap
+from .pin_util import pin
 from .template import GroupTemplate
 from ..fs_util import listdir, get_ancestor_xattr
 from ..exception import VolumeException
@@ -61,6 +62,9 @@ class Group(GroupTemplate):
                 return []
             raise
 
+    def pin(self, pin_type, pin_setting):
+        return pin(self.fs, self.path, pin_type, pin_setting)
+
     def create_snapshot(self, snapname):
         snappath = os.path.join(self.path,
                                 self.vol_spec.snapshot_dir_prefix.encode('utf-8'),
diff --git a/ceph/src/pybind/mgr/volumes/fs/operations/pin_util.py b/ceph/src/pybind/mgr/volumes/fs/operations/pin_util.py
new file mode 100644 (file)
index 0000000..9ea79e5
--- /dev/null
@@ -0,0 +1,34 @@
+import os
+import errno
+
+import cephfs
+
+from ..exception import VolumeException
+from distutils.util import strtobool
+
+_pin_value = {
+    "export": lambda x: int(x),
+    "distributed": lambda x: int(strtobool(x)),
+    "random": lambda x: float(x),
+}
+_pin_xattr = {
+    "export": "ceph.dir.pin",
+    "distributed": "ceph.dir.pin.distributed",
+    "random": "ceph.dir.pin.random",
+}
+
+def pin(fs, path, pin_type, pin_setting):
+    """
+    Set a pin on a directory.
+    """
+    assert pin_type in _pin_xattr
+
+    try:
+        pin_setting = _pin_value[pin_type](pin_setting)
+    except ValueError as e:
+        raise VolumeException(-errno.EINVAL, f"pin value wrong type: {pin_setting}")
+
+    try:
+        fs.setxattr(path, _pin_xattr[pin_type], str(pin_setting).encode('utf-8'), 0)
+    except cephfs.Error as e:
+        raise VolumeException(-e.args[0], e.args[1])
index 362d62819e872db2b87abca5eab106d297e75854..40d9efb5931f3ccbcdedecb69e832e8365c5c42e 100644 (file)
@@ -95,6 +95,16 @@ class SubvolumeTemplate(object):
         """
         raise VolumeException(-errno.ENOTSUP, "operation not supported.")
 
+    def pin(self, pin_type, pin_setting):
+        """
+        pin a subvolume
+
+        :param pin_type: type of pin
+        :param pin_setting: setting for pin
+        :return: None
+        """
+        raise VolumeException(-errno.ENOTSUP, "operation not supported.")
+
     def create_snapshot(self, snapname):
         """
         snapshot a subvolume.
@@ -131,34 +141,6 @@ class SubvolumeTemplate(object):
         """
         raise VolumeException(-errno.ENOTSUP, "operation not supported.")
 
-    def is_snapshot_protected(self, snapname):
-        """
-        check if a snapshot is protected.
-
-        :param: snapname: snapshot to protect
-        :return: True if the snapshot is protected, False otherwise.
-        """
-        raise VolumeException(-errno.ENOTSUP, "operation not supported.")
-
-    def protect_snapshot(self, snapname):
-        """
-        protect a subvolume snapshot. only a protected snapshot can be cloned.
-
-        :param: snapname: snapshot to protect
-        :return: None
-        """
-        raise VolumeException(-errno.ENOTSUP, "operation not supported.")
-
-    def unprotect_snapshot(self, snapname):
-        """
-        unprotect a subvolume snapshot. fail to unprotect if there are pending
-        clone operations on the snapshot.
-
-        :param: snapname: snapshot to unprotect
-        :return: None
-        """
-        raise VolumeException(-errno.ENOTSUP, "operation not supported.")
-
     def attach_snapshot(self, snapname, tgt_subvolume):
         """
         attach a snapshot to a target cloned subvolume. the target subvolume
index 30c9235a87183c2971372b9339e7571eee2a95be..523f8e3d70edf96625f546fb86b6c9e93489a99e 100644 (file)
@@ -2,10 +2,12 @@ import os
 import uuid
 import errno
 import logging
+from enum import Enum, unique
 from hashlib import md5
 
 import cephfs
 
+from ..pin_util import pin
 from .metadata_manager import MetadataManager
 from ..trash import create_trashcan, open_trashcan
 from ...fs_util import get_ancestor_xattr
@@ -13,6 +15,11 @@ from ...exception import MetadataMgrException, VolumeException
 
 log = logging.getLogger(__name__)
 
+@unique
+class SubvolumeFeatures(Enum):
+    FEATURE_SNAPSHOT_CLONE       = "snapshot-clone"
+    FEATURE_SNAPSHOT_AUTOPROTECT = "snapshot-autoprotect"
+
 class SubvolumeBase(object):
     LEGACY_CONF_DIR = "_legacy"
 
@@ -93,6 +100,10 @@ class SubvolumeBase(object):
     def legacy_mode(self, mode):
         self.legacy = mode
 
+    @property
+    def features(self):
+        raise NotImplementedError
+
     def load_config(self):
         if self.legacy_mode:
             self.metadata_mgr = MetadataManager(self.fs, self.legacy_config_path, 0o640)
@@ -195,6 +206,9 @@ class SubvolumeBase(object):
                 raise VolumeException(-e.args[0], "Cannot set new size for the subvolume. '{0}'".format(e.args[1]))
         return newsize, subvolstat.st_size
 
+    def pin(self, pin_type, pin_setting):
+        return pin(self.fs, self.base_path, pin_type, pin_setting)
+
     def init_config(self, version, subvolume_type, subvolume_path, subvolume_state):
         self.metadata_mgr.init(version, subvolume_type, subvolume_path, subvolume_state)
         self.metadata_mgr.flush()
@@ -257,4 +271,4 @@ class SubvolumeBase(object):
             'mode': int(st["mode"]), 'data_pool': data_pool, 'created_at': str(st["btime"]),
             'bytes_quota': "infinite" if nsize == 0 else nsize, 'bytes_used': int(usedbytes),
             'bytes_pcent': "undefined" if nsize == 0 else '{0:.2f}'.format((float(usedbytes) / nsize) * 100.0),
-            'pool_namespace': pool_namespace}
+            'pool_namespace': pool_namespace, 'features': self.features}
index e4255d25b330c8a11912f8b2bcf0b4afa683827e..73363d3dc5643b23c433f9b014975024a90cf5f3 100644 (file)
@@ -8,7 +8,7 @@ from datetime import datetime
 import cephfs
 
 from .metadata_manager import MetadataManager
-from .subvolume_base import SubvolumeBase
+from .subvolume_base import SubvolumeBase, SubvolumeFeatures
 from ..op_sm import OpSm
 from ..template import SubvolumeTemplate
 from ..snapshot_util import mksnap, rmsnap
@@ -34,6 +34,10 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
         except MetadataMgrException as me:
             raise VolumeException(-errno.EINVAL, "error fetching subvolume metadata")
 
+    @property
+    def features(self):
+        return [SubvolumeFeatures.FEATURE_SNAPSHOT_CLONE.value, SubvolumeFeatures.FEATURE_SNAPSHOT_AUTOPROTECT.value]
+
     def create(self, size, isolate_nspace, pool, mode, uid, gid):
         subvolume_type = SubvolumeBase.SUBVOLUME_TYPE_NORMAL
         try:
@@ -197,18 +201,6 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
         snappath = self.snapshot_path(snapname)
         mksnap(self.fs, snappath)
 
-    def is_snapshot_protected(self, snapname):
-        try:
-            self.metadata_mgr.get_option('protected snaps', snapname)
-        except MetadataMgrException as me:
-            if me.errno == -errno.ENOENT:
-                return False
-            else:
-                log.warning("error checking protected snap {0} ({1})".format(snapname, me))
-                raise VolumeException(-errno.EINVAL, "snapshot protection check failed")
-        else:
-            return True
-
     def has_pending_clones(self, snapname):
         try:
             return self.metadata_mgr.section_has_item('clone snaps', snapname)
@@ -218,8 +210,8 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
             raise
 
     def remove_snapshot(self, snapname):
-        if self.is_snapshot_protected(snapname):
-            raise VolumeException(-errno.EINVAL, "snapshot '{0}' is protected".format(snapname))
+        if self.has_pending_clones(snapname):
+            raise VolumeException(-errno.EAGAIN, "snapshot '{0}' has pending clones".format(snapname))
         snappath = self.snapshot_path(snapname)
         rmsnap(self.fs, snappath)
 
@@ -234,7 +226,6 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
             return {'size': int(snap_info['size']),
                     'created_at': str(datetime.fromtimestamp(float(snap_info['created_at']))),
                     'data_pool': snap_info['data_pool'].decode('utf-8'),
-                    'protected': "yes" if self.is_snapshot_protected(snapname) else "no",
                     'has_pending_clones': "yes" if self.has_pending_clones(snapname) else "no"}
         except cephfs.Error as e:
             if e.errno == errno.ENOENT:
@@ -252,39 +243,6 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
                 return []
             raise
 
-    def _protect_snapshot(self, snapname):
-        try:
-            self.metadata_mgr.add_section("protected snaps")
-            self.metadata_mgr.update_section("protected snaps", snapname, "1")
-            self.metadata_mgr.flush()
-        except MetadataMgrException as me:
-            log.warning("error updating protected snap list ({0})".format(me))
-            raise VolumeException(-errno.EINVAL, "error protecting snapshot")
-
-    def _unprotect_snapshot(self, snapname):
-        try:
-            self.metadata_mgr.remove_option("protected snaps", snapname)
-            self.metadata_mgr.flush()
-        except MetadataMgrException as me:
-            log.warning("error updating protected snap list ({0})".format(me))
-            raise VolumeException(-errno.EINVAL, "error unprotecting snapshot")
-
-    def protect_snapshot(self, snapname):
-        if not snapname.encode('utf-8') in self.list_snapshots():
-            raise VolumeException(-errno.ENOENT, "snapshot '{0}' does not exist".format(snapname))
-        if self.is_snapshot_protected(snapname):
-            raise VolumeException(-errno.EEXIST, "snapshot '{0}' is already protected".format(snapname))
-        self._protect_snapshot(snapname)
-
-    def unprotect_snapshot(self, snapname):
-        if not snapname.encode('utf-8') in self.list_snapshots():
-            raise VolumeException(-errno.ENOENT, "snapshot '{0}' does not exist".format(snapname))
-        if not self.is_snapshot_protected(snapname):
-            raise VolumeException(-errno.EEXIST, "snapshot '{0}' is not protected".format(snapname))
-        if self.has_pending_clones(snapname):
-            raise VolumeException(-errno.EEXIST, "snapshot '{0}' has pending clones".format(snapname))
-        self._unprotect_snapshot(snapname)
-
     def _add_snap_clone(self, track_id, snapname):
         self.metadata_mgr.add_section("clone snaps")
         self.metadata_mgr.update_section("clone snaps", track_id, snapname)
@@ -297,8 +255,6 @@ class SubvolumeV1(SubvolumeBase, SubvolumeTemplate):
     def attach_snapshot(self, snapname, tgt_subvolume):
         if not snapname.encode('utf-8') in self.list_snapshots():
             raise VolumeException(-errno.ENOENT, "snapshot '{0}' does not exist".format(snapname))
-        if not self.is_snapshot_protected(snapname):
-            raise VolumeException(-errno.EINVAL, "snapshot '{0}' is not protected".format(snapname))
         try:
             create_clone_index(self.fs, self.vol_spec)
             with open_clone_index(self.fs, self.vol_spec) as index:
index c1030d39fed18fb8cbe3d74a71c5f93462a658fd..17f377ca44a14a79dd9f28ec9d95d85ec9feeb8c 100644 (file)
@@ -3,6 +3,8 @@ import errno
 import logging
 import sys
 
+from typing import List
+
 from contextlib import contextmanager
 from threading import Lock, Condition
 from typing import no_type_check
@@ -201,6 +203,27 @@ def gen_pool_names(volname):
     """
     return "cephfs.{}.meta".format(volname), "cephfs.{}.data".format(volname)
 
+def get_pool_names(mgr, volname):
+    """
+    return metadata and data pools (list) names of volume as a tuple
+    """
+    fs_map = mgr.get("fs_map")
+    metadata_pool_id = None
+    data_pool_ids = [] # type: List[int]
+    for f in fs_map['filesystems']:
+        if volname == f['mdsmap']['fs_name']:
+            metadata_pool_id = f['mdsmap']['metadata_pool']
+            data_pool_ids = f['mdsmap']['data_pools']
+            break
+    if metadata_pool_id is None:
+        return None, None
+
+    osdmap = mgr.get("osd_map")
+    pools = dict([(p['pool'], p['pool_name']) for p in osdmap['pools']])
+    metadata_pool = pools[metadata_pool_id]
+    data_pools = [pools[id] for id in data_pool_ids]
+    return metadata_pool, data_pools
+
 def create_volume(mgr, volname, placement):
     """
     create volume  (pool, filesystem and mds)
@@ -226,9 +249,9 @@ def create_volume(mgr, volname, placement):
     # create mds
     return create_mds(mgr, volname, placement)
 
-def delete_volume(mgr, volname):
+def delete_volume(mgr, volname, metadata_pool, data_pools):
     """
-    delete the given module (tear down mds, remove filesystem)
+    delete the given module (tear down mds, remove filesystem, remove pools)
     """
     # Tear down MDS daemons
     try:
@@ -253,11 +276,16 @@ def delete_volume(mgr, volname):
         err = "Filesystem not found for volume '{0}'".format(volname)
         log.warning(err)
         return -errno.ENOENT, "", err
-    metadata_pool, data_pool = gen_pool_names(volname)
     r, outb, outs = remove_pool(mgr, metadata_pool)
     if r != 0:
         return r, outb, outs
-    return remove_pool(mgr, data_pool)
+
+    for data_pool in data_pools:
+        r, outb, outs = remove_pool(mgr, data_pool)
+        if r != 0:
+            return r, outb, outs
+    result_str = "metadata pool: {0} data pool: {1} removed".format(metadata_pool, str(data_pools))
+    return r, result_str, ""
 
 def list_volumes(mgr):
     """
index a6ff65d4295fd51cd070a033be2e776babce8c67..8edaca6def12901b414b7db66c6efeb2efbba153 100644 (file)
@@ -8,7 +8,7 @@ import cephfs
 from .fs_util import listdir
 
 from .operations.volume import ConnectionPool, open_volume, create_volume, \
-    delete_volume, list_volumes
+    delete_volume, list_volumes, get_pool_names
 from .operations.group import open_group, create_group, remove_group
 from .operations.subvolume import open_subvol, create_subvol, remove_subvol, \
     create_clone
@@ -98,9 +98,24 @@ class VolumeClient(object):
                 "that is what you want, re-issue the command followed by " \
                 "--yes-i-really-mean-it.".format(volname)
 
+        ret, out, err = self.mgr.check_mon_command({
+            'prefix': 'config get',
+            'key': 'mon_allow_pool_delete',
+            'who': 'mon',
+            'format': 'json',
+        })
+        mon_allow_pool_delete = json.loads(out)
+        if not mon_allow_pool_delete:
+            return -errno.EPERM, "", "pool deletion is disabled; you must first " \
+                "set the mon_allow_pool_delete config option to true before volumes " \
+                "can be deleted"
+
+        metadata_pool, data_pools = get_pool_names(self.mgr, volname)
+        if not metadata_pool:
+            return -errno.ENOENT, "", "volume {0} doesn't exist".format(volname)
         self.purge_queue.cancel_jobs(volname)
         self.connection_pool.del_fs_handle(volname, wait=True)
-        return delete_volume(self.mgr, volname)
+        return delete_volume(self.mgr, volname, metadata_pool, data_pools)
 
     def list_fs_volumes(self):
         if self.stopping.is_set():
@@ -203,6 +218,24 @@ class VolumeClient(object):
             ret = self.volume_exception_to_retval(ve)
         return ret
 
+    def subvolume_pin(self, **kwargs):
+        ret         = 0, "", ""
+        volname     = kwargs['vol_name']
+        subvolname  = kwargs['sub_name']
+        pin_type    = kwargs['pin_type']
+        pin_setting = kwargs['pin_setting']
+        groupname   = kwargs['group_name']
+
+        try:
+            with open_volume(self, volname) as fs_handle:
+                with open_group(fs_handle, self.volspec, groupname) as group:
+                    with open_subvol(fs_handle, self.volspec, group, subvolname) as subvolume:
+                        subvolume.pin(pin_type, pin_setting)
+                        ret = 0, json.dumps({}), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
     def subvolume_getpath(self, **kwargs):
         ret        = None
         volname    = kwargs['vol_name']
@@ -326,33 +359,31 @@ class VolumeClient(object):
         return ret
 
     def protect_subvolume_snapshot(self, **kwargs):
-        ret        = 0, "", ""
+        ret        = 0, "", "Deprecation warning: 'snapshot protect' call is deprecated and will be removed in a future release"
         volname    = kwargs['vol_name']
         subvolname = kwargs['sub_name']
-        snapname   = kwargs['snap_name']
         groupname  = kwargs['group_name']
 
         try:
             with open_volume(self, volname) as fs_handle:
                 with open_group(fs_handle, self.volspec, groupname) as group:
                     with open_subvol(fs_handle, self.volspec, group, subvolname) as subvolume:
-                        subvolume.protect_snapshot(snapname)
+                        log.warning("snapshot protect call is deprecated and will be removed in a future release")
         except VolumeException as ve:
             ret = self.volume_exception_to_retval(ve)
         return ret
 
     def unprotect_subvolume_snapshot(self, **kwargs):
-        ret        = 0, "", ""
+        ret        = 0, "", "Deprecation warning: 'snapshot unprotect' call is deprecated and will be removed in a future release"
         volname    = kwargs['vol_name']
         subvolname = kwargs['sub_name']
-        snapname   = kwargs['snap_name']
         groupname  = kwargs['group_name']
 
         try:
             with open_volume(self, volname) as fs_handle:
                 with open_group(fs_handle, self.volspec, groupname) as group:
                     with open_subvol(fs_handle, self.volspec, group, subvolname) as subvolume:
-                        subvolume.unprotect_snapshot(snapname)
+                        log.warning("snapshot unprotect call is deprecated and will be removed in a future release")
         except VolumeException as ve:
             ret = self.volume_exception_to_retval(ve)
         return ret
@@ -379,8 +410,6 @@ class VolumeClient(object):
 
         if not snapname.encode('utf-8') in subvolume.list_snapshots():
             raise VolumeException(-errno.ENOENT, "snapshot '{0}' does not exist".format(snapname))
-        if not subvolume.is_snapshot_protected(snapname):
-            raise VolumeException(-errno.EINVAL, "snapshot '{0}' is not protected".format(snapname))
 
         # TODO: when the target group is same as source, reuse group object.
         with open_group(fs_handle, self.volspec, target_groupname) as target_group:
@@ -502,6 +531,22 @@ class VolumeClient(object):
                 ret = self.volume_exception_to_retval(ve)
         return ret
 
+    def pin_subvolume_group(self, **kwargs):
+        ret           = 0, "", ""
+        volname       = kwargs['vol_name']
+        groupname     = kwargs['group_name']
+        pin_type      = kwargs['pin_type']
+        pin_setting   = kwargs['pin_setting']
+
+        try:
+            with open_volume(self, volname) as fs_handle:
+                with open_group(fs_handle, self.volspec, groupname) as group:
+                    group.pin(pin_type, pin_setting)
+                    ret = 0, json.dumps({}), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
     ### group snapshot
 
     def create_subvolume_group_snapshot(self, **kwargs):
index 86ee8a0e338871ccdbd961fff180230c14d4bd84..27e31c2c20cadcbe2e01403e1115fd185a058915 100644 (file)
@@ -5,6 +5,7 @@ from mgr_module import MgrModule
 import orchestrator
 
 from .fs.volume import VolumeClient
+from .fs.nfs import NFSCluster, FSExport
 
 class Module(orchestrator.OrchestratorClientMixin, MgrModule):
     COMMANDS = [
@@ -112,6 +113,15 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                     "and optionally, in a specific subvolume group",
             'perm': 'r'
         },
+        {
+            'cmd': 'fs subvolumegroup pin'
+                   ' name=vol_name,type=CephString'
+                   ' name=group_name,type=CephString,req=true'
+                   ' name=pin_type,type=CephChoices,strings=export|distributed|random'
+                   ' name=pin_setting,type=CephString,req=true',
+            'desc': "Set MDS pinning policy for subvolumegroup",
+            'perm': 'rw'
+        },
         {
             'cmd': 'fs subvolumegroup snapshot ls '
                    'name=vol_name,type=CephString '
@@ -185,13 +195,23 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'desc': "Resize a CephFS subvolume",
             'perm': 'rw'
         },
+        {
+            'cmd': 'fs subvolume pin'
+                   ' name=vol_name,type=CephString'
+                   ' name=sub_name,type=CephString'
+                   ' name=pin_type,type=CephChoices,strings=export|distributed|random'
+                   ' name=pin_setting,type=CephString,req=true'
+                   ' name=group_name,type=CephString,req=false',
+            'desc': "Set MDS pinning policy for subvolume",
+            'perm': 'rw'
+        },
         {
             'cmd': 'fs subvolume snapshot protect '
                    'name=vol_name,type=CephString '
                    'name=sub_name,type=CephString '
                    'name=snap_name,type=CephString '
                    'name=group_name,type=CephString,req=false ',
-            'desc': "Protect snapshot of a CephFS subvolume in a volume, "
+            'desc': "(deprecated) Protect snapshot of a CephFS subvolume in a volume, "
                     "and optionally, in a specific subvolume group",
             'perm': 'rw'
         },
@@ -201,7 +221,7 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                    'name=sub_name,type=CephString '
                    'name=snap_name,type=CephString '
                    'name=group_name,type=CephString,req=false ',
-            'desc': "Unprotect a snapshot of a CephFS subvolume in a volume, "
+            'desc': "(deprecated) Unprotect a snapshot of a CephFS subvolume in a volume, "
                     "and optionally, in a specific subvolume group",
             'perm': 'rw'
         },
@@ -233,7 +253,81 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'desc': "Cancel an pending or ongoing clone operation.",
             'perm': 'r'
         },
-
+        {
+            'cmd': 'nfs export create cephfs '
+            'name=fsname,type=CephString '
+            'name=clusterid,type=CephString '
+            'name=binding,type=CephString '
+            'name=readonly,type=CephBool,req=false '
+            'name=path,type=CephString,req=false ',
+            'desc': "Create a cephfs export",
+            'perm': 'rw'
+        },
+        {
+            'cmd': 'nfs export delete '
+                   'name=clusterid,type=CephString '
+                   'name=binding,type=CephString ',
+            'desc': "Delete a cephfs export",
+            'perm': 'rw'
+        },
+        {
+            'cmd': 'nfs export ls '
+                   'name=clusterid,type=CephString '
+                   'name=detailed,type=CephBool,req=false ',
+            'desc': "List exports of a NFS cluster",
+            'perm': 'r'
+        },
+        {
+            'cmd': 'nfs export get '
+                   'name=clusterid,type=CephString '
+                   'name=binding,type=CephString ',
+            'desc': "Fetch a export of a NFS cluster given the pseudo path/binding",
+            'perm': 'r'
+        },
+        {
+            'cmd': 'nfs cluster create '
+                   'name=type,type=CephString '
+                   'name=clusterid,type=CephString,goodchars=[A-Za-z0-9-_.] '
+                   'name=placement,type=CephString,req=false ',
+            'desc': "Create an NFS Cluster",
+            'perm': 'rw'
+        },
+        {
+            'cmd': 'nfs cluster update '
+                   'name=clusterid,type=CephString '
+                   'name=placement,type=CephString ',
+            'desc': "Updates an NFS Cluster",
+            'perm': 'rw'
+        },
+        {
+            'cmd': 'nfs cluster delete '
+                   'name=clusterid,type=CephString ',
+            'desc': "Deletes an NFS Cluster",
+            'perm': 'rw'
+        },
+        {
+            'cmd': 'nfs cluster ls ',
+            'desc': "List NFS Clusters",
+            'perm': 'r'
+        },
+        {
+            'cmd': 'nfs cluster info '
+                   'name=clusterid,type=CephString,req=false ',
+            'desc': "Displays NFS Cluster info",
+            'perm': 'r'
+        },
+        {
+            'cmd': 'nfs cluster config set '
+                   'name=clusterid,type=CephString ',
+            'desc': "Set NFS-Ganesha config by `-i <config_file>`",
+            'perm': 'rw'
+        },
+        {
+            'cmd': 'nfs cluster config reset '
+                   'name=clusterid,type=CephString ',
+            'desc': "Reset NFS-Ganesha Config to default",
+            'perm': 'rw'
+        },
         # volume ls [recursive]
         # subvolume ls <volume>
         # volume authorize/deauthorize
@@ -254,6 +348,8 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
     def __init__(self, *args, **kwargs):
         super(Module, self).__init__(*args, **kwargs)
         self.vc = VolumeClient(self)
+        self.fs_export = FSExport(self)
+        self.nfs = NFSCluster(self)
 
     def __del__(self):
         self.vc.shutdown()
@@ -344,6 +440,11 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                       sub_name=cmd['sub_name'],
                                       group_name=cmd.get('group_name', None))
 
+    def _cmd_fs_subvolumegroup_pin(self, inbuf, cmd):
+        return self.vc.pin_subvolume_group(vol_name=cmd['vol_name'],
+            group_name=cmd['group_name'], pin_type=cmd['pin_type'],
+            pin_setting=cmd['pin_setting'])
+
     def _cmd_fs_subvolumegroup_snapshot_create(self, inbuf, cmd):
         return self.vc.create_subvolume_group_snapshot(vol_name=cmd['vol_name'],
                                                        group_name=cmd['group_name'],
@@ -388,6 +489,12 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                         new_size=cmd['new_size'], group_name=cmd.get('group_name', None),
                                         no_shrink=cmd.get('no_shrink', False))
 
+    def _cmd_fs_subvolume_pin(self, inbuf, cmd):
+        return self.vc.subvolume_pin(vol_name=cmd['vol_name'],
+            sub_name=cmd['sub_name'], pin_type=cmd['pin_type'],
+            pin_setting=cmd['pin_setting'],
+            group_name=cmd.get('group_name', None))
+
     def _cmd_fs_subvolume_snapshot_protect(self, inbuf, cmd):
         return self.vc.protect_subvolume_snapshot(vol_name=cmd['vol_name'], sub_name=cmd['sub_name'],
                                                   snap_name=cmd['snap_name'], group_name=cmd.get('group_name', None))
@@ -409,3 +516,39 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
     def _cmd_fs_clone_cancel(self, inbuf, cmd):
         return self.vc.clone_cancel(
             vol_name=cmd['vol_name'], clone_name=cmd['clone_name'],  group_name=cmd.get('group_name', None))
+
+    def _cmd_nfs_export_create_cephfs(self, inbuf, cmd):
+        #TODO Extend export creation for rgw.
+        return self.fs_export.create_export(fs_name=cmd['fsname'], cluster_id=cmd['clusterid'],
+                pseudo_path=cmd['binding'], read_only=cmd.get('readonly', False), path=cmd.get('path', '/'))
+
+    def _cmd_nfs_export_delete(self, inbuf, cmd):
+        return self.fs_export.delete_export(cluster_id=cmd['clusterid'], pseudo_path=cmd['binding'])
+
+    def _cmd_nfs_export_ls(self, inbuf, cmd):
+        return self.fs_export.list_exports(cluster_id=cmd['clusterid'], detailed=cmd.get('detailed', False))
+
+    def _cmd_nfs_export_get(self, inbuf, cmd):
+        return self.fs_export.get_export(cluster_id=cmd['clusterid'], pseudo_path=cmd['binding'])
+
+    def _cmd_nfs_cluster_create(self, inbuf, cmd):
+        return self.nfs.create_nfs_cluster(cluster_id=cmd['clusterid'], export_type=cmd['type'],
+                                           placement=cmd.get('placement', None))
+
+    def _cmd_nfs_cluster_update(self, inbuf, cmd):
+        return self.nfs.update_nfs_cluster(cluster_id=cmd['clusterid'], placement=cmd['placement'])
+
+    def _cmd_nfs_cluster_delete(self, inbuf, cmd):
+        return self.nfs.delete_nfs_cluster(cluster_id=cmd['clusterid'])
+
+    def _cmd_nfs_cluster_ls(self, inbuf, cmd):
+        return self.nfs.list_nfs_cluster()
+
+    def _cmd_nfs_cluster_info(self, inbuf, cmd):
+        return self.nfs.show_nfs_cluster_info(cluster_id=cmd.get('clusterid', None))
+
+    def _cmd_nfs_cluster_config_set(self, inbuf, cmd):
+        return self.nfs.set_nfs_cluster_config(cluster_id=cmd['clusterid'], nfs_config=inbuf)
+
+    def _cmd_nfs_cluster_config_reset(self, inbuf, cmd):
+        return self.nfs.reset_nfs_cluster_config(cluster_id=cmd['clusterid'])
index 72cfda55650b8ac649f0c4f7cc5afc6dcee21390..72da0ee9fbb35a9216ba1a1b35791e3ebd0c2a32 100644 (file)
@@ -500,6 +500,8 @@ cdef extern from "rbd/librbd.h" nogil:
     ssize_t rbd_write2(rbd_image_t image, uint64_t ofs, size_t len,
                        const char *buf, int op_flags)
     int rbd_discard(rbd_image_t image, uint64_t ofs, uint64_t len)
+    int rbd_write_zeroes(rbd_image_t image, uint64_t ofs, uint64_t len,
+                         int zero_flags, int op_flags)
     int rbd_copy3(rbd_image_t src, rados_ioctx_t dest_io_ctx,
                   const char *destname, rbd_image_options_t dest_opts)
     int rbd_deep_copy(rbd_image_t src, rados_ioctx_t dest_io_ctx,
@@ -622,6 +624,8 @@ cdef extern from "rbd/librbd.h" nogil:
                       char *buf, rbd_completion_t c, int op_flags)
     int rbd_aio_discard(rbd_image_t image, uint64_t off, uint64_t len,
                         rbd_completion_t c)
+    int rbd_aio_write_zeroes(rbd_image_t image, uint64_t off, uint64_t len,
+                             rbd_completion_t c, int zero_flags, int op_flags)
 
     int rbd_aio_create_completion(void *cb_arg, rbd_callback_t complete_cb,
                                   rbd_completion_t *c)
@@ -4403,6 +4407,23 @@ written." % (self.name, ret, length))
             msg = 'error discarding region %d~%d' % (offset, length)
             raise make_ex(ret, msg)
 
+    @requires_not_closed
+    def write_zeroes(self, offset, length, zero_flags = 0):
+        """
+        Zero the range from the image. By default it will attempt to
+        discard/unmap as much space as possible but any unaligned
+        extent segments will still be zeroed.
+        """
+        cdef:
+            uint64_t _offset = offset, _length = length
+            int _zero_flags = zero_flags
+        with nogil:
+            ret = rbd_write_zeroes(self.image, _offset, _length,
+                                   _zero_flags, 0)
+        if ret < 0:
+            msg = 'error zeroing region %d~%d' % (offset, length)
+            raise make_ex(ret, msg)
+
     @requires_not_closed
     def flush(self):
         """
@@ -5087,6 +5108,34 @@ written." % (self.name, ret, length))
 
         return completion
 
+    @requires_not_closed
+    def aio_write_zeroes(self, offset, length, oncomplete, zero_flags = 0):
+        """
+        Asynchronously Zero the range from the image. By default it will attempt
+        to discard/unmap as much space as possible but any unaligned extent
+        segments will still be zeroed.
+        """
+        cdef:
+            uint64_t _offset = offset
+            size_t _length = length
+            int _zero_flags = zero_flags
+            Completion completion
+
+        completion = self.__get_completion(oncomplete)
+        try:
+            completion.__persist()
+            with nogil:
+                ret = rbd_aio_write_zeroes(self.image, _offset, _length,
+                                           completion.rbd_comp, _zero_flags, 0)
+            if ret < 0:
+                raise make_ex(ret, 'error zeroing %s %ld~%ld' %
+                              (self.name, offset, length))
+        except:
+            completion.__unpersist()
+            raise
+
+        return completion
+
     @requires_not_closed
     def aio_flush(self, oncomplete):
         """
diff --git a/ceph/src/python-common/ceph/deployment/cephadm_orchestrator.py b/ceph/src/python-common/ceph/deployment/cephadm_orchestrator.py
deleted file mode 100644 (file)
index 81c5fe9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-def bootstrap_cluster():
-    create_mon()
-    create_mgr()
-
-
-def create_mon():
-    pass
-
-
-def create_mgr():
-    pass
index 43ae10546ea41a3a940cb1cbf66623c473a2415c..b5cafdb463e62a812c2a51293e106c127fd260a6 100644 (file)
@@ -1,3 +1,5 @@
+import yaml
+
 from ceph.deployment.inventory import Device
 from ceph.deployment.service_spec import ServiceSpecValidationError, ServiceSpec, PlacementSpec
 
@@ -45,7 +47,7 @@ class DeviceSelection(object):
         #: Size specification of format LOW:HIGH.
         #: Can also take the the form :HIGH, LOW:
         #: or an exact value (as ceph-volume inventory reports)
-        self.size = size
+        self.size:  Optional[str] = size
 
         #: is the drive rotating or not
         self.rotational = rotational
@@ -76,7 +78,7 @@ class DeviceSelection(object):
 
     @classmethod
     def from_json(cls, device_spec):
-        # type: (dict) -> DeviceSelection
+        # type: (dict) -> Optional[DeviceSelection]
         if not device_spec:
             return  # type: ignore
         for applied_filter in list(device_spec.keys()):
@@ -88,10 +90,23 @@ class DeviceSelection(object):
 
     def to_json(self):
         # type: () -> Dict[str, Any]
-        c = self.__dict__.copy()
+        ret: Dict[str, Any] = {}
         if self.paths:
-            c['paths'] = [p.path for p in self.paths]
-        return c
+            ret['paths'] = [p.path for p in self.paths]
+        if self.model:
+            ret['model'] = self.model
+        if self.vendor:
+            ret['vendor'] = self.vendor
+        if self.size:
+            ret['size'] = self.size
+        if self.rotational:
+            ret['rotational'] = self.rotational
+        if self.limit:
+            ret['limit'] = self.limit
+        if self.all:
+            ret['all'] = self.all
+
+        return ret
 
     def __repr__(self):
         keys = [
@@ -128,7 +143,7 @@ class DriveGroupSpec(ServiceSpec):
         "db_slots", "wal_slots", "block_db_size", "placement", "service_id", "service_type",
         "data_devices", "db_devices", "wal_devices", "journal_devices",
         "data_directories", "osds_per_device", "objectstore", "osd_id_claims",
-        "journal_size", "unmanaged"
+        "journal_size", "unmanaged", "filter_logic", "preview_only"
     ]
 
     def __init__(self,
@@ -150,11 +165,14 @@ class DriveGroupSpec(ServiceSpec):
                  journal_size=None,  # type: Optional[int]
                  service_type=None,  # type: Optional[str]
                  unmanaged=False,  # type: bool
+                 filter_logic='AND',  # type: str
+                 preview_only=False,  # type: bool
                  ):
         assert service_type is None or service_type == 'osd'
         super(DriveGroupSpec, self).__init__('osd', service_id=service_id,
                                              placement=placement,
-                                             unmanaged=unmanaged)
+                                             unmanaged=unmanaged,
+                                             preview_only=preview_only)
 
         #: A :class:`ceph.deployment.drive_group.DeviceSelection`
         self.data_devices = data_devices
@@ -174,7 +192,7 @@ class DriveGroupSpec(ServiceSpec):
         #: Set (or override) the "bluestore_block_db_size" value, in bytes
         self.block_db_size = block_db_size
 
-        #: set journal_size is bytes
+        #: set journal_size in bytes
         self.journal_size = journal_size
 
         #: Number of osd daemons per "DATA" device.
@@ -200,6 +218,13 @@ class DriveGroupSpec(ServiceSpec):
         #: See :ref:`orchestrator-osd-replace`
         self.osd_id_claims = osd_id_claims or dict()
 
+        #: The logic gate we use to match disks with filters.
+        #: defaults to 'AND'
+        self.filter_logic = filter_logic.upper()
+
+        #: If this should be treated as a 'preview' spec
+        self.preview_only = preview_only
+
     @classmethod
     def _from_json_impl(cls, json_drive_group):
         # type: (dict) -> DriveGroupSpec
@@ -209,11 +234,32 @@ class DriveGroupSpec(ServiceSpec):
         :param json_drive_group: A valid json string with a Drive Group
                specification
         """
+        args = {}
         # legacy json (pre Octopus)
         if 'host_pattern' in json_drive_group and 'placement' not in json_drive_group:
             json_drive_group['placement'] = {'host_pattern': json_drive_group['host_pattern']}
             del json_drive_group['host_pattern']
 
+        try:
+            args['placement'] = PlacementSpec.from_json(json_drive_group.pop('placement'))
+        except KeyError:
+            raise DriveGroupValidationError('OSD spec needs a `placement` key.')
+
+        args['service_type'] = json_drive_group.pop('service_type', 'osd')
+
+        # service_id was not required in early octopus.
+        args['service_id'] = json_drive_group.pop('service_id', '')
+
+        # spec: was not mandatory in octopus
+        if 'spec' in json_drive_group:
+            args.update(cls._drive_group_spec_from_json(json_drive_group.pop('spec')))
+        else:
+            args.update(cls._drive_group_spec_from_json(json_drive_group))
+
+        return cls(**args)
+
+    @classmethod
+    def _drive_group_spec_from_json(cls, json_drive_group: dict) -> dict:
         for applied_filter in list(json_drive_group.keys()):
             if applied_filter not in cls._supported_features:
                 raise DriveGroupValidationError(
@@ -225,15 +271,12 @@ class DriveGroupSpec(ServiceSpec):
                     from ceph.deployment.drive_selection import SizeMatcher
                     json_drive_group[key] = SizeMatcher.str_to_byte(json_drive_group[key])
 
-        if 'placement' in json_drive_group:
-            json_drive_group['placement'] = PlacementSpec.from_json(json_drive_group['placement'])
-
         try:
             args = {k: (DeviceSelection.from_json(v) if k.endswith('_devices') else v) for k, v in
                     json_drive_group.items()}
             if not args:
                 raise DriveGroupValidationError("Didn't find Drivegroup specs")
-            return DriveGroupSpec(**args)
+            return args
         except (KeyError, TypeError) as e:
             raise DriveGroupValidationError(str(e))
 
@@ -241,6 +284,9 @@ class DriveGroupSpec(ServiceSpec):
         # type: () -> None
         super(DriveGroupSpec, self).validate()
 
+        if not self.service_id:
+            raise DriveGroupValidationError('service_id is required')
+
         if not isinstance(self.placement.host_pattern, six.string_types) and \
                 self.placement.host_pattern is not None:
             raise DriveGroupValidationError('host_pattern must be of type string')
@@ -249,17 +295,23 @@ class DriveGroupSpec(ServiceSpec):
         for s in filter(None, specs):
             s.validate()
         for s in filter(None, [self.db_devices, self.wal_devices, self.journal_devices]):
+            if s.paths:
+                raise DriveGroupValidationError("`paths` is only allowed for data_devices")
             if s.all:
                 raise DriveGroupValidationError("`all` is only allowed for data_devices")
 
-        if self.objectstore not in ('filestore', 'bluestore'):
-            raise DriveGroupValidationError("objectstore not in ('filestore', 'bluestore')")
+        if self.objectstore not in ('bluestore'):
+            raise DriveGroupValidationError(f"{self.objectstore} is not supported. Must be "
+                                            f"one of ('bluestore')")
 
         if self.block_wal_size is not None and type(self.block_wal_size) != int:
             raise DriveGroupValidationError('block_wal_size must be of type int')
         if self.block_db_size is not None and type(self.block_db_size) != int:
             raise DriveGroupValidationError('block_db_size must be of type int')
 
+        if self.filter_logic not in ['AND', 'OR']:
+            raise DriveGroupValidationError('filter_logic must be either <AND> or <OR>')
+
     def __repr__(self):
         keys = [
             key for key in self._supported_features if getattr(self, key) is not None
@@ -273,19 +325,8 @@ class DriveGroupSpec(ServiceSpec):
             ', '.join('{}={}'.format(key, repr(getattr(self, key))) for key in keys)
         )
 
-    def to_json(self):
-        # type: () -> Dict[str, Any]
-        c = self.__dict__.copy()
-        if self.placement:
-            c['placement'] = self.placement.to_json()
-        if self.data_devices:
-            c['data_devices'] = self.data_devices.to_json()
-        if self.db_devices:
-            c['db_devices'] = self.db_devices.to_json()
-        if self.wal_devices:
-            c['wal_devices'] = self.wal_devices.to_json()
-        c['service_name'] = self.service_name()
-        return c
-
     def __eq__(self, other):
         return repr(self) == repr(other)
+
+
+yaml.add_representer(DriveGroupSpec, DriveGroupSpec.yaml_representer)
index cdc21caa52ff2a6d6622b6f79f9ead16bd023bee..921f125616c25fd925a16f74bc6fef6c22273001 100644 (file)
@@ -134,11 +134,19 @@ class DriveSelection(object):
             if disk in devices:
                 continue
 
-            if not all(m.compare(disk) for m in FilterGenerator(device_filter)):
-                logger.debug(
-                    "Ignoring disk {}. Filter did not match".format(
-                        disk.path))
-                continue
+            if self.spec.filter_logic == 'AND':
+                if not all(m.compare(disk) for m in FilterGenerator(device_filter)):
+                    logger.debug(
+                        "Ignoring disk {}. Not all filter did match the disk".format(
+                            disk.path))
+                    continue
+
+            if self.spec.filter_logic == 'OR':
+                if not any(m.compare(disk) for m in FilterGenerator(device_filter)):
+                    logger.debug(
+                        "Ignoring disk {}. No filter matched the disk".format(
+                            disk.path))
+                    continue
 
             logger.debug('Adding disk {}'.format(disk.path))
             devices.append(disk)
diff --git a/ceph/src/python-common/ceph/deployment/hostspec.py b/ceph/src/python-common/ceph/deployment/hostspec.py
new file mode 100644 (file)
index 0000000..8fc1225
--- /dev/null
@@ -0,0 +1,66 @@
+try:
+    from typing import Optional, List, Any
+except ImportError:
+    pass  # just for type checking
+
+
+class HostSpec(object):
+    """
+    Information about hosts. Like e.g. ``kubectl get nodes``
+    """
+    def __init__(self,
+                 hostname,  # type: str
+                 addr=None,  # type: Optional[str]
+                 labels=None,  # type: Optional[List[str]]
+                 status=None,  # type: Optional[str]
+                 ):
+        self.service_type = 'host'
+
+        #: the bare hostname on the host. Not the FQDN.
+        self.hostname = hostname  # type: str
+
+        #: DNS name or IP address to reach it
+        self.addr = addr or hostname  # type: str
+
+        #: label(s), if any
+        self.labels = labels or []  # type: List[str]
+
+        #: human readable status
+        self.status = status or ''  # type: str
+
+    def to_json(self):
+        return {
+            'hostname': self.hostname,
+            'addr': self.addr,
+            'labels': self.labels,
+            'status': self.status,
+        }
+
+    @classmethod
+    def from_json(cls, host_spec):
+        _cls = cls(host_spec['hostname'],
+                   host_spec['addr'] if 'addr' in host_spec else None,
+                   host_spec['labels'] if 'labels' in host_spec else None)
+        return _cls
+
+    def __repr__(self):
+        args = [self.hostname]  # type: List[Any]
+        if self.addr is not None:
+            args.append(self.addr)
+        if self.labels:
+            args.append(self.labels)
+        if self.status:
+            args.append(self.status)
+
+        return "HostSpec({})".format(', '.join(map(repr, args)))
+
+    def __str__(self):
+        if self.hostname != self.addr:
+            return f'{self.hostname} ({self.addr})'
+        return self.hostname
+
+    def __eq__(self, other):
+        # Let's omit `status` for the moment, as it is still the very same host.
+        return self.hostname == other.hostname and \
+               self.addr == other.addr and \
+               self.labels == other.labels
index 362dd1bfeb5169957913de6926a1bb2a3d805fd0..a2518867a0721e3b9b7e04ed479470cb961eea63 100644 (file)
@@ -1,10 +1,14 @@
+import errno
 import fnmatch
 import re
-from collections import namedtuple
+from collections import namedtuple, OrderedDict
 from functools import wraps
-from typing import Optional, Dict, Any, List, Union, Callable
+from typing import Optional, Dict, Any, List, Union, Callable, Iterator
 
 import six
+import yaml
+
+from ceph.deployment.hostspec import HostSpec
 
 
 class ServiceSpecValidationError(Exception):
@@ -12,9 +16,11 @@ class ServiceSpecValidationError(Exception):
     Defining an exception here is a bit problematic, cause you cannot properly catch it,
     if it was raised in a different mgr module.
     """
-
-    def __init__(self, msg):
+    def __init__(self,
+                 msg: str,
+                 errno: int = -errno.EINVAL):
         super(ServiceSpecValidationError, self).__init__(msg)
+        self.errno = errno
 
 
 def assert_valid_host(name):
@@ -36,7 +42,7 @@ def handle_type_error(method):
             return method(cls, *args, **kwargs)
         except (TypeError, AttributeError) as e:
             error_msg = '{}: {}'.format(cls.__name__, e)
-        raise ServiceSpecValidationError(error_msg)
+            raise ServiceSpecValidationError(error_msg)
     return inner
 
 
@@ -149,11 +155,7 @@ class PlacementSpec(object):
         self.hosts = []  # type: List[HostPlacementSpec]
 
         if hosts:
-            if all([isinstance(host, HostPlacementSpec) for host in hosts]):
-                self.hosts = hosts  # type: ignore
-            else:
-                self.hosts = [HostPlacementSpec.parse(x, require_network=False)  # type: ignore
-                              for x in hosts if x]
+            self.set_hosts(hosts)
 
         self.count = count  # type: Optional[int]
 
@@ -168,28 +170,44 @@ class PlacementSpec(object):
             not self.host_pattern and \
             self.count is None
 
+    def __eq__(self, other):
+        if isinstance(other, PlacementSpec):
+            return self.label == other.label \
+                   and self.hosts == other.hosts \
+                   and self.count == other.count \
+                   and self.host_pattern == other.host_pattern
+        return NotImplemented
+
     def set_hosts(self, hosts):
         # To backpopulate the .hosts attribute when using labels or count
         # in the orchestrator backend.
-        self.hosts = hosts
+        if all([isinstance(host, HostPlacementSpec) for host in hosts]):
+            self.hosts = hosts  # type: ignore
+        else:
+            self.hosts = [HostPlacementSpec.parse(x, require_network=False)  # type: ignore
+                          for x in hosts if x]
 
     def filter_matching_hosts(self, _get_hosts_func: Callable) -> List[str]:
+        return self.filter_matching_hostspecs(_get_hosts_func(as_hostspec=True))
+
+    def filter_matching_hostspecs(self, hostspecs: Iterator[HostSpec]) -> List[str]:
         if self.hosts:
-            all_hosts = _get_hosts_func(label=None, as_hostspec=False)
+            all_hosts = [hs.hostname for hs in hostspecs]
             return [h.hostname for h in self.hosts if h.hostname in all_hosts]
         elif self.label:
-            return _get_hosts_func(label=self.label, as_hostspec=False)
+            return [hs.hostname for hs in hostspecs if self.label in hs.labels]
         elif self.host_pattern:
-            return fnmatch.filter(_get_hosts_func(label=None, as_hostspec=False), self.host_pattern)
+            all_hosts = [hs.hostname for hs in hostspecs]
+            return fnmatch.filter(all_hosts, self.host_pattern)
         else:
             # This should be caught by the validation but needs to be here for
             # get_host_selection_size
             return []
 
-    def get_host_selection_size(self, _get_hosts_func):
+    def get_host_selection_size(self, hostspecs: Iterator[HostSpec]):
         if self.count:
             return self.count
-        return len(self.filter_matching_hosts(_get_hosts_func))
+        return len(self.filter_matching_hostspecs(hostspecs))
 
     def pretty_str(self):
         kv = []
@@ -358,6 +376,7 @@ class ServiceSpec(object):
     """
     KNOWN_SERVICE_TYPES = 'alertmanager crash grafana iscsi mds mgr mon nfs ' \
                           'node-exporter osd prometheus rbd-mirror rgw'.split()
+    REQUIRES_SERVICE_ID = 'iscsi mds nfs osd rgw'.split()
 
     @classmethod
     def _cls(cls, service_type):
@@ -368,6 +387,7 @@ class ServiceSpec(object):
             'nfs': NFSServiceSpec,
             'osd': DriveGroupSpec,
             'iscsi': IscsiServiceSpec,
+            'alertmanager': AlertManagerSpec
         }.get(service_type, cls)
         if ret == ServiceSpec and not service_type:
             raise ServiceSpecValidationError('Spec needs a "service_type" key.')
@@ -394,13 +414,17 @@ class ServiceSpec(object):
                  placement: Optional[PlacementSpec] = None,
                  count: Optional[int] = None,
                  unmanaged: bool = False,
+                 preview_only: bool = False,
                  ):
         self.placement = PlacementSpec() if placement is None else placement  # type: PlacementSpec
 
         assert service_type in ServiceSpec.KNOWN_SERVICE_TYPES, service_type
         self.service_type = service_type
-        self.service_id = service_id
+        self.service_id = None
+        if self.service_type in self.REQUIRES_SERVICE_ID:
+            self.service_id = service_id
         self.unmanaged = unmanaged
+        self.preview_only = preview_only
 
     @classmethod
     @handle_type_error
@@ -411,6 +435,35 @@ class ServiceSpec(object):
         # then, the real type is: (dict) -> ServiceSpecs
         """
         Initialize 'ServiceSpec' object data from a json structure
+
+        There are two valid styles for service specs:
+
+        the "old" style:
+
+        .. code:: yaml
+
+            service_type: nfs
+            service_id: foo
+            pool: mypool
+            namespace: myns
+
+        and the "new" style:
+
+        .. code:: yaml
+
+            service_type: nfs
+            service_id: foo
+            spec:
+              pool: mypool
+              namespace: myns
+
+        In https://tracker.ceph.com/issues/45321 we decided that we'd like to
+        prefer the new style as it is more readable and provides a better
+        understanding of what fields are special for a give service type.
+
+        Note, we'll need to stay compatible with both versions for the
+        the next two major releases (octoups, pacific).
+
         :param json_spec: A valid dict with ServiceSpec
         """
 
@@ -456,37 +509,59 @@ class ServiceSpec(object):
         return n
 
     def to_json(self):
-        # type: () -> Dict[str, Any]
+        # type: () -> OrderedDict[str, Any]
+        ret: OrderedDict[str, Any] = OrderedDict()
+        ret['service_type'] = self.service_type
+        if self.service_id:
+            ret['service_id'] = self.service_id
+        ret['service_name'] = self.service_name()
+        ret['placement'] = self.placement.to_json()
+        if self.unmanaged:
+            ret['unmanaged'] = self.unmanaged
+
         c = {}
-        for key, val in self.__dict__.items():
+        for key, val in sorted(self.__dict__.items(), key=lambda tpl: tpl[0]):
+            if key in ret:
+                continue
             if hasattr(val, 'to_json'):
                 val = val.to_json()
             if val:
                 c[key] = val
-
-        c['service_name'] = self.service_name()
-        return c
+        if c:
+            ret['spec'] = c
+        return ret
 
     def validate(self):
         if not self.service_type:
             raise ServiceSpecValidationError('Cannot add Service: type required')
 
+        if self.service_type in self.REQUIRES_SERVICE_ID:
+            if not self.service_id:
+                raise ServiceSpecValidationError('Cannot add Service: id required')
+        elif self.service_id:
+            raise ServiceSpecValidationError(
+                    f'Service of type \'{self.service_type}\' should not contain a service id')
+
         if self.placement is not None:
             self.placement.validate()
 
     def __repr__(self):
         return "{}({!r})".format(self.__class__.__name__, self.__dict__)
 
+    def __eq__(self, other):
+        return (self.__class__ == other.__class__
+                and
+                self.__dict__ == other.__dict__)
+
     def one_line_str(self):
         return '<{} for service_name={}>'.format(self.__class__.__name__, self.service_name())
 
+    @staticmethod
+    def yaml_representer(dumper: 'yaml.SafeDumper', data: 'ServiceSpec'):
+        return dumper.represent_dict(data.to_json().items())
+
 
-def servicespec_validate_add(self: ServiceSpec):
-    # This must not be a method of ServiceSpec, otherwise you'll hunt
-    # sub-interpreter affinity bugs.
-    ServiceSpec.validate(self)
-    if self.service_type in ['mds', 'rgw', 'nfs', 'iscsi'] and not self.service_id:
-        raise ServiceSpecValidationError('Cannot add Service: id required')
+yaml.add_representer(ServiceSpec, ServiceSpec.yaml_representer)
 
 
 class NFSServiceSpec(ServiceSpec):
@@ -497,11 +572,12 @@ class NFSServiceSpec(ServiceSpec):
                  namespace: Optional[str] = None,
                  placement: Optional[PlacementSpec] = None,
                  unmanaged: bool = False,
+                 preview_only: bool = False
                  ):
         assert service_type == 'nfs'
         super(NFSServiceSpec, self).__init__(
             'nfs', service_id=service_id,
-            placement=placement, unmanaged=unmanaged)
+            placement=placement, unmanaged=unmanaged, preview_only=preview_only)
 
         #: RADOS pool where NFS client recovery data is stored.
         self.pool = pool
@@ -509,11 +585,14 @@ class NFSServiceSpec(ServiceSpec):
         #: RADOS namespace where NFS client recovery data is stored in the pool.
         self.namespace = namespace
 
-    def validate_add(self):
-        servicespec_validate_add(self)
+        self.preview_only = preview_only
+
+    def validate(self):
+        super(NFSServiceSpec, self).validate()
 
         if not self.pool:
-            raise ServiceSpecValidationError('Cannot add NFS: No Pool specified')
+            raise ServiceSpecValidationError(
+                'Cannot add NFS: No Pool specified')
 
     def rados_config_name(self):
         # type: () -> str
@@ -521,14 +600,18 @@ class NFSServiceSpec(ServiceSpec):
 
     def rados_config_location(self):
         # type: () -> str
-        assert self.pool
-        url = 'rados://' + self.pool + '/'
-        if self.namespace:
-            url += self.namespace + '/'
-        url += self.rados_config_name()
+        url = ''
+        if self.pool:
+            url += 'rados://' + self.pool + '/'
+            if self.namespace:
+                url += self.namespace + '/'
+            url += self.rados_config_name()
         return url
 
 
+yaml.add_representer(NFSServiceSpec, ServiceSpec.yaml_representer)
+
+
 class RGWSpec(ServiceSpec):
     """
     Settings to configure a (multisite) Ceph RGW
@@ -546,12 +629,14 @@ class RGWSpec(ServiceSpec):
                  rgw_frontend_ssl_key: Optional[List[str]] = None,
                  unmanaged: bool = False,
                  ssl: bool = False,
+                 preview_only: bool = False,
                  ):
         assert service_type == 'rgw', service_type
         if service_id:
             a = service_id.split('.', 2)
             rgw_realm = a[0]
-            rgw_zone = a[1]
+            if len(a) > 1:
+                rgw_zone = a[1]
             if len(a) > 2:
                 subcluster = a[2]
         else:
@@ -561,7 +646,8 @@ class RGWSpec(ServiceSpec):
                 service_id = '%s.%s' % (rgw_realm, rgw_zone)
         super(RGWSpec, self).__init__(
             'rgw', service_id=service_id,
-            placement=placement, unmanaged=unmanaged)
+            placement=placement, unmanaged=unmanaged,
+            preview_only=preview_only)
 
         self.rgw_realm = rgw_realm
         self.rgw_zone = rgw_zone
@@ -570,6 +656,7 @@ class RGWSpec(ServiceSpec):
         self.rgw_frontend_ssl_certificate = rgw_frontend_ssl_certificate
         self.rgw_frontend_ssl_key = rgw_frontend_ssl_key
         self.ssl = ssl
+        self.preview_only = preview_only
 
     def get_port(self):
         if self.rgw_frontend_port:
@@ -589,6 +676,19 @@ class RGWSpec(ServiceSpec):
             ports.append(f"port={self.get_port()}")
         return f'beast {" ".join(ports)}'
 
+    def validate(self):
+        super(RGWSpec, self).validate()
+
+        if not self.rgw_realm:
+            raise ServiceSpecValidationError(
+                'Cannot add RGW: No realm specified')
+        if not self.rgw_zone:
+            raise ServiceSpecValidationError(
+                'Cannot add RGW: No zone specified')
+
+
+yaml.add_representer(RGWSpec, ServiceSpec.yaml_representer)
+
 
 class IscsiServiceSpec(ServiceSpec):
     def __init__(self,
@@ -603,11 +703,13 @@ class IscsiServiceSpec(ServiceSpec):
                  ssl_cert: Optional[str] = None,
                  ssl_key: Optional[str] = None,
                  placement: Optional[PlacementSpec] = None,
-                 unmanaged: bool = False
+                 unmanaged: bool = False,
+                 preview_only: bool = False
                  ):
         assert service_type == 'iscsi'
         super(IscsiServiceSpec, self).__init__('iscsi', service_id=service_id,
-                                               placement=placement, unmanaged=unmanaged)
+                                               placement=placement, unmanaged=unmanaged,
+                                               preview_only=preview_only)
 
         #: RADOS pool where ceph-iscsi config data is stored.
         self.pool = pool
@@ -618,6 +720,7 @@ class IscsiServiceSpec(ServiceSpec):
         self.api_secure = api_secure
         self.ssl_cert = ssl_cert
         self.ssl_key = ssl_key
+        self.preview_only = preview_only
 
         if not self.api_secure and self.ssl_cert and self.ssl_key:
             self.api_secure = True
@@ -634,3 +737,41 @@ class IscsiServiceSpec(ServiceSpec):
         if not self.api_password:
             raise ServiceSpecValidationError(
                 'Cannot add ISCSI: No Api password specified')
+
+
+yaml.add_representer(IscsiServiceSpec, ServiceSpec.yaml_representer)
+
+
+class AlertManagerSpec(ServiceSpec):
+    def __init__(self,
+                 service_type: str = 'alertmanager',
+                 service_id: Optional[str] = None,
+                 placement: Optional[PlacementSpec] = None,
+                 unmanaged: bool = False,
+                 preview_only: bool = False,
+                 user_data: Optional[Dict[str, Any]] = None,
+                 ):
+        assert service_type == 'alertmanager'
+        super(AlertManagerSpec, self).__init__(
+            'alertmanager', service_id=service_id,
+            placement=placement, unmanaged=unmanaged,
+            preview_only=preview_only)
+
+        # Custom configuration.
+        #
+        # Example:
+        # service_type: alertmanager
+        # service_id: xyz
+        # user_data:
+        #   default_webhook_urls:
+        #   - "https://foo"
+        #   - "https://bar"
+        #
+        # Documentation:
+        # default_webhook_urls - A list of additional URL's that are
+        #                        added to the default receivers'
+        #                        <webhook_configs> configuration.
+        self.user_data = user_data or {}
+
+
+yaml.add_representer(AlertManagerSpec, ServiceSpec.yaml_representer)
index 2412e86186734a4d8b84f59edc815449e5f2ea49..c2f030d2cb26fa00885d5126dd207d273b835f3d 100644 (file)
@@ -5,23 +5,22 @@ try:
 except ImportError:
     pass
 
-from ceph.deployment.drive_group import DriveGroupSpec
 from ceph.deployment.drive_selection.selector import DriveSelection
 
 logger = logging.getLogger(__name__)
 
 
+# TODO refactor this to a DriveSelection method
 class to_ceph_volume(object):
 
     def __init__(self,
-                 spec,  # type: DriveGroupSpec
                  selection,  # type: DriveSelection
                  osd_id_claims=None,  # type: Optional[List[str]]
                  preview=False  # type: bool
                  ):
 
-        self.spec = spec
         self.selection = selection
+        self.spec = selection.spec
         self.preview = preview
         self.osd_id_claims = osd_id_claims
 
index b60e0e30f03f3b2ccec08756d6d59b994340228a..6931544d45313071b72a018cbd6e305bb20ae541 100644 (file)
@@ -325,7 +325,10 @@ class TestDriveGroup(object):
             if empty:
                 raw_sample = {
                     'service_type': 'osd',
-                    'placement': {'host_pattern': 'data*'}
+                    'placement': {'host_pattern': 'data*'},
+                    'data_devices': {
+                        'all': True
+                    },
                 }
 
             dgo = DriveGroupSpec.from_json(raw_sample)
@@ -384,7 +387,7 @@ class TestDriveGroup(object):
 
     def test_data_devices_prop_empty(self, test_fix):
         test_fix = test_fix(empty=True)
-        assert test_fix.data_devices is None
+        assert test_fix.db_devices is None
 
     def test_db_devices_prop(self, test_fix):
         test_fix = test_fix()
index a34e93aaa27c9eccea2b94cef45edd484aa5563f..85b2f3c217cd55ca9c8a3e8b5edf53a2e4bfdfb6 100644 (file)
@@ -3,6 +3,7 @@ import pytest
 import yaml
 
 from ceph.deployment import drive_selection, translate
+from ceph.deployment.hostspec import HostSpec
 from ceph.deployment.inventory import Device
 from ceph.deployment.service_spec import PlacementSpec, ServiceSpecValidationError
 from ceph.tests.utils import _mk_inventory, _mk_device
@@ -24,7 +25,7 @@ from ceph.deployment.drive_group import DriveGroupSpec, DeviceSelection, \
 ])
 def test_DriveGroup(test_input):
     dg = [DriveGroupSpec.from_json(inp) for inp in test_input][0]
-    assert dg.placement.filter_matching_hosts(lambda label=None, as_hostspec=None: ['hostname']) == ['hostname']
+    assert dg.placement.filter_matching_hostspecs([HostSpec('hostname')]) == ['hostname']
     assert dg.service_id == 'testing_drivegroup'
     assert all([isinstance(x, Device) for x in dg.data_devices.paths])
     assert dg.data_devices.paths[0].path == '/dev/sda'
@@ -42,6 +43,16 @@ placement:
   host_pattern: '*'
 data_devices:
   limit: 1
+"""),
+
+        yaml.safe_load("""
+service_type: osd
+service_id: mydg
+placement:
+  host_pattern: '*'
+data_devices:
+  all: True
+filter_logic: XOR
 """)
     )
 ])
@@ -53,7 +64,7 @@ def test_DriveGroup_fail(test_input):
 
 def test_drivegroup_pattern():
     dg = DriveGroupSpec(PlacementSpec(host_pattern='node[1-3]'), data_devices=DeviceSelection(all=True))
-    assert dg.placement.filter_matching_hosts(lambda label=None, as_hostspec=None: ['node{}'.format(i) for i in range(10)]) == ['node1', 'node2', 'node3']
+    assert dg.placement.filter_matching_hostspecs([HostSpec('node{}'.format(i)) for i in range(10)]) == ['node1', 'node2', 'node3']
 
 
 def test_drive_selection():
@@ -72,7 +83,7 @@ def test_ceph_volume_command_0():
                           )
     inventory = _mk_inventory(_mk_device()*2)
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, []).run()
+    cmd = translate.to_ceph_volume(sel, []).run()
     assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --yes --no-systemd'
 
 
@@ -83,7 +94,7 @@ def test_ceph_volume_command_1():
                           )
     inventory = _mk_inventory(_mk_device(rotational=True)*2 + _mk_device(rotational=False)*2)
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, []).run()
+    cmd = translate.to_ceph_volume(sel, []).run()
     assert cmd == ('lvm batch --no-auto /dev/sda /dev/sdb '
                    '--db-devices /dev/sdc /dev/sdd --yes --no-systemd')
 
@@ -99,7 +110,7 @@ def test_ceph_volume_command_2():
                               _mk_device(size="10.0 GB", rotational=False)*2
                               )
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, []).run()
+    cmd = translate.to_ceph_volume(sel, []).run()
     assert cmd == ('lvm batch --no-auto /dev/sda /dev/sdb '
                    '--db-devices /dev/sdc /dev/sdd --wal-devices /dev/sde /dev/sdf '
                    '--yes --no-systemd')
@@ -117,7 +128,7 @@ def test_ceph_volume_command_3():
                               _mk_device(size="10.0 GB", rotational=False)*2
                               )
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, []).run()
+    cmd = translate.to_ceph_volume(sel, []).run()
     assert cmd == ('lvm batch --no-auto /dev/sda /dev/sdb '
                    '--db-devices /dev/sdc /dev/sdd '
                    '--wal-devices /dev/sde /dev/sdf --dmcrypt '
@@ -139,7 +150,7 @@ def test_ceph_volume_command_4():
                               _mk_device(size="10.0 GB", rotational=False)*2
                               )
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, []).run()
+    cmd = translate.to_ceph_volume(sel, []).run()
     assert cmd == ('lvm batch --no-auto /dev/sda /dev/sdb '
                    '--db-devices /dev/sdc /dev/sdd --wal-devices /dev/sde /dev/sdf '
                    '--block-wal-size 500M --block-db-size 500M --dmcrypt '
@@ -153,7 +164,7 @@ def test_ceph_volume_command_5():
                           )
     inventory = _mk_inventory(_mk_device(rotational=True)*2)
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, []).run()
+    cmd = translate.to_ceph_volume(sel, []).run()
     assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --filestore --yes --no-systemd'
 
 
@@ -166,7 +177,7 @@ def test_ceph_volume_command_6():
                           )
     inventory = _mk_inventory(_mk_device(rotational=True)*2 + _mk_device(rotational=False)*2)
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, []).run()
+    cmd = translate.to_ceph_volume(sel, []).run()
     assert cmd == ('lvm batch --no-auto /dev/sdc /dev/sdd '
                    '--journal-size 500M --journal-devices /dev/sda /dev/sdb '
                    '--filestore --yes --no-systemd')
@@ -179,5 +190,21 @@ def test_ceph_volume_command_7():
                           )
     inventory = _mk_inventory(_mk_device(rotational=True)*2)
     sel = drive_selection.DriveSelection(spec, inventory)
-    cmd = translate.to_ceph_volume(spec, sel, ['0', '1']).run()
+    cmd = translate.to_ceph_volume(sel, ['0', '1']).run()
     assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --osd-ids 0 1 --yes --no-systemd'
+
+
+def test_ceph_volume_command_8():
+    spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'),
+                          data_devices=DeviceSelection(rotational=True, model='INTEL SSDS'),
+                          db_devices=DeviceSelection(model='INTEL SSDP'),
+                          filter_logic='OR',
+                          osd_id_claims={}
+                          )
+    inventory = _mk_inventory(_mk_device(rotational=True,  size='1.82 TB',  model='ST2000DM001-1ER1') +  # data
+                              _mk_device(rotational=False, size="223.0 GB", model='INTEL SSDSC2KG24') +  # data
+                              _mk_device(rotational=False, size="349.0 GB", model='INTEL SSDPED1K375GA')  # wal/db
+                              )
+    sel = drive_selection.DriveSelection(spec, inventory)
+    cmd = translate.to_ceph_volume(sel, []).run()
+    assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --db-devices /dev/sdc --yes --no-systemd'
index 12a8be84bfd6569018e988813c8e37f8805e6054..2d923c6c7d24135ac653f35fbb28dafe0d6ddb93 100644 (file)
@@ -4,8 +4,8 @@ import yaml
 
 import pytest
 
-from ceph.deployment.service_spec import HostPlacementSpec, PlacementSpec, RGWSpec, NFSServiceSpec, \
-    servicespec_validate_add, ServiceSpec, ServiceSpecValidationError
+from ceph.deployment.service_spec import HostPlacementSpec, PlacementSpec, \
+    ServiceSpec, ServiceSpecValidationError, RGWSpec, NFSServiceSpec, IscsiServiceSpec
 from ceph.deployment.drive_group import DriveGroupSpec
 
 
@@ -75,6 +75,32 @@ def test_parse_host_placement_specs_raises_wrong_format(test_input):
         HostPlacementSpec.parse(test_input)
 
 
+def _get_dict_spec(s_type, s_id):
+    dict_spec = {
+        "service_id": s_id,
+        "service_type": s_type,
+        "placement":
+            dict(hosts=["host1:1.1.1.1"])
+    }
+    if s_type == 'nfs':
+        dict_spec['pool'] = 'pool'
+    elif s_type == 'iscsi':
+        dict_spec['pool'] = 'pool'
+        dict_spec['api_user'] = 'api_user'
+        dict_spec['api_password'] = 'api_password'
+    elif s_type == 'osd':
+        dict_spec['spec'] = {
+            'data_devices': {
+                'all': True
+            }
+        }
+    elif s_type == 'rgw':
+        dict_spec['rgw_realm'] = 'realm'
+        dict_spec['rgw_zone'] = 'zone'
+
+    return dict_spec
+
+
 @pytest.mark.parametrize(
     "s_type,o_spec,s_id",
     [
@@ -83,22 +109,143 @@ def test_parse_host_placement_specs_raises_wrong_format(test_input):
         ("mds", ServiceSpec, 'test'),
         ("rgw", RGWSpec, 'realm.zone'),
         ("nfs", NFSServiceSpec, 'test'),
+        ("iscsi", IscsiServiceSpec, 'test'),
         ("osd", DriveGroupSpec, 'test'),
     ])
 def test_servicespec_map_test(s_type, o_spec, s_id):
-    dict_spec = {
-        "service_id": s_id,
-        "service_type": s_type,
-        "placement":
-            dict(hosts=["host1:1.1.1.1"])
-    }
-    spec = ServiceSpec.from_json(dict_spec)
+    spec = ServiceSpec.from_json(_get_dict_spec(s_type, s_id))
     assert isinstance(spec, o_spec)
     assert isinstance(spec.placement, PlacementSpec)
     assert isinstance(spec.placement.hosts[0], HostPlacementSpec)
     assert spec.placement.hosts[0].hostname == 'host1'
     assert spec.placement.hosts[0].network == '1.1.1.1'
     assert spec.placement.hosts[0].name == ''
-    assert servicespec_validate_add(spec) is None
+    assert spec.validate() is None
     ServiceSpec.from_json(spec.to_json())
 
+
+def test_yaml():
+    y = """service_type: crash
+service_name: crash
+placement:
+  host_pattern: '*'
+---
+service_type: crash
+service_name: crash
+placement:
+  host_pattern: '*'
+unmanaged: true
+---
+service_type: rgw
+service_id: default-rgw-realm.eu-central-1.1
+service_name: rgw.default-rgw-realm.eu-central-1.1
+placement:
+  hosts:
+  - hostname: ceph-001
+    name: ''
+    network: ''
+spec:
+  rgw_realm: default-rgw-realm
+  rgw_zone: eu-central-1
+  subcluster: '1'
+---
+service_type: osd
+service_id: osd_spec_default
+service_name: osd.osd_spec_default
+placement:
+  host_pattern: '*'
+spec:
+  data_devices:
+    model: MC-55-44-XZ
+  db_devices:
+    model: SSD-123-foo
+  filter_logic: AND
+  objectstore: bluestore
+  wal_devices:
+    model: NVME-QQQQ-987
+"""
+
+    for y in y.split('---\n'):
+        data = yaml.safe_load(y)
+        object = ServiceSpec.from_json(data)
+
+        assert yaml.dump(object) == y
+        assert yaml.dump(ServiceSpec.from_json(object.to_json())) == y
+
+@pytest.mark.parametrize("spec1, spec2, eq",
+                         [
+                             (
+                                     ServiceSpec(
+                                         service_type='mon'
+                                     ),
+                                     ServiceSpec(
+                                         service_type='mon'
+                                     ),
+                                     True
+                             ),
+                             (
+                                     ServiceSpec(
+                                         service_type='mon'
+                                     ),
+                                     ServiceSpec(
+                                         service_type='mon',
+                                         service_id='foo'
+                                     ),
+                                     True
+                             ),
+                             # Add service_type='mgr'
+                             (
+                                     ServiceSpec(
+                                         service_type='osd'
+                                     ),
+                                     ServiceSpec(
+                                         service_type='osd',
+                                     ),
+                                     True
+                             ),
+                             (
+                                     ServiceSpec(
+                                         service_type='osd'
+                                     ),
+                                     DriveGroupSpec(),
+                                     True
+                             ),
+                             (
+                                     ServiceSpec(
+                                         service_type='osd'
+                                     ),
+                                     ServiceSpec(
+                                         service_type='osd',
+                                         service_id='foo',
+                                     ),
+                                     False
+                             ),
+                             (
+                                     ServiceSpec(
+                                         service_type='rgw'
+                                     ),
+                                     RGWSpec(),
+                                     True
+                             ),
+                         ])
+def test_spec_hash_eq(spec1: ServiceSpec,
+                      spec2: ServiceSpec,
+                      eq: bool):
+
+    assert (spec1 == spec2) is eq
+
+@pytest.mark.parametrize(
+    "s_type,s_id,s_name",
+    [
+        ('mgr', 's_id', 'mgr'),
+        ('mon', 's_id', 'mon'),
+        ('mds', 's_id', 'mds.s_id'),
+        ('rgw', 's_id', 'rgw.s_id'),
+        ('nfs', 's_id', 'nfs.s_id'),
+        ('iscsi', 's_id', 'iscsi.s_id'),
+        ('osd', 's_id', 'osd.s_id'),
+    ])
+def test_service_name(s_type, s_id, s_name):
+    spec = ServiceSpec.from_json(_get_dict_spec(s_type, s_id))
+    spec.validate()
+    assert spec.service_name() == s_name
index ebba43094bc10451044d7d459c366753d80d7fde..04b8a4e38955425441d5b80d2c8dbb6f71b2d6a1 100644 (file)
@@ -8,12 +8,14 @@ except ImportError:
 
 def _mk_device(rotational=True,
                locked=False,
-               size="394.27 GB"):
+               size="394.27 GB",
+               vendor='Vendor',
+               model='Model'):
     return [Device(
         path='??',
         sys_api={
             "rotational": '1' if rotational else '0',
-            "vendor": "Vendor",
+            "vendor": vendor,
             "human_readable_size": size,
             "partitions": {},
             "locked": int(locked),
@@ -21,7 +23,7 @@ def _mk_device(rotational=True,
             "removable": "0",
             "path": "??",
             "support_discard": "",
-            "model": "Model",
+            "model": model,
             "ro": "0",
             "nr_requests": "128",
             "size": 423347879936  # ignore coversion from human_readable_size
index 48daee6dee4d7945872c9da7973d1a248c9682c3..a5bdaf9a9254fd8b01d53224968cb70287820991 100644 (file)
@@ -18,6 +18,7 @@ setup(
     url="https://github.com/ceph/ceph",
     zip_safe = False,
     install_requires=(
+        'pyyaml',
         'six',
     ),
     classifiers = [
index 23e5e099180f559d6da0a9ca1e2440d194ba7355..9b0bc92423e87d6d8ec1e2cda1cea968e962df37 100644 (file)
@@ -508,11 +508,27 @@ namespace rgw {
     rgw::curl::setup_curl(boost::none);
     rgw_http_client_init(g_ceph_context);
 
+    auto run_gc =
+      g_conf()->rgw_enable_gc_threads &&
+      g_conf()->rgw_nfs_run_gc_threads;
+
+    auto run_lc =
+      g_conf()->rgw_enable_lc_threads &&
+      g_conf()->rgw_nfs_run_lc_threads;
+
+    auto run_quota =
+      g_conf()->rgw_enable_quota_threads &&
+      g_conf()->rgw_nfs_run_quota_threads;
+
+    auto run_sync =
+      g_conf()->rgw_run_sync_thread &&
+      g_conf()->rgw_nfs_run_sync_thread;
+
     store = RGWStoreManager::get_storage(g_ceph_context,
-                                        g_conf()->rgw_enable_gc_threads,
-                                        g_conf()->rgw_enable_lc_threads,
-                                        g_conf()->rgw_enable_quota_threads,
-                                        g_conf()->rgw_run_sync_thread,
+                                        run_gc,
+                                        run_lc,
+                                        run_quota,
+                                        run_sync,
                                         g_conf().get_val<bool>("rgw_dynamic_resharding"));
 
     if (!store) {
index 5af5282e03761ad2233eae084b452d0794cd03d8..bdb0a43ac118117f2482c0b42b77039a0b252de2 100755 (executable)
@@ -8,7 +8,7 @@ export LANG=C
 
 out_dir="."
 temp_file=/tmp/temp.$$
-timestamp=$(date -u +%Y%m%d%k%M)
+timestamp=$(date -u +%Y%m%d%H%M)
 lspools_err="${out_dir}/lspools-${timestamp}.error"
 rados_out="${out_dir}/rados-${timestamp}.intermediate"
 rados_err="${out_dir}/rados-${timestamp}.error"
@@ -28,13 +28,14 @@ error_out() {
 }
 
 prompt_pool() {
-    echo "Available pools:"
+    # note: all prompts go to stderr so stdout contains just the result
+    >&2 echo "Available pools:"
     rados lspools >"$temp_file" 2>"$lspools_err"
     if [ "$?" -ne 0 ] ;then
        error_out "rados lspools" "$lspools_err"
     fi
-    sed 's/^/    /' $temp_file # list pools and indent
-    printf "Which pool do you want to search for orphans? "
+    >&2 sed 's/^/    /' "$temp_file" # list pools and indent
+    >&2 printf "Which pool do you want to search for orphans? "
     local mypool
     read mypool
     echo $mypool
@@ -76,9 +77,12 @@ if [ "${PIPESTATUS[0]}" -gt 1 ] ;then
     error_out "ceph-diff-sorted"
 fi
 
-found="$(wc -l < $delta_out)"
-possible="$(wc -l < $rados_out)"
-percentage=$(expr 100 \* $found / $possible)
+found=$(wc -l < "$delta_out")
+possible=$(wc -l < "$rados_out")
+percentage=0
+if [ $possible -ne 0 ] ;then
+    percentage=$(expr 100 \* $found / $possible)
+fi
 
 echo "$found potential orphans found out of a possible $possible (${percentage}%)."
 echo "The results can be found in ${delta_out}."
index d4f3d73442da9a047912dc6b2fa7560c270c6b43..6831a78ed23e94aacb787754d5f6fa31ddd31f4c 100644 (file)
@@ -7224,27 +7224,35 @@ next:
 
   if (opt_cmd == OPT::LC_LIST) {
     formatter->open_array_section("lifecycle_list");
-    map<string, int> bucket_lc_map;
+    vector<cls_rgw_lc_entry> bucket_lc_map;
     string marker;
+    int index{0};
 #define MAX_LC_LIST_ENTRIES 100
     if (max_entries < 0) {
       max_entries = MAX_LC_LIST_ENTRIES;
     }
     do {
-      int ret = store->getRados()->list_lc_progress(marker, max_entries, &bucket_lc_map);
+      int ret = store->getRados()->list_lc_progress(marker, max_entries,
+                                                   bucket_lc_map, index);
       if (ret < 0) {
-        cerr << "ERROR: failed to list objs: " << cpp_strerror(-ret) << std::endl;
+        cerr << "ERROR: failed to list objs: " << cpp_strerror(-ret)
+            << std::endl;
         return 1;
       }
-      map<string, int>::iterator iter;
-      for (iter = bucket_lc_map.begin(); iter != bucket_lc_map.end(); ++iter) {
+      for (const auto& entry : bucket_lc_map) {
         formatter->open_object_section("bucket_lc_info");
-        formatter->dump_string("bucket", iter->first);
-        string lc_status = LC_STATUS[iter->second];
+        formatter->dump_string("bucket", entry.bucket);
+       char exp_buf[100];
+       time_t t{time_t(entry.start_time)};
+       if (std::strftime(
+             exp_buf, sizeof(exp_buf),
+             "%a, %d %b %Y %T %Z", std::gmtime(&t))) {
+         formatter->dump_string("started", exp_buf);
+       }
+        string lc_status = LC_STATUS[entry.status];
         formatter->dump_string("status", lc_status);
         formatter->close_section(); // objs
         formatter->flush(cout);
-        marker = iter->first;
       }
     } while (!bucket_lc_map.empty());
 
index 2b654f5019208d4034cd720d5c7233cc432f9a33..c8158db9eb3395ee8212a139af496e0eb6e85025 100644 (file)
@@ -69,6 +69,10 @@ class StreamIO : public rgw::asio::ClientIO {
                                           yield[ec]);
     if (ec) {
       ldout(cct, 4) << "write_data failed: " << ec.message() << dendl;
+      if (ec==boost::asio::error::broken_pipe) {
+        boost::system::error_code ec_ignored;
+        stream.lowest_layer().shutdown(tcp::socket::shutdown_both, ec_ignored);
+      }
       throw rgw::io::Exception(ec.value(), std::system_category());
     }
     return bytes;
@@ -95,6 +99,34 @@ class StreamIO : public rgw::asio::ClientIO {
   }
 };
 
+// output the http version as a string, ie 'HTTP/1.1'
+struct http_version {
+  unsigned major_ver;
+  unsigned minor_ver;
+  explicit http_version(unsigned version)
+    : major_ver(version / 10), minor_ver(version % 10) {}
+};
+std::ostream& operator<<(std::ostream& out, const http_version& v) {
+  return out << "HTTP/" << v.major_ver << '.' << v.minor_ver;
+}
+
+// log an http header value or '-' if it's missing
+struct log_header {
+  const http::fields& fields;
+  http::field field;
+  std::string_view quote;
+  log_header(const http::fields& fields, http::field field,
+             std::string_view quote = "")
+    : fields(fields), field(field), quote(quote) {}
+};
+std::ostream& operator<<(std::ostream& out, const log_header& h) {
+  auto p = h.fields.find(h.field);
+  if (p == h.fields.end()) {
+    return out << '-';
+  }
+  return out << h.quote << p->value() << h.quote;
+}
+
 using SharedMutex = ceph::async::SharedMutex<boost::asio::io_context::executor_type>;
 
 template <typename Stream>
@@ -132,9 +164,9 @@ void handle_connection(boost::asio::io_context& context,
       ldout(cct, 20) << "failed to read header: " << ec.message() << dendl;
       return;
     }
+    auto& message = parser.get();
     if (ec) {
       ldout(cct, 1) << "failed to read header: " << ec.message() << dendl;
-      auto& message = parser.get();
       http::response<http::empty_body> response;
       response.result(http::status::bad_request);
       response.version(message.version() == 10 ? 10 : 11);
@@ -177,8 +209,24 @@ void handle_connection(boost::asio::io_context& context,
                                     &real_client))));
       RGWRestfulIO client(cct, &real_client_io);
       auto y = optional_yield{context, yield};
+      int http_ret = 0;
       process_request(env.store, env.rest, &req, env.uri_prefix,
-                      *env.auth_registry, &client, env.olog, y, scheduler);
+                      *env.auth_registry, &client, env.olog, y,
+                      scheduler, &http_ret);
+
+      if (cct->_conf->subsys.should_gather(dout_subsys, 1)) {
+        // access log line elements begin per Apache Combined Log Format with additions following
+        const auto now = ceph::coarse_real_clock::now();
+        using ceph::operator<<; // for coarse_real_time
+        ldout(cct, 1) << "beast: " << hex << &req << dec << ": "
+            << remote_endpoint.address() << " - - [" << now << "] \""
+            << message.method_string() << ' ' << message.target() << ' '
+            << http_version{message.version()} << "\" " << http_ret << ' '
+            << client.get_bytes_sent() + client.get_bytes_received() << ' '
+            << log_header{message, http::field::referer, "\""} << ' '
+            << log_header{message, http::field::user_agent, "\""} << ' '
+            << log_header{message, http::field::range} << dendl;
+      }
     }
 
     if (!parser.keep_alive()) {
index 38d5c9091889c7a96ca04a04380eac981c192e36..53649433ab6ab3823784efd600d70e5a5c05a882 100644 (file)
@@ -92,6 +92,10 @@ transform_old_authinfo(CephContext* const cct,
       return {};
     }
 
+    string get_subuser() const override {
+      return {};
+    }
+
     void to_str(std::ostream& out) const override {
       out << "RGWDummyIdentityApplier(auth_id=" << id
           << ", perm_mask=" << perm_mask
@@ -521,7 +525,8 @@ void rgw::auth::RemoteApplier::create_account(const DoutPrefixProvider* dpp,
   user_info.user_id = new_acct_user;
   user_info.display_name = info.acct_name;
 
-  user_info.max_buckets = cct->_conf->rgw_user_max_buckets;
+  user_info.max_buckets =
+    cct->_conf.get_val<int64_t>("rgw_user_max_buckets");
   rgw_apply_default_bucket_quota(user_info.bucket_quota, cct->_conf);
   rgw_apply_default_user_quota(user_info.user_quota, cct->_conf);
 
@@ -617,7 +622,11 @@ bool rgw::auth::LocalApplier::is_identity(const idset_t& ids) const {
       if (id.get_id() == user_info.user_id.id) {
         return true;
       }
-      if (subuser != NO_SUBUSER) {
+      std::string wildcard_subuser = user_info.user_id.id;
+      wildcard_subuser.append(":*");
+      if (wildcard_subuser == id.get_id()) {
+        return true;
+      } else if (subuser != NO_SUBUSER) {
         std::string user = user_info.user_id.id;
         user.append(":");
         user.append(subuser);
index a08a7f3024e2a20f27e07b5e386646c956590c78..37971119be6c51abf19a6f4e3809537deb2b83d3 100644 (file)
@@ -76,6 +76,9 @@ public:
 
   /* Name of Account */
   virtual string get_acct_name() const = 0;
+
+  /* Subuser of Account */
+  virtual string get_subuser() const = 0;
 };
 
 inline std::ostream& operator<<(std::ostream& out,
@@ -410,6 +413,10 @@ public:
     return token_claims.user_name;
   }
 
+  string get_subuser() const override {
+    return {};
+  }
+
   struct Factory {
     virtual ~Factory() {}
 
@@ -542,6 +549,7 @@ public:
   void load_acct_info(const DoutPrefixProvider* dpp, RGWUserInfo& user_info) const override; /* out */
   uint32_t get_identity_type() const override { return info.acct_type; }
   string get_acct_name() const override { return info.acct_name; }
+  string get_subuser() const override { return {}; }
 
   struct Factory {
     virtual ~Factory() {}
@@ -603,6 +611,7 @@ public:
   void load_acct_info(const DoutPrefixProvider* dpp, RGWUserInfo& user_info) const override; /* out */
   uint32_t get_identity_type() const override { return TYPE_RGW; }
   string get_acct_name() const override { return {}; }
+  string get_subuser() const override { return subuser; }
 
   struct Factory {
     virtual ~Factory() {}
@@ -647,6 +656,7 @@ public:
   void load_acct_info(const DoutPrefixProvider* dpp, RGWUserInfo& user_info) const override; /* out */
   uint32_t get_identity_type() const override { return TYPE_ROLE; }
   string get_acct_name() const override { return {}; }
+  string get_subuser() const override { return {}; }
   void modify_request_state(const DoutPrefixProvider* dpp, req_state* s) const override;
 
   struct Factory {
index 228d2cde697c9a8ef6815ac6a926ca4eb543a6ed..8a5bf80644a729d9659e8bb444b5fd2b3eec873c 100644 (file)
@@ -88,6 +88,10 @@ public:
     return get_decoratee().get_acct_name();
   }
 
+  string get_subuser() const override {
+    return get_decoratee().get_subuser();
+  }
+
   bool is_identity(
     const boost::container::flat_set<Principal>& ids) const override {
     return get_decoratee().is_identity(ids);
index c017418826e73ed357eff5247e44a7a01cfc0f54..39079743d96b8bb0331a6d21bba3886d80a5053c 100644 (file)
@@ -1400,22 +1400,30 @@ int RGWBucketAdminOp::sync_bucket(rgw::sal::RGWRadosStore *store, RGWBucketAdmin
   return bucket.sync(op_state, &attrs, err_msg);
 }
 
-static int bucket_stats(rgw::sal::RGWRadosStore *store, const std::string& tenant_name, std::string&  bucket_name, Formatter *formatter)
+static int bucket_stats(rgw::sal::RGWRadosStore *store,
+                       const std::string& tenant_name,
+                       const std::string& bucket_name,
+                       Formatter *formatter)
 {
   RGWBucketInfo bucket_info;
   map<RGWObjCategory, RGWStorageStats> stats;
   map<string, bufferlist> attrs;
 
   real_time mtime;
-  int r = store->getRados()->get_bucket_info(store->svc(), tenant_name, bucket_name, bucket_info, &mtime, null_yield, &attrs);
-  if (r < 0)
+  int r = store->getRados()->get_bucket_info(store->svc(),
+                                            tenant_name, bucket_name, bucket_info,
+                                            &mtime, null_yield, &attrs);
+  if (r < 0) {
     return r;
+  }
 
   rgw_bucket& bucket = bucket_info.bucket;
 
   string bucket_ver, master_ver;
   string max_marker;
-  int ret = store->getRados()->get_bucket_stats(bucket_info, RGW_NO_SHARD, &bucket_ver, &master_ver, stats, &max_marker);
+  int ret = store->getRados()->get_bucket_stats(bucket_info, RGW_NO_SHARD,
+                                               &bucket_ver, &master_ver, stats,
+                                               &max_marker);
   if (ret < 0) {
     cerr << "error getting bucket stats ret=" << ret << std::endl;
     return ret;
@@ -1584,11 +1592,12 @@ int RGWBucketAdminOp::limit_check(rgw::sal::RGWRadosStore *store,
   return ret;
 } /* RGWBucketAdminOp::limit_check */
 
-int RGWBucketAdminOp::info(rgw::sal::RGWRadosStore *store, RGWBucketAdminOpState& op_state,
-                  RGWFormatterFlusher& flusher)
+int RGWBucketAdminOp::info(rgw::sal::RGWRadosStore *store,
+                          RGWBucketAdminOpState& op_state,
+                          RGWFormatterFlusher& flusher)
 {
   int ret = 0;
-  string bucket_name = op_state.get_bucket_name();
+  const std::string& bucket_name = op_state.get_bucket_name();
   Formatter *formatter = flusher.get_formatter();
   flusher.start(0);
 
@@ -1596,40 +1605,48 @@ int RGWBucketAdminOp::info(rgw::sal::RGWRadosStore *store, RGWBucketAdminOpState
 
   const size_t max_entries = cct->_conf->rgw_list_buckets_max_chunk;
 
-  bool show_stats = op_state.will_fetch_stats();
-  rgw_user user_id = op_state.get_user_id();
+  const bool show_stats = op_state.will_fetch_stats();
+  const rgw_user& user_id = op_state.get_user_id();
   if (op_state.is_user_op()) {
     formatter->open_array_section("buckets");
 
     rgw::sal::RGWBucketList buckets;
     rgw::sal::RGWRadosUser user(store, op_state.get_user_id());
-    string marker;
-    bool is_truncated = false;
+    std::string marker;
+    const std::string empty_end_marker;
+    constexpr bool no_need_stats = false; // set need_stats to false
 
     do {
-      ret = user.list_buckets(marker, string(), max_entries, false, buckets);
-      if (ret < 0)
+      buckets.clear();
+      ret = user.list_buckets(marker, empty_end_marker, max_entries,
+                             no_need_stats, buckets);
+      if (ret < 0) {
         return ret;
+      }
 
+      const std::string* marker_cursor = nullptr;
       map<string, rgw::sal::RGWBucket*>& m = buckets.get_buckets();
-      map<string, rgw::sal::RGWBucket*>::iterator iter;
 
-      for (iter = m.begin(); iter != m.end(); ++iter) {
-        std::string obj_name = iter->first;
+      for (const auto& i : m) {
+        const std::string& obj_name = i.first;
         if (!bucket_name.empty() && bucket_name != obj_name) {
           continue;
         }
 
-        if (show_stats)
+        if (show_stats) {
           bucket_stats(store, user_id.tenant, obj_name, formatter);
-        else
+       } else {
           formatter->dump_string("bucket", obj_name);
+       }
 
-        marker = obj_name;
+        marker_cursor = &obj_name;
+      } // for loop
+      if (marker_cursor) {
+       marker = *marker_cursor;
       }
 
       flusher.flush();
-    } while (is_truncated);
+    } while (buckets.is_truncated());
 
     formatter->close_section();
   } else if (!bucket_name.empty()) {
@@ -1645,14 +1662,15 @@ int RGWBucketAdminOp::info(rgw::sal::RGWRadosStore *store, RGWBucketAdminOpState
     ret = store->ctl()->meta.mgr->list_keys_init("bucket", &handle);
     while (ret == 0 && truncated) {
       std::list<std::string> buckets;
-      const int max_keys = 1000;
+      constexpr int max_keys = 1000;
       ret = store->ctl()->meta.mgr->list_keys_next(handle, max_keys, buckets,
-                                            &truncated);
+                                                  &truncated);
       for (auto& bucket_name : buckets) {
-        if (show_stats)
+        if (show_stats) {
           bucket_stats(store, user_id.tenant, bucket_name, formatter);
-        else
+       } else {
           formatter->dump_string("bucket", bucket_name);
+       }
       }
     }
     store->ctl()->meta.mgr->list_keys_complete(handle);
index 41dd004c10f8959687fe4be024eece07c97e3b32..90a608d1bf159d6e1018c941a14463245af30600 100644 (file)
@@ -67,6 +67,11 @@ int ObjectCache::get(const string& name, ObjectCacheInfo& info, uint32_t mask, r
   }
 
   ObjectCacheInfo& src = iter->second.info;
+  if(src.status == -ENOENT) {
+    ldout(cct, 10) << "cache get: name=" << name << " : hit (negative entry)" << dendl;
+    if (perfcounter) perfcounter->inc(l_rgw_cache_hit);
+    return -ENODATA;
+  }
   if ((src.flags & mask) != mask) {
     ldout(cct, 10) << "cache get: name=" << name << " : type miss (requested=0x"
                    << std::hex << mask << ", cached=0x" << src.flags
index f440bb2261227bf699431c1060082adc487e4284..778566f8a35ca04ff2f6c1d5707ceb1758dce45f 100644 (file)
@@ -1841,7 +1841,8 @@ bool RGWUserCaps::is_valid_cap_type(const string& tp)
                                     "mdlog",
                                     "datalog",
                                     "roles",
-                                    "user-policy"};
+                                    "user-policy",
+                                    "amz-cache"};
 
   for (unsigned int i = 0; i < sizeof(cap_type) / sizeof(char *); ++i) {
     if (tp.compare(cap_type[i]) == 0) {
index 9ea45c37127872a44ecf6283ba772997f2d3a724..8b4e49e37f7747ed58a9f128fcf96b7daea20775 100644 (file)
@@ -20,7 +20,8 @@ int RGWUserCreateCR::Request::_send_request()
 {
   CephContext *cct = store->ctx();
 
-  int32_t default_max_buckets = cct->_conf->rgw_user_max_buckets;
+  const int32_t default_max_buckets =
+    cct->_conf.get_val<int64_t>("rgw_user_max_buckets");
 
   RGWUserAdminOpState op_state;
 
index c4358d65421f491f060becdd003f6d830f33b651..44e5bb615f5c0b859c75aa6b1090e6e3057ca04a 100644 (file)
@@ -931,6 +931,13 @@ void RGWHTTPManager::manage_pending_requests()
 
   std::unique_lock wl{reqs_lock};
 
+  if (!reqs_change_state.empty()) {
+    for (auto siter : reqs_change_state) {
+      _set_req_state(siter);
+    }
+    reqs_change_state.clear();
+  }
+
   if (!unregistered_reqs.empty()) {
     for (auto& r : unregistered_reqs) {
       _unlink_request(r);
@@ -955,13 +962,6 @@ void RGWHTTPManager::manage_pending_requests()
     }
   }
 
-  if (!reqs_change_state.empty()) {
-    for (auto siter : reqs_change_state) {
-      _set_req_state(siter);
-    }
-    reqs_change_state.clear();
-  }
-
   for (auto piter : remove_reqs) {
     rgw_http_req_data *req_data = piter.first;
     int r = piter.second;
index da0fa92b7010e725b08f29db7faac10db302e19d..31936c40472f2d3b4f06f6182b7be8dc6b33c642 100644 (file)
@@ -970,12 +970,9 @@ ostream& operator <<(ostream& m, const Condition& c) {
 Effect Statement::eval(const Environment& e,
                       boost::optional<const rgw::auth::Identity&> ida,
                       uint64_t act, const ARN& res) const {
-  if (ida) {
-    if (!princ.empty() && !ida->is_identity(princ)) {
-      return Effect::Pass;
-    } else if (!noprinc.empty() && ida->is_identity(noprinc)) {
-      return Effect::Pass;
-    }
+
+  if (eval_principal(e, ida) == Effect::Deny) {
+    return Effect::Pass;
   }
 
   if (!resource.empty()) {
index 9a3def0a10822db2f13f44cf231b524dd4aba9cb..f176e8e8141f3433bdec8f44372d73e6188e3f25 100644 (file)
@@ -13,6 +13,7 @@
 #include <boost/algorithm/string/predicate.hpp>
 #include <boost/variant.hpp>
 
+#include "include/scope_guard.h"
 #include "common/Formatter.h"
 #include "common/containers.h"
 #include <common/errno.h>
@@ -26,6 +27,7 @@
 #include "rgw_zone.h"
 #include "rgw_string.h"
 #include "rgw_multi.h"
+#include "rgw_sal.h"
 
 // this seems safe to use, at least for now--arguably, we should
 // prefer header-only fmt, in general
@@ -212,9 +214,10 @@ void *RGWLC::LCWorker::entry() {
     utime_t start = ceph_clock_now();
     if (should_work(start)) {
       ldpp_dout(dpp, 2) << "life cycle: start" << dendl;
-      int r = lc->process(this);
+      int r = lc->process(this, false /* once */);
       if (r < 0) {
-        ldpp_dout(dpp, 0) << "ERROR: do life cycle process() returned error r=" << r << dendl;
+        ldpp_dout(dpp, 0) << "ERROR: do life cycle process() returned error r="
+                         << r << dendl;
       }
       ldpp_dout(dpp, 2) << "life cycle: stop" << dendl;
     }
@@ -226,7 +229,8 @@ void *RGWLC::LCWorker::entry() {
     utime_t next;
     next.set_from_double(end + secs);
 
-    ldpp_dout(dpp, 5) << "schedule life cycle next start time: " << rgw_to_asctime(next) << dendl;
+    ldpp_dout(dpp, 5) << "schedule life cycle next start time: "
+                     << rgw_to_asctime(next) << dendl;
 
     std::unique_lock l{lock};
     cond.wait_for(l, std::chrono::seconds(secs));
@@ -262,7 +266,7 @@ void RGWLC::finalize()
   delete[] obj_names;
 }
 
-bool RGWLC::if_already_run_today(time_t& start_date)
+bool RGWLC::if_already_run_today(time_t start_date)
 {
   struct tm bdt;
   time_t begin_of_day;
@@ -286,32 +290,48 @@ bool RGWLC::if_already_run_today(time_t& start_date)
     return false;
 }
 
+static inline std::ostream& operator<<(std::ostream &os, cls_rgw_lc_entry& ent) {
+  os << "<ent: bucket=";
+  os << ent.bucket;
+  os << "; start_time=";
+  os << rgw_to_asctime(utime_t(time_t(ent.start_time), 0));
+  os << "; status=";
+    os << ent.status;
+    os << ">";
+    return os;
+}
+
 int RGWLC::bucket_lc_prepare(int index, LCWorker* worker)
 {
-  map<string, int > entries;
-
+  vector<cls_rgw_lc_entry> entries;
   string marker;
 
+  dout(5) << "RGWLC::bucket_lc_prepare(): PREPARE "
+         << "index: " << index << " worker ix: " << worker->ix
+         << dendl;
+
 #define MAX_LC_LIST_ENTRIES 100
   do {
     int ret = cls_rgw_lc_list(store->getRados()->lc_pool_ctx, obj_names[index],
                              marker, MAX_LC_LIST_ENTRIES, entries);
     if (ret < 0)
       return ret;
-    map<string, int>::iterator iter;
-    for (iter = entries.begin(); iter != entries.end(); ++iter) {
-      pair<string, int > entry(iter->first, lc_uninitial);
+
+    for (auto& entry : entries) {
+      entry.start_time = ceph_clock_now();
+      entry.status = lc_uninitial; // lc_uninitial? really?
       ret = cls_rgw_lc_set_entry(store->getRados()->lc_pool_ctx,
-                                obj_names[index],  entry);
+                                obj_names[index], entry);
       if (ret < 0) {
-        ldpp_dout(this, 0) << "RGWLC::bucket_lc_prepare() failed to set entry on "
-            << obj_names[index] << dendl;
+        ldpp_dout(this, 0)
+         << "RGWLC::bucket_lc_prepare() failed to set entry on "
+         << obj_names[index] << dendl;
         return ret;
       }
     }
 
-    if (!entries.empty()) {
-      marker = std::move(entries.rbegin()->first);
+    if (! entries.empty()) {
+      marker = std::move(entries.back().bucket);
     }
   } while (!entries.empty());
 
@@ -332,12 +352,19 @@ static bool obj_has_expired(CephContext *cct, ceph::real_time mtime, int days,
     cmp = days*cct->_conf->rgw_lc_debug_interval;
     base_time = ceph_clock_now();
   }
-  timediff = base_time - ceph::real_clock::to_time_t(mtime);
+  auto tt_mtime = ceph::real_clock::to_time_t(mtime);
+  timediff = base_time - tt_mtime;
 
   if (expire_time) {
     *expire_time = mtime + make_timespan(cmp);
   }
-  ldout(cct, 20) << __func__ << "(): mtime=" << mtime << " days=" << days << " base_time=" << base_time << " timediff=" << timediff << " cmp=" << cmp << dendl;
+
+  ldout(cct, 20) << __func__ << __func__
+                << "(): mtime=" << mtime << " days=" << days
+                << " base_time=" << base_time << " timediff=" << timediff
+                << " cmp=" << cmp
+                << " is_expired=" << (timediff >= cmp) 
+                << dendl;
 
   return (timediff >= cmp);
 }
@@ -366,7 +393,8 @@ static bool pass_object_lock_check(RGWRados *store, RGWBucketInfo& bucket_info,
       try {
         decode(retention, iter->second);
       } catch (buffer::error& err) {
-        ldout(store->ctx(), 0) << "ERROR: failed to decode RGWObjectRetention" << dendl;
+        ldout(store->ctx(), 0) << "ERROR: failed to decode RGWObjectRetention"
+                              << dendl;
         return false;
       }
       if (ceph::real_clock::to_time_t(retention.get_retain_until_date()) >
@@ -380,7 +408,8 @@ static bool pass_object_lock_check(RGWRados *store, RGWBucketInfo& bucket_info,
       try {
         decode(obj_legal_hold, iter->second);
       } catch (buffer::error& err) {
-        ldout(store->ctx(), 0) << "ERROR: failed to decode RGWObjectLegalHold" << dendl;
+        ldout(store->ctx(), 0) << "ERROR: failed to decode RGWObjectLegalHold"
+                              << dendl;
         return false;
       }
       if (obj_legal_hold.is_enabled()) {
@@ -471,22 +500,24 @@ public:
     ++obj_iter;
   }
 
-  bool next_has_same_name()
-  {
-    if ((obj_iter + 1) == objs.end()) {
+  boost::optional<std::string> next_key_name() {
+    if (obj_iter == objs.end() ||
+       (obj_iter + 1) == objs.end()) {
       /* this should have been called after get_obj() was called, so this should
        * only happen if is_truncated is false */
-      return false;
+      return boost::none;
     }
-    return (obj_iter->key.name.compare((obj_iter + 1)->key.name) == 0);
+
+    return ((obj_iter + 1)->key.name);
   }
+
 }; /* LCObjsLister */
 
 struct op_env {
 
   using LCWorker = RGWLC::LCWorker;
 
-  lc_op& op;
+  lc_op op;
   rgw::sal::RGWRadosStore *store;
   LCWorker* worker;
   RGWBucketInfo& bucket_info;
@@ -499,26 +530,40 @@ struct op_env {
 }; /* op_env */
 
 class LCRuleOp;
+class WorkQ;
 
 struct lc_op_ctx {
   CephContext *cct;
-  op_env& env;
-  rgw_bucket_dir_entry& o;
+  op_env env;
+  rgw_bucket_dir_entry o;
+  boost::optional<std::string> next_key_name;
+  ceph::real_time effective_mtime;
 
   rgw::sal::RGWRadosStore *store;
   RGWBucketInfo& bucket_info;
-  lc_op& op;
+  lc_op& op; // ok--refers to expanded env.op
   LCObjsLister& ol;
 
   rgw_obj obj;
   RGWObjectCtx rctx;
   const DoutPrefixProvider *dpp;
-
-  lc_op_ctx(op_env& _env, rgw_bucket_dir_entry& _o,
-           const DoutPrefixProvider *_dpp)
-    : cct(_env.store->ctx()), env(_env), o(_o),
+  WorkQ* wq;
+
+  lc_op_ctx(op_env& env, rgw_bucket_dir_entry& o,
+           boost::optional<std::string> next_key_name,
+           ceph::real_time effective_mtime,
+           const DoutPrefixProvider *dpp, WorkQ* wq)
+    : cct(env.store->ctx()), env(env), o(o), next_key_name(next_key_name),
+      effective_mtime(effective_mtime),
       store(env.store), bucket_info(env.bucket_info), op(env.op), ol(env.ol),
-      obj(env.bucket_info.bucket, o.key), rctx(env.store), dpp(_dpp) {}
+      obj(env.bucket_info.bucket, o.key), rctx(env.store), dpp(dpp), wq(wq)
+    {}
+
+  bool next_has_same_name(const std::string& key_name) {
+    return (next_key_name && key_name.compare(
+             boost::get<std::string>(next_key_name)) == 0);
+  }
+
 }; /* lc_op_ctx */
 
 static int remove_expired_obj(lc_op_ctx& oc, bool remove_indeed)
@@ -548,10 +593,6 @@ static int remove_expired_obj(lc_op_ctx& oc, bool remove_indeed)
   del_op.params.obj_owner = obj_owner;
   del_op.params.unmod_since = meta.mtime;
 
-  if (perfcounter) {
-    perfcounter->inc(l_rgw_lc_remove_expired, 1);
-  }
-
   return del_op.delete_obj(null_yield);
 } /* remove_expired_obj */
 
@@ -561,7 +602,7 @@ public:
 
   virtual bool check(lc_op_ctx& oc, ceph::real_time *exp_time) {
     return false;
-  };
+  }
 
   /* called after check(). Check should tell us whether this action
    * is applicable. If there are multiple actions, we'll end up executing
@@ -581,6 +622,8 @@ public:
   virtual int process(lc_op_ctx& oc) {
     return 0;
   }
+
+  friend class LCOpRule;
 }; /* LCOpAction */
 
 class LCOpFilter {
@@ -594,49 +637,73 @@ virtual ~LCOpFilter() {}
 class LCOpRule {
   friend class LCOpAction;
 
-  op_env& env;
+  op_env env;
+  boost::optional<std::string> next_key_name;
+  ceph::real_time effective_mtime;
 
-  std::vector<unique_ptr<LCOpFilter> > filters;
-  std::vector<unique_ptr<LCOpAction> > actions;
+  std::vector<shared_ptr<LCOpFilter> > filters; // n.b., sharing ovhd
+  std::vector<shared_ptr<LCOpAction> > actions;
 
 public:
   LCOpRule(op_env& _env) : env(_env) {}
 
+  boost::optional<std::string> get_next_key_name() {
+    return next_key_name;
+  }
+
+  std::vector<shared_ptr<LCOpAction>>& get_actions() {
+    return actions;
+  }
+
   void build();
-  int process(rgw_bucket_dir_entry& o, const DoutPrefixProvider *dpp);
+  void update();
+  int process(rgw_bucket_dir_entry& o, const DoutPrefixProvider *dpp,
+             WorkQ* wq);
 }; /* LCOpRule */
 
 using WorkItem =
   boost::variant<void*,
                 /* out-of-line delete */
-                std::tuple<LCOpRule&, rgw_bucket_dir_entry>,
+                std::tuple<LCOpRule, rgw_bucket_dir_entry>,
                 /* uncompleted MPU expiration */
-                std::tuple<const lc_op&, rgw_bucket_dir_entry>,
+                std::tuple<lc_op, rgw_bucket_dir_entry>,
                 rgw_bucket_dir_entry>;
 
 class WorkQ : public Thread
 {
 public:
   using unique_lock = std::unique_lock<std::mutex>;
-  using work_f = std::function<void(RGWLC::LCWorker*, WorkItem&)>;
+  using work_f = std::function<void(RGWLC::LCWorker*, WorkQ*, WorkItem&)>;
   using dequeue_result = boost::variant<void*, WorkItem>;
 
+  static constexpr uint32_t FLAG_NONE =        0x0000;
+  static constexpr uint32_t FLAG_EWAIT_SYNC =  0x0001;
+  static constexpr uint32_t FLAG_DWAIT_SYNC =  0x0002;
+  static constexpr uint32_t FLAG_EDRAIN_SYNC = 0x0004;
+
 private:
-  const work_f bsf = [](RGWLC::LCWorker* wk, WorkItem& wi) {};
+  const work_f bsf = [](RGWLC::LCWorker* wk, WorkQ* wq, WorkItem& wi) {};
   RGWLC::LCWorker* wk;
   uint32_t qmax;
+  int ix;
   std::mutex mtx;
   std::condition_variable cv;
+  uint32_t flags;
   vector<WorkItem> items;
   work_f f;
 
 public:
   WorkQ(RGWLC::LCWorker* wk, uint32_t ix, uint32_t qmax)
-    : wk(wk), qmax(qmax), f(bsf)
+    : wk(wk), qmax(qmax), ix(ix), flags(FLAG_NONE), f(bsf)
     {
-      create((string{"workpool_thr_"} + to_string(ix)).c_str());
+      create(thr_name().c_str());
     }
 
+  std::string thr_name() {
+    return std::string{"wp_thrd: "}
+    + std::to_string(wk->ix) + ", " + std::to_string(ix);
+  }
+
   void setf(work_f _f) {
     f = _f;
   }
@@ -645,15 +712,20 @@ public:
     unique_lock uniq(mtx);
     while ((!wk->get_lc()->going_down()) &&
           (items.size() > qmax)) {
+      flags |= FLAG_EWAIT_SYNC;
       cv.wait_for(uniq, 200ms);
     }
     items.push_back(item);
+    if (flags & FLAG_DWAIT_SYNC) {
+      flags &= ~FLAG_DWAIT_SYNC;
+      cv.notify_one();
+    }
   }
 
   void drain() {
     unique_lock uniq(mtx);
-    while ((!wk->get_lc()->going_down()) &&
-          (items.size() > 0)) {
+    flags |= FLAG_EDRAIN_SYNC;
+    while (flags & FLAG_EDRAIN_SYNC) {
       cv.wait_for(uniq, 200ms);
     }
   }
@@ -663,11 +735,20 @@ private:
     unique_lock uniq(mtx);
     while ((!wk->get_lc()->going_down()) &&
           (items.size() == 0)) {
+      /* clear drain state, as we are NOT doing work and qlen==0 */
+      if (flags & FLAG_EDRAIN_SYNC) {
+       flags &= ~FLAG_EDRAIN_SYNC;
+      }
+      flags |= FLAG_DWAIT_SYNC;
       cv.wait_for(uniq, 200ms);
     }
     if (items.size() > 0) {
       auto item = items.back();
       items.pop_back();
+      if (flags & FLAG_EWAIT_SYNC) {
+       flags &= ~FLAG_EWAIT_SYNC;
+       cv.notify_one();
+      }
       return {item};
     }
     return nullptr;
@@ -680,7 +761,7 @@ private:
        /* going down */
        break;
       }
-      f(wk, boost::get<WorkItem>(item));
+      f(wk, this, boost::get<WorkItem>(item));
     }
     return nullptr;
   }
@@ -702,6 +783,12 @@ public:
       ix(0)
     {}
 
+  ~WorkPool() {
+    for (auto& wq : wqs) {
+      wq.join();
+    }
+  }
+
   void setf(WorkQ::work_f _f) {
     for (auto& wq : wqs) {
       wq.setf(_f);
@@ -721,17 +808,22 @@ public:
   }
 }; /* WorkPool */
 
-RGWLC::LCWorker::LCWorker(const DoutPrefixProvider* _dpp, CephContext *_cct,
-                         RGWLC *_lc)
-  : dpp(_dpp), cct(_cct), lc(_lc)
+RGWLC::LCWorker::LCWorker(const DoutPrefixProvider* dpp, CephContext *cct,
+                         RGWLC *lc, int ix)
+  : dpp(dpp), cct(cct), lc(lc), ix(ix)
 {
   auto wpw = cct->_conf.get_val<int64_t>("rgw_lc_max_wp_worker");
   workpool = new WorkPool(this, wpw, 512);
 }
 
+static inline bool worker_should_stop(time_t stop_at, bool once)
+{
+  return !once && stop_at < time(nullptr);
+}
+
 int RGWLC::handle_multipart_expiration(
   RGWRados::Bucket *target, const multimap<string, lc_op>& prefix_map,
-  LCWorker* worker)
+  LCWorker* worker, time_t stop_at, bool once)
 {
   MultipartMetaFilter mp_filter;
   vector<rgw_bucket_dir_entry> objs;
@@ -748,8 +840,8 @@ int RGWLC::handle_multipart_expiration(
   list_op.params.ns = RGW_OBJ_NS_MULTIPART;
   list_op.params.filter = &mp_filter;
 
-  auto pf = [&](RGWLC::LCWorker* wk, WorkItem& wi) {
-    auto wt = boost::get<std::tuple<const lc_op&, rgw_bucket_dir_entry>>(wi);
+  auto pf = [&](RGWLC::LCWorker* wk, WorkQ* wq, WorkItem& wi) {
+    auto wt = boost::get<std::tuple<lc_op, rgw_bucket_dir_entry>>(wi);
     auto& [rule, obj] = wt;
     RGWMPObj mp_obj;
     if (obj_has_expired(cct, obj.meta.mtime, rule.mp_expiration)) {
@@ -758,18 +850,26 @@ int RGWLC::handle_multipart_expiration(
        return;
       }
       RGWObjectCtx rctx(store);
-      ret = abort_multipart_upload(store, cct, &rctx, bucket_info, mp_obj);
-      if (ret < 0 && ret != -ERR_NO_SUCH_UPLOAD) {
-       ldpp_dout(wk->get_lc(), 0)
-         << "ERROR: abort_multipart_upload failed, ret=" << ret
-         << ", meta:" << obj.key
-         << dendl;
-      } else if (ret == -ERR_NO_SUCH_UPLOAD) {
-       ldpp_dout(wk->get_lc(), 5)
-         << "ERROR: abort_multipart_upload failed, ret=" << ret
-         << ", meta:" << obj.key
-         << dendl;
-      }
+      int ret = abort_multipart_upload(store, cct, &rctx, bucket_info, mp_obj);
+      if (ret == 0) {
+        if (perfcounter) {
+          perfcounter->inc(l_rgw_lc_abort_mpu, 1);
+        }
+      } else {
+       if (ret == -ERR_NO_SUCH_UPLOAD) {
+         ldpp_dout(wk->get_lc(), 5)
+           << "ERROR: abort_multipart_upload failed, ret=" << ret
+           << wq->thr_name()
+           << ", meta:" << obj.key
+           << dendl;
+       } else {
+         ldpp_dout(wk->get_lc(), 0)
+           << "ERROR: abort_multipart_upload failed, ret=" << ret
+           << wq->thr_name()
+           << ", meta:" << obj.key
+           << dendl;
+       }
+      } /* abort failed */
     } /* expired */
   };
 
@@ -777,6 +877,14 @@ int RGWLC::handle_multipart_expiration(
 
   for (auto prefix_iter = prefix_map.begin(); prefix_iter != prefix_map.end();
        ++prefix_iter) {
+
+    if (worker_should_stop(stop_at, once)) {
+      ldout(cct, 5) << __func__ << " interval budget EXPIRED worker "
+                    << worker->ix
+                    << dendl;
+      return 0;
+    }
+
     if (!prefix_iter->second.status || prefix_iter->second.mp_expiration <= 0) {
       continue;
     }
@@ -793,11 +901,10 @@ int RGWLC::handle_multipart_expiration(
       }
 
       for (auto obj_iter = objs.begin(); obj_iter != objs.end(); ++obj_iter) {
-       std::tuple<const lc_op&, rgw_bucket_dir_entry> t1 =
+       std::tuple<lc_op, rgw_bucket_dir_entry> t1 =
          {prefix_iter->second, *obj_iter};
        worker->workpool->enqueue(WorkItem{t1});
        if (going_down()) {
-         worker->workpool->drain();
          return 0;
        }
       } /* for objs */
@@ -841,6 +948,8 @@ static inline bool has_all_tags(const lc_op& rule_action,
   for (const auto& tag : object_tags.get_tags()) {
     const auto& rule_tags = rule_action.obj_tags->get_tags();
     const auto& iter = rule_tags.find(tag.first);
+    if(iter == rule_tags.end())
+        continue;
     if(iter->second == tag.second)
     {
       tag_count++;
@@ -862,7 +971,8 @@ static int check_tags(lc_op_ctx& oc, bool *skip)
                            oc.rctx, tags_bl);
     if (ret < 0) {
       if (ret != -ENODATA) {
-        ldout(oc.cct, 5) << "ERROR: read_obj_tags returned r=" << ret << dendl;
+        ldout(oc.cct, 5) << "ERROR: read_obj_tags returned r="
+                        << ret << " " << oc.wq->thr_name() << dendl;
       }
       return 0;
     }
@@ -871,12 +981,16 @@ static int check_tags(lc_op_ctx& oc, bool *skip)
       auto iter = tags_bl.cbegin();
       dest_obj_tags.decode(iter);
     } catch (buffer::error& err) {
-      ldout(oc.cct,0) << "ERROR: caught buffer::error, couldn't decode TagSet" << dendl;
+      ldout(oc.cct,0) << "ERROR: caught buffer::error, couldn't decode TagSet "
+                     << oc.wq->thr_name() << dendl;
       return -EIO;
     }
 
     if (! has_all_tags(op, dest_obj_tags)) {
-      ldout(oc.cct, 20) << __func__ << "() skipping obj " << oc.obj << " as tags do not match in rule: " << op.id << dendl;
+      ldout(oc.cct, 20) << __func__ << "() skipping obj " << oc.obj
+                       << " as tags do not match in rule: "
+                       << op.id << " "
+                       << oc.wq->thr_name() << dendl;
       return 0;
     }
   }
@@ -900,7 +1014,9 @@ public:
       if (ret == -ENOENT) {
         return false;
       }
-      ldout(oc.cct, 0) << "ERROR: check_tags on obj=" << oc.obj << " returned ret=" << ret << dendl;
+      ldout(oc.cct, 0) << "ERROR: check_tags on obj=" << oc.obj
+                      << " returned ret=" << ret << " "
+                      << oc.wq->thr_name() << dendl;
       return false;
     }
 
@@ -910,16 +1026,28 @@ public:
 
 class LCOpAction_CurrentExpiration : public LCOpAction {
 public:
+  LCOpAction_CurrentExpiration(op_env& env) {}
+
   bool check(lc_op_ctx& oc, ceph::real_time *exp_time) override {
     auto& o = oc.o;
     if (!o.is_current()) {
-      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": not current, skipping" << dendl;
+      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key
+                       << ": not current, skipping "
+                       << oc.wq->thr_name() << dendl;
       return false;
     }
     if (o.is_delete_marker()) {
-      if (oc.ol.next_has_same_name()) {
-        return false;
+      std::string nkn;
+      if (oc.next_key_name) nkn = *oc.next_key_name;
+      if (oc.next_has_same_name(o.key.name)) {
+       ldout(oc.cct, 7) << __func__ << "(): dm-check SAME: key=" << o.key
+                      << " next_key_name: %%" << nkn << "%% "
+                      << oc.wq->thr_name() << dendl;
+       return false;
       } else {
+       ldout(oc.cct, 7) << __func__ << "(): dm-check DELE: key=" << o.key
+                        << " next_key_name: %%" << nkn << "%% "
+                        << oc.wq->thr_name() << dendl;
         *exp_time = real_clock::now();
         return true;
       }
@@ -930,7 +1058,9 @@ public:
     auto& op = oc.op;
     if (op.expiration <= 0) {
       if (op.expiration_date == boost::none) {
-        ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": no expiration set in rule, skipping" << dendl;
+        ldout(oc.cct, 20) << __func__ << "(): key=" << o.key
+                         << ": no expiration set in rule, skipping "
+                         << oc.wq->thr_name() << dendl;
         return false;
       }
       is_expired = ceph_clock_now() >=
@@ -940,7 +1070,9 @@ public:
       is_expired = obj_has_expired(oc.cct, mtime, op.expiration, exp_time);
     }
 
-    ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": is_expired=" << (int)is_expired << dendl;
+    ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": is_expired="
+                     << (int)is_expired << " "
+                     << oc.wq->thr_name() << dendl;
     return is_expired;
   }
 
@@ -949,34 +1081,59 @@ public:
     int r;
     if (o.is_delete_marker()) {
       r = remove_expired_obj(oc, true);
+      if (r < 0) {
+       ldout(oc.cct, 0) << "ERROR: current is-dm remove_expired_obj "
+                        << oc.bucket_info.bucket << ":" << o.key
+                        << " " << cpp_strerror(r) << " "
+                        << oc.wq->thr_name() << dendl;
+      return r;
+      }
+      ldout(oc.cct, 2) << "DELETED: current is-dm "
+                      << oc.bucket_info.bucket << ":" << o.key
+                      << " " << oc.wq->thr_name() << dendl;
     } else {
+      /* ! o.is_delete_marker() */
       r = remove_expired_obj(oc, !oc.bucket_info.versioned());
+      if (r < 0) {
+       ldout(oc.cct, 0) << "ERROR: remove_expired_obj "
+                        << oc.bucket_info.bucket << ":" << o.key
+                        << " " << cpp_strerror(r) << " "
+                        << oc.wq->thr_name() << dendl;
+       return r;
+      }
+      if (perfcounter) {
+        perfcounter->inc(l_rgw_lc_expire_current, 1);
+      }
+      ldout(oc.cct, 2) << "DELETED:" << oc.bucket_info.bucket << ":" << o.key
+                      << " " << oc.wq->thr_name() << dendl;
     }
-    if (r < 0) {
-      ldout(oc.cct, 0) << "ERROR: remove_expired_obj " 
-      << oc.bucket_info.bucket << ":" << o.key 
-      << " " << cpp_strerror(r) << dendl;
-      return r;
-    }
-    ldout(oc.cct, 2) << "DELETED:" << oc.bucket_info.bucket << ":" << o.key << dendl;
     return 0;
   }
 };
 
 class LCOpAction_NonCurrentExpiration : public LCOpAction {
+protected:
 public:
+  LCOpAction_NonCurrentExpiration(op_env& env)
+    {}
+
   bool check(lc_op_ctx& oc, ceph::real_time *exp_time) override {
     auto& o = oc.o;
     if (o.is_current()) {
-      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": current version, skipping" << dendl;
+      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key
+                       << ": current version, skipping "
+                       << oc.wq->thr_name() << dendl;
       return false;
     }
 
-    auto mtime = oc.ol.get_prev_obj().meta.mtime;
     int expiration = oc.op.noncur_expiration;
-    bool is_expired = obj_has_expired(oc.cct, mtime, expiration, exp_time);
+    bool is_expired = obj_has_expired(oc.cct, oc.effective_mtime, expiration,
+                                     exp_time);
+
+    ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": is_expired="
+                     << is_expired << " "
+                     << oc.wq->thr_name() << dendl;
 
-    ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": is_expired=" << is_expired << dendl;
     return is_expired &&
       pass_object_lock_check(oc.store->getRados(),
                             oc.bucket_info, oc.obj, oc.rctx);
@@ -987,26 +1144,37 @@ public:
     int r = remove_expired_obj(oc, true);
     if (r < 0) {
       ldout(oc.cct, 0) << "ERROR: remove_expired_obj (non-current expiration) " 
-      << oc.bucket_info.bucket << ":" << o.key 
-      << " " << cpp_strerror(r) << dendl;
+                      << oc.bucket_info.bucket << ":" << o.key 
+                      << " " << cpp_strerror(r)
+                      << " " << oc.wq->thr_name() << dendl;
       return r;
     }
-    ldout(oc.cct, 2) << "DELETED:" << oc.bucket_info.bucket << ":" << o.key << " (non-current expiration)" << dendl;
+    if (perfcounter) {
+      perfcounter->inc(l_rgw_lc_expire_noncurrent, 1);
+    }
+    ldout(oc.cct, 2) << "DELETED:" << oc.bucket_info.bucket << ":" << o.key
+                    << " (non-current expiration) "
+                    << oc.wq->thr_name() << dendl;
     return 0;
   }
 };
 
 class LCOpAction_DMExpiration : public LCOpAction {
 public:
+  LCOpAction_DMExpiration(op_env& env) {}
+
   bool check(lc_op_ctx& oc, ceph::real_time *exp_time) override {
     auto& o = oc.o;
     if (!o.is_delete_marker()) {
-      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": not a delete marker, skipping" << dendl;
+      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key
+                       << ": not a delete marker, skipping "
+                       << oc.wq->thr_name() << dendl;
       return false;
     }
-
-    if (oc.ol.next_has_same_name()) {
-      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": next is same object, skipping" << dendl;
+    if (oc.next_has_same_name(o.key.name)) {
+      ldout(oc.cct, 20) << __func__ << "(): key=" << o.key
+                       << ": next is same object, skipping "
+                       << oc.wq->thr_name() << dendl;
       return false;
     }
 
@@ -1020,11 +1188,18 @@ public:
     int r = remove_expired_obj(oc, true);
     if (r < 0) {
       ldout(oc.cct, 0) << "ERROR: remove_expired_obj (delete marker expiration) "
-      << oc.bucket_info.bucket << ":" << o.key
-      << " " << cpp_strerror(r) << dendl;
+                      << oc.bucket_info.bucket << ":" << o.key
+                      << " " << cpp_strerror(r)
+                      << " " << oc.wq->thr_name()
+                      << dendl;
       return r;
     }
-    ldout(oc.cct, 2) << "DELETED:" << oc.bucket_info.bucket << ":" << o.key << " (delete marker expiration)" << dendl;
+    if (perfcounter) {
+      perfcounter->inc(l_rgw_lc_expire_dm, 1);
+    }
+    ldout(oc.cct, 2) << "DELETED:" << oc.bucket_info.bucket << ":" << o.key
+                    << " (delete marker expiration) "
+                    << oc.wq->thr_name() << dendl;
     return 0;
   }
 };
@@ -1055,7 +1230,9 @@ public:
     bool is_expired;
     if (transition.days < 0) {
       if (transition.date == boost::none) {
-        ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": no transition day/date set in rule, skipping" << dendl;
+        ldout(oc.cct, 20) << __func__ << "(): key=" << o.key
+                         << ": no transition day/date set in rule, skipping "
+                         << oc.wq->thr_name() << dendl;
         return false;
       }
       is_expired = ceph_clock_now() >=
@@ -1065,7 +1242,9 @@ public:
       is_expired = obj_has_expired(oc.cct, mtime, transition.days, exp_time);
     }
 
-    ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": is_expired=" << is_expired << dendl;
+    ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": is_expired="
+                     << is_expired << " "
+                     << oc.wq->thr_name() << dendl;
 
     need_to_process =
       (rgw_placement_rule::get_canonical_storage_class(o.meta.storage_class) !=
@@ -1087,9 +1266,11 @@ public:
 
     if (!oc.store->svc()->zone->get_zone_params().
        valid_placement(target_placement)) {
-      ldpp_dout(oc.dpp, 0) << "ERROR: non existent dest placement: " << target_placement
+      ldpp_dout(oc.dpp, 0) << "ERROR: non existent dest placement: "
+                          << target_placement
                            << " bucket="<< oc.bucket_info.bucket
-                           << " rule_id=" << oc.op.id << dendl;
+                           << " rule_id=" << oc.op.id
+                          << " " << oc.wq->thr_name() << dendl;
       return -EINVAL;
     }
 
@@ -1098,12 +1279,16 @@ public:
       o.versioned_epoch, oc.dpp, null_yield);
     if (r < 0) {
       ldpp_dout(oc.dpp, 0) << "ERROR: failed to transition obj " 
-      << oc.bucket_info.bucket << ":" << o.key 
-      << " -> " << transition.storage_class 
-      << " " << cpp_strerror(r) << dendl;
+                          << oc.bucket_info.bucket << ":" << o.key 
+                          << " -> " << transition.storage_class 
+                          << " " << cpp_strerror(r)
+                          << " " << oc.wq->thr_name() << dendl;
       return r;
     }
-    ldpp_dout(oc.dpp, 2) << "TRANSITIONED:" << oc.bucket_info.bucket << ":" << o.key << " -> " << transition.storage_class << dendl;
+    ldpp_dout(oc.dpp, 2) << "TRANSITIONED:" << oc.bucket_info.bucket
+                        << ":" << o.key << " -> "
+                        << transition.storage_class
+                        << " " << oc.wq->thr_name() << dendl;
     return 0;
   }
 };
@@ -1120,6 +1305,15 @@ protected:
 public:
   LCOpAction_CurrentTransition(const transition_action& _transition)
     : LCOpAction_Transition(_transition) {}
+    int process(lc_op_ctx& oc) {
+      int r = LCOpAction_Transition::process(oc);
+      if (r == 0) {
+        if (perfcounter) {
+          perfcounter->inc(l_rgw_lc_transition_current, 1);
+        }
+      }
+      return r;
+    }
 };
 
 class LCOpAction_NonCurrentTransition : public LCOpAction_Transition {
@@ -1129,11 +1323,22 @@ protected:
   }
 
   ceph::real_time get_effective_mtime(lc_op_ctx& oc) override {
-    return oc.ol.get_prev_obj().meta.mtime;
+    return oc.effective_mtime;
   }
 public:
-  LCOpAction_NonCurrentTransition(const transition_action& _transition)
-    : LCOpAction_Transition(_transition) {}
+  LCOpAction_NonCurrentTransition(op_env& env,
+                                 const transition_action& _transition)
+    : LCOpAction_Transition(_transition)
+    {}
+    int process(lc_op_ctx& oc) {
+      int r = LCOpAction_Transition::process(oc);
+      if (r == 0) {
+        if (perfcounter) {
+          perfcounter->inc(l_rgw_lc_transition_noncurrent, 1);
+        }
+      }
+      return r;
+    }
 };
 
 void LCOpRule::build()
@@ -1144,15 +1349,15 @@ void LCOpRule::build()
 
   if (op.expiration > 0 ||
       op.expiration_date != boost::none) {
-    actions.emplace_back(new LCOpAction_CurrentExpiration);
+    actions.emplace_back(new LCOpAction_CurrentExpiration(env));
   }
 
   if (op.dm_expiration) {
-    actions.emplace_back(new LCOpAction_DMExpiration);
+    actions.emplace_back(new LCOpAction_DMExpiration(env));
   }
 
   if (op.noncur_expiration > 0) {
-    actions.emplace_back(new LCOpAction_NonCurrentExpiration);
+    actions.emplace_back(new LCOpAction_NonCurrentExpiration(env));
   }
 
   for (auto& iter : op.transitions) {
@@ -1160,15 +1365,22 @@ void LCOpRule::build()
   }
 
   for (auto& iter : op.noncur_transitions) {
-    actions.emplace_back(new LCOpAction_NonCurrentTransition(iter.second));
+    actions.emplace_back(new LCOpAction_NonCurrentTransition(env, iter.second));
   }
 }
 
-int LCOpRule::process(rgw_bucket_dir_entry& o, const DoutPrefixProvider *dpp)
+void LCOpRule::update()
 {
-  lc_op_ctx ctx(env, o, dpp);
+  next_key_name = env.ol.next_key_name();
+  effective_mtime = env.ol.get_prev_obj().meta.mtime;
+}
 
-  unique_ptr<LCOpAction> *selected = nullptr;
+int LCOpRule::process(rgw_bucket_dir_entry& o,
+                     const DoutPrefixProvider *dpp,
+                     WorkQ* wq)
+{
+  lc_op_ctx ctx(env, o, next_key_name, effective_mtime, dpp, wq);
+  shared_ptr<LCOpAction> *selected = nullptr; // n.b., req'd by sharing
   real_time exp;
 
   for (auto& a : actions) {
@@ -1203,25 +1415,30 @@ int LCOpRule::process(rgw_bucket_dir_entry& o, const DoutPrefixProvider *dpp)
     }
 
     if (!cont) {
-      ldpp_dout(dpp, 20) << __func__ << "(): key=" << o.key << ": no rule match, skipping" << dendl;
+      ldpp_dout(dpp, 20) << __func__ << "(): key=" << o.key
+                        << ": no rule match, skipping "
+                        << " " << wq->thr_name() << dendl;
       return 0;
     }
 
     int r = (*selected)->process(ctx);
     if (r < 0) {
       ldpp_dout(dpp, 0) << "ERROR: remove_expired_obj " 
-      << env.bucket_info.bucket << ":" << o.key
-      << " " << cpp_strerror(r) << dendl;
+                       << env.bucket_info.bucket << ":" << o.key
+                       << " " << cpp_strerror(r)
+                       << " " << wq->thr_name() << dendl;
       return r;
     }
-    ldpp_dout(dpp, 20) << "processed:" << env.bucket_info.bucket << ":" << o.key << dendl;
+    ldpp_dout(dpp, 20) << "processed:" << env.bucket_info.bucket << ":"
+                      << o.key << " " << wq->thr_name() << dendl;
   }
 
   return 0;
 
 }
 
-int RGWLC::bucket_lc_process(string& shard_id, LCWorker* worker)
+int RGWLC::bucket_lc_process(string& shard_id, LCWorker* worker,
+                            time_t stop_at, bool once)
 {
   RGWLifecycleConfiguration  config(cct);
   RGWBucketInfo bucket_info;
@@ -1237,13 +1454,22 @@ int RGWLC::bucket_lc_process(string& shard_id, LCWorker* worker)
     store->svc(), bucket_tenant, bucket_name, bucket_info, NULL, null_yield,
     &bucket_attrs);
   if (ret < 0) {
-    ldpp_dout(this, 0) << "LC:get_bucket_info for " << bucket_name << " failed" << dendl;
+    ldpp_dout(this, 0) << "LC:get_bucket_info for " << bucket_name
+                      << " failed" << dendl;
     return ret;
   }
 
+  auto stack_guard = make_scope_guard(
+    [&worker, &bucket_info]
+      {
+       worker->workpool->drain();
+      }
+    );
+
   if (bucket_info.bucket.marker != bucket_marker) {
-    ldpp_dout(this, 1) << "LC: deleting stale entry found for bucket=" << bucket_tenant
-                       << ":" << bucket_name << " cur_marker=" << bucket_info.bucket.marker
+    ldpp_dout(this, 1) << "LC: deleting stale entry found for bucket="
+                      << bucket_tenant << ":" << bucket_name
+                      << " cur_marker=" << bucket_info.bucket.marker
                        << " orig_marker=" << bucket_marker << dendl;
     return -ENOENT;
   }
@@ -1258,21 +1484,24 @@ int RGWLC::bucket_lc_process(string& shard_id, LCWorker* worker)
   try {
       config.decode(iter);
     } catch (const buffer::error& e) {
-      ldpp_dout(this, 0) << __func__ <<  "() decode life cycle config failed" << dendl;
+      ldpp_dout(this, 0) << __func__ <<  "() decode life cycle config failed"
+                        << dendl;
       return -1;
     }
 
-  auto pf = [](RGWLC::LCWorker* wk, WorkItem& wi) {
+  auto pf = [](RGWLC::LCWorker* wk, WorkQ* wq, WorkItem& wi) {
     auto wt =
-      boost::get<std::tuple<LCOpRule&, rgw_bucket_dir_entry>>(wi);
+      boost::get<std::tuple<LCOpRule, rgw_bucket_dir_entry>>(wi);
     auto& [op_rule, o] = wt;
+
     ldpp_dout(wk->get_lc(), 20)
-      << __func__ << "(): key=" << o.key << dendl;
-    std::cout << "KEY2: " << o.key << std::endl;
-    int ret = op_rule.process(o, wk->dpp);
+      << __func__ << "(): key=" << o.key << wq->thr_name() 
+      << dendl;
+    int ret = op_rule.process(o, wk->dpp, wq);
     if (ret < 0) {
       ldpp_dout(wk->get_lc(), 20)
        << "ERROR: orule.process() returned ret=" << ret
+       << wq->thr_name() 
        << dendl;
     }
   };
@@ -1287,11 +1516,20 @@ int RGWLC::bucket_lc_process(string& shard_id, LCWorker* worker)
   rgw_obj_key next_marker;
   for(auto prefix_iter = prefix_map.begin(); prefix_iter != prefix_map.end();
       ++prefix_iter) {
+
+    if (worker_should_stop(stop_at, once)) {
+      ldout(cct, 5) << __func__ << " interval budget EXPIRED worker "
+                    << worker->ix
+                    << dendl;
+      return 0;
+    }
+
     auto& op = prefix_iter->second;
     if (!is_valid_op(op)) {
       continue;
     }
-    ldpp_dout(this, 20) << __func__ << "(): prefix=" << prefix_iter->first << dendl;
+    ldpp_dout(this, 20) << __func__ << "(): prefix=" << prefix_iter->first
+                       << dendl;
     if (prefix_iter != prefix_map.begin() && 
         (prefix_iter->first.compare(0, prev(prefix_iter)->first.length(),
                                    prev(prefix_iter)->first) == 0)) {
@@ -1314,25 +1552,21 @@ int RGWLC::bucket_lc_process(string& shard_id, LCWorker* worker)
     op_env oenv(op, store, worker, bucket_info, ol);
     LCOpRule orule(oenv);
     orule.build(); // why can't ctor do it?
-#if 0
-    /* would permit passing o by reference, removes fetch overlap */
-    auto fetch_barrier = [&worker]()
-                          { worker->workpool->drain(); };
-#endif
     rgw_bucket_dir_entry* o{nullptr};
     for (; ol.get_obj(&o /* , fetch_barrier */); ol.next()) {
-      std::tuple<LCOpRule&, rgw_bucket_dir_entry> t1 = {orule, *o};
+      orule.update();
+      std::tuple<LCOpRule, rgw_bucket_dir_entry> t1 = {orule, *o};
       worker->workpool->enqueue(WorkItem{t1});
     }
     worker->workpool->drain();
   }
 
-  ret = handle_multipart_expiration(&target, prefix_map, worker);
+  ret = handle_multipart_expiration(&target, prefix_map, worker, stop_at, once);
   return ret;
 }
 
 int RGWLC::bucket_lc_post(int index, int max_lock_sec,
-                         pair<string, int>& entry, int& result,
+                         cls_rgw_lc_entry& entry, int& result,
                          LCWorker* worker)
 {
   utime_t lock_duration(cct->_conf->rgw_lc_lock_max_time, 0);
@@ -1341,18 +1575,24 @@ int RGWLC::bucket_lc_post(int index, int max_lock_sec,
   l.set_cookie(cookie);
   l.set_duration(lock_duration);
 
+  dout(5) << "RGWLC::bucket_lc_post(): POST " << entry
+         << " index: " << index << " worker ix: " << worker->ix
+         << dendl;
+
   do {
     int ret = l.lock_exclusive(
       &store->getRados()->lc_pool_ctx, obj_names[index]);
-    if (ret == -EBUSY || ret == -EEXIST) { /* already locked by another lc processor */
+    if (ret == -EBUSY || ret == -EEXIST) {
+      /* already locked by another lc processor */
       ldpp_dout(this, 0) << "RGWLC::bucket_lc_post() failed to acquire lock on "
-          << obj_names[index] << ", sleep 5, try again" << dendl;
+                        << obj_names[index] << ", sleep 5, try again " << dendl;
       sleep(5);
       continue;
     }
     if (ret < 0)
       return 0;
-    ldpp_dout(this, 20) << "RGWLC::bucket_lc_post() lock " << obj_names[index] << dendl;
+    ldpp_dout(this, 20) << "RGWLC::bucket_lc_post() lock " << obj_names[index]
+                       << dendl;
     if (result ==  -ENOENT) {
       ret = cls_rgw_lc_rm_entry(store->getRados()->lc_pool_ctx,
                                obj_names[index],  entry);
@@ -1362,9 +1602,9 @@ int RGWLC::bucket_lc_post(int index, int max_lock_sec,
       }
       goto clean;
     } else if (result < 0) {
-      entry.second = lc_failed;
+      entry.status = lc_failed;
     } else {
-      entry.second = lc_complete;
+      entry.status = lc_complete;
     }
 
     ret = cls_rgw_lc_set_entry(store->getRados()->lc_pool_ctx,
@@ -1375,18 +1615,19 @@ int RGWLC::bucket_lc_post(int index, int max_lock_sec,
     }
 clean:
     l.unlock(&store->getRados()->lc_pool_ctx, obj_names[index]);
-    ldpp_dout(this, 20) << "RGWLC::bucket_lc_post() unlock " << obj_names[index] << dendl;
+    ldpp_dout(this, 20) << "RGWLC::bucket_lc_post() unlock "
+                       << obj_names[index] << dendl;
     return 0;
   } while (true);
 }
 
-int RGWLC::list_lc_progress(const string& marker, uint32_t max_entries,
-                           map<string, int>* progress_map)
+int RGWLC::list_lc_progress(string& marker, uint32_t max_entries,
+                           vector<cls_rgw_lc_entry>& progress_map,
+                           int& index)
 {
-  int index = 0;
-  progress_map->clear();
-  for(; index <max_objs; index++) {
-    map<string, int > entries;
+  progress_map.clear();
+  for(; index < max_objs; index++, marker="") {
+    vector<cls_rgw_lc_entry> entries;
     int ret =
       cls_rgw_lc_list(store->getRados()->lc_pool_ctx, obj_names[index], marker,
                      max_entries, entries);
@@ -1399,10 +1640,15 @@ int RGWLC::list_lc_progress(const string& marker, uint32_t max_entries,
         return ret;
       }
     }
-    map<string, int>::iterator iter;
-    for (iter = entries.begin(); iter != entries.end(); ++iter) {
-      progress_map->insert(*iter);
-    }
+    progress_map.reserve(progress_map.size() + entries.size());
+    progress_map.insert(progress_map.end(), entries.begin(), entries.end());
+
+    /* update index, marker tuple */
+    if (progress_map.size() > 0)
+      marker = progress_map.back().bucket;
+
+    if (progress_map.size() >= max_entries)
+      break;
   }
   return 0;
 }
@@ -1418,7 +1664,7 @@ static inline vector<int> random_sequence(uint32_t n)
   return v;
 }
 
-int RGWLC::process(LCWorker* worker)
+int RGWLC::process(LCWorker* worker, bool once = false)
 {
   int max_secs = cct->_conf->rgw_lc_lock_max_time;
 
@@ -1426,7 +1672,7 @@ int RGWLC::process(LCWorker* worker)
    * that might be running in parallel */
   vector<int> shard_seq = random_sequence(max_objs);
   for (auto index : shard_seq) {
-    int ret = process(index, max_secs, worker);
+    int ret = process(index, max_secs, worker, once);
     if (ret < 0)
       return ret;
   }
@@ -1434,12 +1680,44 @@ int RGWLC::process(LCWorker* worker)
   return 0;
 }
 
-int RGWLC::process(int index, int max_lock_secs, LCWorker* worker)
+bool RGWLC::expired_session(time_t started)
 {
+  time_t interval = (cct->_conf->rgw_lc_debug_interval > 0)
+    ? cct->_conf->rgw_lc_debug_interval
+    : 24*60*60;
+
+  auto now = time(nullptr);
+
+  dout(16) << "RGWLC::expired_session"
+          << " started: " << started
+          << " interval: " << interval << "(*2==" << 2*interval << ")"
+          << " now: " << now
+          << dendl;
+
+  return (started + 2*interval < now);
+}
+
+time_t RGWLC::thread_stop_at()
+{
+  uint64_t interval = (cct->_conf->rgw_lc_debug_interval > 0)
+    ? cct->_conf->rgw_lc_debug_interval
+    : 24*60*60;
+
+  return time(nullptr) + interval;
+}
+
+int RGWLC::process(int index, int max_lock_secs, LCWorker* worker,
+  bool once = false)
+{
+  dout(5) << "RGWLC::process(): ENTER: "
+         << "index: " << index << " worker ix: " << worker->ix
+         << dendl;
+
   rados::cls::lock::Lock l(lc_index_lock_name);
   do {
     utime_t now = ceph_clock_now();
-    pair<string, int > entry;//string = bucket_name:bucket_id ,int = LC_BUCKET_STATUS
+    //string = bucket_name:bucket_id, start_time, int = LC_BUCKET_STATUS
+    cls_rgw_lc_entry entry;
     if (max_lock_secs <= 0)
       return -EAGAIN;
 
@@ -1448,7 +1726,8 @@ int RGWLC::process(int index, int max_lock_secs, LCWorker* worker)
 
     int ret = l.lock_exclusive(&store->getRados()->lc_pool_ctx,
                               obj_names[index]);
-    if (ret == -EBUSY || ret == -EEXIST) { /* already locked by another lc processor */
+    if (ret == -EBUSY || ret == -EEXIST) {
+      /* already locked by another lc processor */
       ldpp_dout(this, 0) << "RGWLC::process() failed to acquire lock on "
           << obj_names[index] << ", sleep 5, try again" << dendl;
       sleep(5);
@@ -1466,7 +1745,28 @@ int RGWLC::process(int index, int max_lock_secs, LCWorker* worker)
       goto exit;
     }
 
-    if(!if_already_run_today(head.start_date)) {
+    if (! (cct->_conf->rgw_lc_lock_max_time == 9969)) {
+      ret = cls_rgw_lc_get_entry(store->getRados()->lc_pool_ctx,
+                                obj_names[index], head.marker, entry);
+      if (ret >= 0) {
+       if (entry.status == lc_processing) {
+         if (expired_session(entry.start_time)) {
+           dout(5) << "RGWLC::process(): STALE lc session found for: " << entry
+                   << " index: " << index << " worker ix: " << worker->ix
+                   << " (clearing)"
+                   << dendl;
+         } else {
+           dout(5) << "RGWLC::process(): ACTIVE entry: " << entry
+                   << " index: " << index << " worker ix: " << worker->ix
+                 << dendl;
+           goto exit;
+         }
+       }
+      }
+    }
+
+    if(!if_already_run_today(head.start_date) ||
+       once) {
       head.start_date = now;
       head.marker.clear();
       ret = bucket_lc_prepare(index, worker);
@@ -1488,38 +1788,46 @@ int RGWLC::process(int index, int max_lock_secs, LCWorker* worker)
     }
 
     /* termination condition (eof) */
-    if (entry.first.empty())
+    if (entry.bucket.empty())
       goto exit;
 
-    entry.second = lc_processing;
+    ldpp_dout(this, 5) << "RGWLC::process(): START entry 1: " << entry
+           << " index: " << index << " worker ix: " << worker->ix
+           << dendl;
+
+    entry.status = lc_processing;
     ret = cls_rgw_lc_set_entry(store->getRados()->lc_pool_ctx,
-                              obj_names[index],  entry);
+                              obj_names[index], entry);
     if (ret < 0) {
       ldpp_dout(this, 0) << "RGWLC::process() failed to set obj entry "
-                        << obj_names[index]
-                        << " (" << entry.first << ","
-                        << entry.second << ")"
-                        << dendl;
+             << obj_names[index] << entry.bucket << entry.status << dendl;
       goto exit;
     }
 
-    head.marker = entry.first;
-    ret = cls_rgw_lc_put_head(store->getRados()->lc_pool_ctx, obj_names[index],
-                             head);
+    head.marker = entry.bucket;
+    ret = cls_rgw_lc_put_head(store->getRados()->lc_pool_ctx,
+                             obj_names[index],  head);
     if (ret < 0) {
       ldpp_dout(this, 0) << "RGWLC::process() failed to put head "
                         << obj_names[index]
-                        << dendl;
+             << dendl;
       goto exit;
     }
+
+    ldpp_dout(this, 5) << "RGWLC::process(): START entry 2: " << entry
+           << " index: " << index << " worker ix: " << worker->ix
+           << dendl;
+
     l.unlock(&store->getRados()->lc_pool_ctx, obj_names[index]);
-    ret = bucket_lc_process(entry.first, worker);
+    ret = bucket_lc_process(entry.bucket, worker, thread_stop_at(), once);
     bucket_lc_post(index, max_lock_secs, entry, ret, worker);
-  } while(1);
+  } while(1 && !once);
+
+  return 0;
 
 exit:
-    l.unlock(&store->getRados()->lc_pool_ctx, obj_names[index]);
-    return 0;
+  l.unlock(&store->getRados()->lc_pool_ctx, obj_names[index]);
+  return 0;
 }
 
 void RGWLC::start_processor()
@@ -1528,7 +1836,7 @@ void RGWLC::start_processor()
   workers.reserve(maxw);
   for (int ix = 0; ix < maxw; ++ix) {
     auto worker  =
-      std::make_unique<RGWLC::LCWorker>(this /* dpp */, cct, this);
+      std::make_unique<RGWLC::LCWorker>(this /* dpp */, cct, this, ix);
     worker->create((string{"lifecycle_thr_"} + to_string(ix)).c_str());
     workers.emplace_back(std::move(worker));
   }
@@ -1623,7 +1931,6 @@ int RGWLC::LCWorker::schedule_next_start_time(utime_t &start, utime_t& now)
 
 RGWLC::LCWorker::~LCWorker()
 {
-  workpool->drain();
   delete workpool;
 } /* ~LCWorker */
 
@@ -1633,12 +1940,13 @@ void RGWLifecycleConfiguration::generate_test_instances(
   o.push_back(new RGWLifecycleConfiguration);
 }
 
-void get_lc_oid(CephContext *cct, const string& shard_id, string *oid)
+static inline void get_lc_oid(CephContext *cct,
+                             const string& shard_id, string *oid)
 {
   int max_objs =
     (cct->_conf->rgw_lc_max_objs > HASH_PRIME ? HASH_PRIME :
      cct->_conf->rgw_lc_max_objs);
-  /* XXXX oh noes!!! */
+  /* n.b. review hash algo */
   int index = ceph_str_hash_linux(shard_id.c_str(),
                                  shard_id.size()) % HASH_PRIME % max_objs;
   *oid = lc_oid_prefix;
@@ -1653,9 +1961,9 @@ static std::string get_lc_shard_name(const rgw_bucket& bucket){
 }
 
 template<typename F>
-static int guard_lc_modify(
-  rgw::sal::RGWRadosStore* store, const rgw_bucket& bucket,
-  const string& cookie, const F& f) {
+static int guard_lc_modify(rgw::sal::RGWRadosStore* store,
+                          const rgw_bucket& bucket, const string& cookie,
+                          const F& f) {
   CephContext *cct = store->ctx();
 
   string shard_id = get_lc_shard_name(bucket);
@@ -1663,7 +1971,10 @@ static int guard_lc_modify(
   string oid; 
   get_lc_oid(cct, shard_id, &oid);
 
-  pair<string, int> entry(shard_id, lc_uninitial);
+  /* XXX it makes sense to take shard_id for a bucket_id? */
+  cls_rgw_lc_entry entry;
+  entry.bucket = shard_id;
+  entry.status = lc_uninitial;
   int max_lock_secs = cct->_conf->rgw_lc_lock_max_time;
 
   rados::cls::lock::Lock l(lc_index_lock_name); 
@@ -1716,9 +2027,10 @@ int RGWLC::set_bucket_config(RGWBucketInfo& bucket_info,
 
   rgw_bucket& bucket = bucket_info.bucket;
 
+
   ret = guard_lc_modify(store, bucket, cookie,
                        [&](librados::IoCtx *ctx, const string& oid,
-                           const pair<string, int>& entry) {
+                           const cls_rgw_lc_entry& entry) {
     return cls_rgw_lc_set_entry(*ctx, oid, entry);
   });
 
@@ -1745,7 +2057,7 @@ int RGWLC::remove_bucket_config(RGWBucketInfo& bucket_info,
 
   ret = guard_lc_modify(store, bucket, cookie,
                        [&](librados::IoCtx *ctx, const string& oid,
-                           const pair<string, int>& entry) {
+                           const cls_rgw_lc_entry& entry) {
     return cls_rgw_lc_rm_entry(*ctx, oid, entry);
   });
 
@@ -1773,7 +2085,7 @@ int fix_lc_shard_entry(rgw::sal::RGWRadosStore* store,
   std::string lc_oid;
   get_lc_oid(store->ctx(), shard_name, &lc_oid);
 
-  rgw_lc_entry_t entry;
+  cls_rgw_lc_entry entry;
   // There are multiple cases we need to encounter here
   // 1. entry exists and is already set to marker, happens in plain buckets & newly resharded buckets
   // 2. entry doesn't exist, which usually happens when reshard has happened prior to update and next LC process has already dropped the update
@@ -1797,8 +2109,9 @@ int fix_lc_shard_entry(rgw::sal::RGWRadosStore* store,
 
     ret = guard_lc_modify(
       store, bucket_info.bucket, cookie,
-      [&lc_pool_ctx, &lc_oid](librados::IoCtx *ctx, const string& oid,
-                             const pair<string, int>& entry) {
+      [&lc_pool_ctx, &lc_oid](librados::IoCtx* ctx,
+                             const string& oid,
+                             const cls_rgw_lc_entry& entry) {
        return cls_rgw_lc_set_entry(*lc_pool_ctx, lc_oid, entry);
       });
 
@@ -1953,4 +2266,70 @@ std::string s3_expiration_header(
 
 } /* rgwlc_s3_expiration_header */
 
+bool s3_multipart_abort_header(
+  DoutPrefixProvider* dpp,
+  const rgw_obj_key& obj_key,
+  const ceph::real_time& mtime,
+  const std::map<std::string, buffer::list>& bucket_attrs,
+  ceph::real_time& abort_date,
+  std::string& rule_id)
+{
+  CephContext* cct = dpp->get_cct();
+  RGWLifecycleConfiguration config(cct);
+
+  const auto& aiter = bucket_attrs.find(RGW_ATTR_LC);
+  if (aiter == bucket_attrs.end())
+    return false;
+
+  bufferlist::const_iterator iter{&aiter->second};
+  try {
+    config.decode(iter);
+  } catch (const buffer::error& e) {
+    ldpp_dout(dpp, 0) << __func__
+                      <<  "() decode life cycle config failed"
+                      << dendl;
+    return false;
+  } /* catch */
+
+  std::optional<ceph::real_time> abort_date_tmp;
+  std::optional<std::string_view> rule_id_tmp;
+  const auto& rule_map = config.get_rule_map();
+  for (const auto& ri : rule_map) {
+    const auto& rule = ri.second;
+    const auto& id = rule.get_id();
+    const auto& filter = rule.get_filter();
+    const auto& prefix = filter.has_prefix()?filter.get_prefix():rule.get_prefix();
+    const auto& mp_expiration = rule.get_mp_expiration();
+    if (!rule.is_enabled()) {
+      continue;
+    }
+    if(!prefix.empty() && !boost::starts_with(obj_key.name, prefix)) {
+      continue;
+    }
+
+    std::optional<ceph::real_time> rule_abort_date;
+    if (mp_expiration.has_days()) {
+      rule_abort_date = std::optional<ceph::real_time>(
+              mtime + make_timespan(mp_expiration.get_days()*24*60*60 - ceph::real_clock::to_time_t(mtime)%(24*60*60) + 24*60*60));
+    }
+
+    // update earliest abort date
+    if (rule_abort_date) {
+      if ((! abort_date_tmp) ||
+          (*abort_date_tmp > *rule_abort_date)) {
+        abort_date_tmp =
+                std::optional<ceph::real_time>(rule_abort_date);
+        rule_id_tmp = std::optional<std::string_view>(id);
+      }
+    }
+  }
+  if (abort_date_tmp && rule_id_tmp) {
+    abort_date = *abort_date_tmp;
+    rule_id = *rule_id_tmp;
+    return true;
+  } else {
+    return false;
+  }
+}
+
 } /* namespace rgw::lc */
index 57f02a63e81f61f5046b2ddf015d812a93e1628b..60f3863fc837e942b03a89398e16cb576714b29e 100644 (file)
@@ -467,12 +467,18 @@ public:
     const DoutPrefixProvider *dpp;
     CephContext *cct;
     RGWLC *lc;
-    ceph::mutex lock = ceph::make_mutex("LCWorker");
-    ceph::condition_variable cond;
+    int ix;
+    std::mutex lock;
+    std::condition_variable cond;
     WorkPool* workpool{nullptr};
 
   public:
-    LCWorker(const DoutPrefixProvider* _dpp, CephContext *_cct, RGWLC *_lc);
+
+    using lock_guard = std::lock_guard<std::mutex>;
+    using unique_lock = std::unique_lock<std::mutex>;
+
+    LCWorker(const DoutPrefixProvider* dpp, CephContext *_cct, RGWLC *_lc,
+            int ix);
     RGWLC* get_lc() { return lc; }
     void *entry() override;
     void stop();
@@ -482,6 +488,7 @@ public:
 
     friend class RGWRados;
     friend class RGWLC;
+    friend class WorkQ;
   }; /* LCWorker */
 
   friend class RGWRados;
@@ -494,13 +501,18 @@ public:
   void initialize(CephContext *_cct, rgw::sal::RGWRadosStore *_store);
   void finalize();
 
-  int process(LCWorker* worker);
-  int process(int index, int max_secs, LCWorker* worker);
-  bool if_already_run_today(time_t& start_date);
-  int list_lc_progress(const string& marker, uint32_t max_entries, map<string, int> *progress_map);
+  int process(LCWorker* worker, bool once);
+  int process(int index, int max_secs, LCWorker* worker, bool once);
+  bool if_already_run_today(time_t start_date);
+  bool expired_session(time_t started);
+  time_t thread_stop_at();
+  int list_lc_progress(string& marker, uint32_t max_entries,
+                      vector<cls_rgw_lc_entry>&, int& index);
   int bucket_lc_prepare(int index, LCWorker* worker);
-  int bucket_lc_process(string& shard_id, LCWorker* worker);
-  int bucket_lc_post(int index, int max_lock_sec, pair<string, int >& entry, int& result, LCWorker* worker);
+  int bucket_lc_process(string& shard_id, LCWorker* worker, time_t stop_at,
+                       bool once);
+  int bucket_lc_post(int index, int max_lock_sec,
+                    cls_rgw_lc_entry& entry, int& result, LCWorker* worker);
   bool going_down();
   void start_processor();
   void stop_processor();
@@ -518,7 +530,7 @@ public:
 
   int handle_multipart_expiration(RGWRados::Bucket *target,
                                  const multimap<string, lc_op>& prefix_map,
-                                 LCWorker* worker);
+                                 LCWorker* worker, time_t stop_at, bool once);
 };
 
 namespace rgw::lc {
@@ -533,6 +545,14 @@ std::string s3_expiration_header(
   const ceph::real_time& mtime,
   const std::map<std::string, buffer::list>& bucket_attrs);
 
+bool s3_multipart_abort_header(
+  DoutPrefixProvider* dpp,
+  const rgw_obj_key& obj_key,
+  const ceph::real_time& mtime,
+  const std::map<std::string, buffer::list>& bucket_attrs,
+  ceph::real_time& abort_date,
+  std::string& rule_id);
+
 } // namespace rgw::lc
 
 #endif
index e50b5a7161a66ecf94b71c1e4bd70eb7fa428d0a..6102d2d621954fe9617013eb51f8c13ec4417800 100644 (file)
@@ -600,10 +600,11 @@ int radosgw_Main(int argc, const char **argv)
   // add a watcher to respond to realm configuration changes
   RGWPeriodPusher pusher(store);
   RGWFrontendPauser pauser(fes, implicit_tenant_context, &pusher);
-  RGWRealmReloader reloader(store, service_map_meta, &pauser);
+  auto reloader = std::make_unique<RGWRealmReloader>(store,
+                                                    service_map_meta, &pauser);
 
   RGWRealmWatcher realm_watcher(g_ceph_context, store->svc()->zone->get_realm());
-  realm_watcher.add_watcher(RGWRealmNotify::Reload, reloader);
+  realm_watcher.add_watcher(RGWRealmNotify::Reload, *reloader);
   realm_watcher.add_watcher(RGWRealmNotify::ZonesNeedPeriod, pusher);
 
 #if defined(HAVE_SYS_PRCTL_H)
@@ -616,6 +617,8 @@ int radosgw_Main(int argc, const char **argv)
 
   derr << "shutting down" << dendl;
 
+  reloader.reset(); // stop the realm reloader
+
   for (list<RGWFrontend *>::iterator liter = fes.begin(); liter != fes.end();
        ++liter) {
     RGWFrontend *fe = *liter;
index 51e21fe361237b7b529d991606504a9d9deafc28..e816d84a51d59b40d730bde5cb8aea47ee379acb 100644 (file)
@@ -2143,7 +2143,7 @@ int RGWGetObj::get_data_cb(bufferlist& bl, off_t bl_ofs, off_t bl_len)
 bool RGWGetObj::prefetch_data()
 {
   /* HEAD request, stop prefetch*/
-  if (!get_data) {
+  if (!get_data || s->info.env->exists("HTTP_X_RGW_AUTH")) {
     return false;
   }
 
@@ -2245,7 +2245,10 @@ void RGWGetObj::execute()
   if (get_type() == RGW_OP_STAT_OBJ) {
     return;
   }
-
+  if (s->info.env->exists("HTTP_X_RGW_AUTH")) {
+    op_ret = 0;
+    goto done_err;
+  }
   /* start gettorrent */
   if (torrent.get_flag())
   {
@@ -2589,16 +2592,18 @@ void RGWStatAccount::execute()
   string marker;
   rgw::sal::RGWBucketList buckets;
   uint64_t max_buckets = s->cct->_conf->rgw_list_buckets_max_chunk;
+  const string *lastmarker;
 
   do {
 
+    lastmarker = nullptr;
     op_ret = rgw_read_user_buckets(store, s->user->get_id(), buckets, marker,
                                   string(), max_buckets, true);
     if (op_ret < 0) {
       /* hmm.. something wrong here.. the user was authenticated, so it
          should exist */
-      ldpp_dout(this, 10) << "WARNING: failed on rgw_get_user_buckets uid="
-                       << s->user->get_id() << dendl;
+      ldpp_dout(this, 10) << "WARNING: failed on rgw_read_user_buckets uid="
+                       << s->user->get_id() << " ret=" << op_ret << dendl;
       break;
     } else {
       /* We need to have stats for all our policies - even if a given policy
@@ -2612,6 +2617,7 @@ void RGWStatAccount::execute()
       std::map<std::string, rgw::sal::RGWBucket*>& m = buckets.get_buckets();
       for (const auto& kv : m) {
         const auto& bucket = kv.second;
+       lastmarker = &kv.first;
 
         global_stats.bytes_used += bucket->get_size();
         global_stats.bytes_used_rounded += bucket->get_size_rounded();
@@ -2628,6 +2634,12 @@ void RGWStatAccount::execute()
       global_stats.buckets_count += m.size();
 
     }
+    if (!lastmarker) {
+       lderr(s->cct) << "ERROR: rgw_read_user_buckets, stasis at marker="
+             << marker << " uid=" << s->user->get_id() << dendl;
+       break;
+    }
+    marker = *lastmarker;
   } while (buckets.is_truncated());
 }
 
@@ -5243,6 +5255,24 @@ void RGWCopyObj::execute()
 
   encode_delete_at_attr(delete_at, attrs);
 
+  if (!s->system_request) { // no quota enforcement for system requests
+    // get src object size (cached in obj_ctx from verify_permission())
+    RGWObjState* astate = nullptr;
+    op_ret = store->getRados()->get_obj_state(s->obj_ctx, src_bucket_info, src_obj,
+                                              &astate, true, s->yield, false);
+    if (op_ret < 0) {
+      return;
+    }
+    // enforce quota against the destination bucket owner
+    op_ret = store->getRados()->check_quota(dest_bucket_info.owner,
+                                            dest_bucket_info.bucket,
+                                            user_quota, bucket_quota,
+                                            astate->accounted_size);
+    if (op_ret < 0) {
+      return;
+    }
+  }
+
   bool high_precision_time = (s->system_request);
 
   /* Handle object versioning of Swift API. In case of copying to remote this
@@ -5946,6 +5976,7 @@ void RGWInitMultipart::execute()
     obj_op.meta.owner = s->owner.get_id();
     obj_op.meta.category = RGWObjCategory::MultiMeta;
     obj_op.meta.flags = PUT_OBJ_CREATE_EXCL;
+    obj_op.meta.mtime = &mtime;
 
     multipart_upload_info upload_info;
     upload_info.dest_placement = s->dest_placement;
index dc554a37b714b00583b51773c796cb28e3620699..494e6c1611a084a5f45a7747880ebe3f33194b4c 100644 (file)
@@ -1717,6 +1717,7 @@ class RGWInitMultipart : public RGWOp {
 protected:
   string upload_id;
   RGWAccessControlPolicy policy;
+  ceph::real_time mtime;
 
 public:
   RGWInitMultipart() {}
index 79ba8784d04ce1c49a702d0405ced151d24c4e84..96cc5841c1d01bf63f16e0cc9e0dcd91efd060e5 100644 (file)
@@ -45,6 +45,7 @@ int rgw_opa_authorize(RGWOp *& op,
   jf.dump_string("params", s->info.request_params.c_str());
   jf.dump_string("request_uri_aws4", s->info.request_uri_aws4.c_str());
   jf.dump_string("object_name", s->object.name.c_str());
+  jf.dump_string("subuser", s->auth.identity->get_subuser().c_str());
   jf.dump_object("user_info", s->user->get_info());
   jf.dump_object("bucket_info", s->bucket_info);
   jf.close_section();
index 228ed95d419b6bc2f6d6bd5d85bcb852c93715c5..f9bffb7ca38c8e270e7cc3b6a733bb3b142fa9f3 100644 (file)
@@ -1459,20 +1459,14 @@ int RGWRadosList::do_incomplete_multipart(
 
   RGWRados::Bucket target(store->getRados(), bucket_info);
   RGWRados::Bucket::List list_op(&target);
+  list_op.params.ns = mp_ns;
+  list_op.params.filter = &mp_filter;
+  // use empty string for initial list_op.params.marker
+  // use empty strings for list_op.params.{prefix,delim}
 
   bool is_listing_truncated;
-  std::string empty_string;
-  RGWMultipartUploadEntry next_uploads_marker;
 
   do {
-    RGWMPObj uploads_marker = next_uploads_marker.mp;
-    const std::string& marker_meta = uploads_marker.get_meta();
-    list_op.params.marker = marker_meta;
-    list_op.params.ns = mp_ns;
-    list_op.params.filter = &mp_filter;
-
-    // use empty strings for list_op.params.{prefix,delim}
-
     std::vector<rgw_bucket_dir_entry> objs;
     std::map<string, bool> common_prefixes;
     ret = list_op.list_objects(max_uploads, &objs, &common_prefixes,
@@ -1504,10 +1498,8 @@ int RGWRadosList::do_incomplete_multipart(
          " processing incomplete multipart entry " <<
          entry << dendl;
       }
-      next_uploads_marker = entry;
 
       // now process the uploads vector
-
       int parts_marker = 0;
       bool is_parts_truncated = false;
       do {
@@ -1540,7 +1532,7 @@ int RGWRadosList::do_incomplete_multipart(
        }
       } while (is_parts_truncated);
     } // if objs not empty
-  } while(is_listing_truncated);
+  } while (is_listing_truncated);
 
   return 0;
 } // RGWRadosList::do_incomplete_multipart
index 951bf54fee7b26175ada432156c576fd85e0b8cb..3336c4855e044afb3ba2ec0b39327c102cf5072c 100644 (file)
@@ -35,7 +35,20 @@ int rgw_perf_start(CephContext *cct)
   plb.add_u64_counter(l_rgw_keystone_token_cache_miss, "keystone_token_cache_miss", "Keystone token cache miss");
 
   plb.add_u64_counter(l_rgw_gc_retire, "gc_retire_object", "GC object retires");
-  plb.add_u64_counter(l_rgw_lc_remove_expired, "lc_remove_expired", "LC removed objects");
+
+  plb.add_u64_counter(l_rgw_lc_expire_current, "lc_expire_current",
+                     "Lifecycle current expiration");
+  plb.add_u64_counter(l_rgw_lc_expire_noncurrent, "lc_expire_noncurrent",
+                     "Lifecycle non-current expiration");
+  plb.add_u64_counter(l_rgw_lc_expire_dm, "lc_expire_dm",
+                     "Lifecycle delete-marker expiration");
+  plb.add_u64_counter(l_rgw_lc_transition_current, "lc_transition_current",
+                     "Lifecycle current transition");
+  plb.add_u64_counter(l_rgw_lc_transition_noncurrent,
+                     "lc_transition_noncurrent",
+                     "Lifecycle non-current transition");
+  plb.add_u64_counter(l_rgw_lc_abort_mpu, "lc_abort_mpu",
+                     "Lifecycle abort multipart upload");
 
   plb.add_u64_counter(l_rgw_pubsub_event_triggered, "pubsub_event_triggered", "Pubsub events with at least one topic");
   plb.add_u64_counter(l_rgw_pubsub_event_lost, "pubsub_event_lost", "Pubsub events lost");
index e07a3d9897c2a27b817a57346d0af473b3c8c93f..a3c10d9a947d2671233e882a715245ffe44226d0 100644 (file)
@@ -32,7 +32,13 @@ enum {
   l_rgw_keystone_token_cache_miss,
 
   l_rgw_gc_retire,
-  l_rgw_lc_remove_expired,
+
+  l_rgw_lc_expire_current,
+  l_rgw_lc_expire_noncurrent,
+  l_rgw_lc_expire_dm,
+  l_rgw_lc_transition_current,
+  l_rgw_lc_transition_noncurrent,
+  l_rgw_lc_abort_mpu,
 
   l_rgw_pubsub_event_triggered,
   l_rgw_pubsub_event_lost,
index dedb3002bb2f67f13a0e9fbb79359728b71933b7..4ac9ccb017c6926cf84e625d6a51de31a1ad812d 100644 (file)
@@ -566,6 +566,7 @@ int AppendObjectProcessor::prepare(optional_yield y)
     }
     cur_manifest = &(*astate->manifest);
     manifest.set_prefix(cur_manifest->get_prefix());
+    astate->keep_tail = true;
   }
   manifest.set_multipart_part_rule(store->ctx()->_conf->rgw_obj_stripe_size, cur_part_num);
 
index b8e829ddab76afdabf0b1e664f992eb55a599e26..f6e9f9c304eca9457b1f61b391b737564cc7ac82 100644 (file)
@@ -1781,14 +1781,9 @@ int RGWRados::Bucket::List::list_objects_ordered(
   }
 
   rgw_obj_index_key prev_marker;
-  uint16_t attempt = 0;
-  while (true) {
+  for (uint16_t attempt = 1; /* empty */; ++attempt) {
     ldout(cct, 20) << "RGWRados::Bucket::List::" << __func__ <<
-      " beginning attempt=" << ++attempt << dendl;
-
-    // this loop is generally expected only to have a single
-    // iteration; the standard exit is at the bottom of the loop, but
-    // there's an error condition emergency exit as well
+      " starting attempt " << attempt << dendl;
 
     if (attempt > 1 && !(prev_marker < cur_marker)) {
       // we've failed to make forward progress
@@ -1983,11 +1978,7 @@ int RGWRados::Bucket::List::list_objects_ordered(
       // few, results, return with what we have
       break;
     }
-
-    ldout(cct, 1) << "RGWRados::Bucket::List::" << __func__ <<
-      " INFO ordered bucket listing requires read #" << (1 + attempt) <<
-      dendl;
-  } // read attempt loop
+  } // for (uint16_t attempt...
 
 done:
 
@@ -8044,14 +8035,21 @@ int RGWRados::process_gc(bool expired_only)
   return gc->process(expired_only);
 }
 
-int RGWRados::list_lc_progress(const string& marker, uint32_t max_entries, map<string, int> *progress_map)
+int RGWRados::list_lc_progress(string& marker, uint32_t max_entries,
+                              vector<cls_rgw_lc_entry>& progress_map,
+                              int& index)
 {
-  return lc->list_lc_progress(marker, max_entries, progress_map);
+  return lc->list_lc_progress(marker, max_entries, progress_map, index);
 }
 
 int RGWRados::process_lc()
 {
-  return lc->process(nullptr);
+  RGWLC lc;
+  lc.initialize(cct, this->store);
+  RGWLC::LCWorker worker(&lc, cct, &lc, 0);
+  auto ret = lc.process(&worker, true /* once */);
+  lc.stop_processor(); // sets down_flag, but returns immediately
+  return ret;
 }
 
 bool RGWRados::process_expire_objects()
index e19b8d44811e63265c31c9ca79f7c85bbae9f57c..99e7cbbfd39051833b3a4dccdc57810a0bb95b9b 100644 (file)
@@ -1444,8 +1444,9 @@ public:
   int defer_gc(void *ctx, const RGWBucketInfo& bucket_info, const rgw_obj& obj, optional_yield y);
 
   int process_lc();
-  int list_lc_progress(const string& marker, uint32_t max_entries, map<string, int> *progress_map);
-  
+  int list_lc_progress(string& marker, uint32_t max_entries,
+                      vector<cls_rgw_lc_entry>& progress_map, int& index);
+
   int bucket_check_index(RGWBucketInfo& bucket_info,
                          map<RGWObjCategory, RGWStorageStats> *existing_stats,
                          map<RGWObjCategory, RGWStorageStats> *calculated_stats);
index 17c8e2b5d66a015063c3469eb7bf4fa960d35805..cb3b2c8566bddca2c7aa908363d52a9e1da52ecd 100644 (file)
@@ -414,7 +414,7 @@ void RGWGetRolePolicy::execute()
     s->formatter->open_object_section("GetRolePolicyResult");
     s->formatter->dump_string("PolicyName", policy_name);
     s->formatter->dump_string("RoleName", role_name);
-    s->formatter->dump_string("Permission policy", perm_policy);
+    s->formatter->dump_string("PolicyDocument", perm_policy);
     s->formatter->close_section();
     s->formatter->close_section();
   }
index 0de040968c7c85d2ce4f9b2683766aaa21c0a3d4..e5a4253fa5c762383920bccd1d3e4a88327a73a1 100644 (file)
@@ -6,6 +6,7 @@
 #include <string.h>
 
 #include "common/ceph_crypto.h"
+#include "common/split.h"
 #include "common/Formatter.h"
 #include "common/utf8.h"
 #include "common/ceph_json.h"
@@ -106,6 +107,14 @@ static inline std::string get_s3_expiration_header(
     s, s->object, s->tagset, mtime, s->bucket_attrs);
 }
 
+static inline bool get_s3_multipart_abort_header(
+  struct req_state* s, const ceph::real_time& mtime,
+  ceph::real_time& date, std::string& rule_id)
+{
+  return rgw::lc::s3_multipart_abort_header(
+          s, s->object, mtime, s->bucket_attrs, date, rule_id);
+}
+
 struct response_attr_param {
   const char *param;
   const char *http_attr;
@@ -445,6 +454,45 @@ int RGWGetObj_ObjStore_S3::get_decrypt_filter(std::unique_ptr<RGWGetObj_Filter>
   }
   return res;
 }
+int RGWGetObj_ObjStore_S3::verify_requester(const rgw::auth::StrategyRegistry& auth_registry) 
+{
+  int ret = -EINVAL;
+  ret = RGWOp::verify_requester(auth_registry);
+  if(!s->user->get_caps().check_cap("amz-cache", RGW_CAP_READ) && !ret && s->info.env->exists("HTTP_X_AMZ_CACHE"))
+    ret = override_range_hdr(auth_registry);
+  return ret;
+}
+int RGWGetObj_ObjStore_S3::override_range_hdr(const rgw::auth::StrategyRegistry& auth_registry)
+{
+  int ret = -EINVAL;
+  ldpp_dout(this, 10) << "cache override headers" << dendl;
+  RGWEnv* rgw_env = const_cast<RGWEnv *>(s->info.env);
+  const char* backup_range = rgw_env->get("HTTP_RANGE");
+  const char hdrs_split[2] = {(char)178,'\0'};
+  const char kv_split[2] = {(char)177,'\0'};
+  const char* cache_hdr = rgw_env->get("HTTP_X_AMZ_CACHE");
+  for (std::string_view hdr : ceph::split(cache_hdr, hdrs_split)) {
+    auto kv = ceph::split(hdr, kv_split);
+    auto k = kv.begin();
+    if (std::distance(k, kv.end()) != 2) {
+      return -EINVAL;
+    }
+    auto v = std::next(k);
+    std::string key = "HTTP_";
+    key.append(*k);
+    boost::replace_all(key, "-", "_");
+    rgw_env->set(std::move(key), std::string(*v));
+    ldpp_dout(this, 10) << "after splitting cache kv key: " << key  << " " << rgw_env->get(key.c_str())  << dendl;
+  }
+  ret = RGWOp::verify_requester(auth_registry);
+  if(!ret && backup_range) {
+    rgw_env->set("HTTP_RANGE",backup_range);
+  } else {
+    rgw_env->remove("HTTP_RANGE");
+  }
+  return ret;
+}
+
 
 void RGWGetObjTags_ObjStore_S3::send_response_data(bufferlist& bl)
 {
@@ -3685,6 +3733,13 @@ void RGWInitMultipart_ObjStore_S3::send_response()
   dump_errno(s);
   for (auto &it : crypt_http_responses)
      dump_header(s, it.first, it.second);
+  ceph::real_time abort_date;
+  string rule_id;
+  bool exist_multipart_abort = get_s3_multipart_abort_header(s, mtime, abort_date, rule_id);
+  if (exist_multipart_abort) {
+    dump_time_header(s, "x-amz-abort-date", abort_date);
+    dump_header_if_nonempty(s, "x-amz-abort-rule-id", rule_id);
+  }
   end_header(s, this, "application/xml");
   if (op_ret == 0) {
     dump_start(s);
@@ -4863,7 +4918,7 @@ bool RGWHandler_REST_S3Website::web_dir() const {
 
   if (subdir_name.empty()) {
     return false;
-  } else if (subdir_name.back() == '/') {
+  } else if (subdir_name.back() == '/' && subdir_name.size() > 1) {
     subdir_name.pop_back();
   }
 
index 7bb2f9d260f90deaef123a683483bea5784acf8d..a4f9fb41ce3abe00efaeee2f5ce78836d956ef72 100644 (file)
@@ -42,10 +42,12 @@ protected:
   // just the status line altered.
   int custom_http_ret = 0;
   std::map<std::string, std::string> crypt_http_responses;
+  int override_range_hdr(const rgw::auth::StrategyRegistry& auth_registry);
 public:
   RGWGetObj_ObjStore_S3() {}
   ~RGWGetObj_ObjStore_S3() override {}
 
+  int verify_requester(const rgw::auth::StrategyRegistry& auth_registry) override;
   int get_params() override;
   int send_response_data_error() override;
   int send_response_data(bufferlist& bl, off_t ofs, off_t len) override;
index 8e6984a7a165c4d81982f4fa36bc2da7a9282539..c777e0e813d1b20c7d0b2cb4be2ddbc5db013274 100644 (file)
@@ -125,7 +125,8 @@ void RGWOp_User_Create::execute()
   bool exclusive;
 
   int32_t max_buckets;
-  int32_t default_max_buckets = s->cct->_conf->rgw_user_max_buckets;
+  const int32_t default_max_buckets =
+    s->cct->_conf.get_val<int64_t>("rgw_user_max_buckets");
 
   RGWUserAdminOpState op_state;
 
index 356cbefebb6e56b88c4d6437a08dfbf4798cc0f6..542844d03924868770b2629e11559fafe7c25378 100644 (file)
@@ -154,8 +154,8 @@ public:
     buckets[bucket->ent.bucket.name] = bucket;
   }
   size_t count() const { return buckets.size(); }
-
-};
+  void clear() { buckets.clear(); truncated = false; }
+}; // class RGWBucketList
 
 class RGWObject {
   protected:
index 862382c6f4cff5cba272071d37ce030804fc7abe..c8cedfc4afa3d62f2c71e150a020cea1d31ceb5b 100644 (file)
@@ -396,10 +396,7 @@ class RGWAsyncReadMDLogEntries : public RGWAsyncRadosRequest {
   rgw::sal::RGWRadosStore *store;
   RGWMetadataLog *mdlog;
   int shard_id;
-  string *marker;
   int max_entries;
-  list<cls_log_entry> *entries;
-  bool *truncated;
 
 protected:
   int _send_request() override {
@@ -408,22 +405,24 @@ protected:
 
     void *handle;
 
-    mdlog->init_list_entries(shard_id, from_time, end_time, *marker, &handle);
+    mdlog->init_list_entries(shard_id, from_time, end_time, marker, &handle);
 
-    int ret = mdlog->list_entries(handle, max_entries, *entries, marker, truncated);
+    int ret = mdlog->list_entries(handle, max_entries, entries, &marker, &truncated);
 
     mdlog->complete_list_entries(handle);
 
     return ret;
   }
 public:
+  string marker;
+  list<cls_log_entry> entries;
+  bool truncated;
+
   RGWAsyncReadMDLogEntries(RGWCoroutine *caller, RGWAioCompletionNotifier *cn, rgw::sal::RGWRadosStore *_store,
                            RGWMetadataLog* mdlog, int _shard_id,
-                           string* _marker, int _max_entries,
-                           list<cls_log_entry> *_entries, bool *_truncated)
+                           std::string _marker, int _max_entries)
     : RGWAsyncRadosRequest(caller, cn), store(_store), mdlog(mdlog),
-      shard_id(_shard_id), marker(_marker), max_entries(_max_entries),
-      entries(_entries), truncated(_truncated) {}
+      shard_id(_shard_id), max_entries(_max_entries), marker(std::move(_marker)) {}
 };
 
 class RGWReadMDLogEntriesCR : public RGWSimpleCoroutine {
@@ -455,17 +454,16 @@ public:
   int send_request() override {
     marker = *pmarker;
     req = new RGWAsyncReadMDLogEntries(this, stack->create_completion_notifier(),
-                                       sync_env->store, mdlog, shard_id, &marker,
-                                       max_entries, entries, truncated);
+                                       sync_env->store, mdlog, shard_id, marker,
+                                       max_entries);
     sync_env->async_rados->queue(req);
     return 0;
   }
 
   int request_complete() override {
-    int ret = req->get_ret_status();
-    if (ret >= 0 && !entries->empty()) {
-     *pmarker = marker;
-    }
+    *pmarker = std::move(req->marker);
+    *entries = std::move(req->entries);
+    *truncated = req->truncated;
     return req->get_ret_status();
   }
 };
index b05fe0a0cc307c519fcf257042f7aa8159c6f7bf..b264ae14dd75b8be1f26aaf44daf76bf69947332 100644 (file)
@@ -248,7 +248,7 @@ thread_local bool is_asio_thread = false;
 
 int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
                       librados::ObjectReadOperation *op, bufferlist* pbl,
-                      optional_yield y)
+                      optional_yield y, int flags)
 {
 #ifdef HAVE_BOOST_CONTEXT
   // given a yield_context, call async_operate() to yield the coroutine instead
@@ -257,7 +257,8 @@ int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
     auto& context = y.get_io_context();
     auto& yield = y.get_yield_context();
     boost::system::error_code ec;
-    auto bl = librados::async_operate(context, ioctx, oid, op, 0, yield[ec]);
+    auto bl = librados::async_operate(
+      context, ioctx, oid, op, flags, yield[ec]);
     if (pbl) {
       *pbl = std::move(bl);
     }
@@ -268,25 +269,26 @@ int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
     dout(20) << "WARNING: blocking librados call" << dendl;
   }
 #endif
-  return ioctx.operate(oid, op, nullptr);
+  return ioctx.operate(oid, op, nullptr, flags);
 }
 
 int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
-                      librados::ObjectWriteOperation *op, optional_yield y)
+                      librados::ObjectWriteOperation *op, optional_yield y,
+                     int flags)
 {
 #ifdef HAVE_BOOST_CONTEXT
   if (y) {
     auto& context = y.get_io_context();
     auto& yield = y.get_yield_context();
     boost::system::error_code ec;
-    librados::async_operate(context, ioctx, oid, op, 0, yield[ec]);
+    librados::async_operate(context, ioctx, oid, op, flags, yield[ec]);
     return -ec.value();
   }
   if (is_asio_thread) {
     dout(20) << "WARNING: blocking librados call" << dendl;
   }
 #endif
-  return ioctx.operate(oid, op);
+  return ioctx.operate(oid, op, flags);
 }
 
 int rgw_rados_notify(librados::IoCtx& ioctx, const std::string& oid,
index 8c0065465465ea6fea4f450f0d1eb089b683213e..d49f39efa6eb9558fefad0c7f831482931bf4964 100644 (file)
@@ -94,9 +94,10 @@ extern thread_local bool is_asio_thread;
 /// perform the rados operation, using the yield context when given
 int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
                       librados::ObjectReadOperation *op, bufferlist* pbl,
-                      optional_yield y);
+                      optional_yield y, int flags = 0);
 int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
-                      librados::ObjectWriteOperation *op, optional_yield y);
+                      librados::ObjectWriteOperation *op, optional_yield y,
+                     int flags = 0);
 int rgw_rados_notify(librados::IoCtx& ioctx, const std::string& oid,
                      bufferlist& bl, uint64_t timeout_ms, bufferlist* pbl,
                      optional_yield y);
index ee1cded39357bfe5cb3bcc7ee638e9605a87f1d9..b57987e2c1129dcdb5e983c3a0e08b7875faf5ca 100644 (file)
@@ -1743,7 +1743,8 @@ int RGWUser::execute_add(RGWUserAdminOpState& op_state, std::string *err_msg)
   if (op_state.max_buckets_specified) {
     user_info.max_buckets = op_state.get_max_buckets();
   } else {
-    user_info.max_buckets = cct->_conf->rgw_user_max_buckets;
+    user_info.max_buckets =
+      cct->_conf.get_val<int64_t>("rgw_user_max_buckets");
   }
 
   user_info.suspended = op_state.get_suspension_status();
index b0e8e02c9149fc49af7ff0dc03bc7b760291deec..6a330e94203a4b3522734c6bbc75f86cd7070f31 100644 (file)
@@ -119,15 +119,15 @@ int RGWSI_RADOS::Obj::open()
 }
 
 int RGWSI_RADOS::Obj::operate(librados::ObjectWriteOperation *op,
-                              optional_yield y)
+                              optional_yield y, int flags)
 {
-  return rgw_rados_operate(ref.pool.ioctx(), ref.obj.oid, op, y);
+  return rgw_rados_operate(ref.pool.ioctx(), ref.obj.oid, op, y, flags);
 }
 
-int RGWSI_RADOS::Obj::operate(librados::ObjectReadOperation *op, bufferlist *pbl,
-                              optional_yield y)
+int RGWSI_RADOS::Obj::operate(librados::ObjectReadOperation *op,
+                             bufferlist *pbl, optional_yield y, int flags)
 {
-  return rgw_rados_operate(ref.pool.ioctx(), ref.obj.oid, op, pbl, y);
+  return rgw_rados_operate(ref.pool.ioctx(), ref.obj.oid, op, pbl, y, flags);
 }
 
 int RGWSI_RADOS::Obj::aio_operate(librados::AioCompletion *c, librados::ObjectWriteOperation *op)
index 721a4bbe258180011695138b00c977a02437935b..1d0941501f82f4c98bedb34e67aac99964806268 100644 (file)
@@ -166,9 +166,10 @@ public:
 
     int open();
 
-    int operate(librados::ObjectWriteOperation *op, optional_yield y);
+    int operate(librados::ObjectWriteOperation *op, optional_yield y,
+               int flags = 0);
     int operate(librados::ObjectReadOperation *op, bufferlist *pbl,
-                optional_yield y);
+                optional_yield y, int flags = 0);
     int aio_operate(librados::AioCompletion *c, librados::ObjectWriteOperation *op);
     int aio_operate(librados::AioCompletion *c, librados::ObjectReadOperation *op,
                     bufferlist *pbl);
index 8df76c85b59248dc70a04224c772d1de80d57a40..04a958cd051a8adeefdbd1a327b85668b9d1f032 100644 (file)
@@ -132,8 +132,9 @@ int RGWSI_SysObj_Cache::read(RGWSysObjectCtxBase& obj_ctx,
     flags |= CACHE_FLAG_OBJV;
   if (attrs)
     flags |= CACHE_FLAG_XATTRS;
-
-  if ((cache.get(name, info, flags, cache_info) == 0) &&
+  
+  int r = cache.get(name, info, flags, cache_info);
+  if (r == 0 &&
       (!refresh_version || !info.version.compare(&(*refresh_version)))) {
     if (info.status < 0)
       return info.status;
@@ -156,9 +157,11 @@ int RGWSI_SysObj_Cache::read(RGWSysObjectCtxBase& obj_ctx,
     }
     return obl->length();
   }
+  if(r == -ENODATA)
+    return -ENOENT;
 
   map<string, bufferlist> unfiltered_attrset;
-  int r = RGWSI_SysObj_Core::read(obj_ctx, read_state, objv_tracker,
+  r = RGWSI_SysObj_Core::read(obj_ctx, read_state, objv_tracker,
                          obj, obl, ofs, end,
                         (attrs ? &unfiltered_attrset : nullptr),
                         true, /* cache unfiltered attrs */
@@ -215,7 +218,8 @@ int RGWSI_SysObj_Cache::get_attr(const rgw_raw_obj& obj,
 
   uint32_t flags = CACHE_FLAG_XATTRS;
 
-  if (cache.get(name, info, flags, nullptr) == 0) {
+  int r = cache.get(name, info, flags, nullptr);
+  if (r == 0) {
     if (info.status < 0)
       return info.status;
 
@@ -226,6 +230,8 @@ int RGWSI_SysObj_Cache::get_attr(const rgw_raw_obj& obj,
 
     *dest = iter->second;
     return dest->length();
+  } else if (r == -ENODATA) {
+    return -ENOENT;
   }
   /* don't try to cache this one */
   return RGWSI_SysObj_Core::get_attr(obj, attr_name, dest, y);
@@ -382,6 +388,9 @@ int RGWSI_SysObj_Cache::raw_stat(const rgw_raw_obj& obj, uint64_t *psize, real_t
       objv_tracker->read_version = info.version;
     goto done;
   }
+  if (r == -ENODATA) {
+    return -ENOENT;
+  }
   r = RGWSI_SysObj_Core::raw_stat(obj, &size, &mtime, &epoch, &info.xattrs,
                                   first_chunk, objv_tracker, y);
   if (r < 0) {
index 04671bb323250bc832c196e16f13ae28eaaa0708..31d42588f683ff849892da4acb298fafc8b3f00c 100644 (file)
@@ -798,13 +798,36 @@ int RGWSI_User_RADOS::cls_user_reset_stats(const rgw_user& user)
 {
   rgw_raw_obj obj = get_buckets_obj(user);
   auto rados_obj = svc.rados->obj(obj);
-  int r = rados_obj.open();
+  int rval, r = rados_obj.open();
   if (r < 0) {
     return r;
   }
-  librados::ObjectWriteOperation op;
-  ::cls_user_reset_stats(op);
-  return rados_obj.operate(&op, null_yield);
+
+  cls_user_reset_stats2_op call;
+  cls_user_reset_stats2_ret ret;
+
+  do {
+    buffer::list in, out;
+    librados::ObjectWriteOperation op;
+
+    call.time = real_clock::now();
+    ret.update_call(call);
+
+    encode(call, in);
+    op.exec("user", "reset_user_stats2", in, &out, &rval);
+    r = rados_obj.operate(&op, null_yield, librados::OPERATION_RETURNVEC);
+    if (r < 0) {
+      return r;
+    }
+    try {
+      auto bliter = out.cbegin();
+      decode(ret, bliter);
+    } catch (ceph::buffer::error& err) {
+      return -EINVAL;
+    }
+  } while (ret.truncated);
+
+  return rval;
 }
 
 int RGWSI_User_RADOS::complete_flush_stats(RGWSI_MetaBackend::Context *ctx,
index 3ee2a43af22f2f86bd2246567273aa9918f80de7..4afc7bcdbe355c93809b182113a184e2192c58d2 100755 (executable)
@@ -28,6 +28,7 @@ else
   CEPH_CONF_PATH="$PWD"
 fi
 conf_fn="$CEPH_CONF_PATH/ceph.conf"
+CEPHADM_DIR_PATH="$CEPH_CONF_PATH/../src/cephadm"
 
 MYUID=$(id -u)
 MYNAME=$(id -nu)
@@ -42,6 +43,11 @@ do_killall() {
     $SUDO killall -u $MYNAME $1
 }
 
+do_killcephadm() {
+    FSID=$($CEPH_BIN/ceph -c $conf_fn fsid)
+    sudo $CEPHADM_DIR_PATH/cephadm rm-cluster --fsid $FSID --force
+}
+
 do_umountall() {
     #VSTART_IP_PORTS is of the format as below
     #"[v[num]:IP:PORT/0,v[num]:IP:PORT/0][v[num]:IP:PORT/0,v[num]:IP:PORT/0]..."
@@ -72,7 +78,7 @@ do_umountall() {
     [ -n "$CEPH_FUSE_MNTS" ] && sudo umount -f $CEPH_FUSE_MNTS
 }
 
-usage="usage: $0 [all] [mon] [mds] [osd] [rgw] [ganesha] [--crimson]\n"
+usage="usage: $0 [all] [mon] [mds] [osd] [rgw] [nfs] [--crimson] [--cephadm]\n"
 
 stop_all=1
 stop_mon=0
@@ -82,6 +88,7 @@ stop_mgr=0
 stop_rgw=0
 stop_ganesha=0
 ceph_osd=ceph-osd
+stop_cephadm=0
 
 while [ $# -ge 1 ]; do
     case $1 in
@@ -108,13 +115,17 @@ while [ $# -ge 1 ]; do
             stop_rgw=1
             stop_all=0
             ;;
-        ganesha | ganesha.nfsd )
+        nfs | ganesha.nfsd )
             stop_ganesha=1
             stop_all=0
             ;;
         --crimson)
             ceph_osd=crimson-osd
             ;;
+        --cephadm)
+            stop_cephadm=1
+            stop_all=0
+            ;;
         * )
             printf "$usage"
             exit
@@ -145,6 +156,11 @@ if [ $stop_all -eq 1 ]; then
         fi
     fi
 
+    daemons="$($CEPHADM_DIR_PATH/cephadm ls 2> /dev/null)"
+    if [ $? -eq 0 -a "$daemons" != "[]" ]; then
+        do_killcephadm
+    fi
+
     for p in ceph-mon ceph-mds $ceph_osd ceph-mgr radosgw lt-radosgw apache2 ganesha.nfsd ; do
         for try in 0 1 1 1 1 ; do
             if ! pkill -u $MYUID $p ; then
@@ -166,4 +182,5 @@ else
     [ $stop_mgr -eq 1 ] && do_killall ceph-mgr
     [ $stop_ganesha -eq 1 ] && do_killall ganesha.nfsd
     [ $stop_rgw -eq 1 ] && do_killall radosgw lt-radosgw apache2
+    [ $stop_cephadm -eq 1 ] && do_killcephadm
 fi
index 2e83efa1ebf5c31ced066221bd28453deb031b76..0b47f780c98b0b147e8af44a77f8b05f45ee9722 100644 (file)
@@ -16,7 +16,7 @@ class lockdep : public ::testing::Test
 {
 protected:
   void SetUp() override {
-#ifdef CEPH_DEBUG_MUTEX
+#ifndef CEPH_DEBUG_MUTEX
     GTEST_SKIP() << "WARNING: CEPH_DEBUG_MUTEX is not defined, lockdep will not work";
 #endif
     CephInitParameters params(CEPH_ENTITY_TYPE_CLIENT);
index f8c4b2bdcac75e7317efc9772a2644e22072f311..a7a6ffc7e1556d7ad81caa05960ecb1322364d10 100644 (file)
@@ -2274,6 +2274,85 @@ TEST(LibCephFS, SnapXattrs) {
   ceph_shutdown(cmount);
 }
 
+TEST(LibCephFS, SnapQuota) {
+  struct ceph_mount_info *cmount;
+  ASSERT_EQ(ceph_create(&cmount, NULL), 0);
+  ASSERT_EQ(ceph_conf_read_file(cmount, NULL), 0);
+  ASSERT_EQ(0, ceph_conf_parse_env(cmount, NULL));
+  ASSERT_EQ(ceph_mount(cmount, NULL), 0);
+
+  char test_snap_dir_quota_xattr[256];
+  char test_snap_subdir_quota_xattr[256];
+  char test_snap_subdir_noquota_xattr[256];
+  char xattrk[128];
+  char xattrv[128];
+  char c_temp[PATH_MAX];
+  char gxattrv[128];
+  int xbuflen = sizeof(gxattrv);
+  pid_t mypid = getpid();
+
+  // create dir and set quota
+  sprintf(test_snap_dir_quota_xattr, "test_snap_dir_quota_xattr_%d", mypid);
+  ASSERT_EQ(0, ceph_mkdir(cmount, test_snap_dir_quota_xattr, 0777));
+
+  sprintf(xattrk, "ceph.quota.max_bytes");
+  sprintf(xattrv, "65536");
+  ASSERT_EQ(0, ceph_setxattr(cmount, test_snap_dir_quota_xattr, xattrk, (void *)xattrv, 5, XATTR_CREATE));
+
+  // create subdir and set quota
+  sprintf(test_snap_subdir_quota_xattr, "test_snap_dir_quota_xattr_%d/subdir_quota", mypid);
+  ASSERT_EQ(0, ceph_mkdirs(cmount, test_snap_subdir_quota_xattr, 0777));
+
+  sprintf(xattrk, "ceph.quota.max_bytes");
+  sprintf(xattrv, "32768");
+  ASSERT_EQ(0, ceph_setxattr(cmount, test_snap_subdir_quota_xattr, xattrk, (void *)xattrv, 5, XATTR_CREATE));
+
+  // create subdir with no quota
+  sprintf(test_snap_subdir_noquota_xattr, "test_snap_dir_quota_xattr_%d/subdir_noquota", mypid);
+  ASSERT_EQ(0, ceph_mkdirs(cmount, test_snap_subdir_noquota_xattr, 0777));
+
+  // snapshot dir
+  sprintf(c_temp, "/.snap/test_snap_dir_quota_xattr_snap_%d", mypid);
+  ASSERT_EQ(0, ceph_mkdirs(cmount, c_temp, 0777));
+
+  // check dir quota under snap
+  sprintf(c_temp, "/.snap/test_snap_dir_quota_xattr_snap_%d/test_snap_dir_quota_xattr_%d", mypid, mypid);
+  int alen = ceph_getxattr(cmount, c_temp, "ceph.quota.max_bytes", (void *)gxattrv, xbuflen);
+  ASSERT_LT(0, alen);
+  ASSERT_LT(alen, xbuflen);
+  gxattrv[alen] = '\0';
+  ASSERT_STREQ(gxattrv, "65536");
+
+  // check subdir quota under snap
+  sprintf(c_temp, "/.snap/test_snap_dir_quota_xattr_snap_%d/test_snap_dir_quota_xattr_%d/subdir_quota", mypid, mypid);
+  alen = ceph_getxattr(cmount, c_temp, "ceph.quota.max_bytes", (void *)gxattrv, xbuflen);
+  ASSERT_LT(0, alen);
+  ASSERT_LT(alen, xbuflen);
+  gxattrv[alen] = '\0';
+  ASSERT_STREQ(gxattrv, "32768");
+
+  // ensure subdir noquota xattr under snap
+  sprintf(c_temp, "/.snap/test_snap_dir_quota_xattr_snap_%d/test_snap_dir_quota_xattr_%d/subdir_noquota", mypid, mypid);
+  EXPECT_EQ(-ENODATA, ceph_getxattr(cmount, c_temp, "ceph.quota.max_bytes", (void *)gxattrv, xbuflen));
+
+  // listxattr() shouldn't return ceph.quota.max_bytes vxattr
+  sprintf(c_temp, "/.snap/test_snap_dir_quota_xattr_snap_%d/test_snap_dir_quota_xattr_%d", mypid, mypid);
+  char xattrlist[512];
+  int len = ceph_listxattr(cmount, c_temp, xattrlist, sizeof(xattrlist));
+  ASSERT_GE(sizeof(xattrlist), (size_t)len);
+  char *p = xattrlist;
+  int found = 0;
+  while (len > 0) {
+    if (strcmp(p, "ceph.quota.max_bytes") == 0)
+      found++;
+    len -= strlen(p) + 1;
+    p += strlen(p) + 1;
+  }
+  ASSERT_EQ(found, 0);
+
+  ceph_shutdown(cmount);
+}
+
 TEST(LibCephFS, Lseek) {
   struct ceph_mount_info *cmount;
   ASSERT_EQ(0, ceph_create(&cmount, NULL));
index 2d75a4b2aa9390cf9141e5ab803afefef0755602..8272b2046f1df32c6cba314aac27effd8a2c6e45 100644 (file)
@@ -169,6 +169,8 @@ int TestRadosClient::mon_command(const std::vector<std::string>& cmd,
       return 0;
     } else if ((*j_it)->get_data() == "config-key rm") {
       return 0;
+    } else if ((*j_it)->get_data() == "config set") {
+      return 0;
     } else if ((*j_it)->get_data() == "df") {
       std::stringstream str;
       str << R"({"pools": [)";
index f1179f4f6648b7602929d4881556c1d86af67890..0f5bb2c62e6cff846dd9d12055c06a42df51aba0 100644 (file)
@@ -43,6 +43,7 @@ target_link_libraries(rbd_test_mock PUBLIC
 set(unittest_librbd_srcs
   test_main.cc
   test_mock_fixture.cc
+  test_mock_ConfigWatcher.cc
   test_mock_DeepCopyRequest.cc
   test_mock_ExclusiveLock.cc
   test_mock_Journal.cc
index cee2a08960223fac08c2017b672c0be748bfcb94..a928df5cce4e20380d591e2b3c7279dc5e40d0ac 100644 (file)
@@ -949,6 +949,7 @@ const struct rbd_operations librbd_operations = {
 int
 krbd_open(const char *name, struct rbd_ctx *ctx)
 {
+       char buf[1024];
        char *devnode;
        int fd;
        int ret;
@@ -957,7 +958,14 @@ krbd_open(const char *name, struct rbd_ctx *ctx)
        if (ret < 0)
                return ret;
 
-       ret = krbd_map(krbd, pool, "", name, "", "", &devnode);
+       ret = rados_conf_get(cluster, "rbd_default_map_options", buf,
+                            sizeof(buf));
+       if (ret < 0) {
+               simple_err("Could not get rbd_default_map_options value", ret);
+               return ret;
+       }
+
+       ret = krbd_map(krbd, pool, "", name, "", buf, &devnode);
        if (ret < 0) {
                prt("krbd_map(%s) failed\n", name);
                return ret;
index da376a9acd4457b645722f73ed9f17097c8fd833..ab2b0ba1d7c02d904731aede47121973eab58b4e 100644 (file)
@@ -28,6 +28,25 @@ struct TypeTraits<MockTestImageCtx> {
   typedef ::MockSafeTimer SafeTimer;
 };
 
+template <>
+struct FlushTracker<MockTestImageCtx> {
+  FlushTracker(MockTestImageCtx*) {
+  }
+
+  void shut_down() {
+  }
+
+  void flush(Context*) {
+  }
+
+  void start_io(uint64_t) {
+  }
+
+  void finish_io(uint64_t) {
+  }
+
+};
+
 } // namespace io
 } // namespace librbd
 
@@ -208,10 +227,12 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Flush) {
   MockSimpleSchedulerObjectDispatch
       mock_simple_scheduler_object_dispatch(&mock_image_ctx);
 
+  io::DispatchResult dispatch_result;
   C_SaferCond cond;
   Context *on_finish = &cond;
-  ASSERT_FALSE(mock_simple_scheduler_object_dispatch.flush(
-      FLUSH_SOURCE_USER, {}, nullptr, nullptr, &on_finish, nullptr));
+  ASSERT_TRUE(mock_simple_scheduler_object_dispatch.flush(
+      FLUSH_SOURCE_USER, {}, nullptr, &dispatch_result, &on_finish, nullptr));
+  ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result);
   ASSERT_EQ(on_finish, &cond); // not modified
   on_finish->complete(0);
   ASSERT_EQ(0, cond.wait());
@@ -251,7 +272,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteDelayed) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2,
       &on_dispatched));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish2, &cond2);
+  ASSERT_NE(on_finish2, &cond2);
   ASSERT_NE(timer_task, nullptr);
 
   expect_dispatch_delayed_requests(mock_image_ctx, 0);
@@ -298,7 +319,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteDelayedFlush) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2,
       &on_dispatched));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish2, &cond2);
+  ASSERT_NE(on_finish2, &cond2);
   ASSERT_NE(timer_task, nullptr);
 
   expect_dispatch_delayed_requests(mock_image_ctx, 0);
@@ -306,8 +327,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteDelayedFlush) {
 
   C_SaferCond cond3;
   Context *on_finish3 = &cond3;
-  ASSERT_FALSE(mock_simple_scheduler_object_dispatch.flush(
-      FLUSH_SOURCE_USER, {}, nullptr, nullptr, &on_finish3, nullptr));
+  ASSERT_TRUE(mock_simple_scheduler_object_dispatch.flush(
+      FLUSH_SOURCE_USER, {}, nullptr, &dispatch_result, &on_finish3, nullptr));
+  ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result);
   ASSERT_EQ(on_finish3, &cond3);
 
   on_finish1->complete(0);
@@ -356,7 +378,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2,
       &on_dispatched2));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish2, &cond2);
+  ASSERT_NE(on_finish2, &cond2);
   ASSERT_NE(timer_task, nullptr);
 
   object_off = 0;
@@ -370,7 +392,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish3,
       &on_dispatched3));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish3, &cond3);
+  ASSERT_NE(on_finish3, &cond3);
 
   object_off = 10;
   data.clear();
@@ -383,7 +405,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish4,
       &on_dispatched4));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish4, &cond4);
+  ASSERT_NE(on_finish4, &cond4);
 
   object_off = 30;
   data.clear();
@@ -396,7 +418,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish5,
       &on_dispatched5));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish5, &cond5);
+  ASSERT_NE(on_finish5, &cond5);
 
   object_off = 50;
   data.clear();
@@ -409,7 +431,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish6,
       &on_dispatched6));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish6, &cond6);
+  ASSERT_NE(on_finish6, &cond6);
 
   // expect two requests dispatched:
   // 0~40 (merged 0~10, 10~10, 20~10, 30~10) and 50~10
@@ -472,7 +494,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteNonSequential) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2,
       &on_dispatched2));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish2, &cond2);
+  ASSERT_NE(on_finish2, &cond2);
   ASSERT_NE(timer_task, nullptr);
 
   expect_dispatch_delayed_requests(mock_image_ctx, 0);
@@ -536,7 +558,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2,
       &on_dispatched2));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish2, &cond2);
+  ASSERT_NE(on_finish2, &cond2);
   ASSERT_NE(timer_task, nullptr);
 
   // write (3) 10~10 (delayed)
@@ -551,7 +573,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) {
       0, object_off, std::move(data), mock_image_ctx.snapc, 0, {},
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish3,
       &on_dispatched3));
-  ASSERT_EQ(on_finish3, &cond3);
+  ASSERT_NE(on_finish3, &cond3);
 
   // discard (1) (non-seq io)
   // will dispatch the delayed writes (2) and (3) and wrap on_finish
@@ -581,7 +603,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) {
       0, object_off, std::move(data), mock_image_ctx.snapc, 0, {},
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish5,
       &on_dispatched5));
-  ASSERT_EQ(on_finish5, &cond5);
+  ASSERT_NE(on_finish5, &cond5);
   ASSERT_NE(timer_task, nullptr);
 
   // discard (2) (non-seq io)
@@ -611,7 +633,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) {
       0, object_off, std::move(data), mock_image_ctx.snapc, 0, {},
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish7,
       &on_dispatched7));
-  ASSERT_EQ(on_finish7, &cond7);
+  ASSERT_NE(on_finish7, &cond7);
   ASSERT_NE(timer_task, nullptr);
 
   // write (1) finishes
@@ -688,7 +710,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, DispatchQueue) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2,
       &on_dispatched2));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish2, &cond2);
+  ASSERT_NE(on_finish2, &cond2);
   ASSERT_NE(timer_task, nullptr);
 
   // send 2 writes to object 1
@@ -711,7 +733,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, DispatchQueue) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish4,
       &on_dispatched4));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish4, &cond4);
+  ASSERT_NE(on_finish4, &cond4);
 
   // finish write (1) to object 0
   expect_dispatch_delayed_requests(mock_image_ctx, 0);
@@ -771,7 +793,7 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Timer) {
       &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2,
       &on_dispatched));
   ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE);
-  ASSERT_EQ(on_finish2, &cond2);
+  ASSERT_NE(on_finish2, &cond2);
   ASSERT_NE(timer_task, nullptr);
 
   expect_dispatch_delayed_requests(mock_image_ctx, 0);
index dcd620abd76c7d0b15ca113b57446910d9f226b1..1872dcb19b71e29b41082b2c86d0fcaa7540feed 100644 (file)
@@ -318,6 +318,7 @@ struct MockImageCtx {
   bool cache;
 
   ConfigProxy config;
+  std::set<std::string> config_overrides;
 };
 
 } // namespace librbd
index b9c8c8d07590b02c3016a984b1fea95b0d742402..b287c13c2b412ee2d34b72bc34f2d2dadb5b0894 100644 (file)
@@ -30,6 +30,8 @@ struct MockImageState {
 
   MOCK_METHOD2(register_update_watcher, int(UpdateWatchCtx *, uint64_t *));
   MOCK_METHOD2(unregister_update_watcher, void(uint64_t, Context *));  
+
+  MOCK_METHOD0(handle_update_notification, void());
 };
 
 } // namespace librbd
index 2c83af9839b4cef897bdb3fde054af9ef9331502..d5943cc369f4af11d00410aba047deb31724c78d 100644 (file)
@@ -8175,6 +8175,65 @@ TEST_F(TestLibRBD, SnapRemoveWithChildMissing)
   rados_ioctx_destroy(ioctx1);
 }
 
+TEST_F(TestLibRBD, WriteZeroes) {
+  librbd::RBD rbd;
+  librados::IoCtx ioctx;
+  ASSERT_EQ(0, _rados.ioctx_create(m_pool_name.c_str(), ioctx));
+  std::string name = get_temp_image_name();
+  int order = 0;
+  uint64_t size = 2 << 20;
+  ASSERT_EQ(0, create_image_pp(rbd, ioctx, name.c_str(), size, &order));
+
+  librbd::Image image;
+  ASSERT_EQ(0, rbd.open(ioctx, image, name.c_str(), NULL));
+
+  // 1s from [0, 256) / length 256
+  char data[256];
+  memset(data, 1, sizeof(data));
+  bufferlist bl;
+  bl.append(data, 256);
+  ASSERT_EQ(256, image.write(0, 256, bl));
+
+  interval_set<uint64_t> diff;
+  ASSERT_EQ(0, image.diff_iterate2(nullptr, 0, size, false, false,
+                                   iterate_cb, (void *)&diff));
+  auto expected_diff = interval_set<uint64_t>{{{0, 256}}};
+  ASSERT_EQ(expected_diff, diff);
+
+  // writes zero passed the current end extents.
+  // Now 1s from [0, 192) / length 192
+  ASSERT_EQ(size - 192,
+            image.write_zeroes(192, size - 192, 0U, 0));
+  diff.clear();
+  ASSERT_EQ(0, image.diff_iterate2(nullptr, 0, size, false, false,
+                                   iterate_cb, (void *)&diff));
+  expected_diff = interval_set<uint64_t>{{{0, 192}}};
+  ASSERT_EQ(expected_diff, diff);
+
+  // zero an existing extent and truncate some off the end
+  // Now 1s from [64, 192) / length 192
+  ASSERT_EQ(64, image.write_zeroes(0, 64, 0U, 0));
+
+  diff.clear();
+  ASSERT_EQ(0, image.diff_iterate2(nullptr, 0, size, false, false,
+                                   iterate_cb, (void *)&diff));
+  expected_diff = interval_set<uint64_t>{{{0, 192}}};
+  ASSERT_EQ(expected_diff, diff);
+
+  bufferlist expected_bl;
+  expected_bl.append_zero(64);
+  bufferlist sub_bl;
+  sub_bl.substr_of(bl, 0, 128);
+  expected_bl.claim_append(sub_bl);
+  expected_bl.append_zero(size - 192);
+
+  bufferlist read_bl;
+  EXPECT_EQ(size, image.read(0, size, read_bl));
+  EXPECT_EQ(expected_bl, read_bl);
+
+  ASSERT_EQ(0, image.close());
+}
+
 // poorman's ceph_assert()
 namespace ceph {
   void __ceph_assert_fail(const char *assertion, const char *file, int line,
diff --git a/ceph/src/test/librbd/test_mock_ConfigWatcher.cc b/ceph/src/test/librbd/test_mock_ConfigWatcher.cc
new file mode 100644 (file)
index 0000000..264e3d2
--- /dev/null
@@ -0,0 +1,100 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "test/librbd/test_mock_fixture.h"
+#include "test/librbd/test_support.h"
+#include "include/rbd_types.h"
+#include "common/ceph_mutex.h"
+#include "librbd/ConfigWatcher.h"
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include <list>
+
+namespace librbd {
+namespace {
+
+struct MockTestImageCtx : public MockImageCtx {
+  MockTestImageCtx(ImageCtx &image_ctx) : MockImageCtx(image_ctx) {
+  }
+};
+
+} // anonymous namespace
+} // namespace librbd
+
+#include "librbd/ConfigWatcher.cc"
+
+namespace librbd {
+
+using ::testing::Invoke;
+
+class TestMockConfigWatcher : public TestMockFixture {
+public:
+  typedef ConfigWatcher<MockTestImageCtx> MockConfigWatcher;
+
+  librbd::ImageCtx *m_image_ctx;
+
+  ceph::mutex m_lock = ceph::make_mutex("m_lock");
+  ceph::condition_variable m_cv;
+  bool m_refreshed = false;
+
+  void SetUp() override {
+    TestMockFixture::SetUp();
+
+    ASSERT_EQ(0, open_image(m_image_name, &m_image_ctx));
+  }
+
+  void expect_update_notification(MockTestImageCtx& mock_image_ctx) {
+    EXPECT_CALL(*mock_image_ctx.state, handle_update_notification())
+      .WillOnce(Invoke([this]() {
+          std::unique_lock locker{m_lock};
+          m_refreshed = true;
+          m_cv.notify_all();
+        }));
+  }
+
+  void wait_for_update_notification() {
+    std::unique_lock locker{m_lock};
+    m_cv.wait(locker, [this] {
+        if (m_refreshed) {
+          m_refreshed = false;
+          return true;
+        }
+        return false;
+      });
+  }
+};
+
+TEST_F(TestMockConfigWatcher, GlobalConfig) {
+  MockTestImageCtx mock_image_ctx(*m_image_ctx);
+
+  MockConfigWatcher mock_config_watcher(mock_image_ctx);
+  mock_config_watcher.init();
+
+  expect_update_notification(mock_image_ctx);
+  mock_image_ctx.cct->_conf.set_val("rbd_cache", "false");
+  mock_image_ctx.cct->_conf.set_val("rbd_cache", "true");
+  mock_image_ctx.cct->_conf.apply_changes(nullptr);
+  wait_for_update_notification();
+
+  mock_config_watcher.shut_down();
+}
+
+TEST_F(TestMockConfigWatcher, IgnoreOverriddenGlobalConfig) {
+  MockTestImageCtx mock_image_ctx(*m_image_ctx);
+
+  MockConfigWatcher mock_config_watcher(mock_image_ctx);
+  mock_config_watcher.init();
+
+  EXPECT_CALL(*mock_image_ctx.state, handle_update_notification())
+    .Times(0);
+  mock_image_ctx.config_overrides.insert("rbd_cache");
+  mock_image_ctx.cct->_conf.set_val("rbd_cache", "false");
+  mock_image_ctx.cct->_conf.set_val("rbd_cache", "true");
+  mock_image_ctx.cct->_conf.apply_changes(nullptr);
+
+  mock_config_watcher.shut_down();
+
+  ASSERT_FALSE(m_refreshed);
+}
+
+} // namespace librbd
index 1f3e85d99da0238b47e795dcb9da5372e49be253..4791f7c2f6e7e4696798740ec19ab09c7a3f275c 100644 (file)
@@ -26,6 +26,11 @@ target_link_libraries(ceph_perf_msgr_server os global ${UNITTEST_LIBS})
 add_executable(ceph_perf_msgr_client perf_msgr_client.cc)
 target_link_libraries(ceph_perf_msgr_client os global ${UNITTEST_LIBS})
 
+# unitttest_frames_v2
+add_executable(unittest_frames_v2 test_frames_v2.cc)
+add_ceph_unittest(unittest_frames_v2)
+target_link_libraries(unittest_frames_v2 os global ${UNITTEST_LIBS})
+
 # test_userspace_event
 if(HAVE_DPDK)
   add_executable(ceph_test_userspace_event
diff --git a/ceph/src/test/msgr/test_frames_v2.cc b/ceph/src/test/msgr/test_frames_v2.cc
new file mode 100644 (file)
index 0000000..d384e6a
--- /dev/null
@@ -0,0 +1,450 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2020 Red Hat
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation. See file COPYING.
+ *
+ */
+
+#include "msg/async/frames_v2.h"
+
+#include <numeric>
+#include <ostream>
+#include <string>
+#include <tuple>
+
+#include "auth/Auth.h"
+#include "common/ceph_argparse.h"
+#include "global/global_init.h"
+#include "global/global_context.h"
+#include "include/Context.h"
+
+#include <gtest/gtest.h>
+
+namespace ceph::msgr::v2 {
+
+// MessageFrame with the first segment not fixed to ceph_msg_header2
+struct TestFrame : Frame<TestFrame,
+                         /* four segments */
+                         segment_t::DEFAULT_ALIGNMENT,
+                         segment_t::DEFAULT_ALIGNMENT,
+                         segment_t::DEFAULT_ALIGNMENT,
+                         segment_t::PAGE_SIZE_ALIGNMENT> {
+  static constexpr Tag tag = static_cast<Tag>(123);
+
+  static TestFrame Encode(const bufferlist& header,
+                          const bufferlist& front,
+                          const bufferlist& middle,
+                          const bufferlist& data) {
+    TestFrame f;
+    f.segments[SegmentIndex::Msg::HEADER] = header;
+    f.segments[SegmentIndex::Msg::FRONT] = front;
+    f.segments[SegmentIndex::Msg::MIDDLE] = middle;
+    f.segments[SegmentIndex::Msg::DATA] = data;
+
+    // discard cached crcs for perf tests
+    f.segments[SegmentIndex::Msg::HEADER].invalidate_crc();
+    f.segments[SegmentIndex::Msg::FRONT].invalidate_crc();
+    f.segments[SegmentIndex::Msg::MIDDLE].invalidate_crc();
+    f.segments[SegmentIndex::Msg::DATA].invalidate_crc();
+    return f;
+  }
+
+  static TestFrame Decode(segment_bls_t& segment_bls) {
+    TestFrame f;
+    // Transfer segments' bufferlists.  If segment_bls contains
+    // less than SegmentsNumV segments, the missing ones will be
+    // seen as empty.
+    for (size_t i = 0; i < segment_bls.size(); i++) {
+      f.segments[i] = std::move(segment_bls[i]);
+    }
+    return f;
+  }
+
+  bufferlist& header() {
+    return segments[SegmentIndex::Msg::HEADER];
+  }
+  bufferlist& front() {
+    return segments[SegmentIndex::Msg::FRONT];
+  }
+  bufferlist& middle() {
+    return segments[SegmentIndex::Msg::MIDDLE];
+  }
+  bufferlist& data() {
+    return segments[SegmentIndex::Msg::DATA];
+  }
+
+protected:
+  using Frame::Frame;
+};
+
+struct mode_t {
+  bool is_rev1;
+  bool is_secure;
+};
+
+static std::ostream& operator<<(std::ostream& os, const mode_t& m) {
+  os << "msgr2." << (m.is_rev1 ? "1" : "0")
+     << (m.is_secure ? "-secure" : "-crc");
+  return os;
+}
+
+static const mode_t modes[] = {
+  {false, false},
+  {false, true},
+  {true, false},
+  {true, true},
+};
+
+struct round_trip_instance_t {
+  uint32_t header_len;
+  uint32_t front_len;
+  uint32_t middle_len;
+  uint32_t data_len;
+
+  // expected number of segments (same for each mode)
+  size_t num_segments;
+  // expected layout (different for each mode)
+  uint32_t onwire_lens[4][MAX_NUM_SEGMENTS + 2];
+};
+
+static std::ostream& operator<<(std::ostream& os,
+                                const round_trip_instance_t& rti) {
+  os << rti.header_len << "+" << rti.front_len << "+"
+     << rti.middle_len << "+" << rti.data_len;
+  return os;
+}
+
+static bufferlist make_bufferlist(size_t len, char c) {
+  bufferlist bl;
+  if (len > 0) {
+    bl.reserve(len);
+    bl.append(std::string(len, c));
+  }
+  return bl;
+}
+
+bool disassemble_frame(FrameAssembler& frame_asm, bufferlist& frame_bl,
+                       Tag& tag, segment_bls_t& segment_bls) {
+  bufferlist preamble_bl;
+  frame_bl.splice(0, frame_asm.get_preamble_onwire_len(), &preamble_bl);
+  tag = frame_asm.disassemble_preamble(preamble_bl);
+
+  do {
+    size_t seg_idx = segment_bls.size();
+    segment_bls.emplace_back();
+
+    uint32_t onwire_len = frame_asm.get_segment_onwire_len(seg_idx);
+    if (onwire_len > 0) {
+      frame_bl.splice(0, onwire_len, &segment_bls.back());
+    }
+  } while (segment_bls.size() < frame_asm.get_num_segments());
+
+  bufferlist epilogue_bl;
+  uint32_t epilogue_onwire_len = frame_asm.get_epilogue_onwire_len();
+  if (epilogue_onwire_len > 0) {
+    frame_bl.splice(0, epilogue_onwire_len, &epilogue_bl);
+  }
+  frame_asm.disassemble_first_segment(preamble_bl, segment_bls[0]);
+  return frame_asm.disassemble_remaining_segments(segment_bls.data(),
+                                                  epilogue_bl);
+}
+
+class RoundTripTestBase : public ::testing::TestWithParam<
+                              std::tuple<round_trip_instance_t, mode_t>> {
+protected:
+  RoundTripTestBase()
+      : m_tx_frame_asm(&m_tx_crypto, std::get<1>(GetParam()).is_rev1),
+        m_rx_frame_asm(&m_rx_crypto, std::get<1>(GetParam()).is_rev1),
+        m_header(make_bufferlist(std::get<0>(GetParam()).header_len, 'H')),
+        m_front(make_bufferlist(std::get<0>(GetParam()).front_len, 'F')),
+        m_middle(make_bufferlist(std::get<0>(GetParam()).middle_len, 'M')),
+        m_data(make_bufferlist(std::get<0>(GetParam()).data_len, 'D')) {
+    const auto& m = std::get<1>(GetParam());
+    if (m.is_secure) {
+      AuthConnectionMeta auth_meta;
+      auth_meta.con_mode = CEPH_CON_MODE_SECURE;
+      // see AuthConnectionMeta::get_connection_secret_length()
+      auth_meta.connection_secret.resize(64);
+      g_ceph_context->random()->get_bytes(auth_meta.connection_secret.data(),
+                                          auth_meta.connection_secret.size());
+      m_tx_crypto = ceph::crypto::onwire::rxtx_t::create_handler_pair(
+          g_ceph_context, auth_meta, /*new_nonce_format=*/m.is_rev1,
+          /*crossed=*/false);
+      m_rx_crypto = ceph::crypto::onwire::rxtx_t::create_handler_pair(
+          g_ceph_context, auth_meta, /*new_nonce_format=*/m.is_rev1,
+          /*crossed=*/true);
+    }
+  }
+
+  void check_frame_assembler(const FrameAssembler& frame_asm) {
+    const auto& [rti, m] = GetParam();
+    const auto& onwire_lens = rti.onwire_lens[m.is_rev1 << 1 | m.is_secure];
+    EXPECT_EQ(rti.header_len + rti.front_len + rti.middle_len + rti.data_len,
+              frame_asm.get_frame_logical_len());
+    ASSERT_EQ(rti.num_segments, frame_asm.get_num_segments());
+    EXPECT_EQ(onwire_lens[0], frame_asm.get_preamble_onwire_len());
+    for (size_t i = 0; i < rti.num_segments; i++) {
+      EXPECT_EQ(onwire_lens[i + 1], frame_asm.get_segment_onwire_len(i));
+    }
+    EXPECT_EQ(onwire_lens[rti.num_segments + 1],
+              frame_asm.get_epilogue_onwire_len());
+    EXPECT_EQ(std::accumulate(std::begin(onwire_lens), std::end(onwire_lens),
+                              uint64_t(0)),
+              frame_asm.get_frame_onwire_len());
+  }
+
+  void test_round_trip() {
+    auto tx_frame = TestFrame::Encode(m_header, m_front, m_middle, m_data);
+    auto onwire_bl = tx_frame.get_buffer(m_tx_frame_asm);
+    check_frame_assembler(m_tx_frame_asm);
+    EXPECT_EQ(m_tx_frame_asm.get_frame_onwire_len(), onwire_bl.length());
+
+    Tag rx_tag;
+    segment_bls_t rx_segment_bls;
+    EXPECT_TRUE(disassemble_frame(m_rx_frame_asm, onwire_bl, rx_tag,
+                                  rx_segment_bls));
+    check_frame_assembler(m_rx_frame_asm);
+    EXPECT_EQ(0, onwire_bl.length());
+    EXPECT_EQ(TestFrame::tag, rx_tag);
+    EXPECT_EQ(m_rx_frame_asm.get_num_segments(), rx_segment_bls.size());
+
+    auto rx_frame = TestFrame::Decode(rx_segment_bls);
+    EXPECT_TRUE(m_header.contents_equal(rx_frame.header()));
+    EXPECT_TRUE(m_front.contents_equal(rx_frame.front()));
+    EXPECT_TRUE(m_middle.contents_equal(rx_frame.middle()));
+    EXPECT_TRUE(m_data.contents_equal(rx_frame.data()));
+  }
+
+  ceph::crypto::onwire::rxtx_t m_tx_crypto;
+  ceph::crypto::onwire::rxtx_t m_rx_crypto;
+  FrameAssembler m_tx_frame_asm;
+  FrameAssembler m_rx_frame_asm;
+
+  const bufferlist m_header;
+  const bufferlist m_front;
+  const bufferlist m_middle;
+  const bufferlist m_data;
+};
+
+class RoundTripTest : public RoundTripTestBase {};
+
+TEST_P(RoundTripTest, Basic) {
+  test_round_trip();
+}
+
+TEST_P(RoundTripTest, Reuse) {
+  for (int i = 0; i < 3; i++) {
+    test_round_trip();
+  }
+}
+
+static const round_trip_instance_t round_trip_instances[] = {
+  // first segment is empty
+  { 0,   0,   0,   0, 1, {{32,  0,  17,   0,   0,  0},
+                          {32,  0,  32,   0,   0,  0},
+                          {32,  0,   0,   0,   0,  0},
+                          {96,  0,   0,   0,   0,  0}}},
+  { 0,   0,   0, 303, 4, {{32,  0,   0,   0, 303, 17},
+                          {32,  0,   0,   0, 304, 32},
+                          {32,  0,   0,   0, 303, 13},
+                          {96,  0,   0,   0, 304, 32}}},
+  { 0,   0, 202,   0, 3, {{32,  0,   0, 202,  17,  0},
+                          {32,  0,   0, 208,  32,  0},
+                          {32,  0,   0, 202,  13,  0},
+                          {96,  0,   0, 208,  32,  0}}},
+  { 0,   0, 202, 303, 4, {{32,  0,   0, 202, 303, 17},
+                          {32,  0,   0, 208, 304, 32},
+                          {32,  0,   0, 202, 303, 13},
+                          {96,  0,   0, 208, 304, 32}}},
+  { 0, 101,   0,   0, 2, {{32,  0, 101,  17,   0,  0},
+                          {32,  0, 112,  32,   0,  0},
+                          {32,  0, 101,  13,   0,  0},
+                          {96,  0, 112,  32,   0,  0}}},
+  { 0, 101,   0, 303, 4, {{32,  0, 101,   0, 303, 17},
+                          {32,  0, 112,   0, 304, 32},
+                          {32,  0, 101,   0, 303, 13},
+                          {96,  0, 112,   0, 304, 32}}},
+  { 0, 101, 202,   0, 3, {{32,  0, 101, 202,  17,  0},
+                          {32,  0, 112, 208,  32,  0},
+                          {32,  0, 101, 202,  13,  0},
+                          {96,  0, 112, 208,  32,  0}}},
+  { 0, 101, 202, 303, 4, {{32,  0, 101, 202, 303, 17},
+                          {32,  0, 112, 208, 304, 32},
+                          {32,  0, 101, 202, 303, 13},
+                          {96,  0, 112, 208, 304, 32}}},
+
+  // first segment is fully inlined, inline buffer is not full
+  { 1,   0,   0,   0, 1, {{32,  1,  17,   0,   0,  0},
+                          {32, 16,  32,   0,   0,  0},
+                          {32,  5,   0,   0,   0,  0},
+                          {96,  0,   0,   0,   0,  0}}},
+  { 1,   0,   0, 303, 4, {{32,  1,   0,   0, 303, 17},
+                          {32, 16,   0,   0, 304, 32},
+                          {32,  5,   0,   0, 303, 13},
+                          {96,  0,   0,   0, 304, 32}}},
+  { 1,   0, 202,   0, 3, {{32,  1,   0, 202,  17,  0},
+                          {32, 16,   0, 208,  32,  0},
+                          {32,  5,   0, 202,  13,  0},
+                          {96,  0,   0, 208,  32,  0}}},
+  { 1,   0, 202, 303, 4, {{32,  1,   0, 202, 303, 17},
+                          {32, 16,   0, 208, 304, 32},
+                          {32,  5,   0, 202, 303, 13},
+                          {96,  0,   0, 208, 304, 32}}},
+  { 1, 101,   0,   0, 2, {{32,  1, 101,  17,   0,  0},
+                          {32, 16, 112,  32,   0,  0},
+                          {32,  5, 101,  13,   0,  0},
+                          {96,  0, 112,  32,   0,  0}}},
+  { 1, 101,   0, 303, 4, {{32,  1, 101,   0, 303, 17},
+                          {32, 16, 112,   0, 304, 32},
+                          {32,  5, 101,   0, 303, 13},
+                          {96,  0, 112,   0, 304, 32}}},
+  { 1, 101, 202,   0, 3, {{32,  1, 101, 202,  17,  0},
+                          {32, 16, 112, 208,  32,  0},
+                          {32,  5, 101, 202,  13,  0},
+                          {96,  0, 112, 208,  32,  0}}},
+  { 1, 101, 202, 303, 4, {{32,  1, 101, 202, 303, 17},
+                          {32, 16, 112, 208, 304, 32},
+                          {32,  5, 101, 202, 303, 13},
+                          {96,  0, 112, 208, 304, 32}}},
+
+  // first segment is fully inlined, inline buffer is full
+  {48,   0,   0,   0, 1, {{32, 48,  17,   0,   0,  0},
+                          {32, 48,  32,   0,   0,  0},
+                          {32, 52,   0,   0,   0,  0},
+                          {96,  0,   0,   0,   0,  0}}},
+  {48,   0,   0, 303, 4, {{32, 48,   0,   0, 303, 17},
+                          {32, 48,   0,   0, 304, 32},
+                          {32, 52,   0,   0, 303, 13},
+                          {96,  0,   0,   0, 304, 32}}},
+  {48,   0, 202,   0, 3, {{32, 48,   0, 202,  17,  0},
+                          {32, 48,   0, 208,  32,  0},
+                          {32, 52,   0, 202,  13,  0},
+                          {96,  0,   0, 208,  32,  0}}},
+  {48,   0, 202, 303, 4, {{32, 48,   0, 202, 303, 17},
+                          {32, 48,   0, 208, 304, 32},
+                          {32, 52,   0, 202, 303, 13},
+                          {96,  0,   0, 208, 304, 32}}},
+  {48, 101,   0,   0, 2, {{32, 48, 101,  17,   0,  0},
+                          {32, 48, 112,  32,   0,  0},
+                          {32, 52, 101,  13,   0,  0},
+                          {96,  0, 112,  32,   0,  0}}},
+  {48, 101,   0, 303, 4, {{32, 48, 101,   0, 303, 17},
+                          {32, 48, 112,   0, 304, 32},
+                          {32, 52, 101,   0, 303, 13},
+                          {96,  0, 112,   0, 304, 32}}},
+  {48, 101, 202,   0, 3, {{32, 48, 101, 202,  17,  0},
+                          {32, 48, 112, 208,  32,  0},
+                          {32, 52, 101, 202,  13,  0},
+                          {96,  0, 112, 208,  32,  0}}},
+  {48, 101, 202, 303, 4, {{32, 48, 101, 202, 303, 17},
+                          {32, 48, 112, 208, 304, 32},
+                          {32, 52, 101, 202, 303, 13},
+                          {96,  0, 112, 208, 304, 32}}},
+
+  // first segment is partially inlined
+  {49,   0,   0,   0, 1, {{32, 49,  17,   0,   0,  0},
+                          {32, 64,  32,   0,   0,  0},
+                          {32, 53,   0,   0,   0,  0},
+                          {96, 32,   0,   0,   0,  0}}},
+  {49,   0,   0, 303, 4, {{32, 49,   0,   0, 303, 17},
+                          {32, 64,   0,   0, 304, 32},
+                          {32, 53,   0,   0, 303, 13},
+                          {96, 32,   0,   0, 304, 32}}},
+  {49,   0, 202,   0, 3, {{32, 49,   0, 202,  17,  0},
+                          {32, 64,   0, 208,  32,  0},
+                          {32, 53,   0, 202,  13,  0},
+                          {96, 32,   0, 208,  32,  0}}},
+  {49,   0, 202, 303, 4, {{32, 49,   0, 202, 303, 17},
+                          {32, 64,   0, 208, 304, 32},
+                          {32, 53,   0, 202, 303, 13},
+                          {96, 32,   0, 208, 304, 32}}},
+  {49, 101,   0,   0, 2, {{32, 49, 101,  17,   0,  0},
+                          {32, 64, 112,  32,   0,  0},
+                          {32, 53, 101,  13,   0,  0},
+                          {96, 32, 112,  32,   0,  0}}},
+  {49, 101,   0, 303, 4, {{32, 49, 101,   0, 303, 17},
+                          {32, 64, 112,   0, 304, 32},
+                          {32, 53, 101,   0, 303, 13},
+                          {96, 32, 112,   0, 304, 32}}},
+  {49, 101, 202,   0, 3, {{32, 49, 101, 202,  17,  0},
+                          {32, 64, 112, 208,  32,  0},
+                          {32, 53, 101, 202,  13,  0},
+                          {96, 32, 112, 208,  32,  0}}},
+  {49, 101, 202, 303, 4, {{32, 49, 101, 202, 303, 17},
+                          {32, 64, 112, 208, 304, 32},
+                          {32, 53, 101, 202, 303, 13},
+                          {96, 32, 112, 208, 304, 32}}},
+};
+
+INSTANTIATE_TEST_SUITE_P(
+    RoundTripTests, RoundTripTest, ::testing::Combine(
+        ::testing::ValuesIn(round_trip_instances),
+        ::testing::ValuesIn(modes)));
+
+class RoundTripPerfTest : public RoundTripTestBase {};
+
+TEST_P(RoundTripPerfTest, DISABLED_Basic) {
+  for (int i = 0; i < 100000; i++) {
+    auto tx_frame = TestFrame::Encode(m_header, m_front, m_middle, m_data);
+    auto onwire_bl = tx_frame.get_buffer(m_tx_frame_asm);
+
+    Tag rx_tag;
+    segment_bls_t rx_segment_bls;
+    ASSERT_TRUE(disassemble_frame(m_rx_frame_asm, onwire_bl, rx_tag,
+                                  rx_segment_bls));
+  }
+}
+
+static const round_trip_instance_t round_trip_perf_instances[] = {
+  {41, 250, 0,       0, 2, {{32, 41, 250, 17,       0,  0},
+                            {32, 48, 256, 32,       0,  0},
+                            {32, 45, 250, 13,       0,  0},
+                            {96,  0, 256, 32,       0,  0}}},
+  {41, 250, 0,     512, 4, {{32, 41, 250,  0,     512, 17},
+                            {32, 48, 256,  0,     512, 32},
+                            {32, 45, 250,  0,     512, 13},
+                            {96,  0, 256,  0,     512, 32}}},
+  {41, 250, 0,    4096, 4, {{32, 41, 250,  0,    4096, 17},
+                            {32, 48, 256,  0,    4096, 32},
+                            {32, 45, 250,  0,    4096, 13},
+                            {96,  0, 256,  0,    4096, 32}}},
+  {41, 250, 0,   32768, 4, {{32, 41, 250,  0,   32768, 17},
+                            {32, 48, 256,  0,   32768, 32},
+                            {32, 45, 250,  0,   32768, 13},
+                            {96,  0, 256,  0,   32768, 32}}},
+  {41, 250, 0,  131072, 4, {{32, 41, 250,  0,  131072, 17},
+                            {32, 48, 256,  0,  131072, 32},
+                            {32, 45, 250,  0,  131072, 13},
+                            {96,  0, 256,  0,  131072, 32}}},
+  {41, 250, 0, 4194304, 4, {{32, 41, 250,  0, 4194304, 17},
+                            {32, 48, 256,  0, 4194304, 32},
+                            {32, 45, 250,  0, 4194304, 13},
+                            {96,  0, 256,  0, 4194304, 32}}},
+};
+
+INSTANTIATE_TEST_SUITE_P(
+    RoundTripPerfTests, RoundTripPerfTest, ::testing::Combine(
+        ::testing::ValuesIn(round_trip_perf_instances),
+        ::testing::ValuesIn(modes)));
+
+}  // namespace ceph::msgr::v2
+
+int main(int argc, char* argv[]) {
+  vector<const char*> args;
+  argv_to_vec(argc, (const char**)argv, args);
+
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                         CODE_ENVIRONMENT_UTILITY,
+                         CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
+  common_init_finish(g_ceph_context);
+
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
index 599fb7d9a08a1581fc681c6a389e309a5f45038a..15f5d36f69d0449cac589f5e415e83d6e26d11e4 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <atomic>
 #include <iostream>
+#include <memory>
 #include <unistd.h>
 #include <stdlib.h>
 #include <time.h>
@@ -414,6 +415,115 @@ TEST_P(MessengerTest, ConnectionRaceTest) {
   delete srv_interceptor;
 }
 
+/**
+ * Scenario: A connects to B, and B connects to A at the same time.
+ * The first (A -> B) connection gets to message flow handshake, the
+ * second (B -> A) connection is stuck waiting for a banner from A.
+ * After A sends client_ident to B, the first connection wins and B
+ * calls reuse_connection() to replace the second connection's socket
+ * while the second connection is still in BANNER_CONNECTING.
+ */
+TEST_P(MessengerTest, ConnectionRaceReuseBannerTest) {
+  FakeDispatcher cli_dispatcher(false), srv_dispatcher(false);
+
+  auto cli_interceptor = std::make_unique<TestInterceptor>();
+  auto srv_interceptor = std::make_unique<TestInterceptor>();
+
+  server_msgr->set_policy(entity_name_t::TYPE_CLIENT,
+                          Messenger::Policy::lossless_peer_reuse(0));
+  server_msgr->interceptor = srv_interceptor.get();
+
+  client_msgr->set_policy(entity_name_t::TYPE_OSD,
+                          Messenger::Policy::lossless_peer_reuse(0));
+  client_msgr->interceptor = cli_interceptor.get();
+
+  entity_addr_t bind_addr;
+  bind_addr.parse("v2:127.0.0.1:3300");
+  server_msgr->bind(bind_addr);
+  server_msgr->add_dispatcher_head(&srv_dispatcher);
+  server_msgr->start();
+
+  bind_addr.parse("v2:127.0.0.1:3301");
+  client_msgr->bind(bind_addr);
+  client_msgr->add_dispatcher_head(&cli_dispatcher);
+  client_msgr->start();
+
+  // pause before sending client_ident message
+  srv_interceptor->breakpoint(11);
+
+  ConnectionRef s2c = server_msgr->connect_to(client_msgr->get_mytype(),
+                                              client_msgr->get_myaddrs());
+  MPing *m1 = new MPing();
+  ASSERT_EQ(s2c->send_message(m1), 0);
+
+  srv_interceptor->wait(11);
+  srv_interceptor->remove_bp(11);
+
+  // pause before sending banner
+  cli_interceptor->breakpoint(3);
+
+  ConnectionRef c2s = client_msgr->connect_to(server_msgr->get_mytype(),
+                                              server_msgr->get_myaddrs());
+  MPing *m2 = new MPing();
+  ASSERT_EQ(c2s->send_message(m2), 0);
+
+  cli_interceptor->wait(3);
+  cli_interceptor->remove_bp(3);
+
+  // second connection is in BANNER_CONNECTING, ensure it stays so
+  // and send client_ident
+  srv_interceptor->breakpoint(4);
+  srv_interceptor->proceed(11, Interceptor::ACTION::CONTINUE);
+
+  // handle client_ident -- triggers reuse_connection() with exproto
+  // in BANNER_CONNECTING
+  cli_interceptor->breakpoint(15);
+  cli_interceptor->proceed(3, Interceptor::ACTION::CONTINUE);
+
+  cli_interceptor->wait(15);
+  cli_interceptor->remove_bp(15);
+
+  // first connection is in READY
+  Connection *s2c_accepter = srv_interceptor->wait(4);
+  srv_interceptor->remove_bp(4);
+
+  srv_interceptor->proceed(4, Interceptor::ACTION::CONTINUE);
+  cli_interceptor->proceed(15, Interceptor::ACTION::CONTINUE);
+
+  {
+    std::unique_lock l{cli_dispatcher.lock};
+    cli_dispatcher.cond.wait(l, [&] { return cli_dispatcher.got_new; });
+    cli_dispatcher.got_new = false;
+  }
+
+  {
+    std::unique_lock l{srv_dispatcher.lock};
+    srv_dispatcher.cond.wait(l, [&] { return srv_dispatcher.got_new; });
+    srv_dispatcher.got_new = false;
+  }
+
+  EXPECT_TRUE(s2c->is_connected());
+  EXPECT_EQ(1u, static_cast<Session*>(s2c->get_priv().get())->get_count());
+  EXPECT_TRUE(s2c->peer_is_client());
+
+  EXPECT_TRUE(c2s->is_connected());
+  EXPECT_EQ(1u, static_cast<Session*>(c2s->get_priv().get())->get_count());
+  EXPECT_TRUE(c2s->peer_is_osd());
+
+  // closed in reuse_connection() -- EPIPE when writing banner/hello
+  EXPECT_FALSE(s2c_accepter->is_connected());
+
+  // established exactly once, never faulted and reconnected
+  EXPECT_EQ(cli_interceptor->count_step(c2s.get(), 1), 1u);
+  EXPECT_EQ(cli_interceptor->count_step(c2s.get(), 13), 0u);
+  EXPECT_EQ(cli_interceptor->count_step(c2s.get(), 15), 1u);
+
+  client_msgr->shutdown();
+  client_msgr->wait();
+  server_msgr->shutdown();
+  server_msgr->wait();
+}
+
 /**
  * Scenario:
  *    - A connects to B
index c3e5c021c241b180d0b7731b542cb7ccc09ea4e9..3e89141b8c1330fd7438ebf34386713727a0a70b 100644 (file)
@@ -3768,6 +3768,7 @@ public:
   unsigned in_flight;
   map<ghobject_t, Object> contents;
   set<ghobject_t> available_objects;
+  set<ghobject_t>::iterator next_available_object;
   set<ghobject_t> in_flight_objects;
   ObjectGenerator *object_gen;
   gen_type *rng;
@@ -3892,8 +3893,9 @@ public:
                         unsigned max_write,
                         unsigned alignment)
     : cid(cid), write_alignment(alignment), max_object_len(max_size),
-      max_write_len(max_write), in_flight(0), object_gen(gen),
-      rng(rng), store(store) {}
+      max_write_len(max_write), in_flight(0),
+      next_available_object(available_objects.end()),
+      object_gen(gen), rng(rng), store(store) {}
 
   int init() {
     ObjectStore::Transaction t;
@@ -3902,17 +3904,19 @@ public:
     return queue_transaction(store, ch, std::move(t));
   }
   void shutdown() {
+    ghobject_t next;
     while (1) {
       vector<ghobject_t> objects;
-      int r = store->collection_list(ch, ghobject_t(), ghobject_t::get_max(),
-                                    10, &objects, 0);
+      int r = store->collection_list(ch, next, ghobject_t::get_max(),
+                                     10, &objects, &next);
       ceph_assert(r >= 0);
-      if (objects.empty())
-       break;
+      if (objects.size() == 0)
+        break;
       ObjectStore::Transaction t;
+      std::map<std::string, ceph::buffer::list> attrset;
       for (vector<ghobject_t>::iterator p = objects.begin();
-          p != objects.end(); ++p) {
-       t.remove(cid, *p);
+           p != objects.end(); ++p) {
+        t.remove(cid, *p);
       }
       queue_transaction(store, ch, std::move(t));
     }
@@ -3936,6 +3940,20 @@ public:
     return ret;
   }
 
+  ghobject_t get_next_object(std::unique_lock<ceph::mutex>& locker) {
+    cond.wait(locker, [this] {
+      return in_flight < max_in_flight && !available_objects.empty();
+      });
+
+    if (next_available_object == available_objects.end()) {
+      next_available_object = available_objects.begin();
+    }
+
+    ghobject_t ret = *next_available_object;
+    ++next_available_object;
+    return ret;
+  }
+
   void wait_for_ready(std::unique_lock<ceph::mutex>& locker) {
     cond.wait(locker, [this] { return in_flight < max_in_flight; });
   }
@@ -4392,6 +4410,35 @@ public:
     return status;
   }
 
+  int set_fixed_attrs(size_t entries, size_t key_size, size_t val_size) {
+    std::unique_lock locker{ lock };
+    EnterExit ee("setattrs");
+    if (!can_unlink())
+      return -ENOENT;
+    wait_for_ready(locker);
+
+    ghobject_t obj = get_next_object(locker);
+    available_objects.erase(obj);
+    ObjectStore::Transaction t;
+
+    map<string, bufferlist> attrs;
+    set<string> keys;
+
+    while (entries--) {
+      bufferlist name, value;
+      filled_byte_array(value, val_size);
+      filled_byte_array(name, key_size);
+      attrs[name.c_str()] = value;
+      contents[obj].attrs[name.c_str()] = value;
+    }
+    t.setattrs(cid, obj, attrs);
+    ++in_flight;
+    in_flight_objects.insert(obj);
+    t.register_on_applied(new C_SyntheticOnReadable(this, obj));
+    int status = store->queue_transaction(ch, std::move(t));
+    return status;
+  }
+
   void getattrs() {
     EnterExit ee("getattrs");
     ghobject_t obj;
@@ -7018,106 +7065,6 @@ TEST_P(StoreTestSpecificAUSize, SmallWriteOnShardedExtents) {
   }
 }
 
-TEST_P(StoreTestSpecificAUSize, ExcessiveFragmentation) {
-  if (string(GetParam()) != "bluestore")
-    return;
-
-  SetVal(g_conf(), "bluestore_block_size",
-    stringify((uint64_t)2048 * 1024 * 1024).c_str());
-
-  ASSERT_EQ(g_conf().get_val<Option::size_t>("bluefs_alloc_size"),
-           1024 * 1024U);
-
-  size_t block_size = 0x10000;
-  StartDeferred(block_size);
-
-  int r;
-  coll_t cid;
-  ghobject_t hoid1(hobject_t(sobject_t("Object 1", CEPH_NOSNAP)));
-  ghobject_t hoid2(hobject_t(sobject_t("Object 2", CEPH_NOSNAP)));
-  auto ch = store->create_new_collection(cid);
-
-  {
-    ObjectStore::Transaction t;
-    t.create_collection(cid, 0);
-    r = queue_transaction(store, ch, std::move(t));
-    ASSERT_EQ(r, 0);
-  }
-  {
-    // create 2x400MB objects in a way that their pextents are interleaved
-    ObjectStore::Transaction t;
-    bufferlist bl;
-
-    bl.append(std::string(block_size * 4, 'a')); // 256KB
-    uint64_t offs = 0;
-    while(offs < (uint64_t)400 * 1024 * 1024) {
-      t.write(cid, hoid1, offs, bl.length(), bl, 0);
-      t.write(cid, hoid2, offs, bl.length(), bl, 0);
-      r = queue_transaction(store, ch, std::move(t));
-      ASSERT_EQ(r, 0);
-      offs += bl.length();
-      if( (offs % (100 * 1024 * 1024)) == 0) {
-       std::cout<<"written " << offs << std::endl;
-      }
-    }
-  }
-  std::cout<<"written 800MB"<<std::endl;
-  {
-    // Partially overwrite objects with 100MB each leaving space
-    // fragmented and occuping still unfragmented space at the end
-    // So we'll have enough free space but it'll lack long enough (e.g. 1MB)
-    // contiguous pextents.
-    ObjectStore::Transaction t;
-    bufferlist bl;
-
-    bl.append(std::string(block_size * 4, 'a'));
-    uint64_t offs = 0;
-    while(offs < 112 * 1024 * 1024) {
-      t.write(cid, hoid1, offs, bl.length(), bl, 0);
-      t.write(cid, hoid2, offs, bl.length(), bl, 0);
-      r = queue_transaction(store, ch, std::move(t));
-      ASSERT_EQ(r, 0);
-      // this will produce high fragmentation if original allocations
-      // were contiguous
-      offs += bl.length();
-      if( (offs % (10 * 1024 * 1024)) == 0) {
-       std::cout<<"written " << offs << std::endl;
-      }
-    }
-  }
-  {
-    // remove one of the object producing much free space
-    // and hence triggering bluefs rebalance.
-    // Which should fail as there is no long enough pextents.
-    ObjectStore::Transaction t;
-    t.remove(cid, hoid2);
-    r = queue_transaction(store, ch, std::move(t));
-    ASSERT_EQ(r, 0);
-  }
-
-  auto to_sleep = 5 *
-    (int)g_conf().get_val<double>("bluestore_bluefs_balance_interval");
-  std::cout<<"sleeping... " << std::endl;
-  sleep(to_sleep);
-
-  {
-    // touch another object to triggerrebalance
-    ObjectStore::Transaction t;
-    t.touch(cid, hoid1);
-    r = queue_transaction(store, ch, std::move(t));
-    ASSERT_EQ(r, 0);
-  }
-  {
-    ObjectStore::Transaction t;
-    t.remove(cid, hoid1);
-    t.remove(cid, hoid2);
-    t.remove_collection(cid);
-    cerr << "Cleaning" << std::endl;
-    r = queue_transaction(store, ch, std::move(t));
-    ASSERT_EQ(r, 0);
-  }
-}
-
 #endif //#if defined(WITH_BLUESTORE)
 
 TEST_P(StoreTest, KVDBHistogramTest) {
@@ -7886,6 +7833,7 @@ TEST_P(StoreTest, SpuriousReadErrorTest) {
     EXPECT_EQ(store->umount(), 0);
     EXPECT_EQ(store->mount(), 0);
   }
+  ch = store->open_collection(cid);
 
   cerr << "Injecting CRC error with no retry, expecting EIO" << std::endl;
   SetVal(g_conf(), "bluestore_retry_disk_reads", "0");
@@ -8175,35 +8123,38 @@ void doManySetAttr(ObjectStore* store,
   gen_type rng(time(NULL));
   coll_t cid(spg_t(pg_t(0, 447), shard_id_t::NO_SHARD));
 
-  SyntheticWorkloadState test_obj(store, &gen, &rng, cid, 40 * 1024, 4 * 1024, 0);
+  SyntheticWorkloadState test_obj(store, &gen, &rng, cid, 0, 0, 0);
   test_obj.init();
-  for (int i = 0; i < 1500; ++i) {
+  size_t object_count = 256;
+  for (size_t i = 0; i < object_count; ++i) {
     if (!(i % 10)) cerr << "seeding object " << i << std::endl;
     test_obj.touch();
   }
-  for (int i = 0; i < 10000; ++i) {
+  for (size_t i = 0; i < object_count; ++i) {
     if (!(i % 100)) {
       cerr << "Op " << i << std::endl;
       test_obj.print_internal_state();
     }
-    boost::uniform_int<> true_false(0, 99);
-    test_obj.setattrs();
+    test_obj.set_fixed_attrs(1024, 64, 4096); // 1024 attributes, 64 bytes name and 4K value
   }
   test_obj.wait_for_done();
 
+  std::cout << "done" << std::endl;
+  do_check_fn(store);
   AdminSocket* admin_socket = g_ceph_context->get_admin_socket();
   ceph_assert(admin_socket);
 
   ceph::bufferlist in, out;
   ostringstream err;
 
-  bool b = admin_socket->execute_command(
-    { "{\"prefix\": \"bluestore bluefs stats\"}" },
+  auto r = admin_socket->execute_command(
+    { "{\"prefix\": \"bluefs stats\"}" },
     in, err, &out);
-  if (!b) {
-    cerr << "failure querying " << std::endl;
+  if (r != 0) {
+    cerr << "failure querying: " << cpp_strerror(r) << std::endl;
+  } else {
+    std::cout << std::string(out.c_str(), out.length()) << std::endl;
   }
-  std::cout << std::string(out.c_str(), out.length()) << std::endl;
   do_check_fn(store);
   test_obj.shutdown();
 }
@@ -8224,11 +8175,17 @@ TEST_P(StoreTestSpecificAUSize, SpilloverTest) {
 
       BlueStore* bstore = dynamic_cast<BlueStore*> (_store);
       ceph_assert(bstore);
+      bstore->compact();
       const PerfCounters* logger = bstore->get_bluefs_perf_counters();
       //experimentally it was discovered that this case results in 400+MB spillover
       //using lower 300MB threshold just to be safe enough
-      ASSERT_GE(logger->get(l_bluefs_slow_used_bytes), 300 * 1024 * 1024);
+      std::cout << "db_used:" << logger->get(l_bluefs_db_used_bytes) << std::endl;
+      std::cout << "slow_used:" << logger->get(l_bluefs_slow_used_bytes) << std::endl;
 
+      // Disabling any validation/assertion for now as it looks like
+      // we're unable to 100% force RocksDB to spillover.
+      // Leaving test case hoping to fix that one day though.
+      //ASSERT_GE(logger->get(l_bluefs_slow_used_bytes), 16 * 1024 * 1024);
     }
   );
 }
@@ -8250,6 +8207,7 @@ TEST_P(StoreTestSpecificAUSize, SpilloverFixedTest) {
 
       BlueStore* bstore = dynamic_cast<BlueStore*> (_store);
       ceph_assert(bstore);
+      bstore->compact();
       const PerfCounters* logger = bstore->get_bluefs_perf_counters();
       ASSERT_EQ(0, logger->get(l_bluefs_slow_used_bytes));
     }
@@ -8275,6 +8233,7 @@ TEST_P(StoreTestSpecificAUSize, SpilloverFixed2Test) {
 
       BlueStore* bstore = dynamic_cast<BlueStore*> (_store);
       ceph_assert(bstore);
+      bstore->compact();
       const PerfCounters* logger = bstore->get_bluefs_perf_counters();
       ASSERT_LE(logger->get(l_bluefs_slow_used_bytes), 300 * 1024 * 1024); // see SpilloverTest for 300MB choice rationale
     }
index 7553439913bd1655a0e3dce029a6fc66ff21070c..f2103521e0570c0298f7d36dc0ba911f26ba2d1f 100644 (file)
@@ -9,6 +9,7 @@
 #include <unistd.h>
 #include <random>
 #include <thread>
+#include <stack>
 #include "global/global_init.h"
 #include "common/ceph_argparse.h"
 #include "include/stringify.h"
@@ -54,6 +55,36 @@ private:
   }
 };
 
+class ConfSaver {
+  std::stack<std::pair<std::string, std::string>> saved_settings;
+  ConfigProxy& conf;
+public:
+  ConfSaver(ConfigProxy& conf) : conf(conf) {
+    conf._clear_safe_to_start_threads();
+  };
+  ~ConfSaver() {
+    conf._clear_safe_to_start_threads();
+    while(saved_settings.size() > 0) {
+      auto& e = saved_settings.top();
+      conf.set_val_or_die(e.first, e.second);
+      saved_settings.pop();
+    }
+    conf.set_safe_to_start_threads();
+    conf.apply_changes(nullptr);
+  }
+  void SetVal(const char* key, const char* val) {
+    std::string skey(key);
+    std::string prev_val;
+    conf.get_val(skey, &prev_val);
+    conf.set_val_or_die(skey, val);
+    saved_settings.emplace(skey, prev_val);
+  }
+  void ApplyChanges() {
+    conf.set_safe_to_start_threads();
+    conf.apply_changes(nullptr);
+  }
+};
+
 TEST(BlueFS, mkfs) {
   uint64_t size = 1048576 * 128;
   TempBdev bdev{size};
@@ -690,6 +721,45 @@ TEST(BlueFS, test_replay) {
   fs.umount();
 }
 
+TEST(BlueFS, test_replay_growth) {
+  uint64_t size = 1048576LL * (2 * 1024 + 128);
+  TempBdev bdev{size};
+
+  ConfSaver conf(g_ceph_context->_conf);
+  conf.SetVal("bluefs_alloc_size", "4096");
+  conf.SetVal("bluefs_shared_alloc_size", "4096");
+  conf.SetVal("bluefs_compact_log_sync", "false");
+  conf.SetVal("bluefs_min_log_runway", "32768");
+  conf.SetVal("bluefs_max_log_runway", "65536");
+  conf.SetVal("bluefs_allocator", "stupid");
+  conf.SetVal("bluefs_sync_write", "true");
+  conf.ApplyChanges();
+
+  BlueFS fs(g_ceph_context);
+  ASSERT_EQ(0, fs.add_block_device(BlueFS::BDEV_DB, bdev.path, false));
+  fs.add_block_extent(BlueFS::BDEV_DB, 1048576, size - 1048576);
+  uuid_d fsid;
+  ASSERT_EQ(0, fs.mkfs(fsid, { BlueFS::BDEV_DB, false, false }));
+  ASSERT_EQ(0, fs.mount());
+  ASSERT_EQ(0, fs.maybe_verify_layout({ BlueFS::BDEV_DB, false, false }));
+  ASSERT_EQ(0, fs.mkdir("dir"));
+
+  char data[2000];
+  BlueFS::FileWriter *h;
+  ASSERT_EQ(0, fs.open_for_write("dir", "file", &h, false));
+  for (size_t i = 0; i < 10000; i++) {
+    h->append(data, 2000);
+    fs.fsync(h);
+  }
+  fs.close_writer(h);
+  fs.umount(true); //do not compact on exit!
+
+  // remount and check log can replay safe?
+  ASSERT_EQ(0, fs.mount());
+  ASSERT_EQ(0, fs.maybe_verify_layout({ BlueFS::BDEV_DB, false, false }));
+  fs.umount();
+}
+
 int main(int argc, char **argv) {
   vector<const char*> args;
   argv_to_vec(argc, (const char **)argv, args);
index ebec25652b5849588caff0d473d22025c2274f6d..428466c16f80c05ad10bb58344d4810e9070c017 100644 (file)
@@ -601,6 +601,12 @@ class TestImage(object):
         self.image.write(data, 0, LIBRADOS_OP_FLAG_FADVISE_DONTNEED)
         self.image.write(data, 0, LIBRADOS_OP_FLAG_FADVISE_NOCACHE)
 
+    def test_write_zeroes(self):
+        data = rand_data(256)
+        self.image.write(data, 0)
+        self.image.write_zeroes(0, 256)
+        eq(self.image.read(256, 256), b'\0' * 256)
+
     def test_read(self):
         data = self.image.read(0, 20)
         eq(data, b'\0' * 20)
@@ -1192,6 +1198,20 @@ class TestImage(object):
         eq(sys.getrefcount(comp), 2)
         eq(self.image.read(256, 256), b'\0' * 256)
 
+    def test_aio_write_zeroes(self):
+        retval = [None]
+        def cb(comp):
+            retval[0] = comp.get_return_value()
+
+        data = rand_data(256)
+        self.image.write(data, 0)
+        comp = self.image.aio_write_zeroes(0, 256, cb)
+        comp.wait_for_complete_and_cb()
+        eq(retval[0], 0)
+        eq(comp.get_return_value(), 0)
+        eq(sys.getrefcount(comp), 2)
+        eq(self.image.read(256, 256), b'\0' * 256)
+
     def test_aio_flush(self):
         retval = [None]
         def cb(comp):
index 4a6f6938dd71b46be83e6a06423e86abfc29bf3b..d1117bb79eb6f8b2f1731b3044f15018788c67f9 100644 (file)
@@ -2198,7 +2198,7 @@ TEST_F(TestMockImageReplayerSnapshotReplayer, UnlinkRemoteSnapshot) {
   ASSERT_EQ(0, init_ctx.wait());
 
   // wait for sync to complete
-  ASSERT_EQ(0, wait_for_notification(2));
+  ASSERT_EQ(0, wait_for_notification(3));
 
   // shut down
   ASSERT_EQ(0, shut_down_entry_replayer(mock_replayer, mock_threads,
index 335daa6980bab869e93e490aa0e0ece10cd8cdc6..9f8e585cdf1bbceb5db4719cf122ce8451d1e935 100644 (file)
@@ -128,6 +128,11 @@ public:
     return 0;
   }
 
+  string get_subuser() const override {
+    abort();
+    return 0;
+  }
+
   void to_str(std::ostream& out) const override {
     out << id;
   }
index 3699c3821c95255cd9566d38fad6ae1c5ee38cd1..2f92be8fad7df38de69f9917b10294e6f9f79d23 100644 (file)
@@ -3216,7 +3216,7 @@ int main(int argc, char **argv)
      "Pool name, mandatory for apply-layout-settings if --pgid is not specified")
     ("op", po::value<string>(&op),
      "Arg is one of [info, log, remove, mkfs, fsck, repair, fuse, dup, export, export-remove, import, list, list-slow-omap, fix-lost, list-pgs, dump-journal, dump-super, meta-list, "
-     "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, apply-layout-settings, update-mon-db, dump-export, trim-pg-log]")
+     "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, apply-layout-settings, update-mon-db, dump-export, trim-pg-log, statfs]")
     ("epoch", po::value<unsigned>(&epoch),
      "epoch# for get-osdmap and get-inc-osdmap, the current epoch in use if not specified")
     ("file", po::value<string>(&file),
@@ -3939,6 +3939,21 @@ int main(int argc, char **argv)
     goto out;
   }
 
+  if (op == "statfs") {
+      store_statfs_t statsbuf;
+      ret = fs->statfs(&statsbuf);
+      if (ret < 0) {
+        cerr << "error from statfs: " << cpp_strerror(ret) << std::endl;
+       goto out;
+      }
+      formatter->open_object_section("statfs");
+      statsbuf.dump(formatter);
+      formatter->close_section();
+      formatter->flush(cout);
+      cout << std::endl;
+      goto out;
+  }
+
   if (op == "meta-list") {
     ret = do_meta(fs, object, formatter, debug, human_readable);
     if (ret < 0) {
@@ -3996,7 +4011,7 @@ int main(int argc, char **argv)
   // before complaining about a bad pgid
   if (!vm.count("objcmd") && op != "export" && op != "export-remove" && op != "info" && op != "log" && op != "mark-complete" && op != "trim-pg-log") {
     cerr << "Must provide --op (info, log, remove, mkfs, fsck, repair, export, export-remove, import, list, fix-lost, list-pgs, dump-journal, dump-super, meta-list, "
-      "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, dump-export, trim-pg-log)"
+      "get-osdmap, set-osdmap, get-inc-osdmap, set-inc-osdmap, mark-complete, reset-last-complete, dump-export, trim-pg-log, statfs)"
         << std::endl;
     usage(desc);
     ret = 1;
index 70146008d7f3b759a88b52120d0ba9eedfda6aae..b8f53d3f8a0f4b484d40d06c1259b7fc2df4f87c 100644 (file)
@@ -45,10 +45,13 @@ int CacheController::init() {
 int CacheController::shutdown() {
   ldout(m_cct, 20) << dendl;
 
-  int r = m_cache_server->stop();
-  if (r < 0) {
-    lderr(m_cct) << "stop error\n" << dendl;
-    return r;
+  int r;
+  if (m_cache_server != nullptr) {
+    r = m_cache_server->stop();
+    if (r < 0) {
+      lderr(m_cct) << "stop error\n" << dendl;
+      return r;
+    }
   }
 
   r = m_object_cache_store->shutdown();
@@ -64,10 +67,15 @@ void CacheController::handle_signal(int signum) {
   shutdown();
 }
 
-void CacheController::run() {
+int CacheController::run() {
   try {
     std::string controller_path =
       m_cct->_conf.get_val<std::string>("immutable_object_cache_sock");
+    if (controller_path.empty()) {
+      lderr(m_cct) << "'immutable_object_cache_sock' path not set" << dendl;
+      return -EINVAL;
+    }
+
     std::remove(controller_path.c_str());
 
     m_cache_server = new CacheServer(m_cct, controller_path,
@@ -76,10 +84,13 @@ void CacheController::run() {
 
     int ret = m_cache_server->run();
     if (ret != 0) {
-      throw std::runtime_error("io serivce run error");
+      return ret;
     }
+
+    return 0;
   } catch (std::exception& e) {
     lderr(m_cct) << "Exception: " << e.what() << dendl;
+    return -EFAULT;
   }
 }
 
index bf5ae0714771270d5b0e5762d09dcc7602c58ba1..f70f6bb1c9402cb6461ffd21755d59c598e9b71a 100644 (file)
@@ -23,15 +23,15 @@ class CacheController {
 
   void handle_signal(int sinnum);
 
-  void run();
+  int run();
 
   void handle_request(CacheSession* session, ObjectCacheRequest* msg);
 
  private:
-  CacheServer *m_cache_server;
+  CacheServer *m_cache_server = nullptr;
   std::vector<const char*> m_args;
   CephContext *m_cct;
-  ObjectCacheStore *m_object_cache_store;
+  ObjectCacheStore *m_object_cache_store = nullptr;
 };
 
 }  // namespace immutable_obj_cache
index 7e68d7e875159807acf238275ca1bfd23ee005be..08255e71c09b3f6259025d3f9155a1f7e3cd801a 100644 (file)
@@ -53,20 +53,22 @@ int CacheServer::start_accept() {
   boost::system::error_code ec;
   m_acceptor.open(m_local_path.protocol(), ec);
   if (ec) {
-    ldout(cct, 1) << "m_acceptor open fails: " << ec.message() << dendl;
-    return -1;
+    lderr(cct) << "failed to open domain socket: " << ec.message() << dendl;
+    return -ec.value();
   }
 
   m_acceptor.bind(m_local_path, ec);
   if (ec) {
-    ldout(cct, 1) << "m_acceptor bind fails: " << ec.message() << dendl;
-    return -1;
+    lderr(cct) << "failed to bind to domain socket '"
+               << m_local_path << "': " << ec.message() << dendl;
+    return -ec.value();
   }
 
   m_acceptor.listen(boost::asio::socket_base::max_connections, ec);
   if (ec) {
-    ldout(cct, 1) << "m_acceptor listen fails: " << ec.message() << dendl;
-    return -1;
+    lderr(cct) << "failed to listen on domain socket: " << ec.message()
+               << dendl;
+    return -ec.value();
   }
 
   accept();
index b3b793d7c2daefc895b2efc25cc9e8adc1d4d363..ece4127df850b7159290389f2ea30e937438599e 100644 (file)
@@ -60,17 +60,19 @@ int ObjectCacheStore::init(bool reset) {
 
   // TODO(dehao): fsck and reuse existing cache objects
   if (reset) {
-    std::error_code ec;
-    if (efs::exists(m_cache_root_dir)) {
-      // remove all sub folders
-      for (auto& p : efs::directory_iterator(m_cache_root_dir)) {
-        efs::remove_all(p.path());
-      }
-    } else {
-      if (!efs::create_directories(m_cache_root_dir, ec)) {
-        lderr(m_cct) << "fail to create cache store dir: " << ec << dendl;
-        return ec.value();
+    try {
+      if (efs::exists(m_cache_root_dir)) {
+        // remove all sub folders
+        for (auto& p : efs::directory_iterator(m_cache_root_dir)) {
+          efs::remove_all(p.path());
+        }
+      } else {
+        efs::create_directories(m_cache_root_dir);
       }
+    } catch (const efs::filesystem_error& e) {
+      lderr(m_cct) << "failed to initialize cache store directory: "
+                   << e.what() << dendl;
+      return -e.code().value();
     }
   }
   return 0;
index bfe49df6323894fce40afe5cb801a040dc543c9b..29977f461f5bb631609633bddea6eef3ba115ab6 100644 (file)
@@ -67,7 +67,10 @@ int main(int argc, const char **argv) {
     goto cleanup;
   }
 
-  cachectl->run();
+  r = cachectl->run();
+  if (r < 0) {
+    goto cleanup;
+  }
 
  cleanup:
   unregister_async_signal_handler(SIGHUP, sighup_handler);
index 747e9c62dbc41fb17cbe1ce3deb2d40f8251043a..9bfafa107dc652f7da25ce44e8123bc8ed2e2b4b 100644 (file)
@@ -70,6 +70,7 @@ int PoolDump::dump(IoCtx *io_ctx)
     const uint32_t op_size = 4096 * 1024;
     uint64_t offset = 0;
     io_ctx->set_namespace(i->get_nspace());
+    io_ctx->locator_set_key(i->get_locator());
     while (true) {
       bufferlist outdata;
       r = io_ctx->read(oid, outdata, op_size, offset);
index afc04cf309e6a08ade399ded262a9aa155079051..0a901b70945961a6c81173c6d067d9885ef9e59b 100644 (file)
@@ -194,6 +194,7 @@ int RadosImport::get_object_rados(librados::IoCtx &ioctx, bufferlist &bl, bool n
   }
 
   ioctx.set_namespace(ob.hoid.hobj.get_namespace());
+  ioctx.locator_set_key(ob.hoid.hobj.get_key());
 
   string msg("Write");
   skipping = false;
index b4292b336ea6b5b6a499524e8f1fe74793165c78..7397d926a3612fae9207e2dbf954ea781ecd98b3 100644 (file)
@@ -80,9 +80,9 @@ struct ImportDiffContext {
 class C_ImportDiff : public Context {
 public:
   C_ImportDiff(ImportDiffContext *idiffctx, bufferlist data, uint64_t offset,
-               uint64_t length, bool discard)
+               uint64_t length, bool write_zeroes)
     : m_idiffctx(idiffctx), m_data(data), m_offset(offset), m_length(length),
-      m_discard(discard) {
+      m_write_zeroes(write_zeroes) {
     // use block offset (stdin) or import file position to report
     // progress.
     if (m_idiffctx->fd == STDIN_FILENO) {
@@ -103,11 +103,14 @@ public:
       new librbd::RBD::AioCompletion(ctx, &utils::aio_context_callback);
 
     int r;
-    if (m_discard) {
-      r = m_idiffctx->image->aio_discard(m_offset, m_length, aio_completion);
+    if (m_write_zeroes) {
+      r = m_idiffctx->image->aio_write_zeroes(m_offset, m_length,
+                                              aio_completion, 0U,
+                                              LIBRADOS_OP_FLAG_FADVISE_NOCACHE);
     } else {
       r = m_idiffctx->image->aio_write2(m_offset, m_length, m_data,
-                                        aio_completion, LIBRADOS_OP_FLAG_FADVISE_NOCACHE);
+                                        aio_completion,
+                                        LIBRADOS_OP_FLAG_FADVISE_NOCACHE);
     }
 
     if (r < 0) {
@@ -129,7 +132,7 @@ private:
   bufferlist m_data;
   uint64_t m_offset;
   uint64_t m_length;
-  bool m_discard;
+  bool m_write_zeroes;
   uint64_t m_prog_offset;
 };
 
@@ -233,7 +236,8 @@ static int do_image_resize(ImportDiffContext *idiffctx)
   return 0;
 }
 
-static int do_image_io(ImportDiffContext *idiffctx, bool discard, size_t sparse_size)
+static int do_image_io(ImportDiffContext *idiffctx, bool write_zeroes,
+                       size_t sparse_size)
 {
   int r;
   char buf[16];
@@ -251,7 +255,7 @@ static int do_image_io(ImportDiffContext *idiffctx, bool discard, size_t sparse_
   decode(image_offset, p);
   decode(buffer_length, p);
 
-  if (!discard) {
+  if (!write_zeroes) {
     bufferptr bp = buffer::create(buffer_length);
     r = safe_read_exact(idiffctx->fd, bp.c_str(), buffer_length);
     if (r < 0) {
@@ -393,14 +397,6 @@ int do_import_diff_fd(librados::Rados &rados, librbd::Image &image, int fd,
     return r;
   }
 
-  std::string skip_partial_discard;
-  r = rados.conf_get("rbd_skip_partial_discard", skip_partial_discard);
-  if (r < 0 || skip_partial_discard != "false") {
-    dout(1) << "disabling sparse import" << dendl;
-    sparse_size = 0;
-    r = 0;
-  }
-
   // begin image import
   std::string tosnap;
   bool is_protected = false;
index 3ebb5bc1de40b4e3bdae235640b81f607efc59f8..eb57bfa1f37eb37f59a876f1139e956dfc61b9dd 100644 (file)
@@ -64,6 +64,29 @@ static std::string map_option_int_cb(const char *value_char)
   return stringify(d);
 }
 
+static std::string map_option_string_cb(const char *value_char)
+{
+  return value_char;
+}
+
+static std::string map_option_read_from_replica_cb(const char *value_char)
+{
+  if (!strcmp(value_char, "no") || !strcmp(value_char, "balance") ||
+      !strcmp(value_char, "localize")) {
+    return value_char;
+  }
+  return "";
+}
+
+static std::string map_option_compression_hint_cb(const char *value_char)
+{
+  if (!strcmp(value_char, "none") || !strcmp(value_char, "compressible") ||
+      !strcmp(value_char, "incompressible")) {
+    return value_char;
+  }
+  return "";
+}
+
 static void put_map_option(const std::string &key, const std::string &val)
 {
   map_options[key] = val;
@@ -153,6 +176,18 @@ static int parse_map_options(const std::string &options_string)
     } else if (!strcmp(this_char, "alloc_size")) {
       if (put_map_option_value("alloc_size", value_char, map_option_int_cb))
         return -EINVAL;
+    } else if (!strcmp(this_char, "crush_location")) {
+      if (put_map_option_value("crush_location", value_char,
+                               map_option_string_cb))
+        return -EINVAL;
+    } else if (!strcmp(this_char, "read_from_replica")) {
+      if (put_map_option_value("read_from_replica", value_char,
+                               map_option_read_from_replica_cb))
+        return -EINVAL;
+    } else if (!strcmp(this_char, "compression_hint")) {
+      if (put_map_option_value("compression_hint", value_char,
+                               map_option_compression_hint_cb))
+        return -EINVAL;
     } else {
       std::cerr << "rbd: unknown map option '" << this_char << "'" << std::endl;
       return -EINVAL;
index 3a5f860c57d556b3c283941d5f879c869175eb1a..bbff220b128231c7e807c117177fffa3cfab6ff9 100755 (executable)
@@ -100,7 +100,7 @@ export CEPH_DEV=1
 [ -z "$CEPH_NUM_MGR" ] && CEPH_NUM_MGR="$MGR"
 [ -z "$CEPH_NUM_FS"  ] && CEPH_NUM_FS="$FS"
 [ -z "$CEPH_NUM_RGW" ] && CEPH_NUM_RGW="$RGW"
-[ -z "$GANESHA_DAEMON_NUM" ] && GANESHA_DAEMON_NUM="$GANESHA"
+[ -z "$GANESHA_DAEMON_NUM" ] && GANESHA_DAEMON_NUM="$NFS"
 
 # if none of the CEPH_NUM_* number is specified, kill the existing
 # cluster.
@@ -189,7 +189,7 @@ inc_osd_num=0
 
 msgr="21"
 
-usage="usage: $0 [option]... \nex: MON=3 OSD=1 MDS=1 MGR=1 RGW=1 GANESHA=1 $0 -n -d\n"
+usage="usage: $0 [option]... \nex: MON=3 OSD=1 MDS=1 MGR=1 RGW=1 NFS=1 $0 -n -d\n"
 usage=$usage"options:\n"
 usage=$usage"\t-d, --debug\n"
 usage=$usage"\t-s, --standby_mds: Generate standby-replay MDS for each active\n"
@@ -464,8 +464,8 @@ if [ "$new" -eq 0 ]; then
         CEPH_NUM_MGR="$MGR"
     RGW=`$CEPH_BIN/ceph-conf -c $conf_fn --name $VSTART_SEC --lookup num_rgw 2>/dev/null` && \
         CEPH_NUM_RGW="$RGW"
-    GANESHA=`$CEPH_BIN/ceph-conf -c $conf_fn --name $VSTART_SEC --lookup num_ganesha 2>/dev/null` && \
-        GANESHA_DAEMON_NUM="$GANESHA"
+    NFS=`$CEPH_BIN/ceph-conf -c $conf_fn --name $VSTART_SEC --lookup num_ganesha 2>/dev/null` && \
+        GANESHA_DAEMON_NUM="$NFS"
 else
     # only delete if -n
     if [ -e "$conf_fn" ]; then
@@ -982,11 +982,17 @@ EOF
 
     if [ "$cephadm" -eq 1 ]; then
         debug echo Enabling cephadm orchestrator
+       if [ "$new" -eq 1 ]; then
+               digest=$(curl -s \
+               https://registry.hub.docker.com/v2/repositories/ceph/daemon-base/tags/latest-master-devel \
+               | jq -r '.images[].digest')
+               ceph_adm config set global container_image "docker.io/ceph/daemon-base@$digest"
+       fi
         ceph_adm config-key set mgr/cephadm/ssh_identity_key -i ~/.ssh/id_rsa
         ceph_adm config-key set mgr/cephadm/ssh_identity_pub -i ~/.ssh/id_rsa.pub
         ceph_adm mgr module enable cephadm
         ceph_adm orch set backend cephadm
-        ceph_adm orch host add $HOSTNAME
+        ceph_adm orch host add "$(hostname)"
         ceph_adm orch apply crash '*'
         ceph_adm config set mgr mgr/cephadm/allow_ptrace true
     fi
@@ -1058,15 +1064,33 @@ EOF
 }
 
 # Ganesha Daemons requires nfs-ganesha nfs-ganesha-ceph nfs-ganesha-rados-grace
-# (version 2.7.6-2 and above) packages installed. On Fedora>=30 these packages
-# can be installed directly with 'dnf'. For CentOS>=8 the packages need to be
-# downloaded first from  https://download.nfs-ganesha.org/2.7/2.7.6/CentOS/ and
-# then install it. Similarly for Ubuntu 16.04 follow the instructions on
-# https://launchpad.net/~nfs-ganesha/+archive/ubuntu/nfs-ganesha-2.7
+# nfs-ganesha-rados-urls (version 3.3 and above) packages installed. On
+# Fedora>=31 these packages can be installed directly with 'dnf'. For CentOS>=8
+# the packages are available at
+# https://wiki.centos.org/SpecialInterestGroup/Storage
+# Similarly for Ubuntu>=16.04 follow the instructions on
+# https://launchpad.net/~nfs-ganesha
 
 start_ganesha() {
+    cluster_id="vstart"
     GANESHA_PORT=$(($CEPH_PORT + 4000))
     local ganesha=0
+    test_user="ganesha-$cluster_id"
+    pool_name="nfs-ganesha"
+    namespace=$cluster_id
+    url="rados://$pool_name/$namespace/conf-nfs.$test_user"
+
+    prun ceph_adm auth get-or-create client.$test_user \
+        mon "allow r" \
+        osd "allow rw pool=$pool_name namespace=$namespace, allow rw tag cephfs data=a" \
+        mds "allow rw path=/" \
+        >> "$keyring_fn"
+
+    ceph_adm mgr module enable test_orchestrator
+    ceph_adm orch set backend test_orchestrator
+    ceph_adm test_orchestrator load_data -i $CEPH_ROOT/src/pybind/mgr/test_orchestrator/dummy_data.json
+    prun ceph_adm nfs cluster create cephfs $cluster_id
+    prun ceph_adm nfs export create cephfs "a" $cluster_id "/cephfs"
 
     for name in a b c d e f g h i j k l m n o p
     do
@@ -1075,87 +1099,66 @@ start_ganesha() {
         port=$(($GANESHA_PORT + ganesha))
         ganesha=$(($ganesha + 1))
         ganesha_dir="$CEPH_DEV_DIR/ganesha.$name"
-
-        echo "Starting ganesha.$name on port: $port"
-
         prun rm -rf $ganesha_dir
         prun mkdir -p $ganesha_dir
 
         echo "NFS_CORE_PARAM {
-        Enable_NLM = false;
-        Enable_RQUOTA = false;
-        Protocols = 4;
-        NFS_Port = $port;
-}
-
-CACHEINODE {
-        Dir_Chunk = 0;
-        NParts = 1;
-        Cache_Size = 1;
-}
-
-NFSv4 {
-        RecoveryBackend = 'rados_cluster';
-        Minor_Versions = 1, 2;
-}
-
-EXPORT {
-       Export_Id = 100;
-       Transports = TCP;
-       Path = /;
-       Pseudo = /ceph/;
-       Protocols = 4;
-       Access_Type = RW;
-       Attr_Expiration_Time = 0;
-       Squash = None;
-       FSAL {
-           Name = CEPH;
-       }
-}
-
-CEPH {
-       Ceph_Conf = $conf_fn;
-}
-
-RADOS_KV {
-       Ceph_Conf = $conf_fn;
-       pool = 'nfs-ganesha';
-       namespace = 'ganesha';
-       UserId = 'admin';
-       nodeid = $name;
-}" > "$ganesha_dir/ganesha.conf"
-
-
+            Enable_NLM = false;
+            Enable_RQUOTA = false;
+            Protocols = 4;
+            NFS_Port = $port;
+        }
+
+        MDCACHE {
+           Dir_Chunk = 0;
+        }
+
+        NFSv4 {
+           RecoveryBackend = rados_cluster;
+           Minor_Versions = 1, 2;
+        }
+
+        %url $url
+
+        RADOS_KV {
+           pool = $pool_name;
+           namespace = $namespace;
+           UserId = $test_user;
+           nodeid = $name;
+        }
+
+        RADOS_URLS {
+          Userid = $test_user;
+          watch_url = \"$url\";
+        }" > "$ganesha_dir/ganesha-$name.conf"
        wconf <<EOF
 [ganesha.$name]
         host = $HOSTNAME
         ip = $IP
         port = $port
         ganesha data = $ganesha_dir
-        pid file = $ganesha_dir/ganesha.pid
+        pid file = $ganesha_dir/ganesha-$name.pid
 EOF
 
-        if !($CEPH_BIN/rados lspools | grep "nfs-ganesha"); then
-            prun ceph_adm osd pool create nfs-ganesha
-            prun ceph_adm osd pool application enable nfs-ganesha nfs
-        fi
-
-        prun ganesha-rados-grace -p nfs-ganesha -n ganesha add $name
-        prun ganesha-rados-grace -p nfs-ganesha -n ganesha
+        prun env CEPH_CONF="${conf_fn}" ganesha-rados-grace --userid $test_user -p $pool_name -n $namespace add $name
+        prun env CEPH_CONF="${conf_fn}" ganesha-rados-grace --userid $test_user -p $pool_name -n $namespace
 
-        prun /usr/bin/ganesha.nfsd -L "$ganesha_dir/ganesha.log" -f "$ganesha_dir/ganesha.conf" -p "$ganesha_dir/ganesha.pid" -N NIV_DEBUG
+        prun env CEPH_CONF="${conf_fn}" ganesha.nfsd -L "$CEPH_OUT_DIR/ganesha-$name.log" -f "$ganesha_dir/ganesha-$name.conf" -p "$CEPH_OUT_DIR/ganesha-$name.pid" -N NIV_DEBUG
 
         # Wait few seconds for grace period to be removed
         sleep 2
-        prun ganesha-rados-grace -p nfs-ganesha -n ganesha
+
+        prun env CEPH_CONF="${conf_fn}" ganesha-rados-grace --userid $test_user -p $pool_name -n $namespace
 
         if $with_mgr_dashboard; then
-            $CEPH_BIN/rados -p nfs-ganesha put "conf-$name" "$ganesha_dir/ganesha.conf"
+            $CEPH_BIN/rados -p $pool_name put "conf-$name" "$ganesha_dir/ganesha-$name.conf"
         fi
+
+        echo "$test_user ganesha daemon $name started on port: $port"
     done
 
     if $with_mgr_dashboard; then
-        ceph_adm dashboard set-ganesha-clusters-rados-pool-namespace nfs-ganesha
+        ceph_adm dashboard set-ganesha-clusters-rados-pool-namespace $pool_name
     fi
 }
 
@@ -1311,6 +1314,11 @@ mds_debug_scatterstat = true
 mds_verify_scatter = true
 EOF
     fi
+    if [ "$cephadm" -gt 0 ]; then
+        debug echo Setting mon public_network ...
+        public_network=$(ip route list | grep -w "$IP" | awk '{print $1}')
+        ceph_adm config set mon public_network $public_network
+    fi
 fi
 
 if [ $CEPH_NUM_MGR -gt 0 ]; then
@@ -1364,7 +1372,17 @@ fi
 
 # Ganesha Daemons
 if [ $GANESHA_DAEMON_NUM -gt 0 ]; then
-    start_ganesha
+    pseudo_path="/cephfs"
+    if [ "$cephadm" -gt 0 ]; then
+        cluster_id="vstart"
+        prun ceph_adm nfs cluster create cephfs $cluster_id
+        prun ceph_adm nfs export create cephfs "a" $cluster_id $pseudo_path
+        port="2049"
+    else
+        start_ganesha
+        port="<ganesha-port-num>"
+    fi
+    echo "Mount using: mount -t nfs -o port=$port $IP:$pseudo_path mountpoint"
 fi
 
 do_cache() {